webpack 5.93.0 → 5.94.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 (343) 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 +5 -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 +104 -64
  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 +126 -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 +12 -10
  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 +14 -19
  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 +31 -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 +1 -1
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +2 -2
  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 +91 -69
  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 +80 -48
  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/MinMaxSizeWarning.js +1 -1
  231. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  232. package/lib/optimize/RealContentHashPlugin.js +7 -10
  233. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  234. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  235. package/lib/optimize/SplitChunksPlugin.js +34 -30
  236. package/lib/performance/SizeLimitsPlugin.js +2 -2
  237. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  238. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  239. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  240. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  241. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  242. package/lib/rules/RuleSetCompiler.js +41 -22
  243. package/lib/rules/UseEffectRulePlugin.js +36 -32
  244. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  245. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  246. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  247. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  248. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  249. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  250. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  251. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  252. package/lib/schemes/DataUriPlugin.js +1 -1
  253. package/lib/schemes/HttpUriPlugin.js +241 -126
  254. package/lib/serialization/BinaryMiddleware.js +44 -28
  255. package/lib/serialization/DateObjectSerializer.js +1 -0
  256. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  257. package/lib/serialization/FileMiddleware.js +154 -106
  258. package/lib/serialization/MapObjectSerializer.js +2 -1
  259. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  260. package/lib/serialization/ObjectMiddleware.js +52 -56
  261. package/lib/serialization/PlainObjectSerializer.js +32 -6
  262. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  263. package/lib/serialization/Serializer.js +4 -5
  264. package/lib/serialization/SerializerMiddleware.js +6 -6
  265. package/lib/serialization/SetObjectSerializer.js +2 -1
  266. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  267. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  268. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  269. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  270. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  271. package/lib/sharing/utils.js +15 -27
  272. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  273. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  274. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  275. package/lib/stats/StatsFactory.js +127 -56
  276. package/lib/stats/StatsPrinter.js +75 -44
  277. package/lib/util/ArrayHelpers.js +8 -4
  278. package/lib/util/ArrayQueue.js +1 -1
  279. package/lib/util/AsyncQueue.js +31 -12
  280. package/lib/util/IterableHelpers.js +3 -4
  281. package/lib/util/LazyBucketSortedSet.js +60 -44
  282. package/lib/util/LazySet.js +1 -0
  283. package/lib/util/MapHelpers.js +1 -3
  284. package/lib/util/ParallelismFactorCalculator.js +1 -1
  285. package/lib/util/Queue.js +1 -1
  286. package/lib/util/Semaphore.js +4 -7
  287. package/lib/util/SetHelpers.js +5 -5
  288. package/lib/util/SortableSet.js +4 -3
  289. package/lib/util/StackedCacheMap.js +4 -6
  290. package/lib/util/StackedMap.js +1 -3
  291. package/lib/util/StringXor.js +0 -5
  292. package/lib/util/TupleQueue.js +1 -1
  293. package/lib/util/TupleSet.js +15 -5
  294. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  295. package/lib/util/WeakTupleMap.js +19 -21
  296. package/lib/util/binarySearchBounds.js +5 -12
  297. package/lib/util/chainedImports.js +1 -1
  298. package/lib/util/cleverMerge.js +21 -19
  299. package/lib/util/comparators.js +57 -52
  300. package/lib/util/compileBooleanMatcher.js +3 -6
  301. package/lib/util/conventions.js +8 -11
  302. package/lib/util/createHash.js +9 -6
  303. package/lib/util/deprecation.js +22 -12
  304. package/lib/util/deterministicGrouping.js +19 -26
  305. package/lib/util/findGraphRoots.js +2 -2
  306. package/lib/util/fs.js +31 -31
  307. package/lib/util/hash/md4.js +2 -2
  308. package/lib/util/hash/wasm-hash.js +7 -7
  309. package/lib/util/hash/xxhash64.js +2 -2
  310. package/lib/util/identifier.js +81 -59
  311. package/lib/util/memoize.js +8 -10
  312. package/lib/util/mergeScope.js +6 -9
  313. package/lib/util/nonNumericOnlyHash.js +2 -2
  314. package/lib/util/numberHash.js +1 -6
  315. package/lib/util/objectToMap.js +0 -1
  316. package/lib/util/propertyAccess.js +2 -5
  317. package/lib/util/propertyName.js +1 -3
  318. package/lib/util/registerExternalSerializer.js +1 -1
  319. package/lib/util/runtime.js +103 -113
  320. package/lib/util/semver.js +29 -27
  321. package/lib/util/serialization.js +16 -1
  322. package/lib/util/smartGrouping.js +5 -5
  323. package/lib/util/source.js +1 -1
  324. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  325. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  326. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  327. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  328. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  329. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  330. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  331. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  332. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  333. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  334. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  335. package/package.json +15 -14
  336. package/schemas/WebpackOptions.check.js +1 -1
  337. package/schemas/WebpackOptions.json +1 -0
  338. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  339. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  340. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  341. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  343. package/types.d.ts +667 -347
