Sha256: 5346f009730e28e32a04ee3750a825ffe43a118f18880e654aebda157c350df6

Contents?: true

Size: 1.39 KB

Versions: 8

Compression:

Stored size: 1.39 KB

Contents

/* eslint-disable no-underscore-dangle */

export const DynamicImportKey = 'Import';

export default function injectDynamicImport(acorn) {
  const tt = acorn.tokTypes;

  // NOTE: This allows `yield import()` to parse correctly.
  tt._import.startsExpr = true;

  function parseDynamicImport() {
    const node = this.startNode();
    this.next();
    if (this.type !== tt.parenL) {
      this.unexpected();
    }
    return this.finishNode(node, DynamicImportKey);
  }

  function peekNext() {
    return this.input[this.pos];
  }

  // eslint-disable-next-line no-param-reassign
  acorn.plugins.dynamicImport = function dynamicImportPlugin(instance) {
    instance.extend('parseStatement', nextMethod => (
      function parseStatement(...args) {
        const node = this.startNode();
        if (this.type === tt._import) {
          const nextToken = peekNext.call(this);
          if (nextToken === tt.parenL.label) {
            const expr = this.parseExpression();
            return this.parseExpressionStatement(node, expr);
          }
        }

        return nextMethod.apply(this, args);
      }
    ));

    instance.extend('parseExprAtom', nextMethod => (
      function parseExprAtom(refDestructuringErrors) {
        if (this.type === tt._import) {
          return parseDynamicImport.call(this);
        }
        return nextMethod.call(this, refDestructuringErrors);
      }
    ));
  };

  return acorn;
}

Version data entries

8 entries across 8 versions & 4 rubygems

Version Path
jass-0.9.5 vendor/node_modules/acorn-dynamic-import/src/inject.js
jass-0.9.4 vendor/node_modules/acorn-dynamic-import/src/inject.js
locomotivecms-4.0.0.alpha1 app/javascript/node_modules/acorn-dynamic-import/src/inject.js
locomotivecms-3.4.0 app/javascript/node_modules/acorn-dynamic-import/src/inject.js
jass-0.9.3 vendor/node_modules/acorn-dynamic-import/src/inject.js
condenser-0.0.4 lib/condenser/processors/node_modules/acorn-dynamic-import/src/inject.js
dragonfly_puppeteer-0.1.0 node_modules/acorn-dynamic-import/src/inject.js
jass-0.9.1 vendor/node_modules/acorn-dynamic-import/src/inject.js