webpack 5.101.3 → 5.102.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.
Files changed (339) hide show
  1. package/README.md +21 -26
  2. package/lib/APIPlugin.js +30 -36
  3. package/lib/AsyncDependenciesBlock.js +1 -4
  4. package/lib/BannerPlugin.js +0 -1
  5. package/lib/Cache.js +7 -6
  6. package/lib/CacheFacade.js +0 -1
  7. package/lib/Chunk.js +49 -31
  8. package/lib/ChunkGraph.js +37 -27
  9. package/lib/ChunkGroup.js +8 -10
  10. package/lib/ChunkTemplate.js +1 -1
  11. package/lib/CleanPlugin.js +3 -3
  12. package/lib/CodeGenerationResults.js +3 -2
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +209 -196
  15. package/lib/Compiler.js +36 -35
  16. package/lib/ConcatenationScope.js +6 -1
  17. package/lib/ConditionalInitFragment.js +1 -1
  18. package/lib/ConstPlugin.js +6 -5
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +25 -21
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +5 -9
  24. package/lib/DelegatedModule.js +7 -11
  25. package/lib/DependenciesBlock.js +0 -2
  26. package/lib/Dependency.js +9 -11
  27. package/lib/DependencyTemplates.js +2 -4
  28. package/lib/DllModule.js +1 -7
  29. package/lib/DllReferencePlugin.js +2 -4
  30. package/lib/DynamicEntryPlugin.js +0 -2
  31. package/lib/EntryOptionPlugin.js +0 -5
  32. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  33. package/lib/EvalDevToolModulePlugin.js +4 -3
  34. package/lib/EvalSourceMapDevToolPlugin.js +3 -4
  35. package/lib/ExportsInfo.js +50 -49
  36. package/lib/ExternalModule.js +84 -52
  37. package/lib/ExternalModuleFactoryPlugin.js +27 -7
  38. package/lib/ExternalsPlugin.js +24 -17
  39. package/lib/FileSystemInfo.js +105 -90
  40. package/lib/FlagDependencyUsagePlugin.js +3 -4
  41. package/lib/Generator.js +2 -13
  42. package/lib/GraphHelpers.js +0 -3
  43. package/lib/HookWebpackError.js +0 -2
  44. package/lib/HotModuleReplacementPlugin.js +22 -24
  45. package/lib/HotUpdateChunk.js +0 -3
  46. package/lib/IgnorePlugin.js +5 -2
  47. package/lib/InitFragment.js +41 -29
  48. package/lib/InvalidDependenciesModuleWarning.js +0 -1
  49. package/lib/LibManifestPlugin.js +4 -6
  50. package/lib/LoaderOptionsPlugin.js +1 -10
  51. package/lib/MainTemplate.js +8 -19
  52. package/lib/Module.js +32 -20
  53. package/lib/ModuleFactory.js +1 -1
  54. package/lib/ModuleFilenameHelpers.js +42 -25
  55. package/lib/ModuleGraph.js +30 -16
  56. package/lib/ModuleInfoHeaderPlugin.js +0 -1
  57. package/lib/ModuleTemplate.js +0 -2
  58. package/lib/ModuleTypeConstants.js +11 -1
  59. package/lib/MultiCompiler.js +23 -15
  60. package/lib/MultiWatching.js +6 -10
  61. package/lib/NodeStuffPlugin.js +2 -10
  62. package/lib/NormalModule.js +146 -89
  63. package/lib/NormalModuleFactory.js +132 -42
  64. package/lib/OptionsApply.js +1 -1
  65. package/lib/Parser.js +1 -1
  66. package/lib/ProgressPlugin.js +6 -10
  67. package/lib/ProvidePlugin.js +5 -7
  68. package/lib/RawModule.js +1 -6
  69. package/lib/RecordIdsPlugin.js +10 -6
  70. package/lib/ResolverFactory.js +0 -2
  71. package/lib/RuntimeGlobals.js +5 -0
  72. package/lib/RuntimeModule.js +1 -3
  73. package/lib/RuntimePlugin.js +26 -22
  74. package/lib/RuntimeTemplate.js +22 -12
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +11 -18
  77. package/lib/Stats.js +0 -1
  78. package/lib/Template.js +6 -11
  79. package/lib/TemplatedPathPlugin.js +2 -1
  80. package/lib/WatchIgnorePlugin.js +2 -3
  81. package/lib/Watching.js +15 -15
  82. package/lib/WebpackIsIncludedPlugin.js +0 -2
  83. package/lib/WebpackOptionsApply.js +74 -107
  84. package/lib/asset/AssetBytesGenerator.js +167 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +22 -37
  87. package/lib/asset/AssetModulesPlugin.js +34 -16
  88. package/lib/asset/AssetParser.js +7 -3
  89. package/lib/asset/AssetSourceGenerator.js +1 -1
  90. package/lib/asset/RawDataUrlModule.js +3 -2
  91. package/lib/async-modules/AsyncModuleHelpers.js +6 -4
  92. package/lib/buildChunkGraph.js +0 -1
  93. package/lib/cache/MemoryCachePlugin.js +0 -2
  94. package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
  95. package/lib/cache/PackFileCacheStrategy.js +14 -1
  96. package/lib/cache/ResolverCachePlugin.js +9 -15
  97. package/lib/cache/getLazyHashedEtag.js +1 -1
  98. package/lib/config/browserslistTargetHandler.js +77 -76
  99. package/lib/config/defaults.js +162 -23
  100. package/lib/config/normalization.js +18 -3
  101. package/lib/config/target.js +1 -1
  102. package/lib/container/ContainerEntryDependency.js +0 -1
  103. package/lib/container/ContainerEntryModule.js +3 -7
  104. package/lib/container/ContainerPlugin.js +1 -2
  105. package/lib/container/ContainerReferencePlugin.js +0 -1
  106. package/lib/container/FallbackDependency.js +2 -1
  107. package/lib/container/FallbackModule.js +6 -7
  108. package/lib/container/ModuleFederationPlugin.js +0 -1
  109. package/lib/container/RemoteModule.js +8 -8
  110. package/lib/container/RemoteRuntimeModule.js +2 -2
  111. package/lib/css/CssGenerator.js +3 -6
  112. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  113. package/lib/css/CssModulesPlugin.js +13 -19
  114. package/lib/css/CssParser.js +3 -3
  115. package/lib/css/walkCssTokens.js +2 -2
  116. package/lib/debug/ProfilingPlugin.js +35 -8
  117. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  118. package/lib/dependencies/AMDPlugin.js +2 -2
  119. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  120. package/lib/dependencies/CachedConstDependency.js +0 -4
  121. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  122. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  123. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  124. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  125. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  126. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  127. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  128. package/lib/dependencies/ConstDependency.js +2 -2
  129. package/lib/dependencies/ContextDependency.js +9 -4
  130. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  131. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  132. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  133. package/lib/dependencies/ContextElementDependency.js +22 -11
  134. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  135. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  136. package/lib/dependencies/CssImportDependency.js +0 -8
  137. package/lib/dependencies/CssLocalIdentifierDependency.js +4 -7
  138. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  139. package/lib/dependencies/CssUrlDependency.js +0 -6
  140. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  141. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  142. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  143. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  144. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  146. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  147. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  148. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  150. package/lib/dependencies/HarmonyImportDependency.js +33 -14
  151. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -23
  152. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  153. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  154. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  155. package/lib/dependencies/ImportContextDependency.js +13 -0
  156. package/lib/dependencies/ImportDependency.js +18 -6
  157. package/lib/dependencies/ImportEagerDependency.js +2 -3
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  159. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  160. package/lib/dependencies/ImportMetaPlugin.js +3 -2
  161. package/lib/dependencies/ImportParserPlugin.js +288 -45
  162. package/lib/dependencies/ImportWeakDependency.js +2 -3
  163. package/lib/dependencies/JsonExportsDependency.js +0 -1
  164. package/lib/dependencies/LoaderDependency.js +0 -3
  165. package/lib/dependencies/LoaderImportDependency.js +0 -3
  166. package/lib/dependencies/LoaderPlugin.js +11 -5
  167. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  168. package/lib/dependencies/ModuleDependency.js +3 -9
  169. package/lib/dependencies/NullDependency.js +2 -0
  170. package/lib/dependencies/ProvidedDependency.js +6 -8
  171. package/lib/dependencies/PureExpressionDependency.js +0 -1
  172. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  173. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  174. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  175. package/lib/dependencies/RequireResolveDependency.js +2 -2
  176. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  177. package/lib/dependencies/StaticExportsDependency.js +3 -5
  178. package/lib/dependencies/URLDependency.js +2 -7
  179. package/lib/dependencies/URLPlugin.js +1 -2
  180. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  181. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  182. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  183. package/lib/dependencies/WorkerDependency.js +2 -3
  184. package/lib/dependencies/WorkerPlugin.js +4 -12
  185. package/lib/dependencies/processExportInfo.js +2 -3
  186. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  187. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  188. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  189. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  190. package/lib/hmr/lazyCompilationBackend.js +13 -10
  191. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  192. package/lib/ids/HashedModuleIdsPlugin.js +5 -7
  193. package/lib/ids/IdHelpers.js +1 -1
  194. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  195. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  196. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  197. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  198. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  199. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  200. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  201. package/lib/index.js +8 -7
  202. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  203. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  204. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  205. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  206. package/lib/javascript/JavascriptGenerator.js +2 -3
  207. package/lib/javascript/JavascriptModulesPlugin.js +46 -24
  208. package/lib/javascript/JavascriptParser.js +120 -55
  209. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  210. package/lib/javascript/StartupHelpers.js +2 -4
  211. package/lib/json/JsonData.js +1 -1
  212. package/lib/json/JsonGenerator.js +4 -5
  213. package/lib/json/JsonModulesPlugin.js +0 -3
  214. package/lib/json/JsonParser.js +4 -2
  215. package/lib/library/AbstractLibraryPlugin.js +2 -2
  216. package/lib/library/AmdLibraryPlugin.js +0 -1
  217. package/lib/library/AssignLibraryPlugin.js +23 -12
  218. package/lib/library/EnableLibraryPlugin.js +7 -11
  219. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  220. package/lib/library/JsonpLibraryPlugin.js +5 -2
  221. package/lib/library/ModuleLibraryPlugin.js +88 -43
  222. package/lib/library/SystemLibraryPlugin.js +15 -6
  223. package/lib/library/UmdLibraryPlugin.js +12 -18
  224. package/lib/logging/Logger.js +12 -10
  225. package/lib/logging/createConsoleLogger.js +15 -14
  226. package/lib/logging/truncateArgs.js +1 -1
  227. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  228. package/lib/node/NodeWatchFileSystem.js +4 -4
  229. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  230. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  231. package/lib/node/nodeConsole.js +2 -2
  232. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  233. package/lib/optimize/ConcatenatedModule.js +142 -100
  234. package/lib/optimize/InnerGraph.js +17 -11
  235. package/lib/optimize/InnerGraphPlugin.js +0 -3
  236. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  237. package/lib/optimize/RealContentHashPlugin.js +5 -3
  238. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  239. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  240. package/lib/optimize/SplitChunksPlugin.js +46 -40
  241. package/lib/performance/SizeLimitsPlugin.js +2 -1
  242. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  243. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  244. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  245. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  246. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  247. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  248. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  249. package/lib/rules/RuleSetCompiler.js +8 -6
  250. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  251. package/lib/runtime/CompatRuntimeModule.js +0 -1
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  253. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  254. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  255. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  256. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  257. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  258. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  259. package/lib/schemes/DataUriPlugin.js +2 -28
  260. package/lib/schemes/FileUriPlugin.js +5 -2
  261. package/lib/schemes/HttpUriPlugin.js +4 -2
  262. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  263. package/lib/serialization/FileMiddleware.js +1 -1
  264. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  265. package/lib/serialization/ObjectMiddleware.js +31 -20
  266. package/lib/serialization/SerializerMiddleware.js +1 -3
  267. package/lib/serialization/types.js +1 -1
  268. package/lib/sharing/ConsumeSharedModule.js +3 -5
  269. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  270. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  271. package/lib/sharing/ProvideSharedModule.js +3 -7
  272. package/lib/sharing/SharePlugin.js +0 -2
  273. package/lib/sharing/ShareRuntimeModule.js +4 -1
  274. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  275. package/lib/sharing/utils.js +0 -6
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +179 -95
  277. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  279. package/lib/stats/StatsFactory.js +14 -11
  280. package/lib/url/URLParserPlugin.js +2 -4
  281. package/lib/util/ArrayHelpers.js +4 -4
  282. package/lib/util/AsyncQueue.js +1 -0
  283. package/lib/util/Hash.js +35 -5
  284. package/lib/util/LazySet.js +2 -2
  285. package/lib/util/StackedCacheMap.js +0 -2
  286. package/lib/util/TupleSet.js +9 -4
  287. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  288. package/lib/util/WeakTupleMap.js +1 -1
  289. package/lib/util/chainedImports.js +3 -1
  290. package/lib/util/cleverMerge.js +15 -18
  291. package/lib/util/comparators.js +2 -4
  292. package/lib/util/compileBooleanMatcher.js +11 -9
  293. package/lib/util/concatenate.js +1 -2
  294. package/lib/util/create-schema-validation.js +1 -2
  295. package/lib/util/createHash.js +85 -15
  296. package/lib/util/dataURL.js +39 -0
  297. package/lib/util/deprecation.js +29 -31
  298. package/lib/util/deterministicGrouping.js +34 -30
  299. package/lib/util/extractSourceMap.js +319 -0
  300. package/lib/util/findGraphRoots.js +15 -5
  301. package/lib/util/fs.js +29 -8
  302. package/lib/util/hash/BatchedHash.js +47 -8
  303. package/lib/util/hash/wasm-hash.js +53 -13
  304. package/lib/util/semver.js +9 -8
  305. package/lib/util/smartGrouping.js +41 -26
  306. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  307. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  308. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  309. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  310. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  311. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  312. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  313. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  314. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  315. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  316. package/lib/wasm-sync/WebAssemblyParser.js +1 -13
  317. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  318. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  319. package/lib/web/JsonpTemplatePlugin.js +0 -1
  320. package/lib/webpack.js +21 -8
  321. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  322. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  323. package/package.json +21 -21
  324. package/schemas/WebpackOptions.check.js +1 -1
  325. package/schemas/WebpackOptions.json +93 -96
  326. package/schemas/plugins/BannerPlugin.check.js +1 -1
  327. package/schemas/plugins/BannerPlugin.json +4 -0
  328. package/schemas/plugins/IgnorePlugin.json +1 -1
  329. package/schemas/plugins/ProgressPlugin.json +1 -1
  330. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  331. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  332. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  333. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  334. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  335. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  336. package/types.d.ts +1699 -706
  337. package/SECURITY.md +0 -9
  338. package/schemas/plugins/HashedModuleIdsPlugin.check.d.ts +0 -7
  339. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
