webpack 5.86.0 → 5.88.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 +5 -2
- package/lib/APIPlugin.js +1 -1
- package/lib/AsyncDependenciesBlock.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +10 -3
- package/lib/CompatibilityPlugin.js +50 -30
- package/lib/Compilation.js +2 -1
- package/lib/Compiler.js +3 -1
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +57 -29
- package/lib/ContextModule.js +4 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/DelegatedModule.js +15 -3
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/Dependency.js +11 -5
- package/lib/DllEntryPlugin.js +11 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +1 -0
- package/lib/EvalSourceMapDevToolPlugin.js +4 -0
- package/lib/ExportsInfo.js +17 -3
- package/lib/ExportsInfoApiPlugin.js +14 -5
- package/lib/ExternalModule.js +5 -0
- package/lib/FlagAllModulesAsUsedPlugin.js +6 -1
- package/lib/FlagDependencyUsagePlugin.js +3 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -0
- package/lib/HotModuleReplacementPlugin.js +8 -0
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +11 -6
- package/lib/LibManifestPlugin.js +20 -4
- package/lib/Module.js +7 -2
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleGraph.js +31 -24
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +7 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +32 -6
- package/lib/ProvidePlugin.js +13 -4
- package/lib/RawModule.js +3 -1
- package/lib/RequireJsStuffPlugin.js +7 -0
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +3 -3
- package/lib/RuntimePlugin.js +6 -3
- package/lib/RuntimeTemplate.js +22 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +7 -2
- package/lib/UseStrictPlugin.js +10 -3
- package/lib/WebpackError.js +6 -5
- package/lib/WebpackIsIncludedPlugin.js +6 -4
- package/lib/WebpackOptionsApply.js +1 -1
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +2 -1
- package/lib/asset/AssetParser.js +11 -6
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/PackFileCacheStrategy.js +35 -14
- package/lib/config/browserslistTargetHandler.js +7 -7
- package/lib/config/defaults.js +43 -26
- package/lib/container/RemoteRuntimeModule.js +1 -1
- package/lib/css/CssLoadingRuntimeModule.js +30 -13
- package/lib/css/CssModulesPlugin.js +5 -2
- package/lib/css/CssParser.js +22 -0
- package/lib/dependencies/AMDDefineDependency.js +34 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsExportsParserPlugin.js +14 -4
- package/lib/dependencies/CommonJsImportsParserPlugin.js +169 -59
- package/lib/dependencies/CommonJsPlugin.js +13 -8
- package/lib/dependencies/CommonJsRequireContextDependency.js +2 -2
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +7 -2
- package/lib/dependencies/CssImportDependency.js +1 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +5 -0
- package/lib/dependencies/CssUrlDependency.js +3 -3
- package/lib/dependencies/DllEntryDependency.js +5 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +14 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +4 -4
- package/lib/dependencies/HarmonyExports.js +9 -5
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +32 -17
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +1 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +19 -9
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportDependency.js +5 -3
- package/lib/dependencies/ImportEagerDependency.js +5 -3
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +19 -0
- package/lib/dependencies/ImportMetaPlugin.js +31 -15
- package/lib/dependencies/ImportParserPlugin.js +62 -25
- package/lib/dependencies/ImportWeakDependency.js +5 -3
- package/lib/dependencies/ModuleDependency.js +1 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ProvidedDependency.js +4 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +26 -5
- package/lib/dependencies/RequireResolveHeaderDependency.js +9 -0
- package/lib/dependencies/SystemPlugin.js +17 -5
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +2 -2
- package/lib/dependencies/URLPlugin.js +9 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +1 -1
- package/lib/dependencies/WorkerPlugin.js +59 -22
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +1 -1
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +1 -0
- package/lib/javascript/BasicEvaluatedExpression.js +23 -15
- package/lib/javascript/CommonJsChunkFormatPlugin.js +6 -2
- package/lib/javascript/JavascriptParser.js +135 -63
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -6
- package/lib/node/RequireChunkLoadingRuntimeModule.js +10 -6
- package/lib/optimize/InnerGraph.js +1 -1
- package/lib/optimize/InnerGraphPlugin.js +2 -1
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +8 -5
- package/lib/runtime/AutoPublicPathRuntimeModule.js +4 -2
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +15 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -10
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +4 -2
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +64 -48
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +4 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -2
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/serialization/ObjectMiddleware.js +6 -3
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +14 -5
- package/lib/sharing/ProvideSharedDependency.js +11 -0
- package/lib/sharing/ProvideSharedModule.js +4 -0
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +12 -5
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +32 -5
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/createHash.js +30 -9
- package/lib/util/deprecation.js +10 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/memoize.js +3 -3
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +14 -1
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +6 -2
- package/lib/wasm-async/AsyncWebAssemblyParser.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +14 -7
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
- package/lib/wasm-sync/WebAssemblyParser.js +6 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +14 -4
- package/lib/webpack.js +11 -2
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -16
- package/module.d.ts +1 -0
- package/package.json +5 -4
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +39 -5
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/types.d.ts +519 -222
@@ -9,20 +9,26 @@ const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
|
9
9
|
const ConstDependency = require("../dependencies/ConstDependency");
|
10
10
|
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
11
11
|
|
12
|
-
/** @typedef {import("estree").Expression}
|
12
|
+
/** @typedef {import("estree").Expression} Expression */
|
13
13
|
/** @typedef {import("estree").Node} Node */
|
14
|
+
/** @typedef {import("estree").SourceLocation} SourceLocation */
|
14
15
|
/** @typedef {import("./JavascriptParser")} JavascriptParser */
|
16
|
+
/** @typedef {import("./JavascriptParser").Range} Range */
|
15
17
|
|
16
18
|
/**
|
17
19
|
* @param {JavascriptParser} parser the parser
|
18
20
|
* @param {string} value the const value
|
19
21
|
* @param {string[]=} runtimeRequirements runtime requirements
|
20
|
-
* @returns {function(
|
22
|
+
* @returns {function(Expression): true} plugin function
|
21
23
|
*/
|
22
24
|
exports.toConstantDependency = (parser, value, runtimeRequirements) => {
|
23
25
|
return function constDependency(expr) {
|
24
|
-
const dep = new ConstDependency(
|
25
|
-
|
26
|
+
const dep = new ConstDependency(
|
27
|
+
value,
|
28
|
+
/** @type {Range} */ (expr.range),
|
29
|
+
runtimeRequirements
|
30
|
+
);
|
31
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
26
32
|
parser.state.module.addPresentationalDependency(dep);
|
27
33
|
return true;
|
28
34
|
};
|
@@ -30,33 +36,37 @@ exports.toConstantDependency = (parser, value, runtimeRequirements) => {
|
|
30
36
|
|
31
37
|
/**
|
32
38
|
* @param {string} value the string value
|
33
|
-
* @returns {function(
|
39
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
34
40
|
*/
|
35
41
|
exports.evaluateToString = value => {
|
36
42
|
return function stringExpression(expr) {
|
37
|
-
return new BasicEvaluatedExpression()
|
43
|
+
return new BasicEvaluatedExpression()
|
44
|
+
.setString(value)
|
45
|
+
.setRange(/** @type {Range} */ (expr.range));
|
38
46
|
};
|
39
47
|
};
|
40
48
|
|
41
49
|
/**
|
42
50
|
* @param {number} value the number value
|
43
|
-
* @returns {function(
|
51
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
44
52
|
*/
|
45
53
|
exports.evaluateToNumber = value => {
|
46
54
|
return function stringExpression(expr) {
|
47
|
-
return new BasicEvaluatedExpression()
|
55
|
+
return new BasicEvaluatedExpression()
|
56
|
+
.setNumber(value)
|
57
|
+
.setRange(/** @type {Range} */ (expr.range));
|
48
58
|
};
|
49
59
|
};
|
50
60
|
|
51
61
|
/**
|
52
62
|
* @param {boolean} value the boolean value
|
53
|
-
* @returns {function(
|
63
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
54
64
|
*/
|
55
65
|
exports.evaluateToBoolean = value => {
|
56
66
|
return function booleanExpression(expr) {
|
57
67
|
return new BasicEvaluatedExpression()
|
58
68
|
.setBoolean(value)
|
59
|
-
.setRange(expr.range);
|
69
|
+
.setRange(/** @type {Range} */ (expr.range));
|
60
70
|
};
|
61
71
|
};
|
62
72
|
|
@@ -65,14 +75,14 @@ exports.evaluateToBoolean = value => {
|
|
65
75
|
* @param {string} rootInfo rootInfo
|
66
76
|
* @param {function(): string[]} getMembers getMembers
|
67
77
|
* @param {boolean|null=} truthy is truthy, null if nullish
|
68
|
-
* @returns {function(
|
78
|
+
* @returns {function(Expression): BasicEvaluatedExpression} callback
|
69
79
|
*/
|
70
80
|
exports.evaluateToIdentifier = (identifier, rootInfo, getMembers, truthy) => {
|
71
81
|
return function identifierExpression(expr) {
|
72
82
|
let evaluatedExpression = new BasicEvaluatedExpression()
|
73
83
|
.setIdentifier(identifier, rootInfo, getMembers)
|
74
84
|
.setSideEffects(false)
|
75
|
-
.setRange(expr.range);
|
85
|
+
.setRange(/** @type {Range} */ (expr.range));
|
76
86
|
switch (truthy) {
|
77
87
|
case true:
|
78
88
|
evaluatedExpression.setTruthy();
|
@@ -89,14 +99,26 @@ exports.evaluateToIdentifier = (identifier, rootInfo, getMembers, truthy) => {
|
|
89
99
|
};
|
90
100
|
};
|
91
101
|
|
102
|
+
/**
|
103
|
+
* @param {JavascriptParser} parser the parser
|
104
|
+
* @param {string} message the message
|
105
|
+
* @returns {function(Expression): boolean | undefined} callback to handle unsupported expression
|
106
|
+
*/
|
92
107
|
exports.expressionIsUnsupported = (parser, message) => {
|
93
108
|
return function unsupportedExpression(expr) {
|
94
|
-
const dep = new ConstDependency(
|
95
|
-
|
109
|
+
const dep = new ConstDependency(
|
110
|
+
"(void 0)",
|
111
|
+
/** @type {Range} */ (expr.range),
|
112
|
+
null
|
113
|
+
);
|
114
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
96
115
|
parser.state.module.addPresentationalDependency(dep);
|
97
116
|
if (!parser.state.module) return;
|
98
117
|
parser.state.module.addWarning(
|
99
|
-
new UnsupportedFeatureWarning(
|
118
|
+
new UnsupportedFeatureWarning(
|
119
|
+
message,
|
120
|
+
/** @type {SourceLocation} */ (expr.loc)
|
121
|
+
)
|
100
122
|
);
|
101
123
|
return true;
|
102
124
|
};
|
package/lib/logging/runtime.js
CHANGED
@@ -16,6 +16,8 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
21
23
|
/**
|
@@ -46,11 +48,13 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
46
48
|
}
|
47
49
|
|
48
50
|
/**
|
49
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
50
52
|
*/
|
51
53
|
generate() {
|
52
|
-
const
|
53
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
54
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
55
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
56
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -72,8 +76,8 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
72
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
73
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
74
78
|
|
75
|
-
const outputName =
|
76
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
77
81
|
{
|
78
82
|
chunk,
|
79
83
|
contentHashType: "javascript"
|
@@ -81,7 +85,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
81
85
|
);
|
82
86
|
const rootOutputDir = getUndoPath(
|
83
87
|
outputName,
|
84
|
-
/** @type {string} */ (
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
85
89
|
false
|
86
90
|
);
|
87
91
|
|
@@ -16,6 +16,8 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
21
23
|
/**
|
@@ -46,11 +48,13 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
46
48
|
}
|
47
49
|
|
48
50
|
/**
|
49
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
50
52
|
*/
|
51
53
|
generate() {
|
52
|
-
const
|
53
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
54
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
55
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
56
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -72,8 +76,8 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
72
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
73
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
74
78
|
|
75
|
-
const outputName =
|
76
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
77
81
|
{
|
78
82
|
chunk,
|
79
83
|
contentHashType: "javascript"
|
@@ -81,7 +85,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
81
85
|
);
|
82
86
|
const rootOutputDir = getUndoPath(
|
83
87
|
outputName,
|
84
|
-
/** @type {string} */ (
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
85
89
|
true
|
86
90
|
);
|
87
91
|
|
@@ -309,7 +309,7 @@ exports.isDependencyUsedByExports = (
|
|
309
309
|
|
310
310
|
/**
|
311
311
|
* @param {Dependency} dependency the dependency
|
312
|
-
* @param {Set<string> | boolean} usedByExports usedByExports info
|
312
|
+
* @param {Set<string> | boolean | undefined} usedByExports usedByExports info
|
313
313
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
314
314
|
* @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
|
315
315
|
*/
|
@@ -16,6 +16,7 @@ const InnerGraph = require("./InnerGraph");
|
|
16
16
|
/** @typedef {import("estree").ClassExpression} ClassExpressionNode */
|
17
17
|
/** @typedef {import("estree").Node} Node */
|
18
18
|
/** @typedef {import("estree").VariableDeclarator} VariableDeclaratorNode */
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
19
20
|
/** @typedef {import("../Compiler")} Compiler */
|
20
21
|
/** @typedef {import("../Dependency")} Dependency */
|
21
22
|
/** @typedef {import("../dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
|
@@ -46,7 +47,7 @@ class InnerGraphPlugin {
|
|
46
47
|
|
47
48
|
/**
|
48
49
|
* @param {JavascriptParser} parser the parser
|
49
|
-
* @param {
|
50
|
+
* @param {JavascriptParserOptions} parserOptions options
|
50
51
|
* @returns {void}
|
51
52
|
*/
|
52
53
|
const handler = (parser, parserOptions) => {
|
@@ -95,7 +95,7 @@ module.exports = class SizeLimitsPlugin {
|
|
95
95
|
}
|
96
96
|
|
97
97
|
const size = info.size || source.size();
|
98
|
-
if (size > assetSizeLimit) {
|
98
|
+
if (size > /** @type {number} */ (assetSizeLimit)) {
|
99
99
|
assetsOverSizeLimit.push({
|
100
100
|
name,
|
101
101
|
size
|
@@ -114,7 +114,7 @@ module.exports = class SizeLimitsPlugin {
|
|
114
114
|
for (const [name, entry] of compilation.entrypoints) {
|
115
115
|
const size = getEntrypointSize(entry);
|
116
116
|
|
117
|
-
if (size > entrypointSizeLimit) {
|
117
|
+
if (size > /** @type {number} */ (entrypointSizeLimit)) {
|
118
118
|
entrypointsOverLimit.push({
|
119
119
|
name: name,
|
120
120
|
size: size,
|
@@ -131,14 +131,17 @@ module.exports = class SizeLimitsPlugin {
|
|
131
131
|
// if !1, then 2, if !2 return
|
132
132
|
if (assetsOverSizeLimit.length > 0) {
|
133
133
|
warnings.push(
|
134
|
-
new AssetsOverSizeLimitWarning(
|
134
|
+
new AssetsOverSizeLimitWarning(
|
135
|
+
assetsOverSizeLimit,
|
136
|
+
/** @type {number} */ (assetSizeLimit)
|
137
|
+
)
|
135
138
|
);
|
136
139
|
}
|
137
140
|
if (entrypointsOverLimit.length > 0) {
|
138
141
|
warnings.push(
|
139
142
|
new EntrypointsOverSizeLimitWarning(
|
140
143
|
entrypointsOverLimit,
|
141
|
-
entrypointSizeLimit
|
144
|
+
/** @type {number} */ (entrypointSizeLimit)
|
142
145
|
)
|
143
146
|
);
|
144
147
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
const RuntimeModule = require("../RuntimeModule");
|
8
8
|
const Template = require("../Template");
|
9
9
|
|
10
|
+
/** @typedef {import("../Compilation")} Compilation */
|
10
11
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
11
12
|
|
12
13
|
class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
@@ -23,11 +24,12 @@ class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
|
23
24
|
}
|
24
25
|
|
25
26
|
/**
|
26
|
-
* @returns {string} runtime code
|
27
|
+
* @returns {string | null} runtime code
|
27
28
|
*/
|
28
29
|
generate() {
|
29
30
|
const { runtimeFunction, runtimeHandlers } = this;
|
30
|
-
const
|
31
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
32
|
+
const { runtimeTemplate } = compilation;
|
31
33
|
return Template.asString([
|
32
34
|
`${runtimeHandlers} = {};`,
|
33
35
|
`${runtimeFunction} = ${runtimeTemplate.basicFunction("chunkId", [
|
@@ -11,6 +11,8 @@ const ChunkPrefetchStartupRuntimeModule = require("./ChunkPrefetchStartupRuntime
|
|
11
11
|
const ChunkPrefetchTriggerRuntimeModule = require("./ChunkPrefetchTriggerRuntimeModule");
|
12
12
|
const ChunkPreloadTriggerRuntimeModule = require("./ChunkPreloadTriggerRuntimeModule");
|
13
13
|
|
14
|
+
/** @typedef {import("../Chunk")} Chunk */
|
15
|
+
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
14
16
|
/** @typedef {import("../Compiler")} Compiler */
|
15
17
|
|
16
18
|
class ChunkPrefetchPreloadPlugin {
|
@@ -43,7 +45,7 @@ class ChunkPrefetchPreloadPlugin {
|
|
43
45
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
44
46
|
"ChunkPrefetchPreloadPlugin",
|
45
47
|
(chunk, set, { chunkGraph }) => {
|
46
|
-
const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph
|
48
|
+
const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph);
|
47
49
|
|
48
50
|
if (chunkMap.prefetch) {
|
49
51
|
set.add(RuntimeGlobals.prefetchChunk);
|
@@ -9,6 +9,7 @@ const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
10
10
|
|
11
11
|
/** @typedef {import("../Chunk")} Chunk */
|
12
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
13
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
13
14
|
|
14
15
|
class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
|
@@ -21,11 +22,13 @@ class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
|
|
21
22
|
}
|
22
23
|
|
23
24
|
/**
|
24
|
-
* @returns {string} runtime code
|
25
|
+
* @returns {string | null} runtime code
|
25
26
|
*/
|
26
27
|
generate() {
|
27
|
-
const { startupChunks
|
28
|
-
const
|
28
|
+
const { startupChunks } = this;
|
29
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
30
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
31
|
+
const { runtimeTemplate } = compilation;
|
29
32
|
return Template.asString(
|
30
33
|
startupChunks.map(
|
31
34
|
({ onChunks, chunks }) =>
|
@@ -8,6 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
const Template = require("../Template");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
11
12
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
12
13
|
|
13
14
|
class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
|
@@ -20,11 +21,12 @@ class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
|
|
20
21
|
}
|
21
22
|
|
22
23
|
/**
|
23
|
-
* @returns {string} runtime code
|
24
|
+
* @returns {string | null} runtime code
|
24
25
|
*/
|
25
26
|
generate() {
|
26
27
|
const { chunkMap } = this;
|
27
|
-
const
|
28
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
29
|
+
const { runtimeTemplate } = compilation;
|
28
30
|
const body = [
|
29
31
|
"var chunks = chunkToChildrenMap[chunkId];",
|
30
32
|
`Array.isArray(chunks) && chunks.map(${RuntimeGlobals.prefetchChunk});`
|
@@ -8,6 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
const Template = require("../Template");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
11
12
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
12
13
|
|
13
14
|
class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
|
@@ -20,11 +21,12 @@ class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
|
|
20
21
|
}
|
21
22
|
|
22
23
|
/**
|
23
|
-
* @returns {string} runtime code
|
24
|
+
* @returns {string | null} runtime code
|
24
25
|
*/
|
25
26
|
generate() {
|
26
27
|
const { chunkMap } = this;
|
27
|
-
const
|
28
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
29
|
+
const { runtimeTemplate } = compilation;
|
28
30
|
const body = [
|
29
31
|
"var chunks = chunkToChildrenMap[chunkId];",
|
30
32
|
`Array.isArray(chunks) && chunks.map(${RuntimeGlobals.preloadChunk});`
|
@@ -8,6 +8,10 @@
|
|
8
8
|
/** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
|
9
9
|
|
10
10
|
class BasicEffectRulePlugin {
|
11
|
+
/**
|
12
|
+
* @param {string} ruleProperty the rule property
|
13
|
+
* @param {string=} effectType the effect type
|
14
|
+
*/
|
11
15
|
constructor(ruleProperty, effectType) {
|
12
16
|
this.ruleProperty = ruleProperty;
|
13
17
|
this.effectType = effectType || ruleProperty;
|
@@ -9,6 +9,11 @@
|
|
9
9
|
/** @typedef {import("./RuleSetCompiler").RuleCondition} RuleCondition */
|
10
10
|
|
11
11
|
class BasicMatcherRulePlugin {
|
12
|
+
/**
|
13
|
+
* @param {string} ruleProperty the rule property
|
14
|
+
* @param {string=} dataProperty the data property
|
15
|
+
* @param {boolean=} invert if true, inverts the condition
|
16
|
+
*/
|
12
17
|
constructor(ruleProperty, dataProperty, invert) {
|
13
18
|
this.ruleProperty = ruleProperty;
|
14
19
|
this.dataProperty = dataProperty || ruleProperty;
|
@@ -150,9 +150,9 @@ class RuleSetCompiler {
|
|
150
150
|
* @returns {CompiledRule[]} rules
|
151
151
|
*/
|
152
152
|
compileRules(path, rules, refs) {
|
153
|
-
return rules
|
154
|
-
|
155
|
-
|
153
|
+
return rules
|
154
|
+
.filter(Boolean)
|
155
|
+
.map((rule, i) => this.compileRule(`${path}[${i}]`, rule, refs));
|
156
156
|
}
|
157
157
|
|
158
158
|
/**
|
@@ -106,9 +106,11 @@ class UseEffectRulePlugin {
|
|
106
106
|
*/
|
107
107
|
const useToEffectsWithoutIdent = (path, items) => {
|
108
108
|
if (Array.isArray(items)) {
|
109
|
-
return items
|
110
|
-
|
111
|
-
|
109
|
+
return items
|
110
|
+
.filter(Boolean)
|
111
|
+
.map((item, idx) =>
|
112
|
+
useToEffectRaw(`${path}[${idx}]`, "[[missing ident]]", item)
|
113
|
+
);
|
112
114
|
}
|
113
115
|
return [useToEffectRaw(path, "[[missing ident]]", items)];
|
114
116
|
};
|
@@ -120,7 +122,7 @@ class UseEffectRulePlugin {
|
|
120
122
|
*/
|
121
123
|
const useToEffects = (path, items) => {
|
122
124
|
if (Array.isArray(items)) {
|
123
|
-
return items.map((item, idx) => {
|
125
|
+
return items.filter(Boolean).map((item, idx) => {
|
124
126
|
const subPath = `${path}[${idx}]`;
|
125
127
|
return useToEffect(subPath, subPath, item);
|
126
128
|
});
|
@@ -8,23 +8,26 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const Template = require("../Template");
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class AsyncModuleRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("async module");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
21
24
|
const fn = RuntimeGlobals.asyncModule;
|
22
25
|
return Template.asString([
|
23
26
|
'var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__";',
|
24
27
|
`var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "${RuntimeGlobals.exports}";`,
|
25
28
|
'var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";',
|
26
29
|
`var resolveQueue = ${runtimeTemplate.basicFunction("queue", [
|
27
|
-
"if(queue &&
|
30
|
+
"if(queue && queue.d < 1) {",
|
28
31
|
Template.indent([
|
29
32
|
"queue.d = 1;",
|
30
33
|
`queue.forEach(${runtimeTemplate.expressionFunction(
|
@@ -73,7 +76,7 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
|
|
73
76
|
)};`,
|
74
77
|
`${fn} = ${runtimeTemplate.basicFunction("module, body, hasAwait", [
|
75
78
|
"var queue;",
|
76
|
-
"hasAwait && ((queue = []).d = 1);",
|
79
|
+
"hasAwait && ((queue = []).d = -1);",
|
77
80
|
"var depQueues = new Set();",
|
78
81
|
"var exports = module.exports;",
|
79
82
|
"var currentDeps;",
|
@@ -121,7 +124,7 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
|
|
121
124
|
"(err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)",
|
122
125
|
"err"
|
123
126
|
)});`,
|
124
|
-
"queue && (queue.d = 0);"
|
127
|
+
"queue && queue.d < 0 && (queue.d = 0);"
|
125
128
|
])};`
|
126
129
|
]);
|
127
130
|
}
|
@@ -10,16 +10,18 @@ const Template = require("../Template");
|
|
10
10
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
11
11
|
const { getUndoPath } = require("../util/identifier");
|
12
12
|
|
13
|
+
/** @typedef {import("../Compilation")} Compilation */
|
14
|
+
|
13
15
|
class AutoPublicPathRuntimeModule extends RuntimeModule {
|
14
16
|
constructor() {
|
15
17
|
super("publicPath", RuntimeModule.STAGE_BASIC);
|
16
18
|
}
|
17
19
|
|
18
20
|
/**
|
19
|
-
* @returns {string} runtime code
|
21
|
+
* @returns {string | null} runtime code
|
20
22
|
*/
|
21
23
|
generate() {
|
22
|
-
const
|
24
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
25
|
const { scriptType, importMetaName, path } = compilation.outputOptions;
|
24
26
|
const chunkName = compilation.getPath(
|
25
27
|
JavascriptModulesPlugin.getChunkFilenameTemplate(
|
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
10
10
|
|
11
11
|
/** @typedef {import("../../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
13
|
|
13
14
|
class BaseUriRuntimeModule extends RuntimeModule {
|
14
15
|
constructor() {
|
@@ -16,11 +17,10 @@ class BaseUriRuntimeModule extends RuntimeModule {
|
|
16
17
|
}
|
17
18
|
|
18
19
|
/**
|
19
|
-
* @returns {string} runtime code
|
20
|
+
* @returns {string | null} runtime code
|
20
21
|
*/
|
21
22
|
generate() {
|
22
|
-
const
|
23
|
-
|
23
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
24
24
|
const options =
|
25
25
|
/** @type {EntryDescriptionNormalized} */
|
26
26
|
(chunk.getEntryOptions());
|
@@ -8,16 +8,19 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const Template = require("../Template");
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("compat get default export");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
21
24
|
const fn = RuntimeGlobals.compatGetDefaultExport;
|
22
25
|
return Template.asString([
|
23
26
|
"// getDefaultExport function for compatibility with non-harmony modules",
|
@@ -7,6 +7,9 @@
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
9
9
|
|
10
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
12
|
+
/** @typedef {import("../Compilation")} Compilation */
|
10
13
|
/** @typedef {import("../MainTemplate")} MainTemplate */
|
11
14
|
|
12
15
|
class CompatRuntimeModule extends RuntimeModule {
|
@@ -16,10 +19,12 @@ class CompatRuntimeModule extends RuntimeModule {
|
|
16
19
|
}
|
17
20
|
|
18
21
|
/**
|
19
|
-
* @returns {string} runtime code
|
22
|
+
* @returns {string | null} runtime code
|
20
23
|
*/
|
21
24
|
generate() {
|
22
|
-
const
|
25
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
26
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
27
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
23
28
|
const {
|
24
29
|
runtimeTemplate,
|
25
30
|
mainTemplate,
|
@@ -8,16 +8,19 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const Template = require("../Template");
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
10
10
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
12
|
+
|
11
13
|
class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
12
14
|
constructor() {
|
13
15
|
super("create fake namespace object");
|
14
16
|
}
|
15
17
|
|
16
18
|
/**
|
17
|
-
* @returns {string} runtime code
|
19
|
+
* @returns {string | null} runtime code
|
18
20
|
*/
|
19
21
|
generate() {
|
20
|
-
const
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
23
|
+
const { runtimeTemplate } = compilation;
|
21
24
|
const fn = RuntimeGlobals.createFakeNamespaceObject;
|
22
25
|
return Template.asString([
|
23
26
|
`var getProto = Object.getPrototypeOf ? ${runtimeTemplate.returningFunction(
|