webpack 5.93.0 → 5.95.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 (344) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +33 -20
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +75 -68
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +6 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +41 -15
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +130 -69
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +21 -13
  94. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  95. package/lib/WatchIgnorePlugin.js +26 -9
  96. package/lib/Watching.js +10 -5
  97. package/lib/WebpackOptionsApply.js +84 -62
  98. package/lib/asset/AssetGenerator.js +107 -42
  99. package/lib/asset/AssetModulesPlugin.js +29 -23
  100. package/lib/asset/AssetSourceGenerator.js +2 -7
  101. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  102. package/lib/buildChunkGraph.js +93 -81
  103. package/lib/cache/IdleFileCachePlugin.js +4 -4
  104. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  105. package/lib/cache/PackFileCacheStrategy.js +51 -50
  106. package/lib/cache/ResolverCachePlugin.js +6 -6
  107. package/lib/cache/mergeEtags.js +16 -21
  108. package/lib/cli.js +148 -104
  109. package/lib/config/browserslistTargetHandler.js +16 -13
  110. package/lib/config/defaults.js +32 -28
  111. package/lib/config/normalization.js +335 -344
  112. package/lib/config/target.js +42 -52
  113. package/lib/container/ContainerEntryModule.js +2 -2
  114. package/lib/container/ContainerPlugin.js +1 -1
  115. package/lib/container/RemoteRuntimeModule.js +11 -8
  116. package/lib/container/options.js +18 -4
  117. package/lib/css/CssExportsGenerator.js +26 -24
  118. package/lib/css/CssGenerator.js +9 -4
  119. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  120. package/lib/css/CssModulesPlugin.js +127 -47
  121. package/lib/css/CssParser.js +20 -18
  122. package/lib/css/walkCssTokens.js +80 -95
  123. package/lib/debug/ProfilingPlugin.js +19 -20
  124. package/lib/dependencies/AMDDefineDependency.js +1 -1
  125. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  126. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  128. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  129. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  130. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  131. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  132. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  133. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  134. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  135. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  136. package/lib/dependencies/ConstDependency.js +1 -1
  137. package/lib/dependencies/ContextDependency.js +7 -2
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +35 -8
  140. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  141. package/lib/dependencies/CssExportDependency.js +7 -7
  142. package/lib/dependencies/CssImportDependency.js +0 -2
  143. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
  144. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  145. package/lib/dependencies/CssUrlDependency.js +4 -5
  146. package/lib/dependencies/DynamicExports.js +5 -5
  147. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  148. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  149. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  150. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  151. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  152. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  153. package/lib/dependencies/HarmonyExports.js +2 -2
  154. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  155. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  156. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
  157. package/lib/dependencies/ImportDependency.js +1 -1
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  159. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  160. package/lib/dependencies/ImportParserPlugin.js +39 -44
  161. package/lib/dependencies/JsonExportsDependency.js +22 -18
  162. package/lib/dependencies/LoaderPlugin.js +47 -36
  163. package/lib/dependencies/LocalModule.js +1 -1
  164. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  165. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  166. package/lib/dependencies/ProvidedDependency.js +1 -1
  167. package/lib/dependencies/PureExpressionDependency.js +6 -6
  168. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  169. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  170. package/lib/dependencies/SystemPlugin.js +1 -1
  171. package/lib/dependencies/URLDependency.js +3 -3
  172. package/lib/dependencies/URLPlugin.js +66 -12
  173. package/lib/dependencies/WorkerPlugin.js +25 -24
  174. package/lib/dependencies/processExportInfo.js +3 -1
  175. package/lib/electron/ElectronTargetPlugin.js +1 -0
  176. package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
  177. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  178. package/lib/formatLocation.js +1 -2
  179. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  180. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  181. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  182. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  183. package/lib/hmr/lazyCompilationBackend.js +64 -40
  184. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  185. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  186. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  187. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  188. package/lib/ids/IdHelpers.js +29 -39
  189. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  190. package/lib/index.js +1 -5
  191. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
  192. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  193. package/lib/javascript/ChunkHelpers.js +1 -1
  194. package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
  195. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  196. package/lib/javascript/JavascriptGenerator.js +23 -7
  197. package/lib/javascript/JavascriptModulesPlugin.js +133 -86
  198. package/lib/javascript/JavascriptParser.js +179 -200
  199. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  200. package/lib/javascript/StartupHelpers.js +41 -13
  201. package/lib/json/JsonGenerator.js +7 -13
  202. package/lib/json/JsonModulesPlugin.js +1 -4
  203. package/lib/json/JsonParser.js +5 -3
  204. package/lib/library/AmdLibraryPlugin.js +12 -16
  205. package/lib/library/AssignLibraryPlugin.js +8 -10
  206. package/lib/library/EnableLibraryPlugin.js +15 -14
  207. package/lib/library/JsonpLibraryPlugin.js +2 -1
  208. package/lib/library/ModernModuleLibraryPlugin.js +8 -6
  209. package/lib/library/ModuleLibraryPlugin.js +2 -1
  210. package/lib/library/SystemLibraryPlugin.js +2 -1
  211. package/lib/library/UmdLibraryPlugin.js +66 -92
  212. package/lib/logging/Logger.js +32 -4
  213. package/lib/logging/createConsoleLogger.js +12 -13
  214. package/lib/logging/runtime.js +7 -8
  215. package/lib/logging/truncateArgs.js +5 -8
  216. package/lib/node/NodeWatchFileSystem.js +3 -18
  217. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  218. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  219. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/nodeConsole.js +22 -22
  221. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  222. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  223. package/lib/optimize/ConcatenatedModule.js +81 -51
  224. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  225. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  226. package/lib/optimize/InnerGraph.js +17 -17
  227. package/lib/optimize/InnerGraphPlugin.js +8 -7
  228. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  229. package/lib/optimize/MangleExportsPlugin.js +1 -0
  230. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
  231. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  232. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  233. package/lib/optimize/RealContentHashPlugin.js +7 -10
  234. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  235. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  236. package/lib/optimize/SplitChunksPlugin.js +34 -30
  237. package/lib/performance/SizeLimitsPlugin.js +2 -2
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  240. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  241. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  242. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  243. package/lib/rules/RuleSetCompiler.js +41 -22
  244. package/lib/rules/UseEffectRulePlugin.js +36 -32
  245. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  246. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  247. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  248. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  249. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  250. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  251. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  252. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  253. package/lib/schemes/DataUriPlugin.js +1 -1
  254. package/lib/schemes/HttpUriPlugin.js +241 -126
  255. package/lib/serialization/BinaryMiddleware.js +44 -28
  256. package/lib/serialization/DateObjectSerializer.js +1 -0
  257. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  258. package/lib/serialization/FileMiddleware.js +154 -106
  259. package/lib/serialization/MapObjectSerializer.js +2 -1
  260. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  261. package/lib/serialization/ObjectMiddleware.js +52 -56
  262. package/lib/serialization/PlainObjectSerializer.js +32 -6
  263. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  264. package/lib/serialization/Serializer.js +4 -5
  265. package/lib/serialization/SerializerMiddleware.js +6 -6
  266. package/lib/serialization/SetObjectSerializer.js +2 -1
  267. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  268. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  269. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  270. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  271. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  272. package/lib/sharing/utils.js +15 -27
  273. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  274. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  275. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  276. package/lib/stats/StatsFactory.js +127 -56
  277. package/lib/stats/StatsPrinter.js +75 -44
  278. package/lib/util/ArrayHelpers.js +8 -4
  279. package/lib/util/ArrayQueue.js +1 -1
  280. package/lib/util/AsyncQueue.js +31 -12
  281. package/lib/util/IterableHelpers.js +3 -4
  282. package/lib/util/LazyBucketSortedSet.js +60 -44
  283. package/lib/util/LazySet.js +13 -0
  284. package/lib/util/MapHelpers.js +1 -3
  285. package/lib/util/ParallelismFactorCalculator.js +1 -1
  286. package/lib/util/Queue.js +1 -1
  287. package/lib/util/Semaphore.js +4 -7
  288. package/lib/util/SetHelpers.js +5 -5
  289. package/lib/util/SortableSet.js +4 -3
  290. package/lib/util/StackedCacheMap.js +4 -6
  291. package/lib/util/StackedMap.js +1 -3
  292. package/lib/util/StringXor.js +0 -5
  293. package/lib/util/TupleQueue.js +1 -1
  294. package/lib/util/TupleSet.js +15 -5
  295. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  296. package/lib/util/WeakTupleMap.js +19 -21
  297. package/lib/util/binarySearchBounds.js +5 -12
  298. package/lib/util/chainedImports.js +1 -1
  299. package/lib/util/cleverMerge.js +21 -19
  300. package/lib/util/comparators.js +57 -52
  301. package/lib/util/compileBooleanMatcher.js +3 -6
  302. package/lib/util/conventions.js +8 -11
  303. package/lib/util/createHash.js +9 -6
  304. package/lib/util/deprecation.js +22 -12
  305. package/lib/util/deterministicGrouping.js +19 -26
  306. package/lib/util/findGraphRoots.js +2 -2
  307. package/lib/util/fs.js +32 -32
  308. package/lib/util/hash/md4.js +2 -2
  309. package/lib/util/hash/wasm-hash.js +7 -7
  310. package/lib/util/hash/xxhash64.js +2 -2
  311. package/lib/util/identifier.js +81 -59
  312. package/lib/util/memoize.js +8 -10
  313. package/lib/util/mergeScope.js +6 -9
  314. package/lib/util/nonNumericOnlyHash.js +2 -2
  315. package/lib/util/numberHash.js +1 -6
  316. package/lib/util/objectToMap.js +0 -1
  317. package/lib/util/propertyAccess.js +2 -5
  318. package/lib/util/propertyName.js +1 -3
  319. package/lib/util/registerExternalSerializer.js +1 -1
  320. package/lib/util/runtime.js +109 -113
  321. package/lib/util/semver.js +29 -27
  322. package/lib/util/serialization.js +16 -1
  323. package/lib/util/smartGrouping.js +5 -5
  324. package/lib/util/source.js +1 -1
  325. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  326. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  327. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  328. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  329. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  330. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  331. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  333. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  334. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  335. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  336. package/package.json +18 -17
  337. package/schemas/WebpackOptions.check.js +1 -1
  338. package/schemas/WebpackOptions.json +5 -0
  339. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  340. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  341. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  343. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  344. package/types.d.ts +681 -355
