Blame view

node_modules/eslint-module-utils/unambiguous.js 864 Bytes
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  'use strict'
  exports.__esModule = true
  
  
  const pattern = /(^|;)\s*(export|import)((\s+\w)|(\s*[{*]))/m
  /**
   * detect possible imports/exports without a full parse.
   *
   * A negative test means that a file is definitely _not_ a module.
   * A positive test means it _could_ be.
   *
   * Not perfect, just a fast way to disqualify large non-ES6 modules and
   * avoid a parse.
   * @type {RegExp}
   */
  exports.test = function isMaybeUnambiguousModule(content) {
    return pattern.test(content)
  }
  
  // future-/Babel-proof at the expense of being a little loose
  const unambiguousNodeType = /^(Exp|Imp)ort.*Declaration$/
  
  /**
   * Given an AST, return true if the AST unambiguously represents a module.
   * @param  {Program node}  ast
   * @return {Boolean}
   */
  exports.isModule = function isUnambiguousModule(ast) {
    return ast.body.some(node => unambiguousNodeType.test(node.type))
  }