Blame view

node_modules/acorn-dynamic-import/lib/inject.js 1.87 KB
6a9ffbcc   liuqimichale   地图点击事件
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports['default'] = injectDynamicImport;
  /* eslint-disable no-underscore-dangle */
  
  function injectDynamicImport(acorn) {
    var tt = acorn.tokTypes;
  
    // NOTE: This allows `yield import()` to parse correctly.
    tt._import.startsExpr = true;
  
    function parseDynamicImport() {
      var node = this.startNode();
      this.next();
      if (this.type !== tt.parenL) {
        this.unexpected();
      }
      return this.finishNode(node, 'Import');
    }
  
    function peekNext() {
      return this.input[this.pos];
    }
  
    // eslint-disable-next-line no-param-reassign
    acorn.plugins.dynamicImport = function () {
      function dynamicImportPlugin(instance) {
        instance.extend('parseStatement', function (nextMethod) {
          return function () {
            function parseStatement() {
              var node = this.startNode();
              if (this.type === tt._import) {
                var nextToken = peekNext.call(this);
                if (nextToken === tt.parenL.label) {
                  var expr = this.parseExpression();
                  return this.parseExpressionStatement(node, expr);
                }
              }
  
              for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
                args[_key] = arguments[_key];
              }
  
              return nextMethod.apply(this, args);
            }
  
            return parseStatement;
          }();
        });
  
        instance.extend('parseExprAtom', function (nextMethod) {
          return function () {
            function parseExprAtom(refDestructuringErrors) {
              if (this.type === tt._import) {
                return parseDynamicImport.call(this);
              }
              return nextMethod.call(this, refDestructuringErrors);
            }
  
            return parseExprAtom;
          }();
        });
      }
  
      return dynamicImportPlugin;
    }();
  
    return acorn;
  }