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
@@ -12,10 +12,14 @@ const NullDependency = require("./NullDependency");
|
|
12
12
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
13
13
|
/** @typedef {import("../Dependency")} Dependency */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
15
16
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
16
17
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
17
18
|
|
18
19
|
class RequireHeaderDependency extends NullDependency {
|
20
|
+
/**
|
21
|
+
* @param {Range} range range
|
22
|
+
*/
|
19
23
|
constructor(range) {
|
20
24
|
super();
|
21
25
|
if (!Array.isArray(range)) throw new Error("range must be valid");
|
@@ -55,7 +59,7 @@ RequireHeaderDependency.Template = class RequireHeaderDependencyTemplate extends
|
|
55
59
|
apply(dependency, source, { runtimeRequirements }) {
|
56
60
|
const dep = /** @type {RequireHeaderDependency} */ (dependency);
|
57
61
|
runtimeRequirements.add(RuntimeGlobals.require);
|
58
|
-
source.replace(dep.range[0], dep.range[1] - 1,
|
62
|
+
source.replace(dep.range[0], dep.range[1] - 1, RuntimeGlobals.require);
|
59
63
|
}
|
60
64
|
};
|
61
65
|
|
@@ -14,9 +14,14 @@ 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("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
19
|
|
19
20
|
class RequireIncludeDependency extends ModuleDependency {
|
21
|
+
/**
|
22
|
+
* @param {string} request the request string
|
23
|
+
* @param {Range} range location in source code
|
24
|
+
*/
|
20
25
|
constructor(request, range) {
|
21
26
|
super(request);
|
22
27
|
|
@@ -14,6 +14,9 @@ const makeSerializable = require("../util/makeSerializable");
|
|
14
14
|
const RequireIncludeDependency = require("./RequireIncludeDependency");
|
15
15
|
|
16
16
|
module.exports = class RequireIncludeDependencyParserPlugin {
|
17
|
+
/**
|
18
|
+
* @param {boolean} warn true: warn about deprecation, false: don't warn
|
19
|
+
*/
|
17
20
|
constructor(warn) {
|
18
21
|
this.warn = warn;
|
19
22
|
}
|
@@ -12,9 +12,18 @@ const {
|
|
12
12
|
const RequireIncludeDependency = require("./RequireIncludeDependency");
|
13
13
|
const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
|
14
14
|
|
15
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
16
|
+
/** @typedef {import("../Compiler")} Compiler */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
18
|
+
|
15
19
|
const PLUGIN_NAME = "RequireIncludePlugin";
|
16
20
|
|
17
21
|
class RequireIncludePlugin {
|
22
|
+
/**
|
23
|
+
* Apply the plugin
|
24
|
+
* @param {Compiler} compiler the compiler instance
|
25
|
+
* @returns {void}
|
26
|
+
*/
|
18
27
|
apply(compiler) {
|
19
28
|
compiler.hooks.compilation.tap(
|
20
29
|
PLUGIN_NAME,
|
@@ -28,6 +37,11 @@ class RequireIncludePlugin {
|
|
28
37
|
new RequireIncludeDependency.Template()
|
29
38
|
);
|
30
39
|
|
40
|
+
/**
|
41
|
+
* @param {Parser} parser parser parser
|
42
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
43
|
+
* @returns {void}
|
44
|
+
*/
|
31
45
|
const handler = (parser, parserOptions) => {
|
32
46
|
if (parserOptions.requireInclude === false) return;
|
33
47
|
const warn = parserOptions.requireInclude === undefined;
|
@@ -9,10 +9,18 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
10
10
|
const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
|
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 */
|
15
|
+
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
14
16
|
|
15
17
|
class RequireResolveContextDependency extends ContextDependency {
|
18
|
+
/**
|
19
|
+
* @param {ContextDependencyOptions} options options
|
20
|
+
* @param {Range} range range
|
21
|
+
* @param {Range} valueRange value range
|
22
|
+
* @param {TODO} context context
|
23
|
+
*/
|
16
24
|
constructor(options, range, valueRange, context) {
|
17
25
|
super(options, context);
|
18
26
|
|
@@ -12,9 +12,15 @@ const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
|
|
12
12
|
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
15
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
15
16
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
16
17
|
|
17
18
|
class RequireResolveDependency extends ModuleDependency {
|
19
|
+
/**
|
20
|
+
* @param {string} request the request string
|
21
|
+
* @param {Range} range location in source code
|
22
|
+
* @param {string} [context] context
|
23
|
+
*/
|
18
24
|
constructor(request, range, context) {
|
19
25
|
super(request);
|
20
26
|
|
@@ -11,10 +11,14 @@ 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 */
|
16
17
|
|
17
18
|
class RequireResolveHeaderDependency extends NullDependency {
|
19
|
+
/**
|
20
|
+
* @param {Range} range range
|
21
|
+
*/
|
18
22
|
constructor(range) {
|
19
23
|
super();
|
20
24
|
|
@@ -20,7 +20,9 @@ const makeSerializable = require("../util/makeSerializable");
|
|
20
20
|
const ConstDependency = require("./ConstDependency");
|
21
21
|
const SystemRuntimeModule = require("./SystemRuntimeModule");
|
22
22
|
|
23
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
23
24
|
/** @typedef {import("../Compiler")} Compiler */
|
25
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
24
26
|
|
25
27
|
const PLUGIN_NAME = "SystemPlugin";
|
26
28
|
|
@@ -46,6 +48,11 @@ class SystemPlugin {
|
|
46
48
|
compilation.addRuntimeModule(chunk, new SystemRuntimeModule());
|
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 (parserOptions.system === undefined || !parserOptions.system) {
|
51
58
|
return;
|
@@ -105,7 +112,9 @@ class SystemPlugin {
|
|
105
112
|
|
106
113
|
return parser.hooks.importCall.call({
|
107
114
|
type: "ImportExpression",
|
108
|
-
source:
|
115
|
+
source:
|
116
|
+
/** @type {import("estree").Literal} */
|
117
|
+
(expr.arguments[0]),
|
109
118
|
loc: expr.loc,
|
110
119
|
range: expr.range
|
111
120
|
});
|
@@ -22,6 +22,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
22
22
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
23
23
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
24
24
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
25
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
25
26
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
26
27
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
27
28
|
/** @typedef {import("../util/Hash")} Hash */
|
@@ -32,8 +33,8 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
|
|
32
33
|
class URLDependency extends ModuleDependency {
|
33
34
|
/**
|
34
35
|
* @param {string} request request
|
35
|
-
* @param {
|
36
|
-
* @param {
|
36
|
+
* @param {Range} range range of the arguments of new URL( |> ... <| )
|
37
|
+
* @param {Range} outerRange range of the full |> new URL(...) <|
|
37
38
|
* @param {boolean=} relative use relative urls instead of absolute with base uri
|
38
39
|
*/
|
39
40
|
constructor(request, range, outerRange, relative) {
|
@@ -16,9 +16,11 @@ const InnerGraph = require("../optimize/InnerGraph");
|
|
16
16
|
const URLDependency = require("./URLDependency");
|
17
17
|
|
18
18
|
/** @typedef {import("estree").NewExpression} NewExpressionNode */
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
19
20
|
/** @typedef {import("../Compiler")} Compiler */
|
20
21
|
/** @typedef {import("../NormalModule")} NormalModule */
|
21
22
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
23
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
22
24
|
|
23
25
|
const PLUGIN_NAME = "URLPlugin";
|
24
26
|
|
@@ -43,9 +45,11 @@ class URLPlugin {
|
|
43
45
|
const getUrl = module => {
|
44
46
|
return pathToFileURL(module.resource);
|
45
47
|
};
|
48
|
+
|
46
49
|
/**
|
47
|
-
* @param {
|
48
|
-
* @param {
|
50
|
+
* @param {Parser} parser parser parser
|
51
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
52
|
+
* @returns {void}
|
49
53
|
*/
|
50
54
|
const parserCallback = (parser, parserOptions) => {
|
51
55
|
if (parserOptions.url === false) return;
|
@@ -77,9 +81,7 @@ class URLPlugin {
|
|
77
81
|
)
|
78
82
|
return;
|
79
83
|
|
80
|
-
|
81
|
-
|
82
|
-
return request;
|
84
|
+
return parser.evaluateExpression(arg1).asString();
|
83
85
|
};
|
84
86
|
|
85
87
|
parser.hooks.canRename.for("URL").tap(PLUGIN_NAME, approve);
|
@@ -11,10 +11,15 @@ 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 */
|
16
17
|
|
17
18
|
class UnsupportedDependency extends NullDependency {
|
19
|
+
/**
|
20
|
+
* @param {string} request the request string
|
21
|
+
* @param {Range} range location in source code
|
22
|
+
*/
|
18
23
|
constructor(request, range) {
|
19
24
|
super();
|
20
25
|
|
@@ -17,6 +17,12 @@ const ModuleDependency = require("./ModuleDependency");
|
|
17
17
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
18
|
|
19
19
|
class WebAssemblyExportImportedDependency extends ModuleDependency {
|
20
|
+
/**
|
21
|
+
* @param {string} exportName export name
|
22
|
+
* @param {string} request request
|
23
|
+
* @param {string} name name
|
24
|
+
* @param {TODO} valueType value type
|
25
|
+
*/
|
20
26
|
constructor(exportName, request, name, valueType) {
|
21
27
|
super(request);
|
22
28
|
/** @type {string} */
|
@@ -15,9 +15,14 @@ const ModuleDependency = require("./ModuleDependency");
|
|
15
15
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
16
16
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
17
17
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
18
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
18
19
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
19
20
|
|
20
21
|
class WebpackIsIncludedDependency extends ModuleDependency {
|
22
|
+
/**
|
23
|
+
* @param {string} request the request string
|
24
|
+
* @param {Range} range location in source code
|
25
|
+
*/
|
21
26
|
constructor(request, range) {
|
22
27
|
super(request);
|
23
28
|
|
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
18
18
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
19
19
|
/** @typedef {import("../Entrypoint")} Entrypoint */
|
20
20
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
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 */
|
@@ -26,7 +27,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
26
27
|
class WorkerDependency extends ModuleDependency {
|
27
28
|
/**
|
28
29
|
* @param {string} request request
|
29
|
-
* @param {
|
30
|
+
* @param {Range} range range
|
30
31
|
* @param {Object} workerDependencyOptions options
|
31
32
|
* @param {string} workerDependencyOptions.publicPath public path for the worker
|
32
33
|
*/
|
@@ -30,11 +30,13 @@ const WorkerDependency = require("./WorkerDependency");
|
|
30
30
|
/** @typedef {import("estree").Pattern} Pattern */
|
31
31
|
/** @typedef {import("estree").Property} Property */
|
32
32
|
/** @typedef {import("estree").SpreadElement} SpreadElement */
|
33
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
33
34
|
/** @typedef {import("../Compiler")} Compiler */
|
34
35
|
/** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
|
35
36
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
36
37
|
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
37
38
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
39
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
38
40
|
/** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
|
39
41
|
|
40
42
|
const getUrl = module => {
|
@@ -169,8 +171,9 @@ class WorkerPlugin {
|
|
169
171
|
};
|
170
172
|
|
171
173
|
/**
|
172
|
-
* @param {
|
173
|
-
* @param {
|
174
|
+
* @param {Parser} parser parser parser
|
175
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
176
|
+
* @returns {void}
|
174
177
|
*/
|
175
178
|
const parserPlugin = (parser, parserOptions) => {
|
176
179
|
if (parserOptions.worker === false) return;
|
@@ -5,6 +5,13 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("estree").Expression} Expression */
|
9
|
+
/** @typedef {import("estree").SpreadElement} SpreadElement */
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @param {Expression} expr expressions
|
13
|
+
* @returns {{fn: TODO, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} function expression with additional information
|
14
|
+
*/
|
8
15
|
module.exports = expr => {
|
9
16
|
// <FunctionExpression>
|
10
17
|
if (
|
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
7
8
|
const RuntimeModule = require("../RuntimeModule");
|
8
9
|
|
9
10
|
class ExportWebpackRequireRuntimeModule extends RuntimeModule {
|
@@ -22,7 +23,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
|
|
22
23
|
* @returns {string} runtime code
|
23
24
|
*/
|
24
25
|
generate() {
|
25
|
-
return
|
26
|
+
return `export default ${RuntimeGlobals.require};`;
|
26
27
|
}
|
27
28
|
}
|
28
29
|
|
@@ -123,7 +123,7 @@ class ModuleChunkFormatPlugin {
|
|
123
123
|
entrySource.add(source);
|
124
124
|
entrySource.add(";\n\n// load runtime\n");
|
125
125
|
entrySource.add(
|
126
|
-
`import
|
126
|
+
`import ${RuntimeGlobals.require} from ${JSON.stringify(
|
127
127
|
getRelativePath(runtimeChunk)
|
128
128
|
)};\n`
|
129
129
|
);
|
@@ -131,7 +131,7 @@ class ModuleChunkFormatPlugin {
|
|
131
131
|
const startupSource = new ConcatSource();
|
132
132
|
startupSource.add(
|
133
133
|
`var __webpack_exec__ = ${runtimeTemplate.returningFunction(
|
134
|
-
|
134
|
+
`${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
|
135
135
|
"moduleId"
|
136
136
|
)}\n`
|
137
137
|
);
|
@@ -50,6 +50,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
50
50
|
return hooks;
|
51
51
|
}
|
52
52
|
|
53
|
+
/**
|
54
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
55
|
+
*/
|
53
56
|
constructor(runtimeRequirements) {
|
54
57
|
super("import chunk loading", RuntimeModule.STAGE_ATTACH);
|
55
58
|
this._runtimeRequirements = runtimeRequirements;
|
@@ -112,7 +115,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
112
115
|
);
|
113
116
|
const rootOutputDir = getUndoPath(
|
114
117
|
outputName,
|
115
|
-
this.compilation.outputOptions.path,
|
118
|
+
/** @type {string} */ (this.compilation.outputOptions.path),
|
116
119
|
true
|
117
120
|
);
|
118
121
|
|
@@ -156,7 +159,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
156
159
|
"}"
|
157
160
|
]),
|
158
161
|
"}",
|
159
|
-
|
162
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
160
163
|
"for(;i < ids.length; i++) {",
|
161
164
|
Template.indent([
|
162
165
|
"chunkId = ids[i];",
|
@@ -84,8 +84,8 @@ class ArrayPushCallbackChunkFormatPlugin {
|
|
84
84
|
if (runtimeModules.length > 0 || entries.length > 0) {
|
85
85
|
const runtime = new ConcatSource(
|
86
86
|
(runtimeTemplate.supportsArrowFunction()
|
87
|
-
?
|
88
|
-
:
|
87
|
+
? `${RuntimeGlobals.require} =>`
|
88
|
+
: `function(${RuntimeGlobals.require})`) +
|
89
89
|
" { // webpackRuntimeModules\n"
|
90
90
|
);
|
91
91
|
if (runtimeModules.length > 0) {
|
@@ -120,7 +120,7 @@ class CommonJsChunkFormatPlugin {
|
|
120
120
|
entrySource.add(source);
|
121
121
|
entrySource.add(";\n\n// load runtime\n");
|
122
122
|
entrySource.add(
|
123
|
-
`var
|
123
|
+
`var ${RuntimeGlobals.require} = require(${JSON.stringify(
|
124
124
|
runtimePath
|
125
125
|
)});\n`
|
126
126
|
);
|
@@ -429,7 +429,7 @@ class JavascriptModulesPlugin {
|
|
429
429
|
const code = source.source();
|
430
430
|
|
431
431
|
const fn = vm.runInThisContext(
|
432
|
-
`(function(${module.moduleArgument}, ${module.exportsArgument},
|
432
|
+
`(function(${module.moduleArgument}, ${module.exportsArgument}, ${RuntimeGlobals.require}) {\n${code}\n/**/})`,
|
433
433
|
{
|
434
434
|
filename: module.identifier(),
|
435
435
|
lineOffset: -1
|
@@ -454,7 +454,7 @@ class JavascriptModulesPlugin {
|
|
454
454
|
if (typeof code !== "string") code = code.toString();
|
455
455
|
|
456
456
|
const fn = vm.runInThisContext(
|
457
|
-
`(function(
|
457
|
+
`(function(${RuntimeGlobals.require}) {\n${code}\n/**/})`,
|
458
458
|
{
|
459
459
|
filename: options.module.identifier(),
|
460
460
|
lineOffset: -1
|
@@ -557,7 +557,7 @@ class JavascriptModulesPlugin {
|
|
557
557
|
? module.exportsArgument
|
558
558
|
: "__unused_webpack_" + module.exportsArgument
|
559
559
|
);
|
560
|
-
if (needRequire) args.push(
|
560
|
+
if (needRequire) args.push(RuntimeGlobals.require);
|
561
561
|
if (!needThisAsExports && runtimeTemplate.supportsArrowFunction()) {
|
562
562
|
factorySource.add("/***/ ((" + args.join(", ") + ") => {\n\n");
|
563
563
|
} else {
|
@@ -1038,13 +1038,13 @@ class JavascriptModulesPlugin {
|
|
1038
1038
|
|
1039
1039
|
if (useRequire) {
|
1040
1040
|
buf.push("// The require function");
|
1041
|
-
buf.push(`function
|
1041
|
+
buf.push(`function ${RuntimeGlobals.require}(moduleId) {`);
|
1042
1042
|
buf.push(Template.indent(this.renderRequire(renderContext, hooks)));
|
1043
1043
|
buf.push("}");
|
1044
1044
|
buf.push("");
|
1045
1045
|
} else if (runtimeRequirements.has(RuntimeGlobals.requireScope)) {
|
1046
1046
|
buf.push("// The require scope");
|
1047
|
-
buf.push(
|
1047
|
+
buf.push(`var ${RuntimeGlobals.require} = {};`);
|
1048
1048
|
buf.push("");
|
1049
1049
|
}
|
1050
1050
|
|
@@ -1163,14 +1163,14 @@ class JavascriptModulesPlugin {
|
|
1163
1163
|
}(undefined, ${JSON.stringify(
|
1164
1164
|
chunks.map(c => c.id)
|
1165
1165
|
)}, ${runtimeTemplate.returningFunction(
|
1166
|
-
|
1166
|
+
`${RuntimeGlobals.require}(${moduleIdExpr})`
|
1167
1167
|
)})`
|
1168
1168
|
);
|
1169
1169
|
} else if (useRequire) {
|
1170
1170
|
buf2.push(
|
1171
|
-
`${
|
1172
|
-
|
1173
|
-
}
|
1171
|
+
`${i === 0 ? "var __webpack_exports__ = " : ""}${
|
1172
|
+
RuntimeGlobals.require
|
1173
|
+
}(${moduleIdExpr});`
|
1174
1174
|
);
|
1175
1175
|
} else {
|
1176
1176
|
if (i === 0) buf2.push("var __webpack_exports__ = {};");
|
@@ -1178,7 +1178,7 @@ class JavascriptModulesPlugin {
|
|
1178
1178
|
buf2.push(
|
1179
1179
|
`__webpack_modules__[${moduleIdExpr}](0, ${
|
1180
1180
|
i === 0 ? "__webpack_exports__" : "{}"
|
1181
|
-
},
|
1181
|
+
}, ${RuntimeGlobals.require});`
|
1182
1182
|
);
|
1183
1183
|
} else if (entryRuntimeRequirements.has(RuntimeGlobals.exports)) {
|
1184
1184
|
buf2.push(
|
@@ -1281,17 +1281,17 @@ class JavascriptModulesPlugin {
|
|
1281
1281
|
RuntimeGlobals.interceptModuleExecution
|
1282
1282
|
)
|
1283
1283
|
? Template.asString([
|
1284
|
-
|
1284
|
+
`var execOptions = { id: moduleId, module: module, factory: __webpack_modules__[moduleId], require: ${RuntimeGlobals.require} };`,
|
1285
1285
|
`${RuntimeGlobals.interceptModuleExecution}.forEach(function(handler) { handler(execOptions); });`,
|
1286
1286
|
"module = execOptions.module;",
|
1287
1287
|
"execOptions.factory.call(module.exports, module, module.exports, execOptions.require);"
|
1288
1288
|
])
|
1289
1289
|
: runtimeRequirements.has(RuntimeGlobals.thisAsExports)
|
1290
1290
|
? Template.asString([
|
1291
|
-
|
1291
|
+
`__webpack_modules__[moduleId].call(module.exports, module, module.exports, ${RuntimeGlobals.require});`
|
1292
1292
|
])
|
1293
1293
|
: Template.asString([
|
1294
|
-
|
1294
|
+
`__webpack_modules__[moduleId](module, module.exports, ${RuntimeGlobals.require});`
|
1295
1295
|
]);
|
1296
1296
|
const needModuleId = runtimeRequirements.has(RuntimeGlobals.moduleId);
|
1297
1297
|
const needModuleLoaded = runtimeRequirements.has(
|