webpack 5.110.3 → 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 -0
- 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/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/Compilation.js +320 -302
- package/lib/Compiler.js +209 -46
- 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/ExternalModule.js +41 -14
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +45 -21
- 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 +45 -12
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +30 -3
- package/lib/RuntimeTemplate.js +780 -475
- 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/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 +86 -50
- package/lib/config/normalization.js +82 -12
- 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 +14 -5
- 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 +71 -13
- 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 +6 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +8 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +24 -1
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +50 -0
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +59 -15
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/WorkerDependency.js +1 -2
- package/lib/dependencies/WorkletDependency.js +1 -2
- 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/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -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 +331 -62
- 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 +763 -426
- 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 -24
- 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 +97 -20
- 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 +1 -2
- 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 +100 -66
- 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 +330 -219
- 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/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/SourceProcessor.js +76 -69
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- 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 +4 -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 +379 -66
- 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 +1414 -314
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
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,
|
|
@@ -182,7 +183,9 @@ const recordSideEffectsBailout = (mod, moduleGraph, dep) => {
|
|
|
182
183
|
.getOptimizationBailout(mod)
|
|
183
184
|
.push(
|
|
184
185
|
() =>
|
|
185
|
-
`Dependency (${dep.type}) with side effects at ${formatLocation(
|
|
186
|
+
`Dependency (${dep.type}) with side effects at ${formatLocation(
|
|
187
|
+
dep.loc
|
|
188
|
+
)}`
|
|
186
189
|
);
|
|
187
190
|
};
|
|
188
191
|
|
|
@@ -540,10 +543,12 @@ const createCompilationHooks = () => {
|
|
|
540
543
|
*/
|
|
541
544
|
beforeSnapshot: new SyncHook(["module"]),
|
|
542
545
|
/**
|
|
543
|
-
*
|
|
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]>}
|
|
544
549
|
* @since 5.99.0
|
|
545
550
|
*/
|
|
546
|
-
processResult: new
|
|
551
|
+
processResult: new AsyncSeriesWaterfallHook(["result", "module"]),
|
|
547
552
|
/**
|
|
548
553
|
* @type {AsyncSeriesBailHook<[NormalModule, NeedBuildContext], boolean>}
|
|
549
554
|
* @since 5.49.0
|
|
@@ -1045,7 +1050,9 @@ class NormalModule extends Module {
|
|
|
1045
1050
|
(parseJson(options));
|
|
1046
1051
|
} catch (err) {
|
|
1047
1052
|
throw new Error(
|
|
1048
|
-
`Cannot parse string options: ${
|
|
1053
|
+
`Cannot parse string options: ${
|
|
1054
|
+
/** @type {Error} */ (err).message
|
|
1055
|
+
}`,
|
|
1049
1056
|
{ cause: err }
|
|
1050
1057
|
);
|
|
1051
1058
|
}
|
|
@@ -1298,11 +1305,33 @@ class NormalModule extends Module {
|
|
|
1298
1305
|
});
|
|
1299
1306
|
return callback(error);
|
|
1300
1307
|
}
|
|
1301
|
-
|
|
1308
|
+
hooks.processResult.callAsync(
|
|
1302
1309
|
/** @type {Result} */
|
|
1303
1310
|
(result_),
|
|
1304
|
-
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
|
+
}
|
|
1305
1327
|
);
|
|
1328
|
+
};
|
|
1329
|
+
|
|
1330
|
+
/**
|
|
1331
|
+
* @param {Result} result the result the hook settled on
|
|
1332
|
+
* @returns {void}
|
|
1333
|
+
*/
|
|
1334
|
+
const finishResult = (result) => {
|
|
1306
1335
|
const source = result[0];
|
|
1307
1336
|
const sourceMap = result.length >= 1 ? result[1] : null;
|
|
1308
1337
|
const extraInfo = result.length >= 2 ? result[2] : null;
|
|
@@ -1434,7 +1463,9 @@ class NormalModule extends Module {
|
|
|
1434
1463
|
})
|
|
1435
1464
|
).catch((err) => {
|
|
1436
1465
|
throw new Error(
|
|
1437
|
-
`Failed to parse source map. ${
|
|
1466
|
+
`Failed to parse source map. ${
|
|
1467
|
+
/** @type {Error} */ (err).message
|
|
1468
|
+
}`
|
|
1438
1469
|
);
|
|
1439
1470
|
})
|
|
1440
1471
|
);
|
|
@@ -1494,7 +1525,8 @@ class NormalModule extends Module {
|
|
|
1494
1525
|
}
|
|
1495
1526
|
buildInfo.cacheable = buildInfo.cacheable && result.cacheable;
|
|
1496
1527
|
if (result.notCacheableReasons.length > 0) {
|
|
1497
|
-
buildInfo.notCacheableReasons =
|
|
1528
|
+
getBuildDiagnostics(buildInfo).notCacheableReasons =
|
|
1529
|
+
result.notCacheableReasons;
|
|
1498
1530
|
}
|
|
1499
1531
|
processResult(err, result.result);
|
|
1500
1532
|
}
|
|
@@ -1602,7 +1634,6 @@ class NormalModule extends Module {
|
|
|
1602
1634
|
};
|
|
1603
1635
|
this.buildInfo = {
|
|
1604
1636
|
cacheable: false,
|
|
1605
|
-
notCacheableReasons: undefined,
|
|
1606
1637
|
parsed: true,
|
|
1607
1638
|
fileDependencies: undefined,
|
|
1608
1639
|
contextDependencies: undefined,
|
|
@@ -1620,6 +1651,8 @@ class NormalModule extends Module {
|
|
|
1620
1651
|
pureFunctions: undefined,
|
|
1621
1652
|
inlineExports: undefined,
|
|
1622
1653
|
moduleConcatenationBailout: undefined,
|
|
1654
|
+
moduleConcatenationRootBailout: undefined,
|
|
1655
|
+
diagnostics: undefined,
|
|
1623
1656
|
needCreateRequire: undefined,
|
|
1624
1657
|
usesTopLevelUsingDeclaration: undefined
|
|
1625
1658
|
};
|
|
@@ -2137,7 +2170,7 @@ class NormalModule extends Module {
|
|
|
2137
2170
|
parserOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
2138
2171
|
generator: /** @type {EXPECTED_ANY} */ (null),
|
|
2139
2172
|
generatorOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
2140
|
-
resolveOptions:
|
|
2173
|
+
resolveOptions: undefined,
|
|
2141
2174
|
extractSourceMap: /** @type {EXPECTED_ANY} */ (null)
|
|
2142
2175
|
});
|
|
2143
2176
|
obj.deserialize(context);
|
|
@@ -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
|
);
|
|
@@ -214,6 +217,7 @@ const SIMPLE_TREE_RUNTIME_MODULES = [
|
|
|
214
217
|
getCreateFakeNamespaceObjectRuntimeModule
|
|
215
218
|
],
|
|
216
219
|
[RuntimeGlobals.hasOwnProperty, getHasOwnPropertyRuntimeModule],
|
|
220
|
+
[RuntimeGlobals.specNamespaceObject, getSpecNamespaceObjectRuntimeModule],
|
|
217
221
|
[
|
|
218
222
|
RuntimeGlobals.compatGetDefaultExport,
|
|
219
223
|
getCompatGetDefaultExportRuntimeModule
|
|
@@ -229,7 +233,6 @@ const SIMPLE_TREE_RUNTIME_MODULES = [
|
|
|
229
233
|
[RuntimeGlobals.shareScopeMap, getShareRuntimeModule],
|
|
230
234
|
[RuntimeGlobals.relativeUrl, getRelativeUrlRuntimeModule],
|
|
231
235
|
[RuntimeGlobals.worker, getWorkerRuntimeModule],
|
|
232
|
-
[RuntimeGlobals.onChunksLoaded, getOnChunksLoadedRuntimeModule],
|
|
233
236
|
[RuntimeGlobals.scriptNonce, getNonceRuntimeModule],
|
|
234
237
|
[RuntimeGlobals.toBinary, getToBinaryRuntimeModule]
|
|
235
238
|
];
|
|
@@ -316,6 +319,16 @@ class RuntimePlugin {
|
|
|
316
319
|
return true;
|
|
317
320
|
});
|
|
318
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
|
+
});
|
|
319
332
|
compilation.hooks.runtimeRequirementInTree
|
|
320
333
|
.for(RuntimeGlobals.definePropertyGetters)
|
|
321
334
|
.tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
|
|
@@ -345,10 +358,20 @@ class RuntimePlugin {
|
|
|
345
358
|
const asyncModule = runtimeRequirement.has(
|
|
346
359
|
RuntimeGlobals.asyncModule
|
|
347
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
|
+
);
|
|
348
371
|
compilation.addLazyRuntimeModule(
|
|
349
372
|
chunk,
|
|
350
373
|
getMakeDeferredNamespaceObjectRuntimeModule,
|
|
351
|
-
(Ctor) => new Ctor(asyncModule)
|
|
374
|
+
(Ctor) => new Ctor(asyncModule, sealed, synthesized)
|
|
352
375
|
);
|
|
353
376
|
return true;
|
|
354
377
|
});
|
|
@@ -402,7 +425,11 @@ class RuntimePlugin {
|
|
|
402
425
|
compilation.addLazyRuntimeModule(
|
|
403
426
|
chunk,
|
|
404
427
|
getAsyncModuleRuntimeModule,
|
|
405
|
-
(Ctor) =>
|
|
428
|
+
(Ctor) =>
|
|
429
|
+
new Ctor(
|
|
430
|
+
experiments.deferImport,
|
|
431
|
+
compilation.outputOptions.strictModuleErrorHandling
|
|
432
|
+
)
|
|
406
433
|
);
|
|
407
434
|
return true;
|
|
408
435
|
});
|