@@ -34,6 +34,8 @@ const {
34
34
  parseResourceWithoutFragment
35
35
  } = require("./util/identifier");
36
36
 
37
+ /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
38
+ /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
37
39
  /** @typedef {import("../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
38
40
  /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
39
41
  /** @typedef {import("./Generator")} Generator */
@@ -47,8 +49,6 @@ const {
47
49
  /** @typedef {import("./NormalModule").ParserOptions} ParserOptions */
48
50
  /** @typedef {import("./Parser")} Parser */
49
51
  /** @typedef {import("./ResolverFactory")} ResolverFactory */
50
- /** @typedef {import("./ResolverFactory").ResolveContext} ResolveContext */
51
- /** @typedef {import("./ResolverFactory").ResolveRequest} ResolveRequest */
52
52
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
53
53
  /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
54
54
  /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
@@ -56,7 +56,12 @@ const {
56
56
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
57
57
  /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
58
58
 
59
- /** @typedef {Pick<RuleSetRule, 'type' | 'sideEffects' | 'parser' | 'generator' | 'resolve' | 'layer'>} ModuleSettings */
59
+ /**
60
+ * @template T
61
+ * @typedef {import("./Compiler").Callback<T>} Callback
62
+ */
63
+
64
+ /** @typedef {Pick<RuleSetRule, 'type' | 'sideEffects' | 'parser' | 'generator' | 'resolve' | 'layer' | 'extractSourceMap'>} ModuleSettings */
60
65
  /** @typedef {Partial<NormalModuleCreateData & { settings: ModuleSettings }>} CreateData */
61
66
 
62
67
  /**
@@ -65,7 +70,7 @@ const {
65
70
  * @property {ModuleFactoryCreateData["resolveOptions"]} resolveOptions
66
71
  * @property {string} context
67
72
  * @property {string} request
68
- * @property {ImportAttributes | undefined} assertions
73
+ * @property {ImportAttributes | undefined} attributes
69
74
  * @property {ModuleDependency[]} dependencies
70
75
  * @property {string} dependencyType
71
76
  * @property {CreateData} createData
@@ -101,13 +106,24 @@ const {
101
106
  * @property {string|undefined} options options
102
107
  */
103
108
 
104
- /**
105
- * @template T
106
- * @callback Callback
107
- * @param {(Error | null)=} err
108
- * @param {T=} stats
109
- * @returns {void}
110
- */
109
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_AUTO} JAVASCRIPT_MODULE_TYPE_AUTO */
110
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_DYNAMIC} JAVASCRIPT_MODULE_TYPE_DYNAMIC */
111
+ /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_ESM} JAVASCRIPT_MODULE_TYPE_ESM */
112
+ /** @typedef {import("./ModuleTypeConstants").JSON_MODULE_TYPE} JSON_MODULE_TYPE */
113
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE} ASSET_MODULE_TYPE */
114
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_INLINE} ASSET_MODULE_TYPE_INLINE */
115
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_RESOURCE} ASSET_MODULE_TYPE_RESOURCE */
116
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_SOURCE} ASSET_MODULE_TYPE_SOURCE */
117
+ /** @typedef {import("./ModuleTypeConstants").ASSET_MODULE_TYPE_BYTES} ASSET_MODULE_TYPE_BYTES */
118
+ /** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_ASYNC} WEBASSEMBLY_MODULE_TYPE_ASYNC */
119
+ /** @typedef {import("./ModuleTypeConstants").WEBASSEMBLY_MODULE_TYPE_SYNC} WEBASSEMBLY_MODULE_TYPE_SYNC */
120
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE} CSS_MODULE_TYPE */
121
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_GLOBAL} CSS_MODULE_TYPE_GLOBAL */
122
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_MODULE} CSS_MODULE_TYPE_MODULE */
123
+ /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_AUTO} CSS_MODULE_TYPE_AUTO */
124
+
125
+ /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO} KnownNormalModuleTypes */
126
+ /** @typedef {KnownNormalModuleTypes | string} NormalModuleTypes */
111
127
 
