webpack 5.110.2 → 5.111.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.
- package/README.md +5 -2
- package/lib/APIPlugin.js +23 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/Compilation.js +321 -303
- package/lib/Compiler.js +209 -46
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ContextModule.js +17 -81
- package/lib/ContextModuleFactory.js +1 -1
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DotenvPlugin.js +41 -13
- package/lib/ExternalModule.js +41 -14
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +45 -21
- package/lib/FlagDependencyUsagePlugin.js +8 -2
- package/lib/HotModuleReplacementPlugin.js +53 -7
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +16 -7
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +58 -32
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +794 -477
- package/lib/SourceMapDevToolPlugin.js +1 -1
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetGenerator.js +25 -8
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +14 -1
- package/lib/config/browserslistTargetHandler.js +19 -0
- package/lib/config/defaults.js +110 -64
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/css/CssGenerator.js +8 -0
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +94 -36
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +7 -6
- package/lib/css/CssParser.js +144 -11
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +11 -3
- package/lib/css/data.js +2814 -678
- package/lib/css/syntax.js +4082 -248
- package/lib/debug/ProfilingPlugin.js +4 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +3 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -0
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/CssIcssExportDependency.js +7 -1
- package/lib/dependencies/HarmonyCompatibilityDependency.js +58 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -3
- package/lib/dependencies/HarmonyExportExpressionDependency.js +44 -29
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +171 -32
- package/lib/dependencies/HarmonyExportInitFragment.js +99 -19
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +18 -30
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -3
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +24 -1
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +62 -2
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +59 -15
- package/lib/dependencies/ImportParserPlugin.js +24 -14
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/WorkerDependency.js +1 -2
- package/lib/dependencies/WorkletDependency.js +1 -2
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +30 -11
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/html/HtmlGenerator.js +11 -5
- package/lib/html/HtmlModulesPlugin.js +360 -84
- package/lib/html/HtmlParser.js +13 -6
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +121 -7
- package/lib/html/htmlMinify.js +84 -113
- package/lib/html/syntax.js +1067 -569
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +3 -0
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +52 -22
- package/lib/javascript/JavascriptParser.js +1255 -728
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1494 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +8696 -5225
- package/lib/library/ModuleLibraryPlugin.js +116 -5
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/ConcatenatedModule.js +133 -25
- package/lib/optimize/ConstExportsPlugin.js +50 -39
- package/lib/optimize/InlineExports.js +20 -123
- package/lib/optimize/MangleExportsPlugin.js +10 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +24 -1
- package/lib/optimize/RealContentHashPlugin.js +68 -9
- package/lib/optimize/SideEffectsFlagPlugin.js +17 -9
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/CacheEffectivenessPlugin.js +4 -3
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +2 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +7 -3
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +9 -0
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +105 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +9 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +338 -217
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/serialization/FileMiddleware.js +15 -2
- package/lib/serialization/ObjectMiddleware.js +138 -106
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +3 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/SourceProcessor.js +76 -69
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/conventions.js +5 -1
- package/lib/util/fs.js +27 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +22 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1440 -331
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
package/lib/MainTemplate.js
CHANGED
|
@@ -21,7 +21,11 @@ const getJsonpTemplatePlugin = memoize(() =>
|
|
|
21
21
|
|
|
22
22
|
/** @import { Tap } from "tapable" */
|
|
23
23
|
/** @import { Source } from "webpack-sources" */
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* @import {
|
|
26
|
+
* OutputNormalizedWithDefaults as OutputOptions
|
|
27
|
+
* } from "./config/defaults"
|
|
28
|
+
*/
|
|
25
29
|
/** @import ModuleTemplate from "./ModuleTemplate" */
|
|
26
30
|
/** @import Chunk from "./Chunk" */
|
|
27
31
|
/**
|
package/lib/Module.js
CHANGED
|
@@ -128,6 +128,7 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
128
128
|
* @property {Set<string>} topLevelDeclarations top level declarations for javascript modules
|
|
129
129
|
* @property {Set<string>} freeNames free identifier names in the rendered source for javascript modules
|
|
130
130
|
* @property {InitFragment<EXPECTED_ANY>[]} chunkInitFragments chunk init fragments for javascript modules
|
|
131
|
+
* @property {string} externalReexport native external reexport source and attributes
|
|
131
132
|
* @property {{ javascript?: string, ["asset-url"]?: string }} url url for asset modules
|
|
132
133
|
* @property {string} filename a filename for asset modules
|
|
133
134
|
* @property {AssetInfo} assetInfo an asset info for asset modules
|
|
@@ -186,23 +187,33 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
186
187
|
* @property {Map<string, string>=} exportsBindingSourceByRuntime export definitions `ModuleLibraryPlugin` took over, re-emitted only where the module is wrapped
|
|
187
188
|
*/
|
|
188
189
|
|
|
190
|
+
/**
|
|
191
|
+
* What a build recorded for stats and the performance hints to report, kept on the build info so a module restored from the cache still has it.
|
|
192
|
+
* @typedef {object} BuildDiagnostics
|
|
193
|
+
* @property {string[]=} optimizationBailouts what parser plugins reported as optimization bailouts, replayed into the module graph of every compilation that reuses the module
|
|
194
|
+
* @property {string=} sideEffectStatement the statement whose side effect keeps the module in the bundle, as `type at location`
|
|
195
|
+
* @property {number=} ineffectivePureAnnotations how many `#__PURE__` annotations sit where the parser does not read them
|
|
196
|
+
* @property {number=} topLevelThis how many times the module reads `this` at its top level
|
|
197
|
+
* @property {boolean=} usesEval true when the module calls `eval` directly
|
|
198
|
+
* @property {string[]=} notCacheableReasons reasons why the module is not cacheable (e.g. paths of loaders that marked it)
|
|
199
|
+
*/
|
|
200
|
+
|
|
189
201
|
/**
|
|
190
202
|
* Defines the build info properties common to all module types.
|
|
191
203
|
* Module type specific properties live in the `Known*BuildInfo` typedef of the dedicated module class.
|
|
192
204
|
* @typedef {object} KnownBuildInfo
|
|
205
|
+
* @property {boolean=} specNamespaceObject the module hands out a spec Module Namespace Exotic Object
|
|
193
206
|
* @property {boolean=} cacheable
|
|
194
|
-
* @property {string[]=} notCacheableReasons reasons why the module is not cacheable (e.g. paths of loaders that marked it)
|
|
195
207
|
* @property {boolean=} strict
|
|
196
208
|
* @property {string=} moduleArgument
|
|
197
209
|
* @property {string=} exportsArgument
|
|
198
210
|
* @property {Record<string, Source>=} assets assets added by loaders or plugins
|
|
199
211
|
* @property {Map<string, AssetInfo | undefined>=} assetsInfo
|
|
200
212
|
* @property {Set<string>=} topLevelDeclarations top level declaration names
|
|
201
|
-
* @property {boolean=} isCircular true when the module is
|
|
202
|
-
* @property {
|
|
203
|
-
* @property {number=} ineffectivePureAnnotations how many `#__PURE__` annotations sit where the parser does not read them
|
|
204
|
-
* @property {number=} topLevelThis how many times the module reads `this` at its top level
|
|
213
|
+
* @property {boolean=} isCircular true when the module is in a synchronous circular dependency chain
|
|
214
|
+
* @property {number=} circularKind CircularKind bit flags from CircularModulesPlugin; unset when the plugin did not run
|
|
205
215
|
* @property {boolean=} usesTopLevelAwaitForOf module uses top-level `for await…of` or `await using`, which can't be lowered to a generator
|
|
216
|
+
* @property {BuildDiagnostics=} diagnostics what the build recorded for stats and the performance hints to report
|
|
206
217
|
*/
|
|
207
218
|
|
|
208
219
|
/** @typedef {string | Set<string>} ValueCacheVersion */
|
|
@@ -1310,7 +1321,6 @@ class Module extends DependenciesBlock {
|
|
|
1310
1321
|
write(this.type);
|
|
1311
1322
|
write(this.layer);
|
|
1312
1323
|
write(this.context);
|
|
1313
|
-
write(this.resolveOptions);
|
|
1314
1324
|
write(this.factoryMeta);
|
|
1315
1325
|
write(this.useSourceMap);
|
|
1316
1326
|
write(this.useSimpleSourceMap);
|
|
@@ -1340,7 +1350,6 @@ class Module extends DependenciesBlock {
|
|
|
1340
1350
|
this.type = read();
|
|
1341
1351
|
this.layer = read();
|
|
1342
1352
|
this.context = read();
|
|
1343
|
-
this.resolveOptions = read();
|
|
1344
1353
|
this.factoryMeta = read();
|
|
1345
1354
|
this.useSourceMap = read();
|
|
1346
1355
|
this.useSimpleSourceMap = read();
|
package/lib/MultiCompiler.js
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const asyncLib = require("neo-async");
|
|
9
8
|
const { MultiHook, SyncHook } = require("tapable");
|
|
10
9
|
|
|
11
10
|
const MultiStats = require("./MultiStats");
|
|
12
11
|
const MultiWatching = require("./MultiWatching");
|
|
13
12
|
const WebpackError = require("./errors/WebpackError");
|
|
14
13
|
const ArrayQueue = require("./util/ArrayQueue");
|
|
14
|
+
const asyncLib = require("./util/async");
|
|
15
15
|
const memoize = require("./util/memoize");
|
|
16
16
|
|
|
17
17
|
const getConcurrentCompilationError = memoize(() =>
|
package/lib/MultiWatching.js
CHANGED
package/lib/NormalModule.js
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
const querystring = require("querystring");
|
|
9
9
|
const {
|
|
10
10
|
AsyncSeriesBailHook,
|
|
11
|
+
AsyncSeriesWaterfallHook,
|
|
11
12
|
HookMap,
|
|
12
|
-
SyncHook
|
|
13
|
-
SyncWaterfallHook
|
|
13
|
+
SyncHook
|
|
14
14
|
} = require("tapable");
|
|
15
15
|
const {
|
|
16
16
|
CachedSource,
|
|
@@ -33,6 +33,7 @@ const {
|
|
|
33
33
|
const LazySet = require("./util/LazySet");
|
|
34
34
|
const { isSubset } = require("./util/SetHelpers");
|
|
35
35
|
const { getScheme } = require("./util/URLAbsoluteSpecifier");
|
|
36
|
+
const { getBuildDiagnostics } = require("./util/buildDiagnostics");
|
|
36
37
|
const {
|
|
37
38
|
concatComparators,
|
|
38
39
|
keepOriginalOrder,
|
|
@@ -109,7 +110,6 @@ const getModuleBuildError = memoize(() => require("./errors/ModuleBuildError"));
|
|
|
109
110
|
* BuildMeta,
|
|
110
111
|
* CodeGenerationContext,
|
|
111
112
|
* CodeGenerationResult,
|
|
112
|
-
* CodeGenerationResultData,
|
|
113
113
|
* ConcatenationBailoutReasonContext,
|
|
114
114
|
* KnownBuildInfo,
|
|
115
115
|
* LibIdentOptions,
|
|
@@ -119,7 +119,6 @@ const getModuleBuildError = memoize(() => require("./errors/ModuleBuildError"));
|
|
|
119
119
|
* NeedBuildCallback,
|
|
120
120
|
* BuildCallback,
|
|
121
121
|
* RuntimeRequirements,
|
|
122
|
-
* Sources,
|
|
123
122
|
* SourceType,
|
|
124
123
|
* SourceTypes
|
|
125
124
|
* } from "./Module"
|
|
@@ -184,7 +183,9 @@ const recordSideEffectsBailout = (mod, moduleGraph, dep) => {
|
|
|
184
183
|
.getOptimizationBailout(mod)
|
|
185
184
|
.push(
|
|
186
185
|
() =>
|
|
187
|
-
`Dependency (${dep.type}) with side effects at ${formatLocation(
|
|
186
|
+
`Dependency (${dep.type}) with side effects at ${formatLocation(
|
|
187
|
+
dep.loc
|
|
188
|
+
)}`
|
|
188
189
|
);
|
|
189
190
|
};
|
|
190
191
|
|
|
@@ -542,10 +543,12 @@ const createCompilationHooks = () => {
|
|
|
542
543
|
*/
|
|
543
544
|
beforeSnapshot: new SyncHook(["module"]),
|
|
544
545
|
/**
|
|
545
|
-
*
|
|
546
|
+
* Async since 5.111.0, so a tap can await work of its own — minifying an
|
|
547
|
+
* asset, say, which before only a loader could do. `tap` keeps working.
|
|
548
|
+
* @type {AsyncSeriesWaterfallHook<[Result, NormalModule]>}
|
|
546
549
|
* @since 5.99.0
|
|
547
550
|
*/
|
|
548
|
-
processResult: new
|
|
551
|
+
processResult: new AsyncSeriesWaterfallHook(["result", "module"]),
|
|
549
552
|
/**
|
|
550
553
|
* @type {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>}
|
|
551
554
|
* @since 5.49.0
|
|
@@ -728,11 +731,6 @@ class NormalModule extends Module {
|
|
|
728
731
|
this._sideEffectsStateGraph = undefined;
|
|
729
732
|
/** @type {ConnectionState | undefined} */
|
|
730
733
|
this._sideEffectsStateValue = undefined;
|
|
731
|
-
/**
|
|
732
|
-
* @private
|
|
733
|
-
* @type {CodeGenerationResultData}
|
|
734
|
-
*/
|
|
735
|
-
this._codeGeneratorData = new Map();
|
|
736
734
|
}
|
|
737
735
|
|
|
738
736
|
/**
|
|
@@ -1052,7 +1050,9 @@ class NormalModule extends Module {
|
|
|
1052
1050
|
(parseJson(options));
|
|
1053
1051
|
} catch (err) {
|
|
1054
1052
|
throw new Error(
|
|
1055
|
-
`Cannot parse string options: ${
|
|
1053
|
+
`Cannot parse string options: ${
|
|
1054
|
+
/** @type {Error} */ (err).message
|
|
1055
|
+
}`,
|
|
1056
1056
|
{ cause: err }
|
|
1057
1057
|
);
|
|
1058
1058
|
}
|
|
@@ -1305,11 +1305,33 @@ class NormalModule extends Module {
|
|
|
1305
1305
|
});
|
|
1306
1306
|
return callback(error);
|
|
1307
1307
|
}
|
|
1308
|
-
|
|
1308
|
+
hooks.processResult.callAsync(
|
|
1309
1309
|
/** @type {Result} */
|
|
1310
1310
|
(result_),
|
|
1311
|
-
this
|
|
1311
|
+
this,
|
|
1312
|
+
(hookErr, hookResult) => {
|
|
1313
|
+
if (hookErr) {
|
|
1314
|
+
// Named, so a tap's failure is not read as a loader's.
|
|
1315
|
+
return callback(
|
|
1316
|
+
new (getModuleBuildError())(
|
|
1317
|
+
hookErr instanceof Error
|
|
1318
|
+
? hookErr
|
|
1319
|
+
: new (getNonErrorEmittedError())(hookErr),
|
|
1320
|
+
{ from: "processResult hook" }
|
|
1321
|
+
)
|
|
1322
|
+
);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
finishResult(/** @type {Result} */ (hookResult));
|
|
1326
|
+
}
|
|
1312
1327
|
);
|
|
1328
|
+
};
|
|
1329
|
+
|
|
1330
|
+
/**
|
|
1331
|
+
* @param {Result} result the result the hook settled on
|
|
1332
|
+
* @returns {void}
|
|
1333
|
+
*/
|
|
1334
|
+
const finishResult = (result) => {
|
|
1313
1335
|
const source = result[0];
|
|
1314
1336
|
const sourceMap = result.length >= 1 ? result[1] : null;
|
|
1315
1337
|
const extraInfo = result.length >= 2 ? result[2] : null;
|
|
@@ -1441,7 +1463,9 @@ class NormalModule extends Module {
|
|
|
1441
1463
|
})
|
|
1442
1464
|
).catch((err) => {
|
|
1443
1465
|
throw new Error(
|
|
1444
|
-
`Failed to parse source map. ${
|
|
1466
|
+
`Failed to parse source map. ${
|
|
1467
|
+
/** @type {Error} */ (err).message
|
|
1468
|
+
}`
|
|
1445
1469
|
);
|
|
1446
1470
|
})
|
|
1447
1471
|
);
|
|
@@ -1501,7 +1525,8 @@ class NormalModule extends Module {
|
|
|
1501
1525
|
}
|
|
1502
1526
|
buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
|
|
1503
1527
|
if (result.notCacheableReasons.length > 0) {
|
|
1504
|
-
buildInfo.notCacheableReasons =
|
|
1528
|
+
getBuildDiagnostics(buildInfo).notCacheableReasons =
|
|
1529
|
+
result.notCacheableReasons;
|
|
1505
1530
|
}
|
|
1506
1531
|
processResult(err, result.result);
|
|
1507
1532
|
}
|
|
@@ -1609,7 +1634,6 @@ class NormalModule extends Module {
|
|
|
1609
1634
|
};
|
|
1610
1635
|
this.buildInfo = {
|
|
1611
1636
|
cacheable: false,
|
|
1612
|
-
notCacheableReasons: undefined,
|
|
1613
1637
|
parsed: true,
|
|
1614
1638
|
fileDependencies: undefined,
|
|
1615
1639
|
contextDependencies: undefined,
|
|
@@ -1627,6 +1651,8 @@ class NormalModule extends Module {
|
|
|
1627
1651
|
pureFunctions: undefined,
|
|
1628
1652
|
inlineExports: undefined,
|
|
1629
1653
|
moduleConcatenationBailout: undefined,
|
|
1654
|
+
moduleConcatenationRootBailout: undefined,
|
|
1655
|
+
diagnostics: undefined,
|
|
1630
1656
|
needCreateRequire: undefined,
|
|
1631
1657
|
usesTopLevelUsingDeclaration: undefined
|
|
1632
1658
|
};
|
|
@@ -1892,10 +1918,19 @@ class NormalModule extends Module {
|
|
|
1892
1918
|
runtimeRequirements.add(RuntimeGlobals.thisAsExports);
|
|
1893
1919
|
}
|
|
1894
1920
|
|
|
1895
|
-
|
|
1921
|
+
/** @type {CodeGenerationResult} */
|
|
1922
|
+
const resultEntry = {
|
|
1923
|
+
sources: new Map(),
|
|
1924
|
+
runtimeRequirements,
|
|
1925
|
+
data: undefined,
|
|
1926
|
+
hash: undefined
|
|
1927
|
+
};
|
|
1928
|
+
|
|
1929
|
+
const getData = () => {
|
|
1930
|
+
if (resultEntry.data === undefined) resultEntry.data = new Map();
|
|
1931
|
+
return resultEntry.data;
|
|
1932
|
+
};
|
|
1896
1933
|
|
|
1897
|
-
/** @type {Sources} */
|
|
1898
|
-
const sources = new Map();
|
|
1899
1934
|
for (const type of sourceTypes || chunkGraph.getModuleSourceTypes(this)) {
|
|
1900
1935
|
// TODO webpack@6 make generateError required
|
|
1901
1936
|
const generator =
|
|
@@ -1930,17 +1965,10 @@ class NormalModule extends Module {
|
|
|
1930
1965
|
});
|
|
1931
1966
|
|
|
1932
1967
|
if (source) {
|
|
1933
|
-
sources.set(type, new CachedSource(source));
|
|
1968
|
+
resultEntry.sources.set(type, new CachedSource(source));
|
|
1934
1969
|
}
|
|
1935
1970
|
}
|
|
1936
1971
|
|
|
1937
|
-
/** @type {CodeGenerationResult} */
|
|
1938
|
-
const resultEntry = {
|
|
1939
|
-
sources,
|
|
1940
|
-
runtimeRequirements,
|
|
1941
|
-
data: this._codeGeneratorData,
|
|
1942
|
-
hash: undefined
|
|
1943
|
-
};
|
|
1944
1972
|
return resultEntry;
|
|
1945
1973
|
}
|
|
1946
1974
|
|
|
@@ -2116,7 +2144,6 @@ class NormalModule extends Module {
|
|
|
2116
2144
|
write(this.error);
|
|
2117
2145
|
write(this._lastSuccessfulBuildMeta);
|
|
2118
2146
|
write(this._forceBuild);
|
|
2119
|
-
write(this._codeGeneratorData);
|
|
2120
2147
|
write(this.hot);
|
|
2121
2148
|
super.serialize(context);
|
|
2122
2149
|
}
|
|
@@ -2143,7 +2170,7 @@ class NormalModule extends Module {
|
|
|
2143
2170
|
parserOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
2144
2171
|
generator: /** @type {EXPECTED_ANY} */ (null),
|
|
2145
2172
|
generatorOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
2146
|
-
resolveOptions:
|
|
2173
|
+
resolveOptions: undefined,
|
|
2147
2174
|
extractSourceMap: /** @type {EXPECTED_ANY} */ (null)
|
|
2148
2175
|
});
|
|
2149
2176
|
obj.deserialize(context);
|
|
@@ -2160,7 +2187,6 @@ class NormalModule extends Module {
|
|
|
2160
2187
|
this.error = read();
|
|
2161
2188
|
this._lastSuccessfulBuildMeta = read();
|
|
2162
2189
|
this._forceBuild = read();
|
|
2163
|
-
this._codeGeneratorData = read();
|
|
2164
2190
|
this.hot = read();
|
|
2165
2191
|
super.deserialize(context);
|
|
2166
2192
|
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const asyncLib = require("neo-async");
|
|
9
8
|
const {
|
|
10
9
|
AsyncSeriesBailHook,
|
|
11
10
|
AsyncSeriesHook,
|
|
@@ -30,6 +29,7 @@ const RuleSetCompiler = require("./rules/RuleSetCompiler");
|
|
|
30
29
|
const UseEffectRulePlugin = require("./rules/UseEffectRulePlugin");
|
|
31
30
|
const LazySet = require("./util/LazySet");
|
|
32
31
|
const { getScheme } = require("./util/URLAbsoluteSpecifier");
|
|
32
|
+
const asyncLib = require("./util/async");
|
|
33
33
|
const { cachedCleverMerge, cachedSetProperty } = require("./util/cleverMerge");
|
|
34
34
|
const {
|
|
35
35
|
applyCaseCorrections,
|
package/lib/RuntimeGlobals.js
CHANGED
|
@@ -15,13 +15,6 @@ module.exports.amdDefine = "__webpack_require__.amdD";
|
|
|
15
15
|
*/
|
|
16
16
|
module.exports.amdOptions = "__webpack_require__.amdO";
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
* analyzable single-chunk `import()` that keeps `ensureChunk` timing and deduplication:
|
|
20
|
-
* resolves immediately for an installed chunk, else runs the literal import and installs it
|
|
21
|
-
* Signature: (chunkId, () => Promise) => Promise
|
|
22
|
-
*/
|
|
23
|
-
module.exports.analyzableChunkImport = "__webpack_require__.ei";
|
|
24
|
-
|
|
25
18
|
/**
|
|
26
19
|
* Creates an async module. The body function must be a async function.
|
|
27
20
|
* "module.exports" will be decorated with an AsyncModulePromise.
|
|
@@ -254,12 +247,28 @@ module.exports.hasCssModules = "has css modules";
|
|
|
254
247
|
*/
|
|
255
248
|
module.exports.hasFetchPriority = "has fetch priority";
|
|
256
249
|
|
|
250
|
+
/**
|
|
251
|
+
* a flag when a deferred startup callback carries a priority
|
|
252
|
+
*/
|
|
253
|
+
module.exports.hasChunkPriority = "has chunk priority";
|
|
254
|
+
|
|
257
255
|
/**
|
|
258
256
|
* the shorthand for Object.prototype.hasOwnProperty
|
|
259
257
|
* using of it decreases the compiled bundle size
|
|
260
258
|
*/
|
|
261
259
|
module.exports.hasOwnProperty = "__webpack_require__.o";
|
|
262
260
|
|
|
261
|
+
/**
|
|
262
|
+
* a flag when a deferred namespace is built from a known export list
|
|
263
|
+
*/
|
|
264
|
+
module.exports.hasSealedDeferredNamespace = "has sealed deferred namespace";
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* a flag when a deferred namespace is synthesized from the module's exports
|
|
268
|
+
*/
|
|
269
|
+
module.exports.hasSynthesizedDeferredNamespace =
|
|
270
|
+
"has synthesized deferred namespace";
|
|
271
|
+
|
|
263
272
|
/**
|
|
264
273
|
* function downloading the update manifest
|
|
265
274
|
*/
|
|
@@ -447,6 +456,11 @@ module.exports.setAnonymousDefaultName = "__webpack_require__.dn";
|
|
|
447
456
|
*/
|
|
448
457
|
module.exports.shareScopeMap = "__webpack_require__.S";
|
|
449
458
|
|
|
459
|
+
/**
|
|
460
|
+
* wrap an exports object in a spec Module Namespace Exotic Object
|
|
461
|
+
*/
|
|
462
|
+
module.exports.specNamespaceObject = "__webpack_require__.ns";
|
|
463
|
+
|
|
450
464
|
/**
|
|
451
465
|
* startup signal from runtime
|
|
452
466
|
* This will be called when the runtime chunk has been loaded.
|
package/lib/RuntimeModule.js
CHANGED
|
@@ -136,22 +136,31 @@ class RuntimeModule extends Module {
|
|
|
136
136
|
updateHash(hash, context) {
|
|
137
137
|
hash.update(this.name);
|
|
138
138
|
hash.update(`${this.stage}`);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
} catch (err) {
|
|
150
|
-
hash.update(/** @type {Error} */ (err).message);
|
|
139
|
+
// A failing `generate()` propagates: hashing its message instead pins the etag
|
|
140
|
+
// of the code generation cache to a constant, which then serves stale code.
|
|
141
|
+
const code =
|
|
142
|
+
this.fullHash || this.dependentHash
|
|
143
|
+
? // Do not use getGeneratedCode here, because i. e. compilation hash might be not
|
|
144
|
+
// ready at this point. We will cache it later instead.
|
|
145
|
+
this.generate()
|
|
146
|
+
: this.getGeneratedCode();
|
|
147
|
+
if (code !== null && code !== undefined) {
|
|
148
|
+
hash.update(code);
|
|
151
149
|
}
|
|
152
150
|
super.updateHash(hash, context);
|
|
153
151
|
}
|
|
154
152
|
|
|
153
|
+
/**
|
|
154
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
155
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
156
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
157
|
+
*/
|
|
158
|
+
getInstalledChunkHandlers() {
|
|
159
|
+
// Answering `null` rather than "none" keeps a module that never heard of this
|
|
160
|
+
// out of a dispatch that would skip the handler it installs.
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
|
|
155
164
|
/**
|
|
156
165
|
* Returns the source types this module can generate.
|
|
157
166
|
* @returns {SourceTypes} types available (do not mutate)
|
|
@@ -244,6 +253,13 @@ class RuntimeModule extends Module {
|
|
|
244
253
|
}
|
|
245
254
|
}
|
|
246
255
|
|
|
256
|
+
/**
|
|
257
|
+
* The answer a runtime module gives when it installs no chunk handler at all
|
|
258
|
+
*/
|
|
259
|
+
RuntimeModule.NO_CHUNK_HANDLERS =
|
|
260
|
+
/** @type {[string, string][]} */
|
|
261
|
+
([]);
|
|
262
|
+
|
|
247
263
|
/**
|
|
248
264
|
* Runtime modules without any dependencies to other runtime modules
|
|
249
265
|
*/
|
package/lib/RuntimePlugin.js
CHANGED
|
@@ -81,6 +81,9 @@ const getGetWorkletBootstrapRuntimeModule = lazyModule(() =>
|
|
|
81
81
|
const getGlobalRuntimeModule = lazyModule(() =>
|
|
82
82
|
require("./runtime/GlobalRuntimeModule")
|
|
83
83
|
);
|
|
84
|
+
const getSpecNamespaceObjectRuntimeModule = lazyModule(() =>
|
|
85
|
+
require("./runtime/SpecNamespaceObjectRuntimeModule")
|
|
86
|
+
);
|
|
84
87
|
const getHasOwnPropertyRuntimeModule = lazyModule(() =>
|
|
85
88
|
require("./runtime/HasOwnPropertyRuntimeModule")
|
|
86
89
|
);
|
|
@@ -189,6 +192,9 @@ const TREE_DEPENDENCIES = {
|
|
|
189
192
|
RuntimeGlobals.makeNamespaceObject,
|
|
190
193
|
RuntimeGlobals.require
|
|
191
194
|
],
|
|
195
|
+
[RuntimeGlobals.deferredModuleAsyncTransitiveDependencies]: [
|
|
196
|
+
RuntimeGlobals.asyncModule
|
|
197
|
+
],
|
|
192
198
|
[RuntimeGlobals.makeOptimizedDeferredNamespaceObject]: [
|
|
193
199
|
RuntimeGlobals.require
|
|
194
200
|
],
|
|
@@ -211,6 +217,7 @@ const SIMPLE_TREE_RUNTIME_MODULES = [
|
|
|
211
217
|
getCreateFakeNamespaceObjectRuntimeModule
|
|
212
218
|
],
|
|
213
219
|
[RuntimeGlobals.hasOwnProperty, getHasOwnPropertyRuntimeModule],
|
|
220
|
+
[RuntimeGlobals.specNamespaceObject, getSpecNamespaceObjectRuntimeModule],
|
|
214
221
|
[
|
|
215
222
|
RuntimeGlobals.compatGetDefaultExport,
|
|
216
223
|
getCompatGetDefaultExportRuntimeModule
|
|
@@ -226,7 +233,6 @@ const SIMPLE_TREE_RUNTIME_MODULES = [
|
|
|
226
233
|
[RuntimeGlobals.shareScopeMap, getShareRuntimeModule],
|
|
227
234
|
[RuntimeGlobals.relativeUrl, getRelativeUrlRuntimeModule],
|
|
228
235
|
[RuntimeGlobals.worker, getWorkerRuntimeModule],
|
|
229
|
-
[RuntimeGlobals.onChunksLoaded, getOnChunksLoadedRuntimeModule],
|
|
230
236
|
[RuntimeGlobals.scriptNonce, getNonceRuntimeModule],
|
|
231
237
|
[RuntimeGlobals.toBinary, getToBinaryRuntimeModule]
|
|
232
238
|
];
|
|
@@ -313,6 +319,16 @@ class RuntimePlugin {
|
|
|
313
319
|
return true;
|
|
314
320
|
});
|
|
315
321
|
}
|
|
322
|
+
compilation.hooks.runtimeRequirementInTree
|
|
323
|
+
.for(RuntimeGlobals.onChunksLoaded)
|
|
324
|
+
.tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
|
|
325
|
+
compilation.addLazyRuntimeModule(
|
|
326
|
+
chunk,
|
|
327
|
+
getOnChunksLoadedRuntimeModule,
|
|
328
|
+
(Ctor) => new Ctor(runtimeRequirement)
|
|
329
|
+
);
|
|
330
|
+
return true;
|
|
331
|
+
});
|
|
316
332
|
compilation.hooks.runtimeRequirementInTree
|
|
317
333
|
.for(RuntimeGlobals.definePropertyGetters)
|
|
318
334
|
.tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
|
|
@@ -342,10 +358,20 @@ class RuntimePlugin {
|
|
|
342
358
|
const asyncModule = runtimeRequirement.has(
|
|
343
359
|
RuntimeGlobals.asyncModule
|
|
344
360
|
);
|
|
361
|
+
const sealed = runtimeRequirement.has(
|
|
362
|
+
RuntimeGlobals.hasSealedDeferredNamespace
|
|
363
|
+
);
|
|
364
|
+
// An unmarked build keeps both shapes, so a call site that
|
|
365
|
+
// predates the markers still gets the permissive runtime.
|
|
366
|
+
const synthesized =
|
|
367
|
+
!sealed ||
|
|
368
|
+
runtimeRequirement.has(
|
|
369
|
+
RuntimeGlobals.hasSynthesizedDeferredNamespace
|
|
370
|
+
);
|
|
345
371
|
compilation.addLazyRuntimeModule(
|
|
346
372
|
chunk,
|
|
347
373
|
getMakeDeferredNamespaceObjectRuntimeModule,
|
|
348
|
-
(Ctor) => new Ctor(asyncModule)
|
|
374
|
+
(Ctor) => new Ctor(asyncModule, sealed, synthesized)
|
|
349
375
|
);
|
|
350
376
|
return true;
|
|
351
377
|
});
|
|
@@ -399,7 +425,11 @@ class RuntimePlugin {
|
|
|
399
425
|
compilation.addLazyRuntimeModule(
|
|
400
426
|
chunk,
|
|
401
427
|
getAsyncModuleRuntimeModule,
|
|
402
|
-
(Ctor) =>
|
|
428
|
+
(Ctor) =>
|
|
429
|
+
new Ctor(
|
|
430
|
+
experiments.deferImport,
|
|
431
|
+
compilation.outputOptions.strictModuleErrorHandling
|
|
432
|
+
)
|
|
403
433
|
);
|
|
404
434
|
return true;
|
|
405
435
|
});
|