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.

Files changed (232) hide show
  1. package/README.md +2 -2
  2. package/lib/AsyncDependenciesBlock.js +2 -2
  3. package/lib/AutomaticPrefetchPlugin.js +1 -0
  4. package/lib/BannerPlugin.js +4 -0
  5. package/lib/CacheFacade.js +4 -0
  6. package/lib/ChunkGroup.js +5 -1
  7. package/lib/CleanPlugin.js +30 -7
  8. package/lib/CompatibilityPlugin.js +4 -3
  9. package/lib/Compilation.js +3 -3
  10. package/lib/Compiler.js +1 -1
  11. package/lib/ContextModule.js +3 -3
  12. package/lib/ContextModuleFactory.js +1 -1
  13. package/lib/DefinePlugin.js +11 -2
  14. package/lib/DllEntryPlugin.js +5 -0
  15. package/lib/DllModule.js +1 -1
  16. package/lib/DllModuleFactory.js +1 -1
  17. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  18. package/lib/HookWebpackError.js +1 -1
  19. package/lib/IgnoreErrorModuleFactory.js +1 -1
  20. package/lib/MainTemplate.js +2 -2
  21. package/lib/Module.js +21 -9
  22. package/lib/ModuleFactory.js +1 -1
  23. package/lib/ModuleTypeConstants.js +2 -1
  24. package/lib/NormalModuleFactory.js +1 -1
  25. package/lib/NormalModuleReplacementPlugin.js +4 -2
  26. package/lib/NullFactory.js +1 -1
  27. package/lib/PrefetchPlugin.js +4 -0
  28. package/lib/RecordIdsPlugin.js +4 -4
  29. package/lib/RuntimeModule.js +5 -5
  30. package/lib/RuntimePlugin.js +4 -0
  31. package/lib/RuntimeTemplate.js +7 -7
  32. package/lib/SelfModuleFactory.js +12 -0
  33. package/lib/SourceMapDevToolPlugin.js +9 -2
  34. package/lib/Template.js +3 -2
  35. package/lib/UseStrictPlugin.js +4 -0
  36. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  37. package/lib/WatchIgnorePlugin.js +4 -0
  38. package/lib/WebpackOptionsApply.js +2 -1
  39. package/lib/asset/AssetGenerator.js +7 -2
  40. package/lib/asset/AssetModulesPlugin.js +7 -1
  41. package/lib/asset/AssetParser.js +4 -1
  42. package/lib/asset/RawDataUrlModule.js +5 -3
  43. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  44. package/lib/cache/PackFileCacheStrategy.js +7 -1
  45. package/lib/config/browserslistTargetHandler.js +3 -3
  46. package/lib/config/defaults.js +240 -73
  47. package/lib/config/normalization.js +104 -71
  48. package/lib/config/target.js +37 -10
  49. package/lib/container/ContainerEntryModule.js +4 -0
  50. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  51. package/lib/container/FallbackDependency.js +7 -0
  52. package/lib/container/FallbackItemDependency.js +3 -0
  53. package/lib/container/FallbackModule.js +5 -1
  54. package/lib/container/FallbackModuleFactory.js +1 -1
  55. package/lib/container/RemoteModule.js +4 -0
  56. package/lib/container/RemoteRuntimeModule.js +2 -1
  57. package/lib/container/RemoteToExternalDependency.js +3 -0
  58. package/lib/css/CssParser.js +168 -73
  59. package/lib/debug/ProfilingPlugin.js +11 -0
  60. package/lib/dependencies/AMDDefineDependency.js +12 -6
  61. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
  62. package/lib/dependencies/AMDPlugin.js +7 -0
  63. package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
  64. package/lib/dependencies/AMDRequireContextDependency.js +6 -0
  65. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  66. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  67. package/lib/dependencies/AMDRequireDependency.js +8 -1
  68. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  69. package/lib/dependencies/CachedConstDependency.js +6 -0
  70. package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
  71. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  72. package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
  73. package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
  74. package/lib/dependencies/CommonJsPlugin.js +28 -12
  75. package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
  76. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  77. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  78. package/lib/dependencies/ConstDependency.js +2 -1
  79. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  80. package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
  81. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  82. package/lib/dependencies/CssImportDependency.js +2 -1
  83. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
  84. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  85. package/lib/dependencies/CssUrlDependency.js +12 -2
  86. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  87. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  88. package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
  89. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  90. package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
  91. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -1
  92. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
  93. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  94. package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
  95. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
  96. package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
  97. package/lib/dependencies/HarmonyExports.js +3 -1
  98. package/lib/dependencies/HarmonyImportDependency.js +2 -1
  99. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +18 -5
  100. package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
  101. package/lib/dependencies/HarmonyImportSpecifierDependency.js +86 -6
  102. package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
  103. package/lib/dependencies/ImportContextDependency.js +6 -0
  104. package/lib/dependencies/ImportDependency.js +2 -1
  105. package/lib/dependencies/ImportEagerDependency.js +2 -1
  106. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
  107. package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
  108. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  109. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  110. package/lib/dependencies/ImportParserPlugin.js +5 -0
  111. package/lib/dependencies/ImportPlugin.js +7 -0
  112. package/lib/dependencies/ImportWeakDependency.js +2 -1
  113. package/lib/dependencies/LocalModule.js +16 -0
  114. package/lib/dependencies/LocalModuleDependency.js +7 -0
  115. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  116. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  117. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  118. package/lib/dependencies/PrefetchDependency.js +3 -0
  119. package/lib/dependencies/ProvidedDependency.js +2 -1
  120. package/lib/dependencies/PureExpressionDependency.js +2 -1
  121. package/lib/dependencies/RequireContextDependency.js +6 -0
  122. package/lib/dependencies/RequireContextPlugin.js +7 -0
  123. package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
  124. package/lib/dependencies/RequireEnsureDependency.js +8 -2
  125. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  126. package/lib/dependencies/RequireEnsurePlugin.js +14 -0
  127. package/lib/dependencies/RequireHeaderDependency.js +5 -1
  128. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  129. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  130. package/lib/dependencies/RequireIncludePlugin.js +14 -0
  131. package/lib/dependencies/RequireResolveContextDependency.js +8 -0
  132. package/lib/dependencies/RequireResolveDependency.js +6 -0
  133. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
  134. package/lib/dependencies/SystemPlugin.js +10 -1
  135. package/lib/dependencies/URLDependency.js +3 -2
  136. package/lib/dependencies/URLPlugin.js +7 -5
  137. package/lib/dependencies/UnsupportedDependency.js +5 -0
  138. package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
  139. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  140. package/lib/dependencies/WorkerDependency.js +2 -1
  141. package/lib/dependencies/WorkerPlugin.js +30 -3
  142. package/lib/dependencies/getFunctionExpression.js +7 -0
  143. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
  144. package/lib/esm/ModuleChunkFormatPlugin.js +15 -7
  145. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  146. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +14 -9
  147. package/lib/hmr/LazyCompilationPlugin.js +1 -1
  148. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  149. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  150. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  151. package/lib/ids/HashedModuleIdsPlugin.js +8 -1
  152. package/lib/ids/IdHelpers.js +6 -0
  153. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  154. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  155. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  156. package/lib/ids/SyncModuleIdsPlugin.js +2 -2
  157. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  158. package/lib/javascript/BasicEvaluatedExpression.js +11 -1
  159. package/lib/javascript/ChunkHelpers.js +2 -2
  160. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  161. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  162. package/lib/javascript/JavascriptModulesPlugin.js +36 -31
  163. package/lib/javascript/JavascriptParser.js +586 -192
  164. package/lib/javascript/StartupHelpers.js +2 -2
  165. package/lib/json/JsonGenerator.js +7 -5
  166. package/lib/json/JsonParser.js +1 -1
  167. package/lib/library/AbstractLibraryPlugin.js +4 -0
  168. package/lib/library/AssignLibraryPlugin.js +6 -4
  169. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  170. package/lib/library/ModuleLibraryPlugin.js +6 -3
  171. package/lib/library/SystemLibraryPlugin.js +1 -0
  172. package/lib/library/UmdLibraryPlugin.js +4 -0
  173. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  174. package/lib/node/NodeTemplatePlugin.js +10 -2
  175. package/lib/node/NodeWatchFileSystem.js +1 -1
  176. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +6 -3
  177. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -0
  178. package/lib/node/ReadFileCompileWasmPlugin.js +19 -2
  179. package/lib/node/RequireChunkLoadingRuntimeModule.js +6 -3
  180. package/lib/optimize/ConcatenatedModule.js +1 -1
  181. package/lib/optimize/InnerGraphPlugin.js +11 -4
  182. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  183. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -1
  184. package/lib/runtime/BaseUriRuntimeModule.js +5 -1
  185. package/lib/runtime/EnsureChunkRuntimeModule.js +3 -0
  186. package/lib/runtime/GetChunkFilenameRuntimeModule.js +35 -16
  187. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  188. package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
  189. package/lib/runtime/PublicPathRuntimeModule.js +5 -0
  190. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  191. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +4 -1
  192. package/lib/runtime/StartupEntrypointRuntimeModule.js +8 -5
  193. package/lib/serialization/ArraySerializer.js +22 -6
  194. package/lib/serialization/BinaryMiddleware.js +21 -0
  195. package/lib/serialization/DateObjectSerializer.js +15 -4
  196. package/lib/serialization/ErrorObjectSerializer.js +20 -8
  197. package/lib/serialization/FileMiddleware.js +17 -0
  198. package/lib/serialization/MapObjectSerializer.js +24 -8
  199. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  200. package/lib/serialization/ObjectMiddleware.js +23 -0
  201. package/lib/serialization/PlainObjectSerializer.js +23 -12
  202. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  203. package/lib/serialization/SetObjectSerializer.js +21 -6
  204. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  205. package/lib/sharing/ShareRuntimeModule.js +1 -1
  206. package/lib/util/createHash.js +1 -1
  207. package/lib/util/makeSerializable.js +7 -0
  208. package/lib/util/serialization.js +10 -0
  209. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
  210. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  211. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +13 -3
  212. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +19 -2
  213. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -0
  214. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +25 -1
  215. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +14 -5
  216. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -5
  217. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  218. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +12 -1
  219. package/lib/wasm-sync/WebAssemblyParser.js +9 -2
  220. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  221. package/lib/web/FetchCompileAsyncWasmPlugin.js +9 -0
  222. package/lib/web/FetchCompileWasmPlugin.js +19 -2
  223. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  224. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
  225. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  226. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -2
  227. package/package.json +3 -3
  228. package/schemas/WebpackOptions.check.js +1 -1
  229. package/schemas/WebpackOptions.json +12 -0
  230. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  231. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  232. 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: 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
+ 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: 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
- })),
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
- value.import &&
492
- (Array.isArray(value.import) ? value.import : [value.import]),
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
- value.dependOn &&
503
- (Array.isArray(value.dependOn) ? value.dependOn : [value.dependOn]),
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
  }
@@ -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
  };
@@ -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
- "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
  "}",
@@ -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
- "handleFunction(__webpack_require__, data[2], 0, 0, onExternal, 1);"
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
  }