@depup/webpack 5.110.3-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/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +336 -337
- package/lib/Compiler.js +213 -51
- 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 +24 -28
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +20 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +9 -13
- 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 +135 -50
- 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 +813 -518
- 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/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 +138 -128
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +82 -12
- 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 +94 -36
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +7 -6
- 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 +3514 -869
- package/lib/css/syntax.js +6370 -1220
- 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 +14 -5
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- 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/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +74 -17
- 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 +6 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +111 -17
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +3 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +124 -102
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- 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 +1 -1
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- 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 +15 -21
- package/lib/dependencies/WorkerDependency.js +7 -7
- package/lib/dependencies/WorkletDependency.js +7 -11
- 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/HookWebpackError.js +3 -2
- 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/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +418 -200
- 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 +1618 -1391
- 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 +73 -72
- 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 +137 -9
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +178 -120
- package/lib/optimize/ConstExportsPlugin.js +50 -39
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -123
- 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 +68 -9
- 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 +18 -23
- 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 +98 -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 +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 +305 -224
- 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/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +16 -16
- 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 +2 -3
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +91 -91
- 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/createHooksRegistry.js +1 -2
- 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 +5 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- 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/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 +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 +1723 -604
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -5,26 +5,26 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const asyncLib = require("neo-async");
|
|
9
8
|
const { AsyncSeriesWaterfallHook, SyncWaterfallHook } = require("tapable");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const { cachedSetProperty } = require("
|
|
15
|
-
const { createFakeHook } = require("
|
|
16
|
-
const { join } = require("
|
|
9
|
+
const ModuleFactory = require("../ModuleFactory");
|
|
10
|
+
const ContextElementDependency = require("../dependencies/ContextElementDependency");
|
|
11
|
+
const LazySet = require("../util/LazySet");
|
|
12
|
+
const asyncLib = require("../util/async");
|
|
13
|
+
const { cachedSetProperty } = require("../util/cleverMerge");
|
|
14
|
+
const { createFakeHook } = require("../util/deprecation");
|
|
15
|
+
const { join } = require("../util/fs");
|
|
17
16
|
const {
|
|
18
17
|
globPatternBaseReachesDir,
|
|
19
18
|
globUserRequest,
|
|
20
19
|
isNonExhaustiveImportMetaGlobSkippedDir,
|
|
21
20
|
resolveContextModuleGlobPattern
|
|
22
|
-
} = require("
|
|
21
|
+
} = require("../util/globUtils");
|
|
22
|
+
const ContextModule = require("./ContextModule");
|
|
23
23
|
|
|
24
|
-
/** @import { ResolvedContextModuleGlobPattern } from "
|
|
24
|
+
/** @import { ResolvedContextModuleGlobPattern } from "../util/globUtils" */
|
|
25
25
|
/** @typedef {(context: string, subResource: string, callback: () => void, resolvedGlobPatterns?: ResolvedContextModuleGlobPattern[]) => void} AddSubDirectoryFn */
|
|
26
26
|
/** @import { ResolveRequest } from "enhanced-resolve" */
|
|
27
|
-
/** @import { FileSystemDependencies } from "
|
|
27
|
+
/** @import { FileSystemDependencies } from "../Compilation" */
|
|
28
28
|
/**
|
|
29
29
|
* @import {
|
|
30
30
|
* ContextModuleOptions,
|
|
@@ -36,17 +36,17 @@ const {
|
|
|
36
36
|
* @import {
|
|
37
37
|
* ModuleFactoryCreateData,
|
|
38
38
|
* ModuleFactoryCallback
|
|
39
|
-
* } from "
|
|
39
|
+
* } from "../ModuleFactory"
|
|
40
40
|
*/
|
|
41
|
-
/** @import ResolverFactory from "
|
|
42
|
-
/** @import ContextDependency from "
|
|
41
|
+
/** @import ResolverFactory from "../ResolverFactory" */
|
|
42
|
+
/** @import ContextDependency from "../dependencies/ContextDependency" */
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Defines the shared type used by this module.
|
|
46
46
|
* @template T
|
|
47
|
-
* @typedef {import("
|
|
47
|
+
* @typedef {import("../util/deprecation").FakeHook<T>} FakeHook<T>
|
|
48
48
|
*/
|
|
49
|
-
/** @import { IStats, InputFileSystem } from "
|
|
49
|
+
/** @import { IStats, InputFileSystem } from "../util/fs" */
|
|
50
50
|
/** @typedef {{ context: string, request: string }} ContextAlternativeRequest */
|
|
51
51
|
|
|
52
52
|
/**
|
|
@@ -531,11 +531,9 @@ class ContextModuleFactory extends ModuleFactory {
|
|
|
531
531
|
}
|
|
532
532
|
return callback();
|
|
533
533
|
}
|
|
534
|
-
//
|
|
535
|
-
//
|
|
536
|
-
//
|
|
537
|
-
// lookup, array allocations) for every file in the
|
|
538
|
-
// context — which is the bulk of work on rebuilds.
|
|
534
|
+
// Collected for one batched `alternativeRequests` call per
|
|
535
|
+
// directory: calling the hook per file would pay its overhead
|
|
536
|
+
// across the whole context, the bulk of a rebuild.
|
|
539
537
|
fileObjs.push({
|
|
540
538
|
context: ctx,
|
|
541
539
|
request: `.${subResource.slice(ctx.length).replace(/\\/g, "/")}`
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const ContextElementDependency = require("
|
|
9
|
-
const { isAbsolute, join } = require("
|
|
8
|
+
const ContextElementDependency = require("../dependencies/ContextElementDependency");
|
|
9
|
+
const { isAbsolute, join } = require("../util/fs");
|
|
10
10
|
|
|
11
|
-
/** @import Compiler from "
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
12
|
/** @import { ContextModuleOptions } from "./ContextModule" */
|
|
13
13
|
/**
|
|
14
14
|
* @import {
|
|
@@ -16,7 +16,7 @@ const { isAbsolute, join } = require("./util/fs");
|
|
|
16
16
|
* AfterContextResolveData
|
|
17
17
|
* } from "./ContextModuleFactory"
|
|
18
18
|
*/
|
|
19
|
-
/** @import { InputFileSystem } from "
|
|
19
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
20
20
|
|
|
21
21
|
/** @typedef {Record<string, string>} NewContentCreateContextMap */
|
|
22
22
|
|
package/lib/css/CssGenerator.js
CHANGED
|
@@ -32,6 +32,7 @@ const Template = require("../Template");
|
|
|
32
32
|
const { getPresentKinds } = require("../TemplatedPathPlugin");
|
|
33
33
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
34
34
|
const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImportSideEffectDependency");
|
|
35
|
+
const LoaderImportDependency = require("../dependencies/LoaderImportDependency");
|
|
35
36
|
|
|
36
37
|
const { encodeMappings } = require("../util/createMappings");
|
|
37
38
|
const {
|
|
@@ -617,10 +618,21 @@ class CssGenerator extends Generator {
|
|
|
617
618
|
generateError(error, module, generateContext) {
|
|
618
619
|
switch (generateContext.type) {
|
|
619
620
|
case JAVASCRIPT_TYPE: {
|
|
620
|
-
return new RawSource(
|
|
621
|
+
return new RawSource(
|
|
622
|
+
Generator.throwBuildErrorCode(
|
|
623
|
+
error,
|
|
624
|
+
undefined,
|
|
625
|
+
generateContext.runtimeTemplate.requestShortener
|
|
626
|
+
)
|
|
627
|
+
);
|
|
621
628
|
}
|
|
622
629
|
case CSS_TYPE: {
|
|
623
|
-
|
|
630
|
+
const message = Generator.buildErrorMessage(
|
|
631
|
+
error,
|
|
632
|
+
generateContext.runtimeTemplate.requestShortener
|
|
633
|
+
);
|
|
634
|
+
|
|
635
|
+
return new RawSource(`/**\n ${message} \n**/`);
|
|
624
636
|
}
|
|
625
637
|
default:
|
|
626
638
|
return null;
|
|
@@ -668,6 +680,13 @@ class CssGenerator extends Generator {
|
|
|
668
680
|
continue;
|
|
669
681
|
}
|
|
670
682
|
|
|
683
|
+
// `importModule()` executes the module as JavaScript, and its dependency
|
|
684
|
+
// carries no origin module (`connectOrigin: false` in `LoaderPlugin`).
|
|
685
|
+
if (connection.dependency instanceof LoaderImportDependency) {
|
|
686
|
+
hasJs = true;
|
|
687
|
+
continue;
|
|
688
|
+
}
|
|
689
|
+
|
|
671
690
|
if (!connection.originModule) {
|
|
672
691
|
continue;
|
|
673
692
|
}
|
|
@@ -1010,10 +1029,9 @@ class CssGenerator extends Generator {
|
|
|
1010
1029
|
_cssToJsLiteral(cssSource, devtool, generateContext) {
|
|
1011
1030
|
const { source, map } = cssSource.sourceAndMap();
|
|
1012
1031
|
let content = /** @type {string} */ (source);
|
|
1013
|
-
// A `renderEmbeddedSource` tap may
|
|
1014
|
-
//
|
|
1015
|
-
//
|
|
1016
|
-
// answer for the same reason.
|
|
1032
|
+
// A `renderEmbeddedSource` tap may return a mapped source whatever `devtool`
|
|
1033
|
+
// says, so wanting no map is checked here too: this data URI would ship the
|
|
1034
|
+
// sources inside the bundle. `hidden` answers the same.
|
|
1017
1035
|
const wanted = typeof devtool === "string" && !devtool.includes("hidden");
|
|
1018
1036
|
if (map && wanted) {
|
|
1019
1037
|
const namedMap = this._nameMapSources(map, generateContext);
|
|
@@ -1074,11 +1092,9 @@ class CssGenerator extends Generator {
|
|
|
1074
1092
|
result = cssSource;
|
|
1075
1093
|
}
|
|
1076
1094
|
|
|
1077
|
-
// Only text bound for a JS literal. `CSS_TEXT_TYPE`
|
|
1078
|
-
// `<style>`
|
|
1079
|
-
//
|
|
1080
|
-
// which is not visible here. After the `@charset` prefix, so a tap sees a
|
|
1081
|
-
// whole stylesheet.
|
|
1095
|
+
// Only text bound for a JS literal. Whether a `CSS_TEXT_TYPE` inline
|
|
1096
|
+
// `<style>` is CSS at all turns on the element's `type`, a call the HTML
|
|
1097
|
+
// layer makes. After the `@charset` prefix, so a tap sees a whole sheet.
|
|
1082
1098
|
if (result && asJsLiteral) {
|
|
1083
1099
|
result = this._renderEmbeddedSource(result, module, generateContext);
|
|
1084
1100
|
}
|
|
@@ -30,6 +30,15 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
30
30
|
this._runtimeRequirements = runtimeRequirements;
|
|
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
|
|
@@ -15,6 +15,7 @@ const createHooksRegistry = require("../util/createHooksRegistry");
|
|
|
15
15
|
const { chunkHasCss } = require("./CssModulesPlugin");
|
|
16
16
|
|
|
17
17
|
/** @import Chunk, { ChunkId } from "../Chunk" */
|
|
18
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
18
19
|
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
19
20
|
|
|
20
21
|
const createCompilationHooks = () => ({
|
|
@@ -56,26 +57,14 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
60
|
+
* The initial chunks carrying a stylesheet, and the matcher for the ones the
|
|
61
|
+
* handler can still be asked to load.
|
|
62
|
+
* @private
|
|
63
|
+
* @returns {{ initialChunkIds: Set<ChunkId>, hasCssMatcher: ReturnType<typeof compileBooleanMatcher> }} loadable chunks
|
|
61
64
|
*/
|
|
62
|
-
|
|
63
|
-
const { _runtimeRequirements } = this;
|
|
64
|
-
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
65
|
+
_getLoadableChunks() {
|
|
65
66
|
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
66
|
-
const {
|
|
67
|
-
chunkGraph,
|
|
68
|
-
runtimeTemplate,
|
|
69
|
-
outputOptions: {
|
|
70
|
-
crossOriginLoading,
|
|
71
|
-
uniqueName,
|
|
72
|
-
chunkLoadTimeout: loadTimeout,
|
|
73
|
-
charset,
|
|
74
|
-
resourceHints
|
|
75
|
-
}
|
|
76
|
-
} = compilation;
|
|
77
|
-
const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
|
|
78
|
-
const fn = RuntimeGlobals.ensureChunkHandlers;
|
|
67
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
|
79
68
|
/** @type {Set<ChunkId>} */
|
|
80
69
|
const initialChunkIds = new Set();
|
|
81
70
|
for (const c of chunk.getAllInitialChunks()) {
|
|
@@ -96,6 +85,75 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
96
85
|
compileBooleanMatcher(loadableConditionMap) === false
|
|
97
86
|
? false
|
|
98
87
|
: compileBooleanMatcher(conditionMap);
|
|
88
|
+
return { initialChunkIds, hasCssMatcher };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
93
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
94
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
95
|
+
*/
|
|
96
|
+
getInstalledChunkHandlers() {
|
|
97
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
98
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
99
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
|
100
|
+
const runtimeRequirements = this._runtimeRequirements;
|
|
101
|
+
const withLoading =
|
|
102
|
+
runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers) &&
|
|
103
|
+
this._getLoadableChunks().hasCssMatcher !== false;
|
|
104
|
+
// Nothing at all is emitted without either, so nothing is installed either.
|
|
105
|
+
if (
|
|
106
|
+
!withLoading &&
|
|
107
|
+
!runtimeRequirements.has(RuntimeGlobals.hmrDownloadUpdateHandlers)
|
|
108
|
+
) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
const withHint =
|
|
112
|
+
compilation.outputOptions.environment.document ||
|
|
113
|
+
compilation.runtimeTemplate.isNeutralPlatform();
|
|
114
|
+
/** @type {[string, string][]} */
|
|
115
|
+
const handlers = [];
|
|
116
|
+
if (withLoading) handlers.push([RuntimeGlobals.ensureChunkHandlers, "css"]);
|
|
117
|
+
if (
|
|
118
|
+
withHint &&
|
|
119
|
+
runtimeRequirements.has(RuntimeGlobals.prefetchChunkHandlers) &&
|
|
120
|
+
chunk.hasChildByOrder(chunkGraph, "prefetch", true, chunkHasCss)
|
|
121
|
+
) {
|
|
122
|
+
handlers.push([RuntimeGlobals.prefetchChunkHandlers, "s"]);
|
|
123
|
+
}
|
|
124
|
+
if (
|
|
125
|
+
withHint &&
|
|
126
|
+
runtimeRequirements.has(RuntimeGlobals.preloadChunkHandlers) &&
|
|
127
|
+
(chunk.hasChildByOrder(chunkGraph, "preload", true, chunkHasCss) ||
|
|
128
|
+
chunk.hasChildByOrder(chunkGraph, "cssPreload", true, chunkHasCss))
|
|
129
|
+
) {
|
|
130
|
+
handlers.push([RuntimeGlobals.preloadChunkHandlers, "s"]);
|
|
131
|
+
}
|
|
132
|
+
return handlers;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Generates runtime code for this runtime module.
|
|
137
|
+
* @returns {string | null} runtime code
|
|
138
|
+
*/
|
|
139
|
+
generate() {
|
|
140
|
+
const { _runtimeRequirements } = this;
|
|
141
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
142
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
143
|
+
const {
|
|
144
|
+
chunkGraph,
|
|
145
|
+
runtimeTemplate,
|
|
146
|
+
outputOptions: {
|
|
147
|
+
crossOriginLoading,
|
|
148
|
+
uniqueName,
|
|
149
|
+
chunkLoadTimeout: loadTimeout,
|
|
150
|
+
charset,
|
|
151
|
+
resourceHints
|
|
152
|
+
}
|
|
153
|
+
} = compilation;
|
|
154
|
+
const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
|
|
155
|
+
const fn = RuntimeGlobals.ensureChunkHandlers;
|
|
156
|
+
const { initialChunkIds, hasCssMatcher } = this._getLoadableChunks();
|
|
99
157
|
|
|
100
158
|
const withLoading =
|
|
101
159
|
_runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers) &&
|
|
@@ -185,32 +243,22 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
185
243
|
",\n"
|
|
186
244
|
)
|
|
187
245
|
)}\n}`;
|
|
188
|
-
/**
|
|
189
|
-
* @param {string} id expression naming the chunk whose stylesheet is wanted
|
|
190
|
-
* @returns {string} expression building its url at runtime
|
|
191
|
-
*/
|
|
192
|
-
const runtimeCssUrl = (id) =>
|
|
193
|
-
`${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(${id})`;
|
|
194
246
|
// The url is read through a thunk so a runtime carrying many stylesheets builds
|
|
195
247
|
// only the one it loads.
|
|
196
248
|
/**
|
|
197
249
|
* @param {string} id expression naming the chunk whose stylesheet is wanted
|
|
198
250
|
* @returns {string} expression evaluating to its url
|
|
199
251
|
*/
|
|
200
|
-
const cssUrl = (id) =>
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
return cssUrls.complete
|
|
205
|
-
? `cssUrls[${id}]()`
|
|
206
|
-
: `(cssUrls[${id}] ? cssUrls[${id}]() : ${runtimeCssUrl(id)})`;
|
|
207
|
-
};
|
|
252
|
+
const cssUrl = (id) =>
|
|
253
|
+
cssUrls === null
|
|
254
|
+
? `${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(${id})`
|
|
255
|
+
: `cssUrls[${id}]()`;
|
|
208
256
|
return Template.asString([
|
|
209
257
|
...(cssUrls
|
|
210
258
|
? [
|
|
211
259
|
`${cst} cssUrls = {\n${Template.indent(
|
|
212
260
|
Array.from(
|
|
213
|
-
cssUrls
|
|
261
|
+
cssUrls,
|
|
214
262
|
([id, url]) =>
|
|
215
263
|
`${JSON.stringify(String(id))}: ${runtimeTemplate.returningFunction(url)}`
|
|
216
264
|
).join(",\n")
|
|
@@ -395,6 +443,10 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
395
443
|
]
|
|
396
444
|
)});`
|
|
397
445
|
]
|
|
446
|
+
// No fs to import, or a url `readFile` rejects on sight (a CDN public
|
|
447
|
+
// path): nothing to collect, which is what a missing file already means.
|
|
448
|
+
)}).catch(${runtimeTemplate.expressionFunction(
|
|
449
|
+
"loadingEnded({ type: 'load' })"
|
|
398
450
|
)});`
|
|
399
451
|
]),
|
|
400
452
|
"}"
|
|
@@ -552,6 +604,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
552
604
|
Template.indent([
|
|
553
605
|
// node SSR: refresh the server style registry from the re-emitted CSS instead of touching the DOM
|
|
554
606
|
`${cst} cssRemovedChunks = css && css.r;`,
|
|
607
|
+
`${cst} cssNames = css && css.n;`,
|
|
555
608
|
`${cst} registry = ${runtimeTemplate.cssServerStyleRegistry()};`,
|
|
556
609
|
`chunkIds.forEach(${runtimeTemplate.basicFunction(
|
|
557
610
|
"chunkId",
|
|
@@ -561,7 +614,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
561
614
|
"cssRemovedChunks",
|
|
562
615
|
"indexOf(chunkId)"
|
|
563
616
|
)} >= 0) { delete registry[key]; return; }`,
|
|
564
|
-
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
617
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + (cssNames && cssNames[chunkId] || ${RuntimeGlobals.getChunkCssFilename}(chunkId));`,
|
|
565
618
|
`promises.push(Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
|
|
566
619
|
"[{ readFile }, { URL }]",
|
|
567
620
|
[
|
|
@@ -594,9 +647,14 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
594
647
|
"applyHandlers.push(applyHandler);",
|
|
595
648
|
"// Read CSS removed chunks from update manifest",
|
|
596
649
|
`${cst} cssRemovedChunks = css && css.r;`,
|
|
650
|
+
// The name map this runtime holds is refreshed by the update chunk, which
|
|
651
|
+
// has not run yet, so a name that moved is read off the manifest.
|
|
652
|
+
`${cst} cssNames = css && css.n;`,
|
|
597
653
|
`chunkIds.forEach(${runtimeTemplate.basicFunction("chunkId", [
|
|
598
|
-
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
599
|
-
|
|
654
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + (cssNames && cssNames[chunkId] || ${RuntimeGlobals.getChunkCssFilename}(chunkId));`,
|
|
655
|
+
// The stylesheet in the document was loaded at the name this runtime
|
|
656
|
+
// still holds, so that is the name it is found by.
|
|
657
|
+
`${cst} oldTag = loadStylesheet(chunkId, ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId));`,
|
|
600
658
|
`if(!oldTag && !${withHmr} ) return;`,
|
|
601
659
|
"// Skip if CSS was removed",
|
|
602
660
|
`if(${runtimeTemplate.optionalChaining(
|
package/lib/css/CssModule.js
CHANGED
|
@@ -197,7 +197,7 @@ class CssModule extends NormalModule {
|
|
|
197
197
|
parserOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
198
198
|
generator: /** @type {EXPECTED_ANY} */ (null),
|
|
199
199
|
generatorOptions: /** @type {EXPECTED_ANY} */ (null),
|
|
200
|
-
resolveOptions:
|
|
200
|
+
resolveOptions: undefined,
|
|
201
201
|
cssLayer: /** @type {EXPECTED_ANY} */ (null),
|
|
202
202
|
supports: /** @type {EXPECTED_ANY} */ (null),
|
|
203
203
|
media: /** @type {EXPECTED_ANY} */ (null),
|
|
@@ -772,12 +772,13 @@ class CssModulesPlugin {
|
|
|
772
772
|
// A baked url carries where the stylesheet is, so neither the public
|
|
773
773
|
// path nor the name lookup is read for it. Asked exactly as the
|
|
774
774
|
// loading runtime module asks, so the two always agree.
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
775
|
+
if (
|
|
776
|
+
compilation.runtimeTemplate.analyzableCssChunkUrls(
|
|
777
|
+
chunk,
|
|
778
|
+
chunkGraph,
|
|
779
|
+
set
|
|
780
|
+
) === null
|
|
781
|
+
) {
|
|
781
782
|
set.add(RuntimeGlobals.publicPath);
|
|
782
783
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
|
783
784
|
}
|