webpack 5.83.1 → 5.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +2 -2
- package/lib/CompatibilityPlugin.js +3 -2
- package/lib/Compilation.js +2 -2
- package/lib/ContextModule.js +3 -3
- package/lib/DefinePlugin.js +11 -2
- package/lib/DllEntryPlugin.js +5 -0
- package/lib/DllModule.js +1 -1
- package/lib/EvalSourceMapDevToolPlugin.js +3 -1
- package/lib/MainTemplate.js +2 -2
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/RuntimeTemplate.js +5 -5
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolPlugin.js +9 -2
- package/lib/Template.js +2 -1
- package/lib/config/browserslistTargetHandler.js +3 -3
- package/lib/config/defaults.js +209 -70
- package/lib/config/normalization.js +103 -71
- package/lib/config/target.js +37 -10
- package/lib/container/FallbackModule.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +1 -1
- package/lib/css/CssParser.js +168 -73
- package/lib/debug/ProfilingPlugin.js +11 -0
- package/lib/dependencies/AMDDefineDependency.js +12 -6
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
- package/lib/dependencies/AMDPlugin.js +7 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
- package/lib/dependencies/AMDRequireContextDependency.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +8 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/CachedConstDependency.js +6 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
- package/lib/dependencies/CommonJsExportsDependency.js +8 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
- package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
- package/lib/dependencies/CommonJsPlugin.js +14 -0
- package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
- package/lib/dependencies/ConstDependency.js +2 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssImportDependency.js +2 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +12 -2
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +11 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyImportDependency.js +2 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +11 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
- package/lib/dependencies/ImportContextDependency.js +6 -0
- package/lib/dependencies/ImportDependency.js +2 -1
- package/lib/dependencies/ImportEagerDependency.js +2 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +5 -0
- package/lib/dependencies/ImportPlugin.js +7 -0
- package/lib/dependencies/ImportWeakDependency.js +2 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +7 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +2 -1
- package/lib/dependencies/PureExpressionDependency.js +2 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextPlugin.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
- package/lib/dependencies/RequireEnsureDependency.js +8 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +14 -0
- package/lib/dependencies/RequireHeaderDependency.js +5 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireIncludePlugin.js +14 -0
- package/lib/dependencies/RequireResolveContextDependency.js +8 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
- package/lib/dependencies/SystemPlugin.js +10 -1
- package/lib/dependencies/URLDependency.js +3 -2
- package/lib/dependencies/URLPlugin.js +7 -5
- package/lib/dependencies/UnsupportedDependency.js +5 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +2 -1
- package/lib/dependencies/WorkerPlugin.js +5 -2
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +2 -2
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -2
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/JavascriptModulesPlugin.js +13 -13
- package/lib/javascript/JavascriptParser.js +540 -180
- package/lib/javascript/StartupHelpers.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/optimize/ConcatenatedModule.js +1 -1
- package/lib/optimize/InnerGraphPlugin.js +11 -4
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -5
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +21 -0
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +20 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/sharing/ShareRuntimeModule.js +1 -1
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/serialization.js +10 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +5 -1
- package/package.json +3 -3
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/types.d.ts +469 -149
@@ -25,11 +25,18 @@ const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyPa
|
|
25
25
|
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
|
26
26
|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
27
27
|
|
28
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
28
29
|
/** @typedef {import("../Compiler")} Compiler */
|
30
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
29
31
|
|
30
32
|
const PLUGIN_NAME = "HarmonyModulesPlugin";
|
31
33
|
|
34
|
+
/** @typedef {{ topLevelAwait?: boolean }} HarmonyModulesPluginOptions */
|
35
|
+
|
32
36
|
class HarmonyModulesPlugin {
|
37
|
+
/**
|
38
|
+
* @param {HarmonyModulesPluginOptions} options options
|
39
|
+
*/
|
33
40
|
constructor(options) {
|
34
41
|
this.options = options;
|
35
42
|
}
|
@@ -113,6 +120,11 @@ class HarmonyModulesPlugin {
|
|
113
120
|
new HarmonyAcceptImportDependency.Template()
|
114
121
|
);
|
115
122
|
|
123
|
+
/**
|
124
|
+
* @param {Parser} parser parser parser
|
125
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
126
|
+
* @returns {void}
|
127
|
+
*/
|
116
128
|
const handler = (parser, parserOptions) => {
|
117
129
|
// TODO webpack 6: rename harmony to esm or module
|
118
130
|
if (parserOptions.harmony !== undefined && !parserOptions.harmony)
|
@@ -9,10 +9,16 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
10
10
|
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
12
13
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
13
14
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
14
15
|
|
15
16
|
class ImportContextDependency extends ContextDependency {
|
17
|
+
/**
|
18
|
+
* @param {TODO} options options
|
19
|
+
* @param {Range} range range
|
20
|
+
* @param {Range} valueRange value range
|
21
|
+
*/
|
16
22
|
constructor(options, range, valueRange) {
|
17
23
|
super(options);
|
18
24
|
|
@@ -14,6 +14,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
17
18
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
18
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
19
20
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
@@ -21,7 +22,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
21
22
|
class ImportDependency extends ModuleDependency {
|
22
23
|
/**
|
23
24
|
* @param {string} request the request
|
24
|
-
* @param {
|
25
|
+
* @param {Range} range expression range
|
25
26
|
* @param {string[][]=} referencedExports list of referenced exports
|
26
27
|
*/
|
27
28
|
constructor(request, range, referencedExports) {
|
@@ -13,11 +13,12 @@ const ImportDependency = require("./ImportDependency");
|
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
16
17
|
|
17
18
|
class ImportEagerDependency extends ImportDependency {
|
18
19
|
/**
|
19
20
|
* @param {string} request the request
|
20
|
-
* @param {
|
21
|
+
* @param {Range} range expression range
|
21
22
|
* @param {string[][]=} referencedExports list of referenced exports
|
22
23
|
*/
|
23
24
|
constructor(request, range, referencedExports) {
|
@@ -11,13 +11,20 @@ const {
|
|
11
11
|
} = require("../javascript/JavascriptParserHelpers");
|
12
12
|
const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
13
13
|
|
14
|
-
/** @typedef {import("estree").Expression}
|
15
|
-
/** @typedef {import("estree").ObjectExpression}
|
14
|
+
/** @typedef {import("estree").Expression} Expression */
|
15
|
+
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
16
|
+
/** @typedef {import("estree").Property} Property */
|
17
|
+
/** @typedef {import("estree").SourceLocation} SourceLocation */
|
16
18
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
17
19
|
/** @typedef {import("../ContextModule").ContextModuleOptions} ContextModuleOptions */
|
18
20
|
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
19
21
|
/** @typedef {Pick<ContextModuleOptions, 'mode'|'recursive'|'regExp'|'include'|'exclude'|'chunkName'>&{groupOptions: RawChunkGroupOptions, exports?: ContextModuleOptions["referencedExports"]}} ImportMetaContextOptions */
|
20
22
|
|
23
|
+
/**
|
24
|
+
* @param {TODO} prop property
|
25
|
+
* @param {string} expect except message
|
26
|
+
* @returns {WebpackError} error
|
27
|
+
*/
|
21
28
|
function createPropertyParseError(prop, expect) {
|
22
29
|
return createError(
|
23
30
|
`Parsing import.meta.webpackContext options failed. Unknown value for property ${JSON.stringify(
|
@@ -27,6 +34,11 @@ function createPropertyParseError(prop, expect) {
|
|
27
34
|
);
|
28
35
|
}
|
29
36
|
|
37
|
+
/**
|
38
|
+
* @param {string} msg message
|
39
|
+
* @param {SourceLocation} loc location
|
40
|
+
* @returns {WebpackError} error
|
41
|
+
*/
|
30
42
|
function createError(msg, loc) {
|
31
43
|
const error = new WebpackError(msg);
|
32
44
|
error.name = "ImportMetaContextError";
|
@@ -35,6 +47,10 @@ function createError(msg, loc) {
|
|
35
47
|
}
|
36
48
|
|
37
49
|
module.exports = class ImportMetaContextDependencyParserPlugin {
|
50
|
+
/**
|
51
|
+
* @param {JavascriptParser} parser the parser
|
52
|
+
* @returns {void}
|
53
|
+
*/
|
38
54
|
apply(parser) {
|
39
55
|
parser.hooks.evaluateIdentifier
|
40
56
|
.for("import.meta.webpackContext")
|
@@ -52,7 +68,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
52
68
|
if (expr.arguments.length < 1 || expr.arguments.length > 2) return;
|
53
69
|
const [directoryNode, optionsNode] = expr.arguments;
|
54
70
|
if (optionsNode && optionsNode.type !== "ObjectExpression") return;
|
55
|
-
const requestExpr = parser.evaluateExpression(
|
71
|
+
const requestExpr = parser.evaluateExpression(
|
72
|
+
/** @type {Expression} */ (directoryNode)
|
73
|
+
);
|
56
74
|
if (!requestExpr.isString()) return;
|
57
75
|
const request = requestExpr.string;
|
58
76
|
const errors = [];
|
@@ -71,7 +89,8 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
71
89
|
/** @type {ContextModuleOptions["referencedExports"]} */
|
72
90
|
let exports;
|
73
91
|
if (optionsNode) {
|
74
|
-
for (const prop of optionsNode
|
92
|
+
for (const prop of /** @type {ObjectExpression} */ (optionsNode)
|
93
|
+
.properties) {
|
75
94
|
if (prop.type !== "Property" || prop.key.type !== "Identifier") {
|
76
95
|
errors.push(
|
77
96
|
createError(
|
@@ -84,7 +103,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
84
103
|
switch (prop.key.name) {
|
85
104
|
case "regExp": {
|
86
105
|
const regExpExpr = parser.evaluateExpression(
|
87
|
-
/** @type {
|
106
|
+
/** @type {Expression} */ (prop.value)
|
88
107
|
);
|
89
108
|
if (!regExpExpr.isRegExp()) {
|
90
109
|
errors.push(createPropertyParseError(prop, "RegExp"));
|
@@ -95,7 +114,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
95
114
|
}
|
96
115
|
case "include": {
|
97
116
|
const regExpExpr = parser.evaluateExpression(
|
98
|
-
/** @type {
|
117
|
+
/** @type {Expression} */ (prop.value)
|
99
118
|
);
|
100
119
|
if (!regExpExpr.isRegExp()) {
|
101
120
|
errors.push(createPropertyParseError(prop, "RegExp"));
|
@@ -106,7 +125,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
106
125
|
}
|
107
126
|
case "exclude": {
|
108
127
|
const regExpExpr = parser.evaluateExpression(
|
109
|
-
/** @type {
|
128
|
+
/** @type {Expression} */ (prop.value)
|
110
129
|
);
|
111
130
|
if (!regExpExpr.isRegExp()) {
|
112
131
|
errors.push(createPropertyParseError(prop, "RegExp"));
|
@@ -117,7 +136,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
117
136
|
}
|
118
137
|
case "mode": {
|
119
138
|
const modeExpr = parser.evaluateExpression(
|
120
|
-
/** @type {
|
139
|
+
/** @type {Expression} */ (prop.value)
|
121
140
|
);
|
122
141
|
if (!modeExpr.isString()) {
|
123
142
|
errors.push(createPropertyParseError(prop, "string"));
|
@@ -130,7 +149,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
130
149
|
}
|
131
150
|
case "chunkName": {
|
132
151
|
const expr = parser.evaluateExpression(
|
133
|
-
/** @type {
|
152
|
+
/** @type {Expression} */ (prop.value)
|
134
153
|
);
|
135
154
|
if (!expr.isString()) {
|
136
155
|
errors.push(createPropertyParseError(prop, "string"));
|
@@ -141,7 +160,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
141
160
|
}
|
142
161
|
case "exports": {
|
143
162
|
const expr = parser.evaluateExpression(
|
144
|
-
/** @type {
|
163
|
+
/** @type {Expression} */ (prop.value)
|
145
164
|
);
|
146
165
|
if (expr.isString()) {
|
147
166
|
exports = [[expr.string]];
|
@@ -176,7 +195,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
176
195
|
}
|
177
196
|
case "prefetch": {
|
178
197
|
const expr = parser.evaluateExpression(
|
179
|
-
/** @type {
|
198
|
+
/** @type {Expression} */ (prop.value)
|
180
199
|
);
|
181
200
|
if (expr.isBoolean()) {
|
182
201
|
groupOptions.prefetchOrder = 0;
|
@@ -189,7 +208,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
189
208
|
}
|
190
209
|
case "preload": {
|
191
210
|
const expr = parser.evaluateExpression(
|
192
|
-
/** @type {
|
211
|
+
/** @type {Expression} */ (prop.value)
|
193
212
|
);
|
194
213
|
if (expr.isBoolean()) {
|
195
214
|
groupOptions.preloadOrder = 0;
|
@@ -202,7 +221,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
202
221
|
}
|
203
222
|
case "recursive": {
|
204
223
|
const recursiveExpr = parser.evaluateExpression(
|
205
|
-
/** @type {
|
224
|
+
/** @type {Expression} */ (prop.value)
|
206
225
|
);
|
207
226
|
if (!recursiveExpr.isBoolean()) {
|
208
227
|
errors.push(createPropertyParseError(prop, "boolean"));
|
@@ -13,8 +13,10 @@ const ContextElementDependency = require("./ContextElementDependency");
|
|
13
13
|
const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
14
14
|
const ImportMetaContextDependencyParserPlugin = require("./ImportMetaContextDependencyParserPlugin");
|
15
15
|
|
16
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
16
17
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
17
18
|
/** @typedef {import("../Compiler")} Compiler */
|
19
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
18
20
|
|
19
21
|
const PLUGIN_NAME = "ImportMetaContextPlugin";
|
20
22
|
|
@@ -41,6 +43,11 @@ class ImportMetaContextPlugin {
|
|
41
43
|
normalModuleFactory
|
42
44
|
);
|
43
45
|
|
46
|
+
/**
|
47
|
+
* @param {Parser} parser parser parser
|
48
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
49
|
+
* @returns {void}
|
50
|
+
*/
|
44
51
|
const handler = (parser, parserOptions) => {
|
45
52
|
if (
|
46
53
|
parserOptions.importMetaContext !== undefined &&
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ImportMetaHotAcceptDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
this.range = range;
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ImportMetaHotDeclineDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
|
@@ -17,6 +17,7 @@ const ImportWeakDependency = require("./ImportWeakDependency");
|
|
17
17
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
18
18
|
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
19
19
|
/** @typedef {import("../ContextModule").ContextMode} ContextMode */
|
20
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
20
21
|
|
21
22
|
class ImportParserPlugin {
|
22
23
|
/**
|
@@ -26,6 +27,10 @@ class ImportParserPlugin {
|
|
26
27
|
this.options = options;
|
27
28
|
}
|
28
29
|
|
30
|
+
/**
|
31
|
+
* @param {JavascriptParser} parser the parser
|
32
|
+
* @returns {void}
|
33
|
+
*/
|
29
34
|
apply(parser) {
|
30
35
|
const exportsFromEnumerable = enumerable =>
|
31
36
|
Array.from(enumerable, e => [e]);
|
@@ -16,7 +16,9 @@ const ImportEagerDependency = require("./ImportEagerDependency");
|
|
16
16
|
const ImportParserPlugin = require("./ImportParserPlugin");
|
17
17
|
const ImportWeakDependency = require("./ImportWeakDependency");
|
18
18
|
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
19
20
|
/** @typedef {import("../Compiler")} Compiler */
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
20
22
|
|
21
23
|
const PLUGIN_NAME = "ImportPlugin";
|
22
24
|
|
@@ -66,6 +68,11 @@ class ImportPlugin {
|
|
66
68
|
new ImportContextDependency.Template()
|
67
69
|
);
|
68
70
|
|
71
|
+
/**
|
72
|
+
* @param {Parser} parser parser parser
|
73
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
74
|
+
* @returns {void}
|
75
|
+
*/
|
69
76
|
const handler = (parser, parserOptions) => {
|
70
77
|
if (parserOptions.import !== undefined && !parserOptions.import)
|
71
78
|
return;
|
@@ -13,11 +13,12 @@ const ImportDependency = require("./ImportDependency");
|
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
16
17
|
|
17
18
|
class ImportWeakDependency extends ImportDependency {
|
18
19
|
/**
|
19
20
|
* @param {string} request the request
|
20
|
-
* @param {
|
21
|
+
* @param {Range} range expression range
|
21
22
|
* @param {string[][]=} referencedExports list of referenced exports
|
22
23
|
*/
|
23
24
|
constructor(request, range, referencedExports) {
|
@@ -7,7 +7,14 @@
|
|
7
7
|
|
8
8
|
const makeSerializable = require("../util/makeSerializable");
|
9
9
|
|
10
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
12
|
+
|
10
13
|
class LocalModule {
|
14
|
+
/**
|
15
|
+
* @param {string} name name
|
16
|
+
* @param {number} idx index
|
17
|
+
*/
|
11
18
|
constructor(name, idx) {
|
12
19
|
this.name = name;
|
13
20
|
this.idx = idx;
|
@@ -18,10 +25,16 @@ class LocalModule {
|
|
18
25
|
this.used = true;
|
19
26
|
}
|
20
27
|
|
28
|
+
/**
|
29
|
+
* @returns {string} variable name
|
30
|
+
*/
|
21
31
|
variableName() {
|
22
32
|
return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
|
23
33
|
}
|
24
34
|
|
35
|
+
/**
|
36
|
+
* @param {ObjectSerializerContext} context context
|
37
|
+
*/
|
25
38
|
serialize(context) {
|
26
39
|
const { write } = context;
|
27
40
|
|
@@ -30,6 +43,9 @@ class LocalModule {
|
|
30
43
|
write(this.used);
|
31
44
|
}
|
32
45
|
|
46
|
+
/**
|
47
|
+
* @param {ObjectDeserializerContext} context context
|
48
|
+
*/
|
33
49
|
deserialize(context) {
|
34
50
|
const { read } = context;
|
35
51
|
|
@@ -11,10 +11,17 @@ const NullDependency = require("./NullDependency");
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
14
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
14
15
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
15
16
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
17
|
+
/** @typedef {import("./LocalModule")} LocalModule */
|
16
18
|
|
17
19
|
class LocalModuleDependency extends NullDependency {
|
20
|
+
/**
|
21
|
+
* @param {LocalModule} localModule local module
|
22
|
+
* @param {Range} range range
|
23
|
+
* @param {boolean} callNew true, when the local module should be called with new
|
24
|
+
*/
|
18
25
|
constructor(localModule, range, callNew) {
|
19
26
|
super();
|
20
27
|
|
@@ -7,6 +7,13 @@
|
|
7
7
|
|
8
8
|
const LocalModule = require("./LocalModule");
|
9
9
|
|
10
|
+
/** @typedef {import("../javascript/JavascriptParser").ParserState} ParserState */
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @param {string} parent parent module
|
14
|
+
* @param {string} mod module to resolve
|
15
|
+
* @returns {string} resolved module
|
16
|
+
*/
|
10
17
|
const lookup = (parent, mod) => {
|
11
18
|
if (mod.charAt(0) !== ".") return mod;
|
12
19
|
|
@@ -26,6 +33,11 @@ const lookup = (parent, mod) => {
|
|
26
33
|
return path.join("/");
|
27
34
|
};
|
28
35
|
|
36
|
+
/**
|
37
|
+
* @param {ParserState} state parser state
|
38
|
+
* @param {string} name name
|
39
|
+
* @returns {LocalModule} local module
|
40
|
+
*/
|
29
41
|
exports.addLocalModule = (state, name) => {
|
30
42
|
if (!state.localModules) {
|
31
43
|
state.localModules = [];
|
@@ -35,6 +47,12 @@ exports.addLocalModule = (state, name) => {
|
|
35
47
|
return m;
|
36
48
|
};
|
37
49
|
|
50
|
+
/**
|
51
|
+
* @param {ParserState} state parser state
|
52
|
+
* @param {string} name name
|
53
|
+
* @param {string} [namedModule] named module
|
54
|
+
* @returns {LocalModule | null} local module or null
|
55
|
+
*/
|
38
56
|
exports.getLocalModule = (state, name, namedModule) => {
|
39
57
|
if (!state.localModules) return null;
|
40
58
|
if (namedModule) {
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ModuleHotAcceptDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
this.range = range;
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ModuleHotDeclineDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
|
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
18
18
|
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
19
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
20
20
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
21
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
22
23
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
23
24
|
/** @typedef {import("../util/Hash")} Hash */
|
@@ -37,7 +38,7 @@ class ProvidedDependency extends ModuleDependency {
|
|
37
38
|
* @param {string} request request
|
38
39
|
* @param {string} identifier identifier
|
39
40
|
* @param {string[]} ids ids
|
40
|
-
* @param {
|
41
|
+
* @param {Range} range range
|
41
42
|
*/
|
42
43
|
constructor(request, identifier, ids, range) {
|
43
44
|
super(request);
|
@@ -17,13 +17,14 @@ const NullDependency = require("./NullDependency");
|
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
19
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
20
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
20
21
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
21
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
22
23
|
/** @typedef {import("../util/Hash")} Hash */
|
23
24
|
|
24
25
|
class PureExpressionDependency extends NullDependency {
|
25
26
|
/**
|
26
|
-
* @param {
|
27
|
+
* @param {Range} range the source range
|
27
28
|
*/
|
28
29
|
constructor(range) {
|
29
30
|
super();
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
10
10
|
const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class RequireContextDependency extends ContextDependency {
|
15
|
+
/**
|
16
|
+
* @param {TODO} options options
|
17
|
+
* @param {Range} range range
|
18
|
+
*/
|
13
19
|
constructor(options, range) {
|
14
20
|
super(options);
|
15
21
|
|
@@ -14,8 +14,10 @@ const ContextElementDependency = require("./ContextElementDependency");
|
|
14
14
|
const RequireContextDependency = require("./RequireContextDependency");
|
15
15
|
const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
|
16
16
|
|
17
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
17
18
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
18
19
|
/** @typedef {import("../Compiler")} Compiler */
|
20
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
19
21
|
|
20
22
|
/** @type {ResolveOptions} */
|
21
23
|
const EMPTY_RESOLVE_OPTIONS = {};
|
@@ -46,6 +48,11 @@ class RequireContextPlugin {
|
|
46
48
|
normalModuleFactory
|
47
49
|
);
|
48
50
|
|
51
|
+
/**
|
52
|
+
* @param {Parser} parser parser parser
|
53
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
54
|
+
* @returns {void}
|
55
|
+
*/
|
49
56
|
const handler = (parser, parserOptions) => {
|
50
57
|
if (
|
51
58
|
parserOptions.requireContext !== undefined &&
|
@@ -9,6 +9,10 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock {
|
12
|
+
/**
|
13
|
+
* @param {TODO} chunkName chunk name
|
14
|
+
* @param {TODO} loc location info
|
15
|
+
*/
|
12
16
|
constructor(chunkName, loc) {
|
13
17
|
super(chunkName, loc, null);
|
14
18
|
}
|
@@ -13,10 +13,16 @@ const NullDependency = require("./NullDependency");
|
|
13
13
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
14
14
|
/** @typedef {import("../Dependency")} Dependency */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
16
17
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
17
18
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
18
19
|
|
19
20
|
class RequireEnsureDependency extends NullDependency {
|
21
|
+
/**
|
22
|
+
* @param {Range} range range
|
23
|
+
* @param {Range} contentRange content range
|
24
|
+
* @param {Range} errorHandlerRange error handler range
|
25
|
+
*/
|
20
26
|
constructor(range, contentRange, errorHandlerRange) {
|
21
27
|
super();
|
22
28
|
|
@@ -93,14 +99,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
|
|
93
99
|
source.replace(
|
94
100
|
contentRange[1],
|
95
101
|
errorHandlerRange[0] - 1,
|
96
|
-
|
102
|
+
`).bind(null, ${RuntimeGlobals.require}))['catch'](`
|
97
103
|
);
|
98
104
|
source.replace(errorHandlerRange[1], range[1] - 1, ")");
|
99
105
|
} else {
|
100
106
|
source.replace(
|
101
107
|
contentRange[1],
|
102
108
|
range[1] - 1,
|
103
|
-
`).bind(null,
|
109
|
+
`).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
|
104
110
|
);
|
105
111
|
}
|
106
112
|
}
|
@@ -10,6 +10,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
10
10
|
const NullDependency = require("./NullDependency");
|
11
11
|
|
12
12
|
class RequireEnsureItemDependency extends ModuleDependency {
|
13
|
+
/**
|
14
|
+
* @param {string} request the request string
|
15
|
+
*/
|
13
16
|
constructor(request) {
|
14
17
|
super(request);
|
15
18
|
}
|
@@ -19,9 +19,18 @@ const {
|
|
19
19
|
toConstantDependency
|
20
20
|
} = require("../javascript/JavascriptParserHelpers");
|
21
21
|
|
22
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
23
|
+
/** @typedef {import("../Compiler")} Compiler */
|
24
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
25
|
+
|
22
26
|
const PLUGIN_NAME = "RequireEnsurePlugin";
|
23
27
|
|
24
28
|
class RequireEnsurePlugin {
|
29
|
+
/**
|
30
|
+
* Apply the plugin
|
31
|
+
* @param {Compiler} compiler the compiler instance
|
32
|
+
* @returns {void}
|
33
|
+
*/
|
25
34
|
apply(compiler) {
|
26
35
|
compiler.hooks.compilation.tap(
|
27
36
|
PLUGIN_NAME,
|
@@ -40,6 +49,11 @@ class RequireEnsurePlugin {
|
|
40
49
|
new RequireEnsureDependency.Template()
|
41
50
|
);
|
42
51
|
|
52
|
+
/**
|
53
|
+
* @param {Parser} parser parser parser
|
54
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
55
|
+
* @returns {void}
|
56
|
+
*/
|
43
57
|
const handler = (parser, parserOptions) => {
|
44
58
|
if (
|
45
59
|
parserOptions.requireEnsure !== undefined &&
|