@depup/webpack 5.110.1-depup.0 → 5.111.1-depup.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 +7 -8
- package/changes.json +7 -11
- package/lib/APIPlugin.js +26 -11
- 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/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +337 -338
- package/lib/Compiler.js +213 -51
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ConstPlugin.js +16 -132
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DependencyTemplate.js +2 -1
- package/lib/DotenvPlugin.js +64 -40
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +30 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +17 -15
- package/lib/Generator.js +24 -2
- package/lib/HotModuleReplacementPlugin.js +55 -7
- package/lib/IgnorePlugin.js +1 -1
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +19 -10
- package/lib/ModuleGraph.js +6 -9
- package/lib/MultiCompiler.js +7 -17
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +148 -70
- 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 +1147 -847
- package/lib/SourceMapDevToolPlugin.js +54 -104
- package/lib/TemplatedPathPlugin.js +16 -59
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetBytesGenerator.js +7 -1
- package/lib/asset/AssetGenerator.js +50 -24
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/AssetSourceGenerator.js +7 -1
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/buildChunkGraph.js +11 -15
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
- package/lib/cache/PackFileCacheStrategy.js +17 -19
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/config/browserslistTargetHandler.js +17 -4
- package/lib/config/defaults.js +162 -142
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +27 -11
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +92 -15
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +3 -10
- package/lib/css/CssParser.js +162 -31
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +43 -32
- package/lib/css/data.js +3526 -871
- package/lib/css/syntax.js +6455 -1237
- package/lib/debug/ProfilingPlugin.js +7 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/ContextElementDependency.js +1 -1
- package/lib/dependencies/CssIcssExportDependency.js +13 -9
- package/lib/dependencies/CssIcssImportDependency.js +3 -6
- package/lib/dependencies/CssUrlDependency.js +3 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +10 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +217 -34
- package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +198 -25
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +117 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +136 -104
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +67 -25
- package/lib/dependencies/ImportParserPlugin.js +25 -15
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/URLContextDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +6 -5
- package/lib/dependencies/WorkerAndWorkletPlugin.js +16 -21
- package/lib/dependencies/WorkerDependency.js +12 -18
- package/lib/dependencies/WorkletDependency.js +12 -20
- 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/HookWebpackError.js +3 -2
- 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 +21 -5
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +91 -53
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +479 -215
- package/lib/html/HtmlParser.js +110 -147
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +142 -7
- package/lib/html/htmlMinify.js +92 -122
- package/lib/html/syntax.js +2031 -1556
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +49 -3
- package/lib/javascript/ChunkFormatHelpers.js +4 -3
- package/lib/javascript/JavascriptGenerator.js +8 -1
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +76 -80
- package/lib/javascript/JavascriptParser.js +1970 -900
- 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 +1500 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +9061 -5262
- package/lib/json/JsonGenerator.js +7 -1
- package/lib/library/ModuleLibraryPlugin.js +171 -132
- package/lib/loaders/LoaderRunner.js +170 -14
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -15
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +222 -125
- package/lib/optimize/ConstExportsPlugin.js +50 -34
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -2
- package/lib/optimize/InnerGraphPlugin.js +7 -13
- package/lib/optimize/LimitChunkCountPlugin.js +5 -8
- package/lib/optimize/MangleExportsPlugin.js +13 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
- package/lib/optimize/RealContentHashPlugin.js +179 -44
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
- package/lib/optimize/SplitChunksPlugin.js +2 -4
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/BroadContextsPlugin.js +1 -1
- package/lib/performance/CacheEffectivenessPlugin.js +7 -7
- 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/SizeLimitsPlugin.js +2 -4
- 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 +8 -8
- 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 +29 -35
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +103 -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 +12 -4
- 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 +11 -4
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +313 -222
- 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/DataUriPlugin.js +3 -6
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/schemes/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +31 -18
- package/lib/serialization/ObjectMiddleware.js +168 -139
- 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 +6 -5
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/typescript/TypeScriptPlugin.js +10 -13
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +115 -99
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/chainedImports.js +3 -4
- package/lib/util/concatenate.js +4 -4
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +2 -3
- package/lib/util/deterministicGrouping.js +8 -13
- package/lib/util/findGraphRoots.js +6 -13
- package/lib/util/fs.js +27 -1
- package/lib/util/globUtils.js +1 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +7 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +7 -12
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -6
- package/lib/web/FetchCompileWasmPlugin.js +4 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +55 -46
- 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 +1795 -608
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -7,12 +7,31 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
|
+
const { getOnlyHandlerKey } = require("../util/handlerKeys");
|
|
11
|
+
const { propertyAccess } = require("../util/property");
|
|
10
12
|
|
|
11
13
|
/** @import Compilation from "../Compilation" */
|
|
14
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
12
15
|
|
|
13
16
|
class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
14
|
-
|
|
17
|
+
/**
|
|
18
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
|
19
|
+
*/
|
|
20
|
+
constructor(runtimeRequirements) {
|
|
15
21
|
super("chunk loaded");
|
|
22
|
+
/** @type {ReadOnlyRuntimeRequirements} */
|
|
23
|
+
this.runtimeRequirements = runtimeRequirements;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
28
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
29
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
30
|
+
*/
|
|
31
|
+
getInstalledChunkHandlers() {
|
|
32
|
+
// Reads a map rather than installing onto one, so reading its code back would
|
|
33
|
+
// render it in a cycle.
|
|
34
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
16
35
|
}
|
|
17
36
|
|
|
18
37
|
/**
|
|
@@ -22,24 +41,38 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
22
41
|
generate() {
|
|
23
42
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
43
|
const { runtimeTemplate } = compilation;
|
|
44
|
+
// Only a prefetch startup callback is queued behind a priority, so without one
|
|
45
|
+
// the queue keeps insertion order and nothing has to hold the lowest seen.
|
|
46
|
+
const withPriority = this.runtimeRequirements.has(
|
|
47
|
+
RuntimeGlobals.hasChunkPriority
|
|
48
|
+
);
|
|
49
|
+
const only = getOnlyHandlerKey(this, RuntimeGlobals.onChunksLoaded);
|
|
25
50
|
return Template.asString([
|
|
26
51
|
`${runtimeTemplate.renderConst()} deferred = [];`,
|
|
27
52
|
`${RuntimeGlobals.onChunksLoaded} = ${runtimeTemplate.basicFunction(
|
|
28
|
-
|
|
53
|
+
`result, chunkIds, fn${withPriority ? ", priority" : ""}`,
|
|
29
54
|
[
|
|
30
55
|
"if(chunkIds) {",
|
|
31
|
-
Template.indent(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
56
|
+
Template.indent(
|
|
57
|
+
withPriority
|
|
58
|
+
? [
|
|
59
|
+
`${runtimeTemplate.assignOr("priority", "0")};`,
|
|
60
|
+
"for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];",
|
|
61
|
+
"deferred[i] = [chunkIds, fn, priority];",
|
|
62
|
+
"return;"
|
|
63
|
+
]
|
|
64
|
+
: ["deferred.push([chunkIds, fn]);", "return;"]
|
|
65
|
+
),
|
|
37
66
|
"}",
|
|
38
|
-
|
|
67
|
+
...(withPriority
|
|
68
|
+
? [`${runtimeTemplate.renderLet()} notFulfilled = Infinity;`]
|
|
69
|
+
: []),
|
|
39
70
|
"for (var i = 0; i < deferred.length; i++) {",
|
|
40
71
|
Template.indent([
|
|
41
72
|
runtimeTemplate.destructureArray(
|
|
42
|
-
|
|
73
|
+
withPriority
|
|
74
|
+
? ["chunkIds", "fn", "priority"]
|
|
75
|
+
: ["chunkIds", "fn"],
|
|
43
76
|
"deferred[i]"
|
|
44
77
|
),
|
|
45
78
|
`${runtimeTemplate.renderLet()} fulfilled = true;`,
|
|
@@ -47,18 +80,32 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
47
80
|
Template.indent([
|
|
48
81
|
// Parenthesized: `&` binds looser than `===`, so `priority & 1 === 0`
|
|
49
82
|
// is `priority & false` and gates every priority, not just the odd ones.
|
|
50
|
-
`if (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
83
|
+
`if (${
|
|
84
|
+
withPriority
|
|
85
|
+
? "((priority & 1) === 0 || notFulfilled >= priority) && "
|
|
86
|
+
: ""
|
|
87
|
+
}${
|
|
88
|
+
only === null
|
|
89
|
+
? `Object.keys(${
|
|
90
|
+
RuntimeGlobals.onChunksLoaded
|
|
91
|
+
}).every(${runtimeTemplate.returningFunction(
|
|
92
|
+
`${RuntimeGlobals.onChunksLoaded}[key](chunkIds[j])`,
|
|
93
|
+
"key"
|
|
94
|
+
)})`
|
|
95
|
+
: `${RuntimeGlobals.onChunksLoaded}${propertyAccess([
|
|
96
|
+
only
|
|
97
|
+
])}(chunkIds[j])`
|
|
98
|
+
}) {`,
|
|
56
99
|
Template.indent(["chunkIds.splice(j--, 1);"]),
|
|
57
100
|
"} else {",
|
|
58
|
-
Template.indent(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
101
|
+
Template.indent(
|
|
102
|
+
withPriority
|
|
103
|
+
? [
|
|
104
|
+
"fulfilled = false;",
|
|
105
|
+
"if(priority < notFulfilled) notFulfilled = priority;"
|
|
106
|
+
]
|
|
107
|
+
: ["fulfilled = false;"]
|
|
108
|
+
),
|
|
62
109
|
"}"
|
|
63
110
|
]),
|
|
64
111
|
"}",
|
|
@@ -30,6 +30,15 @@ class PublicPathRuntimeModule extends RuntimeModule {
|
|
|
30
30
|
this.publicPath = publicPath;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
35
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
36
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
37
|
+
*/
|
|
38
|
+
getInstalledChunkHandlers() {
|
|
39
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
40
|
+
}
|
|
41
|
+
|
|
33
42
|
/**
|
|
34
43
|
* Generates runtime code for this runtime module.
|
|
35
44
|
* @returns {string | null} runtime code
|
|
@@ -25,6 +25,15 @@ class RuntimeIdRuntimeModule extends RuntimeModule {
|
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
30
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
31
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
32
|
+
*/
|
|
33
|
+
getInstalledChunkHandlers() {
|
|
34
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
35
|
+
}
|
|
36
|
+
|
|
28
37
|
/**
|
|
29
38
|
* Generates runtime code for this runtime module.
|
|
30
39
|
* @returns {string | null} runtime code
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
+
const Template = require("../Template");
|
|
10
|
+
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
11
|
+
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
|
+
|
|
14
|
+
class SpecNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
15
|
+
constructor() {
|
|
16
|
+
super("spec namespace object");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Generates runtime code for this runtime module.
|
|
21
|
+
* @returns {string | null} runtime code
|
|
22
|
+
*/
|
|
23
|
+
generate() {
|
|
24
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
25
|
+
const { runtimeTemplate } = compilation;
|
|
26
|
+
const cst = runtimeTemplate.renderConst();
|
|
27
|
+
const lt = runtimeTemplate.renderLet();
|
|
28
|
+
const fn = RuntimeGlobals.specNamespaceObject;
|
|
29
|
+
return Template.asString([
|
|
30
|
+
`${fn} = ${runtimeTemplate.basicFunction("exports, record, mode", [
|
|
31
|
+
// One namespace per module: a module's own exports object identifies it,
|
|
32
|
+
// while a synthesized one is fresh per site, so its record identifies it.
|
|
33
|
+
`${cst} owner = record || exports;`,
|
|
34
|
+
`${lt} slots = ${fn}.c.get(owner);`,
|
|
35
|
+
`if (!slots) ${fn}.c.set(owner, (slots = { __proto__: null }));`,
|
|
36
|
+
// A synthesized namespace carries different names per mode, so one
|
|
37
|
+
// module can owe its importers more than one namespace.
|
|
38
|
+
`${cst} cached = slots[mode];`,
|
|
39
|
+
"if (cached) return cached;",
|
|
40
|
+
// The exports object keeps the live bindings; the sealed target
|
|
41
|
+
// carries only their names, so the traps stay invariant-safe.
|
|
42
|
+
`${cst} names = Object.getOwnPropertyNames(exports).filter(${runtimeTemplate.returningFunction(
|
|
43
|
+
"name !== '__esModule'",
|
|
44
|
+
"name"
|
|
45
|
+
)}).sort();`,
|
|
46
|
+
`${cst} target = { __proto__: null };`,
|
|
47
|
+
"for (var i = 0; i < names.length; i++) Object.defineProperty(target, names[i], { value: undefined, writable: true, enumerable: true, configurable: false });",
|
|
48
|
+
"Object.defineProperty(target, Symbol.toStringTag, { value: 'Module' });",
|
|
49
|
+
"Object.preventExtensions(target);",
|
|
50
|
+
`${cst} own = ${runtimeTemplate.returningFunction(
|
|
51
|
+
"typeof name === 'string' && Object.prototype.hasOwnProperty.call(target, name)",
|
|
52
|
+
"name"
|
|
53
|
+
)};`,
|
|
54
|
+
`${cst} ns = new Proxy(target, {`,
|
|
55
|
+
Template.indent([
|
|
56
|
+
"__proto__: null,",
|
|
57
|
+
"getPrototypeOf: function() { return null; },",
|
|
58
|
+
"setPrototypeOf: function(_, proto) { return proto === null; },",
|
|
59
|
+
"isExtensible: function() { return false; },",
|
|
60
|
+
"preventExtensions: function() { return true; },",
|
|
61
|
+
"get: function(_, name, receiver) { return own(name) ? exports[name] : Reflect.get(target, name, receiver); },",
|
|
62
|
+
"has: function(_, name) { return own(name) || Reflect.has(target, name); },",
|
|
63
|
+
"ownKeys: function() { return Reflect.ownKeys(target); },",
|
|
64
|
+
"getOwnPropertyDescriptor: function(_, name) { return own(name) ? { value: exports[name], writable: true, enumerable: true, configurable: false } : Reflect.getOwnPropertyDescriptor(target, name); },",
|
|
65
|
+
"set: function() { return false; },",
|
|
66
|
+
// A namespace may only be redefined to the descriptor it
|
|
67
|
+
// already reports, so anything else is rejected.
|
|
68
|
+
"defineProperty: function(_, name, descriptor) {",
|
|
69
|
+
Template.indent([
|
|
70
|
+
// Symbol keys are ordinary, so redefining Symbol.toStringTag
|
|
71
|
+
// to the descriptor it already has must still succeed.
|
|
72
|
+
"if (typeof name === 'symbol') return Reflect.defineProperty(target, name, descriptor);",
|
|
73
|
+
"if (!own(name) || 'get' in descriptor || 'set' in descriptor) return false;",
|
|
74
|
+
"if (descriptor.configurable === true || descriptor.enumerable === false || descriptor.writable === false) return false;",
|
|
75
|
+
"return !('value' in descriptor) || Object.is(descriptor.value, exports[name]);"
|
|
76
|
+
]),
|
|
77
|
+
"},",
|
|
78
|
+
"deleteProperty: function(_, name) { return !own(name) && !Reflect.has(target, name); }"
|
|
79
|
+
]),
|
|
80
|
+
"});",
|
|
81
|
+
"slots[mode] = ns;",
|
|
82
|
+
"return ns;"
|
|
83
|
+
])};`,
|
|
84
|
+
// The same owner must always yield the same namespace.
|
|
85
|
+
`${fn}.c = new WeakMap();`
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
module.exports = SpecNamespaceObjectRuntimeModule;
|
|
@@ -23,6 +23,15 @@ class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
|
|
|
23
23
|
this.asyncChunkLoading = asyncChunkLoading;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
28
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
29
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
30
|
+
*/
|
|
31
|
+
getInstalledChunkHandlers() {
|
|
32
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
33
|
+
}
|
|
34
|
+
|
|
26
35
|
/**
|
|
27
36
|
* Generates runtime code for this runtime module.
|
|
28
37
|
* @returns {string | null} runtime code
|
|
@@ -31,6 +31,15 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
31
31
|
this.asyncChunkLoading = asyncChunkLoading;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
36
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
37
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
38
|
+
*/
|
|
39
|
+
getInstalledChunkHandlers() {
|
|
40
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
41
|
+
}
|
|
42
|
+
|
|
34
43
|
/**
|
|
35
44
|
* Generates runtime code for this runtime module.
|
|
36
45
|
* @returns {string | null} runtime code
|
|
@@ -22,6 +22,15 @@ class SystemContextRuntimeModule extends RuntimeModule {
|
|
|
22
22
|
return false;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
27
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
28
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
29
|
+
*/
|
|
30
|
+
getInstalledChunkHandlers() {
|
|
31
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
32
|
+
}
|
|
33
|
+
|
|
25
34
|
/**
|
|
26
35
|
* Generates runtime code for this runtime module.
|
|
27
36
|
* @returns {string | null} runtime code
|
|
@@ -16,6 +16,15 @@ class ToBinaryRuntimeModule extends RuntimeModule {
|
|
|
16
16
|
super("to binary");
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
21
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
22
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
23
|
+
*/
|
|
24
|
+
getInstalledChunkHandlers() {
|
|
25
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
26
|
+
}
|
|
27
|
+
|
|
19
28
|
/**
|
|
20
29
|
* Generates runtime code for this runtime module.
|
|
21
30
|
* @returns {string | null} runtime code
|
|
@@ -34,12 +34,9 @@ class DataUriPlugin {
|
|
|
34
34
|
);
|
|
35
35
|
resourceData.data.encodedContent = match[4] || "";
|
|
36
36
|
}
|
|
37
|
-
// Inherit the issuer's resolution context so
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
// URI) resolve relative to where the URI was referenced
|
|
41
|
-
// from, instead of against the synthetic `data:.../` path
|
|
42
|
-
// that `getContext("data:…")` would otherwise infer.
|
|
37
|
+
// Inherit the issuer's resolution context, so a dependency found
|
|
38
|
+
// inside the data URI's body resolves against where the URI was
|
|
39
|
+
// referenced, not the synthetic `data:…` path.
|
|
43
40
|
if (
|
|
44
41
|
resourceData.context === undefined &&
|
|
45
42
|
resolveData.context !== undefined
|
|
@@ -149,7 +149,8 @@ const verifyIntegrity = (content, integrity) => {
|
|
|
149
149
|
};
|
|
150
150
|
|
|
151
151
|
/**
|
|
152
|
-
* Parses key value pairs.
|
|
152
|
+
* Parses key value pairs. Keys are lower-cased because HTTP directive names are
|
|
153
|
+
* case-insensitive; values are kept verbatim (they may be quoted field lists).
|
|
153
154
|
* @param {string} str input
|
|
154
155
|
* @returns {Record<string, string>} parsed
|
|
155
156
|
*/
|
|
@@ -159,11 +160,11 @@ const parseKeyValuePairs = (str) => {
|
|
|
159
160
|
for (const item of str.split(",")) {
|
|
160
161
|
const i = item.indexOf("=");
|
|
161
162
|
if (i >= 0) {
|
|
162
|
-
const key = item.slice(0, i).trim();
|
|
163
|
+
const key = item.slice(0, i).trim().toLowerCase();
|
|
163
164
|
const value = item.slice(i + 1).trim();
|
|
164
165
|
result[key] = value;
|
|
165
166
|
} else {
|
|
166
|
-
const key = item.trim();
|
|
167
|
+
const key = item.trim().toLowerCase();
|
|
167
168
|
if (!key) continue;
|
|
168
169
|
result[key] = key;
|
|
169
170
|
}
|
|
@@ -186,7 +187,9 @@ const parseCacheControl = (cacheControl, requestTime) => {
|
|
|
186
187
|
let validUntil = 0;
|
|
187
188
|
if (cacheControl) {
|
|
188
189
|
const parsed = parseKeyValuePairs(cacheControl);
|
|
189
|
-
if (parsed["no-cache"]
|
|
190
|
+
if (parsed["no-cache"] || parsed["no-store"]) {
|
|
191
|
+
storeCache = storeLock = false;
|
|
192
|
+
}
|
|
190
193
|
if (parsed["max-age"] && !Number.isNaN(Number(parsed["max-age"]))) {
|
|
191
194
|
validUntil = requestTime + Number(parsed["max-age"]) * 1000;
|
|
192
195
|
}
|
|
@@ -984,7 +987,11 @@ class HttpUriPlugin {
|
|
|
984
987
|
/** @type {Buffer[]} */
|
|
985
988
|
const bufferArr = [];
|
|
986
989
|
|
|
987
|
-
|
|
990
|
+
// content codings are case-insensitive tokens
|
|
991
|
+
const contentEncodingHeader = res.headers["content-encoding"];
|
|
992
|
+
const contentEncoding =
|
|
993
|
+
contentEncodingHeader &&
|
|
994
|
+
contentEncodingHeader.trim().toLowerCase();
|
|
988
995
|
/** @type {Readable} */
|
|
989
996
|
let stream = res;
|
|
990
997
|
if (contentEncoding === "gzip") {
|
|
@@ -994,6 +1001,16 @@ class HttpUriPlugin {
|
|
|
994
1001
|
} else if (contentEncoding === "deflate") {
|
|
995
1002
|
stream = stream.pipe(createInflate());
|
|
996
1003
|
}
|
|
1004
|
+
if (stream !== res) {
|
|
1005
|
+
// a decompressor error never reaches the request's handler
|
|
1006
|
+
stream.once("error", (err) => {
|
|
1007
|
+
logger.log(
|
|
1008
|
+
`GET ${url} [${res.statusCode}] (invalid encoding)`
|
|
1009
|
+
);
|
|
1010
|
+
err.message += `\nwhile decompressing ${url}`;
|
|
1011
|
+
callback(err);
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
997
1014
|
|
|
998
1015
|
stream.on(
|
|
999
1016
|
"data",
|
|
@@ -36,7 +36,7 @@ const PLUGIN_NAME = "VirtualUrlPlugin";
|
|
|
36
36
|
/**
|
|
37
37
|
* Defines the loader context type used by this module.
|
|
38
38
|
* @template T
|
|
39
|
-
* @typedef {import("
|
|
39
|
+
* @typedef {import("../NormalModule").LoaderContext<T>} LoaderContext
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
42
|
/**
|
|
@@ -2,15 +2,6 @@
|
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
"use strict";
|
|
6
|
-
|
|
7
|
-
const { deserialize: v8Deserialize, serialize: v8Serialize } = require("v8");
|
|
8
|
-
const memoize = require("../util/memoize");
|
|
9
|
-
const SerializerMiddleware = require("./SerializerMiddleware");
|
|
10
|
-
|
|
11
|
-
/** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
|
|
12
|
-
/** @import { BufferSerializableType } from "./types" */
|
|
13
|
-
|
|
14
5
|
/*
|
|
15
6
|
Format:
|
|
16
7
|
|
|
@@ -28,6 +19,15 @@ ValuesHeaderByte -> 0xf1
|
|
|
28
19
|
LazyHeaderByte -> 0xf2
|
|
29
20
|
*/
|
|
30
21
|
|
|
22
|
+
"use strict";
|
|
23
|
+
|
|
24
|
+
const { deserialize: v8Deserialize, serialize: v8Serialize } = require("v8");
|
|
25
|
+
const memoize = require("../util/memoize");
|
|
26
|
+
const SerializerMiddleware = require("./SerializerMiddleware");
|
|
27
|
+
|
|
28
|
+
/** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
|
|
29
|
+
/** @import { BufferSerializableType } from "./types" */
|
|
30
|
+
|
|
31
31
|
const VALUES_HEADER = 0xf1;
|
|
32
32
|
const LAZY_HEADER = 0xf2;
|
|
33
33
|
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
/*
|
|
6
|
+
Format:
|
|
7
|
+
|
|
8
|
+
File -> Header Section*
|
|
9
|
+
|
|
10
|
+
Version -> u32
|
|
11
|
+
AmountOfSections -> u32
|
|
12
|
+
SectionSize -> i32 (if less than zero represents lazy value)
|
|
13
|
+
|
|
14
|
+
Header -> Version AmountOfSections SectionSize*
|
|
15
|
+
|
|
16
|
+
Buffer -> n bytes
|
|
17
|
+
Section -> Buffer
|
|
18
|
+
|
|
19
|
+
*/
|
|
20
|
+
|
|
5
21
|
"use strict";
|
|
6
22
|
|
|
7
23
|
const { constants } = require("buffer");
|
|
@@ -35,22 +51,6 @@ const SerializerMiddleware = require("./SerializerMiddleware");
|
|
|
35
51
|
/** @import { IStats, IntermediateFileSystem } from "../util/fs" */
|
|
36
52
|
/** @import { BufferSerializableType } from "./types" */
|
|
37
53
|
|
|
38
|
-
/*
|
|
39
|
-
Format:
|
|
40
|
-
|
|
41
|
-
File -> Header Section*
|
|
42
|
-
|
|
43
|
-
Version -> u32
|
|
44
|
-
AmountOfSections -> u32
|
|
45
|
-
SectionSize -> i32 (if less than zero represents lazy value)
|
|
46
|
-
|
|
47
|
-
Header -> Version AmountOfSections SectionSize*
|
|
48
|
-
|
|
49
|
-
Buffer -> n bytes
|
|
50
|
-
Section -> Buffer
|
|
51
|
-
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
54
|
// "wpc" + 1 in little-endian
|
|
55
55
|
const VERSION = 0x01637077;
|
|
56
56
|
const WRITE_LIMIT_TOTAL = 0x7fff0000;
|
|
@@ -549,9 +549,13 @@ class FileMiddleware extends SerializerMiddleware {
|
|
|
549
549
|
});
|
|
550
550
|
}
|
|
551
551
|
if (compression) {
|
|
552
|
-
pipeline
|
|
552
|
+
// resolve on the pipeline, not on the transform's "finish":
|
|
553
|
+
// the latter fires before the destination has flushed
|
|
554
|
+
pipeline(compression, stream, (err) => {
|
|
555
|
+
if (err) return reject(err);
|
|
556
|
+
resolve();
|
|
557
|
+
});
|
|
553
558
|
stream = compression;
|
|
554
|
-
stream.on("finish", () => resolve());
|
|
555
559
|
} else {
|
|
556
560
|
stream.on("error", (err) => reject(err));
|
|
557
561
|
stream.on("finish", () => resolve());
|
|
@@ -793,6 +797,15 @@ class FileMiddleware extends SerializerMiddleware {
|
|
|
793
797
|
});
|
|
794
798
|
return;
|
|
795
799
|
}
|
|
800
|
+
// a file truncated after `stat` reads 0 bytes forever
|
|
801
|
+
if (bytesRead === 0 && remaining > 0) {
|
|
802
|
+
this.fs.close(fd, (err) => {
|
|
803
|
+
reject(
|
|
804
|
+
err || new Error(`Unexpected end of file ${file}`)
|
|
805
|
+
);
|
|
806
|
+
});
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
796
809
|
/** @type {number} */
|
|
797
810
|
(currentBufferUsed) += bytesRead;
|
|
798
811
|
remaining -= bytesRead;
|