webpack 5.83.1 → 5.85.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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +2 -2
- package/lib/AsyncDependenciesBlock.js +2 -2
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +4 -0
- package/lib/CacheFacade.js +4 -0
- package/lib/ChunkGroup.js +5 -1
- package/lib/CleanPlugin.js +30 -7
- package/lib/CompatibilityPlugin.js +4 -3
- package/lib/Compilation.js +3 -3
- package/lib/Compiler.js +1 -1
- package/lib/ContextModule.js +3 -3
- package/lib/ContextModuleFactory.js +1 -1
- package/lib/DefinePlugin.js +11 -2
- package/lib/DllEntryPlugin.js +5 -0
- package/lib/DllModule.js +1 -1
- package/lib/DllModuleFactory.js +1 -1
- package/lib/EvalSourceMapDevToolPlugin.js +3 -1
- package/lib/HookWebpackError.js +1 -1
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +21 -9
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleTypeConstants.js +2 -1
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/NormalModuleReplacementPlugin.js +4 -2
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RuntimeModule.js +5 -5
- package/lib/RuntimePlugin.js +4 -0
- package/lib/RuntimeTemplate.js +7 -7
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolPlugin.js +9 -2
- package/lib/Template.js +3 -2
- package/lib/UseStrictPlugin.js +4 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/WebpackOptionsApply.js +2 -1
- package/lib/asset/AssetGenerator.js +7 -2
- package/lib/asset/AssetModulesPlugin.js +7 -1
- package/lib/asset/AssetParser.js +4 -1
- package/lib/asset/RawDataUrlModule.js +5 -3
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/cache/PackFileCacheStrategy.js +7 -1
- package/lib/config/browserslistTargetHandler.js +3 -3
- package/lib/config/defaults.js +240 -73
- package/lib/config/normalization.js +104 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +4 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/FallbackDependency.js +7 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +5 -1
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +4 -0
- package/lib/container/RemoteRuntimeModule.js +2 -1
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssParser.js +168 -73
- package/lib/debug/ProfilingPlugin.js +11 -0
- package/lib/dependencies/AMDDefineDependency.js +12 -6
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
- package/lib/dependencies/AMDPlugin.js +7 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
- package/lib/dependencies/AMDRequireContextDependency.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +8 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/CachedConstDependency.js +6 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
- package/lib/dependencies/CommonJsExportsDependency.js +8 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
- package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
- package/lib/dependencies/CommonJsPlugin.js +28 -12
- package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
- package/lib/dependencies/ConstDependency.js +2 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssImportDependency.js +2 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +12 -2
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -1
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExports.js +3 -1
- package/lib/dependencies/HarmonyImportDependency.js +2 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +18 -5
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +86 -6
- package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
- package/lib/dependencies/ImportContextDependency.js +6 -0
- package/lib/dependencies/ImportDependency.js +2 -1
- package/lib/dependencies/ImportEagerDependency.js +2 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +5 -0
- package/lib/dependencies/ImportPlugin.js +7 -0
- package/lib/dependencies/ImportWeakDependency.js +2 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +7 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +2 -1
- package/lib/dependencies/PureExpressionDependency.js +2 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextPlugin.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
- package/lib/dependencies/RequireEnsureDependency.js +8 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +14 -0
- package/lib/dependencies/RequireHeaderDependency.js +5 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireIncludePlugin.js +14 -0
- package/lib/dependencies/RequireResolveContextDependency.js +8 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
- package/lib/dependencies/SystemPlugin.js +10 -1
- package/lib/dependencies/URLDependency.js +3 -2
- package/lib/dependencies/URLPlugin.js +7 -5
- package/lib/dependencies/UnsupportedDependency.js +5 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +2 -1
- package/lib/dependencies/WorkerPlugin.js +30 -3
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +15 -7
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +14 -9
- package/lib/hmr/LazyCompilationPlugin.js +1 -1
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +8 -1
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/SyncModuleIdsPlugin.js +2 -2
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +11 -1
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +36 -31
- package/lib/javascript/JavascriptParser.js +586 -192
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonGenerator.js +7 -5
- package/lib/json/JsonParser.js +1 -1
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AssignLibraryPlugin.js +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +6 -3
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +6 -3
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -0
- package/lib/node/ReadFileCompileWasmPlugin.js +19 -2
- package/lib/node/RequireChunkLoadingRuntimeModule.js +6 -3
- package/lib/optimize/ConcatenatedModule.js +1 -1
- package/lib/optimize/InnerGraphPlugin.js +11 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -1
- package/lib/runtime/BaseUriRuntimeModule.js +5 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +3 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +35 -16
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
- package/lib/runtime/PublicPathRuntimeModule.js +5 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +4 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +8 -5
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +21 -0
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +20 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -1
- package/lib/util/createHash.js +1 -1
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/serialization.js +10 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +13 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +19 -2
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +25 -1
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +14 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +12 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -2
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +9 -0
- package/lib/web/FetchCompileWasmPlugin.js +19 -2
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -2
- package/package.json +3 -3
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +12 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/types.d.ts +655 -290
@@ -7,17 +7,28 @@
|
|
7
7
|
|
8
8
|
const util = require("util");
|
9
9
|
|
10
|
+
/** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptions */
|
11
|
+
/** @typedef {import("../../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
|
10
12
|
/** @typedef {import("../../declarations/WebpackOptions").EntryStatic} EntryStatic */
|
11
13
|
/** @typedef {import("../../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
|
14
|
+
/** @typedef {import("../../declarations/WebpackOptions").Externals} Externals */
|
12
15
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
|
13
16
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
17
|
+
/** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptionsNormalized */
|
14
18
|
/** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunk} OptimizationRuntimeChunk */
|
15
19
|
/** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunkNormalized} OptimizationRuntimeChunkNormalized */
|
16
20
|
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
|
21
|
+
/** @typedef {import("../../declarations/WebpackOptions").Plugins} Plugins */
|
17
22
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
|
18
23
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
24
|
+
/** @typedef {import("../Entrypoint")} Entrypoint */
|
19
25
|
|
20
26
|
const handledDeprecatedNoEmitOnErrors = util.deprecate(
|
27
|
+
/**
|
28
|
+
* @param {boolean} noEmitOnErrors no emit on errors
|
29
|
+
* @param {boolean | undefined} emitOnErrors emit on errors
|
30
|
+
* @returns {boolean} emit on errors
|
31
|
+
*/
|
21
32
|
(noEmitOnErrors, emitOnErrors) => {
|
22
33
|
if (emitOnErrors !== undefined && !noEmitOnErrors === !emitOnErrors) {
|
23
34
|
throw new Error(
|
@@ -117,45 +128,51 @@ const getNormalizedWebpackOptions = config => {
|
|
117
128
|
return {
|
118
129
|
amd: config.amd,
|
119
130
|
bail: config.bail,
|
120
|
-
cache:
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
131
|
+
cache:
|
132
|
+
/** @type {NonNullable<CacheOptions>} */
|
133
|
+
(
|
134
|
+
optionalNestedConfig(config.cache, cache => {
|
135
|
+
if (cache === false) return false;
|
136
|
+
if (cache === true) {
|
137
|
+
return {
|
138
|
+
type: "memory",
|
139
|
+
maxGenerations: undefined
|
140
|
+
};
|
141
|
+
}
|
142
|
+
switch (cache.type) {
|
143
|
+
case "filesystem":
|
144
|
+
return {
|
145
|
+
type: "filesystem",
|
146
|
+
allowCollectingMemory: cache.allowCollectingMemory,
|
147
|
+
maxMemoryGenerations: cache.maxMemoryGenerations,
|
148
|
+
maxAge: cache.maxAge,
|
149
|
+
profile: cache.profile,
|
150
|
+
buildDependencies: cloneObject(cache.buildDependencies),
|
151
|
+
cacheDirectory: cache.cacheDirectory,
|
152
|
+
cacheLocation: cache.cacheLocation,
|
153
|
+
hashAlgorithm: cache.hashAlgorithm,
|
154
|
+
compression: cache.compression,
|
155
|
+
idleTimeout: cache.idleTimeout,
|
156
|
+
idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
|
157
|
+
idleTimeoutAfterLargeChanges:
|
158
|
+
cache.idleTimeoutAfterLargeChanges,
|
159
|
+
name: cache.name,
|
160
|
+
store: cache.store,
|
161
|
+
version: cache.version,
|
162
|
+
readonly: cache.readonly
|
163
|
+
};
|
164
|
+
case undefined:
|
165
|
+
case "memory":
|
166
|
+
return {
|
167
|
+
type: "memory",
|
168
|
+
maxGenerations: cache.maxGenerations
|
169
|
+
};
|
170
|
+
default:
|
171
|
+
// @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
|
172
|
+
throw new Error(`Not implemented cache.type ${cache.type}`);
|
173
|
+
}
|
174
|
+
})
|
175
|
+
),
|
159
176
|
context: config.context,
|
160
177
|
dependencies: config.dependencies,
|
161
178
|
devServer: optionalNestedConfig(config.devServer, devServer => ({
|
@@ -184,7 +201,7 @@ const getNormalizedWebpackOptions = config => {
|
|
184
201
|
options === true ? {} : options
|
185
202
|
)
|
186
203
|
})),
|
187
|
-
externals: config.externals,
|
204
|
+
externals: /** @type {NonNullable<Externals>} */ (config.externals),
|
188
205
|
externalsPresets: cloneObject(config.externalsPresets),
|
189
206
|
externalsType: config.externalsType,
|
190
207
|
ignoreWarnings: config.ignoreWarnings
|
@@ -215,32 +232,36 @@ const getNormalizedWebpackOptions = config => {
|
|
215
232
|
infrastructureLogging: cloneObject(config.infrastructureLogging),
|
216
233
|
loader: cloneObject(config.loader),
|
217
234
|
mode: config.mode,
|
218
|
-
module:
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
235
|
+
module:
|
236
|
+
/** @type {ModuleOptionsNormalized} */
|
237
|
+
(
|
238
|
+
nestedConfig(config.module, module => ({
|
239
|
+
noParse: module.noParse,
|
240
|
+
unsafeCache: module.unsafeCache,
|
241
|
+
parser: keyedNestedConfig(module.parser, cloneObject, {
|
242
|
+
javascript: parserOptions => ({
|
243
|
+
unknownContextRequest: module.unknownContextRequest,
|
244
|
+
unknownContextRegExp: module.unknownContextRegExp,
|
245
|
+
unknownContextRecursive: module.unknownContextRecursive,
|
246
|
+
unknownContextCritical: module.unknownContextCritical,
|
247
|
+
exprContextRequest: module.exprContextRequest,
|
248
|
+
exprContextRegExp: module.exprContextRegExp,
|
249
|
+
exprContextRecursive: module.exprContextRecursive,
|
250
|
+
exprContextCritical: module.exprContextCritical,
|
251
|
+
wrappedContextRegExp: module.wrappedContextRegExp,
|
252
|
+
wrappedContextRecursive: module.wrappedContextRecursive,
|
253
|
+
wrappedContextCritical: module.wrappedContextCritical,
|
254
|
+
// TODO webpack 6 remove
|
255
|
+
strictExportPresence: module.strictExportPresence,
|
256
|
+
strictThisContextOnImports: module.strictThisContextOnImports,
|
257
|
+
...parserOptions
|
258
|
+
})
|
259
|
+
}),
|
260
|
+
generator: cloneObject(module.generator),
|
261
|
+
defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
|
262
|
+
rules: nestedArray(module.rules, r => [...r])
|
263
|
+
}))
|
264
|
+
),
|
244
265
|
name: config.name,
|
245
266
|
node: nestedConfig(
|
246
267
|
config.node,
|
@@ -387,7 +408,7 @@ const getNormalizedWebpackOptions = config => {
|
|
387
408
|
...performance
|
388
409
|
};
|
389
410
|
}),
|
390
|
-
plugins: nestedArray(config.plugins, p => [...p]),
|
411
|
+
plugins: /** @type {Plugins} */ (nestedArray(config.plugins, p => [...p])),
|
391
412
|
profile: config.profile,
|
392
413
|
recordsInputPath:
|
393
414
|
config.recordsInputPath !== undefined
|
@@ -488,8 +509,11 @@ const getNormalizedEntryStatic = entry => {
|
|
488
509
|
} else {
|
489
510
|
result[key] = {
|
490
511
|
import:
|
491
|
-
|
492
|
-
(
|
512
|
+
/** @type {EntryDescriptionNormalized["import"]} */
|
513
|
+
(
|
514
|
+
value.import &&
|
515
|
+
(Array.isArray(value.import) ? value.import : [value.import])
|
516
|
+
),
|
493
517
|
filename: value.filename,
|
494
518
|
layer: value.layer,
|
495
519
|
runtime: value.runtime,
|
@@ -499,8 +523,13 @@ const getNormalizedEntryStatic = entry => {
|
|
499
523
|
asyncChunks: value.asyncChunks,
|
500
524
|
wasmLoading: value.wasmLoading,
|
501
525
|
dependOn:
|
502
|
-
|
503
|
-
(
|
526
|
+
/** @type {EntryDescriptionNormalized["dependOn"]} */
|
527
|
+
(
|
528
|
+
value.dependOn &&
|
529
|
+
(Array.isArray(value.dependOn)
|
530
|
+
? value.dependOn
|
531
|
+
: [value.dependOn])
|
532
|
+
),
|
504
533
|
library: value.library
|
505
534
|
};
|
506
535
|
}
|
@@ -522,6 +551,10 @@ const getNormalizedOptimizationRuntimeChunk = runtimeChunk => {
|
|
522
551
|
}
|
523
552
|
if (runtimeChunk === true || runtimeChunk === "multiple") {
|
524
553
|
return {
|
554
|
+
/**
|
555
|
+
* @param {Entrypoint} entrypoint entrypoint
|
556
|
+
* @returns {string} runtime chunk name
|
557
|
+
*/
|
525
558
|
name: entrypoint => `runtime~${entrypoint.name}`
|
526
559
|
};
|
527
560
|
}
|
package/lib/config/target.js
CHANGED
@@ -64,20 +64,39 @@ const getDefaultTarget = context => {
|
|
64
64
|
*/
|
65
65
|
|
66
66
|
///** @typedef {PlatformTargetProperties | ApiTargetProperties | EcmaTargetProperties | PlatformTargetProperties & ApiTargetProperties | PlatformTargetProperties & EcmaTargetProperties | ApiTargetProperties & EcmaTargetProperties} TargetProperties */
|
67
|
-
|
68
|
-
/**
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @template T
|
70
|
+
* @typedef {{ [P in keyof T]?: never }} Never<T>
|
71
|
+
*/
|
72
|
+
|
73
|
+
/**
|
74
|
+
* @template A
|
75
|
+
* @template B
|
76
|
+
* @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A, B>
|
77
|
+
*/
|
78
|
+
|
69
79
|
/** @typedef {Mix<Mix<PlatformTargetProperties, ElectronContextTargetProperties>, Mix<ApiTargetProperties, EcmaTargetProperties>>} TargetProperties */
|
70
80
|
|
81
|
+
/**
|
82
|
+
* @param {string} major major version
|
83
|
+
* @param {string | undefined} minor minor version
|
84
|
+
* @returns {(vMajor: number, vMinor?: number) => boolean | undefined} check if version is greater or equal
|
85
|
+
*/
|
71
86
|
const versionDependent = (major, minor) => {
|
72
|
-
if (!major)
|
73
|
-
|
74
|
-
|
87
|
+
if (!major) {
|
88
|
+
return () => /** @type {undefined} */ (undefined);
|
89
|
+
}
|
90
|
+
/** @type {number} */
|
91
|
+
const nMajor = +major;
|
92
|
+
/** @type {number} */
|
93
|
+
const nMinor = minor ? +minor : 0;
|
75
94
|
return (vMajor, vMinor = 0) => {
|
76
|
-
return
|
95
|
+
return nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
|
77
96
|
};
|
78
97
|
};
|
79
98
|
|
80
|
-
/** @type {[string, string, RegExp, (...args: string[]) => TargetProperties
|
99
|
+
/** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
|
81
100
|
const TARGETS = [
|
82
101
|
[
|
83
102
|
"browserslist / browserslist:env / browserslist:query / browserslist:path-to-config / browserslist:path-to-config:env",
|
@@ -95,6 +114,7 @@ See https://github.com/browserslist/browserslist#queries for possible ways to pr
|
|
95
114
|
The recommended way is to add a 'browserslist' key to your package.json and list supported browsers (resp. node.js versions).
|
96
115
|
You can also more options via the 'target' option: 'browserslist' / 'browserslist:env' / 'browserslist:query' / 'browserslist:path-to-config' / 'browserslist:path-to-config:env'`);
|
97
116
|
}
|
117
|
+
|
98
118
|
return browserslistTargetHandler.resolve(browsers);
|
99
119
|
}
|
100
120
|
],
|
@@ -294,7 +314,7 @@ const getTargetProperties = (target, context) => {
|
|
294
314
|
if (match) {
|
295
315
|
const [, ...args] = match;
|
296
316
|
const result = handler(...args, context);
|
297
|
-
if (result) return result;
|
317
|
+
if (result) return /** @type {TargetProperties} */ (result);
|
298
318
|
}
|
299
319
|
}
|
300
320
|
throw new Error(
|
@@ -304,13 +324,19 @@ const getTargetProperties = (target, context) => {
|
|
304
324
|
);
|
305
325
|
};
|
306
326
|
|
327
|
+
/**
|
328
|
+
* @param {TargetProperties[]} targetProperties array of target properties
|
329
|
+
* @returns {TargetProperties} merged target properties
|
330
|
+
*/
|
307
331
|
const mergeTargetProperties = targetProperties => {
|
332
|
+
/** @type {Set<keyof TargetProperties>} */
|
308
333
|
const keys = new Set();
|
309
334
|
for (const tp of targetProperties) {
|
310
335
|
for (const key of Object.keys(tp)) {
|
311
|
-
keys.add(key);
|
336
|
+
keys.add(/** @type {keyof TargetProperties} */ (key));
|
312
337
|
}
|
313
338
|
}
|
339
|
+
/** @type {Object} */
|
314
340
|
const result = {};
|
315
341
|
for (const key of keys) {
|
316
342
|
let hasTrue = false;
|
@@ -327,7 +353,8 @@ const mergeTargetProperties = targetProperties => {
|
|
327
353
|
}
|
328
354
|
}
|
329
355
|
if (hasTrue || hasFalse)
|
330
|
-
|
356
|
+
/** @type {TargetProperties} */
|
357
|
+
(result)[key] = hasFalse && hasTrue ? null : hasTrue ? true : false;
|
331
358
|
}
|
332
359
|
return /** @type {TargetProperties} */ (result);
|
333
360
|
};
|
@@ -273,6 +273,10 @@ class ContainerEntryModule extends Module {
|
|
273
273
|
super.serialize(context);
|
274
274
|
}
|
275
275
|
|
276
|
+
/**
|
277
|
+
* @param {ObjectDeserializerContext} context context
|
278
|
+
* @returns {ContainerEntryModule} deserialized container entry module
|
279
|
+
*/
|
276
280
|
static deserialize(context) {
|
277
281
|
const { read } = context;
|
278
282
|
const obj = new ContainerEntryModule(read(), read(), read());
|
@@ -15,7 +15,7 @@ const ContainerEntryModule = require("./ContainerEntryModule");
|
|
15
15
|
module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
|
16
16
|
/**
|
17
17
|
* @param {ModuleFactoryCreateData} data data object
|
18
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
18
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
19
19
|
* @returns {void}
|
20
20
|
*/
|
21
21
|
create({ dependencies: [dependency] }, callback) {
|
@@ -12,6 +12,9 @@ const makeSerializable = require("../util/makeSerializable");
|
|
12
12
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
13
|
|
14
14
|
class FallbackDependency extends Dependency {
|
15
|
+
/**
|
16
|
+
* @param {string[]} requests requests
|
17
|
+
*/
|
15
18
|
constructor(requests) {
|
16
19
|
super();
|
17
20
|
this.requests = requests;
|
@@ -41,6 +44,10 @@ class FallbackDependency extends Dependency {
|
|
41
44
|
super.serialize(context);
|
42
45
|
}
|
43
46
|
|
47
|
+
/**
|
48
|
+
* @param {ObjectDeserializerContext} context context
|
49
|
+
* @returns {FallbackDependency} deserialize fallback dependency
|
50
|
+
*/
|
44
51
|
static deserialize(context) {
|
45
52
|
const { read } = context;
|
46
53
|
const obj = new FallbackDependency(read());
|
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
class FallbackItemDependency extends ModuleDependency {
|
12
|
+
/**
|
13
|
+
* @param {string} request request
|
14
|
+
*/
|
12
15
|
constructor(request) {
|
13
16
|
super(request);
|
14
17
|
}
|
@@ -136,7 +136,7 @@ class FallbackModule extends Module {
|
|
136
136
|
`var loop = ${runtimeTemplate.basicFunction("next", [
|
137
137
|
"while(i < ids.length) {",
|
138
138
|
Template.indent([
|
139
|
-
|
139
|
+
`try { next = ${RuntimeGlobals.require}(ids[i++]); } catch(e) { return handleError(e); }`,
|
140
140
|
"if(next) return next.then ? next.then(handleResult, handleError) : handleResult(next);"
|
141
141
|
]),
|
142
142
|
"}",
|
@@ -166,6 +166,10 @@ class FallbackModule extends Module {
|
|
166
166
|
super.serialize(context);
|
167
167
|
}
|
168
168
|
|
169
|
+
/**
|
170
|
+
* @param {ObjectDeserializerContext} context context
|
171
|
+
* @returns {FallbackModule} deserialized fallback module
|
172
|
+
*/
|
169
173
|
static deserialize(context) {
|
170
174
|
const { read } = context;
|
171
175
|
const obj = new FallbackModule(read());
|
@@ -15,7 +15,7 @@ const FallbackModule = require("./FallbackModule");
|
|
15
15
|
module.exports = class FallbackModuleFactory extends ModuleFactory {
|
16
16
|
/**
|
17
17
|
* @param {ModuleFactoryCreateData} data data object
|
18
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
18
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
19
19
|
* @returns {void}
|
20
20
|
*/
|
21
21
|
create({ dependencies: [dependency] }, callback) {
|
@@ -164,6 +164,10 @@ class RemoteModule extends Module {
|
|
164
164
|
super.serialize(context);
|
165
165
|
}
|
166
166
|
|
167
|
+
/**
|
168
|
+
* @param {ObjectDeserializerContext} context context
|
169
|
+
* @returns {RemoteModule} deserialized module
|
170
|
+
*/
|
167
171
|
static deserialize(context) {
|
168
172
|
const { read } = context;
|
169
173
|
const obj = new RemoteModule(read(), read(), read(), read());
|
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
10
10
|
const Template = require("../Template");
|
11
11
|
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
13
|
/** @typedef {import("./RemoteModule")} RemoteModule */
|
13
14
|
|
14
15
|
class RemoteRuntimeModule extends RuntimeModule {
|
@@ -117,7 +118,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
117
118
|
"module.exports = factory();"
|
118
119
|
])}`
|
119
120
|
])};`,
|
120
|
-
|
121
|
+
`handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`
|
121
122
|
])});`
|
122
123
|
]),
|
123
124
|
"}"
|
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
class RemoteToExternalDependency extends ModuleDependency {
|
12
|
+
/**
|
13
|
+
* @param {string} request request
|
14
|
+
*/
|
12
15
|
constructor(request) {
|
13
16
|
super(request);
|
14
17
|
}
|