diff --git a/package-lock.json b/package-lock.json index 03eebb159..1e70fc614 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "4.22.0", "license": "MIT", "dependencies": { + "@babel/parser": "^7.15.7", "@netlify/esbuild": "^0.13.6", - "acorn": "^8.4.0", "archiver": "^5.3.0", "array-flat-polyfill": "^1.0.1", "common-path-prefix": "^3.0.0", @@ -1251,6 +1251,7 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -12775,7 +12776,8 @@ "acorn": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true }, "acorn-walk": { "version": "8.2.0", diff --git a/package.json b/package.json index b249a6f2c..3bb31b206 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "url": "https://github.com/netlify/zip-it-and-ship-it/issues" }, "dependencies": { + "@babel/parser": "^7.15.7", "@netlify/esbuild": "^0.13.6", - "acorn": "^8.4.0", "archiver": "^5.3.0", "array-flat-polyfill": "^1.0.1", "common-path-prefix": "^3.0.0", diff --git a/src/runtimes/node/dynamic_imports/parser.js b/src/runtimes/node/dynamic_imports/parser.js index b0248fdb6..3eb55c46e 100644 --- a/src/runtimes/node/dynamic_imports/parser.js +++ b/src/runtimes/node/dynamic_imports/parser.js @@ -1,8 +1,7 @@ const { join, relative, resolve } = require('path') -const acorn = require('acorn') +const babel = require('@babel/parser') -const ECMA_VERSION = 2021 const GLOB_WILDCARD = '**' // Transforms an array of glob nodes into a glob string including an absolute @@ -56,8 +55,10 @@ const getWildcardFromASTNode = (node) => { // - `includedPathsGlob`: A glob with the files to be included in the bundle // - `type`: The expression type (e.g. "require", "import") const parseExpression = ({ basePath, expression: rawExpression, resolveDir }) => { - const { body } = acorn.parse(rawExpression, { ecmaVersion: ECMA_VERSION }) - const [topLevelExpression] = body + const { program } = babel.parse(rawExpression, { + sourceType: 'module', + }) + const [topLevelExpression] = program.body const { expression } = topLevelExpression if (expression.type === 'CallExpression' && expression.callee.name === 'require') { @@ -113,7 +114,7 @@ const parseBinaryExpression = (expression) => { case 'BinaryExpression': return parseBinaryExpression(operand) - case 'Literal': + case 'StringLiteral': return operand.value default: