/**
 * Copyright 2018 The AMP HTML Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS-IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
'use strict';

const imports = [
  {import: 'sinon', message: 'Importing sinon is forbidden'},
  {
    import: 'preact',
    message:
      "Please import preact from 'src/preact'. This gives us type safety.",
  },
  {
    import: 'preact/hooks',
    message:
      "Please import preact/hooks from 'src/preact'. This gives us type safety.",
  },
];

module.exports = function(context) {
  return {
    ImportDeclaration(node) {
      const comments = context.getCommentsBefore(node.source);
      const ok = comments.some(comment => comment.value === 'OK');
      if (ok) {
        return;
      }

      const name = node.source.value;

      for (const forbidden of imports) {
        if (name !== forbidden.import) {
          continue;
        }

        context.report({
          node,
          message: forbidden.message,
        });
      }
    },
  };
};

@@ -1313,19 +1313,27 @@
     
-if (name !=
+const importSource 
 = fo
@@ -1346,19 +1346,17 @@
 n.import
-) %7B
+;
 %0A       
@@ -1360,31 +1360,78 @@
     
-  continue;%0A        %7D%0A%0A
+if (name === importSource %7C%7C name.startsWith(%60$%7BimportSource%7D/%60)) %7B%0A  
     
@@ -1451,16 +1451,18 @@
 eport(%7B%0A
+  
         
@@ -1475,24 +1475,26 @@
 ,%0A          
+  
 message: for
@@ -1521,12 +1521,24 @@
     
+  
 %7D);%0A
+        %7D%0A
     

Update no-import lint rule to forbid sub-paths (#26531)