@@ -14,6 +14,8 @@ const HarmonyCompatibilityDependency = require("../dependencies/HarmonyCompatibi
14
14
  /** @typedef {import("webpack-sources").Source} Source */
15
15
  /** @typedef {import("../DependenciesBlock")} DependenciesBlock */
16
16
  /** @typedef {import("../Dependency")} Dependency */
17
+ /** @typedef {import("../DependencyTemplate")} DependencyTemplate */
18
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
19
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
18
20
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
19
21
  /** @typedef {import("../Module")} Module */
@@ -25,8 +27,15 @@ const HarmonyCompatibilityDependency = require("../dependencies/HarmonyCompatibi
25
27
  // replace with newer constructs
26
28
 
27
29
  const deprecatedGetInitFragments = util.deprecate(
30
+ /**
31
+ * @param {DependencyTemplate} template template
32
+ * @param {Dependency} dependency dependency
33
+ * @param {DependencyTemplateContext} templateContext template context
34
+ * @returns {InitFragment<GenerateContext>[]} init fragments
35
+ */
28
36
  (template, dependency, templateContext) =>
29
- template.getInitFragments(dependency, templateContext),
37
+ /** @type {DependencyTemplate & { getInitFragments: function(Dependency, DependencyTemplateContext): InitFragment<GenerateContext>[] }} */
38
+ (template).getInitFragments(dependency, templateContext),
30
39
  "DependencyTemplate.getInitFragment is deprecated (use apply(dep, source, { initFragments }) instead)",
31
40
  "DEP_WEBPACK_JAVASCRIPT_GENERATOR_GET_INIT_FRAGMENTS"
32
41
  );
@@ -93,6 +102,7 @@ class JavascriptGenerator extends Generator {
93
102
  }
94
103
 
95
104
  const source = new ReplaceSource(originalSource);
105
+ /** @type {InitFragment<GenerateContext>[]} */
96
106
  const initFragments = [];
97
107
 
98
108
  this.sourceModule(module, initFragments, source, generateContext);
@@ -102,7 +112,7 @@ class JavascriptGenerator extends Generator {
102
112
 
103
113
  /**
104
114
  * @param {Module} module the module to generate
105
- * @param {InitFragment[]} initFragments mutable list of init fragments
115
+ * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
106
116
  * @param {ReplaceSource} source the current replace source which can be modified
107
117
  * @param {GenerateContext} generateContext the generateContext
108
118
  * @returns {void}
@@ -144,7 +154,7 @@ class JavascriptGenerator extends Generator {
144
154
  /**
145
155
  * @param {Module} module the module to generate
146
156
  * @param {DependenciesBlock} block the dependencies block which will be processed
147
- * @param {InitFragment[]} initFragments mutable list of init fragments
157
+ * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
148
158
  * @param {ReplaceSource} source the current replace source which can be modified
149
159
  * @param {GenerateContext} generateContext the generateContext
150
160
  * @returns {void}
@@ -174,7 +184,7 @@ class JavascriptGenerator extends Generator {
174
184
  /**
175
185
  * @param {Module} module the current module
176
186
  * @param {Dependency} dependency the dependency to generate
177
- * @param {InitFragment[]} initFragments mutable list of init fragments
187
+ * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
178
188
  * @param {ReplaceSource} source the current replace source which can be modified
179
189
  * @param {GenerateContext} generateContext the render context
180
190
  * @returns {void}
@@ -186,12 +196,14 @@ class JavascriptGenerator extends Generator {
186
196
  const template = generateContext.dependencyTemplates.get(constructor);
187
197
  if (!template) {
188
198
  throw new Error(
189
- "No template for dependency: " + dependency.constructor.name
199
+ `No template for dependency: ${dependency.constructor.name}`
190
200
  );
191
201
  }
192
202
 
203
+ /** @type {InitFragment<GenerateContext>[] | undefined} */
193
204
  let chunkInitFragments;
194
205
 
206
+ /** @type {DependencyTemplateContext} */
195
207
  const templateContext = {
196
208
  runtimeTemplate: generateContext.runtimeTemplate,
197
209
  dependencyTemplates: generateContext.dependencyTemplates,
@@ -201,11 +213,15 @@ class JavascriptGenerator extends Generator {
201
213
  runtime: generateContext.runtime,
202
214
  runtimeRequirements: generateContext.runtimeRequirements,
203
215
  concatenationScope: generateContext.concatenationScope,
204
- codeGenerationResults: generateContext.codeGenerationResults,
216
+ codeGenerationResults:
217
+ /** @type {NonNullable<GenerateContext["codeGenerationResults"]>} */
218
+ (generateContext.codeGenerationResults),
205
219
  initFragments,
206
220
  get chunkInitFragments() {
207
221
  if (!chunkInitFragments) {
208
- const data = generateContext.getData();
222
+ const data =
223
+ /** @type {NonNullable<GenerateContext["getData"]>} */
224
+ (generateContext.getData)();
209
225
  chunkInitFragments = data.get("chunkInitFragments");
210
226
  if (!chunkInitFragments) {
211
227
  chunkInitFragments = [];
@@ -38,17 +38,23 @@ const { intersectRuntime } = require("../util/runtime");
38
38
  const JavascriptGenerator = require("./JavascriptGenerator");
39
39
  const JavascriptParser = require("./JavascriptParser");
40
40
 
41
+ /** @typedef {import("eslint-scope").Scope} Scope */
41
42
  /** @typedef {import("eslint-scope").Variable} Variable */
42
43
  /** @typedef {import("webpack-sources").Source} Source */
44
+ /** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
43
45
  /** @typedef {import("../Chunk")} Chunk */
44
46
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
45
47
  /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
46
48
  /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
47
49
  /** @typedef {import("../Compiler")} Compiler */
48
50
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
51
+ /** @typedef {import("../Entrypoint")} Entrypoint */
49
52
  /** @typedef {import("../Module")} Module */
53
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
50
54
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
51
55
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
56
+ /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
57
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
52
58
  /** @typedef {import("../util/Hash")} Hash */
53
59
 
54
60
  /**
@@ -59,9 +65,9 @@ const JavascriptParser = require("./JavascriptParser");
59
65
  const chunkHasJs = (chunk, chunkGraph) => {
60
66
  if (chunkGraph.getNumberOfEntryModules(chunk) > 0) return true;
61
67
 
62
- return chunkGraph.getChunkModulesIterableBySourceType(chunk, "javascript")
63
- ? true
64
- : false;
68
+ return Boolean(
69
+ chunkGraph.getChunkModulesIterableBySourceType(chunk, "javascript")
70
+ );
65
71
  };
66
72
 
67
73
  /**
@@ -96,7 +102,7 @@ const printGeneratedCodeForStack = (module, code) => {
96
102
  * @property {ModuleGraph} moduleGraph the module graph
97
103
  * @property {ChunkGraph} chunkGraph the chunk graph
98
104
  * @property {CodeGenerationResults} codeGenerationResults results of code generation
99
- * @property {boolean} strictMode rendering in strict context
105
+ * @property {boolean | undefined} strictMode rendering in strict context
100
106
  */
101
107
 
102
108
  /**
@@ -108,7 +114,7 @@ const printGeneratedCodeForStack = (module, code) => {
108
114
  * @property {ChunkGraph} chunkGraph the chunk graph
109
115
  * @property {CodeGenerationResults} codeGenerationResults results of code generation
110
116
  * @property {string} hash hash to be used for render call
111
- * @property {boolean} strictMode rendering in strict context
117
+ * @property {boolean | undefined} strictMode rendering in strict context
112
118
  */
113
119
 
114
120
  /**
@@ -120,7 +126,7 @@ const printGeneratedCodeForStack = (module, code) => {
120
126
  * @property {ChunkGraph} chunkGraph the chunk graph
121
127
  * @property {CodeGenerationResults} codeGenerationResults results of code generation
122
128
  * @property {InitFragment<ChunkRenderContext>[]} chunkInitFragments init fragments for the chunk
123
- * @property {boolean} strictMode rendering in strict context
129
+ * @property {boolean | undefined} strictMode rendering in strict context
124
130
  */
125
131
 
126
132
  /**
@@ -158,6 +164,8 @@ const compilationHooksMap = new WeakMap();
158
164
 
159
165
  const PLUGIN_NAME = "JavascriptModulesPlugin";
160
166
 
167
+ /** @typedef {{ header: string[], beforeStartup: string[], startup: string[], afterStartup: string[], allowInlineStartup: boolean }} Bootstrap */
168
+
161
169
  class JavascriptModulesPlugin {
162
170
  /**
163
171
  * @param {Compilation} compilation the compilation
@@ -226,34 +234,22 @@ class JavascriptModulesPlugin {
226
234
  const hooks = JavascriptModulesPlugin.getCompilationHooks(compilation);
227
235
  normalModuleFactory.hooks.createParser
228
236
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)
229
- .tap(PLUGIN_NAME, options => {
230
- return new JavascriptParser("auto");
231
- });
237
+ .tap(PLUGIN_NAME, options => new JavascriptParser("auto"));
232
238
  normalModuleFactory.hooks.createParser
233
239
  .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
234
- .tap(PLUGIN_NAME, options => {
235
- return new JavascriptParser("script");
236
- });
240
+ .tap(PLUGIN_NAME, options => new JavascriptParser("script"));
237
241
  normalModuleFactory.hooks.createParser
238
242
  .for(JAVASCRIPT_MODULE_TYPE_ESM)
239
- .tap(PLUGIN_NAME, options => {
240
- return new JavascriptParser("module");
241
- });
243
+ .tap(PLUGIN_NAME, options => new JavascriptParser("module"));
242
244
  normalModuleFactory.hooks.createGenerator
243
245
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)
244
- .tap(PLUGIN_NAME, () => {
245
- return new JavascriptGenerator();
246
- });
246
+ .tap(PLUGIN_NAME, () => new JavascriptGenerator());
247
247
  normalModuleFactory.hooks.createGenerator
248
248
  .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
249
- .tap(PLUGIN_NAME, () => {
250
- return new JavascriptGenerator();
251
- });
249
+ .tap(PLUGIN_NAME, () => new JavascriptGenerator());
252
250
  normalModuleFactory.hooks.createGenerator
253
251
  .for(JAVASCRIPT_MODULE_TYPE_ESM)
254
- .tap(PLUGIN_NAME, () => {
255
- return new JavascriptGenerator();
256
- });
252
+ .tap(PLUGIN_NAME, () => new JavascriptGenerator());
257
253
  compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
258
254
  const {
259
255
  hash,
@@ -460,12 +456,13 @@ class JavascriptModulesPlugin {
460
456
  moduleObject.exports,
461
457
  context.__webpack_require__
462
458
  );
463
- } catch (e) {
464
- e.stack += printGeneratedCodeForStack(
459
+ } catch (err) {
460
+ /** @type {Error} */
461
+ (err).stack += printGeneratedCodeForStack(
465
462
  options.module,
466
463
  /** @type {string} */ (code)
467
464
  );
468
- throw e;
465
+ throw err;
469
466
  }
470
467
  });
471
468
  compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
@@ -482,26 +479,32 @@ class JavascriptModulesPlugin {
482
479
  }
483
480
  );
484
481
  try {
482
+ // eslint-disable-next-line no-useless-call
485
483
  fn.call(null, context.__webpack_require__);
486
- } catch (e) {
487
- e.stack += printGeneratedCodeForStack(options.module, code);
488
- throw e;
484
+ } catch (err) {
485
+ /** @type {Error} */
486
+ (err).stack += printGeneratedCodeForStack(options.module, code);
487
+ throw err;
489
488
  }
490
489
  });
491
490
  }
492
491
  );
493
492
  }
