Skip to content

Commit 6a6f14f

Browse files
refactor: udate acorn
refactor: update acorn
2 parents e5391de + db32353 commit 6a6f14f

9 files changed

+332
-191
lines changed

declarations.d.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,10 +414,6 @@ type RecursiveArrayOrRecord<T> =
414414
| Array<RecursiveArrayOrRecord<T>>
415415
| T;
416416

417-
declare module "acorn-import-attributes" {
418-
export function importAttributesOrAssertions(BaseParser: typeof import("acorn").Parser): typeof import("acorn").Parser;
419-
}
420-
421417
declare module "loader-runner" {
422418
export function getContext(resource: string) : string;
423419
export function runLoaders(options: any, callback: (err: Error | null, result: any) => void): void;

lib/dependencies/HarmonyExportDependencyParserPlugin.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
"use strict";
77

8+
const { getImportAttributes } = require("../javascript/JavascriptParser");
89
const InnerGraph = require("../optimize/InnerGraph");
910
const ConstDependency = require("./ConstDependency");
1011
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
@@ -13,8 +14,7 @@ const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImporte
1314
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
1415
const { ExportPresenceModes } = require("./HarmonyImportDependency");
1516
const {
16-
harmonySpecifierTag,
17-
getAttributes
17+
harmonySpecifierTag
1818
} = require("./HarmonyImportDependencyParserPlugin");
1919
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
2020

@@ -78,7 +78,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
7878
const sideEffectDep = new HarmonyImportSideEffectDependency(
7979
/** @type {string} */ (source),
8080
parser.state.lastHarmonyImportOrder,
81-
getAttributes(statement)
81+
getImportAttributes(statement)
8282
);
8383
sideEffectDep.loc = Object.create(
8484
/** @type {DependencyLocation} */ (statement.loc)

lib/dependencies/HarmonyImportDependencyParserPlugin.js

Lines changed: 7 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"use strict";
77

88
const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
9+
const { getImportAttributes } = require("../javascript/JavascriptParser");
910
const InnerGraph = require("../optimize/InnerGraph");
1011
const ConstDependency = require("./ConstDependency");
1112
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
@@ -16,11 +17,7 @@ const { ExportPresenceModes } = require("./HarmonyImportDependency");
1617
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
1718
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
1819

19-
/** @typedef {import("estree").ExportAllDeclaration} ExportAllDeclaration */
20-
/** @typedef {import("estree").ExportNamedDeclaration} ExportNamedDeclaration */
2120
/** @typedef {import("estree").Identifier} Identifier */
22-
/** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
23-
/** @typedef {import("estree").ImportExpression} ImportExpression */
2421
/** @typedef {import("estree").Literal} Literal */
2522
/** @typedef {import("estree").MemberExpression} MemberExpression */
2623
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
@@ -30,7 +27,11 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
3027
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
3128
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
3229
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
30+
/** @typedef {import("../javascript/JavascriptParser").ExportAllDeclaration} ExportAllDeclaration */
31+
/** @typedef {import("../javascript/JavascriptParser").ExportNamedDeclaration} ExportNamedDeclaration */
3332
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
33+
/** @typedef {import("../javascript/JavascriptParser").ImportDeclaration} ImportDeclaration */
34+
/** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
3435
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
3536
/** @typedef {import("../optimize/InnerGraph").InnerGraph} InnerGraph */
3637
/** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
@@ -48,73 +49,6 @@ const harmonySpecifierTag = Symbol("harmony import");
4849
* @property {Record<string, any> | undefined} assertions
4950
*/
5051

51-
/**
52-
* @param {ImportDeclaration | ExportNamedDeclaration | ExportAllDeclaration | (ImportExpression & { arguments?: ObjectExpression[] })} node node with assertions
53-
* @returns {ImportAttributes | undefined} import attributes
54-
*/
55-
function getAttributes(node) {
56-
if (
57-
node.type === "ImportExpression" &&
58-
node.arguments &&
59-
node.arguments[0] &&
60-
node.arguments[0].type === "ObjectExpression" &&
61-
node.arguments[0].properties[0] &&
62-
node.arguments[0].properties[0].type === "Property" &&
63-
node.arguments[0].properties[0].value.type === "ObjectExpression" &&
64-
node.arguments[0].properties[0].value.properties
65-
) {
66-
const properties =
67-
/** @type {Property[]} */
68-
(node.arguments[0].properties[0].value.properties);
69-
const result = /** @type {ImportAttributes} */ ({});
70-
for (const property of properties) {
71-
const key =
72-
/** @type {string} */
73-
(
74-
property.key.type === "Identifier"
75-
? property.key.name
76-
: /** @type {Literal} */ (property.key).value
77-
);
78-
result[key] =
79-
/** @type {string} */
80-
(/** @type {Literal} */ (property.value).value);
81-
}
82-
const key =
83-
node.arguments[0].properties[0].key.type === "Identifier"
84-
? node.arguments[0].properties[0].key.name
85-
: /** @type {Literal} */ (node.arguments[0].properties[0].key).value;
86-
if (key === "assert") {
87-
result._isLegacyAssert = true;
88-
}
89-
return result;
90-
}
91-
// TODO remove cast when @types/estree has been updated to import assertions
92-
const isImportAssertion =
93-
/** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions !==
94-
undefined;
95-
const attributes = isImportAssertion
96-
? /** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions
97-
: /** @type {{ attributes?: ImportAttributeNode[] }} */ (node).attributes;
98-
if (attributes === undefined) {
99-
return;
100-
}
101-
const result = /** @type {ImportAttributes} */ ({});
102-
for (const attribute of attributes) {
103-
const key =
104-
/** @type {string} */
105-
(
106-
attribute.key.type === "Identifier"
107-
? attribute.key.name
108-
: attribute.key.value
109-
);
110-
result[key] = /** @type {string} */ (attribute.value.value);
111-
}
112-
if (isImportAssertion) {
113-
result._isLegacyAssert = true;
114-
}
115-
return result;
116-
}
117-
11852
module.exports = class HarmonyImportDependencyParserPlugin {
11953
/**
12054
* @param {JavascriptParserOptions} options options
@@ -184,7 +118,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
184118
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
185119
parser.state.module.addPresentationalDependency(clearDep);
186120
parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
187-
const attributes = getAttributes(statement);
121+
const attributes = getImportAttributes(statement);
188122
const sideEffectDep = new HarmonyImportSideEffectDependency(
189123
/** @type {string} */ (source),
190124
parser.state.lastHarmonyImportOrder,
@@ -204,7 +138,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
204138
source,
205139
ids,
206140
sourceOrder: parser.state.lastHarmonyImportOrder,
207-
assertions: getAttributes(statement)
141+
assertions: getImportAttributes(statement)
208142
});
209143
return true;
210144
}
@@ -434,6 +368,3 @@ module.exports = class HarmonyImportDependencyParserPlugin {
434368
};
435369

