webpack 5.92.1 → 5.94.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +132 -70
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +39 -40
- package/lib/css/CssGenerator.js +11 -14
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +144 -61
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +10 -13
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/types.d.ts +682 -347
package/lib/config/target.js
CHANGED
@@ -65,8 +65,6 @@ const getDefaultTarget = context => {
|
|
65
65
|
* @property {boolean | null} asyncFunction async functions and await are available
|
66
66
|
*/
|
67
67
|
|
68
|
-
///** @typedef {PlatformTargetProperties | ApiTargetProperties | EcmaTargetProperties | PlatformTargetProperties & ApiTargetProperties | PlatformTargetProperties & EcmaTargetProperties | ApiTargetProperties & EcmaTargetProperties} TargetProperties */
|
69
|
-
|
70
68
|
/**
|
71
69
|
* @template T
|
72
70
|
* @typedef {{ [P in keyof T]?: never }} Never<T>
|
@@ -90,12 +88,11 @@ const versionDependent = (major, minor) => {
|
|
90
88
|
return () => /** @type {undefined} */ (undefined);
|
91
89
|
}
|
92
90
|
/** @type {number} */
|
93
|
-
const nMajor =
|
91
|
+
const nMajor = Number(major);
|
94
92
|
/** @type {number} */
|
95
|
-
const nMinor = minor ?
|
96
|
-
return (vMajor, vMinor = 0) =>
|
97
|
-
|
98
|
-
};
|
93
|
+
const nMinor = minor ? Number(minor) : 0;
|
94
|
+
return (vMajor, vMinor = 0) =>
|
95
|
+
nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
|
99
96
|
};
|
100
97
|
|
101
98
|
/** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
|
@@ -124,47 +121,43 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
124
121
|
"web",
|
125
122
|
"Web browser.",
|
126
123
|
/^web$/,
|
127
|
-
() => {
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
nwjs: false,
|
124
|
+
() => ({
|
125
|
+
web: true,
|
126
|
+
browser: true,
|
127
|
+
webworker: null,
|
128
|
+
node: false,
|
129
|
+
electron: false,
|
130
|
+
nwjs: false,
|
135
131
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
}
|
132
|
+
document: true,
|
133
|
+
importScriptsInWorker: true,
|
134
|
+
fetchWasm: true,
|
135
|
+
nodeBuiltins: false,
|
136
|
+
importScripts: false,
|
137
|
+
require: false,
|
138
|
+
global: false
|
139
|
+
})
|
145
140
|
],
|
146
141
|
[
|
147
142
|
"webworker",
|
148
143
|
"Web Worker, SharedWorker or Service Worker.",
|
149
144
|
/^webworker$/,
|
150
|
-
() => {
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
nwjs: false,
|
145
|
+
() => ({
|
146
|
+
web: true,
|
147
|
+
browser: true,
|
148
|
+
webworker: true,
|
149
|
+
node: false,
|
150
|
+
electron: false,
|
151
|
+
nwjs: false,
|
158
152
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
}
|
153
|
+
importScripts: true,
|
154
|
+
importScriptsInWorker: true,
|
155
|
+
fetchWasm: true,
|
156
|
+
nodeBuiltins: false,
|
157
|
+
require: false,
|
158
|
+
document: false,
|
159
|
+
global: false
|
160
|
+
})
|
168
161
|
],
|
169
162
|
[
|
170
163
|
"[async-]node[X[.Y]]",
|
@@ -184,7 +177,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
184
177
|
require: !asyncFlag,
|
185
178
|
nodeBuiltins: true,
|
186
179
|
// v16.0.0, v14.18.0
|
187
|
-
nodePrefixForCoreModules:
|
180
|
+
nodePrefixForCoreModules: Number(major) < 15 ? v(14, 18) : v(16),
|
188
181
|
global: true,
|
189
182
|
document: false,
|
190
183
|
fetchWasm: false,
|
@@ -295,7 +288,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
295
288
|
"EcmaScript in this version. Examples: es2020, es5.",
|
296
289
|
/^es(\d+)$/,
|
297
290
|
version => {
|
298
|
-
let v =
|
291
|
+
let v = Number(version);
|
299
292
|
if (v < 1000) v = v + 2009;
|
300
293
|
return {
|
301
294
|
const: v >= 2015,
|
@@ -366,7 +359,7 @@ const mergeTargetProperties = targetProperties => {
|
|
366
359
|
}
|
367
360
|
if (hasTrue || hasFalse)
|
368
361
|
/** @type {TargetProperties} */
|
369
|
-
(result)[key] = hasFalse && hasTrue ? null : hasTrue
|
362
|
+
(result)[key] = hasFalse && hasTrue ? null : Boolean(hasTrue);
|
370
363
|
}
|
371
364
|
return /** @type {TargetProperties} */ (result);
|
372
365
|
};
|
@@ -376,12 +369,9 @@ const mergeTargetProperties = targetProperties => {
|
|
376
369
|
* @param {string} context the context directory
|
377
370
|
* @returns {TargetProperties} target properties
|
378
371
|
*/
|
379
|
-
const getTargetsProperties = (targets, context) =>
|
380
|
-
|
381
|
-
targets.map(t => getTargetProperties(t, context))
|
382
|
-
);
|
383
|
-
};
|
372
|
+
const getTargetsProperties = (targets, context) =>
|
373
|
+
mergeTargetProperties(targets.map(t => getTargetProperties(t, context)));
|
384
374
|
|
385
|
-
exports.getDefaultTarget = getDefaultTarget;
|
386
|
-
exports.getTargetProperties = getTargetProperties;
|
387
|
-
exports.getTargetsProperties = getTargetsProperties;
|
375
|
+
module.exports.getDefaultTarget = getDefaultTarget;
|
376
|
+
module.exports.getTargetProperties = getTargetProperties;
|
377
|
+
module.exports.getTargetsProperties = getTargetsProperties;
|
@@ -77,7 +77,7 @@ class ContainerEntryModule extends Module {
|
|
77
77
|
* @returns {string} a user readable identifier of the module
|
78
78
|
*/
|
79
79
|
readableIdentifier(requestShortener) {
|
80
|
-
return
|
80
|
+
return "container entry";
|
81
81
|
}
|
82
82
|
|
83
83
|
/**
|
@@ -205,7 +205,7 @@ class ContainerEntryModule extends Module {
|
|
205
205
|
}
|
206
206
|
|
207
207
|
const source = Template.asString([
|
208
|
-
|
208
|
+
"var moduleMap = {",
|
209
209
|
Template.indent(getters.join(",\n")),
|
210
210
|
"};",
|
211
211
|
`var get = ${runtimeTemplate.basicFunction("module, getScope", [
|
@@ -12,6 +12,7 @@ const Template = require("../Template");
|
|
12
12
|
/** @typedef {import("../Chunk")} Chunk */
|
13
13
|
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
14
14
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
15
|
+
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
15
16
|
/** @typedef {import("../Compilation")} Compilation */
|
16
17
|
/** @typedef {import("./RemoteModule")} RemoteModule */
|
17
18
|
|
@@ -29,7 +30,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
29
30
|
const { runtimeTemplate, moduleGraph } = compilation;
|
30
31
|
/** @type {Record<ChunkId, (string | number)[]>} */
|
31
32
|
const chunkToRemotesMapping = {};
|
32
|
-
/** @type {Record<
|
33
|
+
/** @type {Record<ModuleId, [string, string, string | number | null]>} */
|
33
34
|
const idToExternalAndNameMapping = {};
|
34
35
|
for (const chunk of /** @type {Chunk} */ (this.chunk).getAllAsyncChunks()) {
|
35
36
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
@@ -37,19 +38,21 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
37
38
|
"remote"
|
38
39
|
);
|
39
40
|
if (!modules) continue;
|
40
|
-
/** @type {
|
41
|
+
/** @type {ModuleId[]} */
|
41
42
|
const remotes = (chunkToRemotesMapping[
|
42
|
-
/** @type {ChunkId} */
|
43
|
+
/** @type {ChunkId} */
|
44
|
+
(chunk.id)
|
43
45
|
] = []);
|
44
46
|
for (const m of modules) {
|
45
47
|
const module = /** @type {RemoteModule} */ (m);
|
46
48
|
const name = module.internalRequest;
|
47
|
-
const id = chunkGraph.getModuleId(module);
|
49
|
+
const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
|
48
50
|
const shareScope = module.shareScope;
|
49
51
|
const dep = module.dependencies[0];
|
50
52
|
const externalModule = moduleGraph.getModule(dep);
|
51
53
|
const externalModuleId =
|
52
|
-
|
54
|
+
/** @type {ModuleId} */
|
55
|
+
(externalModule && chunkGraph.getModuleId(externalModule));
|
53
56
|
remotes.push(id);
|
54
57
|
idToExternalAndNameMapping[id] = [shareScope, name, externalModuleId];
|
55
58
|
}
|
@@ -76,7 +79,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
76
79
|
"var data = idToExternalAndNameMapping[id];",
|
77
80
|
"if(getScope.indexOf(data) >= 0) return;",
|
78
81
|
"getScope.push(data);",
|
79
|
-
|
82
|
+
"if(data.p) return promises.push(data.p);",
|
80
83
|
`var onError = ${runtimeTemplate.basicFunction("error", [
|
81
84
|
'if(!error) error = new Error("Container missing");',
|
82
85
|
'if(typeof error.message === "string")',
|
@@ -100,7 +103,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
100
103
|
"next(result, d)",
|
101
104
|
"result"
|
102
105
|
)}, onError);`,
|
103
|
-
|
106
|
+
"if(first) promises.push(data.p = p); else return p;"
|
104
107
|
]),
|
105
108
|
"} else {",
|
106
109
|
Template.indent(["return next(promise, d, first);"]),
|
@@ -116,7 +119,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
116
119
|
"external, _, first"
|
117
120
|
)};`,
|
118
121
|
`var onInitialized = ${runtimeTemplate.returningFunction(
|
119
|
-
|
122
|
+
"handleFunction(external.get, data[1], getScope, 0, onFactory, first)",
|
120
123
|
"_, external, first"
|
121
124
|
)};`,
|
122
125
|
`var onFactory = ${runtimeTemplate.basicFunction("factory", [
|
package/lib/container/options.js
CHANGED
@@ -5,7 +5,15 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
-
/**
|
8
|
+
/**
|
9
|
+
* @template T
|
10
|
+
* @typedef {Record<string, string | string[] | T>} Item
|
11
|
+
*/
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @template T
|
15
|
+
* @typedef {(string | Item<T>)[] | Item<T>} ContainerOptionsFormat
|
16
|
+
*/
|
9
17
|
|
10
18
|
/**
|
11
19
|
* @template T
|
@@ -17,6 +25,9 @@
|
|
17
25
|
* @returns {void}
|
18
26
|
*/
|
19
27
|
const process = (options, normalizeSimple, normalizeOptions, fn) => {
|
28
|
+
/**
|
29
|
+
* @param {(string | Item<T>)[]} items items
|
30
|
+
*/
|
20
31
|
const array = items => {
|
21
32
|
for (const item of items) {
|
22
33
|
if (typeof item === "string") {
|
@@ -28,6 +39,9 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
|
|
28
39
|
}
|
29
40
|
}
|
30
41
|
};
|
42
|
+
/**
|
43
|
+
* @param {Item<T>} obj an object
|
44
|
+
*/
|
31
45
|
const object = obj => {
|
32
46
|
for (const [key, value] of Object.entries(obj)) {
|
33
47
|
if (typeof value === "string" || Array.isArray(value)) {
|
@@ -38,7 +52,7 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
|
|
38
52
|
}
|
39
53
|
};
|
40
54
|
if (!options) {
|
41
|
-
|
55
|
+
// Do nothing
|
42
56
|
} else if (Array.isArray(options)) {
|
43
57
|
array(options);
|
44
58
|
} else if (typeof options === "object") {
|
@@ -87,5 +101,5 @@ const scope = (scope, options) => {
|
|
87
101
|
return obj;
|
88
102
|
};
|
89
103
|
|
90
|
-
exports.parseOptions = parseOptions;
|
91
|
-
exports.scope = scope;
|
104
|
+
module.exports.parseOptions = parseOptions;
|
105
|
+
module.exports.scope = scope;
|
@@ -10,7 +10,6 @@ const { UsageState } = require("../ExportsInfo");
|
|
10
10
|
const Generator = require("../Generator");
|
11
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
12
12
|
const Template = require("../Template");
|
13
|
-
const { cssExportConvention } = require("../util/conventions");
|
14
13
|
|
15
14
|
/** @typedef {import("webpack-sources").Source} Source */
|
16
15
|
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
|
@@ -94,7 +93,7 @@ class CssExportsGenerator extends Generator {
|
|
94
93
|
chunkGraph: generateContext.chunkGraph,
|
95
94
|
module,
|
96
95
|
runtime: generateContext.runtime,
|
97
|
-
runtimeRequirements
|
96
|
+
runtimeRequirements,
|
98
97
|
concatenationScope: generateContext.concatenationScope,
|
99
98
|
codeGenerationResults: generateContext.codeGenerationResults,
|
100
99
|
initFragments,
|
@@ -123,58 +122,56 @@ class CssExportsGenerator extends Generator {
|
|
123
122
|
const template = generateContext.dependencyTemplates.get(constructor);
|
124
123
|
if (!template) {
|
125
124
|
throw new Error(
|
126
|
-
|
125
|
+
`No template for dependency: ${dependency.constructor.name}`
|
127
126
|
);
|
128
127
|
}
|
129
128
|
|
130
129
|
template.apply(dependency, source, templateContext);
|
131
130
|
};
|
132
|
-
|
131
|
+
|
132
|
+
for (const dependency of module.dependencies) {
|
133
|
+
handleDependency(dependency);
|
134
|
+
}
|
133
135
|
|
134
136
|
if (generateContext.concatenationScope) {
|
135
137
|
const source = new ConcatSource();
|
136
138
|
const usedIdentifiers = new Set();
|
137
139
|
for (const [name, v] of cssExportsData.exports) {
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
identifier = Template.toIdentifier(k + i);
|
143
|
-
}
|
144
|
-
usedIdentifiers.add(identifier);
|
145
|
-
generateContext.concatenationScope.registerExport(k, identifier);
|
146
|
-
source.add(
|
147
|
-
`${
|
148
|
-
generateContext.runtimeTemplate.supportsConst() ? "const" : "var"
|
149
|
-
} ${identifier} = ${JSON.stringify(v)};\n`
|
150
|
-
);
|
140
|
+
let identifier = Template.toIdentifier(name);
|
141
|
+
const i = 0;
|
142
|
+
while (usedIdentifiers.has(identifier)) {
|
143
|
+
identifier = Template.toIdentifier(name + i);
|
151
144
|
}
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
.getExportsInfo(module)
|
159
|
-
.otherExportsInfo.getUsed(generateContext.runtime) !==
|
160
|
-
UsageState.Unused;
|
161
|
-
if (needNsObj) {
|
162
|
-
generateContext.runtimeRequirements.add(
|
163
|
-
RuntimeGlobals.makeNamespaceObject
|
145
|
+
usedIdentifiers.add(identifier);
|
146
|
+
generateContext.concatenationScope.registerExport(name, identifier);
|
147
|
+
source.add(
|
148
|
+
`${
|
149
|
+
generateContext.runtimeTemplate.supportsConst() ? "const" : "var"
|
150
|
+
} ${identifier} = ${JSON.stringify(v)};\n`
|
164
151
|
);
|
165
152
|
}
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
153
|
+
return source;
|
154
|
+
}
|
155
|
+
const needNsObj =
|
156
|
+
this.esModule &&
|
157
|
+
generateContext.moduleGraph
|
158
|
+
.getExportsInfo(module)
|
159
|
+
.otherExportsInfo.getUsed(generateContext.runtime) !==
|
160
|
+
UsageState.Unused;
|
161
|
+
if (needNsObj) {
|
162
|
+
generateContext.runtimeRequirements.add(
|
163
|
+
RuntimeGlobals.makeNamespaceObject
|
176
164
|
);
|
177
165
|
}
|
166
|
+
const exports = [];
|
167
|
+
for (const [name, v] of cssExportsData.exports) {
|
168
|
+
exports.push(`\t${JSON.stringify(name)}: ${JSON.stringify(v)}`);
|
169
|
+
}
|
170
|
+
return new RawSource(
|
171
|
+
`${needNsObj ? `${RuntimeGlobals.makeNamespaceObject}(` : ""}${
|
172
|
+
module.moduleArgument
|
173
|
+
}.exports = {\n${exports.join(",\n")}\n}${needNsObj ? ")" : ""};`
|
174
|
+
);
|
178
175
|
}
|
179
176
|
|
180
177
|
/**
|
@@ -198,7 +195,9 @@ class CssExportsGenerator extends Generator {
|
|
198
195
|
* @param {Hash} hash hash that will be modified
|
199
196
|
* @param {UpdateHashContext} updateHashContext context for updating hash
|
200
197
|
*/
|
201
|
-
updateHash(hash, { module }) {
|
198
|
+
updateHash(hash, { module }) {
|
199
|
+
hash.update(this.esModule.toString());
|
200
|
+
}
|
202
201
|
}
|
203
202
|
|
204
203
|
module.exports = CssExportsGenerator;
|
package/lib/css/CssGenerator.js
CHANGED
@@ -9,7 +9,6 @@ const { ReplaceSource } = require("webpack-sources");
|
|
9
9
|
const Generator = require("../Generator");
|
10
10
|
const InitFragment = require("../InitFragment");
|
11
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
12
|
-
const { cssExportConvention } = require("../util/conventions");
|
13
12
|
|
14
13
|
/** @typedef {import("webpack-sources").Source} Source */
|
15
14
|
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
|
@@ -96,25 +95,21 @@ class CssGenerator extends Generator {
|
|
96
95
|
const template = generateContext.dependencyTemplates.get(constructor);
|
97
96
|
if (!template) {
|
98
97
|
throw new Error(
|
99
|
-
|
98
|
+
`No template for dependency: ${dependency.constructor.name}`
|
100
99
|
);
|
101
100
|
}
|
102
101
|
|
103
102
|
template.apply(dependency, source, templateContext);
|
104
103
|
};
|
105
|
-
module.dependencies
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
for (let [name, v] of cssExportsData.exports) {
|
112
|
-
for (let newName of cssExportConvention(name, this.convention)) {
|
113
|
-
newExports.set(newName, v);
|
114
|
-
}
|
104
|
+
for (const dependency of module.dependencies) {
|
105
|
+
handleDependency(dependency);
|
106
|
+
}
|
107
|
+
if (module.presentationalDependencies !== undefined) {
|
108
|
+
for (const dependency of module.presentationalDependencies) {
|
109
|
+
handleDependency(dependency);
|
115
110
|
}
|
116
|
-
cssExportsData.exports = newExports;
|
117
111
|
}
|
112
|
+
|
118
113
|
const data = generateContext.getData();
|
119
114
|
data.set("css-exports", cssExportsData);
|
120
115
|
|
@@ -148,7 +143,9 @@ class CssGenerator extends Generator {
|
|
148
143
|
* @param {Hash} hash hash that will be modified
|
149
144
|
* @param {UpdateHashContext} updateHashContext context for updating hash
|
150
145
|
*/
|
151
|
-
updateHash(hash, { module }) {
|
146
|
+
updateHash(hash, { module }) {
|
147
|
+
hash.update(this.esModule.toString());
|
148
|
+
}
|
152
149
|
}
|
153
150
|
|
154
151
|
module.exports = CssGenerator;
|
@@ -86,7 +86,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
86
86
|
* @returns {boolean} true, if the chunk has css
|
87
87
|
*/
|
88
88
|
(chunk, chunkGraph) =>
|
89
|
-
|
89
|
+
Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, "css"))
|
90
90
|
);
|
91
91
|
const hasCssMatcher = compileBooleanMatcher(conditionMap);
|
92
92
|
|
@@ -210,7 +210,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
210
210
|
Template.indent([
|
211
211
|
"var style = cssRules[j--].style;",
|
212
212
|
"if(!style) continue;",
|
213
|
-
|
213
|
+
"data = style.getPropertyValue(name);"
|
214
214
|
]),
|
215
215
|
"}"
|
216
216
|
]),
|
@@ -224,7 +224,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
224
224
|
withCompression
|
225
225
|
? Template.asString([
|
226
226
|
// LZW decode
|
227
|
-
`var map = {}, char = data[0], oldPhrase = char, decoded = char, code = 256, maxCode = ${"\
|
227
|
+
`var map = {}, char = data[0], oldPhrase = char, decoded = char, code = 256, maxCode = ${"\uFFFF".charCodeAt(
|
228
228
|
0
|
229
229
|
)}, phrase;`,
|
230
230
|
"for (i = 1; i < data.length; i++) {",
|
@@ -255,12 +255,12 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
255
255
|
","
|
256
256
|
)}) { token = token.replace(/^_/, ""); target[token] = (${runtimeTemplate.basicFunction(
|
257
257
|
"exports, module",
|
258
|
-
|
258
|
+
"module.exports = exports;"
|
259
259
|
)}).bind(null, exports); ${
|
260
260
|
withHmr ? "moduleIds.push(token); " : ""
|
261
261
|
}token = ""; token2 = ""; exports = {}; }`,
|
262
262
|
`else if(cc == ${cc("\\")}) { token += data[++i] }`,
|
263
|
-
|
263
|
+
"else { token += data[i]; }"
|
264
264
|
]),
|
265
265
|
"}",
|
266
266
|
`${
|
@@ -271,9 +271,9 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
271
271
|
)}`,
|
272
272
|
'var loadingAttribute = "data-webpack-loading";',
|
273
273
|
`var loadStylesheet = ${runtimeTemplate.basicFunction(
|
274
|
-
|
275
|
-
|
276
|
-
|
274
|
+
`chunkId, url, done${withHmr ? ", hmr" : ""}${
|
275
|
+
withFetchPriority ? ", fetchPriority" : ""
|
276
|
+
}`,
|
277
277
|
[
|
278
278
|
'var link, needAttach, key = "chunk-" + chunkId;',
|
279
279
|
withHmr ? "if(!hmr) {" : "",
|
@@ -360,7 +360,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
360
360
|
Template.indent([
|
361
361
|
"// setup Promise in chunk cache",
|
362
362
|
`var promise = new Promise(${runtimeTemplate.expressionFunction(
|
363
|
-
|
363
|
+
"installedChunkData = installedChunks[chunkId] = [resolve, reject]",
|
364
364
|
"resolve, reject"
|
365
365
|
)});`,
|
366
366
|
"promises.push(installedChunkData[2] = promise);",
|
@@ -516,7 +516,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
516
516
|
"}",
|
517
517
|
"while(newTags.length) {",
|
518
518
|
Template.indent([
|
519
|
-
|
519
|
+
"var info = newTags.pop();",
|
520
520
|
`var chunkModuleIds = loadCssChunkData(${RuntimeGlobals.moduleFactories}, info[1], info[0]);`,
|
521
521
|
`chunkModuleIds.forEach(${runtimeTemplate.expressionFunction(
|
522
522
|
"moduleIds.push(id)",
|