webpack 5.99.8 → 5.100.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.
Files changed (314) hide show
  1. package/README.md +0 -3
  2. package/bin/webpack.js +8 -2
  3. package/hot/log.js +15 -15
  4. package/hot/poll.js +1 -0
  5. package/lib/APIPlugin.js +3 -3
  6. package/lib/AbstractMethodError.js +1 -0
  7. package/lib/AutomaticPrefetchPlugin.js +1 -0
  8. package/lib/BannerPlugin.js +1 -1
  9. package/lib/CacheFacade.js +2 -1
  10. package/lib/CaseSensitiveModulesWarning.js +4 -4
  11. package/lib/Chunk.js +6 -6
  12. package/lib/ChunkGraph.js +37 -32
  13. package/lib/ChunkGroup.js +17 -10
  14. package/lib/ChunkTemplate.js +1 -1
  15. package/lib/CleanPlugin.js +94 -17
  16. package/lib/CodeGenerationResults.js +1 -1
  17. package/lib/CompatibilityPlugin.js +5 -2
  18. package/lib/Compilation.js +77 -71
  19. package/lib/Compiler.js +46 -16
  20. package/lib/ConcatenationScope.js +15 -6
  21. package/lib/ConstPlugin.js +65 -45
  22. package/lib/ContextModule.js +16 -12
  23. package/lib/ContextModuleFactory.js +4 -3
  24. package/lib/ContextReplacementPlugin.js +4 -2
  25. package/lib/CssModule.js +2 -3
  26. package/lib/DefinePlugin.js +111 -3
  27. package/lib/DelegatedModuleFactoryPlugin.js +18 -18
  28. package/lib/Dependency.js +16 -12
  29. package/lib/DependencyTemplate.js +1 -0
  30. package/lib/DllEntryPlugin.js +3 -1
  31. package/lib/DllPlugin.js +4 -3
  32. package/lib/DllReferencePlugin.js +2 -2
  33. package/lib/DynamicEntryPlugin.js +1 -1
  34. package/lib/EntryOptionPlugin.js +5 -0
  35. package/lib/ErrorHelpers.js +4 -4
  36. package/lib/EvalDevToolModulePlugin.js +3 -3
  37. package/lib/EvalSourceMapDevToolPlugin.js +7 -7
  38. package/lib/ExportsInfo.js +48 -39
  39. package/lib/ExternalModule.js +15 -11
  40. package/lib/ExternalModuleFactoryPlugin.js +5 -2
  41. package/lib/FileSystemInfo.js +51 -38
  42. package/lib/FlagDependencyExportsPlugin.js +14 -7
  43. package/lib/FlagDependencyUsagePlugin.js +1 -1
  44. package/lib/Generator.js +14 -1
  45. package/lib/HookWebpackError.js +1 -0
  46. package/lib/HotModuleReplacementPlugin.js +77 -50
  47. package/lib/IgnorePlugin.js +1 -1
  48. package/lib/InvalidDependenciesModuleWarning.js +1 -1
  49. package/lib/JavascriptMetaInfoPlugin.js +0 -1
  50. package/lib/LibManifestPlugin.js +4 -2
  51. package/lib/LoaderOptionsPlugin.js +6 -4
  52. package/lib/MainTemplate.js +2 -2
  53. package/lib/Module.js +21 -6
  54. package/lib/ModuleFactory.js +1 -0
  55. package/lib/ModuleGraph.js +24 -2
  56. package/lib/ModuleGraphConnection.js +5 -5
  57. package/lib/ModuleInfoHeaderPlugin.js +2 -1
  58. package/lib/ModuleParseError.js +1 -0
  59. package/lib/ModuleSourceTypesConstants.js +12 -12
  60. package/lib/ModuleTemplate.js +1 -1
  61. package/lib/ModuleTypeConstants.js +21 -21
  62. package/lib/MultiCompiler.js +6 -6
  63. package/lib/NormalModule.js +61 -56
  64. package/lib/NormalModuleFactory.js +52 -37
  65. package/lib/NormalModuleReplacementPlugin.js +1 -1
  66. package/lib/NullFactory.js +1 -0
  67. package/lib/OptimizationStages.js +1 -1
  68. package/lib/Parser.js +1 -0
  69. package/lib/ProgressPlugin.js +12 -5
  70. package/lib/ProvidePlugin.js +5 -1
  71. package/lib/RecordIdsPlugin.js +3 -3
  72. package/lib/RuntimeGlobals.js +175 -155
  73. package/lib/RuntimeModule.js +1 -0
  74. package/lib/RuntimePlugin.js +34 -8
  75. package/lib/RuntimeTemplate.js +111 -11
  76. package/lib/SourceMapDevToolModuleOptionsPlugin.js +15 -25
  77. package/lib/SourceMapDevToolPlugin.js +19 -17
  78. package/lib/Template.js +2 -2
  79. package/lib/TemplatedPathPlugin.js +1 -1
  80. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  81. package/lib/WatchIgnorePlugin.js +4 -3
  82. package/lib/WebpackIsIncludedPlugin.js +2 -1
  83. package/lib/WebpackOptionsApply.js +115 -27
  84. package/lib/asset/AssetGenerator.js +26 -21
  85. package/lib/asset/AssetModulesPlugin.js +19 -17
  86. package/lib/asset/AssetSourceGenerator.js +11 -9
  87. package/lib/asset/RawDataUrlModule.js +4 -2
  88. package/lib/async-modules/AwaitDependenciesInitFragment.js +1 -1
  89. package/lib/buildChunkGraph.js +6 -3
  90. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  91. package/lib/cache/IdleFileCachePlugin.js +7 -4
  92. package/lib/cache/MemoryCachePlugin.js +1 -0
  93. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  94. package/lib/cache/PackFileCacheStrategy.js +26 -20
  95. package/lib/cache/ResolverCachePlugin.js +16 -8
  96. package/lib/cli.js +15 -10
  97. package/lib/config/browserslistTargetHandler.js +3 -3
  98. package/lib/config/defaults.js +25 -17
  99. package/lib/config/normalization.js +2 -1
  100. package/lib/config/target.js +6 -5
  101. package/lib/container/ContainerPlugin.js +1 -1
  102. package/lib/container/ContainerReferencePlugin.js +1 -1
  103. package/lib/container/FallbackModule.js +2 -1
  104. package/lib/container/HoistContainerReferencesPlugin.js +1 -1
  105. package/lib/container/ModuleFederationPlugin.js +2 -2
  106. package/lib/container/RemoteModule.js +1 -1
  107. package/lib/css/CssGenerator.js +9 -6
  108. package/lib/css/CssModulesPlugin.js +44 -31
  109. package/lib/css/CssParser.js +6 -4
  110. package/lib/css/walkCssTokens.js +33 -37
  111. package/lib/debug/ProfilingPlugin.js +6 -6
  112. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -8
  113. package/lib/dependencies/AMDPlugin.js +12 -8
  114. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -26
  115. package/lib/dependencies/CachedConstDependency.js +1 -5
  116. package/lib/dependencies/CommonJsExportRequireDependency.js +6 -4
  117. package/lib/dependencies/CommonJsExportsParserPlugin.js +22 -25
  118. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -9
  119. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -114
  120. package/lib/dependencies/CommonJsPlugin.js +15 -16
  121. package/lib/dependencies/ContextDependencyHelpers.js +2 -1
  122. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  123. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  124. package/lib/dependencies/CssIcssExportDependency.js +1 -1
  125. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -2
  126. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  127. package/lib/dependencies/CssUrlDependency.js +1 -1
  128. package/lib/dependencies/DynamicExports.js +9 -9
  129. package/lib/dependencies/ExportsInfoDependency.js +1 -1
  130. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +122 -101
  131. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  132. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +95 -19
  133. package/lib/dependencies/HarmonyExportInitFragment.js +1 -1
  134. package/lib/dependencies/HarmonyImportDependency.js +11 -5
  135. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +238 -162
  136. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -1
  137. package/lib/dependencies/HarmonyImportSpecifierDependency.js +20 -9
  138. package/lib/dependencies/HarmonyModulesPlugin.js +23 -12
  139. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -0
  140. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  141. package/lib/dependencies/ImportMetaPlugin.js +2 -2
  142. package/lib/dependencies/ImportParserPlugin.js +40 -9
  143. package/lib/dependencies/ImportPlugin.js +3 -1
  144. package/lib/dependencies/LoaderPlugin.js +1 -0
  145. package/lib/dependencies/ModuleDependency.js +1 -1
  146. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  147. package/lib/dependencies/RequireContextPlugin.js +3 -1
  148. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +3 -0
  149. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  150. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  151. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  152. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  153. package/lib/dependencies/SystemPlugin.js +1 -1
  154. package/lib/dependencies/URLContextDependency.js +65 -0
  155. package/lib/dependencies/URLDependency.js +1 -1
  156. package/lib/dependencies/URLPlugin.js +17 -157
  157. package/lib/dependencies/WorkerPlugin.js +23 -10
  158. package/lib/dependencies/processExportInfo.js +2 -1
  159. package/lib/esm/ModuleChunkFormatPlugin.js +269 -185
  160. package/lib/esm/ModuleChunkLoadingPlugin.js +39 -1
  161. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +73 -6
  162. package/lib/hmr/HotModuleReplacement.runtime.js +0 -1
  163. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  164. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  165. package/lib/hmr/LazyCompilationPlugin.js +4 -2
  166. package/lib/hmr/lazyCompilationBackend.js +4 -2
  167. package/lib/ids/ChunkModuleIdRangePlugin.js +6 -3
  168. package/lib/ids/DeterministicChunkIdsPlugin.js +30 -35
  169. package/lib/ids/DeterministicModuleIdsPlugin.js +4 -3
  170. package/lib/ids/HashedModuleIdsPlugin.js +5 -4
  171. package/lib/ids/IdHelpers.js +21 -17
  172. package/lib/ids/NamedChunkIdsPlugin.js +5 -5
  173. package/lib/ids/NamedModuleIdsPlugin.js +4 -4
  174. package/lib/ids/NaturalChunkIdsPlugin.js +2 -1
  175. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  176. package/lib/ids/OccurrenceChunkIdsPlugin.js +3 -2
  177. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  178. package/lib/ids/SyncModuleIdsPlugin.js +1 -1
  179. package/lib/index.js +13 -3
  180. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +113 -119
  181. package/lib/javascript/BasicEvaluatedExpression.js +2 -1
  182. package/lib/javascript/ChunkHelpers.js +1 -0
  183. package/lib/javascript/CommonJsChunkFormatPlugin.js +121 -136
  184. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -3
  185. package/lib/javascript/JavascriptGenerator.js +14 -2
  186. package/lib/javascript/JavascriptModulesPlugin.js +68 -27
  187. package/lib/javascript/JavascriptParser.js +136 -81
  188. package/lib/javascript/JavascriptParserHelpers.js +41 -41
  189. package/lib/javascript/StartupHelpers.js +17 -17
  190. package/lib/json/JsonGenerator.js +4 -2
  191. package/lib/json/JsonModulesPlugin.js +2 -2
  192. package/lib/json/JsonParser.js +1 -1
  193. package/lib/library/AbstractLibraryPlugin.js +6 -2
  194. package/lib/library/AssignLibraryPlugin.js +21 -6
  195. package/lib/library/EnableLibraryPlugin.js +23 -3
  196. package/lib/library/ModuleLibraryPlugin.js +4 -1
  197. package/lib/library/UmdLibraryPlugin.js +15 -6
  198. package/lib/logging/createConsoleLogger.js +3 -3
  199. package/lib/logging/runtime.js +9 -9
  200. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +4 -22
  201. package/lib/node/RequireChunkLoadingRuntimeModule.js +4 -22
  202. package/lib/node/nodeConsole.js +4 -2
  203. package/lib/optimize/AggressiveMergingPlugin.js +45 -46
  204. package/lib/optimize/AggressiveSplittingPlugin.js +13 -12
  205. package/lib/optimize/ConcatenatedModule.js +227 -57
  206. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  207. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -1
  208. package/lib/optimize/InnerGraph.js +115 -112
  209. package/lib/optimize/InnerGraphPlugin.js +2 -2
  210. package/lib/optimize/LimitChunkCountPlugin.js +4 -2
  211. package/lib/optimize/MangleExportsPlugin.js +4 -3
  212. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  213. package/lib/optimize/MinChunkSizePlugin.js +6 -3
  214. package/lib/optimize/ModuleConcatenationPlugin.js +31 -22
  215. package/lib/optimize/RealContentHashPlugin.js +26 -20
  216. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  217. package/lib/optimize/RemoveParentModulesPlugin.js +1 -0
  218. package/lib/optimize/SideEffectsFlagPlugin.js +6 -3
  219. package/lib/optimize/SplitChunksPlugin.js +16 -13
  220. package/lib/rules/BasicEffectRulePlugin.js +4 -2
  221. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  222. package/lib/rules/ObjectMatcherRulePlugin.js +3 -1
  223. package/lib/rules/RuleSetCompiler.js +7 -4
  224. package/lib/rules/UseEffectRulePlugin.js +3 -1
  225. package/lib/runtime/AsyncModuleRuntimeModule.js +64 -9
  226. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  227. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +214 -0
  228. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  229. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +8 -7
  230. package/lib/schemes/DataUriPlugin.js +3 -1
  231. package/lib/schemes/FileUriPlugin.js +1 -1
  232. package/lib/schemes/HttpUriPlugin.js +27 -19
  233. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  234. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  235. package/lib/serialization/BinaryMiddleware.js +5 -4
  236. package/lib/serialization/FileMiddleware.js +7 -4
  237. package/lib/serialization/ObjectMiddleware.js +14 -8
  238. package/lib/serialization/Serializer.js +5 -3
  239. package/lib/serialization/SerializerMiddleware.js +2 -0
  240. package/lib/sharing/ConsumeSharedModule.js +1 -1
  241. package/lib/sharing/ConsumeSharedPlugin.js +3 -3
  242. package/lib/sharing/ConsumeSharedRuntimeModule.js +2 -2
  243. package/lib/sharing/ProvideSharedModule.js +1 -1
  244. package/lib/sharing/ProvideSharedPlugin.js +6 -3
  245. package/lib/sharing/SharePlugin.js +2 -1
  246. package/lib/sharing/ShareRuntimeModule.js +3 -5
  247. package/lib/sharing/utils.js +34 -34
  248. package/lib/stats/DefaultStatsFactoryPlugin.js +49 -46
  249. package/lib/stats/DefaultStatsPresetPlugin.js +4 -2
  250. package/lib/stats/DefaultStatsPrinterPlugin.js +28 -22
  251. package/lib/stats/StatsFactory.js +4 -2
  252. package/lib/stats/StatsPrinter.js +3 -2
  253. package/lib/url/URLParserPlugin.js +266 -0
  254. package/lib/util/ArrayQueue.js +1 -1
  255. package/lib/util/AsyncQueue.js +1 -1
  256. package/lib/util/Hash.js +2 -0
  257. package/lib/util/IterableHelpers.js +1 -1
  258. package/lib/util/LazyBucketSortedSet.js +2 -1
  259. package/lib/util/LazySet.js +11 -6
  260. package/lib/util/ParallelismFactorCalculator.js +1 -1
  261. package/lib/util/SetHelpers.js +3 -3
  262. package/lib/util/SortableSet.js +2 -2
  263. package/lib/util/StackedCacheMap.js +3 -1
  264. package/lib/util/StackedMap.js +2 -2
  265. package/lib/util/StringXor.js +1 -0
  266. package/lib/util/TupleSet.js +1 -0
  267. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  268. package/lib/util/cleverMerge.js +12 -8
  269. package/lib/util/comparators.js +154 -127
  270. package/lib/util/compileBooleanMatcher.js +8 -3
  271. package/lib/util/concatenate.js +8 -7
  272. package/lib/util/conventions.js +72 -73
  273. package/lib/util/create-schema-validation.js +2 -1
  274. package/lib/util/createHash.js +10 -4
  275. package/lib/util/deprecation.js +69 -66
  276. package/lib/util/deterministicGrouping.js +4 -2
  277. package/lib/util/extractUrlAndGlobal.js +1 -1
  278. package/lib/util/findGraphRoots.js +2 -2
  279. package/lib/util/fs.js +30 -23
  280. package/lib/util/hash/md4.js +2 -2
  281. package/lib/util/hash/wasm-hash.js +4 -2
  282. package/lib/util/identifier.js +13 -12
  283. package/lib/util/internalSerializables.js +2 -0
  284. package/lib/util/magicComment.js +5 -5
  285. package/lib/util/processAsyncTree.js +1 -1
  286. package/lib/util/propertyAccess.js +1 -1
  287. package/lib/util/propertyName.js +1 -1
  288. package/lib/util/registerExternalSerializer.js +1 -2
  289. package/lib/util/removeBOM.js +1 -1
  290. package/lib/util/runtime.js +29 -21
  291. package/lib/util/semver.js +1 -1
  292. package/lib/util/serialization.js +3 -0
  293. package/lib/util/source.js +3 -2
  294. package/lib/validateSchema.js +1 -0
  295. package/lib/wasm/EnableWasmLoadingPlugin.js +6 -3
  296. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +4 -1
  297. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +46 -49
  298. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +2 -2
  299. package/lib/wasm-sync/WebAssemblyGenerator.js +2 -3
  300. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +3 -2
  301. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +3 -0
  302. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  303. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -22
  304. package/lib/webpack.js +4 -5
  305. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +1 -0
  306. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -24
  307. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  308. package/package.json +121 -114
  309. package/schemas/WebpackOptions.check.js +1 -1
  310. package/schemas/WebpackOptions.json +17 -0
  311. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  312. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  313. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  314. package/types.d.ts +1261 -366
