webpack 5.83.1 → 5.84.1
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/CompatibilityPlugin.js +3 -2
- package/lib/Compilation.js +2 -2
- package/lib/ContextModule.js +3 -3
- package/lib/DefinePlugin.js +11 -2
- package/lib/DllEntryPlugin.js +5 -0
- package/lib/DllModule.js +1 -1
- package/lib/EvalSourceMapDevToolPlugin.js +3 -1
- package/lib/MainTemplate.js +2 -2
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/RuntimeTemplate.js +5 -5
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolPlugin.js +9 -2
- package/lib/Template.js +2 -1
- package/lib/config/browserslistTargetHandler.js +3 -3
- package/lib/config/defaults.js +209 -70
- package/lib/config/normalization.js +103 -71
- package/lib/config/target.js +37 -10
- package/lib/container/FallbackModule.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +1 -1
- 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 +14 -0
- 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 +11 -0
- 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/HarmonyImportDependency.js +2 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +11 -0
- 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 +5 -2
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +2 -2
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -2
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/JavascriptModulesPlugin.js +13 -13
- package/lib/javascript/JavascriptParser.js +550 -180
- package/lib/javascript/StartupHelpers.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/optimize/ConcatenatedModule.js +1 -1
- package/lib/optimize/InnerGraphPlugin.js +11 -4
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -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/ShareRuntimeModule.js +1 -1
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/serialization.js +10 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +5 -1
- package/package.json +3 -3
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/types.d.ts +469 -149
@@ -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,50 @@ 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
|
+
};
|
163
|
+
case undefined:
|
164
|
+
case "memory":
|
165
|
+
return {
|
166
|
+
type: "memory",
|
167
|
+
maxGenerations: cache.maxGenerations
|
168
|
+
};
|
169
|
+
default:
|
170
|
+
// @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
|
171
|
+
throw new Error(`Not implemented cache.type ${cache.type}`);
|
172
|
+
}
|
173
|
+
})
|
174
|
+
),
|
159
175
|
context: config.context,
|
160
176
|
dependencies: config.dependencies,
|
161
177
|
devServer: optionalNestedConfig(config.devServer, devServer => ({
|
@@ -184,7 +200,7 @@ const getNormalizedWebpackOptions = config => {
|
|
184
200
|
options === true ? {} : options
|
185
201
|
)
|
186
202
|
})),
|
187
|
-
externals: config.externals,
|
203
|
+
externals: /** @type {NonNullable<Externals>} */ (config.externals),
|
188
204
|
externalsPresets: cloneObject(config.externalsPresets),
|
189
205
|
externalsType: config.externalsType,
|
190
206
|
ignoreWarnings: config.ignoreWarnings
|
@@ -215,32 +231,36 @@ const getNormalizedWebpackOptions = config => {
|
|
215
231
|
infrastructureLogging: cloneObject(config.infrastructureLogging),
|
216
232
|
loader: cloneObject(config.loader),
|
217
233
|
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
|
-
|
234
|
+
module:
|
235
|
+
/** @type {ModuleOptionsNormalized} */
|
236
|
+
(
|
237
|
+
nestedConfig(config.module, module => ({
|
238
|
+
noParse: module.noParse,
|
239
|
+
unsafeCache: module.unsafeCache,
|
240
|
+
parser: keyedNestedConfig(module.parser, cloneObject, {
|
241
|
+
javascript: parserOptions => ({
|
242
|
+
unknownContextRequest: module.unknownContextRequest,
|
243
|
+
unknownContextRegExp: module.unknownContextRegExp,
|
244
|
+
unknownContextRecursive: module.unknownContextRecursive,
|
245
|
+
unknownContextCritical: module.unknownContextCritical,
|
246
|
+
exprContextRequest: module.exprContextRequest,
|
247
|
+
exprContextRegExp: module.exprContextRegExp,
|
248
|
+
exprContextRecursive: module.exprContextRecursive,
|
249
|
+
exprContextCritical: module.exprContextCritical,
|
250
|
+
wrappedContextRegExp: module.wrappedContextRegExp,
|
251
|
+
wrappedContextRecursive: module.wrappedContextRecursive,
|
252
|
+
wrappedContextCritical: module.wrappedContextCritical,
|
253
|
+
// TODO webpack 6 remove
|
254
|
+
strictExportPresence: module.strictExportPresence,
|
255
|
+
strictThisContextOnImports: module.strictThisContextOnImports,
|
256
|
+
...parserOptions
|
257
|
+
})
|
258
|
+
}),
|
259
|
+
generator: cloneObject(module.generator),
|
260
|
+
defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
|
261
|
+
rules: nestedArray(module.rules, r => [...r])
|
262
|
+
}))
|
263
|
+
),
|
244
264
|
name: config.name,
|
245
265
|
node: nestedConfig(
|
246
266
|
config.node,
|
@@ -387,7 +407,7 @@ const getNormalizedWebpackOptions = config => {
|
|
387
407
|
...performance
|
388
408
|
};
|
389
409
|
}),
|
390
|
-
plugins: nestedArray(config.plugins, p => [...p]),
|
410
|
+
plugins: /** @type {Plugins} */ (nestedArray(config.plugins, p => [...p])),
|
391
411
|
profile: config.profile,
|
392
412
|
recordsInputPath:
|
393
413
|
config.recordsInputPath !== undefined
|
@@ -488,8 +508,11 @@ const getNormalizedEntryStatic = entry => {
|
|
488
508
|
} else {
|
489
509
|
result[key] = {
|
490
510
|
import:
|
491
|
-
|
492
|
-
(
|
511
|
+
/** @type {EntryDescriptionNormalized["import"]} */
|
512
|
+
(
|
513
|
+
value.import &&
|
514
|
+
(Array.isArray(value.import) ? value.import : [value.import])
|
515
|
+
),
|
493
516
|
filename: value.filename,
|
494
517
|
layer: value.layer,
|
495
518
|
runtime: value.runtime,
|
@@ -499,8 +522,13 @@ const getNormalizedEntryStatic = entry => {
|
|
499
522
|
asyncChunks: value.asyncChunks,
|
500
523
|
wasmLoading: value.wasmLoading,
|
501
524
|
dependOn:
|
502
|
-
|
503
|
-
(
|
525
|
+
/** @type {EntryDescriptionNormalized["dependOn"]} */
|
526
|
+
(
|
527
|
+
value.dependOn &&
|
528
|
+
(Array.isArray(value.dependOn)
|
529
|
+
? value.dependOn
|
530
|
+
: [value.dependOn])
|
531
|
+
),
|
504
532
|
library: value.library
|
505
533
|
};
|
506
534
|
}
|
@@ -522,6 +550,10 @@ const getNormalizedOptimizationRuntimeChunk = runtimeChunk => {
|
|
522
550
|
}
|
523
551
|
if (runtimeChunk === true || runtimeChunk === "multiple") {
|
524
552
|
return {
|
553
|
+
/**
|
554
|
+
* @param {Entrypoint} entrypoint entrypoint
|
555
|
+
* @returns {string} runtime chunk name
|
556
|
+
*/
|
525
557
|
name: entrypoint => `runtime~${entrypoint.name}`
|
526
558
|
};
|
527
559
|
}
|
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
|
};
|
@@ -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
|
"}",
|
@@ -117,7 +117,7 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
117
117
|
"module.exports = factory();"
|
118
118
|
])}`
|
119
119
|
])};`,
|
120
|
-
|
120
|
+
`handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`
|
121
121
|
])});`
|
122
122
|
]),
|
123
123
|
"}"
|