436370
module.exports.harmonySpecifierTag = harmonySpecifierTag;
437-
// TODO remove it in webpack@6 in favor getAttributes
438-
module.exports.getAssertions = getAttributes;
439-
module.exports.getAttributes = getAttributes;

lib/dependencies/ImportParserPlugin.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@
88
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
99
const CommentCompilationWarning = require("../CommentCompilationWarning");
1010
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
11+
const { getImportAttributes } = require("../javascript/JavascriptParser");
1112
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
12-
const { getAttributes } = require("./HarmonyImportDependencyParserPlugin");
1313
const ImportContextDependency = require("./ImportContextDependency");
1414
const ImportDependency = require("./ImportDependency");
1515
const ImportEagerDependency = require("./ImportEagerDependency");
1616
const ImportWeakDependency = require("./ImportWeakDependency");
1717

18-
/** @typedef {import("estree").ImportExpression} ImportExpression */
1918
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
2019
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
2120
/** @typedef {import("../ContextModule").ContextMode} ContextMode */
2221
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
2322
/** @typedef {import("../Module").BuildMeta} BuildMeta */
2423
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
24+
/** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
2525
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
2626

2727
class ImportParserPlugin {
@@ -260,7 +260,7 @@ class ImportParserPlugin {
260260
}
261261

262262
if (param.isString()) {
263-
const attributes = getAttributes(expr);
263+
const attributes = getImportAttributes(expr);
264264

265265
if (mode === "eager") {
266266
const dep = new ImportEagerDependency(
@@ -323,7 +323,7 @@ class ImportParserPlugin {
323323
typePrefix: "import()",
324324
category: "esm",
325325
referencedExports: exports,
326-
attributes: getAttributes(expr)
326+
attributes: getImportAttributes(expr)
327327
},
328328
parser
329329
);

lib/dependencies/SystemPlugin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ class SystemPlugin {
125125
/** @type {import("estree").Literal} */
126126
(expr.arguments[0]),
127127
loc: expr.loc,
128-
range: expr.range
128+
range: expr.range,
129+
options: null
129130
});
130131
});
131132
};

0 commit comments

Comments
 (0)