webpack 5.93.0 → 5.95.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 +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- 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 +6 -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 +41 -15
- 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 +130 -69
- 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 +21 -13
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -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 +93 -81
- 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 +32 -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 +26 -24
- package/lib/css/CssGenerator.js +9 -4
- 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 +7 -2
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +35 -8
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- 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 +40 -15
- 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 +3 -3
- 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 +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +133 -86
- 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 +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- 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 +81 -51
- 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/MergeDuplicateChunksPlugin.js +2 -2
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -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/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/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- 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 +13 -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 +8 -11
- 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 +32 -32
- 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 +109 -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 +18 -17
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +5 -0
- 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 +681 -355
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;
|
@@ -93,7 +93,7 @@ class CssExportsGenerator extends Generator {
|
|
93
93
|
chunkGraph: generateContext.chunkGraph,
|
94
94
|
module,
|
95
95
|
runtime: generateContext.runtime,
|
96
|
-
runtimeRequirements
|
96
|
+
runtimeRequirements,
|
97
97
|
concatenationScope: generateContext.concatenationScope,
|
98
98
|
codeGenerationResults: generateContext.codeGenerationResults,
|
99
99
|
initFragments,
|
@@ -122,20 +122,23 @@ class CssExportsGenerator extends Generator {
|
|
122
122
|
const template = generateContext.dependencyTemplates.get(constructor);
|
123
123
|
if (!template) {
|
124
124
|
throw new Error(
|
125
|
-
|
125
|
+
`No template for dependency: ${dependency.constructor.name}`
|
126
126
|
);
|
127
127
|
}
|
128
128
|
|
129
129
|
template.apply(dependency, source, templateContext);
|
130
130
|
};
|
131
|
-
|
131
|
+
|
132
|
+
for (const dependency of module.dependencies) {
|
133
|
+
handleDependency(dependency);
|
134
|
+
}
|
132
135
|
|
133
136
|
if (generateContext.concatenationScope) {
|
134
137
|
const source = new ConcatSource();
|
135
138
|
const usedIdentifiers = new Set();
|
136
139
|
for (const [name, v] of cssExportsData.exports) {
|
137
140
|
let identifier = Template.toIdentifier(name);
|
138
|
-
|
141
|
+
const i = 0;
|
139
142
|
while (usedIdentifiers.has(identifier)) {
|
140
143
|
identifier = Template.toIdentifier(name + i);
|
141
144
|
}
|
@@ -148,28 +151,27 @@ class CssExportsGenerator extends Generator {
|
|
148
151
|
);
|
149
152
|
}
|
150
153
|
return source;
|
151
|
-
}
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
);
|
162
|
-
}
|
163
|
-
const exports = [];
|
164
|
-
for (let [name, v] of cssExportsData.exports) {
|
165
|
-
exports.push(`\t${JSON.stringify(name)}: ${JSON.stringify(v)}`);
|
166
|
-
}
|
167
|
-
return new RawSource(
|
168
|
-
`${needNsObj ? `${RuntimeGlobals.makeNamespaceObject}(` : ""}${
|
169
|
-
module.moduleArgument
|
170
|
-
}.exports = {\n${exports.join(",\n")}\n}${needNsObj ? ")" : ""};`
|
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
|
171
164
|
);
|
172
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
|
+
);
|
173
175
|
}
|
174
176
|
|
175
177
|
/**
|
package/lib/css/CssGenerator.js
CHANGED
@@ -95,15 +95,20 @@ class CssGenerator extends Generator {
|
|
95
95
|
const template = generateContext.dependencyTemplates.get(constructor);
|
96
96
|
if (!template) {
|
97
97
|
throw new Error(
|
98
|
-
|
98
|
+
`No template for dependency: ${dependency.constructor.name}`
|
99
99
|
);
|
100
100
|
}
|
101
101
|
|
102
102
|
template.apply(dependency, source, templateContext);
|
103
103
|
};
|
104
|
-
module.dependencies
|
105
|
-
|
106
|
-
|
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);
|
110
|
+
}
|
111
|
+
}
|
107
112
|
|
108
113
|
const data = generateContext.getData();
|
109
114
|
data.set("css-exports", cssExportsData);
|
@@ -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)",
|