webpack 5.107.1 → 5.108.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/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +8 -4
- package/lib/CacheFacade.js +7 -0
- package/lib/Chunk.js +4 -0
- package/lib/ChunkGraph.js +30 -9
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +2 -1
- package/lib/Compilation.js +396 -65
- package/lib/Compiler.js +52 -14
- package/lib/ConcatenationScope.js +10 -3
- package/lib/ContextExclusionPlugin.js +1 -0
- package/lib/ContextModule.js +92 -47
- package/lib/ContextModuleFactory.js +45 -38
- package/lib/ContextReplacementPlugin.js +4 -0
- package/lib/DefinePlugin.js +89 -15
- package/lib/Dependency.js +111 -7
- package/lib/EntryOptionPlugin.js +39 -2
- package/lib/EntryPlugin.js +2 -0
- package/lib/ExportsInfo.js +314 -73
- package/lib/ExternalModule.js +82 -34
- package/lib/ExternalModuleFactoryPlugin.js +1 -0
- package/lib/ExternalsPlugin.js +1 -0
- package/lib/FileSystemInfo.js +173 -23
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
- package/lib/FlagDependencyExportsPlugin.js +23 -0
- package/lib/FlagDependencyUsagePlugin.js +87 -5
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
- package/lib/Generator.js +8 -0
- package/lib/HotModuleReplacementPlugin.js +65 -28
- package/lib/IgnorePlugin.js +1 -0
- package/lib/InitFragment.js +5 -0
- package/lib/JavascriptMetaInfoPlugin.js +7 -5
- package/lib/LazyBarrel.js +361 -0
- package/lib/LoaderTargetPlugin.js +1 -0
- package/lib/Module.js +21 -42
- package/lib/ModuleGraph.js +3 -2
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleTemplate.js +2 -0
- package/lib/MultiCompiler.js +16 -0
- package/lib/MultiStats.js +1 -0
- package/lib/MultiWatching.js +2 -0
- package/lib/NodeStuffPlugin.js +22 -17
- package/lib/NormalModule.js +557 -77
- package/lib/NormalModuleReplacementPlugin.js +2 -0
- package/lib/PrefetchPlugin.js +2 -0
- package/lib/ProgressPlugin.js +9 -1
- package/lib/ProvidePlugin.js +1 -0
- package/lib/RawModule.js +20 -16
- package/lib/RecordIdsPlugin.js +1 -0
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimePlugin.js +58 -26
- package/lib/RuntimeTemplate.js +278 -21
- package/lib/SelfModuleFactory.js +1 -0
- package/lib/SourceMapDevToolPlugin.js +105 -30
- package/lib/Stats.js +1 -0
- package/lib/Template.js +8 -2
- package/lib/TemplatedPathPlugin.js +473 -131
- package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
- package/lib/WarnDeprecatedOptionPlugin.js +4 -0
- package/lib/WarnNoModeSetPlugin.js +1 -0
- package/lib/WatchIgnorePlugin.js +1 -0
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +50 -5
- package/lib/asset/AssetBytesGenerator.js +11 -3
- package/lib/asset/AssetGenerator.js +47 -22
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +14 -14
- package/lib/asset/AssetParser.js +2 -2
- package/lib/asset/AssetSourceGenerator.js +8 -0
- package/lib/asset/RawDataUrlModule.js +12 -13
- package/lib/buildChunkGraph.js +88 -9
- package/lib/bun/BunTargetPlugin.js +48 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
- package/lib/cache/AddManagedPathsPlugin.js +3 -0
- package/lib/cache/IdleFileCachePlugin.js +4 -0
- package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
- package/lib/cache/PackFileCacheStrategy.js +1 -0
- package/lib/cache/ResolverCachePlugin.js +2 -0
- package/lib/cache/getLazyHashedEtag.js +9 -2
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +109 -19
- package/lib/config/browserslistTargetHandler.js +99 -0
- package/lib/config/defaults.js +147 -7
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +5 -0
- package/lib/config/target.js +181 -2
- package/lib/container/ContainerEntryModule.js +15 -14
- package/lib/container/ContainerExposedDependency.js +2 -2
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +5 -7
- package/lib/container/FallbackModule.js +10 -9
- package/lib/container/RemoteModule.js +20 -10
- package/lib/container/RemoteRuntimeModule.js +14 -12
- package/lib/css/CssGenerator.js +353 -327
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
- package/lib/css/CssLoadingRuntimeModule.js +118 -47
- package/lib/css/CssModule.js +52 -23
- package/lib/css/CssModulesPlugin.js +107 -124
- package/lib/css/CssParser.js +2759 -2205
- package/lib/css/syntax.js +2859 -0
- package/lib/debug/ProfilingPlugin.js +2 -0
- package/lib/deno/DenoTargetPlugin.js +47 -0
- package/lib/dependencies/AMDDefineDependency.js +22 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
- package/lib/dependencies/AMDRequireContextDependency.js +7 -11
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireDependency.js +24 -20
- package/lib/dependencies/CachedConstDependency.js +3 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
- package/lib/dependencies/CommonJsExportsDependency.js +21 -16
- package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
- package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
- package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
- package/lib/dependencies/CommonJsPlugin.js +1 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
- package/lib/dependencies/CommonJsRequireDependency.js +42 -11
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
- package/lib/dependencies/ConstDependency.js +16 -11
- package/lib/dependencies/ContextDependency.js +4 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
- package/lib/dependencies/ContextElementDependency.js +23 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
- package/lib/dependencies/CriticalDependencyWarning.js +1 -0
- package/lib/dependencies/CssIcssExportDependency.js +512 -574
- package/lib/dependencies/CssIcssImportDependency.js +9 -9
- package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
- package/lib/dependencies/CssImportDependency.js +25 -1
- package/lib/dependencies/CssUrlDependency.js +23 -14
- package/lib/dependencies/DllEntryDependency.js +9 -13
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +12 -12
- package/lib/dependencies/ExternalModuleDependency.js +8 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
- package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
- package/lib/dependencies/HarmonyExportInitFragment.js +22 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
- package/lib/dependencies/HarmonyExports.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +24 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
- package/lib/dependencies/HarmonyImportGuard.js +254 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
- package/lib/dependencies/HarmonyLinkingError.js +1 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
- package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +267 -154
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +20 -27
- package/lib/dependencies/HtmlInlineStyleDependency.js +62 -11
- package/lib/dependencies/HtmlSourceDependency.js +18 -0
- package/lib/dependencies/ImportContextDependency.js +5 -9
- package/lib/dependencies/ImportDependency.js +44 -2
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +74 -30
- package/lib/dependencies/ImportParserPlugin.js +19 -0
- package/lib/dependencies/ImportWeakDependency.js +1 -0
- package/lib/dependencies/JsonExportsDependency.js +9 -9
- package/lib/dependencies/LoaderImportDependency.js +1 -0
- package/lib/dependencies/LocalModule.js +11 -12
- package/lib/dependencies/LocalModuleDependency.js +11 -13
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
- package/lib/dependencies/ProvidedDependency.js +31 -27
- package/lib/dependencies/PureExpressionDependency.js +7 -9
- package/lib/dependencies/RequireEnsureDependency.js +12 -13
- package/lib/dependencies/RequireHeaderDependency.js +3 -4
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireResolveContextDependency.js +7 -11
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
- package/lib/dependencies/StaticExportsDependency.js +10 -10
- package/lib/dependencies/SystemPlugin.js +2 -0
- package/lib/dependencies/URLContextDependency.js +5 -7
- package/lib/dependencies/URLDependency.js +14 -16
- package/lib/dependencies/UnsupportedDependency.js +8 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
- package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
- package/lib/dependencies/WorkerDependency.js +19 -8
- package/lib/dependencies/WorkerPlugin.js +40 -10
- package/lib/dependencies/processExportInfo.js +13 -11
- package/lib/dll/DelegatedModule.js +29 -15
- package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
- package/lib/dll/DelegatedPlugin.js +1 -0
- package/lib/dll/DllEntryPlugin.js +3 -0
- package/lib/dll/DllModule.js +3 -2
- package/lib/dll/DllPlugin.js +16 -0
- package/lib/dll/DllReferencePlugin.js +3 -0
- package/lib/dll/LibManifestPlugin.js +1 -0
- package/lib/electron/ElectronTargetPlugin.js +22 -4
- package/lib/errors/ConcurrentCompilationError.js +1 -0
- package/lib/errors/HookWebpackError.js +11 -13
- package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
- package/lib/errors/JSONParseError.js +9 -8
- package/lib/errors/ModuleBuildError.js +16 -13
- package/lib/errors/ModuleDependencyError.js +8 -1
- package/lib/errors/ModuleDependencyWarning.js +8 -1
- package/lib/errors/ModuleError.js +5 -11
- package/lib/errors/ModuleHashingError.js +4 -0
- package/lib/errors/ModuleNotFoundError.js +3 -0
- package/lib/errors/ModuleParseError.js +5 -11
- package/lib/errors/ModuleRestoreError.js +2 -0
- package/lib/errors/ModuleStoreError.js +3 -0
- package/lib/errors/ModuleWarning.js +7 -11
- package/lib/errors/NodeStuffInWebError.js +1 -0
- package/lib/errors/NonErrorEmittedError.js +2 -0
- package/lib/errors/UnhandledSchemeError.js +1 -0
- package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/LazyCompilationPlugin.js +134 -6
- package/lib/html/HtmlGenerator.js +292 -50
- package/lib/html/HtmlModule.js +40 -0
- package/lib/html/HtmlModulesPlugin.js +287 -60
- package/lib/html/HtmlParser.js +1108 -1099
- package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
- package/lib/ids/IdHelpers.js +4 -2
- package/lib/index.js +19 -0
- package/lib/javascript/BasicEvaluatedExpression.js +1 -0
- package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
- package/lib/javascript/JavascriptGenerator.js +6 -2
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +257 -102
- package/lib/javascript/JavascriptParser.js +286 -159
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +7 -0
- package/lib/json/JsonParser.js +4 -2
- package/lib/library/AssignLibraryPlugin.js +5 -3
- package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
- package/lib/library/FalseIIFEUmdWarning.js +1 -0
- package/lib/library/ModuleLibraryPlugin.js +54 -29
- package/lib/library/SystemLibraryPlugin.js +3 -3
- package/lib/node/NodeTargetPlugin.js +1 -0
- package/lib/node/NodeWatchFileSystem.js +38 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
- package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
- package/lib/optimize/ConcatenatedModule.js +397 -78
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +372 -275
- package/lib/optimize/InnerGraphPlugin.js +196 -99
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
- package/lib/optimize/RealContentHashPlugin.js +14 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
- package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
- package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/HttpUriPlugin.js +3 -2
- package/lib/serialization/AggregateErrorSerializer.js +7 -6
- package/lib/serialization/ArraySerializer.js +4 -8
- package/lib/serialization/BinaryMiddleware.js +538 -468
- package/lib/serialization/DateObjectSerializer.js +2 -2
- package/lib/serialization/ErrorObjectSerializer.js +7 -6
- package/lib/serialization/MapObjectSerializer.js +5 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
- package/lib/serialization/ObjectMiddleware.js +50 -13
- package/lib/serialization/PlainObjectSerializer.js +9 -8
- package/lib/serialization/RegExpObjectSerializer.js +2 -2
- package/lib/serialization/Serializer.js +1 -0
- package/lib/serialization/SetObjectSerializer.js +4 -8
- package/lib/sharing/ConsumeSharedModule.js +6 -7
- package/lib/sharing/ConsumeSharedPlugin.js +1 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
- package/lib/sharing/ProvideSharedDependency.js +30 -15
- package/lib/sharing/ProvideSharedModule.js +30 -11
- package/lib/sharing/ProvideSharedPlugin.js +4 -2
- package/lib/sharing/SharePlugin.js +3 -0
- package/lib/sharing/ShareRuntimeModule.js +18 -16
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
- package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
- package/lib/stats/StatsFactory.js +11 -9
- package/lib/stats/StatsPrinter.js +9 -2
- package/lib/url/URLParserPlugin.js +5 -2
- package/lib/util/AsyncQueue.js +10 -0
- package/lib/util/LazyBucketSortedSet.js +5 -0
- package/lib/util/LazySet.js +6 -4
- package/lib/util/LocConverter.js +11 -1
- package/lib/util/Semaphore.js +1 -0
- package/lib/util/SourceProcessor.js +106 -0
- package/lib/util/TupleSet.js +1 -0
- package/lib/util/WeakTupleMap.js +27 -1
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/comparators.js +2 -2
- package/lib/util/concatenate.js +31 -7
- package/lib/util/createHash.js +0 -1
- package/lib/util/deterministicGrouping.js +19 -12
- package/lib/util/extractSourceMap.js +1 -1
- package/lib/util/findGraphRoots.js +2 -0
- package/lib/util/fs.js +16 -6
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +24 -15
- package/lib/util/identifier.js +7 -0
- package/lib/util/internalSerializables.js +11 -2
- package/lib/util/magicComment.js +42 -0
- package/lib/util/makeSerializable.js +1 -0
- package/lib/util/nonNumericOnlyHash.js +30 -1
- package/lib/util/property.js +7 -1
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +4 -4
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
- package/lib/wasm-sync/WebAssemblyParser.js +7 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
- package/package.json +36 -28
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +212 -3
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
- package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +1592 -314
- package/lib/css/walkCssTokens.js +0 -2020
- package/lib/util/AppendOnlyStackedSet.js +0 -93
|
@@ -77,8 +77,34 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
77
77
|
_runtimeRequirements &&
|
|
78
78
|
_runtimeRequirements.has(RuntimeGlobals.scriptNonce);
|
|
79
79
|
|
|
80
|
+
const cst = runtimeTemplate.renderConst();
|
|
81
|
+
const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
|
|
82
|
+
// universal targets run in node too: collect styles for SSR retrieval
|
|
83
|
+
// instead of touching a DOM that isn't there
|
|
84
|
+
const injectGuard = isNeutralPlatform
|
|
85
|
+
? [
|
|
86
|
+
"if (typeof document === 'undefined') {",
|
|
87
|
+
Template.indent([
|
|
88
|
+
`${runtimeTemplate.cssServerStyleRegistry()}[identifier] = css;`,
|
|
89
|
+
"return;"
|
|
90
|
+
]),
|
|
91
|
+
"}"
|
|
92
|
+
]
|
|
93
|
+
: [];
|
|
94
|
+
const removeGuard = isNeutralPlatform
|
|
95
|
+
? [
|
|
96
|
+
"if (typeof document === 'undefined') {",
|
|
97
|
+
Template.indent([
|
|
98
|
+
`${cst} styles = ${runtimeTemplate.cssServerStyleRegistry()};`,
|
|
99
|
+
"for (var i = 0; i < identifiers.length; i++) delete styles[identifiers[i]];",
|
|
100
|
+
"return;"
|
|
101
|
+
]),
|
|
102
|
+
"}"
|
|
103
|
+
]
|
|
104
|
+
: [];
|
|
105
|
+
|
|
80
106
|
const createStyleElementCode = Template.asString([
|
|
81
|
-
|
|
107
|
+
`${cst} style = document.createElement('style');`,
|
|
82
108
|
"",
|
|
83
109
|
...(withScriptNonce
|
|
84
110
|
? [
|
|
@@ -93,7 +119,7 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
93
119
|
]);
|
|
94
120
|
|
|
95
121
|
return Template.asString([
|
|
96
|
-
|
|
122
|
+
`${cst} dataWebpackPrefix = ${uniqueName ? JSON.stringify(`${uniqueName}:`) : '"webpack:"'};`,
|
|
97
123
|
"",
|
|
98
124
|
"function getDataWebpackId(identifier) {",
|
|
99
125
|
Template.indent("return dataWebpackPrefix + identifier;"),
|
|
@@ -101,10 +127,10 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
101
127
|
"",
|
|
102
128
|
"function findStyleElement(identifier) {",
|
|
103
129
|
Template.indent([
|
|
104
|
-
|
|
130
|
+
`${cst} elements = document.getElementsByTagName('style');`,
|
|
105
131
|
"for (var i = 0; i < elements.length; i++) {",
|
|
106
132
|
Template.indent([
|
|
107
|
-
|
|
133
|
+
`${cst} el = elements[i];`,
|
|
108
134
|
"if (el.getAttribute('data-webpack') === getDataWebpackId(identifier)) {",
|
|
109
135
|
Template.indent("return el;"),
|
|
110
136
|
"}"
|
|
@@ -130,7 +156,8 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
130
156
|
`${RuntimeGlobals.cssInjectStyle} = ${runtimeTemplate.basicFunction(
|
|
131
157
|
"identifier, css",
|
|
132
158
|
[
|
|
133
|
-
|
|
159
|
+
...injectGuard,
|
|
160
|
+
`${cst} element = findStyleElement(identifier) || insertStyleElement(identifier);`,
|
|
134
161
|
"element.textContent = css;"
|
|
135
162
|
]
|
|
136
163
|
)};`,
|
|
@@ -151,11 +178,12 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
151
178
|
"removedModules",
|
|
152
179
|
[
|
|
153
180
|
"if (!removedModules) return;",
|
|
154
|
-
|
|
181
|
+
`${cst} identifiers = Array.isArray(removedModules) ? removedModules : [removedModules];`,
|
|
182
|
+
...removeGuard,
|
|
155
183
|
"for (var i = 0; i < identifiers.length; i++) {",
|
|
156
184
|
Template.indent([
|
|
157
|
-
|
|
158
|
-
|
|
185
|
+
`${cst} identifier = identifiers[i];`,
|
|
186
|
+
`${cst} element = findStyleElement(identifier);`,
|
|
159
187
|
"if (element) {",
|
|
160
188
|
Template.indent("removeStyleElement(element);"),
|
|
161
189
|
"}"
|
|
@@ -60,6 +60,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
60
60
|
constructor(runtimeRequirements) {
|
|
61
61
|
super("css loading", 10);
|
|
62
62
|
|
|
63
|
+
/** @type {ReadOnlyRuntimeRequirements} */
|
|
63
64
|
this._runtimeRequirements = runtimeRequirements;
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -78,7 +79,8 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
78
79
|
crossOriginLoading,
|
|
79
80
|
uniqueName,
|
|
80
81
|
chunkLoadTimeout: loadTimeout,
|
|
81
|
-
charset
|
|
82
|
+
charset,
|
|
83
|
+
importMetaName
|
|
82
84
|
}
|
|
83
85
|
} = compilation;
|
|
84
86
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
|
@@ -171,39 +173,42 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
171
173
|
: ""
|
|
172
174
|
]);
|
|
173
175
|
|
|
176
|
+
const cst = runtimeTemplate.renderConst();
|
|
177
|
+
const lt = runtimeTemplate.renderLet();
|
|
178
|
+
const installedChunksObject = `{\n${Template.indent(
|
|
179
|
+
Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
|
|
180
|
+
",\n"
|
|
181
|
+
)
|
|
182
|
+
)}\n}`;
|
|
174
183
|
return Template.asString([
|
|
175
184
|
"// object to store loaded and loading chunks",
|
|
176
185
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
177
186
|
"// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
|
|
178
|
-
|
|
179
|
-
stateExpression
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
",\n"
|
|
184
|
-
)
|
|
185
|
-
),
|
|
186
|
-
"};",
|
|
187
|
+
`${cst} installedChunks = ${
|
|
188
|
+
stateExpression
|
|
189
|
+
? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
|
|
190
|
+
: installedChunksObject
|
|
191
|
+
};`,
|
|
187
192
|
"",
|
|
188
193
|
uniqueName
|
|
189
|
-
?
|
|
194
|
+
? `${cst} uniqueName = ${JSON.stringify(
|
|
190
195
|
runtimeTemplate.outputOptions.uniqueName
|
|
191
196
|
)};`
|
|
192
197
|
: "// data-webpack is not used as build has no uniqueName",
|
|
193
198
|
withLoading || withHmr
|
|
194
199
|
? Template.asString([
|
|
195
|
-
|
|
196
|
-
|
|
200
|
+
`${cst} loadingAttribute = "data-webpack-loading";`,
|
|
201
|
+
`${cst} loadStylesheet = ${runtimeTemplate.basicFunction(
|
|
197
202
|
`chunkId, url, done${
|
|
198
203
|
withFetchPriority ? ", fetchPriority" : ""
|
|
199
204
|
}${withHmr ? ", hmr" : ""}`,
|
|
200
205
|
[
|
|
201
|
-
|
|
206
|
+
`${lt} link, needAttach, key = "chunk-" + chunkId;`,
|
|
202
207
|
withHmr ? "if(!hmr) {" : "",
|
|
203
|
-
|
|
208
|
+
`${cst} links = document.getElementsByTagName("link");`,
|
|
204
209
|
"for(var i = 0; i < links.length; i++) {",
|
|
205
210
|
Template.indent([
|
|
206
|
-
|
|
211
|
+
`${cst} l = links[i];`,
|
|
207
212
|
`if(l.rel == "stylesheet" && (${
|
|
208
213
|
withHmr
|
|
209
214
|
? 'l.href.startsWith(url) || l.getAttribute("href").startsWith(url)'
|
|
@@ -223,7 +228,8 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
223
228
|
createStylesheet.call(code, /** @type {Chunk} */ (this.chunk))
|
|
224
229
|
]),
|
|
225
230
|
"}",
|
|
226
|
-
|
|
231
|
+
`${lt} timeout;`,
|
|
232
|
+
`${cst} onLinkComplete = ${runtimeTemplate.basicFunction(
|
|
227
233
|
"prev, event",
|
|
228
234
|
Template.asString([
|
|
229
235
|
"link.onerror = link.onload = null;",
|
|
@@ -236,7 +242,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
236
242
|
)};`,
|
|
237
243
|
"if(link.getAttribute(loadingAttribute)) {",
|
|
238
244
|
Template.indent([
|
|
239
|
-
`
|
|
245
|
+
`timeout = setTimeout(onLinkComplete.bind(null, undefined, { type: 'timeout', target: link }), ${loadTimeout});`,
|
|
240
246
|
"link.onerror = onLinkComplete.bind(null, link.onerror);",
|
|
241
247
|
"link.onload = onLinkComplete.bind(null, link.onload);"
|
|
242
248
|
]),
|
|
@@ -273,7 +279,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
273
279
|
`chunkId, promises${withFetchPriority ? " , fetchPriority" : ""}`,
|
|
274
280
|
[
|
|
275
281
|
"// css chunk loading",
|
|
276
|
-
|
|
282
|
+
`${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
|
|
277
283
|
'if(installedChunkData !== 0) { // 0 means "already installed".',
|
|
278
284
|
Template.indent([
|
|
279
285
|
"",
|
|
@@ -287,17 +293,17 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
287
293
|
: `if(${hasCssMatcher("chunkId")}) {`,
|
|
288
294
|
Template.indent([
|
|
289
295
|
"// setup Promise in chunk cache",
|
|
290
|
-
|
|
296
|
+
`${cst} promise = new Promise(${runtimeTemplate.expressionFunction(
|
|
291
297
|
"installedChunkData = installedChunks[chunkId] = [resolve, reject]",
|
|
292
298
|
"resolve, reject"
|
|
293
299
|
)});`,
|
|
294
300
|
"promises.push(installedChunkData[2] = promise);",
|
|
295
301
|
"",
|
|
296
302
|
"// start chunk loading",
|
|
297
|
-
|
|
303
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
298
304
|
"// create error before stack unwound to get useful stacktrace later",
|
|
299
|
-
|
|
300
|
-
|
|
305
|
+
`${cst} error = new Error();`,
|
|
306
|
+
`${cst} loadingEnded = ${runtimeTemplate.basicFunction(
|
|
301
307
|
"event",
|
|
302
308
|
[
|
|
303
309
|
`if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId)) {`,
|
|
@@ -308,8 +314,8 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
308
314
|
Template.indent([
|
|
309
315
|
'if(event.type !== "load") {',
|
|
310
316
|
Template.indent([
|
|
311
|
-
|
|
312
|
-
|
|
317
|
+
`${cst} errorType = event && event.type;`,
|
|
318
|
+
`${cst} realHref = event && event.target && event.target.href;`,
|
|
313
319
|
"error.message = 'Loading css chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realHref + ')';",
|
|
314
320
|
"error.name = 'ChunkLoadError';",
|
|
315
321
|
"error.type = errorType;",
|
|
@@ -337,7 +343,25 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
337
343
|
});`
|
|
338
344
|
]),
|
|
339
345
|
isNeutralPlatform
|
|
340
|
-
?
|
|
346
|
+
? Template.asString([
|
|
347
|
+
"} else {",
|
|
348
|
+
Template.indent([
|
|
349
|
+
// no DOM (Node SSR): read the emitted CSS via dynamic import('fs') (works on every node), collect it; never reject on a missing file
|
|
350
|
+
`Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
|
|
351
|
+
"[{ readFile }, { URL }]",
|
|
352
|
+
[
|
|
353
|
+
`readFile(new URL(url, ${importMetaName}.url), 'utf8', ${runtimeTemplate.basicFunction(
|
|
354
|
+
"err, content",
|
|
355
|
+
[
|
|
356
|
+
`if (!err) ${runtimeTemplate.cssServerStyleRegistry()}["chunk-" + chunkId] = content;`,
|
|
357
|
+
"loadingEnded({ type: 'load' });"
|
|
358
|
+
]
|
|
359
|
+
)});`
|
|
360
|
+
]
|
|
361
|
+
)});`
|
|
362
|
+
]),
|
|
363
|
+
"}"
|
|
364
|
+
])
|
|
341
365
|
: ""
|
|
342
366
|
]),
|
|
343
367
|
"} else installedChunks[chunkId] = 0;"
|
|
@@ -361,12 +385,13 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
361
385
|
}) {`,
|
|
362
386
|
Template.indent([
|
|
363
387
|
"installedChunks[chunkId] = null;",
|
|
388
|
+
// prefetch is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
|
|
364
389
|
isNeutralPlatform
|
|
365
390
|
? "if (typeof document === 'undefined') return;"
|
|
366
391
|
: "",
|
|
367
392
|
linkPrefetch.call(
|
|
368
393
|
Template.asString([
|
|
369
|
-
|
|
394
|
+
`${cst} link = document.createElement('link');`,
|
|
370
395
|
charset ? "link.charset = 'utf-8';" : "",
|
|
371
396
|
crossOriginLoading
|
|
372
397
|
? `link.crossOrigin = ${JSON.stringify(
|
|
@@ -401,12 +426,13 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
401
426
|
}) {`,
|
|
402
427
|
Template.indent([
|
|
403
428
|
"installedChunks[chunkId] = null;",
|
|
429
|
+
// preload is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
|
|
404
430
|
isNeutralPlatform
|
|
405
431
|
? "if (typeof document === 'undefined') return;"
|
|
406
432
|
: "",
|
|
407
433
|
linkPreload.call(
|
|
408
434
|
Template.asString([
|
|
409
|
-
|
|
435
|
+
`${cst} link = document.createElement('link');`,
|
|
410
436
|
charset ? "link.charset = 'utf-8';" : "",
|
|
411
437
|
`if (${RuntimeGlobals.scriptNonce}) {`,
|
|
412
438
|
Template.indent(
|
|
@@ -439,26 +465,26 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
439
465
|
: "// no preloaded",
|
|
440
466
|
withHmr
|
|
441
467
|
? Template.asString([
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
`return {
|
|
468
|
+
`${cst} oldTags = [];`,
|
|
469
|
+
`${cst} newTags = [];`,
|
|
470
|
+
`${cst} applyHandler = ${runtimeTemplate.basicFunction("options", [
|
|
471
|
+
`return { ${runtimeTemplate.method("dispose", "", [
|
|
446
472
|
"while(oldTags.length) {",
|
|
447
473
|
Template.indent([
|
|
448
|
-
|
|
449
|
-
|
|
474
|
+
`${cst} oldTag = oldTags.pop();`,
|
|
475
|
+
`if(${runtimeTemplate.optionalChaining("oldTag", "parentNode")}) oldTag.parentNode.removeChild(oldTag);`
|
|
450
476
|
]),
|
|
451
477
|
"}"
|
|
452
|
-
])},
|
|
478
|
+
])}, ${runtimeTemplate.method("apply", "", [
|
|
453
479
|
"while(newTags.length) {",
|
|
454
480
|
Template.indent([
|
|
455
|
-
|
|
481
|
+
`${cst} newTag = newTags.pop();`,
|
|
456
482
|
"newTag.sheet.disabled = false"
|
|
457
483
|
]),
|
|
458
484
|
"}"
|
|
459
485
|
])} };`
|
|
460
486
|
])}`,
|
|
461
|
-
|
|
487
|
+
`${cst} cssTextKey = ${runtimeTemplate.returningFunction(
|
|
462
488
|
`Array.from(link.sheet.cssRules, ${runtimeTemplate.returningFunction(
|
|
463
489
|
"r.cssText",
|
|
464
490
|
"r"
|
|
@@ -471,33 +497,78 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
471
497
|
"chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList, css",
|
|
472
498
|
[
|
|
473
499
|
isNeutralPlatform
|
|
474
|
-
?
|
|
500
|
+
? Template.asString([
|
|
501
|
+
"if (typeof document === 'undefined') {",
|
|
502
|
+
Template.indent([
|
|
503
|
+
// node SSR: refresh the server style registry from the re-emitted CSS instead of touching the DOM
|
|
504
|
+
`${cst} cssRemovedChunks = css && css.r;`,
|
|
505
|
+
`${cst} registry = ${runtimeTemplate.cssServerStyleRegistry()};`,
|
|
506
|
+
`chunkIds.forEach(${runtimeTemplate.basicFunction(
|
|
507
|
+
"chunkId",
|
|
508
|
+
[
|
|
509
|
+
`${cst} key = "chunk-" + chunkId;`,
|
|
510
|
+
`if(${runtimeTemplate.optionalChaining(
|
|
511
|
+
"cssRemovedChunks",
|
|
512
|
+
"indexOf(chunkId)"
|
|
513
|
+
)} >= 0) { delete registry[key]; return; }`,
|
|
514
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
515
|
+
`promises.push(Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
|
|
516
|
+
"[{ readFile }, { URL }]",
|
|
517
|
+
[
|
|
518
|
+
`return new Promise(${runtimeTemplate.basicFunction(
|
|
519
|
+
"resolve",
|
|
520
|
+
[
|
|
521
|
+
// best-effort: a non-file publicPath (e.g. a CDN) can't be read from disk, so skip
|
|
522
|
+
"try {",
|
|
523
|
+
Template.indent([
|
|
524
|
+
`readFile(new URL(url, ${importMetaName}.url), 'utf8', ${runtimeTemplate.basicFunction(
|
|
525
|
+
"err, content",
|
|
526
|
+
[
|
|
527
|
+
"if (!err) registry[key] = content;",
|
|
528
|
+
"resolve();"
|
|
529
|
+
]
|
|
530
|
+
)});`
|
|
531
|
+
]),
|
|
532
|
+
"} catch (e) { resolve(); }"
|
|
533
|
+
]
|
|
534
|
+
)});`
|
|
535
|
+
]
|
|
536
|
+
)}));`
|
|
537
|
+
]
|
|
538
|
+
)});`,
|
|
539
|
+
"return;"
|
|
540
|
+
]),
|
|
541
|
+
"}"
|
|
542
|
+
])
|
|
475
543
|
: "",
|
|
476
544
|
"applyHandlers.push(applyHandler);",
|
|
477
545
|
"// Read CSS removed chunks from update manifest",
|
|
478
|
-
|
|
546
|
+
`${cst} cssRemovedChunks = css && css.r;`,
|
|
479
547
|
`chunkIds.forEach(${runtimeTemplate.basicFunction("chunkId", [
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
548
|
+
`${cst} filename = ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
549
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + filename;`,
|
|
550
|
+
`${cst} oldTag = loadStylesheet(chunkId, url);`,
|
|
483
551
|
`if(!oldTag && !${withHmr} ) return;`,
|
|
484
552
|
"// Skip if CSS was removed",
|
|
485
|
-
|
|
553
|
+
`if(${runtimeTemplate.optionalChaining(
|
|
554
|
+
"cssRemovedChunks",
|
|
555
|
+
"indexOf(chunkId)"
|
|
556
|
+
)} >= 0) {`,
|
|
486
557
|
Template.indent(["oldTags.push(oldTag);", "return;"]),
|
|
487
558
|
"}",
|
|
488
559
|
"",
|
|
489
560
|
"// create error before stack unwound to get useful stacktrace later",
|
|
490
|
-
|
|
561
|
+
`${cst} error = new Error();`,
|
|
491
562
|
`promises.push(new Promise(${runtimeTemplate.basicFunction(
|
|
492
563
|
"resolve, reject",
|
|
493
564
|
[
|
|
494
|
-
|
|
565
|
+
`${cst} link = loadStylesheet(chunkId, url + (url.indexOf("?") < 0 ? "?" : "&") + "hmr=" + Date.now(), ${runtimeTemplate.basicFunction(
|
|
495
566
|
"event",
|
|
496
567
|
[
|
|
497
568
|
'if(event.type !== "load") {',
|
|
498
569
|
Template.indent([
|
|
499
|
-
|
|
500
|
-
|
|
570
|
+
`${cst} errorType = event && event.type;`,
|
|
571
|
+
`${cst} realHref = event && event.target && event.target.href;`,
|
|
501
572
|
"error.message = 'Loading css hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realHref + ')';",
|
|
502
573
|
"error.name = 'ChunkLoadError';",
|
|
503
574
|
"error.type = errorType;",
|
package/lib/css/CssModule.js
CHANGED
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
const NormalModule = require("../NormalModule");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
+
/** @typedef {import("../DependencyTemplate").CssData} CssData */
|
|
11
12
|
/** @typedef {import("../Module")} Module */
|
|
13
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
14
|
+
/** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
|
|
12
15
|
/** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
|
|
13
16
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
14
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
15
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectSerializerContext */
|
|
16
19
|
/** @typedef {import("../../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
|
|
17
20
|
|
|
18
21
|
/** @typedef {string | undefined} CssLayer */
|
|
@@ -23,6 +26,24 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
23
26
|
|
|
24
27
|
/** @typedef {NormalModuleCreateData & { cssLayer: CssLayer, supports: Supports, media: Media, inheritance?: Inheritance, exportType?: CssParserExportType }} CssModuleCreateData */
|
|
25
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Defines the build info properties specific to css modules.
|
|
31
|
+
* @typedef {object} KnownCssModuleBuildInfo
|
|
32
|
+
* @property {CssData=} cssData
|
|
33
|
+
* @property {string=} charset charset at-rule
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/** @typedef {NormalModuleBuildInfo & KnownCssModuleBuildInfo} CssModuleBuildInfo */
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Defines the build meta properties specific to css modules.
|
|
40
|
+
* @typedef {object} KnownCssModuleBuildMeta
|
|
41
|
+
* @property {boolean=} isCssModule
|
|
42
|
+
* @property {boolean=} needIdInConcatenation
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/** @typedef {BuildMeta & KnownCssModuleBuildMeta} CssModuleBuildMeta */
|
|
46
|
+
|
|
26
47
|
class CssModule extends NormalModule {
|
|
27
48
|
/**
|
|
28
49
|
* Creates an instance of CssModule.
|
|
@@ -31,6 +52,12 @@ class CssModule extends NormalModule {
|
|
|
31
52
|
constructor(options) {
|
|
32
53
|
super(options);
|
|
33
54
|
|
|
55
|
+
// Redeclared with the css specific shape
|
|
56
|
+
/** @type {CssModuleBuildInfo | undefined} */
|
|
57
|
+
this.buildInfo = undefined;
|
|
58
|
+
/** @type {CssModuleBuildMeta | undefined} */
|
|
59
|
+
this.buildMeta = undefined;
|
|
60
|
+
|
|
34
61
|
// Avoid override `layer` for `Module` class, because it is a feature to run module in specific layer
|
|
35
62
|
/** @type {CssModuleCreateData['cssLayer']} */
|
|
36
63
|
this.cssLayer = options.cssLayer;
|
|
@@ -64,14 +91,13 @@ class CssModule extends NormalModule {
|
|
|
64
91
|
}
|
|
65
92
|
|
|
66
93
|
if (this.inheritance) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
identifier += `|${inheritance.join("|")}`;
|
|
94
|
+
// Append directly — same bytes as `|` + items.join("|"), without the
|
|
95
|
+
// intermediate `.map()` array + per-item strings (`identifier()` is
|
|
96
|
+
// uncached and called repeatedly per module).
|
|
97
|
+
for (let i = 0; i < this.inheritance.length; i++) {
|
|
98
|
+
const item = this.inheritance[i];
|
|
99
|
+
identifier += `|inheritance_${i}|${item[0] || ""}|${item[1] || ""}|${item[2] || ""}`;
|
|
100
|
+
}
|
|
75
101
|
}
|
|
76
102
|
|
|
77
103
|
if (this.exportType) {
|
|
@@ -137,12 +163,12 @@ class CssModule extends NormalModule {
|
|
|
137
163
|
* @param {ObjectSerializerContext} context context
|
|
138
164
|
*/
|
|
139
165
|
serialize(context) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
166
|
+
context
|
|
167
|
+
.write(this.cssLayer)
|
|
168
|
+
.write(this.supports)
|
|
169
|
+
.write(this.media)
|
|
170
|
+
.write(this.inheritance)
|
|
171
|
+
.write(this.exportType);
|
|
146
172
|
super.serialize(context);
|
|
147
173
|
}
|
|
148
174
|
|
|
@@ -185,13 +211,16 @@ class CssModule extends NormalModule {
|
|
|
185
211
|
* @param {ObjectDeserializerContext} context context
|
|
186
212
|
*/
|
|
187
213
|
deserialize(context) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
this.supports = read();
|
|
191
|
-
|
|
192
|
-
this.
|
|
193
|
-
|
|
194
|
-
|
|
214
|
+
this.cssLayer = context.read();
|
|
215
|
+
const c1 = context.rest;
|
|
216
|
+
this.supports = c1.read();
|
|
217
|
+
const c2 = c1.rest;
|
|
218
|
+
this.media = c2.read();
|
|
219
|
+
const c3 = c2.rest;
|
|
220
|
+
this.inheritance = c3.read();
|
|
221
|
+
const c4 = c3.rest;
|
|
222
|
+
this.exportType = c4.read();
|
|
223
|
+
super.deserialize(c4.rest);
|
|
195
224
|
}
|
|
196
225
|
}
|
|
197
226
|
|