webpack 5.83.1 → 5.84.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.

Files changed (137) hide show
  1. package/README.md +2 -2
  2. package/lib/CompatibilityPlugin.js +3 -2
  3. package/lib/Compilation.js +2 -2
  4. package/lib/ContextModule.js +3 -3
  5. package/lib/DefinePlugin.js +11 -2
  6. package/lib/DllEntryPlugin.js +5 -0
  7. package/lib/DllModule.js +1 -1
  8. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  9. package/lib/MainTemplate.js +2 -2
  10. package/lib/PrefetchPlugin.js +4 -0
  11. package/lib/RuntimeTemplate.js +5 -5
  12. package/lib/SelfModuleFactory.js +12 -0
  13. package/lib/SourceMapDevToolPlugin.js +9 -2
  14. package/lib/Template.js +2 -1
  15. package/lib/config/browserslistTargetHandler.js +3 -3
  16. package/lib/config/defaults.js +209 -70
  17. package/lib/config/normalization.js +103 -71
  18. package/lib/config/target.js +37 -10
  19. package/lib/container/FallbackModule.js +1 -1
  20. package/lib/container/RemoteRuntimeModule.js +1 -1
  21. package/lib/css/CssParser.js +168 -73
  22. package/lib/debug/ProfilingPlugin.js +11 -0
  23. package/lib/dependencies/AMDDefineDependency.js +12 -6
  24. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
  25. package/lib/dependencies/AMDPlugin.js +7 -0
  26. package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
  27. package/lib/dependencies/AMDRequireContextDependency.js +6 -0
  28. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  29. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  30. package/lib/dependencies/AMDRequireDependency.js +8 -1
  31. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  32. package/lib/dependencies/CachedConstDependency.js +6 -0
  33. package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
  34. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  35. package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
  36. package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
  37. package/lib/dependencies/CommonJsPlugin.js +14 -0
  38. package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
  39. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  40. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  41. package/lib/dependencies/ConstDependency.js +2 -1
  42. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  43. package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
  44. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  45. package/lib/dependencies/CssImportDependency.js +2 -1
  46. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
  47. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  48. package/lib/dependencies/CssUrlDependency.js +12 -2
  49. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  50. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  51. package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
  52. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  53. package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
  54. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +11 -0
  55. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
  56. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  57. package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
  58. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
  59. package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
  60. package/lib/dependencies/HarmonyImportDependency.js +2 -1
  61. package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
  62. package/lib/dependencies/HarmonyImportSpecifierDependency.js +11 -0
  63. package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
  64. package/lib/dependencies/ImportContextDependency.js +6 -0
  65. package/lib/dependencies/ImportDependency.js +2 -1
  66. package/lib/dependencies/ImportEagerDependency.js +2 -1
  67. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
  68. package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
  69. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  70. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  71. package/lib/dependencies/ImportParserPlugin.js +5 -0
  72. package/lib/dependencies/ImportPlugin.js +7 -0
  73. package/lib/dependencies/ImportWeakDependency.js +2 -1
  74. package/lib/dependencies/LocalModule.js +16 -0
  75. package/lib/dependencies/LocalModuleDependency.js +7 -0
  76. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  77. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  78. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  79. package/lib/dependencies/PrefetchDependency.js +3 -0
  80. package/lib/dependencies/ProvidedDependency.js +2 -1
  81. package/lib/dependencies/PureExpressionDependency.js +2 -1
  82. package/lib/dependencies/RequireContextDependency.js +6 -0
  83. package/lib/dependencies/RequireContextPlugin.js +7 -0
  84. package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
  85. package/lib/dependencies/RequireEnsureDependency.js +8 -2
  86. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  87. package/lib/dependencies/RequireEnsurePlugin.js +14 -0
  88. package/lib/dependencies/RequireHeaderDependency.js +5 -1
  89. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  90. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  91. package/lib/dependencies/RequireIncludePlugin.js +14 -0
  92. package/lib/dependencies/RequireResolveContextDependency.js +8 -0
  93. package/lib/dependencies/RequireResolveDependency.js +6 -0
  94. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
  95. package/lib/dependencies/SystemPlugin.js +10 -1
  96. package/lib/dependencies/URLDependency.js +3 -2
  97. package/lib/dependencies/URLPlugin.js +7 -5
  98. package/lib/dependencies/UnsupportedDependency.js +5 -0
  99. package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
  100. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  101. package/lib/dependencies/WorkerDependency.js +2 -1
  102. package/lib/dependencies/WorkerPlugin.js +5 -2
  103. package/lib/dependencies/getFunctionExpression.js +7 -0
  104. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
  105. package/lib/esm/ModuleChunkFormatPlugin.js +2 -2
  106. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -2
  107. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
  108. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  109. package/lib/javascript/JavascriptModulesPlugin.js +13 -13
  110. package/lib/javascript/JavascriptParser.js +540 -180
  111. package/lib/javascript/StartupHelpers.js +1 -1
  112. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  113. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  114. package/lib/optimize/ConcatenatedModule.js +1 -1
  115. package/lib/optimize/InnerGraphPlugin.js +11 -4
  116. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  117. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -5
  118. package/lib/serialization/ArraySerializer.js +22 -6
  119. package/lib/serialization/BinaryMiddleware.js +21 -0
  120. package/lib/serialization/DateObjectSerializer.js +15 -4
  121. package/lib/serialization/ErrorObjectSerializer.js +20 -8
  122. package/lib/serialization/FileMiddleware.js +17 -0
  123. package/lib/serialization/MapObjectSerializer.js +24 -8
  124. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  125. package/lib/serialization/ObjectMiddleware.js +23 -0
  126. package/lib/serialization/PlainObjectSerializer.js +23 -12
  127. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  128. package/lib/serialization/SetObjectSerializer.js +21 -6
  129. package/lib/sharing/ShareRuntimeModule.js +1 -1
  130. package/lib/util/makeSerializable.js +7 -0
  131. package/lib/util/serialization.js +10 -0
  132. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
  133. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +5 -1
  134. package/package.json +3 -3
  135. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  136. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  137. 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: optionalNestedConfig(config.cache, cache => {
121
- if (cache === false) return false;
122
- if (cache === true) {
123
- return {
124
- type: "memory",
125
- maxGenerations: undefined
126
- };
127
- }
128
- switch (cache.type) {
129
- case "filesystem":
130
- return {
131
- type: "filesystem",
132
- allowCollectingMemory: cache.allowCollectingMemory,
133
- maxMemoryGenerations: cache.maxMemoryGenerations,
134
- maxAge: cache.maxAge,
135
- profile: cache.profile,
136
- buildDependencies: cloneObject(cache.buildDependencies),
137
- cacheDirectory: cache.cacheDirectory,
138
- cacheLocation: cache.cacheLocation,
139
- hashAlgorithm: cache.hashAlgorithm,
140
- compression: cache.compression,
141
- idleTimeout: cache.idleTimeout,
142
- idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
143
- idleTimeoutAfterLargeChanges: cache.idleTimeoutAfterLargeChanges,
144
- name: cache.name,
145
- store: cache.store,
146
- version: cache.version
147
- };
148
- case undefined:
149
- case "memory":
150
- return {
151
- type: "memory",
152
- maxGenerations: cache.maxGenerations
153
- };
154
- default:
155
- // @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
156
- throw new Error(`Not implemented cache.type ${cache.type}`);
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: nestedConfig(config.module, module => ({
219
- noParse: module.noParse,
220
- unsafeCache: module.unsafeCache,
221
- parser: keyedNestedConfig(module.parser, cloneObject, {
222
- javascript: parserOptions => ({
223
- unknownContextRequest: module.unknownContextRequest,
224
- unknownContextRegExp: module.unknownContextRegExp,
225
- unknownContextRecursive: module.unknownContextRecursive,
226
- unknownContextCritical: module.unknownContextCritical,
227
- exprContextRequest: module.exprContextRequest,
228
- exprContextRegExp: module.exprContextRegExp,
229
- exprContextRecursive: module.exprContextRecursive,
230
- exprContextCritical: module.exprContextCritical,
231
- wrappedContextRegExp: module.wrappedContextRegExp,
232
- wrappedContextRecursive: module.wrappedContextRecursive,
233
- wrappedContextCritical: module.wrappedContextCritical,
234
- // TODO webpack 6 remove
235
- strictExportPresence: module.strictExportPresence,
236
- strictThisContextOnImports: module.strictThisContextOnImports,
237
- ...parserOptions
238
- })
239
- }),
240
- generator: cloneObject(module.generator),
241
- defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
242
- rules: nestedArray(module.rules, r => [...r])
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
- value.import &&
492
- (Array.isArray(value.import) ? value.import : [value.import]),
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
- value.dependOn &&
503
- (Array.isArray(value.dependOn) ? value.dependOn : [value.dependOn]),
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
  }
@@ -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
- /** @template T @typedef {{ [P in keyof T]?: never }} Never<T> */
68
- /** @template A @template B @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A,B> */
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) return () => /** @type {undefined} */ (undefined);
73
- major = +major;
74
- minor = minor ? +minor : 0;
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 major > vMajor || (major === vMajor && minor >= vMinor);
95
+ return nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
77
96
  };
78
97
  };
79
98
 
80
- /** @type {[string, string, RegExp, (...args: string[]) => TargetProperties | false][]} */
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
- result[key] = hasFalse && hasTrue ? null : hasTrue ? true : false;
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
- "try { next = __webpack_require__(ids[i++]); } catch(e) { return handleError(e); }",
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
- "handleFunction(__webpack_require__, data[2], 0, 0, onExternal, 1);"
120
+ `handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`
121
121
  ])});`
122
122
  ]),
123
123
  "}"