494
493
 
494
+ /**
495
+ * @param {Chunk} chunk chunk
496
+ * @param {OutputOptions} outputOptions output options
497
+ * @returns {TemplatePath} used filename template
498
+ */
495
499
  static getChunkFilenameTemplate(chunk, outputOptions) {
496
500
  if (chunk.filenameTemplate) {
497
501
  return chunk.filenameTemplate;
498
502
  } else if (chunk instanceof HotUpdateChunk) {
499
- return outputOptions.hotUpdateChunkFilename;
503
+ return /** @type {TemplatePath} */ (outputOptions.hotUpdateChunkFilename);
500
504
  } else if (chunk.canBeInitial()) {
501
- return outputOptions.filename;
502
- } else {
503
- return outputOptions.chunkFilename;
505
+ return /** @type {TemplatePath} */ (outputOptions.filename);
504
506
  }
507
+ return /** @type {TemplatePath} */ (outputOptions.chunkFilename);
505
508
  }
506
509
 
507
510
  /**
@@ -509,7 +512,7 @@ class JavascriptModulesPlugin {
509
512
  * @param {ChunkRenderContext} renderContext options object
510
513
  * @param {CompilationHooks} hooks hooks
511
514
  * @param {boolean} factory true: renders as factory method, false: pure module content
512
- * @returns {Source} the newly generated source from rendering
515
+ * @returns {Source | null} the newly generated source from rendering
513
516
  */
