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