feat: refactoring project
This commit is contained in:
2
node_modules/webpack/lib/dependencies/AMDDefineDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/AMDDefineDependency.js
generated
vendored
@@ -111,7 +111,7 @@ class AMDDefineDependency extends NullDependency {
|
||||
* @param {Range | null} arrayRange array range
|
||||
* @param {Range | null} functionRange function range
|
||||
* @param {Range | null} objectRange object range
|
||||
* @param {boolean | null} namedModule true, when define is called with a name
|
||||
* @param {string | null} namedModule true, when define is called with a name
|
||||
*/
|
||||
constructor(range, arrayRange, functionRange, objectRange, namedModule) {
|
||||
super();
|
||||
|
||||
130
node_modules/webpack/lib/dependencies/AMDDefineDependencyParserPlugin.js
generated
vendored
130
node_modules/webpack/lib/dependencies/AMDDefineDependencyParserPlugin.js
generated
vendored
@@ -20,7 +20,11 @@ const { addLocalModule, getLocalModule } = require("./LocalModulesHelpers");
|
||||
/** @typedef {import("estree").CallExpression} CallExpression */
|
||||
/** @typedef {import("estree").Expression} Expression */
|
||||
/** @typedef {import("estree").FunctionExpression} FunctionExpression */
|
||||
/** @typedef {import("estree").Identifier} Identifier */
|
||||
/** @typedef {import("estree").Literal} Literal */
|
||||
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
||||
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
||||
/** @typedef {import("estree").SimpleCallExpression} SimpleCallExpression */
|
||||
/** @typedef {import("estree").SpreadElement} SpreadElement */
|
||||
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
||||
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
||||
@@ -30,7 +34,7 @@ const { addLocalModule, getLocalModule } = require("./LocalModulesHelpers");
|
||||
|
||||
/**
|
||||
* @param {Expression | SpreadElement} expr expression
|
||||
* @returns {boolean} true if it's a bound function expression
|
||||
* @returns {expr is CallExpression} true if it's a bound function expression
|
||||
*/
|
||||
const isBoundFunctionExpression = expr => {
|
||||
if (expr.type !== "CallExpression") return false;
|
||||
@@ -46,7 +50,7 @@ const isBoundFunctionExpression = expr => {
|
||||
|
||||
/**
|
||||
* @param {Expression | SpreadElement} expr expression
|
||||
* @returns {boolean} true when unbound function expression
|
||||
* @returns {expr is FunctionExpression | ArrowFunctionExpression} true when unbound function expression
|
||||
*/
|
||||
const isUnboundFunctionExpression = expr => {
|
||||
if (expr.type === "FunctionExpression") return true;
|
||||
@@ -56,7 +60,7 @@ const isUnboundFunctionExpression = expr => {
|
||||
|
||||
/**
|
||||
* @param {Expression | SpreadElement} expr expression
|
||||
* @returns {boolean} true when callable
|
||||
* @returns {expr is FunctionExpression | ArrowFunctionExpression | CallExpression} true when callable
|
||||
*/
|
||||
const isCallable = expr => {
|
||||
if (isUnboundFunctionExpression(expr)) return true;
|
||||
@@ -95,26 +99,28 @@ class AMDDefineDependencyParserPlugin {
|
||||
*/
|
||||
processArray(parser, expr, param, identifiers, namedModule) {
|
||||
if (param.isArray()) {
|
||||
/** @type {BasicEvaluatedExpression[]} */
|
||||
(param.items).forEach((param, idx) => {
|
||||
const items = /** @type {BasicEvaluatedExpression[]} */ (param.items);
|
||||
for (const [idx, item] of items.entries()) {
|
||||
if (
|
||||
param.isString() &&
|
||||
item.isString() &&
|
||||
["require", "module", "exports"].includes(
|
||||
/** @type {string} */ (param.string)
|
||||
/** @type {string} */ (item.string)
|
||||
)
|
||||
)
|
||||
identifiers[/** @type {number} */ (idx)] = param.string;
|
||||
const result = this.processItem(parser, expr, param, namedModule);
|
||||
identifiers[/** @type {number} */ (idx)] = /** @type {string} */ (
|
||||
item.string
|
||||
);
|
||||
const result = this.processItem(parser, expr, item, namedModule);
|
||||
if (result === undefined) {
|
||||
this.processContext(parser, expr, param);
|
||||
this.processContext(parser, expr, item);
|
||||
}
|
||||
});
|
||||
}
|
||||
return true;
|
||||
} else if (param.isConstArray()) {
|
||||
/** @type {(string | LocalModuleDependency | AMDRequireItemDependency)[]} */
|
||||
const deps = [];
|
||||
/** @type {string[]} */
|
||||
(param.array).forEach((request, idx) => {
|
||||
const array = /** @type {string[]} */ (param.array);
|
||||
for (const [idx, request] of array.entries()) {
|
||||
let dep;
|
||||
let localModule;
|
||||
if (request === "require") {
|
||||
@@ -131,17 +137,17 @@ class AMDDefineDependencyParserPlugin {
|
||||
} else {
|
||||
dep = this.newRequireItemDependency(request);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
}
|
||||
deps.push(dep);
|
||||
});
|
||||
}
|
||||
const dep = this.newRequireArrayDependency(
|
||||
deps,
|
||||
/** @type {Range} */ (param.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -156,16 +162,19 @@ class AMDDefineDependencyParserPlugin {
|
||||
*/
|
||||
processItem(parser, expr, param, namedModule) {
|
||||
if (param.isConditional()) {
|
||||
/** @type {BasicEvaluatedExpression[]} */
|
||||
(param.options).forEach(param => {
|
||||
const result = this.processItem(parser, expr, param);
|
||||
const options = /** @type {BasicEvaluatedExpression[]} */ (param.options);
|
||||
for (const item of options) {
|
||||
const result = this.processItem(parser, expr, item);
|
||||
if (result === undefined) {
|
||||
this.processContext(parser, expr, param);
|
||||
this.processContext(parser, expr, item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (param.isString()) {
|
||||
let dep, localModule;
|
||||
let dep;
|
||||
let localModule;
|
||||
|
||||
if (param.string === "require") {
|
||||
dep = new ConstDependency(
|
||||
RuntimeGlobals.require,
|
||||
@@ -198,7 +207,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
/** @type {string} */ (param.string),
|
||||
param.range
|
||||
);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -228,7 +237,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -239,7 +248,14 @@ class AMDDefineDependencyParserPlugin {
|
||||
* @returns {boolean | undefined} result
|
||||
*/
|
||||
processCallDefine(parser, expr) {
|
||||
let array, fn, obj, namedModule;
|
||||
/** @type {TODO} */
|
||||
let array;
|
||||
/** @type {FunctionExpression | ArrowFunctionExpression | CallExpression | Identifier | undefined} */
|
||||
let fn;
|
||||
/** @type {ObjectExpression | Identifier | undefined} */
|
||||
let obj;
|
||||
/** @type {string | undefined} */
|
||||
let namedModule;
|
||||
switch (expr.arguments.length) {
|
||||
case 1:
|
||||
if (isCallable(expr.arguments[0])) {
|
||||
@@ -251,12 +267,12 @@ class AMDDefineDependencyParserPlugin {
|
||||
} else {
|
||||
// define(expr)
|
||||
// unclear if function or object
|
||||
obj = fn = expr.arguments[0];
|
||||
obj = fn = /** @type {Identifier} */ (expr.arguments[0]);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (expr.arguments[0].type === "Literal") {
|
||||
namedModule = expr.arguments[0].value;
|
||||
namedModule = /** @type {string} */ (expr.arguments[0].value);
|
||||
// define("…", …)
|
||||
if (isCallable(expr.arguments[1])) {
|
||||
// define("…", f() {…})
|
||||
@@ -267,7 +283,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
} else {
|
||||
// define("…", expr)
|
||||
// unclear if function or object
|
||||
obj = fn = expr.arguments[1];
|
||||
obj = fn = /** @type {Identifier} */ (expr.arguments[1]);
|
||||
}
|
||||
} else {
|
||||
array = expr.arguments[0];
|
||||
@@ -280,13 +296,18 @@ class AMDDefineDependencyParserPlugin {
|
||||
} else {
|
||||
// define([…], expr)
|
||||
// unclear if function or object
|
||||
obj = fn = expr.arguments[1];
|
||||
obj = fn = /** @type {Identifier} */ (expr.arguments[1]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// define("…", […], f() {…})
|
||||
namedModule = /** @type {TODO} */ (expr).arguments[0].value;
|
||||
namedModule =
|
||||
/** @type {string} */
|
||||
(
|
||||
/** @type {Literal} */
|
||||
(expr.arguments[0]).value
|
||||
);
|
||||
array = expr.arguments[1];
|
||||
if (isCallable(expr.arguments[2])) {
|
||||
// define("…", […], f() {})
|
||||
@@ -297,27 +318,36 @@ class AMDDefineDependencyParserPlugin {
|
||||
} else {
|
||||
// define("…", […], expr)
|
||||
// unclear if function or object
|
||||
obj = fn = expr.arguments[2];
|
||||
obj = fn = /** @type {Identifier} */ (expr.arguments[2]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
DynamicExports.bailout(parser.state);
|
||||
/** @type {Identifier[] | null} */
|
||||
let fnParams = null;
|
||||
let fnParamsOffset = 0;
|
||||
if (fn) {
|
||||
if (isUnboundFunctionExpression(fn)) {
|
||||
fnParams = /** @type {UnboundFunctionExpression} */ (fn).params;
|
||||
fnParams =
|
||||
/** @type {Identifier[]} */
|
||||
(fn.params);
|
||||
} else if (isBoundFunctionExpression(fn)) {
|
||||
fnParams = /** @type {TODO} */ (fn).callee.object.params;
|
||||
fnParamsOffset = /** @type {TODO} */ (fn).arguments.length - 1;
|
||||
const object =
|
||||
/** @type {FunctionExpression} */
|
||||
(/** @type {MemberExpression} */ (fn.callee).object);
|
||||
|
||||
fnParams =
|
||||
/** @type {Identifier[]} */
|
||||
(object.params);
|
||||
fnParamsOffset = fn.arguments.length - 1;
|
||||
if (fnParamsOffset < 0) {
|
||||
fnParamsOffset = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
let fnRenames = new Map();
|
||||
const fnRenames = new Map();
|
||||
if (array) {
|
||||
/** @type {Record<number, string>} */
|
||||
const identifiers = {};
|
||||
@@ -372,9 +402,14 @@ class AMDDefineDependencyParserPlugin {
|
||||
});
|
||||
} else if (fn && isBoundFunctionExpression(fn)) {
|
||||
inTry = parser.scope.inTry;
|
||||
|
||||
const object =
|
||||
/** @type {FunctionExpression} */
|
||||
(/** @type {MemberExpression} */ (fn.callee).object);
|
||||
|
||||
parser.inScope(
|
||||
/** @type {TODO} */
|
||||
(fn).callee.object.params.filter(
|
||||
/** @type {Identifier[]} */
|
||||
(object.params).filter(
|
||||
i => !["require", "module", "exports"].includes(i.name)
|
||||
),
|
||||
() => {
|
||||
@@ -382,19 +417,20 @@ class AMDDefineDependencyParserPlugin {
|
||||
parser.setVariable(name, varInfo);
|
||||
}
|
||||
parser.scope.inTry = /** @type {boolean} */ (inTry);
|
||||
if (fn.callee.object.body.type === "BlockStatement") {
|
||||
parser.detectMode(fn.callee.object.body.body);
|
||||
|
||||
if (object.body.type === "BlockStatement") {
|
||||
parser.detectMode(object.body.body);
|
||||
const prev = parser.prevStatement;
|
||||
parser.preWalkStatement(fn.callee.object.body);
|
||||
parser.preWalkStatement(object.body);
|
||||
parser.prevStatement = prev;
|
||||
parser.walkStatement(fn.callee.object.body);
|
||||
parser.walkStatement(object.body);
|
||||
} else {
|
||||
parser.walkExpression(fn.callee.object.body);
|
||||
parser.walkExpression(object.body);
|
||||
}
|
||||
}
|
||||
);
|
||||
if (/** @type {TODO} */ (fn).arguments) {
|
||||
parser.walkExpressions(/** @type {TODO} */ (fn).arguments);
|
||||
if (fn.arguments) {
|
||||
parser.walkExpressions(fn.arguments);
|
||||
}
|
||||
} else if (fn || obj) {
|
||||
parser.walkExpression(fn || obj);
|
||||
@@ -405,7 +441,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
array ? /** @type {Range} */ (array.range) : null,
|
||||
fn ? /** @type {Range} */ (fn.range) : null,
|
||||
obj ? /** @type {Range} */ (obj.range) : null,
|
||||
namedModule ? namedModule : null
|
||||
namedModule || null
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
if (namedModule) {
|
||||
@@ -420,7 +456,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
* @param {Range | null} arrayRange array range
|
||||
* @param {Range | null} functionRange function range
|
||||
* @param {Range | null} objectRange object range
|
||||
* @param {boolean | null} namedModule true, when define is called with a name
|
||||
* @param {string | null} namedModule true, when define is called with a name
|
||||
* @returns {AMDDefineDependency} AMDDefineDependency
|
||||
*/
|
||||
newDefineDependency(
|
||||
@@ -440,7 +476,7 @@ class AMDDefineDependencyParserPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {TODO[]} depsArray deps array
|
||||
* @param {(string | LocalModuleDependency | AMDRequireItemDependency)[]} depsArray deps array
|
||||
* @param {Range} range range
|
||||
* @returns {AMDRequireArrayDependency} AMDRequireArrayDependency
|
||||
*/
|
||||
|
||||
19
node_modules/webpack/lib/dependencies/AMDRequireArrayDependency.js
generated
vendored
19
node_modules/webpack/lib/dependencies/AMDRequireArrayDependency.js
generated
vendored
@@ -89,9 +89,9 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
|
||||
* @returns {string} content
|
||||
*/
|
||||
getContent(dep, templateContext) {
|
||||
const requires = dep.depsArray.map(dependency => {
|
||||
return this.contentForDependency(dependency, templateContext);
|
||||
});
|
||||
const requires = dep.depsArray.map(dependency =>
|
||||
this.contentForDependency(dependency, templateContext)
|
||||
);
|
||||
return `[${requires.join(", ")}]`;
|
||||
}
|
||||
|
||||
@@ -110,14 +110,13 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
|
||||
|
||||
if (dep.localModule) {
|
||||
return dep.localModule.variableName();
|
||||
} else {
|
||||
return runtimeTemplate.moduleExports({
|
||||
module: moduleGraph.getModule(dep),
|
||||
chunkGraph,
|
||||
request: dep.request,
|
||||
runtimeRequirements
|
||||
});
|
||||
}
|
||||
return runtimeTemplate.moduleExports({
|
||||
module: moduleGraph.getModule(dep),
|
||||
chunkGraph,
|
||||
request: dep.request,
|
||||
runtimeRequirements
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
38
node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js
generated
vendored
38
node_modules/webpack/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js
generated
vendored
@@ -49,11 +49,12 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
const fnData = getFunctionExpression(expression);
|
||||
if (fnData) {
|
||||
parser.inScope(
|
||||
fnData.fn.params.filter(i => {
|
||||
return !["require", "module", "exports"].includes(
|
||||
/** @type {Identifier} */ (i).name
|
||||
);
|
||||
}),
|
||||
fnData.fn.params.filter(
|
||||
i =>
|
||||
!["require", "module", "exports"].includes(
|
||||
/** @type {Identifier} */ (i).name
|
||||
)
|
||||
),
|
||||
() => {
|
||||
if (fnData.fn.body.type === "BlockStatement") {
|
||||
parser.walkStatement(fnData.fn.body);
|
||||
@@ -104,7 +105,8 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
/** @type {(string | LocalModuleDependency | AMDRequireItemDependency)[]} */
|
||||
const deps = [];
|
||||
for (const request of /** @type {any[]} */ (param.array)) {
|
||||
let dep, localModule;
|
||||
let dep;
|
||||
let localModule;
|
||||
if (request === "require") {
|
||||
dep = RuntimeGlobals.require;
|
||||
} else if (["exports", "module"].includes(request)) {
|
||||
@@ -117,7 +119,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
} else {
|
||||
dep = this.newRequireItemDependency(request);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
}
|
||||
deps.push(dep);
|
||||
@@ -127,7 +129,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
/** @type {Range} */ (param.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -151,7 +153,8 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
}
|
||||
return true;
|
||||
} else if (param.isString()) {
|
||||
let dep, localModule;
|
||||
let dep;
|
||||
let localModule;
|
||||
if (param.string === "require") {
|
||||
dep = new ConstDependency(
|
||||
RuntimeGlobals.require,
|
||||
@@ -186,7 +189,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
param.range
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -216,7 +219,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -269,10 +272,12 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
const old = parser.state.current;
|
||||
|
||||
if (expr.arguments.length >= 1) {
|
||||
param = parser.evaluateExpression(expr.arguments[0]);
|
||||
param = parser.evaluateExpression(
|
||||
/** @type {Expression} */ (expr.arguments[0])
|
||||
);
|
||||
depBlock = this.newRequireDependenciesBlock(
|
||||
/** @type {DependencyLocation} */ (expr.loc),
|
||||
/** @type {string} */ (this.processArrayForRequestString(param))
|
||||
this.processArrayForRequestString(param)
|
||||
);
|
||||
dep = this.newRequireDependency(
|
||||
/** @type {Range} */ (expr.range),
|
||||
@@ -324,8 +329,9 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
if (parser.state.module) {
|
||||
parser.state.module.addError(
|
||||
new UnsupportedFeatureWarning(
|
||||
"Cannot statically analyse 'require(…, …)' in line " +
|
||||
/** @type {SourceLocation} */ (expr.loc).start.line,
|
||||
`Cannot statically analyse 'require(…, …)' in line ${
|
||||
/** @type {SourceLocation} */ (expr.loc).start.line
|
||||
}`,
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
@@ -355,7 +361,7 @@ class AMDRequireDependenciesBlockParserPlugin {
|
||||
|
||||
/**
|
||||
* @param {DependencyLocation} loc location
|
||||
* @param {string} request request
|
||||
* @param {string=} request request
|
||||
* @returns {AMDRequireDependenciesBlock} AMDRequireDependenciesBlock
|
||||
*/
|
||||
newRequireDependenciesBlock(loc, request) {
|
||||
|
||||
4
node_modules/webpack/lib/dependencies/AMDRuntimeModules.js
generated
vendored
4
node_modules/webpack/lib/dependencies/AMDRuntimeModules.js
generated
vendored
@@ -44,5 +44,5 @@ class AMDOptionsRuntimeModule extends RuntimeModule {
|
||||
}
|
||||
}
|
||||
|
||||
exports.AMDDefineRuntimeModule = AMDDefineRuntimeModule;
|
||||
exports.AMDOptionsRuntimeModule = AMDOptionsRuntimeModule;
|
||||
module.exports.AMDDefineRuntimeModule = AMDDefineRuntimeModule;
|
||||
module.exports.AMDOptionsRuntimeModule = AMDOptionsRuntimeModule;
|
||||
|
||||
8
node_modules/webpack/lib/dependencies/CommonJsDependencyHelpers.js
generated
vendored
8
node_modules/webpack/lib/dependencies/CommonJsDependencyHelpers.js
generated
vendored
@@ -17,8 +17,12 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
||||
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
||||
* @returns {[string, string]} type and base
|
||||
*/
|
||||
exports.handleDependencyBase = (depBase, module, runtimeRequirements) => {
|
||||
let base = undefined;
|
||||
module.exports.handleDependencyBase = (
|
||||
depBase,
|
||||
module,
|
||||
runtimeRequirements
|
||||
) => {
|
||||
let base;
|
||||
let type;
|
||||
switch (depBase) {
|
||||
case "exports":
|
||||
|
||||
78
node_modules/webpack/lib/dependencies/CommonJsExportRequireDependency.js
generated
vendored
78
node_modules/webpack/lib/dependencies/CommonJsExportRequireDependency.js
generated
vendored
@@ -96,14 +96,13 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
||||
const getFullResult = () => {
|
||||
if (ids.length === 0) {
|
||||
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
} else {
|
||||
return [
|
||||
{
|
||||
name: ids,
|
||||
canMangle: false
|
||||
}
|
||||
];
|
||||
}
|
||||
return [
|
||||
{
|
||||
name: ids,
|
||||
canMangle: false
|
||||
}
|
||||
];
|
||||
};
|
||||
if (this.resultUsed) return getFullResult();
|
||||
/** @type {ExportsInfo | undefined} */
|
||||
@@ -146,8 +145,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
||||
* @returns {ExportsSpec | undefined} export names
|
||||
*/
|
||||
getExports(moduleGraph) {
|
||||
const ids = this.getIds(moduleGraph);
|
||||
if (this.names.length === 1) {
|
||||
const ids = this.getIds(moduleGraph);
|
||||
const name = this.names[0];
|
||||
const from = moduleGraph.getConnection(this);
|
||||
if (!from) return;
|
||||
@@ -179,39 +178,36 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
||||
],
|
||||
dependencies: undefined
|
||||
};
|
||||
} else {
|
||||
const from = moduleGraph.getConnection(this);
|
||||
if (!from) return;
|
||||
const reexportInfo = this.getStarReexports(
|
||||
moduleGraph,
|
||||
undefined,
|
||||
from.module
|
||||
);
|
||||
if (reexportInfo) {
|
||||
return {
|
||||
exports: Array.from(
|
||||
/** @type {TODO} */ (reexportInfo).exports,
|
||||
name => {
|
||||
return {
|
||||
name,
|
||||
from,
|
||||
export: ids.concat(name),
|
||||
canMangle: !(name in EMPTY_OBJECT) && false
|
||||
};
|
||||
}
|
||||
),
|
||||
// TODO handle deep reexports
|
||||
dependencies: [from.module]
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
exports: true,
|
||||
from: ids.length === 0 ? from : undefined,
|
||||
canMangle: false,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
}
|
||||
const from = moduleGraph.getConnection(this);
|
||||
if (!from) return;
|
||||
const reexportInfo = this.getStarReexports(
|
||||
moduleGraph,
|
||||
undefined,
|
||||
from.module
|
||||
);
|
||||
const ids = this.getIds(moduleGraph);
|
||||
if (reexportInfo) {
|
||||
return {
|
||||
exports: Array.from(
|
||||
/** @type {TODO} */ (reexportInfo).exports,
|
||||
name => ({
|
||||
name,
|
||||
from,
|
||||
export: ids.concat(name),
|
||||
canMangle: !(name in EMPTY_OBJECT) && false
|
||||
})
|
||||
),
|
||||
// TODO handle deep reexports
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
return {
|
||||
exports: true,
|
||||
from: ids.length === 0 ? from : undefined,
|
||||
canMangle: false,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -382,7 +378,7 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
||||
if (usedImported) {
|
||||
const comment = equals(usedImported, ids)
|
||||
? ""
|
||||
: Template.toNormalComment(propertyAccess(ids)) + " ";
|
||||
: `${Template.toNormalComment(propertyAccess(ids))} `;
|
||||
requireExpr += `${comment}${propertyAccess(usedImported)}`;
|
||||
}
|
||||
}
|
||||
|
||||
1
node_modules/webpack/lib/dependencies/CommonJsExportsDependency.js
generated
vendored
1
node_modules/webpack/lib/dependencies/CommonJsExportsDependency.js
generated
vendored
@@ -176,7 +176,6 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
|
||||
dep.range[1] - 1,
|
||||
"))"
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
49
node_modules/webpack/lib/dependencies/CommonJsExportsParserPlugin.js
generated
vendored
49
node_modules/webpack/lib/dependencies/CommonJsExportsParserPlugin.js
generated
vendored
@@ -26,6 +26,7 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
|
||||
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
||||
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
||||
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
||||
/** @typedef {import("../javascript/JavascriptParser").StatementPath} StatementPath */
|
||||
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
||||
|
||||
/**
|
||||
@@ -43,7 +44,6 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
|
||||
* exports.foo = void 0;
|
||||
* exports.foo = "bar";
|
||||
* ```
|
||||
*
|
||||
* @param {TODO} expr expression
|
||||
* @returns {Expression | undefined} returns the value of property descriptor
|
||||
*/
|
||||
@@ -61,15 +61,13 @@ const getValueOfPropertyDescription = expr => {
|
||||
* The purpose of this function is to check whether an expression is a truthy literal or not. This is
|
||||
* useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy
|
||||
* values like `null` and `false`. However, exports should only be created if the exported value is truthy.
|
||||
*
|
||||
* @param {Expression} expr expression being checked
|
||||
* @returns {boolean} true, when the expression is a truthy literal
|
||||
*
|
||||
*/
|
||||
const isTruthyLiteral = expr => {
|
||||
switch (expr.type) {
|
||||
case "Literal":
|
||||
return !!expr.value;
|
||||
return Boolean(expr.value);
|
||||
case "UnaryExpression":
|
||||
if (expr.operator === "!") return isFalsyLiteral(expr.argument);
|
||||
}
|
||||
@@ -80,7 +78,6 @@ const isTruthyLiteral = expr => {
|
||||
* The purpose of this function is to check whether an expression is a falsy literal or not. This is
|
||||
* useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy
|
||||
* values like `null` and `false`. However, exports should only be created if the exported value is truthy.
|
||||
*
|
||||
* @param {Expression} expr expression being checked
|
||||
* @returns {boolean} true, when the expression is a falsy literal
|
||||
*/
|
||||
@@ -215,7 +212,7 @@ class CommonJsExportsParserPlugin {
|
||||
!parser.isStatementLevelExpression(expr)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.module.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -223,7 +220,8 @@ class CommonJsExportsParserPlugin {
|
||||
enableStructuredExports();
|
||||
const remainingMembers = members;
|
||||
checkNamespace(
|
||||
parser.statementPath.length === 1 &&
|
||||
/** @type {StatementPath} */
|
||||
(parser.statementPath).length === 1 &&
|
||||
parser.isStatementLevelExpression(expr),
|
||||
remainingMembers,
|
||||
expr.right
|
||||
@@ -241,9 +239,9 @@ class CommonJsExportsParserPlugin {
|
||||
};
|
||||
parser.hooks.assignMemberChain
|
||||
.for("exports")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
return handleAssignExport(expr, "exports", members);
|
||||
});
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) =>
|
||||
handleAssignExport(expr, "exports", members)
|
||||
);
|
||||
parser.hooks.assignMemberChain
|
||||
.for("this")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
@@ -280,7 +278,8 @@ class CommonJsExportsParserPlugin {
|
||||
enableStructuredExports();
|
||||
const descArg = expr.arguments[2];
|
||||
checkNamespace(
|
||||
parser.statementPath.length === 1,
|
||||
/** @type {StatementPath} */
|
||||
(parser.statementPath).length === 1,
|
||||
[property],
|
||||
getValueOfPropertyDescription(descArg)
|
||||
);
|
||||
@@ -306,7 +305,7 @@ class CommonJsExportsParserPlugin {
|
||||
* @param {CallExpression=} call call expression
|
||||
* @returns {boolean | void} true, when the expression was handled
|
||||
*/
|
||||
const handleAccessExport = (expr, base, members, call = undefined) => {
|
||||
const handleAccessExport = (expr, base, members, call) => {
|
||||
if (HarmonyExports.isEnabled(parser.state)) return;
|
||||
if (members.length === 0) {
|
||||
bailout(
|
||||
@@ -328,7 +327,7 @@ class CommonJsExportsParserPlugin {
|
||||
/** @type {Range} */ (expr.range),
|
||||
base,
|
||||
members,
|
||||
!!call
|
||||
Boolean(call)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
@@ -339,19 +338,19 @@ class CommonJsExportsParserPlugin {
|
||||
};
|
||||
parser.hooks.callMemberChain
|
||||
.for("exports")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
return handleAccessExport(expr.callee, "exports", members, expr);
|
||||
});
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) =>
|
||||
handleAccessExport(expr.callee, "exports", members, expr)
|
||||
);
|
||||
parser.hooks.expressionMemberChain
|
||||
.for("exports")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
return handleAccessExport(expr, "exports", members);
|
||||
});
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) =>
|
||||
handleAccessExport(expr, "exports", members)
|
||||
);
|
||||
parser.hooks.expression
|
||||
.for("exports")
|
||||
.tap("CommonJsExportsParserPlugin", expr => {
|
||||
return handleAccessExport(expr, "exports", []);
|
||||
});
|
||||
.tap("CommonJsExportsParserPlugin", expr =>
|
||||
handleAccessExport(expr, "exports", [])
|
||||
);
|
||||
parser.hooks.callMemberChain
|
||||
.for("module")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
@@ -371,9 +370,9 @@ class CommonJsExportsParserPlugin {
|
||||
});
|
||||
parser.hooks.expression
|
||||
.for("module.exports")
|
||||
.tap("CommonJsExportsParserPlugin", expr => {
|
||||
return handleAccessExport(expr, "module.exports", []);
|
||||
});
|
||||
.tap("CommonJsExportsParserPlugin", expr =>
|
||||
handleAccessExport(expr, "module.exports", [])
|
||||
);
|
||||
parser.hooks.callMemberChain
|
||||
.for("this")
|
||||
.tap("CommonJsExportsParserPlugin", (expr, members) => {
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/CommonJsFullRequireDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/CommonJsFullRequireDependency.js
generated
vendored
@@ -146,7 +146,7 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
|
||||
if (usedImported) {
|
||||
const comment = equals(usedImported, trimmedIds)
|
||||
? ""
|
||||
: Template.toNormalComment(propertyAccess(trimmedIds)) + " ";
|
||||
: `${Template.toNormalComment(propertyAccess(trimmedIds))} `;
|
||||
const access = `${comment}${propertyAccess(usedImported)}`;
|
||||
requireExpr =
|
||||
dep.asiSafe === true
|
||||
|
||||
122
node_modules/webpack/lib/dependencies/CommonJsImportsParserPlugin.js
generated
vendored
122
node_modules/webpack/lib/dependencies/CommonJsImportsParserPlugin.js
generated
vendored
@@ -63,7 +63,7 @@ class CommonJsImportsParserPlugin {
|
||||
}
|
||||
};
|
||||
|
||||
//#region metadata
|
||||
// #region metadata
|
||||
/**
|
||||
* @param {string} expression expression
|
||||
* @param {() => string[]} getMembers get members
|
||||
@@ -102,7 +102,7 @@ class CommonJsImportsParserPlugin {
|
||||
tapRequireExpression("require", () => []);
|
||||
tapRequireExpression("require.resolve", () => ["resolve"]);
|
||||
tapRequireExpression("require.resolveWeak", () => ["resolveWeak"]);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
// Weird stuff //
|
||||
parser.hooks.assign
|
||||
@@ -115,7 +115,7 @@ class CommonJsImportsParserPlugin {
|
||||
return true;
|
||||
});
|
||||
|
||||
//#region Unsupported
|
||||
// #region Unsupported
|
||||
parser.hooks.expression
|
||||
.for("require.main")
|
||||
.tap(
|
||||
@@ -152,9 +152,9 @@ class CommonJsImportsParserPlugin {
|
||||
"module.parent.require is not supported by webpack."
|
||||
)
|
||||
);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Renaming
|
||||
// #region Renaming
|
||||
/**
|
||||
* @param {Expression} expr expression
|
||||
* @returns {boolean} true when set undefined
|
||||
@@ -175,9 +175,9 @@ class CommonJsImportsParserPlugin {
|
||||
parser.hooks.rename
|
||||
.for("require")
|
||||
.tap("CommonJsImportsParserPlugin", defineUndefined);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Inspection
|
||||
// #region Inspection
|
||||
const requireCache = toConstantDependency(
|
||||
parser,
|
||||
RuntimeGlobals.moduleCache,
|
||||
@@ -191,9 +191,9 @@ class CommonJsImportsParserPlugin {
|
||||
parser.hooks.expression
|
||||
.for("require.cache")
|
||||
.tap("CommonJsImportsParserPlugin", requireCache);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Require as expression
|
||||
// #region Require as expression
|
||||
/**
|
||||
* @param {Expression} expr expression
|
||||
* @returns {boolean} true when handled
|
||||
@@ -215,16 +215,16 @@ class CommonJsImportsParserPlugin {
|
||||
options.unknownContextCritical &&
|
||||
"require function is used in a way in which dependencies cannot be statically extracted";
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
};
|
||||
parser.hooks.expression
|
||||
.for("require")
|
||||
.tap("CommonJsImportsParserPlugin", requireAsExpressionHandler);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Require
|
||||
// #region Require
|
||||
/**
|
||||
* @param {CallExpression | NewExpression} expr expression
|
||||
* @param {BasicEvaluatedExpression} param param
|
||||
@@ -238,7 +238,7 @@ class CommonJsImportsParserPlugin {
|
||||
getContext()
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -264,7 +264,7 @@ class CommonJsImportsParserPlugin {
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
};
|
||||
@@ -283,26 +283,22 @@ class CommonJsImportsParserPlugin {
|
||||
parser.state.module.addWarning(
|
||||
new CommentCompilationWarning(
|
||||
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
||||
comment.loc
|
||||
/** @type {DependencyLocation} */ (comment.loc)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
if (requireOptions) {
|
||||
if (requireOptions.webpackIgnore !== undefined) {
|
||||
if (typeof requireOptions.webpackIgnore !== "boolean") {
|
||||
parser.state.module.addWarning(
|
||||
new UnsupportedFeatureWarning(
|
||||
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
// Do not instrument `require()` if `webpackIgnore` is `true`
|
||||
if (requireOptions.webpackIgnore) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (requireOptions && requireOptions.webpackIgnore !== undefined) {
|
||||
if (typeof requireOptions.webpackIgnore !== "boolean") {
|
||||
parser.state.module.addWarning(
|
||||
new UnsupportedFeatureWarning(
|
||||
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
} else if (requireOptions.webpackIgnore) {
|
||||
// Do not instrument `require()` if `webpackIgnore` is `true`
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -370,9 +366,9 @@ class CommonJsImportsParserPlugin {
|
||||
parser.hooks.new
|
||||
.for("module.require")
|
||||
.tap("CommonJsImportsParserPlugin", createRequireHandler(true));
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Require with property access
|
||||
// #region Require with property access
|
||||
/**
|
||||
* @param {Expression} expr expression
|
||||
* @param {string[]} calleeMembers callee members
|
||||
@@ -403,7 +399,7 @@ class CommonJsImportsParserPlugin {
|
||||
dep.asiSafe = !parser.isAsiPosition(
|
||||
/** @type {Range} */ (expr.range)[0]
|
||||
);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
@@ -440,7 +436,7 @@ class CommonJsImportsParserPlugin {
|
||||
dep.asiSafe = !parser.isAsiPosition(
|
||||
/** @type {Range} */ (expr.range)[0]
|
||||
);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
|
||||
parser.state.current.addDependency(dep);
|
||||
parser.walkExpressions(expr.arguments);
|
||||
@@ -459,9 +455,9 @@ class CommonJsImportsParserPlugin {
|
||||
parser.hooks.callMemberChainOfCallMemberChain
|
||||
.for("module.require")
|
||||
.tap("CommonJsImportsParserPlugin", callChainHandler);
|
||||
//#endregion
|
||||
// #endregion
|
||||
|
||||
//#region Require.resolve
|
||||
// #region Require.resolve
|
||||
/**
|
||||
* @param {CallExpression} expr call expression
|
||||
* @param {boolean} weak weak
|
||||
@@ -485,18 +481,17 @@ class CommonJsImportsParserPlugin {
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
return true;
|
||||
} else {
|
||||
const result = processResolveItem(expr, param, weak);
|
||||
if (result === undefined) {
|
||||
processResolveContext(expr, param, weak);
|
||||
}
|
||||
const dep = new RequireResolveHeaderDependency(
|
||||
/** @type {Range} */ (expr.callee.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
return true;
|
||||
}
|
||||
const result = processResolveItem(expr, param, weak);
|
||||
if (result === undefined) {
|
||||
processResolveContext(expr, param, weak);
|
||||
}
|
||||
const dep = new RequireResolveHeaderDependency(
|
||||
/** @type {Range} */ (expr.callee.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
return true;
|
||||
};
|
||||
/**
|
||||
* @param {CallExpression} expr call expression
|
||||
@@ -512,7 +507,7 @@ class CommonJsImportsParserPlugin {
|
||||
getContext()
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
dep.weak = weak;
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
@@ -540,24 +535,20 @@ class CommonJsImportsParserPlugin {
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
};
|
||||
|
||||
parser.hooks.call
|
||||
.for("require.resolve")
|
||||
.tap("CommonJsImportsParserPlugin", expr => {
|
||||
return processResolve(expr, false);
|
||||
});
|
||||
.tap("CommonJsImportsParserPlugin", expr => processResolve(expr, false));
|
||||
parser.hooks.call
|
||||
.for("require.resolveWeak")
|
||||
.tap("CommonJsImportsParserPlugin", expr => {
|
||||
return processResolve(expr, true);
|
||||
});
|
||||
//#endregion
|
||||
.tap("CommonJsImportsParserPlugin", expr => processResolve(expr, true));
|
||||
// #endregion
|
||||
|
||||
//#region Create require
|
||||
// #region Create require
|
||||
|
||||
if (!options.createRequire) return;
|
||||
|
||||
@@ -599,23 +590,20 @@ class CommonJsImportsParserPlugin {
|
||||
data: { context },
|
||||
next: undefined
|
||||
});
|
||||
|
||||
return new BasicEvaluatedExpression()
|
||||
.setIdentifier(
|
||||
/** @type {TODO} */ (ident),
|
||||
/** @type {TODO} */ (ident),
|
||||
() => []
|
||||
)
|
||||
.setIdentifier(ident, ident, () => [])
|
||||
.setSideEffects(false)
|
||||
.setRange(/** @type {Range} */ (expr.range));
|
||||
});
|
||||
parser.hooks.unhandledExpressionMemberChain
|
||||
.for(createdRequireIdentifierTag)
|
||||
.tap("CommonJsImportsParserPlugin", (expr, members) => {
|
||||
return expressionIsUnsupported(
|
||||
.tap("CommonJsImportsParserPlugin", (expr, members) =>
|
||||
expressionIsUnsupported(
|
||||
parser,
|
||||
`createRequire().${members.join(".")} is not supported by webpack.`
|
||||
)(expr);
|
||||
});
|
||||
)(expr)
|
||||
);
|
||||
parser.hooks.canRename
|
||||
.for(createdRequireIdentifierTag)
|
||||
.tap("CommonJsImportsParserPlugin", () => true);
|
||||
@@ -789,7 +777,7 @@ class CommonJsImportsParserPlugin {
|
||||
parser.state.module.addPresentationalDependency(clearDep);
|
||||
return true;
|
||||
});
|
||||
//#endregion
|
||||
// #endregion
|
||||
}
|
||||
}
|
||||
module.exports = CommonJsImportsParserPlugin;
|
||||
|
||||
14
node_modules/webpack/lib/dependencies/CommonJsSelfReferenceDependency.js
generated
vendored
14
node_modules/webpack/lib/dependencies/CommonJsSelfReferenceDependency.js
generated
vendored
@@ -50,7 +50,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
|
||||
* @returns {string | null} an identifier to merge equal requests
|
||||
*/
|
||||
getResourceIdentifier() {
|
||||
return `self`;
|
||||
return "self";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,19 +108,17 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
||||
{ module, moduleGraph, runtime, runtimeRequirements }
|
||||
) {
|
||||
const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
|
||||
let used;
|
||||
if (dep.names.length === 0) {
|
||||
used = dep.names;
|
||||
} else {
|
||||
used = moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
|
||||
}
|
||||
const used =
|
||||
dep.names.length === 0
|
||||
? dep.names
|
||||
: moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
|
||||
if (!used) {
|
||||
throw new Error(
|
||||
"Self-reference dependency has unused export name: This should not happen"
|
||||
);
|
||||
}
|
||||
|
||||
let base = undefined;
|
||||
let base;
|
||||
switch (dep.base) {
|
||||
case "exports":
|
||||
runtimeRequirements.add(RuntimeGlobals.exports);
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/ConstDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/ConstDependency.js
generated
vendored
@@ -44,7 +44,7 @@ class ConstDependency extends NullDependency {
|
||||
*/
|
||||
updateHash(hash, context) {
|
||||
if (this._hashUpdate === undefined) {
|
||||
let hashUpdate = "" + this.range + "|" + this.expression;
|
||||
let hashUpdate = `${this.range}|${this.expression}`;
|
||||
if (this.runtimeRequirements) {
|
||||
for (const item of this.runtimeRequirements) {
|
||||
hashUpdate += "|";
|
||||
|
||||
9
node_modules/webpack/lib/dependencies/ContextDependency.js
generated
vendored
9
node_modules/webpack/lib/dependencies/ContextDependency.js
generated
vendored
@@ -27,7 +27,7 @@ const getCriticalDependencyWarning = memoize(() =>
|
||||
* @param {RegExp | null | undefined} r regexp
|
||||
* @returns {string} stringified regexp
|
||||
*/
|
||||
const regExpToString = r => (r ? r + "" : "");
|
||||
const regExpToString = r => (r ? String(r) : "");
|
||||
|
||||
class ContextDependency extends Dependency {
|
||||
/**
|
||||
@@ -91,7 +91,12 @@ class ContextDependency extends Dependency {
|
||||
this.options.include
|
||||
)} ${regExpToString(this.options.exclude)} ` +
|
||||
`${this.options.mode} ${this.options.chunkName} ` +
|
||||
`${JSON.stringify(this.options.groupOptions)}`
|
||||
`${JSON.stringify(this.options.groupOptions)}` +
|
||||
`${
|
||||
this.options.referencedExports
|
||||
? ` ${JSON.stringify(this.options.referencedExports)}`
|
||||
: ""
|
||||
}`
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
67
node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
generated
vendored
67
node_modules/webpack/lib/dependencies/ContextDependencyHelpers.js
generated
vendored
@@ -22,9 +22,7 @@ const { parseResource } = require("../util/identifier");
|
||||
* @param {string} str String to quote
|
||||
* @returns {string} Escaped string
|
||||
*/
|
||||
const quoteMeta = str => {
|
||||
return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
||||
};
|
||||
const quoteMeta = str => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
||||
|
||||
/**
|
||||
* @param {string} prefix prefix
|
||||
@@ -57,7 +55,7 @@ const splitContextFromPrefix = prefix => {
|
||||
* @param {...any} depArgs depArgs
|
||||
* @returns {ContextDependency} the created Dependency
|
||||
*/
|
||||
exports.create = (
|
||||
module.exports.create = (
|
||||
Dep,
|
||||
range,
|
||||
param,
|
||||
@@ -69,8 +67,8 @@ exports.create = (
|
||||
) => {
|
||||
if (param.isTemplateString()) {
|
||||
const quasis = /** @type {BasicEvaluatedExpression[]} */ (param.quasis);
|
||||
let prefixRaw = /** @type {string} */ (quasis[0].string);
|
||||
let postfixRaw =
|
||||
const prefixRaw = /** @type {string} */ (quasis[0].string);
|
||||
const postfixRaw =
|
||||
/** @type {string} */
|
||||
(quasis.length > 1 ? quasis[quasis.length - 1].string : "");
|
||||
|
||||
@@ -84,7 +82,7 @@ exports.create = (
|
||||
|
||||
// When there are more than two quasis, the generated RegExp can be more precise
|
||||
// We join the quasis with the expression regexp
|
||||
const innerQuasis = quasis.slice(1, quasis.length - 1);
|
||||
const innerQuasis = quasis.slice(1, -1);
|
||||
const innerRegExp =
|
||||
/** @type {RegExp} */ (options.wrappedContextRegExp).source +
|
||||
innerQuasis
|
||||
@@ -125,14 +123,14 @@ exports.create = (
|
||||
const replaces = [];
|
||||
const parts = /** @type {BasicEvaluatedExpression[]} */ (param.parts);
|
||||
|
||||
parts.forEach((part, i) => {
|
||||
for (const [i, part] of parts.entries()) {
|
||||
if (i % 2 === 0) {
|
||||
// Quasis or merged quasi
|
||||
let range = /** @type {Range} */ (part.range);
|
||||
let value = /** @type {string} */ (part.string);
|
||||
if (param.templateStringKind === "cooked") {
|
||||
value = JSON.stringify(value);
|
||||
value = value.slice(1, value.length - 1);
|
||||
value = value.slice(1, -1);
|
||||
}
|
||||
if (i === 0) {
|
||||
// prefix
|
||||
@@ -151,14 +149,14 @@ exports.create = (
|
||||
/** @type {Range} */ (part.range)[0],
|
||||
/** @type {Range} */ (param.range)[1]
|
||||
];
|
||||
value = value + "`";
|
||||
value = `${value}\``;
|
||||
} else if (
|
||||
part.expression &&
|
||||
part.expression.type === "TemplateElement" &&
|
||||
part.expression.value.raw === value
|
||||
) {
|
||||
// Shortcut when it's a single quasi and doesn't need to be replaced
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
replaces.push({
|
||||
range,
|
||||
@@ -168,7 +166,7 @@ exports.create = (
|
||||
// Expression
|
||||
parser.walkExpression(part.expression);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dep.replaces = replaces;
|
||||
dep.critical =
|
||||
@@ -180,10 +178,10 @@ exports.create = (
|
||||
((param.prefix && param.prefix.isString()) ||
|
||||
(param.postfix && param.postfix.isString()))
|
||||
) {
|
||||
let prefixRaw =
|
||||
const prefixRaw =
|
||||
/** @type {string} */
|
||||
(param.prefix && param.prefix.isString() ? param.prefix.string : "");
|
||||
let postfixRaw =
|
||||
const postfixRaw =
|
||||
/** @type {string} */
|
||||
(param.postfix && param.postfix.isString() ? param.postfix.string : "");
|
||||
const prefixRange =
|
||||
@@ -239,27 +237,26 @@ exports.create = (
|
||||
}
|
||||
}
|
||||
|
||||
return dep;
|
||||
} else {
|
||||
const dep = new Dep(
|
||||
{
|
||||
request: /** @type {string} */ (options.exprContextRequest),
|
||||
recursive: /** @type {boolean} */ (options.exprContextRecursive),
|
||||
regExp: /** @type {RegExp} */ (options.exprContextRegExp),
|
||||
mode: "sync",
|
||||
...contextOptions
|
||||
},
|
||||
range,
|
||||
/** @type {Range} */ (param.range),
|
||||
...depArgs
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.critical =
|
||||
options.exprContextCritical &&
|
||||
"the request of a dependency is an expression";
|
||||
|
||||
parser.walkExpression(param.expression);
|
||||
|
||||
return dep;
|
||||
}
|
||||
const dep = new Dep(
|
||||
{
|
||||
request: /** @type {string} */ (options.exprContextRequest),
|
||||
recursive: /** @type {boolean} */ (options.exprContextRecursive),
|
||||
regExp: /** @type {RegExp} */ (options.exprContextRegExp),
|
||||
mode: "sync",
|
||||
...contextOptions
|
||||
},
|
||||
range,
|
||||
/** @type {Range} */ (param.range),
|
||||
...depArgs
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.critical =
|
||||
options.exprContextCritical &&
|
||||
"the request of a dependency is an expression";
|
||||
|
||||
parser.walkExpression(param.expression);
|
||||
|
||||
return dep;
|
||||
};
|
||||
|
||||
43
node_modules/webpack/lib/dependencies/ContextElementDependency.js
generated
vendored
43
node_modules/webpack/lib/dependencies/ContextElementDependency.js
generated
vendored
@@ -9,7 +9,10 @@ const Dependency = require("../Dependency");
|
||||
const makeSerializable = require("../util/makeSerializable");
|
||||
const ModuleDependency = require("./ModuleDependency");
|
||||
|
||||
/** @typedef {import("../ContextModule")} ContextModule */
|
||||
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
||||
/** @typedef {import("../Module")} Module */
|
||||
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
||||
@@ -20,9 +23,9 @@ class ContextElementDependency extends ModuleDependency {
|
||||
/**
|
||||
* @param {string} request request
|
||||
* @param {string|undefined} userRequest user request
|
||||
* @param {string} typePrefix type prefix
|
||||
* @param {string | undefined} typePrefix type prefix
|
||||
* @param {string} category category
|
||||
* @param {string[][]=} referencedExports referenced exports
|
||||
* @param {(string[][] | null)=} referencedExports referenced exports
|
||||
* @param {string=} context context
|
||||
* @param {ImportAttributes=} attributes import assertions
|
||||
*/
|
||||
@@ -67,12 +70,36 @@ class ContextElementDependency extends ModuleDependency {
|
||||
* @returns {(string[] | ReferencedExport)[]} referenced exports
|
||||
*/
|
||||
getReferencedExports(moduleGraph, runtime) {
|
||||
return this.referencedExports
|
||||
? this.referencedExports.map(e => ({
|
||||
name: e,
|
||||
canMangle: false
|
||||
}))
|
||||
: Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
const refs = [];
|
||||
for (const referencedExport of this.referencedExports) {
|
||||
if (
|
||||
this._typePrefix === "import()" &&
|
||||
referencedExport[0] === "default"
|
||||
) {
|
||||
const selfModule =
|
||||
/** @type {ContextModule} */
|
||||
(moduleGraph.getParentModule(this));
|
||||
const importedModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getModule(this));
|
||||
const exportsType = importedModule.getExportsType(
|
||||
moduleGraph,
|
||||
selfModule.options.namespaceObject === "strict"
|
||||
);
|
||||
if (
|
||||
exportsType === "default-only" ||
|
||||
exportsType === "default-with-named"
|
||||
) {
|
||||
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
}
|
||||
}
|
||||
refs.push({
|
||||
name: referencedExport,
|
||||
canMangle: false
|
||||
});
|
||||
}
|
||||
return refs;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/CriticalDependencyWarning.js
generated
vendored
2
node_modules/webpack/lib/dependencies/CriticalDependencyWarning.js
generated
vendored
@@ -16,7 +16,7 @@ class CriticalDependencyWarning extends WebpackError {
|
||||
super();
|
||||
|
||||
this.name = "CriticalDependencyWarning";
|
||||
this.message = "Critical dependency: " + message;
|
||||
this.message = `Critical dependency: ${message}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
20
node_modules/webpack/lib/dependencies/CssExportDependency.js
generated
vendored
20
node_modules/webpack/lib/dependencies/CssExportDependency.js
generated
vendored
@@ -58,9 +58,9 @@ class CssExportDependency extends NullDependency {
|
||||
*/
|
||||
getExports(moduleGraph) {
|
||||
const module = /** @type {CssModule} */ (moduleGraph.getParentModule(this));
|
||||
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
||||
module.generator
|
||||
).convention;
|
||||
const convention =
|
||||
/** @type {CssGenerator | CssExportsGenerator} */
|
||||
(module.generator).convention;
|
||||
const names = this.getExportsConventionNames(this.name, convention);
|
||||
return {
|
||||
exports: names.map(name => ({
|
||||
@@ -81,14 +81,14 @@ class CssExportDependency extends NullDependency {
|
||||
const module = /** @type {CssModule} */ (
|
||||
chunkGraph.moduleGraph.getParentModule(this)
|
||||
);
|
||||
const generator = /** @type {CssGenerator | CssExportsGenerator} */ (
|
||||
module.generator
|
||||
);
|
||||
const generator =
|
||||
/** @type {CssGenerator | CssExportsGenerator} */
|
||||
(module.generator);
|
||||
const names = this.getExportsConventionNames(
|
||||
this.name,
|
||||
generator.convention
|
||||
);
|
||||
hash.update(`exportsConvention`);
|
||||
hash.update("exportsConvention");
|
||||
hash.update(JSON.stringify(names));
|
||||
}
|
||||
|
||||
@@ -129,9 +129,9 @@ CssExportDependency.Template = class CssExportDependencyTemplate extends (
|
||||
) {
|
||||
const dep = /** @type {CssExportDependency} */ (dependency);
|
||||
const module = /** @type {CssModule} */ (m);
|
||||
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
||||
module.generator
|
||||
).convention;
|
||||
const convention =
|
||||
/** @type {CssGenerator | CssExportsGenerator} */
|
||||
(module.generator).convention;
|
||||
const names = dep.getExportsConventionNames(dep.name, convention);
|
||||
const usedNames = /** @type {string[]} */ (
|
||||
names
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/CssImportDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/CssImportDependency.js
generated
vendored
@@ -26,9 +26,7 @@ const ModuleDependency = require("./ModuleDependency");
|
||||
class CssImportDependency extends ModuleDependency {
|
||||
/**
|
||||
* Example of dependency:
|
||||
*
|
||||
* \@import url("landscape.css") layer(forms) screen and (orientation: landscape) screen and (orientation: landscape);
|
||||
*
|
||||
* @param {string} request request
|
||||
* @param {Range} range range of the argument
|
||||
* @param {string | undefined} layer layer
|
||||
|
||||
49
node_modules/webpack/lib/dependencies/CssLocalIdentifierDependency.js
generated
vendored
49
node_modules/webpack/lib/dependencies/CssLocalIdentifierDependency.js
generated
vendored
@@ -21,6 +21,7 @@ const NullDependency = require("./NullDependency");
|
||||
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
||||
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||
/** @typedef {import("../NormalModuleFactory").ResourceDataWithData} ResourceDataWithData */
|
||||
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
||||
/** @typedef {import("../css/CssExportsGenerator")} CssExportsGenerator */
|
||||
/** @typedef {import("../css/CssGenerator")} CssGenerator */
|
||||
@@ -28,6 +29,7 @@ const NullDependency = require("./NullDependency");
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
/** @typedef {import("../util/createHash").Algorithm} Algorithm */
|
||||
|
||||
/**
|
||||
* @param {string} local css local
|
||||
@@ -41,12 +43,16 @@ const getLocalIdent = (local, module, chunkGraph, runtimeTemplate) => {
|
||||
/** @type {CssGenerator | CssExportsGenerator} */
|
||||
(module.generator).localIdentName;
|
||||
const relativeResourcePath = makePathsRelative(
|
||||
/** @type {string} */ (module.context),
|
||||
module.resourceResolveData.path
|
||||
/** @type {string} */
|
||||
(module.context),
|
||||
/** @type {string} */ (
|
||||
/** @type {ResourceDataWithData} */
|
||||
(module.resourceResolveData).path
|
||||
)
|
||||
);
|
||||
const { hashFunction, hashDigest, hashDigestLength, hashSalt, uniqueName } =
|
||||
runtimeTemplate.outputOptions;
|
||||
const hash = createHash(hashFunction);
|
||||
const hash = createHash(/** @type {Algorithm} */ (hashFunction));
|
||||
if (hashSalt) {
|
||||
hash.update(hashSalt);
|
||||
}
|
||||
@@ -71,7 +77,7 @@ const getLocalIdent = (local, module, chunkGraph, runtimeTemplate) => {
|
||||
module
|
||||
})
|
||||
.replace(/\[local\]/g, local)
|
||||
.replace(/\[uniqueName\]/g, uniqueName);
|
||||
.replace(/\[uniqueName\]/g, /** @type {string} */ (uniqueName));
|
||||
};
|
||||
|
||||
class CssLocalIdentifierDependency extends NullDependency {
|
||||
@@ -141,9 +147,9 @@ class CssLocalIdentifierDependency extends NullDependency {
|
||||
this.name,
|
||||
generator.convention
|
||||
);
|
||||
hash.update(`exportsConvention`);
|
||||
hash.update("exportsConvention");
|
||||
hash.update(JSON.stringify(names));
|
||||
hash.update(`localIdentName`);
|
||||
hash.update("localIdentName");
|
||||
hash.update(generator.localIdentName);
|
||||
}
|
||||
|
||||
@@ -178,7 +184,7 @@ class CssLocalIdentifierDependency extends NullDependency {
|
||||
const escapeCssIdentifier = (str, omitUnderscore) => {
|
||||
const escaped = `${str}`.replace(
|
||||
// cspell:word uffff
|
||||
/[^a-zA-Z0-9_\u0081-\uffff-]/g,
|
||||
/[^a-zA-Z0-9_\u0081-\uFFFF-]/g,
|
||||
s => `\\${s}`
|
||||
);
|
||||
return !omitUnderscore && /^(?!--)[0-9-]/.test(escaped)
|
||||
@@ -209,28 +215,31 @@ CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTempla
|
||||
) {
|
||||
const dep = /** @type {CssLocalIdentifierDependency} */ (dependency);
|
||||
const module = /** @type {CssModule} */ (m);
|
||||
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
||||
module.generator
|
||||
).convention;
|
||||
const convention =
|
||||
/** @type {CssGenerator | CssExportsGenerator} */
|
||||
(module.generator).convention;
|
||||
const names = dep.getExportsConventionNames(dep.name, convention);
|
||||
const usedNames = /** @type {string[]} */ (
|
||||
names
|
||||
.map(name =>
|
||||
moduleGraph.getExportInfo(module, name).getUsedName(name, runtime)
|
||||
)
|
||||
.filter(Boolean)
|
||||
);
|
||||
if (usedNames.length === 0) return;
|
||||
const usedNames =
|
||||
/** @type {(string)[]} */
|
||||
(
|
||||
names
|
||||
.map(name =>
|
||||
moduleGraph.getExportInfo(module, name).getUsedName(name, runtime)
|
||||
)
|
||||
.filter(Boolean)
|
||||
);
|
||||
const used = usedNames.length === 0 ? names[0] : usedNames[0];
|
||||
|
||||
// use the first usedName to generate localIdent, it's shorter when mangle exports enabled
|
||||
const localIdent =
|
||||
dep.prefix +
|
||||
getLocalIdent(usedNames[0], module, chunkGraph, runtimeTemplate);
|
||||
dep.prefix + getLocalIdent(used, module, chunkGraph, runtimeTemplate);
|
||||
|
||||
source.replace(
|
||||
dep.range[0],
|
||||
dep.range[1] - 1,
|
||||
escapeCssIdentifier(localIdent, dep.prefix)
|
||||
);
|
||||
|
||||
for (const used of usedNames) {
|
||||
cssExportsData.exports.set(used, localIdent);
|
||||
}
|
||||
|
||||
3
node_modules/webpack/lib/dependencies/CssSelfLocalIdentifierDependency.js
generated
vendored
3
node_modules/webpack/lib/dependencies/CssSelfLocalIdentifierDependency.js
generated
vendored
@@ -43,8 +43,9 @@ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
|
||||
* @returns {string | null} an identifier to merge equal requests
|
||||
*/
|
||||
getResourceIdentifier() {
|
||||
return `self`;
|
||||
return "self";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the exported names
|
||||
* @param {ModuleGraph} moduleGraph module graph
|
||||
|
||||
45
node_modules/webpack/lib/dependencies/CssUrlDependency.js
generated
vendored
45
node_modules/webpack/lib/dependencies/CssUrlDependency.js
generated
vendored
@@ -12,10 +12,12 @@ const ModuleDependency = require("./ModuleDependency");
|
||||
|
||||
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
||||
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
||||
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
||||
/** @typedef {import("../Dependency")} Dependency */
|
||||
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||
/** @typedef {import("../Module")} Module */
|
||||
/** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
|
||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
||||
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
||||
@@ -25,15 +27,15 @@ const ModuleDependency = require("./ModuleDependency");
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
||||
|
||||
const getIgnoredRawDataUrlModule = memoize(() => {
|
||||
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
||||
});
|
||||
const getIgnoredRawDataUrlModule = memoize(
|
||||
() => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
|
||||
);
|
||||
|
||||
class CssUrlDependency extends ModuleDependency {
|
||||
/**
|
||||
* @param {string} request request
|
||||
* @param {Range} range range of the argument
|
||||
* @param {"string" | "url"} urlType dependency type e.g. url() or string
|
||||
* @param {"string" | "url" | "src"} urlType dependency type e.g. url() or string
|
||||
*/
|
||||
constructor(request, range, urlType) {
|
||||
super(request);
|
||||
@@ -106,9 +108,8 @@ const cssEscapeString = str => {
|
||||
return str.replace(/[\n\t ()'"\\]/g, m => `\\${m}`);
|
||||
} else if (countQuotation <= countApostrophe) {
|
||||
return `"${str.replace(/[\n"\\]/g, m => `\\${m}`)}"`;
|
||||
} else {
|
||||
return `'${str.replace(/[\n'\\]/g, m => `\\${m}`)}'`;
|
||||
}
|
||||
return `'${str.replace(/[\n'\\]/g, m => `\\${m}`)}'`;
|
||||
};
|
||||
|
||||
CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
||||
@@ -134,7 +135,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
||||
switch (dep.urlType) {
|
||||
case "string":
|
||||
newValue = cssEscapeString(
|
||||
runtimeTemplate.assetUrl({
|
||||
this.assetUrl({
|
||||
module,
|
||||
codeGenerationResults
|
||||
})
|
||||
@@ -142,7 +143,15 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
||||
break;
|
||||
case "url":
|
||||
newValue = `url(${cssEscapeString(
|
||||
runtimeTemplate.assetUrl({
|
||||
this.assetUrl({
|
||||
module,
|
||||
codeGenerationResults
|
||||
})
|
||||
)})`;
|
||||
break;
|
||||
case "src":
|
||||
newValue = `src(${cssEscapeString(
|
||||
this.assetUrl({
|
||||
module,
|
||||
codeGenerationResults
|
||||
})
|
||||
@@ -156,6 +165,26 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
||||
/** @type {string} */ (newValue)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {object} options options object
|
||||
* @param {Module} options.module the module
|
||||
* @param {RuntimeSpec=} options.runtime runtime
|
||||
* @param {CodeGenerationResults} options.codeGenerationResults the code generation results
|
||||
* @returns {string} the url of the asset
|
||||
*/
|
||||
assetUrl({ runtime, module, codeGenerationResults }) {
|
||||
if (!module) {
|
||||
return "data:,";
|
||||
}
|
||||
const codeGen = codeGenerationResults.get(module, runtime);
|
||||
const data =
|
||||
/** @type {NonNullable<CodeGenerationResult["data"]>} */
|
||||
(codeGen.data);
|
||||
const url = data.get("url");
|
||||
if (!url || !url["css-url"]) return "data:,";
|
||||
return url["css-url"];
|
||||
}
|
||||
};
|
||||
|
||||
makeSerializable(CssUrlDependency, "webpack/lib/dependencies/CssUrlDependency");
|
||||
|
||||
10
node_modules/webpack/lib/dependencies/DynamicExports.js
generated
vendored
10
node_modules/webpack/lib/dependencies/DynamicExports.js
generated
vendored
@@ -15,7 +15,7 @@ const parserStateExportsState = new WeakMap();
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {void}
|
||||
*/
|
||||
exports.bailout = parserState => {
|
||||
module.exports.bailout = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
parserStateExportsState.set(parserState, false);
|
||||
if (value === true) {
|
||||
@@ -29,7 +29,7 @@ exports.bailout = parserState => {
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {void}
|
||||
*/
|
||||
exports.enable = parserState => {
|
||||
module.exports.enable = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
if (value === false) return;
|
||||
parserStateExportsState.set(parserState, true);
|
||||
@@ -44,7 +44,7 @@ exports.enable = parserState => {
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {void}
|
||||
*/
|
||||
exports.setFlagged = parserState => {
|
||||
module.exports.setFlagged = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
if (value !== true) return;
|
||||
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
||||
@@ -56,7 +56,7 @@ exports.setFlagged = parserState => {
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {void}
|
||||
*/
|
||||
exports.setDynamic = parserState => {
|
||||
module.exports.setDynamic = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
if (value !== true) return;
|
||||
/** @type {BuildMeta} */
|
||||
@@ -67,7 +67,7 @@ exports.setDynamic = parserState => {
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {boolean} true, when enabled
|
||||
*/
|
||||
exports.isEnabled = parserState => {
|
||||
module.exports.isEnabled = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
return value === true;
|
||||
};
|
||||
|
||||
3
node_modules/webpack/lib/dependencies/ExportsInfoDependency.js
generated
vendored
3
node_modules/webpack/lib/dependencies/ExportsInfoDependency.js
generated
vendored
@@ -72,7 +72,7 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
|
||||
case UsageState.Unused:
|
||||
return false;
|
||||
case UsageState.NoInfo:
|
||||
return undefined;
|
||||
return;
|
||||
case UsageState.Unknown:
|
||||
return null;
|
||||
default:
|
||||
@@ -82,7 +82,6 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
|
||||
case "provideInfo":
|
||||
return moduleGraph.getExportsInfo(module).isExportProvided(exportName);
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
class ExportsInfoDependency extends NullDependency {
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/HarmonyAcceptImportDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/HarmonyAcceptImportDependency.js
generated
vendored
@@ -18,7 +18,7 @@ class HarmonyAcceptImportDependency extends HarmonyImportDependency {
|
||||
* @param {string} request the request string
|
||||
*/
|
||||
constructor(request) {
|
||||
super(request, NaN);
|
||||
super(request, Number.NaN);
|
||||
this.weak = true;
|
||||
}
|
||||
|
||||
|
||||
9
node_modules/webpack/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js
generated
vendored
9
node_modules/webpack/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js
generated
vendored
@@ -112,11 +112,10 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
|
||||
break;
|
||||
}
|
||||
case "namespace": {
|
||||
if (ids[0] === "__esModule") {
|
||||
value = ids.length === 1 || undefined;
|
||||
} else {
|
||||
value = exportsInfo.isExportProvided(ids);
|
||||
}
|
||||
value =
|
||||
ids[0] === "__esModule"
|
||||
? ids.length === 1 || undefined
|
||||
: exportsInfo.isExportProvided(ids);
|
||||
break;
|
||||
}
|
||||
case "dynamic": {
|
||||
|
||||
49
node_modules/webpack/lib/dependencies/HarmonyExportDependencyParserPlugin.js
generated
vendored
49
node_modules/webpack/lib/dependencies/HarmonyExportDependencyParserPlugin.js
generated
vendored
@@ -5,6 +5,7 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const { getImportAttributes } = require("../javascript/JavascriptParser");
|
||||
const InnerGraph = require("../optimize/InnerGraph");
|
||||
const ConstDependency = require("./ConstDependency");
|
||||
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
||||
@@ -13,8 +14,7 @@ const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImporte
|
||||
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
||||
const { ExportPresenceModes } = require("./HarmonyImportDependency");
|
||||
const {
|
||||
harmonySpecifierTag,
|
||||
getAttributes
|
||||
harmonySpecifierTag
|
||||
} = require("./HarmonyImportDependencyParserPlugin");
|
||||
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
||||
|
||||
@@ -78,7 +78,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
||||
/** @type {string} */ (source),
|
||||
parser.state.lastHarmonyImportOrder,
|
||||
getAttributes(statement)
|
||||
getImportAttributes(statement)
|
||||
);
|
||||
sideEffectDep.loc = Object.create(
|
||||
/** @type {DependencyLocation} */ (statement.loc)
|
||||
@@ -145,30 +145,34 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||
"HarmonyExportDependencyParserPlugin",
|
||||
(statement, id, name, idx) => {
|
||||
const settings = parser.getTagData(id, harmonySpecifierTag);
|
||||
let dep;
|
||||
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
||||
parser.state.harmonyNamedExports || new Set());
|
||||
harmonyNamedExports.add(name);
|
||||
InnerGraph.addVariableUsage(parser, id, name);
|
||||
if (settings) {
|
||||
dep = new HarmonyExportImportedSpecifierDependency(
|
||||
settings.source,
|
||||
settings.sourceOrder,
|
||||
settings.ids,
|
||||
name,
|
||||
harmonyNamedExports,
|
||||
null,
|
||||
exportPresenceMode,
|
||||
null,
|
||||
settings.assertions
|
||||
);
|
||||
} else {
|
||||
dep = new HarmonyExportSpecifierDependency(id, name);
|
||||
}
|
||||
const dep = settings
|
||||
? new HarmonyExportImportedSpecifierDependency(
|
||||
settings.source,
|
||||
settings.sourceOrder,
|
||||
settings.ids,
|
||||
name,
|
||||
harmonyNamedExports,
|
||||
null,
|
||||
exportPresenceMode,
|
||||
null,
|
||||
settings.assertions
|
||||
)
|
||||
: new HarmonyExportSpecifierDependency(id, name);
|
||||
dep.loc = Object.create(
|
||||
/** @type {DependencyLocation} */ (statement.loc)
|
||||
);
|
||||
dep.loc.index = idx;
|
||||
const isAsiSafe = !parser.isAsiPosition(
|
||||
/** @type {Range} */
|
||||
(statement.range)[0]
|
||||
);
|
||||
if (!isAsiSafe) {
|
||||
parser.setAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
||||
}
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
@@ -202,6 +206,13 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||
/** @type {DependencyLocation} */ (statement.loc)
|
||||
);
|
||||
dep.loc.index = idx;
|
||||
const isAsiSafe = !parser.isAsiPosition(
|
||||
/** @type {Range} */
|
||||
(statement.range)[0]
|
||||
);
|
||||
if (!isAsiSafe) {
|
||||
parser.setAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
||||
}
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/HarmonyExportExpressionDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/HarmonyExportExpressionDependency.js
generated
vendored
@@ -193,7 +193,7 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
||||
source.replace(
|
||||
dep.rangeStatement[0],
|
||||
dep.range[0] - 1,
|
||||
content + "(" + dep.prefix
|
||||
`${content}(${dep.prefix}`
|
||||
);
|
||||
source.replace(dep.range[1], dep.rangeStatement[1] - 0.5, ");");
|
||||
return;
|
||||
|
||||
222
node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js
generated
vendored
222
node_modules/webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency.js
generated
vendored
@@ -5,6 +5,7 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
const ConditionalInitFragment = require("../ConditionalInitFragment");
|
||||
const Dependency = require("../Dependency");
|
||||
const { UsageState } = require("../ExportsInfo");
|
||||
const HarmonyLinkingError = require("../HarmonyLinkingError");
|
||||
@@ -16,7 +17,11 @@ const { first, combine } = require("../util/SetHelpers");
|
||||
const makeSerializable = require("../util/makeSerializable");
|
||||
const propertyAccess = require("../util/propertyAccess");
|
||||
const { propertyName } = require("../util/propertyName");
|
||||
const { getRuntimeKey, keyToRuntime } = require("../util/runtime");
|
||||
const {
|
||||
getRuntimeKey,
|
||||
keyToRuntime,
|
||||
filterRuntime
|
||||
} = require("../util/runtime");
|
||||
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
||||
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
||||
const processExportInfo = require("./processExportInfo");
|
||||
@@ -31,6 +36,7 @@ const processExportInfo = require("./processExportInfo");
|
||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||
/** @typedef {import("../ExportsInfo")} ExportsInfo */
|
||||
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
||||
/** @typedef {import("../ExportsInfo").UsedName} UsedName */
|
||||
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
||||
/** @typedef {import("../Module")} Module */
|
||||
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
||||
@@ -45,6 +51,7 @@ const processExportInfo = require("./processExportInfo");
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
||||
/** @typedef {import("./processExportInfo").ReferencedExports} ReferencedExports */
|
||||
|
||||
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-dynamic-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-fake-namespace-object"|"reexport-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
|
||||
|
||||
@@ -69,6 +76,9 @@ class NormalReexportItem {
|
||||
}
|
||||
}
|
||||
|
||||
/** @typedef {Set<string>} ExportModeIgnored */
|
||||
/** @typedef {Set<string>} ExportModeHidden */
|
||||
|
||||
class ExportMode {
|
||||
/**
|
||||
* @param {ExportModeType} type type of the mode
|
||||
@@ -88,11 +98,11 @@ class ExportMode {
|
||||
this.partialNamespaceExportInfo = null;
|
||||
|
||||
// for "dynamic-reexport":
|
||||
/** @type {Set<string> | null} */
|
||||
/** @type {ExportModeIgnored | null} */
|
||||
this.ignored = null;
|
||||
|
||||
// for "dynamic-reexport" | "empty-star":
|
||||
/** @type {Set<string> | null} */
|
||||
/** @type {ExportModeHidden | undefined | null} */
|
||||
this.hidden = null;
|
||||
|
||||
// for "missing":
|
||||
@@ -105,12 +115,19 @@ class ExportMode {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ModuleGraph} moduleGraph module graph
|
||||
* @param {TODO} dependencies dependencies
|
||||
* @param {TODO=} additionalDependency additional dependency
|
||||
* @returns {TODO} result
|
||||
*/
|
||||
const determineExportAssignments = (
|
||||
moduleGraph,
|
||||
dependencies,
|
||||
additionalDependency
|
||||
) => {
|
||||
const names = new Set();
|
||||
/** @type {number[]} */
|
||||
const dependencyIndices = [];
|
||||
|
||||
if (additionalDependency) {
|
||||
@@ -306,7 +323,8 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
||||
exportName,
|
||||
[exportName],
|
||||
exportsInfo.getReadOnlyExportInfo(exportName),
|
||||
checked.has(exportName),
|
||||
/** @type {Set<string>} */
|
||||
(checked).has(exportName),
|
||||
false
|
||||
)
|
||||
);
|
||||
@@ -327,11 +345,17 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
||||
return mode;
|
||||
};
|
||||
|
||||
/** @typedef {string[]} Ids */
|
||||
/** @typedef {Set<string>} Exports */
|
||||
/** @typedef {Set<string>} Checked */
|
||||
/** @typedef {Set<string>} Hidden */
|
||||
/** @typedef {Set<string>} IgnoredExports */
|
||||
|
||||
class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
/**
|
||||
* @param {string} request the request string
|
||||
* @param {number} sourceOrder the order in the original source file
|
||||
* @param {string[]} ids the requested export name of the imported module
|
||||
* @param {Ids} ids the requested export name of the imported module
|
||||
* @param {string | null} name the export name of for this module
|
||||
* @param {Set<string>} activeExports other named exports in the module
|
||||
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
|
||||
@@ -388,7 +412,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
|
||||
/**
|
||||
* @param {ModuleGraph} moduleGraph the module graph
|
||||
* @returns {string[]} the imported id
|
||||
* @returns {Ids} the imported id
|
||||
*/
|
||||
getIds(moduleGraph) {
|
||||
return moduleGraph.getMeta(this)[idsSymbol] || this.ids;
|
||||
@@ -396,11 +420,12 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
|
||||
/**
|
||||
* @param {ModuleGraph} moduleGraph the module graph
|
||||
* @param {string[]} ids the imported ids
|
||||
* @param {Ids} ids the imported ids
|
||||
* @returns {void}
|
||||
*/
|
||||
setIds(moduleGraph, ids) {
|
||||
moduleGraph.getMeta(this)[idsSymbol] = ids;
|
||||
/** @type {TODO} */
|
||||
(moduleGraph.getMeta(this))[idsSymbol] = ids;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -421,7 +446,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
* @param {RuntimeSpec} runtime the runtime
|
||||
* @param {ExportsInfo} exportsInfo exports info about the current module (optional)
|
||||
* @param {Module} importedModule the imported module (optional)
|
||||
* @returns {{exports?: Set<string>, checked?: Set<string>, ignoredExports: Set<string>, hidden?: Set<string>}} information
|
||||
* @returns {{exports?: Exports, checked?: Checked, ignoredExports: IgnoredExports, hidden?: Hidden}} information
|
||||
*/
|
||||
getStarReexports(
|
||||
moduleGraph,
|
||||
@@ -439,7 +464,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
|
||||
const ignoredExports = new Set(["default", ...this.activeExports]);
|
||||
|
||||
let hiddenExports = undefined;
|
||||
let hiddenExports;
|
||||
const otherStarExports =
|
||||
this._discoverActiveExportsFromOtherStarExports(moduleGraph);
|
||||
if (otherStarExports !== undefined) {
|
||||
@@ -457,11 +482,11 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
};
|
||||
}
|
||||
|
||||
/** @type {Set<string>} */
|
||||
/** @type {Exports} */
|
||||
const exports = new Set();
|
||||
/** @type {Set<string>} */
|
||||
/** @type {Checked} */
|
||||
const checked = new Set();
|
||||
/** @type {Set<string> | undefined} */
|
||||
/** @type {Hidden | undefined} */
|
||||
const hidden = hiddenExports !== undefined ? new Set() : undefined;
|
||||
|
||||
if (noExtraImports) {
|
||||
@@ -489,7 +514,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
const exportInfo = exportsInfo.getReadOnlyExportInfo(name);
|
||||
if (exportInfo.getUsed(runtime) === UsageState.Unused) continue;
|
||||
if (hiddenExports !== undefined && hiddenExports.has(name)) {
|
||||
/** @type {Set<string>} */
|
||||
/** @type {ExportModeHidden} */
|
||||
(hidden).add(name);
|
||||
continue;
|
||||
}
|
||||
@@ -543,7 +568,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
case "reexport-named-default": {
|
||||
if (!mode.partialNamespaceExportInfo)
|
||||
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
/** @type {string[][]} */
|
||||
/** @type {ReferencedExports} */
|
||||
const referencedExports = [];
|
||||
processExportInfo(
|
||||
runtime,
|
||||
@@ -558,7 +583,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
case "reexport-fake-namespace-object": {
|
||||
if (!mode.partialNamespaceExportInfo)
|
||||
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
/** @type {string[][]} */
|
||||
/** @type {ReferencedExports} */
|
||||
const referencedExports = [];
|
||||
processExportInfo(
|
||||
runtime,
|
||||
@@ -574,8 +599,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
|
||||
case "normal-reexport": {
|
||||
/** @type {ReferencedExports} */
|
||||
const referencedExports = [];
|
||||
for (const { ids, exportInfo, hidden } of mode.items) {
|
||||
for (const {
|
||||
ids,
|
||||
exportInfo,
|
||||
hidden
|
||||
} of /** @type {NormalReexportItem[]} */ (mode.items)) {
|
||||
if (hidden) continue;
|
||||
processExportInfo(runtime, referencedExports, ids, exportInfo, false);
|
||||
}
|
||||
@@ -592,13 +622,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
* @returns {{ names: string[], namesSlice: number, dependencyIndices: number[], dependencyIndex: number } | undefined} exported names and their origin dependency
|
||||
*/
|
||||
_discoverActiveExportsFromOtherStarExports(moduleGraph) {
|
||||
if (!this.otherStarExports) return undefined;
|
||||
if (!this.otherStarExports) return;
|
||||
|
||||
const i =
|
||||
"length" in this.otherStarExports
|
||||
? this.otherStarExports.length
|
||||
: countIterable(this.otherStarExports);
|
||||
if (i === 0) return undefined;
|
||||
if (i === 0) return;
|
||||
|
||||
if (this.allStarExports) {
|
||||
const { names, dependencyIndices } = moduleGraph.cached(
|
||||
@@ -638,7 +668,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
|
||||
switch (mode.type) {
|
||||
case "missing":
|
||||
return undefined;
|
||||
return;
|
||||
case "dynamic-reexport": {
|
||||
const from =
|
||||
/** @type {ModuleGraphConnection} */
|
||||
@@ -648,8 +678,11 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
from,
|
||||
canMangle: false,
|
||||
excludeExports: mode.hidden
|
||||
? combine(mode.ignored, mode.hidden)
|
||||
: mode.ignored,
|
||||
? combine(
|
||||
/** @type {ExportModeIgnored} */ (mode.ignored),
|
||||
mode.hidden
|
||||
)
|
||||
: /** @type {ExportModeIgnored} */ (mode.ignored),
|
||||
hideExports: mode.hidden,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
@@ -666,33 +699,34 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
/** @type {ModuleGraphConnection} */
|
||||
(moduleGraph.getConnection(this));
|
||||
return {
|
||||
exports: Array.from(mode.items, item => ({
|
||||
name: item.name,
|
||||
from,
|
||||
export: item.ids,
|
||||
hidden: item.hidden
|
||||
})),
|
||||
exports: Array.from(
|
||||
/** @type {NormalReexportItem[]} */ (mode.items),
|
||||
item => ({
|
||||
name: item.name,
|
||||
from,
|
||||
export: item.ids,
|
||||
hidden: item.hidden
|
||||
})
|
||||
),
|
||||
priority: 1,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
case "reexport-dynamic-default": {
|
||||
{
|
||||
const from =
|
||||
/** @type {ModuleGraphConnection} */
|
||||
(moduleGraph.getConnection(this));
|
||||
return {
|
||||
exports: [
|
||||
{
|
||||
name: /** @type {string} */ (mode.name),
|
||||
from,
|
||||
export: ["default"]
|
||||
}
|
||||
],
|
||||
priority: 1,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
const from =
|
||||
/** @type {ModuleGraphConnection} */
|
||||
(moduleGraph.getConnection(this));
|
||||
return {
|
||||
exports: [
|
||||
{
|
||||
name: /** @type {string} */ (mode.name),
|
||||
from,
|
||||
export: ["default"]
|
||||
}
|
||||
],
|
||||
priority: 1,
|
||||
dependencies: [from.module]
|
||||
};
|
||||
}
|
||||
case "reexport-undefined":
|
||||
return {
|
||||
@@ -825,6 +859,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
const importedModule = moduleGraph.getModule(this);
|
||||
if (importedModule) {
|
||||
const exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
||||
/** @type {Map<string, string[]>} */
|
||||
const conflicts = new Map();
|
||||
for (const exportInfo of exportsInfo.orderedExports) {
|
||||
if (exportInfo.provided !== true) continue;
|
||||
@@ -841,12 +876,12 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||
if (!conflictingDependency) continue;
|
||||
const target = exportInfo.getTerminalBinding(moduleGraph);
|
||||
if (!target) continue;
|
||||
const conflictingModule = moduleGraph.getModule(
|
||||
conflictingDependency
|
||||
);
|
||||
const conflictingModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getModule(conflictingDependency));
|
||||
if (conflictingModule === importedModule) continue;
|
||||
const conflictingExportInfo = moduleGraph.getExportInfo(
|
||||
/** @type {Module} */ (conflictingModule),
|
||||
conflictingModule,
|
||||
exportInfo.name
|
||||
);
|
||||
const conflictingTarget =
|
||||
@@ -944,7 +979,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
switch (mode.type) {
|
||||
case "reexport-undefined":
|
||||
concatenationScope.registerRawExport(
|
||||
mode.name,
|
||||
/** @type {NonNullable<ExportMode["name"]>} */ (mode.name),
|
||||
"/* reexport non-default export from non-harmony */ undefined"
|
||||
);
|
||||
}
|
||||
@@ -1020,7 +1055,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
this.getReexportFragment(
|
||||
module,
|
||||
"reexport default from dynamic",
|
||||
moduleGraph.getExportsInfo(module).getUsedName(mode.name, runtime),
|
||||
moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
||||
importVar,
|
||||
null,
|
||||
runtimeRequirements
|
||||
@@ -1032,7 +1069,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
initFragments.push(
|
||||
...this.getReexportFakeNamespaceObjectFragments(
|
||||
module,
|
||||
moduleGraph.getExportsInfo(module).getUsedName(mode.name, runtime),
|
||||
moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
||||
importVar,
|
||||
mode.fakeType,
|
||||
runtimeRequirements
|
||||
@@ -1045,7 +1084,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
this.getReexportFragment(
|
||||
module,
|
||||
"reexport non-default export from non-harmony",
|
||||
moduleGraph.getExportsInfo(module).getUsedName(mode.name, runtime),
|
||||
moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
||||
"undefined",
|
||||
"",
|
||||
runtimeRequirements
|
||||
@@ -1058,7 +1099,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
this.getReexportFragment(
|
||||
module,
|
||||
"reexport default export from named module",
|
||||
moduleGraph.getExportsInfo(module).getUsedName(mode.name, runtime),
|
||||
moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
||||
importVar,
|
||||
"",
|
||||
runtimeRequirements
|
||||
@@ -1071,7 +1114,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
this.getReexportFragment(
|
||||
module,
|
||||
"reexport module object",
|
||||
moduleGraph.getExportsInfo(module).getUsedName(mode.name, runtime),
|
||||
moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
||||
importVar,
|
||||
"",
|
||||
runtimeRequirements
|
||||
@@ -1080,23 +1125,36 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
break;
|
||||
|
||||
case "normal-reexport":
|
||||
for (const { name, ids, checked, hidden } of mode.items) {
|
||||
for (const {
|
||||
name,
|
||||
ids,
|
||||
checked,
|
||||
hidden
|
||||
} of /** @type {NormalReexportItem[]} */ (mode.items)) {
|
||||
if (hidden) continue;
|
||||
if (checked) {
|
||||
const connection = moduleGraph.getConnection(dep);
|
||||
const key = `harmony reexport (checked) ${importVar} ${name}`;
|
||||
const runtimeCondition = dep.weak
|
||||
? false
|
||||
: connection
|
||||
? filterRuntime(runtime, r => connection.isTargetActive(r))
|
||||
: true;
|
||||
initFragments.push(
|
||||
new InitFragment(
|
||||
"/* harmony reexport (checked) */ " +
|
||||
this.getConditionalReexportStatement(
|
||||
module,
|
||||
name,
|
||||
importVar,
|
||||
ids,
|
||||
runtimeRequirements
|
||||
),
|
||||
new ConditionalInitFragment(
|
||||
`/* harmony reexport (checked) */ ${this.getConditionalReexportStatement(
|
||||
module,
|
||||
name,
|
||||
importVar,
|
||||
ids,
|
||||
runtimeRequirements
|
||||
)}`,
|
||||
moduleGraph.isAsync(importedModule)
|
||||
? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
|
||||
: InitFragment.STAGE_HARMONY_IMPORTS,
|
||||
dep.sourceOrder
|
||||
dep.sourceOrder,
|
||||
key,
|
||||
runtimeCondition
|
||||
)
|
||||
);
|
||||
} else {
|
||||
@@ -1118,8 +1176,12 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
|
||||
case "dynamic-reexport": {
|
||||
const ignored = mode.hidden
|
||||
? combine(mode.ignored, mode.hidden)
|
||||
: mode.ignored;
|
||||
? combine(
|
||||
/** @type {ExportModeIgnored} */
|
||||
(mode.ignored),
|
||||
mode.hidden
|
||||
)
|
||||
: /** @type {ExportModeIgnored} */ (mode.ignored);
|
||||
const modern =
|
||||
runtimeTemplate.supportsConst() &&
|
||||
runtimeTemplate.supportsArrowFunction();
|
||||
@@ -1132,22 +1194,19 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
// Filter out exports which are defined by other exports
|
||||
// and filter out default export because it cannot be reexported with *
|
||||
if (ignored.size > 1) {
|
||||
content +=
|
||||
"if(" +
|
||||
JSON.stringify(Array.from(ignored)) +
|
||||
".indexOf(__WEBPACK_IMPORT_KEY__) < 0) ";
|
||||
content += `if(${JSON.stringify(
|
||||
Array.from(ignored)
|
||||
)}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
|
||||
} else if (ignored.size === 1) {
|
||||
content += `if(__WEBPACK_IMPORT_KEY__ !== ${JSON.stringify(
|
||||
first(ignored)
|
||||
)}) `;
|
||||
}
|
||||
|
||||
content += `__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = `;
|
||||
if (modern) {
|
||||
content += `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`;
|
||||
} else {
|
||||
content += `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
||||
}
|
||||
content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
|
||||
content += modern
|
||||
? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
|
||||
: `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
||||
|
||||
runtimeRequirements.add(RuntimeGlobals.exports);
|
||||
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
||||
@@ -1170,6 +1229,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Module} module the current module
|
||||
* @param {string} comment comment
|
||||
* @param {UsedName} key key
|
||||
* @param {string} name name
|
||||
* @param {string | string[] | null | false} valueKey value key
|
||||
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
||||
* @returns {HarmonyExportInitFragment} harmony export init fragment
|
||||
*/
|
||||
getReexportFragment(
|
||||
module,
|
||||
comment,
|
||||
|
||||
4
node_modules/webpack/lib/dependencies/HarmonyExports.js
generated
vendored
4
node_modules/webpack/lib/dependencies/HarmonyExports.js
generated
vendored
@@ -19,7 +19,7 @@ const parserStateExportsState = new WeakMap();
|
||||
* @param {boolean} isStrictHarmony strict harmony mode should be enabled
|
||||
* @returns {void}
|
||||
*/
|
||||
exports.enable = (parserState, isStrictHarmony) => {
|
||||
module.exports.enable = (parserState, isStrictHarmony) => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
if (value === false) return;
|
||||
parserStateExportsState.set(parserState, true);
|
||||
@@ -40,7 +40,7 @@ exports.enable = (parserState, isStrictHarmony) => {
|
||||
* @param {ParserState} parserState parser state
|
||||
* @returns {boolean} true, when enabled
|
||||
*/
|
||||
exports.isEnabled = parserState => {
|
||||
module.exports.isEnabled = parserState => {
|
||||
const value = parserStateExportsState.get(parserState);
|
||||
return value === true;
|
||||
};
|
||||
|
||||
6
node_modules/webpack/lib/dependencies/HarmonyImportDependency.js
generated
vendored
6
node_modules/webpack/lib/dependencies/HarmonyImportDependency.js
generated
vendored
@@ -59,7 +59,6 @@ const ExportPresenceModes = {
|
||||
|
||||
class HarmonyImportDependency extends ModuleDependency {
|
||||
/**
|
||||
*
|
||||
* @param {string} request request string
|
||||
* @param {number} sourceOrder source order
|
||||
* @param {ImportAttributes=} attributes import attributes
|
||||
@@ -89,7 +88,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
||||
* @returns {string} name of the variable for the import
|
||||
*/
|
||||
getImportVar(moduleGraph) {
|
||||
const module = moduleGraph.getParentModule(this);
|
||||
const module = /** @type {Module} */ (moduleGraph.getParentModule(this));
|
||||
const meta = /** @type {TODO} */ (moduleGraph.getMeta(module));
|
||||
let importVarMap = meta.importVarMap;
|
||||
if (!importVarMap) meta.importVarMap = importVarMap = new Map();
|
||||
@@ -351,7 +350,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
||||
importStatement[1],
|
||||
InitFragment.STAGE_ASYNC_HARMONY_IMPORTS,
|
||||
dep.sourceOrder,
|
||||
key + " compat",
|
||||
`${key} compat`,
|
||||
runtimeCondition
|
||||
)
|
||||
);
|
||||
@@ -369,7 +368,6 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Module} module the module
|
||||
* @param {Module} referencedModule the referenced module
|
||||
* @returns {RuntimeSpec | boolean} runtimeCondition in which this import has been emitted
|
||||
|
||||
116
node_modules/webpack/lib/dependencies/HarmonyImportDependencyParserPlugin.js
generated
vendored
116
node_modules/webpack/lib/dependencies/HarmonyImportDependencyParserPlugin.js
generated
vendored
@@ -6,6 +6,7 @@
|
||||
"use strict";
|
||||
|
||||
const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
|
||||
const { getImportAttributes } = require("../javascript/JavascriptParser");
|
||||
const InnerGraph = require("../optimize/InnerGraph");
|
||||
const ConstDependency = require("./ConstDependency");
|
||||
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
|
||||
@@ -16,11 +17,7 @@ const { ExportPresenceModes } = require("./HarmonyImportDependency");
|
||||
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
||||
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
||||
|
||||
/** @typedef {import("estree").ExportAllDeclaration} ExportAllDeclaration */
|
||||
/** @typedef {import("estree").ExportNamedDeclaration} ExportNamedDeclaration */
|
||||
/** @typedef {import("estree").Identifier} Identifier */
|
||||
/** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
|
||||
/** @typedef {import("estree").ImportExpression} ImportExpression */
|
||||
/** @typedef {import("estree").Literal} Literal */
|
||||
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
||||
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
||||
@@ -30,7 +27,11 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
||||
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
||||
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
||||
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ExportAllDeclaration} ExportAllDeclaration */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ExportNamedDeclaration} ExportNamedDeclaration */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ImportDeclaration} ImportDeclaration */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
|
||||
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
||||
/** @typedef {import("../optimize/InnerGraph").InnerGraph} InnerGraph */
|
||||
/** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
|
||||
@@ -48,73 +49,6 @@ const harmonySpecifierTag = Symbol("harmony import");
|
||||
* @property {Record<string, any> | undefined} assertions
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {ImportDeclaration | ExportNamedDeclaration | ExportAllDeclaration | (ImportExpression & { arguments?: ObjectExpression[] })} node node with assertions
|
||||
* @returns {ImportAttributes} import attributes
|
||||
*/
|
||||
function getAttributes(node) {
|
||||
if (
|
||||
node.type === "ImportExpression" &&
|
||||
node.arguments &&
|
||||
node.arguments[0] &&
|
||||
node.arguments[0].type === "ObjectExpression" &&
|
||||
node.arguments[0].properties[0] &&
|
||||
node.arguments[0].properties[0].type === "Property" &&
|
||||
node.arguments[0].properties[0].value.type === "ObjectExpression" &&
|
||||
node.arguments[0].properties[0].value.properties
|
||||
) {
|
||||
const properties =
|
||||
/** @type {Property[]} */
|
||||
(node.arguments[0].properties[0].value.properties);
|
||||
const result = /** @type {ImportAttributes} */ ({});
|
||||
for (const property of properties) {
|
||||
const key =
|
||||
/** @type {string} */
|
||||
(
|
||||
property.key.type === "Identifier"
|
||||
? property.key.name
|
||||
: /** @type {Literal} */ (property.key).value
|
||||
);
|
||||
result[key] =
|
||||
/** @type {string} */
|
||||
(/** @type {Literal} */ (property.value).value);
|
||||
}
|
||||
const key =
|
||||
node.arguments[0].properties[0].key.type === "Identifier"
|
||||
? node.arguments[0].properties[0].key.name
|
||||
: /** @type {Literal} */ (node.arguments[0].properties[0].key).value;
|
||||
if (key === "assert") {
|
||||
result._isLegacyAssert = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// TODO remove cast when @types/estree has been updated to import assertions
|
||||
const isImportAssertion =
|
||||
/** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions !==
|
||||
undefined;
|
||||
const attributes = isImportAssertion
|
||||
? /** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions
|
||||
: /** @type {{ attributes?: ImportAttributeNode[] }} */ (node).attributes;
|
||||
if (attributes === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
const result = /** @type {ImportAttributes} */ ({});
|
||||
for (const attribute of attributes) {
|
||||
const key =
|
||||
/** @type {string} */
|
||||
(
|
||||
attribute.key.type === "Identifier"
|
||||
? attribute.key.name
|
||||
: attribute.key.value
|
||||
);
|
||||
result[key] = /** @type {string} */ (attribute.value.value);
|
||||
}
|
||||
if (isImportAssertion) {
|
||||
result._isLegacyAssert = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
/**
|
||||
* @param {JavascriptParserOptions} options options
|
||||
@@ -138,12 +72,22 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
apply(parser) {
|
||||
const { exportPresenceMode } = this;
|
||||
|
||||
/**
|
||||
* @param {string[]} members members
|
||||
* @param {boolean[]} membersOptionals members Optionals
|
||||
* @returns {string[]} a non optional part
|
||||
*/
|
||||
function getNonOptionalPart(members, membersOptionals) {
|
||||
let i = 0;
|
||||
while (i < members.length && membersOptionals[i] === false) i++;
|
||||
return i !== members.length ? members.slice(0, i) : members;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {TODO} node member expression
|
||||
* @param {number} count count
|
||||
* @returns {TODO} member expression
|
||||
*/
|
||||
function getNonOptionalMemberChain(node, count) {
|
||||
while (count--) node = node.object;
|
||||
return node;
|
||||
@@ -174,7 +118,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
||||
parser.state.module.addPresentationalDependency(clearDep);
|
||||
parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
||||
const attributes = getAttributes(statement);
|
||||
const attributes = getImportAttributes(statement);
|
||||
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
||||
/** @type {string} */ (source),
|
||||
parser.state.lastHarmonyImportOrder,
|
||||
@@ -194,7 +138,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
source,
|
||||
ids,
|
||||
sourceOrder: parser.state.lastHarmonyImportOrder,
|
||||
assertions: getAttributes(statement)
|
||||
assertions: getImportAttributes(statement)
|
||||
});
|
||||
return true;
|
||||
}
|
||||
@@ -221,7 +165,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
)
|
||||
return;
|
||||
const settings = rootInfo.tagInfo.data;
|
||||
const members = rightPart.getMembers();
|
||||
const members =
|
||||
/** @type {(() => string[])} */
|
||||
(rightPart.getMembers)();
|
||||
const dep = new HarmonyEvaluatedImportSpecifierDependency(
|
||||
settings.source,
|
||||
settings.sourceOrder,
|
||||
@@ -280,6 +226,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
members,
|
||||
membersOptionals
|
||||
);
|
||||
/** @type {Range[]} */
|
||||
const ranges = memberRanges.slice(
|
||||
0,
|
||||
memberRanges.length - (members.length - nonOptionalMembers.length)
|
||||
@@ -326,6 +273,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
members,
|
||||
membersOptionals
|
||||
);
|
||||
/** @type {Range[]} */
|
||||
const ranges = memberRanges.slice(
|
||||
0,
|
||||
memberRanges.length - (members.length - nonOptionalMembers.length)
|
||||
@@ -355,7 +303,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
);
|
||||
// only in case when we strictly follow the spec we need a special case here
|
||||
dep.namespaceObjectAsContext =
|
||||
members.length > 0 && this.strictThisContextOnImports;
|
||||
members.length > 0 &&
|
||||
/** @type {boolean} */ (this.strictThisContextOnImports);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
if (args) parser.walkExpressions(args);
|
||||
@@ -374,17 +323,18 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
}
|
||||
const dependencies = requests.map(request => {
|
||||
const dep = new HarmonyAcceptImportDependency(request);
|
||||
dep.loc = expr.loc;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
return dep;
|
||||
});
|
||||
if (dependencies.length > 0) {
|
||||
const dep = new HarmonyAcceptDependency(
|
||||
expr.range,
|
||||
/** @type {Range} */
|
||||
(expr.range),
|
||||
dependencies,
|
||||
true
|
||||
);
|
||||
dep.loc = expr.loc;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
}
|
||||
}
|
||||
@@ -398,17 +348,18 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
}
|
||||
const dependencies = requests.map(request => {
|
||||
const dep = new HarmonyAcceptImportDependency(request);
|
||||
dep.loc = expr.loc;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
return dep;
|
||||
});
|
||||
if (dependencies.length > 0) {
|
||||
const dep = new HarmonyAcceptDependency(
|
||||
expr.range,
|
||||
/** @type {Range} */
|
||||
(expr.range),
|
||||
dependencies,
|
||||
false
|
||||
);
|
||||
dep.loc = expr.loc;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addDependency(dep);
|
||||
}
|
||||
}
|
||||
@@ -417,6 +368,3 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||
};
|
||||
|
||||
module.exports.harmonySpecifierTag = harmonySpecifierTag;
|
||||
// TODO remove it in webpack@6 in favor getAttributes
|
||||
module.exports.getAssertions = getAttributes;
|
||||
module.exports.getAttributes = getAttributes;
|
||||
|
||||
60
node_modules/webpack/lib/dependencies/HarmonyImportSpecifierDependency.js
generated
vendored
60
node_modules/webpack/lib/dependencies/HarmonyImportSpecifierDependency.js
generated
vendored
@@ -42,7 +42,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
|
||||
|
||||
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
/**
|
||||
* @param {TODO} request request
|
||||
* @param {string} request request
|
||||
* @param {number} sourceOrder source order
|
||||
* @param {string[]} ids ids
|
||||
* @param {string} name name
|
||||
@@ -67,7 +67,6 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
this.range = range;
|
||||
this.idRanges = idRanges;
|
||||
this.exportPresenceMode = exportPresenceMode;
|
||||
/** @type {boolean | undefined} */
|
||||
this.namespaceObjectAsContext = false;
|
||||
this.call = undefined;
|
||||
this.directImport = undefined;
|
||||
@@ -105,7 +104,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
getIds(moduleGraph) {
|
||||
const meta = moduleGraph.getMetaIfExisting(this);
|
||||
if (meta === undefined) return this.ids;
|
||||
const ids = meta[idsSymbol];
|
||||
const ids = meta[/** @type {keyof object} */ (idsSymbol)];
|
||||
return ids !== undefined ? ids : this.ids;
|
||||
}
|
||||
|
||||
@@ -115,7 +114,8 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
* @returns {void}
|
||||
*/
|
||||
setIds(moduleGraph, ids) {
|
||||
moduleGraph.getMeta(this)[idsSymbol] = ids;
|
||||
/** @type {TODO} */
|
||||
(moduleGraph.getMeta(this))[idsSymbol] = ids;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,7 +149,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
if (ids.length === 0) return this._getReferencedExportsInDestructuring();
|
||||
let namespaceObjectAsContext = this.namespaceObjectAsContext;
|
||||
if (ids[0] === "default") {
|
||||
const selfModule = moduleGraph.getParentModule(this);
|
||||
const selfModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getParentModule(this));
|
||||
const importedModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getModule(this));
|
||||
@@ -196,9 +198,8 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
refs.push(ids ? ids.concat([id]) : [id]);
|
||||
}
|
||||
return refs;
|
||||
} else {
|
||||
return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
}
|
||||
return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -208,9 +209,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||
_getEffectiveExportPresenceLevel(moduleGraph) {
|
||||
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
|
||||
return this.exportPresenceMode;
|
||||
const buildMeta = /** @type {BuildMeta} */ (
|
||||
moduleGraph.getParentModule(this).buildMeta
|
||||
);
|
||||
const buildMeta =
|
||||
/** @type {BuildMeta} */
|
||||
(
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getParentModule(this)).buildMeta
|
||||
);
|
||||
return buildMeta.strictHarmonyModule
|
||||
? ExportPresenceModes.ERROR
|
||||
: ExportPresenceModes.WARN;
|
||||
@@ -344,14 +348,36 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
||||
}
|
||||
|
||||
if (dep.referencedPropertiesInDestructuring) {
|
||||
const prefixedIds = ids[0] === "default" ? ids.slice(1) : ids;
|
||||
for (let {
|
||||
let prefixedIds = ids;
|
||||
|
||||
if (ids[0] === "default") {
|
||||
const selfModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getParentModule(dep));
|
||||
const importedModule =
|
||||
/** @type {Module} */
|
||||
(moduleGraph.getModule(dep));
|
||||
const exportsType = importedModule.getExportsType(
|
||||
moduleGraph,
|
||||
/** @type {BuildMeta} */
|
||||
(selfModule.buildMeta).strictHarmonyModule
|
||||
);
|
||||
if (
|
||||
(exportsType === "default-only" ||
|
||||
exportsType === "default-with-named") &&
|
||||
ids.length >= 1
|
||||
) {
|
||||
prefixedIds = ids.slice(1);
|
||||
}
|
||||
}
|
||||
|
||||
for (const {
|
||||
id,
|
||||
shorthand,
|
||||
range
|
||||
} of dep.referencedPropertiesInDestructuring) {
|
||||
const concatedIds = prefixedIds.concat([id]);
|
||||
const module = moduleGraph.getModule(dep);
|
||||
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
||||
const used = moduleGraph
|
||||
.getExportsInfo(module)
|
||||
.getUsedName(concatedIds, runtime);
|
||||
@@ -360,11 +386,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
||||
const name = concatedIds[concatedIds.length - 1];
|
||||
if (newName === name) continue;
|
||||
|
||||
const comment = Template.toNormalComment(name) + " ";
|
||||
const comment = `${Template.toNormalComment(name)} `;
|
||||
const key = comment + JSON.stringify(newName);
|
||||
source.replace(
|
||||
range[0],
|
||||
range[1] - 1,
|
||||
/** @type {Range} */
|
||||
(range)[0],
|
||||
/** @type {Range} */
|
||||
(range)[1] - 1,
|
||||
shorthand ? `${key}: ${name}` : `${key}`
|
||||
);
|
||||
}
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/ImportDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/ImportDependency.js
generated
vendored
@@ -124,7 +124,7 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
||||
);
|
||||
const content = runtimeTemplate.moduleNamespacePromise({
|
||||
chunkGraph,
|
||||
block: block,
|
||||
block,
|
||||
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
||||
request: dep.request,
|
||||
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
||||
|
||||
10
node_modules/webpack/lib/dependencies/ImportMetaContextDependencyParserPlugin.js
generated
vendored
10
node_modules/webpack/lib/dependencies/ImportMetaContextDependencyParserPlugin.js
generated
vendored
@@ -57,14 +57,14 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
||||
apply(parser) {
|
||||
parser.hooks.evaluateIdentifier
|
||||
.for("import.meta.webpackContext")
|
||||
.tap("ImportMetaContextDependencyParserPlugin", expr => {
|
||||
return evaluateToIdentifier(
|
||||
.tap("ImportMetaContextDependencyParserPlugin", expr =>
|
||||
evaluateToIdentifier(
|
||||
"import.meta.webpackContext",
|
||||
"import.meta",
|
||||
() => ["webpackContext"],
|
||||
true
|
||||
)(expr);
|
||||
});
|
||||
)(expr)
|
||||
);
|
||||
parser.hooks.call
|
||||
.for("import.meta.webpackContext")
|
||||
.tap("ImportMetaContextDependencyParserPlugin", expr => {
|
||||
@@ -293,7 +293,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
||||
/** @type {Range} */ (expr.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
});
|
||||
|
||||
24
node_modules/webpack/lib/dependencies/ImportMetaPlugin.js
generated
vendored
24
node_modules/webpack/lib/dependencies/ImportMetaPlugin.js
generated
vendored
@@ -49,9 +49,7 @@ class ImportMetaPlugin {
|
||||
* @param {NormalModule} module module
|
||||
* @returns {string} file url
|
||||
*/
|
||||
const getUrl = module => {
|
||||
return pathToFileURL(module.resource).toString();
|
||||
};
|
||||
const getUrl = module => pathToFileURL(module.resource).toString();
|
||||
/**
|
||||
* @param {Parser} parser parser parser
|
||||
* @param {JavascriptParserOptions} parserOptions parserOptions
|
||||
@@ -76,8 +74,8 @@ class ImportMetaPlugin {
|
||||
return;
|
||||
}
|
||||
|
||||
/// import.meta direct ///
|
||||
const webpackVersion = parseInt(
|
||||
// import.meta direct
|
||||
const webpackVersion = Number.parseInt(
|
||||
require("../../package.json").version,
|
||||
10
|
||||
);
|
||||
@@ -90,7 +88,7 @@ class ImportMetaPlugin {
|
||||
*/
|
||||
const importMetaUnknownProperty = members =>
|
||||
`${Template.toNormalComment(
|
||||
"unsupported import.meta." + members.join(".")
|
||||
`unsupported import.meta.${members.join(".")}`
|
||||
)} undefined${propertyAccess(members, 1)}`;
|
||||
parser.hooks.typeof
|
||||
.for("import.meta")
|
||||
@@ -162,7 +160,7 @@ class ImportMetaPlugin {
|
||||
evaluateToIdentifier("import.meta", "import.meta", () => [], true)
|
||||
);
|
||||
|
||||
/// import.meta.url ///
|
||||
// import.meta.url
|
||||
parser.hooks.typeof
|
||||
.for("import.meta.url")
|
||||
.tap(
|
||||
@@ -185,13 +183,13 @@ class ImportMetaPlugin {
|
||||
.tap(PLUGIN_NAME, evaluateToString("string"));
|
||||
parser.hooks.evaluateIdentifier
|
||||
.for("import.meta.url")
|
||||
.tap(PLUGIN_NAME, expr => {
|
||||
return new BasicEvaluatedExpression()
|
||||
.tap(PLUGIN_NAME, expr =>
|
||||
new BasicEvaluatedExpression()
|
||||
.setString(getUrl(parser.state.module))
|
||||
.setRange(/** @type {Range} */ (expr.range));
|
||||
});
|
||||
.setRange(/** @type {Range} */ (expr.range))
|
||||
);
|
||||
|
||||
/// import.meta.webpack ///
|
||||
// import.meta.webpack
|
||||
parser.hooks.typeof
|
||||
.for("import.meta.webpack")
|
||||
.tap(
|
||||
@@ -211,7 +209,7 @@ class ImportMetaPlugin {
|
||||
.for("import.meta.webpack")
|
||||
.tap(PLUGIN_NAME, evaluateToNumber(webpackVersion));
|
||||
|
||||
/// Unknown properties ///
|
||||
// Unknown properties
|
||||
parser.hooks.unhandledExpressionMemberChain
|
||||
.for("import.meta")
|
||||
.tap(PLUGIN_NAME, (expr, members) => {
|
||||
|
||||
97
node_modules/webpack/lib/dependencies/ImportParserPlugin.js
generated
vendored
97
node_modules/webpack/lib/dependencies/ImportParserPlugin.js
generated
vendored
@@ -8,20 +8,20 @@
|
||||
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
||||
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
||||
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
||||
const { getImportAttributes } = require("../javascript/JavascriptParser");
|
||||
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
||||
const { getAttributes } = require("./HarmonyImportDependencyParserPlugin");
|
||||
const ImportContextDependency = require("./ImportContextDependency");
|
||||
const ImportDependency = require("./ImportDependency");
|
||||
const ImportEagerDependency = require("./ImportEagerDependency");
|
||||
const ImportWeakDependency = require("./ImportWeakDependency");
|
||||
|
||||
/** @typedef {import("estree").ImportExpression} ImportExpression */
|
||||
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
||||
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
||||
/** @typedef {import("../ContextModule").ContextMode} ContextMode */
|
||||
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
||||
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
||||
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
||||
/** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
|
||||
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
||||
|
||||
class ImportParserPlugin {
|
||||
@@ -85,7 +85,7 @@ class ImportParserPlugin {
|
||||
parser.state.module.addWarning(
|
||||
new CommentCompilationWarning(
|
||||
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
||||
comment.loc
|
||||
/** @type {DependencyLocation} */ (comment.loc)
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -100,11 +100,9 @@ class ImportParserPlugin {
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
} else if (importOptions.webpackIgnore) {
|
||||
// Do not instrument `import()` if `webpackIgnore` is `true`
|
||||
if (importOptions.webpackIgnore) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (importOptions.webpackChunkName !== undefined) {
|
||||
@@ -128,7 +126,7 @@ class ImportParserPlugin {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
mode = importOptions.webpackMode;
|
||||
mode = /** @type {ContextMode} */ (importOptions.webpackMode);
|
||||
}
|
||||
}
|
||||
if (importOptions.webpackPrefetch !== undefined) {
|
||||
@@ -164,7 +162,9 @@ class ImportParserPlugin {
|
||||
typeof importOptions.webpackFetchPriority === "string" &&
|
||||
["high", "low", "auto"].includes(importOptions.webpackFetchPriority)
|
||||
) {
|
||||
groupOptions.fetchPriority = importOptions.webpackFetchPriority;
|
||||
groupOptions.fetchPriority =
|
||||
/** @type {"low" | "high" | "auto"} */
|
||||
(importOptions.webpackFetchPriority);
|
||||
} else {
|
||||
parser.state.module.addWarning(
|
||||
new UnsupportedFeatureWarning(
|
||||
@@ -220,12 +220,10 @@ class ImportParserPlugin {
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
} else if (typeof importOptions.webpackExports === "string") {
|
||||
exports = [[importOptions.webpackExports]];
|
||||
} else {
|
||||
if (typeof importOptions.webpackExports === "string") {
|
||||
exports = [[importOptions.webpackExports]];
|
||||
} else {
|
||||
exports = exportsFromEnumerable(importOptions.webpackExports);
|
||||
}
|
||||
exports = exportsFromEnumerable(importOptions.webpackExports);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,7 +249,7 @@ class ImportParserPlugin {
|
||||
if (exports) {
|
||||
parser.state.module.addWarning(
|
||||
new UnsupportedFeatureWarning(
|
||||
`\`webpackExports\` could not be used with destructuring assignment.`,
|
||||
"`webpackExports` could not be used with destructuring assignment.",
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
@@ -262,7 +260,7 @@ class ImportParserPlugin {
|
||||
}
|
||||
|
||||
if (param.isString()) {
|
||||
const attributes = getAttributes(expr);
|
||||
const attributes = getImportAttributes(expr);
|
||||
|
||||
if (mode === "eager") {
|
||||
const dep = new ImportEagerDependency(
|
||||
@@ -296,45 +294,44 @@ class ImportParserPlugin {
|
||||
attributes
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
depBlock.addDependency(dep);
|
||||
parser.state.current.addBlock(depBlock);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
if (mode === "weak") {
|
||||
mode = "async-weak";
|
||||
}
|
||||
const dep = ContextDependencyHelpers.create(
|
||||
ImportContextDependency,
|
||||
/** @type {Range} */ (expr.range),
|
||||
param,
|
||||
expr,
|
||||
this.options,
|
||||
{
|
||||
chunkName,
|
||||
groupOptions,
|
||||
include,
|
||||
exclude,
|
||||
mode,
|
||||
namespaceObject: /** @type {BuildMeta} */ (
|
||||
parser.state.module.buildMeta
|
||||
).strictHarmonyModule
|
||||
? "strict"
|
||||
: true,
|
||||
typePrefix: "import()",
|
||||
category: "esm",
|
||||
referencedExports: exports,
|
||||
attributes: getAttributes(expr)
|
||||
},
|
||||
parser
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
if (mode === "weak") {
|
||||
mode = "async-weak";
|
||||
}
|
||||
const dep = ContextDependencyHelpers.create(
|
||||
ImportContextDependency,
|
||||
/** @type {Range} */ (expr.range),
|
||||
param,
|
||||
expr,
|
||||
this.options,
|
||||
{
|
||||
chunkName,
|
||||
groupOptions,
|
||||
include,
|
||||
exclude,
|
||||
mode,
|
||||
namespaceObject: /** @type {BuildMeta} */ (
|
||||
parser.state.module.buildMeta
|
||||
).strictHarmonyModule
|
||||
? "strict"
|
||||
: true,
|
||||
typePrefix: "import()",
|
||||
category: "esm",
|
||||
referencedExports: exports,
|
||||
attributes: getImportAttributes(expr)
|
||||
},
|
||||
parser
|
||||
);
|
||||
if (!dep) return;
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
40
node_modules/webpack/lib/dependencies/JsonExportsDependency.js
generated
vendored
40
node_modules/webpack/lib/dependencies/JsonExportsDependency.js
generated
vendored
@@ -14,33 +14,35 @@ const NullDependency = require("./NullDependency");
|
||||
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||
/** @typedef {import("../json/JsonData")} JsonData */
|
||||
/** @typedef {import("../json/JsonData").RawJsonData} RawJsonData */
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
||||
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
|
||||
/**
|
||||
* @param {RawJsonData} data data
|
||||
* @returns {TODO} value
|
||||
*/
|
||||
const getExportsFromData = data => {
|
||||
if (data && typeof data === "object") {
|
||||
if (Array.isArray(data)) {
|
||||
return data.length < 100
|
||||
? data.map((item, idx) => {
|
||||
return {
|
||||
name: `${idx}`,
|
||||
canMangle: true,
|
||||
exports: getExportsFromData(item)
|
||||
};
|
||||
})
|
||||
? data.map((item, idx) => ({
|
||||
name: `${idx}`,
|
||||
canMangle: true,
|
||||
exports: getExportsFromData(item)
|
||||
}))
|
||||
: undefined;
|
||||
} else {
|
||||
const exports = [];
|
||||
for (const key of Object.keys(data)) {
|
||||
exports.push({
|
||||
name: key,
|
||||
canMangle: true,
|
||||
exports: getExportsFromData(data[key])
|
||||
});
|
||||
}
|
||||
return exports;
|
||||
}
|
||||
const exports = [];
|
||||
for (const key of Object.keys(data)) {
|
||||
exports.push({
|
||||
name: key,
|
||||
canMangle: true,
|
||||
exports: getExportsFromData(data[key])
|
||||
});
|
||||
}
|
||||
return exports;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
@@ -65,7 +67,9 @@ class JsonExportsDependency extends NullDependency {
|
||||
*/
|
||||
getExports(moduleGraph) {
|
||||
return {
|
||||
exports: getExportsFromData(this.data && this.data.get()),
|
||||
exports: getExportsFromData(
|
||||
this.data && /** @type {RawJsonData} */ (this.data.get())
|
||||
),
|
||||
dependencies: undefined
|
||||
};
|
||||
}
|
||||
|
||||
102
node_modules/webpack/lib/dependencies/LoaderPlugin.js
generated
vendored
102
node_modules/webpack/lib/dependencies/LoaderPlugin.js
generated
vendored
@@ -10,17 +10,12 @@ const LazySet = require("../util/LazySet");
|
||||
const LoaderDependency = require("./LoaderDependency");
|
||||
const LoaderImportDependency = require("./LoaderImportDependency");
|
||||
|
||||
/** @typedef {import("../../declarations/LoaderContext").LoaderPluginLoaderContext} LoaderPluginLoaderContext */
|
||||
/** @typedef {import("../Compilation").DepConstructor} DepConstructor */
|
||||
/** @typedef {import("../Compilation").ExecuteModuleResult} ExecuteModuleResult */
|
||||
/** @typedef {import("../Compiler")} Compiler */
|
||||
/** @typedef {import("../Module")} Module */
|
||||
|
||||
/**
|
||||
* @callback LoadModuleCallback
|
||||
* @param {(Error | null)=} err error object
|
||||
* @param {string | Buffer=} source source code
|
||||
* @param {object=} map source map
|
||||
* @param {Module=} module loaded module if successful
|
||||
*/
|
||||
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
||||
|
||||
/**
|
||||
* @callback ImportModuleCallback
|
||||
@@ -66,11 +61,6 @@ class LoaderPlugin {
|
||||
NormalModule.getCompilationHooks(compilation).loader.tap(
|
||||
"LoaderPlugin",
|
||||
loaderContext => {
|
||||
/**
|
||||
* @param {string} request the request string to load the module from
|
||||
* @param {LoadModuleCallback} callback callback returning the loaded module or error
|
||||
* @returns {void}
|
||||
*/
|
||||
loaderContext.loadModule = (request, callback) => {
|
||||
const dep = new LoaderDependency(request);
|
||||
dep.loc = {
|
||||
@@ -86,16 +76,26 @@ class LoaderPlugin {
|
||||
)
|
||||
);
|
||||
}
|
||||
const oldFactorizeQueueContext =
|
||||
compilation.factorizeQueue.getContext();
|
||||
compilation.factorizeQueue.setContext("load-module");
|
||||
const oldAddModuleQueueContext =
|
||||
compilation.addModuleQueue.getContext();
|
||||
compilation.addModuleQueue.setContext("load-module");
|
||||
compilation.buildQueue.increaseParallelism();
|
||||
compilation.handleModuleCreation(
|
||||
{
|
||||
factory,
|
||||
dependencies: [dep],
|
||||
originModule: loaderContext._module,
|
||||
originModule:
|
||||
/** @type {NormalModule} */
|
||||
(loaderContext._module),
|
||||
context: loaderContext.context,
|
||||
recursive: false
|
||||
},
|
||||
err => {
|
||||
compilation.factorizeQueue.setContext(oldFactorizeQueueContext);
|
||||
compilation.addModuleQueue.setContext(oldAddModuleQueueContext);
|
||||
compilation.buildQueue.decreaseParallelism();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
@@ -117,7 +117,8 @@ class LoaderPlugin {
|
||||
)
|
||||
);
|
||||
}
|
||||
let source, map;
|
||||
let map;
|
||||
let source;
|
||||
if (moduleSource.sourceAndMap) {
|
||||
const sourceAndMap = moduleSource.sourceAndMap();
|
||||
map = sourceAndMap.map;
|
||||
@@ -149,15 +150,20 @@ class LoaderPlugin {
|
||||
for (const d of buildDependencies) {
|
||||
loaderContext.addBuildDependency(d);
|
||||
}
|
||||
return callback(null, source, map, referencedModule);
|
||||
return callback(
|
||||
null,
|
||||
source,
|
||||
/** @type {object | null} */ (map),
|
||||
referencedModule
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} request the request string to load the module from
|
||||
* @param {ImportModuleOptions=} options options
|
||||
* @param {ImportModuleCallback=} callback callback returning the exports
|
||||
* @param {ImportModuleOptions} options options
|
||||
* @param {ImportModuleCallback} callback callback returning the exports
|
||||
* @returns {void}
|
||||
*/
|
||||
const importModule = (request, options, callback) => {
|
||||
@@ -175,12 +181,21 @@ class LoaderPlugin {
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
const oldFactorizeQueueContext =
|
||||
compilation.factorizeQueue.getContext();
|
||||
compilation.factorizeQueue.setContext("import-module");
|
||||
const oldAddModuleQueueContext =
|
||||
compilation.addModuleQueue.getContext();
|
||||
compilation.addModuleQueue.setContext("import-module");
|
||||
compilation.buildQueue.increaseParallelism();
|
||||
compilation.handleModuleCreation(
|
||||
{
|
||||
factory,
|
||||
dependencies: [dep],
|
||||
originModule: loaderContext._module,
|
||||
originModule:
|
||||
/** @type {NormalModule} */
|
||||
(loaderContext._module),
|
||||
contextInfo: {
|
||||
issuerLayer: options.layer
|
||||
},
|
||||
@@ -189,6 +204,8 @@ class LoaderPlugin {
|
||||
checkCycle: true
|
||||
},
|
||||
err => {
|
||||
compilation.factorizeQueue.setContext(oldFactorizeQueueContext);
|
||||
compilation.addModuleQueue.setContext(oldAddModuleQueueContext);
|
||||
compilation.buildQueue.decreaseParallelism();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
@@ -197,6 +214,7 @@ class LoaderPlugin {
|
||||
if (!referencedModule) {
|
||||
return callback(new Error("Cannot load the module"));
|
||||
}
|
||||
compilation.buildQueue.increaseParallelism();
|
||||
compilation.executeModule(
|
||||
referencedModule,
|
||||
{
|
||||
@@ -206,43 +224,55 @@ class LoaderPlugin {
|
||||
}
|
||||
},
|
||||
(err, result) => {
|
||||
compilation.buildQueue.decreaseParallelism();
|
||||
if (err) return callback(err);
|
||||
for (const d of result.fileDependencies) {
|
||||
const {
|
||||
fileDependencies,
|
||||
contextDependencies,
|
||||
missingDependencies,
|
||||
buildDependencies,
|
||||
cacheable,
|
||||
assets,
|
||||
exports
|
||||
} = /** @type {ExecuteModuleResult} */ (result);
|
||||
for (const d of fileDependencies) {
|
||||
loaderContext.addDependency(d);
|
||||
}
|
||||
for (const d of result.contextDependencies) {
|
||||
for (const d of contextDependencies) {
|
||||
loaderContext.addContextDependency(d);
|
||||
}
|
||||
for (const d of result.missingDependencies) {
|
||||
for (const d of missingDependencies) {
|
||||
loaderContext.addMissingDependency(d);
|
||||
}
|
||||
for (const d of result.buildDependencies) {
|
||||
for (const d of buildDependencies) {
|
||||
loaderContext.addBuildDependency(d);
|
||||
}
|
||||
if (result.cacheable === false)
|
||||
loaderContext.cacheable(false);
|
||||
for (const [name, { source, info }] of result.assets) {
|
||||
const { buildInfo } = loaderContext._module;
|
||||
if (cacheable === false) loaderContext.cacheable(false);
|
||||
for (const [name, { source, info }] of assets) {
|
||||
const buildInfo =
|
||||
/** @type {BuildInfo} */
|
||||
(
|
||||
/** @type {NormalModule} */ (loaderContext._module)
|
||||
.buildInfo
|
||||
);
|
||||
if (!buildInfo.assets) {
|
||||
buildInfo.assets = Object.create(null);
|
||||
buildInfo.assetsInfo = new Map();
|
||||
}
|
||||
buildInfo.assets[name] = source;
|
||||
buildInfo.assetsInfo.set(name, info);
|
||||
/** @type {NonNullable<BuildInfo["assets"]>} */
|
||||
(buildInfo.assets)[name] = source;
|
||||
/** @type {NonNullable<BuildInfo["assetsInfo"]>} */
|
||||
(buildInfo.assetsInfo).set(name, info);
|
||||
}
|
||||
callback(null, result.exports);
|
||||
callback(null, exports);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} request the request string to load the module from
|
||||
* @param {ImportModuleOptions} options options
|
||||
* @param {ImportModuleCallback=} callback callback returning the exports
|
||||
* @returns {Promise<any> | void} exports
|
||||
*/
|
||||
// eslint-disable-next-line no-warning-comments
|
||||
// @ts-ignore Overloading doesn't work
|
||||
loaderContext.importModule = (request, options, callback) => {
|
||||
if (!callback) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/LocalModule.js
generated
vendored
2
node_modules/webpack/lib/dependencies/LocalModule.js
generated
vendored
@@ -29,7 +29,7 @@ class LocalModule {
|
||||
* @returns {string} variable name
|
||||
*/
|
||||
variableName() {
|
||||
return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
|
||||
return `__WEBPACK_LOCAL_MODULE_${this.idx}__`;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
8
node_modules/webpack/lib/dependencies/LocalModulesHelpers.js
generated
vendored
8
node_modules/webpack/lib/dependencies/LocalModulesHelpers.js
generated
vendored
@@ -17,8 +17,8 @@ const LocalModule = require("./LocalModule");
|
||||
const lookup = (parent, mod) => {
|
||||
if (mod.charAt(0) !== ".") return mod;
|
||||
|
||||
var path = parent.split("/");
|
||||
var segments = mod.split("/");
|
||||
const path = parent.split("/");
|
||||
const segments = mod.split("/");
|
||||
path.pop();
|
||||
|
||||
for (let i = 0; i < segments.length; i++) {
|
||||
@@ -38,7 +38,7 @@ const lookup = (parent, mod) => {
|
||||
* @param {string} name name
|
||||
* @returns {LocalModule} local module
|
||||
*/
|
||||
exports.addLocalModule = (state, name) => {
|
||||
module.exports.addLocalModule = (state, name) => {
|
||||
if (!state.localModules) {
|
||||
state.localModules = [];
|
||||
}
|
||||
@@ -53,7 +53,7 @@ exports.addLocalModule = (state, name) => {
|
||||
* @param {string} [namedModule] named module
|
||||
* @returns {LocalModule | null} local module or null
|
||||
*/
|
||||
exports.getLocalModule = (state, name, namedModule) => {
|
||||
module.exports.getLocalModule = (state, name, namedModule) => {
|
||||
if (!state.localModules) return null;
|
||||
if (namedModule) {
|
||||
// resolve dependency name relative to the defining named module
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/ModuleDecoratorDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/ModuleDecoratorDependency.js
generated
vendored
@@ -50,7 +50,7 @@ class ModuleDecoratorDependency extends NullDependency {
|
||||
* @returns {string | null} an identifier to merge equal requests
|
||||
*/
|
||||
getResourceIdentifier() {
|
||||
return `self`;
|
||||
return "self";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/ProvidedDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/ProvidedDependency.js
generated
vendored
@@ -64,7 +64,7 @@ class ProvidedDependency extends ModuleDependency {
|
||||
* @returns {(string[] | ReferencedExport)[]} referenced exports
|
||||
*/
|
||||
getReferencedExports(moduleGraph, runtime) {
|
||||
let ids = this.ids;
|
||||
const ids = this.ids;
|
||||
if (ids.length === 0) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
||||
return [ids];
|
||||
}
|
||||
|
||||
12
node_modules/webpack/lib/dependencies/PureExpressionDependency.js
generated
vendored
12
node_modules/webpack/lib/dependencies/PureExpressionDependency.js
generated
vendored
@@ -77,12 +77,12 @@ class PureExpressionDependency extends NullDependency {
|
||||
hash.update("null");
|
||||
} else {
|
||||
hash.update(
|
||||
runtimeToString(runtimeCondition) +
|
||||
"|" +
|
||||
runtimeToString(context.runtime)
|
||||
`${runtimeToString(runtimeCondition)}|${runtimeToString(
|
||||
context.runtime
|
||||
)}`
|
||||
);
|
||||
}
|
||||
hash.update(this.range + "");
|
||||
hash.update(String(this.range));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,11 +136,11 @@ PureExpressionDependency.Template = class PureExpressionDependencyTemplate exten
|
||||
const dep = /** @type {PureExpressionDependency} */ (dependency);
|
||||
const runtimeCondition = dep._getRuntimeCondition(moduleGraph, runtime);
|
||||
if (runtimeCondition === true) {
|
||||
return;
|
||||
// Do nothing
|
||||
} else if (runtimeCondition === false) {
|
||||
source.insert(
|
||||
dep.range[0],
|
||||
`(/* unused pure expression or super */ null && (`
|
||||
"(/* unused pure expression or super */ null && ("
|
||||
);
|
||||
source.insert(dep.range[1], "))");
|
||||
} else {
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js
generated
vendored
2
node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js
generated
vendored
@@ -56,7 +56,7 @@ module.exports = class RequireContextDependencyParserPlugin {
|
||||
/** @type {Range} */ (expr.range)
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
dep.optional = !!parser.scope.inTry;
|
||||
dep.optional = Boolean(parser.scope.inTry);
|
||||
parser.state.current.addDependency(dep);
|
||||
return true;
|
||||
}
|
||||
|
||||
2
node_modules/webpack/lib/dependencies/RuntimeRequirementsDependency.js
generated
vendored
2
node_modules/webpack/lib/dependencies/RuntimeRequirementsDependency.js
generated
vendored
@@ -36,7 +36,7 @@ class RuntimeRequirementsDependency extends NullDependency {
|
||||
*/
|
||||
updateHash(hash, context) {
|
||||
if (this._hashUpdate === undefined) {
|
||||
this._hashUpdate = Array.from(this.runtimeRequirements).join() + "";
|
||||
this._hashUpdate = `${Array.from(this.runtimeRequirements).join()}`;
|
||||
}
|
||||
hash.update(this._hashUpdate);
|
||||
}
|
||||
|
||||
5
node_modules/webpack/lib/dependencies/SystemPlugin.js
generated
vendored
5
node_modules/webpack/lib/dependencies/SystemPlugin.js
generated
vendored
@@ -73,7 +73,7 @@ class SystemPlugin {
|
||||
PLUGIN_NAME,
|
||||
expressionIsUnsupported(
|
||||
parser,
|
||||
name + " is not supported by webpack."
|
||||
`${name} is not supported by webpack.`
|
||||
)
|
||||
);
|
||||
};
|
||||
@@ -125,7 +125,8 @@ class SystemPlugin {
|
||||
/** @type {import("estree").Literal} */
|
||||
(expr.arguments[0]),
|
||||
loc: expr.loc,
|
||||
range: expr.range
|
||||
range: expr.range,
|
||||
options: null
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
6
node_modules/webpack/lib/dependencies/URLDependency.js
generated
vendored
6
node_modules/webpack/lib/dependencies/URLDependency.js
generated
vendored
@@ -30,9 +30,9 @@ const ModuleDependency = require("./ModuleDependency");
|
||||
/** @typedef {import("../util/Hash")} Hash */
|
||||
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
||||
|
||||
const getIgnoredRawDataUrlModule = memoize(() => {
|
||||
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
||||
});
|
||||
const getIgnoredRawDataUrlModule = memoize(
|
||||
() => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
|
||||
);
|
||||
|
||||
class URLDependency extends ModuleDependency {
|
||||
/**
|
||||
|
||||
84
node_modules/webpack/lib/dependencies/URLPlugin.js
generated
vendored
84
node_modules/webpack/lib/dependencies/URLPlugin.js
generated
vendored
@@ -6,15 +6,20 @@
|
||||
"use strict";
|
||||
|
||||
const { pathToFileURL } = require("url");
|
||||
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
||||
const {
|
||||
JAVASCRIPT_MODULE_TYPE_AUTO,
|
||||
JAVASCRIPT_MODULE_TYPE_ESM
|
||||
} = require("../ModuleTypeConstants");
|
||||
const RuntimeGlobals = require("../RuntimeGlobals");
|
||||
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
||||
const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
|
||||
const { approve } = require("../javascript/JavascriptParserHelpers");
|
||||
const InnerGraph = require("../optimize/InnerGraph");
|
||||
const ConstDependency = require("./ConstDependency");
|
||||
const URLDependency = require("./URLDependency");
|
||||
|
||||
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
||||
/** @typedef {import("estree").NewExpression} NewExpressionNode */
|
||||
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
||||
/** @typedef {import("../Compiler")} Compiler */
|
||||
@@ -44,8 +49,26 @@ class URLPlugin {
|
||||
* @param {NormalModule} module module
|
||||
* @returns {URL} file url
|
||||
*/
|
||||
const getUrl = module => {
|
||||
return pathToFileURL(module.resource);
|
||||
const getUrl = module => pathToFileURL(module.resource);
|
||||
|
||||
/**
|
||||
* @param {Parser} parser parser parser
|
||||
* @param {MemberExpression} arg arg
|
||||
* @returns {boolean} true when it is `meta.url`, otherwise false
|
||||
*/
|
||||
const isMetaUrl = (parser, arg) => {
|
||||
const chain = parser.extractMemberExpressionChain(arg);
|
||||
|
||||
if (
|
||||
chain.members.length !== 1 ||
|
||||
chain.object.type !== "MetaProperty" ||
|
||||
chain.object.meta.name !== "import" ||
|
||||
chain.object.property.name !== "meta" ||
|
||||
chain.members[0] !== "url"
|
||||
)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -72,16 +95,7 @@ class URLPlugin {
|
||||
)
|
||||
return;
|
||||
|
||||
const chain = parser.extractMemberExpressionChain(arg2);
|
||||
|
||||
if (
|
||||
chain.members.length !== 1 ||
|
||||
chain.object.type !== "MetaProperty" ||
|
||||
chain.object.meta.name !== "import" ||
|
||||
chain.object.property.name !== "meta" ||
|
||||
chain.members[0] !== "url"
|
||||
)
|
||||
return;
|
||||
if (!isMetaUrl(parser, arg2)) return;
|
||||
|
||||
return parser.evaluateExpression(arg1).asString();
|
||||
};
|
||||
@@ -100,6 +114,52 @@ class URLPlugin {
|
||||
});
|
||||
parser.hooks.new.for("URL").tap(PLUGIN_NAME, _expr => {
|
||||
const expr = /** @type {NewExpressionNode} */ (_expr);
|
||||
const { options: importOptions, errors: commentErrors } =
|
||||
parser.parseCommentOptions(/** @type {Range} */ (expr.range));
|
||||
|
||||
if (commentErrors) {
|
||||
for (const e of commentErrors) {
|
||||
const { comment } = e;
|
||||
parser.state.module.addWarning(
|
||||
new CommentCompilationWarning(
|
||||
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
||||
/** @type {DependencyLocation} */ (comment.loc)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (importOptions && importOptions.webpackIgnore !== undefined) {
|
||||
if (typeof importOptions.webpackIgnore !== "boolean") {
|
||||
parser.state.module.addWarning(
|
||||
new UnsupportedFeatureWarning(
|
||||
`\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
return;
|
||||
} else if (importOptions.webpackIgnore) {
|
||||
if (expr.arguments.length !== 2) return;
|
||||
|
||||
const [, arg2] = expr.arguments;
|
||||
|
||||
if (
|
||||
arg2.type !== "MemberExpression" ||
|
||||
!isMetaUrl(parser, arg2)
|
||||
)
|
||||
return;
|
||||
|
||||
const dep = new ConstDependency(
|
||||
RuntimeGlobals.baseURI,
|
||||
/** @type {Range} */ (arg2.range),
|
||||
[RuntimeGlobals.baseURI]
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
const request = getUrlRequest(expr);
|
||||
|
||||
|
||||
51
node_modules/webpack/lib/dependencies/WorkerPlugin.js
generated
vendored
51
node_modules/webpack/lib/dependencies/WorkerPlugin.js
generated
vendored
@@ -45,15 +45,14 @@ const WorkerDependency = require("./WorkerDependency");
|
||||
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
||||
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
||||
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
||||
/** @typedef {import("../util/createHash").Algorithm} Algorithm */
|
||||
/** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
|
||||
|
||||
/**
|
||||
* @param {NormalModule} module module
|
||||
* @returns {string} url
|
||||
*/
|
||||
const getUrl = module => {
|
||||
return pathToFileURL(module.resource).toString();
|
||||
};
|
||||
const getUrl = module => pathToFileURL(module.resource).toString();
|
||||
|
||||
const WorkerSpecifierTag = Symbol("worker specifier tag");
|
||||
|
||||
@@ -82,6 +81,7 @@ class WorkerPlugin {
|
||||
this._module = module;
|
||||
this._workerPublicPath = workerPublicPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the plugin
|
||||
* @param {Compiler} compiler the compiler instance
|
||||
@@ -251,14 +251,14 @@ class WorkerPlugin {
|
||||
parser.state.module.addWarning(
|
||||
new CommentCompilationWarning(
|
||||
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
||||
comment.loc
|
||||
/** @type {DependencyLocation} */ (comment.loc)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {EntryOptions} */
|
||||
let entryOptions = {};
|
||||
const entryOptions = {};
|
||||
|
||||
if (importOptions) {
|
||||
if (importOptions.webpackIgnore !== undefined) {
|
||||
@@ -269,10 +269,8 @@ class WorkerPlugin {
|
||||
/** @type {DependencyLocation} */ (expr.loc)
|
||||
)
|
||||
);
|
||||
} else {
|
||||
if (importOptions.webpackIgnore) {
|
||||
return false;
|
||||
}
|
||||
} else if (importOptions.webpackIgnore) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (importOptions.webpackEntryOptions !== undefined) {
|
||||
@@ -316,16 +314,19 @@ class WorkerPlugin {
|
||||
}
|
||||
|
||||
if (entryOptions.runtime === undefined) {
|
||||
let i = workerIndexMap.get(parser.state) || 0;
|
||||
const i = workerIndexMap.get(parser.state) || 0;
|
||||
workerIndexMap.set(parser.state, i + 1);
|
||||
let name = `${cachedContextify(
|
||||
const name = `${cachedContextify(
|
||||
parser.state.module.identifier()
|
||||
)}|${i}`;
|
||||
const hash = createHash(compilation.outputOptions.hashFunction);
|
||||
hash.update(name);
|
||||
const digest = /** @type {string} */ (
|
||||
hash.digest(compilation.outputOptions.hashDigest)
|
||||
const hash = createHash(
|
||||
/** @type {Algorithm} */
|
||||
(compilation.outputOptions.hashFunction)
|
||||
);
|
||||
hash.update(name);
|
||||
const digest =
|
||||
/** @type {string} */
|
||||
(hash.digest(compilation.outputOptions.hashDigest));
|
||||
entryOptions.runtime = digest.slice(
|
||||
0,
|
||||
compilation.outputOptions.hashDigestLength
|
||||
@@ -394,15 +395,13 @@ class WorkerPlugin {
|
||||
dep2.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep1);
|
||||
parser.state.module.addPresentationalDependency(dep2);
|
||||
} else if (insertType === "argument") {
|
||||
if (this._module) {
|
||||
const dep = new ConstDependency(
|
||||
', { type: "module" }',
|
||||
insertLocation
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
}
|
||||
} else if (insertType === "argument" && this._module) {
|
||||
const dep = new ConstDependency(
|
||||
', { type: "module" }',
|
||||
insertLocation
|
||||
);
|
||||
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
||||
parser.state.module.addPresentationalDependency(dep);
|
||||
}
|
||||
|
||||
parser.walkExpression(expr.callee);
|
||||
@@ -482,7 +481,9 @@ class WorkerPlugin {
|
||||
};
|
||||
for (const item of options) {
|
||||
if (item === "...") {
|
||||
DEFAULT_SYNTAX.forEach(processItem);
|
||||
for (const itemFromDefault of DEFAULT_SYNTAX) {
|
||||
processItem(itemFromDefault);
|
||||
}
|
||||
} else processItem(item);
|
||||
}
|
||||
};
|
||||
|
||||
4
node_modules/webpack/lib/dependencies/processExportInfo.js
generated
vendored
4
node_modules/webpack/lib/dependencies/processExportInfo.js
generated
vendored
@@ -10,9 +10,11 @@ const { UsageState } = require("../ExportsInfo");
|
||||
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
||||
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
||||
|
||||
/** @typedef {string[][]} ReferencedExports */
|
||||
|
||||
/**
|
||||
* @param {RuntimeSpec} runtime the runtime
|
||||
* @param {string[][]} referencedExports list of referenced exports, will be added to
|
||||
* @param {ReferencedExports} referencedExports list of referenced exports, will be added to
|
||||
* @param {string[]} prefix export prefix
|
||||
* @param {ExportInfo=} exportInfo the export info
|
||||
* @param {boolean} defaultPointsToSelf when true, using default will reference itself
|
||||
|
||||
Reference in New Issue
Block a user