514
517
  renderModule(module, renderContext, hooks, factory) {
515
518
  const {
@@ -549,7 +552,9 @@ class JavascriptModulesPlugin {
549
552
  const needThisAsExports = runtimeRequirements.has(
550
553
  RuntimeGlobals.thisAsExports
551
554
  );
552
- const needStrict = module.buildInfo.strict && !strictMode;
555
+ const needStrict =
556
+ /** @type {BuildInfo} */
557
+ (module.buildInfo).strict && !strictMode;
553
558
  const cacheEntry = this._moduleFactoryCache.get(
554
559
  moduleSourcePostContent
555
560
  );
@@ -570,19 +575,19 @@ class JavascriptModulesPlugin {
570
575
  args.push(
571
576
  needModule
572
577
  ? module.moduleArgument
573
- : "__unused_webpack_" + module.moduleArgument
578
+ : `__unused_webpack_${module.moduleArgument}`
574
579
  );
575
580
  if (needExports || needRequire)
576
581
  args.push(
577
582
  needExports
578
583
  ? module.exportsArgument
579
- : "__unused_webpack_" + module.exportsArgument
584
+ : `__unused_webpack_${module.exportsArgument}`
580
585
  );
581
586
  if (needRequire) args.push(RuntimeGlobals.require);
582
587
  if (!needThisAsExports && runtimeTemplate.supportsArrowFunction()) {
583
- factorySource.add("/***/ ((" + args.join(", ") + ") => {\n\n");
588
+ factorySource.add(`/***/ ((${args.join(", ")}) => {\n\n`);
584
589
  } else {
585
- factorySource.add("/***/ (function(" + args.join(", ") + ") {\n\n");
590
+ factorySource.add(`/***/ (function(${args.join(", ")}) {\n\n`);
586
591
  }
587
592
  if (needStrict) {
588
593
  factorySource.add('"use strict";\n');
@@ -615,9 +620,9 @@ class JavascriptModulesPlugin {
615
620
  ),
616
621
  "JavascriptModulesPlugin.getCompilationHooks().renderModulePackage"
617
622
  );
618
- } catch (e) {
619
- e.module = module;
620
- throw e;
623
+ } catch (err) {
624
+ err.module = module;
625
+ throw err;
621
626
  }
622
627
  }
623
628
 
@@ -636,7 +641,10 @@ class JavascriptModulesPlugin {
636
641
  const allModules = modules ? Array.from(modules) : [];
637
642
  let strictHeader;
638
643
  let allStrict = renderContext.strictMode;
639
- if (!allStrict && allModules.every(m => m.buildInfo.strict)) {
644
+ if (
645
+ !allStrict &&
646
+ allModules.every(m => /** @type {BuildInfo} */ (m.buildInfo).strict)
647
+ ) {
640
648
  const strictBailout = hooks.strictRuntimeBailout.call(renderContext);
641
649
  strictHeader = strictBailout
642
650
  ? `// runtime can't be in strict mode because ${strictBailout}.\n`
@@ -718,7 +726,7 @@ class JavascriptModulesPlugin {
718
726
  inlinedModules = new Set(chunkGraph.getChunkEntryModulesIterable(chunk));
719
727
  }
720
728
 
721
- let source = new ConcatSource();
729
+ const source = new ConcatSource();
722
730
  let prefix;
723
731
  if (iife) {
724
732
  if (runtimeTemplate.supportsArrowFunction()) {
@@ -731,16 +739,20 @@ class JavascriptModulesPlugin {
731
739
  prefix = "/******/ ";
732
740
  }
733
741
  let allStrict = renderContext.strictMode;
734
- if (!allStrict && allModules.every(m => m.buildInfo.strict)) {
742
+ if (
743
+ !allStrict &&
744
+ allModules.every(m => /** @type {BuildInfo} */ (m.buildInfo).strict)
745
+ ) {
735
746
  const strictBailout = hooks.strictRuntimeBailout.call(renderContext);
736
747
  if (strictBailout) {
737
748
  source.add(
738
- prefix +
739
- `// runtime can't be in strict mode because ${strictBailout}.\n`
749
+ `${
750
+ prefix
751
+ }// runtime can't be in strict mode because ${strictBailout}.\n`
740
752
  );
741
753
  } else {
742
754
  allStrict = true;
743
- source.add(prefix + '"use strict";\n');
755
+ source.add(`${prefix}"use strict";\n`);
744
756
  }
745
757
  }
746
758
 
@@ -767,7 +779,7 @@ class JavascriptModulesPlugin {
767
779
  runtimeRequirements.has(RuntimeGlobals.moduleFactoriesAddOnly) ||
768
780
  runtimeRequirements.has(RuntimeGlobals.require)
769
781
  ) {
770
- source.add(prefix + "var __webpack_modules__ = (");
782
+ source.add(`${prefix}var __webpack_modules__ = (`);
771
783
  source.add(chunkModules || "{}");
772
784
  source.add(");\n");
773
785
  source.add(
@@ -776,7 +788,7 @@ class JavascriptModulesPlugin {
776
788
  }
777
789
 
778
790
  if (bootstrap.header.length > 0) {
779
- const header = Template.asString(bootstrap.header) + "\n";
791
+ const header = `${Template.asString(bootstrap.header)}\n`;
780
792
  source.add(
781
793
  new PrefixSource(
782
794
  prefix,
@@ -810,7 +822,7 @@ class JavascriptModulesPlugin {
810
822
  }
811
823
  if (inlinedModules) {
812
824
  if (bootstrap.beforeStartup.length > 0) {
813
- const beforeStartup = Template.asString(bootstrap.beforeStartup) + "\n";
825
+ const beforeStartup = `${Template.asString(bootstrap.beforeStartup)}\n`;
814
826
  source.add(
815
827
  new PrefixSource(
816
828
  prefix,
@@ -820,7 +832,7 @@ class JavascriptModulesPlugin {
820
832
  )
821
833
  );
822
834
  }
823
- const lastInlinedModule = last(inlinedModules);
835
+ const lastInlinedModule = /** @type {Module} */ (last(inlinedModules));
824
836
  const startupSource = new ConcatSource();
825
837
 
826
838
  if (runtimeRequirements.has(RuntimeGlobals.exports)) {
@@ -841,7 +853,8 @@ class JavascriptModulesPlugin {
841
853
  this.renderModule(m, chunkRenderContext, hooks, false);
842
854
 
843
855
  if (renderedModule) {
844
- const innerStrict = !allStrict && m.buildInfo.strict;
856
+ const innerStrict =
857
+ !allStrict && /** @type {BuildInfo} */ (m.buildInfo).strict;
845
858
  const runtimeRequirements = chunkGraph.getModuleRuntimeRequirements(
846
859
  m,
847
860
  chunk.runtime
@@ -849,7 +862,7 @@ class JavascriptModulesPlugin {
849
862
  const exports = runtimeRequirements.has(RuntimeGlobals.exports);
850
863
  const webpackExports =
851
864
  exports && m.exportsArgument === RuntimeGlobals.exports;
852
- let iife = innerStrict
865
+ const iife = innerStrict
853
866
  ? "it need to be in strict mode."
854
867
  : inlinedModules.size > 1
855
868
  ? // TODO check globals and top-level declarations of other entries and chunk modules
@@ -899,7 +912,7 @@ class JavascriptModulesPlugin {
899
912
  })
900
913
  );
901
914
  if (bootstrap.afterStartup.length > 0) {
902
- const afterStartup = Template.asString(bootstrap.afterStartup) + "\n";
915
+ const afterStartup = `${Template.asString(bootstrap.afterStartup)}\n`;
903
916
  source.add(
904
917
  new PrefixSource(
905
918
  prefix,
@@ -910,9 +923,10 @@ class JavascriptModulesPlugin {
910
923
  );
911
924
  }
912
925
  } else {
913
- const lastEntryModule = last(
914
- chunkGraph.getChunkEntryModulesIterable(chunk)
915
- );
926
+ const lastEntryModule =
927
+ /** @type {Module} */
928
+ (last(chunkGraph.getChunkEntryModulesIterable(chunk)));
929
+ /** @type {function(string[], string): Source} */
916
930
  const toSource = useSourceMap
917
931
  ? (content, name) =>
918
932
  new OriginalSource(Template.asString(content), name)
@@ -992,7 +1006,8 @@ class JavascriptModulesPlugin {
992
1006
  */
993
1007
  updateHashWithBootstrap(hash, renderContext, hooks) {
994
1008
  const bootstrap = this.renderBootstrap(renderContext, hooks);
995
- for (const key of Object.keys(bootstrap)) {
1009
+ for (const _k of Object.keys(bootstrap)) {
1010
+ const key = /** @type {keyof Bootstrap} */ (_k);
996
1011
  hash.update(key);
997
1012
  if (Array.isArray(bootstrap[key])) {
998
1013
  for (const line of bootstrap[key]) {
@@ -1007,7 +1022,7 @@ class JavascriptModulesPlugin {
1007
1022
  /**
1008
1023
  * @param {RenderBootstrapContext} renderContext options object
1009
1024
  * @param {CompilationHooks} hooks hooks
1010
- * @returns {{ header: string[], beforeStartup: string[], startup: string[], afterStartup: string[], allowInlineStartup: boolean }} the generated source of the bootstrap code
1025
+ * @returns {Bootstrap} the generated source of the bootstrap code
1011
1026
  */
1012
1027
  renderBootstrap(renderContext, hooks) {
1013
1028
  const {
@@ -1047,7 +1062,7 @@ class JavascriptModulesPlugin {
1047
1062
  allowInlineStartup: true
1048
1063
  };
1049
1064
 
1050
- let { header: buf, startup, beforeStartup, afterStartup } = result;
1065
+ const { header: buf, startup, beforeStartup, afterStartup } = result;
1051
1066
 
1052
1067
  if (result.allowInlineStartup && moduleFactories) {
1053
1068
  startup.push(
@@ -1117,7 +1132,9 @@ class JavascriptModulesPlugin {
1117
1132
  entryModule,
1118
1133
  entrypoint
1119
1134
  ] of chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)) {
1120
- const chunks = entrypoint.chunks.filter(c => c !== chunk);
1135
+ const chunks =
1136
+ /** @type {Entrypoint} */
1137
+ (entrypoint).chunks.filter(c => c !== chunk);
1121
1138
  if (result.allowInlineStartup && chunks.length > 0) {
1122
1139
  buf2.push(
1123
1140
  "// This entry module depends on other loaded chunks and execution need to be delayed"
@@ -1414,7 +1431,9 @@ class JavascriptModulesPlugin {
1414
1431
  ) {
1415
1432
  const { runtimeTemplate } = renderContext;
1416
1433
 
1417
- /** @type {Map<Module, { source: Source, ast: any, variables: Set<Variable>, usedInNonInlined: Set<Variable>}>} */
1434
+ /** @typedef {{ source: Source, ast: any, variables: Set<Variable>, usedInNonInlined: Set<Variable>}} InlinedModulesInfo */
1435
+
1436
+ /** @type {Map<Module, InlinedModulesInfo>} */
1418
1437
  const inlinedModulesToInfo = new Map();
1419
1438
  /** @type {Set<string>} */
1420
1439
  const nonInlinedModuleThroughIdentifiers = new Set();
@@ -1427,7 +1446,7 @@ class JavascriptModulesPlugin {
1427
1446
  m,
1428
1447
  chunkRenderContext,
1429
1448
  hooks,
1430
- isInlinedModule ? false : true
1449
+ !isInlinedModule
1431
1450
  );
1432
1451
 
1433
1452
  if (!moduleSource) continue;
@@ -1443,7 +1462,7 @@ class JavascriptModulesPlugin {
1443
1462
  ignoreEval: true
1444
1463
  });
1445
1464
 
1446
- const globalScope = scopeManager.acquire(ast);
1465
+ const globalScope = /** @type {Scope} */ (scopeManager.acquire(ast));
1447
1466
  if (inlinedModules && inlinedModules.has(m)) {
1448
1467
  const moduleScope = globalScope.childScopes[0];
1449
1468
  inlinedModulesToInfo.set(m, {
@@ -1476,7 +1495,10 @@ class JavascriptModulesPlugin {
1476
1495
  }
1477
1496
 
1478
1497
  const usedNames = new Set(
1479
- Array.from(inlinedModulesToInfo.get(m).variables).map(v => v.name)
1498
+ Array.from(
1499
+ /** @type {InlinedModulesInfo} */
1500
+ (inlinedModulesToInfo.get(m)).variables
1501
+ ).map(v => v.name)
1480
1502
  );
1481
1503
 
1482
1504
  for (const variable of usedInNonInlined) {
@@ -1492,7 +1514,7 @@ class JavascriptModulesPlugin {
1492
1514
  );
1493
1515
  usedNames.add(newName);
1494
1516
  for (const identifier of allIdentifiers) {
1495
- const r = identifier.range;
1517
+ const r = /** @type {Range} */ (identifier.range);
1496
1518
  const path = getPathInAst(ast, identifier);
1497
1519
  if (path && path.length > 1) {
1498
1520
  const maybeProperty =
@@ -1530,7 +1552,7 @@ class JavascriptModulesPlugin {
1530
1552
  );
1531
1553
  const splittedInfo = extraInfo.split("/");
1532
1554
  while (splittedInfo.length) {
1533
- name = splittedInfo.pop() + (name ? "_" + name : "");
1555
+ name = splittedInfo.pop() + (name ? `_${name}` : "");
1534
1556
  const nameIdent = Template.toIdentifier(name);
1535
1557
  if (!usedName.has(nameIdent)) {
1536
1558
  return nameIdent;