@@ -17,8 +17,8 @@ const LocalModule = require("./LocalModule");
17
17
  const lookup = (parent, mod) => {
18
18
  if (mod.charAt(0) !== ".") return mod;
19
19
 
20
- var path = parent.split("/");
21
- var segments = mod.split("/");
20
+ const path = parent.split("/");
21
+ const segments = mod.split("/");
22
22
  path.pop();
23
23
 
24
24
  for (let i = 0; i < segments.length; i++) {
@@ -38,7 +38,7 @@ const lookup = (parent, mod) => {
38
38
  * @param {string} name name
39
39
  * @returns {LocalModule} local module
40
40
  */
41
- exports.addLocalModule = (state, name) => {
41
+ module.exports.addLocalModule = (state, name) => {
42
42
  if (!state.localModules) {
43
43
  state.localModules = [];
44
44
  }
@@ -53,7 +53,7 @@ exports.addLocalModule = (state, name) => {
53
53
  * @param {string} [namedModule] named module
54
54
  * @returns {LocalModule | null} local module or null
55
55
  */
56
- exports.getLocalModule = (state, name, namedModule) => {
56
+ module.exports.getLocalModule = (state, name, namedModule) => {
57
57
  if (!state.localModules) return null;
58
58
  if (namedModule) {
59
59
  // resolve dependency name relative to the defining named module
@@ -50,7 +50,7 @@ class ModuleDecoratorDependency extends NullDependency {
50
50
  * @returns {string | null} an identifier to merge equal requests
51
51
  */
52
52
  getResourceIdentifier() {
53
- return `self`;
53
+ return "self";
54
54
  }
55
55
 
56
56
  /**
@@ -64,7 +64,7 @@ class ProvidedDependency extends ModuleDependency {
64
64
  * @returns {(string[] | ReferencedExport)[]} referenced exports
65
65
  */
66
66
  getReferencedExports(moduleGraph, runtime) {
67
- let ids = this.ids;
67
+ const ids = this.ids;
68
68
  if (ids.length === 0) return Dependency.EXPORTS_OBJECT_REFERENCED;
69
69
  return [ids];
70
70
  }
@@ -77,12 +77,12 @@ class PureExpressionDependency extends NullDependency {
77
77
  hash.update("null");
78
78
  } else {
79
79
  hash.update(
80
- runtimeToString(runtimeCondition) +
81
- "|" +
82
- runtimeToString(context.runtime)
80
+ `${runtimeToString(runtimeCondition)}|${runtimeToString(
81
+ context.runtime
82
+ )}`
83
83
  );
84
84
  }
85
- hash.update(this.range + "");
85
+ hash.update(String(this.range));
86
86
  }
87
87
 
88
88
  /**
@@ -136,11 +136,11 @@ PureExpressionDependency.Template = class PureExpressionDependencyTemplate exten
136
136
  const dep = /** @type {PureExpressionDependency} */ (dependency);
137
137
  const runtimeCondition = dep._getRuntimeCondition(moduleGraph, runtime);
138
138
  if (runtimeCondition === true) {
139
- return;
139
+ // Do nothing
140
140
  } else if (runtimeCondition === false) {
141
141
  source.insert(
142
142
  dep.range[0],
143
- `(/* unused pure expression or super */ null && (`
143
+ "(/* unused pure expression or super */ null && ("
144
144
  );
145
145
  source.insert(dep.range[1], "))");
146
146
  } else {
@@ -56,7 +56,7 @@ module.exports = class RequireContextDependencyParserPlugin {
56
56
  /** @type {Range} */ (expr.range)
57
57
  );
58
58
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
59
- dep.optional = !!parser.scope.inTry;
59
+ dep.optional = Boolean(parser.scope.inTry);
60
60
  parser.state.current.addDependency(dep);
61
61
  return true;
62
62
  }
@@ -36,7 +36,7 @@ class RuntimeRequirementsDependency extends NullDependency {
36
36
  */
37
37
  updateHash(hash, context) {
38
38
  if (this._hashUpdate === undefined) {
39
- this._hashUpdate = Array.from(this.runtimeRequirements).join() + "";
39
+ this._hashUpdate = `${Array.from(this.runtimeRequirements).join()}`;
40
40
  }
41
41
  hash.update(this._hashUpdate);
42
42
  }
@@ -73,7 +73,7 @@ class SystemPlugin {
73
73
  PLUGIN_NAME,
74
74
  expressionIsUnsupported(
75
75
  parser,
76
- name + " is not supported by webpack."
76
+ `${name} is not supported by webpack.`
77
77
  )
78
78
  );
79
79
  };
@@ -30,9 +30,9 @@ const ModuleDependency = require("./ModuleDependency");
30
30
  /** @typedef {import("../util/Hash")} Hash */
31
31
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
32
32
 
33
- const getIgnoredRawDataUrlModule = memoize(() => {
34
- return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
35
- });
33
+ const getIgnoredRawDataUrlModule = memoize(
34
+ () => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
35
+ );
36
36
 
37
37
  class URLDependency extends ModuleDependency {
38
38
  /**
@@ -6,13 +6,17 @@
6
6
  "use strict";
7
7
 
8
8
  const { pathToFileURL } = require("url");
9
+ const CommentCompilationWarning = require("../CommentCompilationWarning");
9
10
  const {
10
11
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
12
  JAVASCRIPT_MODULE_TYPE_ESM
12
13
  } = require("../ModuleTypeConstants");
14
+ const RuntimeGlobals = require("../RuntimeGlobals");
15
+ const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
13
16
  const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
14
17
  const { approve } = require("../javascript/JavascriptParserHelpers");
15
18
  const InnerGraph = require("../optimize/InnerGraph");
19
+ const ConstDependency = require("./ConstDependency");
16
20
  const URLDependency = require("./URLDependency");
17
21
 
18
22
  /** @typedef {import("estree").NewExpression} NewExpressionNode */
@@ -44,8 +48,21 @@ class URLPlugin {
44
48
  * @param {NormalModule} module module
45
49
  * @returns {URL} file url
46
50
  */
47
- const getUrl = module => {
48
- return pathToFileURL(module.resource);
51
+ const getUrl = module => pathToFileURL(module.resource);
52
+
53
+ const isMetaUrl = (parser, arg) => {
54
+ const chain = parser.extractMemberExpressionChain(arg);
55
+
56
+ if (
57
+ chain.members.length !== 1 ||
58
+ chain.object.type !== "MetaProperty" ||
59
+ chain.object.meta.name !== "import" ||
60
+ chain.object.property.name !== "meta" ||
61
+ chain.members[0] !== "url"
62
+ )
63
+ return false;
64
+
65
+ return true;
49
66
  };
50
67
 
51
68
  /**
@@ -72,16 +89,7 @@ class URLPlugin {
72
89
  )
73
90
  return;
74
91
 
75
- const chain = parser.extractMemberExpressionChain(arg2);
76
-
77
- if (
78
- chain.members.length !== 1 ||
79
- chain.object.type !== "MetaProperty" ||
80
- chain.object.meta.name !== "import" ||
81
- chain.object.property.name !== "meta" ||
82
- chain.members[0] !== "url"
83
- )
84
- return;
92
+ if (!isMetaUrl(parser, arg2)) return;
85
93
 
86
94
  return parser.evaluateExpression(arg1).asString();
87
95
  };
@@ -100,6 +108,52 @@ class URLPlugin {
100
108
  });
101
109
  parser.hooks.new.for("URL").tap(PLUGIN_NAME, _expr => {
102
110
  const expr = /** @type {NewExpressionNode} */ (_expr);
111
+ const { options: importOptions, errors: commentErrors } =
112
+ parser.parseCommentOptions(/** @type {Range} */ (expr.range));
113
+
114
+ if (commentErrors) {
115
+ for (const e of commentErrors) {
116
+ const { comment } = e;
117
+ parser.state.module.addWarning(
118
+ new CommentCompilationWarning(
119
+ `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
120
+ comment.loc
121
+ )
122
+ );
123
+ }
124
+ }
125
+
126
+ if (importOptions && importOptions.webpackIgnore !== undefined) {
127
+ if (typeof importOptions.webpackIgnore !== "boolean") {
128
+ parser.state.module.addWarning(
129
+ new UnsupportedFeatureWarning(
130
+ `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
131
+ /** @type {DependencyLocation} */ (expr.loc)
132
+ )
133
+ );
134
+ return;
135
+ } else if (importOptions.webpackIgnore) {
136
+ if (expr.arguments.length !== 2) return;
137
+
138
+ const [, arg2] = expr.arguments;
139
+
140
+ if (
141
+ arg2.type !== "MemberExpression" ||
142
+ !isMetaUrl(parser, arg2)
143
+ )
144
+ return;
145
+
146
+ const dep = new ConstDependency(
147
+ RuntimeGlobals.baseURI,
148
+ /** @type {Range} */ (arg2.range),
149
+ [RuntimeGlobals.baseURI]
150
+ );
151
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
152
+ parser.state.module.addPresentationalDependency(dep);
153
+
154
+ return true;
155
+ }
156
+ }
103
157
 
104
158
  const request = getUrlRequest(expr);
105
159
 
@@ -45,15 +45,14 @@ const WorkerDependency = require("./WorkerDependency");
45
45
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
46
46
  /** @typedef {import("../javascript/JavascriptParser")} Parser */
47
47
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
48
+ /** @typedef {import("../util/createHash").Algorithm} Algorithm */
48
49
  /** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
49
50
 
50
51
  /**
51
52
  * @param {NormalModule} module module
52
53
  * @returns {string} url
53
54
  */
54
- const getUrl = module => {
55
- return pathToFileURL(module.resource).toString();
56
- };
55
+ const getUrl = module => pathToFileURL(module.resource).toString();
57
56
 
58
57
  const WorkerSpecifierTag = Symbol("worker specifier tag");
59
58
 
@@ -82,6 +81,7 @@ class WorkerPlugin {
82
81
  this._module = module;
83
82
  this._workerPublicPath = workerPublicPath;
84
83
  }
84
+
85
85
  /**
86
86
  * Apply the plugin
87
87
  * @param {Compiler} compiler the compiler instance
@@ -258,7 +258,7 @@ class WorkerPlugin {
258
258
  }
259
259
 
260
260
  /** @type {EntryOptions} */
261
- let entryOptions = {};
261
+ const entryOptions = {};
262
262
 
263
263
  if (importOptions) {
264
264
  if (importOptions.webpackIgnore !== undefined) {
@@ -269,10 +269,8 @@ class WorkerPlugin {
269
269
  /** @type {DependencyLocation} */ (expr.loc)
270
270
  )
271
271
  );
272
- } else {
273
- if (importOptions.webpackIgnore) {
274
- return false;
275
- }
272
+ } else if (importOptions.webpackIgnore) {
273
+ return false;
276
274
  }
277
275
  }
278
276
  if (importOptions.webpackEntryOptions !== undefined) {
@@ -316,16 +314,19 @@ class WorkerPlugin {
316
314
  }
317
315
 
318
316
  if (entryOptions.runtime === undefined) {
319
- let i = workerIndexMap.get(parser.state) || 0;
317
+ const i = workerIndexMap.get(parser.state) || 0;
320
318
  workerIndexMap.set(parser.state, i + 1);
321
- let name = `${cachedContextify(
319
+ const name = `${cachedContextify(
322
320
  parser.state.module.identifier()
323
321
  )}|${i}`;
324
- const hash = createHash(compilation.outputOptions.hashFunction);
325
- hash.update(name);
326
- const digest = /** @type {string} */ (
327
- hash.digest(compilation.outputOptions.hashDigest)
322
+ const hash = createHash(
323
+ /** @type {Algorithm} */
324
+ (compilation.outputOptions.hashFunction)
328
325
  );
326
+ hash.update(name);
327
+ const digest =
328
+ /** @type {string} */
329
+ (hash.digest(compilation.outputOptions.hashDigest));
329
330
  entryOptions.runtime = digest.slice(
330
331
  0,
331
332
  compilation.outputOptions.hashDigestLength
@@ -394,15 +395,13 @@ class WorkerPlugin {
394
395
  dep2.loc = /** @type {DependencyLocation} */ (expr.loc);
395
396
  parser.state.module.addPresentationalDependency(dep1);
396
397
  parser.state.module.addPresentationalDependency(dep2);
397
- } else if (insertType === "argument") {
398
- if (this._module) {
399
- const dep = new ConstDependency(
400
- ', { type: "module" }',
401
- insertLocation
402
- );
403
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
404
- parser.state.module.addPresentationalDependency(dep);
405
- }
398
+ } else if (insertType === "argument" && this._module) {
399
+ const dep = new ConstDependency(
400
+ ', { type: "module" }',
401
+ insertLocation
402
+ );
403
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
404
+ parser.state.module.addPresentationalDependency(dep);
406
405
  }
407
406
 
408
407
  parser.walkExpression(expr.callee);
@@ -482,7 +481,9 @@ class WorkerPlugin {
482
481
  };
483
482
  for (const item of options) {
484
483
  if (item === "...") {
485
- DEFAULT_SYNTAX.forEach(processItem);
484
+ for (const itemFromDefault of DEFAULT_SYNTAX) {
485
+ processItem(itemFromDefault);
486
+ }
486
487
  } else processItem(item);
487
488
  }
488
489
  };
@@ -10,9 +10,11 @@ const { UsageState } = require("../ExportsInfo");
10
10
  /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
11
11
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
12
12
 
13
+ /** @typedef {string[][]} ReferencedExports */
14
+
13
15
  /**
14
16
  * @param {RuntimeSpec} runtime the runtime
15
- * @param {string[][]} referencedExports list of referenced exports, will be added to
17
+ * @param {ReferencedExports} referencedExports list of referenced exports, will be added to
16
18
  * @param {string[]} prefix export prefix
17
19
  * @param {ExportInfo=} exportInfo the export info
18
20
  * @param {boolean} defaultPointsToSelf when true, using default will reference itself
@@ -16,6 +16,7 @@ class ElectronTargetPlugin {
16
16
  constructor(context) {
17
17
  this._context = context;
18
18
  }
19
+
19
20
  /**
20
21
  * Apply the plugin
21
22
  * @param {Compiler} compiler the compiler instance
@@ -58,9 +58,9 @@ class ModuleChunkFormatPlugin {
58
58
  } else {
59
59
  source.add(`export const id = ${JSON.stringify(chunk.id)};\n`);
60
60
  source.add(`export const ids = ${JSON.stringify(chunk.ids)};\n`);
61
- source.add(`export const modules = `);
61
+ source.add("export const modules = ");
62
62
  source.add(modules);
63
- source.add(`;\n`);
63
+ source.add(";\n");
64
64
  const runtimeModules =
65
65
  chunkGraph.getChunkRuntimeModulesInOrder(chunk);
66
66
  if (runtimeModules.length > 0) {
@@ -103,7 +103,7 @@ class ModuleChunkFormatPlugin {
103
103
  compilation.outputOptions
104
104
  ),
105
105
  {
106
- chunk: chunk,
106
+ chunk,
107
107
  contentHashType: "javascript"
108
108
  }
109
109
  )
@@ -17,6 +17,7 @@ const { getInitialChunkIds } = require("../javascript/StartupHelpers");
17
17
  const compileBooleanMatcher = require("../util/compileBooleanMatcher");
18
18
  const { getUndoPath } = require("../util/identifier");
19
19
 
20
+ /** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
20
21
  /** @typedef {import("../Chunk")} Chunk */
21
22
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
22
23
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
@@ -87,9 +88,12 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
87
88
  const compilation = /** @type {Compilation} */ (this.compilation);
88
89
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
89
90
  const chunk = /** @type {Chunk} */ (this.chunk);
91
+ const environment =
92
+ /** @type {Environment} */
93
+ (compilation.outputOptions.environment);
90
94
  const {
91
95
  runtimeTemplate,
92
- outputOptions: { environment, importFunctionName, crossOriginLoading }
96
+ outputOptions: { importFunctionName, crossOriginLoading }
93
97
  } = compilation;
94
98
  const fn = RuntimeGlobals.ensureChunkHandlers;
95
99
  const withBaseURI = this._runtimeRequirements.has(RuntimeGlobals.baseURI);
@@ -219,10 +223,10 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
219
223
  ]
220
224
  )});`,
221
225
  `var promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
222
- `installedChunkData = installedChunks[chunkId] = [resolve]`,
226
+ "installedChunkData = installedChunks[chunkId] = [resolve]",
223
227
  "resolve"
224
228
  )})])`,
225
- `promises.push(installedChunkData[1] = promise);`
229
+ "promises.push(installedChunkData[1] = promise);"
226
230
  ]),
227
231
  hasJsMatcher === true
228
232
  ? "}"
@@ -48,9 +48,8 @@ const formatLocation = loc => {
48
48
  typeof loc.end.column !== "number"
49
49
  ) {
50
50
  return `${loc.start.line}-${loc.end.line}`;
51
- } else {
52
- return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`;
53
51
  }
52
+ return `${formatPosition(loc.start)}-${formatPosition(loc.end)}`;
54
53
  }
55
54
  if ("start" in loc && loc.start) {
56
55
  return formatPosition(loc.start);
@@ -201,7 +201,7 @@ module.exports = function () {
201
201
  if (idx >= 0) registeredStatusHandlers.splice(idx, 1);
202
202
  },
203
203
 
204
- //inherit from previous dispose call
204
+ // inherit from previous dispose call
205
205
  data: currentModuleData[moduleId]
206
206
  };
207
207
  currentChildModule = undefined;
@@ -293,11 +293,10 @@ module.exports = function () {
293
293
  return waitForBlockingPromises(function () {
294
294
  if (applyOnUpdate) {
295
295
  return internalApply(applyOnUpdate);
296
- } else {
297
- return setStatus("ready").then(function () {
298
- return updatedModules;
299
- });
300
296
  }
297
+ return setStatus("ready").then(function () {
298
+ return updatedModules;
299
+ });
301
300
  });
302
301
  });
303
302
  });
@@ -13,6 +13,7 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
13
13
  constructor() {
14
14
  super("hot module replacement", RuntimeModule.STAGE_BASIC);
15
15
  }
16
+
16
17
  /**
17
18
  * @returns {string | null} runtime code
18
19
  */
@@ -117,15 +117,12 @@ module.exports = function () {
117
117
  if ($hasOwnProperty$(currentUpdate, moduleId)) {
118
118
  var newModuleFactory = currentUpdate[moduleId];
119
119
  /** @type {TODO} */
120
- var result;
121
- if (newModuleFactory) {
122
- result = getAffectedModuleEffects(moduleId);
123
- } else {
124
- result = {
125
- type: "disposed",
126
- moduleId: moduleId
127
- };
128
- }
120
+ var result = newModuleFactory
121
+ ? getAffectedModuleEffects(moduleId)
122
+ : {
123
+ type: "disposed",
124
+ moduleId: moduleId
125
+ };
129
126
  /** @type {Error|false} */
130
127
  var abortError = false;
131
128
  var doApply = false;
@@ -376,17 +373,17 @@ module.exports = function () {
376
373
  moduleId: moduleId,
377
374
  module: $moduleCache$[moduleId]
378
375
  });
379
- } catch (err2) {
376
+ } catch (err1) {
380
377
  if (options.onErrored) {
381
378
  options.onErrored({
382
379
  type: "self-accept-error-handler-errored",
383
380
  moduleId: moduleId,
384
- error: err2,
381
+ error: err1,
385
382
  originalError: err
386
383
  });
387
384
  }
388
385
  if (!options.ignoreErrored) {
389
- reportError(err2);
386
+ reportError(err1);
390
387
  reportError(err);
391
388
  }
392
389
  }
@@ -37,10 +37,12 @@ const { registerNotSerializable } = require("../util/serialization");
37
37
  /** @typedef {import("../util/Hash")} Hash */
38
38
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
39
39
 
40
+ /** @typedef {{ client: string, data: string, active: boolean }} ModuleResult */
41
+
40
42
  /**
41
43
  * @typedef {object} BackendApi
42
- * @property {function(Error=): void} dispose
43
- * @property {function(Module): { client: string, data: string, active: boolean }} module
44
+ * @property {function(function((Error | null)=) : void): void} dispose
45
+ * @property {function(Module): ModuleResult} module
44
46
  */
45
47
 
46
48
  const HMR_DEPENDENCY_TYPES = new Set([
@@ -53,7 +55,7 @@ const HMR_DEPENDENCY_TYPES = new Set([
53
55
  /**
54
56
  * @param {undefined|string|RegExp|Function} test test option
55
57
  * @param {Module} module the module
56
- * @returns {boolean} true, if the module should be selected
58
+ * @returns {boolean | null | string} true, if the module should be selected
57
59
  */
58
60
  const checkTest = (test, module) => {
59
61
  if (test === undefined) return true;
@@ -74,6 +76,9 @@ const checkTest = (test, module) => {
74
76
  const TYPES = new Set(["javascript"]);
75
77
 
76
78
  class LazyCompilationDependency extends Dependency {
79
+ /**
80
+ * @param {LazyCompilationProxyModule} proxyModule proxy module
81
+ */
77
82
  constructor(proxyModule) {
78
83
  super();
79
84
  this.proxyModule = proxyModule;
@@ -98,6 +103,14 @@ class LazyCompilationDependency extends Dependency {
98
103
  registerNotSerializable(LazyCompilationDependency);
99
104
 
100
105
  class LazyCompilationProxyModule extends Module {
106
+ /**
107
+ * @param {string} context context
108
+ * @param {Module} originalModule an original module
109
+ * @param {string} request request
110
+ * @param {ModuleResult["client"]} client client
111
+ * @param {ModuleResult["data"]} data data
112
+ * @param {ModuleResult["active"]} active true when active, otherwise false
113
+ */
101
114
  constructor(context, originalModule, request, client, data, active) {
102
115
  super(
103
116
  WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY,
@@ -229,13 +242,13 @@ class LazyCompilationProxyModule extends Module {
229
242
  ]);
230
243
  const keepActive = Template.asString([
231
244
  `var dispose = client.keepAlive({ data: data, active: ${JSON.stringify(
232
- !!block
245
+ Boolean(block)
233
246
  )}, module: module, onError: onError });`
234
247
  ]);
235
248
  let source;
236
249
  if (block) {
237
250
  const dep = block.dependencies[0];
238
- const module = moduleGraph.getModule(dep);
251
+ const module = /** @type {Module} */ (moduleGraph.getModule(dep));
239
252
  source = Template.asString([
240
253
  client,
241
254
  `module.exports = ${runtimeTemplate.moduleNamespacePromise({
@@ -264,7 +277,7 @@ class LazyCompilationProxyModule extends Module {
264
277
  source = Template.asString([
265
278
  client,
266
279
  "var resolveSelf, onError;",
267
- `module.exports = new Promise(function(resolve, reject) { resolveSelf = resolve; onError = reject; });`,
280
+ "module.exports = new Promise(function(resolve, reject) { resolveSelf = resolve; onError = reject; });",
268
281
  "if (module.hot) {",
269
282
  Template.indent([
270
283
  "module.hot.accept();",
@@ -297,9 +310,8 @@ class LazyCompilationProxyModule extends Module {
297
310
  registerNotSerializable(LazyCompilationProxyModule);
298
311
 
299
312
  class LazyCompilationDependencyFactory extends ModuleFactory {
300
- constructor(factory) {
313
+ constructor() {
301
314
  super();
302
- this._factory = factory;
303
315
  }
304
316
 
305
317
  /**
@@ -320,10 +332,10 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
320
332
  class LazyCompilationPlugin {
321
333
  /**
322
334
  * @param {object} options options
323
- * @param {(function(Compiler, function(Error?, BackendApi?): void): void) | function(Compiler): Promise<BackendApi>} options.backend the backend
335
+ * @param {(function(Compiler, function(Error=, BackendApi?): void): void) | function(Compiler): Promise<BackendApi>} options.backend the backend
324
336
  * @param {boolean} options.entries true, when entries are lazy compiled
325
337
  * @param {boolean} options.imports true, when import() modules are lazy compiled
326
- * @param {RegExp | string | (function(Module): boolean)} options.test additional filter for lazy compiled entrypoint modules
338
+ * @param {RegExp | string | (function(Module): boolean) | undefined} options.test additional filter for lazy compiled entrypoint modules
327
339
  */
328
340
  constructor({ backend, entries, imports, test }) {
329
341
  this.backend = backend;
@@ -331,12 +343,14 @@ class LazyCompilationPlugin {
331
343
  this.imports = imports;
332
344
  this.test = test;
333
345
  }
346
+
334
347
  /**
335
348
  * Apply the plugin
336
349
  * @param {Compiler} compiler the compiler instance
337
350
  * @returns {void}
338
351
  */
339
352
  apply(compiler) {
353
+ /** @type {BackendApi} */
340
354
  let backend;
341
355
  compiler.hooks.beforeCompile.tapAsync(
342
356
  "LazyCompilationPlugin",
@@ -344,7 +358,7 @@ class LazyCompilationPlugin {
344
358
  if (backend !== undefined) return callback();
345
359
  const promise = this.backend(compiler, (err, result) => {
346
360
  if (err) return callback(err);
347
- backend = result;
361
+ backend = /** @type {BackendApi} */ (result);
348
362
  callback();
349
363
  });
350
364
  if (promise && promise.then) {
@@ -370,7 +384,8 @@ class LazyCompilationPlugin {
370
384
  // an import() or not
371
385
  const hmrDep = resolveData.dependencies[0];
372
386
  const originModule =
373
- compilation.moduleGraph.getParentModule(hmrDep);
387
+ /** @type {Module} */
388
+ (compilation.moduleGraph.getParentModule(hmrDep));
374
389
  const isReferringToDynamicImport = originModule.blocks.some(
375
390
  block =>
376
391
  block.dependencies.some(