@@ -9,10 +9,10 @@ const { getContext } = require("loader-runner");
9
9
  const asyncLib = require("neo-async");
10
10
  const {
11
11
  AsyncSeriesBailHook,
12
- SyncWaterfallHook,
12
+ HookMap,
13
13
  SyncBailHook,
14
14
  SyncHook,
15
- HookMap
15
+ SyncWaterfallHook
16
16
  } = require("tapable");
17
17
  const ChunkGraph = require("./ChunkGraph");
18
18
  const Module = require("./Module");
@@ -85,7 +85,15 @@ const {
85
85
  * @property {string=} context
86
86
  */
87
87
 
88
- /** @typedef {ResourceData & { data: Record<string, EXPECTED_ANY> }} ResourceDataWithData */
88
+ /**
89
+ * @typedef {object} ResourceSchemeData
90
+ * @property {string=} mimetype mime type of the resource
91
+ * @property {string=} parameters additional parameters for the resource
92
+ * @property {"base64" | false=} encoding encoding of the resource
93
+ * @property {string=} encodedContent encoded content of the resource
94
+ */
95
+
96
+ /** @typedef {ResourceData & { data: ResourceSchemeData & Partial<ResolveRequest> }} ResourceDataWithData */
89
97
 
90
98
  /**
91
99
  * @typedef {object} ParsedLoaderRequest
@@ -296,7 +304,7 @@ class NormalModuleFactory extends ModuleFactory {
296
304
  generator: new HookMap(
297
305
  () => new SyncHook(["generator", "generatorOptions"])
298
306
  ),
299
- /** @type {HookMap<SyncBailHook<[TODO, ResolveData], Module | void>>} */
307
+ /** @type {HookMap<SyncBailHook<[CreateData, ResolveData], Module | void>>} */
300
308
  createModuleClass: new HookMap(
301
309
  () => new SyncBailHook(["createData", "resolveData"])
302
310
  )
@@ -321,6 +329,7 @@ class NormalModuleFactory extends ModuleFactory {
321
329
  /** @type {Set<Module>} */
322
330
  this._restoredUnsafeCacheEntries = new Set();
323
331
 
332
+ /** @type {(resource: string) => import("./util/identifier").ParsedResource} */
324
333
  const cacheParseResource = parseResource.bindCache(
325
334
  associatedObjectForCache
326
335
  );
@@ -343,24 +352,26 @@ class NormalModuleFactory extends ModuleFactory {
343
352
  // direct module
344
353
  if (result instanceof Module) return callback(null, result);
345
354
 
346
- if (typeof result === "object")
355
+ if (typeof result === "object") {
347
356
  throw new Error(
348
357
  `${deprecationChangedHookMessage(
349
358
  "resolve",
350
359
  this.hooks.resolve
351
360
  )} Returning a Module object will result in this module used as result.`
352
361
  );
362
+ }
353
363
 
354
364
  this.hooks.afterResolve.callAsync(resolveData, (err, result) => {
355
365
  if (err) return callback(err);
356
366
 
357
- if (typeof result === "object")
367
+ if (typeof result === "object") {
358
368
  throw new Error(
359
369
  deprecationChangedHookMessage(
360
370
  "afterResolve",
361
371
  this.hooks.afterResolve
362
372
  )
363
373
  );
374
+ }
364
375
 
365
376
  // Ignored
366
377
  if (result === false) return callback();
@@ -447,21 +458,22 @@ class NormalModuleFactory extends ModuleFactory {
447
458
  const matchResourceMatch = MATCH_RESOURCE_REGEX.exec(request);
448
459
  if (matchResourceMatch) {
449
460
  let matchResource = matchResourceMatch[1];
461
+ // Check if matchResource starts with ./ or ../
450
462
  if (matchResource.charCodeAt(0) === 46) {
451
- // 46 === ".", 47 === "/"
463
+ // 46 is "."
452
464
  const secondChar = matchResource.charCodeAt(1);
453
465
  if (
454
- secondChar === 47 ||
455
- (secondChar === 46 && matchResource.charCodeAt(2) === 47)
466
+ secondChar === 47 || // 47 is "/"
467
+ (secondChar === 46 && matchResource.charCodeAt(2) === 47) // "../"
456
468
  ) {
457
- // if matchResources startsWith ../ or ./
469
+ // Resolve relative path against context
458
470
  matchResource = join(this.fs, context, matchResource);
459
471
  }
460
472
  }
461
473
 
462
474
  matchResourceData = {
463
- resource: matchResource,
464
- .../** @type {TODO} */ (cacheParseResource(matchResource))
475
+ ...cacheParseResource(matchResource),
476
+ resource: matchResource
465
477
  };
466
478
  requestWithoutMatchResource = request.slice(
467
479
  matchResourceMatch[0].length
@@ -546,11 +558,7 @@ class NormalModuleFactory extends ModuleFactory {
546
558
 
547
559
  if (!resourceData) {
548
560
  // ignored
549
- return callback(
550
- null,
551
- /** @type {TODO} */
552
- (dependencies[0].createIgnoredModule(context))
553
- );
561
+ return callback(null, dependencies[0].createIgnoredModule(context));
554
562
  }
555
563
 
556
564
  const userRequest =
@@ -629,12 +637,10 @@ class NormalModuleFactory extends ModuleFactory {
629
637
  settings[/** @type {keyof ModuleSettings} */ (r.type)] !== null
630
638
  ) {
631
639
  const type = /** @type {keyof ModuleSettings} */ (r.type);
632
- /** @type {TODO} */
633
- (settings)[type] = cachedCleverMerge(settings[type], r.value);
640
+ settings[type] = cachedCleverMerge(settings[type], r.value);
634
641
  } else {
635
642
  const type = /** @type {keyof ModuleSettings} */ (r.type);
636
- /** @type {TODO} */
637
- (settings)[type] = r.value;
643
+ settings[type] = r.value;
638
644
  }
639
645
  }
640
646
  }
@@ -652,18 +658,27 @@ class NormalModuleFactory extends ModuleFactory {
652
658
  }
653
659
  const allLoaders = /** @type {LoaderItem[]} */ (postLoaders);
654
660
  if (matchResourceData === undefined) {
655
- for (const loader of /** @type {LoaderItem[]} */ (loaders))
661
+ for (const loader of /** @type {LoaderItem[]} */ (loaders)) {
656
662
  allLoaders.push(loader);
657
- for (const loader of /** @type {LoaderItem[]} */ (normalLoaders))
663
+ }
664
+ for (const loader of /** @type {LoaderItem[]} */ (
665
+ normalLoaders
666
+ )) {
658
667
  allLoaders.push(loader);
668
+ }
659
669
  } else {
660
- for (const loader of /** @type {LoaderItem[]} */ (normalLoaders))
670
+ for (const loader of /** @type {LoaderItem[]} */ (
671
+ normalLoaders
672
+ )) {
661
673
  allLoaders.push(loader);
662
- for (const loader of /** @type {LoaderItem[]} */ (loaders))
674
+ }
675
+ for (const loader of /** @type {LoaderItem[]} */ (loaders)) {
663
676
  allLoaders.push(loader);
677
+ }
664
678
  }
665
- for (const loader of /** @type {LoaderItem[]} */ (preLoaders))
679
+ for (const loader of /** @type {LoaderItem[]} */ (preLoaders)) {
666
680
  allLoaders.push(loader);
681
+ }
667
682
  const type = /** @type {string} */ (settings.type);
668
683
  const resolveOptions = settings.resolve;
669
684
  const layer = settings.layer;
@@ -759,9 +774,9 @@ class NormalModuleFactory extends ModuleFactory {
759
774
  const defaultResolve = context => {
760
775
  if (/^($|\?)/.test(unresolvedResource)) {
761
776
  resourceData = {
777
+ ...cacheParseResource(unresolvedResource),
762
778
  resource: unresolvedResource,
763
- data: {},
764
- .../** @type {TODO} */ (cacheParseResource(unresolvedResource))
779
+ data: {}
765
780
  };
766
781
  continueCallback();
767
782
  }
@@ -791,12 +806,11 @@ class NormalModuleFactory extends ModuleFactory {
791
806
  /** @type {string} */
792
807
  (_resolvedResource);
793
808
  resourceData = {
809
+ ...cacheParseResource(resolvedResource),
794
810
  resource: resolvedResource,
795
811
  data:
796
812
  /** @type {ResolveRequest} */
797
- (resolvedResourceResolveData),
798
- .../** @type {TODO} */
799
- (cacheParseResource(resolvedResource))
813
+ (resolvedResourceResolveData)
800
814
  };
801
815
  }
802
816
  continueCallback();
@@ -843,7 +857,9 @@ class NormalModuleFactory extends ModuleFactory {
843
857
  }
844
858
 
845
859
  // resource without scheme and without path
846
- else defaultResolve(context);
860
+ else {
861
+ defaultResolve(context);
862
+ }
847
863
  }
848
864
  );
849
865
  }
@@ -915,13 +931,14 @@ class NormalModuleFactory extends ModuleFactory {
915
931
  return callback(null, factoryResult);
916
932
  }
917
933
 
918
- if (typeof result === "object")
934
+ if (typeof result === "object") {
919
935
  throw new Error(
920
936
  deprecationChangedHookMessage(
921
937
  "beforeResolve",
922
938
  this.hooks.beforeResolve
923
939
  )
924
940
  );
941
+ }
925
942
 
926
943
  this.hooks.factorize.callAsync(resolveData, (err, module) => {
927
944
  if (err) {
@@ -994,9 +1011,7 @@ ${hints.join("\n\n")}`;
994
1011
 
995
1012
  // Check if the extension is missing a leading dot (e.g. "js" instead of ".js")
996
1013
  let appendResolveExtensionsHint = false;
997
- const specifiedExtensions = Array.from(
998
- resolver.options.extensions
999
- );
1014
+ const specifiedExtensions = [...resolver.options.extensions];
1000
1015
  const expectedExtensions = specifiedExtensions.map(extension => {
1001
1016
  if (LEADING_DOT_EXTENSION_REGEX.test(extension)) {
1002
1017
  appendResolveExtensionsHint = true;
@@ -1228,7 +1243,7 @@ If changing the source code is not an option there is also a resolve options cal
1228
1243
  }
1229
1244
  );
1230
1245
  },
1231
- /** @type {Callback<TODO>} */ (callback)
1246
+ /** @type {Callback<(LoaderItem | undefined)[]>} */ (callback)
1232
1247
  );
1233
1248
  }
1234
1249
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { join, dirname } = require("./util/fs");
8
+ const { dirname, join } = require("./util/fs");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
  /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
@@ -20,4 +20,5 @@ class NullFactory extends ModuleFactory {
20
20
  return callback();
21
21
  }
22
22
  }
23
+
23
24
  module.exports = NullFactory;
@@ -5,6 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ module.exports.STAGE_ADVANCED = 10;
8
9
  module.exports.STAGE_BASIC = -10;
9
10
  module.exports.STAGE_DEFAULT = 0;
10
- module.exports.STAGE_ADVANCED = 10;
package/lib/Parser.js CHANGED
@@ -32,6 +32,7 @@ class Parser {
32
32
  */
33
33
  parse(source, state) {
34
34
  const AbstractMethodError = require("./AbstractMethodError");
35
+
35
36
  throw new AbstractMethodError();
36
37
  }
37
38
  }
@@ -12,6 +12,10 @@ const createSchemaValidation = require("./util/create-schema-validation");
12
12
  const { contextify } = require("./util/identifier");
13
13
 
14
14
  /** @typedef {import("tapable").Tap} Tap */
15
+ /**
16
+ * @template T, R, AdditionalOptions
17
+ * @typedef {import("tapable").Hook<T, R, AdditionalOptions>} Hook
18
+ */
15
19
  /** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
16
20
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
17
21
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
@@ -34,7 +38,7 @@ const { contextify } = require("./util/identifier");
34
38
  */
35
39
 
36
40
  const validate = createSchemaValidation(
37
- require("../schemas/plugins/ProgressPlugin.check.js"),
41
+ require("../schemas/plugins/ProgressPlugin.check"),
38
42
  () => require("../schemas/plugins/ProgressPlugin.json"),
39
43
  {
40
44
  name: "Progress Plugin",
@@ -321,14 +325,16 @@ class ProgressPlugin {
321
325
  skippedDependenciesCount++;
322
326
  }
323
327
  dependenciesCount++;
324
- if (dependenciesCount < 50 || dependenciesCount % 100 === 0)
328
+ if (dependenciesCount < 50 || dependenciesCount % 100 === 0) {
325
329
  updateThrottled();
330
+ }
326
331
  };
327
332
 
328
333
  const factorizeDone = () => {
329
334
  doneDependencies++;
330
- if (doneDependencies < 50 || doneDependencies % 100 === 0)
335
+ if (doneDependencies < 50 || doneDependencies % 100 === 0) {
331
336
  updateThrottled();
337
+ }
332
338
  };
333
339
 
334
340
  /**
@@ -413,7 +419,7 @@ class ProgressPlugin {
413
419
  }
414
420
  return data;
415
421
  },
416
- err => {
422
+ _err => {
417
423
  // Ignore error
418
424
  }
419
425
  );
@@ -582,7 +588,8 @@ class ProgressPlugin {
582
588
  }
583
589
  });
584
590
  /**
585
- * @param {TODO} hook hook
591
+ * @template {Hook<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} T
592
+ * @param {T} hook hook
586
593
  * @param {number} progress progress from 0 to 1
587
594
  * @param {string} category category
588
595
  * @param {string} name name
@@ -61,7 +61,11 @@ class ProvidePlugin {
61
61
  for (const name of Object.keys(definitions)) {
62
62
  const request =
63
63
  /** @type {string[]} */
64
- ([]).concat(definitions[name]);
64
+ ([
65
+ ...(Array.isArray(definitions[name])
66
+ ? definitions[name]
67
+ : [definitions[name]])
68
+ ]);
65
69
  const splittedName = name.split(".");
66
70
  if (splittedName.length > 0) {
67
71
  for (const [i, _] of splittedName.slice(1).entries()) {
@@ -22,7 +22,6 @@ const identifierUtils = require("./util/identifier");
22
22
  /**
23
23
  * @typedef {object} RecordsModules
24
24
  * @property {Record<string, number>=} byIdentifier
25
- * @property {Record<string, number>=} bySource
26
25
  * @property {number[]=} usedIds
27
26
  */
28
27
 
@@ -85,7 +84,7 @@ class RecordIdsPlugin {
85
84
  records.modules.byIdentifier[identifier] = moduleId;
86
85
  usedIds.add(moduleId);
87
86
  }
88
- records.modules.usedIds = Array.from(usedIds).sort(compareNumbers);
87
+ records.modules.usedIds = [...usedIds].sort(compareNumbers);
89
88
  });
90
89
  compilation.hooks.reviveModules.tap(PLUGIN_NAME, (modules, records) => {
91
90
  if (!records.modules) return;
@@ -169,7 +168,7 @@ class RecordIdsPlugin {
169
168
  }
170
169
  usedIds.add(chunk.id);
171
170
  }
172
- records.chunks.usedIds = Array.from(usedIds).sort(compareNumbers);
171
+ records.chunks.usedIds = [...usedIds].sort(compareNumbers);
173
172
  });
174
173
  compilation.hooks.reviveChunks.tap(PLUGIN_NAME, (chunks, records) => {
175
174
  if (!records.chunks) return;
@@ -209,4 +208,5 @@ class RecordIdsPlugin {
209
208
  });
210
209
  }
211
210
  }
211
+
212
212
  module.exports = RecordIdsPlugin;