112
128
  const EMPTY_RESOLVE_OPTIONS = {};
113
129
  /** @type {ParserOptions} */
@@ -227,7 +243,7 @@ const ruleSetCompiler = new RuleSetCompiler([
227
243
  new BasicMatcherRulePlugin("issuer"),
228
244
  new BasicMatcherRulePlugin("compiler"),
229
245
  new BasicMatcherRulePlugin("issuerLayer"),
230
- new ObjectMatcherRulePlugin("assert", "assertions", (value) => {
246
+ new ObjectMatcherRulePlugin("assert", "attributes", (value) => {
231
247
  if (value) {
232
248
  return (
233
249
  /** @type {ImportAttributes} */ (value)._isLegacyAssert !== undefined
@@ -236,7 +252,7 @@ const ruleSetCompiler = new RuleSetCompiler([
236
252
 
237
253
  return false;
238
254
  }),
239
- new ObjectMatcherRulePlugin("with", "assertions", (value) => {
255
+ new ObjectMatcherRulePlugin("with", "attributes", (value) => {
240
256
  if (value) {
241
257
  return !(/** @type {ImportAttributes} */ (value)._isLegacyAssert);
242
258
  }
@@ -249,9 +265,80 @@ const ruleSetCompiler = new RuleSetCompiler([
249
265
  new BasicEffectRulePlugin("resolve"),
250
266
  new BasicEffectRulePlugin("generator"),
251
267
  new BasicEffectRulePlugin("layer"),
268
+ new BasicEffectRulePlugin("extractSourceMap"),
252
269
  new UseEffectRulePlugin()
253
270
  ]);
254
271
 
272
+ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
273
+ /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
274
+ /** @typedef {import("./javascript/JavascriptGenerator")} JavascriptGenerator */
275
+ /** @typedef {import("../declarations/WebpackOptions").EmptyGeneratorOptions} EmptyGeneratorOptions */
276
+
277
+ /** @typedef {import("./json/JsonParser")} JsonParser */
278
+ /** @typedef {import("../declarations/WebpackOptions").JsonParserOptions} JsonParserOptions */
279
+ /** @typedef {import("./json/JsonGenerator")} JsonGenerator */
280
+ /** @typedef {import("../declarations/WebpackOptions").JsonGeneratorOptions} JsonGeneratorOptions */
281
+
282
+ /** @typedef {import("./asset/AssetParser")} AssetParser */
283
+ /** @typedef {import("./asset/AssetSourceParser")} AssetSourceParser */
284
+ /** @typedef {import("./asset/AssetBytesParser")} AssetBytesParser */
285
+ /** @typedef {import("../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
286
+ /** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} EmptyParserOptions */
287
+ /** @typedef {import("./asset/AssetGenerator")} AssetGenerator */
288
+ /** @typedef {import("../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
289
+ /** @typedef {import("../declarations/WebpackOptions").AssetInlineGeneratorOptions} AssetInlineGeneratorOptions */
290
+ /** @typedef {import("../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
291
+ /** @typedef {import("./asset/AssetSourceGenerator")} AssetSourceGenerator */
292
+ /** @typedef {import("./asset/AssetBytesGenerator")} AssetBytesGenerator */
293
+
294
+ /** @typedef {import("./wasm-async/AsyncWebAssemblyParser")} AsyncWebAssemblyParser */
295
+ /** @typedef {import("./wasm-sync/WebAssemblyParser")} WebAssemblyParser */
296
+
297
+ /** @typedef {import("./css/CssParser")} CssParser */
298
+ /** @typedef {import("../declarations/WebpackOptions").CssParserOptions} CssParserOptions */
299
+ /** @typedef {import("../declarations/WebpackOptions").CssAutoParserOptions} CssAutoParserOptions */
300
+ /** @typedef {import("../declarations/WebpackOptions").CssGlobalParserOptions} CssGlobalParserOptions */
301
+ /** @typedef {import("../declarations/WebpackOptions").CssModuleParserOptions} CssModuleParserOptions */
302
+ /** @typedef {import("./css/CssGenerator")} CssGenerator */
303
+ /** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
304
+ /** @typedef {import("../declarations/WebpackOptions").CssGlobalGeneratorOptions} CssGlobalGeneratorOptions */
305
+ /** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
306
+ /** @typedef {import("../declarations/WebpackOptions").CssAutoGeneratorOptions} CssAutoGeneratorOptions */
307
+
308
+ /**
309
+ * @typedef {[
310
+ * [JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
311
+ * [JAVASCRIPT_MODULE_TYPE_DYNAMIC, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
312
+ * [JAVASCRIPT_MODULE_TYPE_ESM, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
313
+ * [JSON_MODULE_TYPE, JsonParser, JsonParserOptions, JsonGenerator, JsonGeneratorOptions],
314
+ * [ASSET_MODULE_TYPE, AssetParser, AssetParserOptions, AssetGenerator, AssetGeneratorOptions],
315
+ * [ASSET_MODULE_TYPE_INLINE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
316
+ * [ASSET_MODULE_TYPE_RESOURCE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
317
+ * [ASSET_MODULE_TYPE_SOURCE, AssetSourceParser, EmptyParserOptions, AssetSourceGenerator, EmptyGeneratorOptions],
318
+ * [ASSET_MODULE_TYPE_BYTES, AssetBytesParser, EmptyParserOptions, AssetBytesGenerator, EmptyGeneratorOptions],
319
+ * [WEBASSEMBLY_MODULE_TYPE_ASYNC, AsyncWebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
320
+ * [WEBASSEMBLY_MODULE_TYPE_SYNC, WebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
321
+ * [CSS_MODULE_TYPE, CssParser, CssParserOptions, CssGenerator, CssGeneratorOptions],
322
+ * [CSS_MODULE_TYPE_AUTO, CssParser, CssAutoParserOptions, CssGenerator, CssAutoGeneratorOptions],
323
+ * [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
324
+ * [CSS_MODULE_TYPE_GLOBAL, CssParser, CssGlobalParserOptions, CssGenerator, CssGlobalGeneratorOptions],
325
+ * [string, Parser, ParserOptions, Generator, GeneratorOptions],
326
+ * ]} ParsersAndGeneratorsByTypes
327
+ */
328
+
329
+ /**
330
+ * @template {unknown[]} T
331
+ * @template {number[]} I
332
+ * @typedef {{ [K in keyof I]: K extends keyof I ? I[K] extends keyof T ? T[I[K]] : never : never }} ExtractTupleElements
333
+ */
334
+
335
+ /**
336
+ * @template {unknown[]} T
337
+ * @template {number[]} A
338
+ * @template [R=void]
339
+ * @typedef {T extends [infer Head extends [string, ...unknown[]], ...infer Tail extends [string, ...unknown[]][]] ? Record<Head[0], SyncBailHook<ExtractTupleElements<Head, A>, R extends number ? Head[R] : R>> & RecordFactoryFromTuple<Tail, A, R> : unknown } RecordFactoryFromTuple
340
+ */
341
+
255
342
  class NormalModuleFactory extends ModuleFactory {
256
343
  /**
257
344
  * @param {object} param params
@@ -260,15 +347,13 @@ class NormalModuleFactory extends ModuleFactory {
260
347
  * @param {ResolverFactory} param.resolverFactory resolverFactory
261
348
  * @param {ModuleOptions} param.options options
262
349
  * @param {AssociatedObjectForCache} param.associatedObjectForCache an object to which the cache will be attached
263
- * @param {boolean=} param.layers enable layers
264
350
  */
265
351
  constructor({
266
352
  context,
267
353
  fs,
268
354
  resolverFactory,
269
355
  options,
270
- associatedObjectForCache,
271
- layers = false
356
+ associatedObjectForCache
272
357
  }) {
273
358
  super();
274
359
  this.hooks = Object.freeze({
@@ -292,15 +377,15 @@ class NormalModuleFactory extends ModuleFactory {
292
377
  createModule: new AsyncSeriesBailHook(["createData", "resolveData"]),
293
378
  /** @type {SyncWaterfallHook<[Module, CreateData, ResolveData]>} */
294
379
  module: new SyncWaterfallHook(["module", "createData", "resolveData"]),
295
- /** @type {HookMap<SyncBailHook<[ParserOptions], Parser | void>>} */
380
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [2], 1>>} */
296
381
  createParser: new HookMap(() => new SyncBailHook(["parserOptions"])),
297
- /** @type {HookMap<SyncBailHook<[TODO, ParserOptions], void>>} */
382
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [1, 2]>>} */
298
383
  parser: new HookMap(() => new SyncHook(["parser", "parserOptions"])),
299
- /** @type {HookMap<SyncBailHook<[GeneratorOptions], Generator | void>>} */
384
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [4], 3>>} */
300
385
  createGenerator: new HookMap(
301
386
  () => new SyncBailHook(["generatorOptions"])
302
387
  ),
303
- /** @type {HookMap<SyncBailHook<[TODO, GeneratorOptions], void>>} */
388
+ /** @type {import("tapable").TypedHookMap<RecordFactoryFromTuple<ParsersAndGeneratorsByTypes, [3, 4]>>} */
304
389
  generator: new HookMap(
305
390
  () => new SyncHook(["generator", "generatorOptions"])
306
391
  ),
@@ -430,7 +515,7 @@ class NormalModuleFactory extends ModuleFactory {
430
515
  dependencies,
431
516
  dependencyType,
432
517
  request,
433
- assertions,
518
+ attributes,
434
519
  resolveOptions,
435
520
  fileDependencies,
436
521
  missingDependencies,
@@ -601,7 +686,7 @@ class NormalModuleFactory extends ModuleFactory {
601
686
  resourceQuery: resourceDataForRules.query,
602
687
  resourceFragment: resourceDataForRules.fragment,
603
688
  scheme,
604
- assertions,
689
+ attributes,
605
690
  mimetype: matchResourceData
606
691
  ? ""
607
692
  : resourceData.data.mimetype || "",
@@ -683,16 +768,10 @@ class NormalModuleFactory extends ModuleFactory {
683
768
  for (const loader of /** @type {LoaderItem[]} */ (preLoaders)) {
684
769
  allLoaders.push(loader);
685
770
  }
686
- const type = /** @type {string} */ (settings.type);
771
+ const type = /** @type {NormalModuleTypes} */ (settings.type);
687
772
  const resolveOptions = settings.resolve;
688
773
  const layer = settings.layer;
689
- if (layer !== undefined && !layers) {
690
- return callback(
691
- new Error(
692
- "'Rule.layer' is only allowed when 'experiments.layers' is enabled"
693
- )
694
- );
695
- }
774
+
696
775
  try {
697
776
  Object.assign(data.createData, {
698
777
  layer:
@@ -717,7 +796,8 @@ class NormalModuleFactory extends ModuleFactory {
717
796
  parserOptions: settings.parser,
718
797
  generator: this.getGenerator(type, settings.generator),
719
798
  generatorOptions: settings.generator,
720
- resolveOptions
799
+ resolveOptions,
800
+ extractSourceMap: settings.extractSourceMap || false
721
801
  });
722
802
  } catch (createDataErr) {
723
803
  return callback(/** @type {Error} */ (createDataErr));
@@ -887,7 +967,9 @@ class NormalModuleFactory extends ModuleFactory {
887
967
  const resolveOptions = data.resolveOptions || EMPTY_RESOLVE_OPTIONS;
888
968
  const dependency = dependencies[0];
889
969
  const request = dependency.request;
890
- const assertions = dependency.assertions;
970
+ const attributes =
971
+ /** @type {ModuleDependency & { attributes: ImportAttributes }} */
972
+ (dependency).attributes;
891
973
  const dependencyType = dependency.category || "";
892
974
  const contextInfo = data.contextInfo;
893
975
  const fileDependencies = new LazySet();
@@ -899,7 +981,7 @@ class NormalModuleFactory extends ModuleFactory {
899
981
  resolveOptions,
900
982
  context,
901
983
  request,
902
- assertions,
984
+ attributes,
903
985
  dependencies,
904
986
  dependencyType,
905
987
  fileDependencies,
@@ -1186,6 +1268,10 @@ If changing the source code is not an option there is also a resolve options cal
1186
1268
  if (array.length === 0) return callback(null, array);
1187
1269
  asyncLib.map(
1188
1270
  array,
1271
+ /**
1272
+ * @param {LoaderItem} item item
1273
+ * @param {Callback<LoaderItem>} callback callback
1274
+ */
1189
1275
  (item, callback) => {
1190
1276
  resolver.resolve(
1191
1277
  contextInfo,
@@ -1218,7 +1304,8 @@ If changing the source code is not an option there is also a resolve options cal
1218
1304
  if (err) return callback(err);
1219
1305
 
1220
1306
  const parsedResult = this._parseResourceWithoutFragment(
1221
- /** @type {string} */ (result)
1307
+ /** @type {string} */
1308
+ (result)
1222
1309
  );
1223
1310
 
1224
1311
  const type = /\.mjs$/i.test(parsedResult.path)
@@ -1228,8 +1315,12 @@ If changing the source code is not an option there is also a resolve options cal
1228
1315
  : /** @type {ResolveRequest} */
1229
1316
  (resolveRequest).descriptionFileData === undefined
1230
1317
  ? undefined
1231
- : /** @type {ResolveRequest} */
1232
- (resolveRequest).descriptionFileData.type;
1318
+ : /** @type {string} */
1319
+ (
1320
+ /** @type {ResolveRequest} */
1321
+ (resolveRequest).descriptionFileData.type
1322
+ );
1323
+ /** @type {LoaderItem} */
1233
1324
  const resolved = {
1234
1325
  loader: parsedResult.path,
1235
1326
  type,
@@ -1239,17 +1330,16 @@ If changing the source code is not an option there is also a resolve options cal
1239
1330
  ? parsedResult.query.slice(1)
1240
1331
  : undefined
1241
1332
  : item.options,
1242
- ident:
1243
- item.options === undefined
1244
- ? undefined
1245
- : /** @type {string} */ (item.ident)
1333
+ ident: item.options === undefined ? undefined : item.ident
1246
1334
  };
1247
1335
 
1248
- return callback(null, /** @type {LoaderItem} */ (resolved));
1336
+ return callback(null, resolved);
1249
1337
  }
1250
1338
  );
1251
1339
  },
1252
- /** @type {Callback<(LoaderItem | undefined)[]>} */ (callback)
1340
+ (err, value) => {
1341
+ callback(err, /** @type {(LoaderItem)[]} */ (value));
1342
+ }
1253
1343
  );
1254
1344
  }
1255
1345
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
8
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
9
9
  /** @typedef {import("./Compiler")} Compiler */
10
10
 
11
11
  class OptionsApply {
package/lib/Parser.js CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
8
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
9
9
  /** @typedef {import("./Compilation")} Compilation */
10
10
  /** @typedef {import("./NormalModule")} NormalModule */
11
11
 
@@ -16,9 +16,7 @@ const { contextify } = require("./util/identifier");
16
16
  * @template T, R, AdditionalOptions
17
17
  * @typedef {import("tapable").Hook<T, R, AdditionalOptions>} Hook
18
18
  */
19
- /** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
20
19
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
21
- /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
22
20
  /** @typedef {import("./Compilation").FactorizeModuleOptions} FactorizeModuleOptions */
23
21
  /** @typedef {import("./Dependency")} Dependency */
24
22
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
@@ -54,20 +52,18 @@ const validate = createSchemaValidation(
54
52
  */
55
53
  const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
56
54
 
55
+ /** @typedef {(percentage: number, msg: string, ...args: string[]) => void} HandlerFn */
56
+
57
57
  /**
58
58
  * @param {boolean | null | undefined} profile need profile
59
59
  * @param {Logger} logger logger
60
- * @returns {defaultHandler} default handler
60
+ * @returns {HandlerFn} default handler
61
61
  */
62
62
  const createDefaultHandler = (profile, logger) => {
63
63
  /** @type {{ value: string | undefined, time: number }[]} */
64
64
  const lastStateInfo = [];
65
65
 
66
- /**
67
- * @param {number} percentage percentage
68
- * @param {string} msg message
69
- * @param {...string} args additional arguments
70
- */
66
+ /** @type {HandlerFn} */
71
67
  const defaultHandler = (percentage, msg, ...args) => {
72
68
  if (profile) {
73
69
  if (percentage === 0) {
@@ -199,7 +195,7 @@ class ProgressPlugin {
199
195
 
200
196
  /**
201
197
  * @param {MultiCompiler} compiler webpack multi-compiler
202
- * @param {HandlerFunction} handler function that executes for every progress step
198
+ * @param {HandlerFn} handler function that executes for every progress step
203
199
  * @returns {void}
204
200
  */
205
201
  _applyOnMultiCompiler(compiler, handler) {
@@ -218,7 +214,7 @@ class ProgressPlugin {
218
214
 
219
215
  /**
220
216
  * @param {Compiler} compiler webpack compiler
221
- * @param {HandlerFunction} handler function that executes for every progress step
217
+ * @param {HandlerFn} handler function that executes for every progress step
222
218
  * @returns {void}
223
219
  */
224
220
  _applyOnCompiler(compiler, handler) {
@@ -59,13 +59,11 @@ class ProvidePlugin {
59
59
  */
60
60
  const handler = (parser, parserOptions) => {
61
61
  for (const name of Object.keys(definitions)) {
62
- const request =
63
- /** @type {string[]} */
64
- ([
65
- ...(Array.isArray(definitions[name])
66
- ? definitions[name]
67
- : [definitions[name]])
68
- ]);
62
+ const request = [
63
+ ...(Array.isArray(definitions[name])
64
+ ? definitions[name]
65
+ : [definitions[name]])
66
+ ];
69
67
  const splittedName = name.split(".");
70
68
  if (splittedName.length > 0) {
71
69
  for (const [i, _] of splittedName.slice(1).entries()) {
package/lib/RawModule.js CHANGED
@@ -11,12 +11,9 @@ const { JS_TYPES } = require("./ModuleSourceTypesConstants");
11
11
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
12
12
  const makeSerializable = require("./util/makeSerializable");
13
13
 
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
16
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
14
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
17
15
  /** @typedef {import("./Compilation")} Compilation */
18
16
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
19
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
20
17
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
21
18
  /** @typedef {import("./Module").BuildCallback} BuildCallback */
22
19
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
@@ -28,8 +25,6 @@ const makeSerializable = require("./util/makeSerializable");
28
25
  /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
29
26
  /** @typedef {import("./RequestShortener")} RequestShortener */
30
27
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
31
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
32
- /** @typedef {import("./WebpackError")} WebpackError */
33
28
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
34
29
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
35
30
  /** @typedef {import("./util/Hash")} Hash */
@@ -36,6 +36,8 @@ const identifierUtils = require("./util/identifier");
36
36
  * @property {boolean=} portableIds true, when ids need to be portable
37
37
  */
38
38
 
39
+ /** @typedef {Set<number>} UsedIds */
40
+
39
41
  const PLUGIN_NAME = "RecordIdsPlugin";
40
42
 
41
43
  class RecordIdsPlugin {
@@ -75,7 +77,7 @@ class RecordIdsPlugin {
75
77
  const chunkGraph = compilation.chunkGraph;
76
78
  if (!records.modules) records.modules = {};
77
79
  if (!records.modules.byIdentifier) records.modules.byIdentifier = {};
78
- /** @type {Set<number>} */
80
+ /** @type {UsedIds} */
79
81
  const usedIds = new Set();
80
82
  for (const module of modules) {
81
83
  const moduleId = chunkGraph.getModuleId(module);
@@ -90,7 +92,7 @@ class RecordIdsPlugin {
90
92
  if (!records.modules) return;
91
93
  if (records.modules.byIdentifier) {
92
94
  const chunkGraph = compilation.chunkGraph;
93
- /** @type {Set<number>} */
95
+ /** @type {UsedIds} */
94
96
  const usedIds = new Set();
95
97
  for (const module of modules) {
96
98
  const moduleId = chunkGraph.getModuleId(module);
@@ -108,12 +110,14 @@ class RecordIdsPlugin {
108
110
  }
109
111
  });
110
112
 
113
+ /** @typedef {string[]} ChunkSources */
114
+
111
115
  /**
112
116
  * @param {Chunk} chunk the chunk
113
- * @returns {string[]} sources of the chunk
117
+ * @returns {ChunkSources} sources of the chunk
114
118
  */
115
119
  const getChunkSources = (chunk) => {
116
- /** @type {string[]} */
120
+ /** @type {ChunkSources} */
117
121
  const sources = [];
118
122
  for (const chunkGroup of chunk.groupsIterable) {
119
123
  const index = chunkGroup.chunks.indexOf(chunk);
@@ -156,7 +160,7 @@ class RecordIdsPlugin {
156
160
  if (!records.chunks) records.chunks = {};
157
161
  if (!records.chunks.byName) records.chunks.byName = {};
158
162
  if (!records.chunks.bySource) records.chunks.bySource = {};
159
- /** @type {Set<number>} */
163
+ /** @type {UsedIds} */
160
164
  const usedIds = new Set();
161
165
  for (const chunk of chunks) {
162
166
  if (typeof chunk.id !== "number") continue;
@@ -172,7 +176,7 @@ class RecordIdsPlugin {
172
176
  });
173
177
  compilation.hooks.reviveChunks.tap(PLUGIN_NAME, (chunks, records) => {
174
178
  if (!records.chunks) return;
175
- /** @type {Set<number>} */
179
+ /** @type {UsedIds} */
176
180
  const usedIds = new Set();
177
181
  if (records.chunks.byName) {
178
182
  for (const chunk of chunks) {
@@ -13,9 +13,7 @@ const {
13
13
  resolveByProperty
14
14
  } = require("./util/cleverMerge");
15
15
 
16
- /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
17
16
  /** @typedef {import("enhanced-resolve").ResolveOptions} ResolveOptions */
18
- /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
19
17
  /** @typedef {import("enhanced-resolve").Resolver} Resolver */
20
18
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} WebpackResolveOptions */
21
19
  /** @typedef {import("../declarations/WebpackOptions").ResolvePluginInstance} ResolvePluginInstance */
@@ -416,6 +416,11 @@ module.exports.systemContext = "__webpack_require__.y";
416
416
  */
417
417
  module.exports.thisAsExports = "top-level-this-exports";
418
418
 
419
+ /**
420
+ * to binary helper, convert base64 to Uint8Array
421
+ */
422
+ module.exports.toBinary = "__webpack_require__.tb";
423
+
419
424
  /**
420
425
  * the uncaught error handler for the webpack runtime
421
426
  */
@@ -11,8 +11,7 @@ const Module = require("./Module");
11
11
  const { RUNTIME_TYPES } = require("./ModuleSourceTypesConstants");
12
12
  const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
13
13
 
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
14
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
16
15
  /** @typedef {import("./Chunk")} Chunk */
17
16
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
18
17
  /** @typedef {import("./Compilation")} Compilation */
@@ -25,7 +24,6 @@ const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
25
24
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
26
25
  /** @typedef {import("./RequestShortener")} RequestShortener */
27
26
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
28
- /** @typedef {import("./WebpackError")} WebpackError */
29
27
  /** @typedef {import("./util/Hash")} Hash */
30
28
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
31
29