webpack 5.92.1 → 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 (350) 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 +36 -21
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +76 -69
  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 +132 -70
  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/UseStrictPlugin.js +8 -1
  95. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  96. package/lib/WatchIgnorePlugin.js +26 -9
  97. package/lib/Watching.js +10 -5
  98. package/lib/WebpackOptionsApply.js +89 -62
  99. package/lib/asset/AssetGenerator.js +107 -42
  100. package/lib/asset/AssetModulesPlugin.js +29 -23
  101. package/lib/asset/AssetSourceGenerator.js +2 -7
  102. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  103. package/lib/buildChunkGraph.js +14 -19
  104. package/lib/cache/IdleFileCachePlugin.js +4 -4
  105. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  106. package/lib/cache/PackFileCacheStrategy.js +51 -50
  107. package/lib/cache/ResolverCachePlugin.js +6 -6
  108. package/lib/cache/mergeEtags.js +16 -21
  109. package/lib/cli.js +148 -104
  110. package/lib/config/browserslistTargetHandler.js +16 -13
  111. package/lib/config/defaults.js +31 -28
  112. package/lib/config/normalization.js +335 -344
  113. package/lib/config/target.js +42 -52
  114. package/lib/container/ContainerEntryModule.js +2 -2
  115. package/lib/container/ContainerPlugin.js +1 -1
  116. package/lib/container/RemoteRuntimeModule.js +11 -8
  117. package/lib/container/options.js +18 -4
  118. package/lib/css/CssExportsGenerator.js +39 -40
  119. package/lib/css/CssGenerator.js +11 -14
  120. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  121. package/lib/css/CssModulesPlugin.js +127 -47
  122. package/lib/css/CssParser.js +20 -18
  123. package/lib/css/walkCssTokens.js +80 -95
  124. package/lib/debug/ProfilingPlugin.js +19 -20
  125. package/lib/dependencies/AMDDefineDependency.js +1 -1
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  127. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  128. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  129. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  130. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  131. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  132. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  133. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  134. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  135. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  136. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  137. package/lib/dependencies/ConstDependency.js +1 -1
  138. package/lib/dependencies/ContextDependency.js +1 -1
  139. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  140. package/lib/dependencies/ContextElementDependency.js +2 -2
  141. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  142. package/lib/dependencies/CssExportDependency.js +72 -9
  143. package/lib/dependencies/CssImportDependency.js +0 -2
  144. package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
  145. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  146. package/lib/dependencies/CssUrlDependency.js +4 -5
  147. package/lib/dependencies/DynamicExports.js +5 -5
  148. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  149. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  150. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  151. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  152. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  153. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  154. package/lib/dependencies/HarmonyExports.js +2 -2
  155. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  156. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  157. package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
  158. package/lib/dependencies/ImportDependency.js +1 -1
  159. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  160. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  161. package/lib/dependencies/ImportParserPlugin.js +39 -44
  162. package/lib/dependencies/JsonExportsDependency.js +22 -18
  163. package/lib/dependencies/LoaderPlugin.js +47 -36
  164. package/lib/dependencies/LocalModule.js +1 -1
  165. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  166. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  167. package/lib/dependencies/ProvidedDependency.js +1 -1
  168. package/lib/dependencies/PureExpressionDependency.js +6 -6
  169. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  170. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  171. package/lib/dependencies/SystemPlugin.js +1 -1
  172. package/lib/dependencies/URLDependency.js +3 -3
  173. package/lib/dependencies/URLPlugin.js +66 -12
  174. package/lib/dependencies/WorkerPlugin.js +25 -24
  175. package/lib/dependencies/processExportInfo.js +3 -1
  176. package/lib/electron/ElectronTargetPlugin.js +1 -0
  177. package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
  178. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  179. package/lib/formatLocation.js +1 -2
  180. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  181. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  182. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  183. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  184. package/lib/hmr/lazyCompilationBackend.js +64 -40
  185. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  186. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  187. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  188. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  189. package/lib/ids/IdHelpers.js +29 -39
  190. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  191. package/lib/index.js +1 -5
  192. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
  193. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  194. package/lib/javascript/ChunkHelpers.js +1 -1
  195. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
  196. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  197. package/lib/javascript/JavascriptGenerator.js +23 -7
  198. package/lib/javascript/JavascriptModulesPlugin.js +97 -70
  199. package/lib/javascript/JavascriptParser.js +179 -200
  200. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  201. package/lib/javascript/StartupHelpers.js +41 -13
  202. package/lib/json/JsonGenerator.js +7 -13
  203. package/lib/json/JsonModulesPlugin.js +1 -4
  204. package/lib/json/JsonParser.js +5 -3
  205. package/lib/library/AmdLibraryPlugin.js +12 -16
  206. package/lib/library/AssignLibraryPlugin.js +9 -11
  207. package/lib/library/EnableLibraryPlugin.js +25 -15
  208. package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
  209. package/lib/library/JsonpLibraryPlugin.js +2 -1
  210. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  211. package/lib/library/ModuleLibraryPlugin.js +2 -1
  212. package/lib/library/SystemLibraryPlugin.js +2 -1
  213. package/lib/library/UmdLibraryPlugin.js +66 -92
  214. package/lib/logging/Logger.js +32 -4
  215. package/lib/logging/createConsoleLogger.js +12 -13
  216. package/lib/logging/runtime.js +7 -8
  217. package/lib/logging/truncateArgs.js +5 -8
  218. package/lib/node/NodeWatchFileSystem.js +3 -18
  219. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  221. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  222. package/lib/node/nodeConsole.js +22 -22
  223. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  224. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  225. package/lib/optimize/ConcatenatedModule.js +144 -61
  226. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  227. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  228. package/lib/optimize/InnerGraph.js +17 -17
  229. package/lib/optimize/InnerGraphPlugin.js +8 -7
  230. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  231. package/lib/optimize/MangleExportsPlugin.js +1 -0
  232. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  233. package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
  234. package/lib/optimize/RealContentHashPlugin.js +7 -10
  235. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  236. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  237. package/lib/optimize/SplitChunksPlugin.js +34 -30
  238. package/lib/performance/SizeLimitsPlugin.js +2 -2
  239. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
  240. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  241. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  242. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  243. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  244. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  245. package/lib/rules/RuleSetCompiler.js +41 -22
  246. package/lib/rules/UseEffectRulePlugin.js +36 -32
  247. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  248. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  249. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  250. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  251. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  253. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  254. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  255. package/lib/schemes/DataUriPlugin.js +1 -1
  256. package/lib/schemes/HttpUriPlugin.js +241 -126
  257. package/lib/serialization/BinaryMiddleware.js +44 -28
  258. package/lib/serialization/DateObjectSerializer.js +1 -0
  259. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  260. package/lib/serialization/FileMiddleware.js +154 -106
  261. package/lib/serialization/MapObjectSerializer.js +2 -1
  262. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  263. package/lib/serialization/ObjectMiddleware.js +52 -56
  264. package/lib/serialization/PlainObjectSerializer.js +32 -6
  265. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  266. package/lib/serialization/Serializer.js +4 -5
  267. package/lib/serialization/SerializerMiddleware.js +6 -6
  268. package/lib/serialization/SetObjectSerializer.js +2 -1
  269. package/lib/sharing/ConsumeSharedModule.js +19 -14
  270. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  271. package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
  272. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  273. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  274. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  275. package/lib/sharing/utils.js +15 -27
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  277. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  279. package/lib/stats/StatsFactory.js +127 -56
  280. package/lib/stats/StatsPrinter.js +75 -44
  281. package/lib/util/ArrayHelpers.js +8 -4
  282. package/lib/util/ArrayQueue.js +1 -1
  283. package/lib/util/AsyncQueue.js +31 -12
  284. package/lib/util/IterableHelpers.js +3 -4
  285. package/lib/util/LazyBucketSortedSet.js +60 -44
  286. package/lib/util/LazySet.js +1 -0
  287. package/lib/util/MapHelpers.js +1 -3
  288. package/lib/util/ParallelismFactorCalculator.js +1 -1
  289. package/lib/util/Queue.js +1 -1
  290. package/lib/util/Semaphore.js +4 -7
  291. package/lib/util/SetHelpers.js +5 -5
  292. package/lib/util/SortableSet.js +4 -3
  293. package/lib/util/StackedCacheMap.js +4 -6
  294. package/lib/util/StackedMap.js +1 -3
  295. package/lib/util/StringXor.js +0 -5
  296. package/lib/util/TupleQueue.js +1 -1
  297. package/lib/util/TupleSet.js +15 -5
  298. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  299. package/lib/util/WeakTupleMap.js +19 -21
  300. package/lib/util/binarySearchBounds.js +5 -12
  301. package/lib/util/chainedImports.js +1 -1
  302. package/lib/util/cleverMerge.js +21 -19
  303. package/lib/util/comparators.js +57 -52
  304. package/lib/util/compileBooleanMatcher.js +3 -6
  305. package/lib/util/conventions.js +10 -13
  306. package/lib/util/createHash.js +9 -6
  307. package/lib/util/deprecation.js +22 -12
  308. package/lib/util/deterministicGrouping.js +19 -26
  309. package/lib/util/findGraphRoots.js +2 -2
  310. package/lib/util/fs.js +31 -31
  311. package/lib/util/hash/md4.js +2 -2
  312. package/lib/util/hash/wasm-hash.js +7 -7
  313. package/lib/util/hash/xxhash64.js +2 -2
  314. package/lib/util/identifier.js +81 -59
  315. package/lib/util/memoize.js +8 -10
  316. package/lib/util/mergeScope.js +6 -9
  317. package/lib/util/nonNumericOnlyHash.js +2 -2
  318. package/lib/util/numberHash.js +1 -6
  319. package/lib/util/objectToMap.js +0 -1
  320. package/lib/util/propertyAccess.js +2 -5
  321. package/lib/util/propertyName.js +1 -3
  322. package/lib/util/registerExternalSerializer.js +1 -1
  323. package/lib/util/runtime.js +103 -113
  324. package/lib/util/semver.js +29 -27
  325. package/lib/util/serialization.js +16 -1
  326. package/lib/util/smartGrouping.js +5 -5
  327. package/lib/util/source.js +1 -1
  328. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  329. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  330. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  331. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  332. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  333. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  334. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  336. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  337. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  338. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  339. package/package.json +17 -16
  340. package/schemas/WebpackOptions.check.js +1 -1
  341. package/schemas/WebpackOptions.json +17 -0
  342. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  343. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  344. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  345. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  346. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  347. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  348. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  349. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  350. package/types.d.ts +682 -347
@@ -43,7 +43,7 @@ const avoidNumber = str => {
43
43
  } else if (firstChar > 57) {
44
44
  return str;
45
45
  }
46
- if (str === +str + "") {
46
+ if (str === String(Number(str))) {
47
47
  return `_${str}`;
48
48
  }
49
49
  return str;
@@ -53,12 +53,9 @@ const avoidNumber = str => {
53
53
  * @param {string} request the request
54
54
  * @returns {string} id representation
55
55
  */
56
- const requestToId = request => {
57
- return request
58
- .replace(/^(\.\.?\/)+/, "")
59
- .replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
60
- };
61
- exports.requestToId = requestToId;
56
+ const requestToId = request =>
57
+ request.replace(/^(\.\.?\/)+/, "").replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
58
+ module.exports.requestToId = requestToId;
62
59
 
63
60
  /**
64
61
  * @param {string} string the string
@@ -91,7 +88,7 @@ const getShortModuleName = (module, context, associatedObjectForCache) => {
91
88
  );
92
89
  return "";
93
90
  };
94
- exports.getShortModuleName = getShortModuleName;
91
+ module.exports.getShortModuleName = getShortModuleName;
95
92
 
96
93
  /**
97
94
  * @param {string} shortName the short name
@@ -111,7 +108,7 @@ const getLongModuleName = (
111
108
  const fullName = getFullModuleName(module, context, associatedObjectForCache);
112
109
  return `${shortName}?${getHash(fullName, 4, hashFunction)}`;
113
110
  };
114
- exports.getLongModuleName = getLongModuleName;
111
+ module.exports.getLongModuleName = getLongModuleName;
115
112
 
116
113
  /**
117
114
  * @param {Module} module the module
@@ -119,14 +116,9 @@ exports.getLongModuleName = getLongModuleName;
119
116
  * @param {object=} associatedObjectForCache an object to which the cache will be attached
120
117
  * @returns {string} full module name
121
118
  */
122
- const getFullModuleName = (module, context, associatedObjectForCache) => {
123
- return makePathsRelative(
124
- context,
125
- module.identifier(),
126
- associatedObjectForCache
127
- );
128
- };
129
- exports.getFullModuleName = getFullModuleName;
119
+ const getFullModuleName = (module, context, associatedObjectForCache) =>
120
+ makePathsRelative(context, module.identifier(), associatedObjectForCache);
121
+ module.exports.getFullModuleName = getFullModuleName;
130
122
 
131
123
  /**
132
124
  * @param {Chunk} chunk the chunk
@@ -156,7 +148,7 @@ const getShortChunkName = (
156
148
  .join(delimiter);
157
149
  return shortenLongString(chunkName, delimiter, hashFunction);
158
150
  };
159
- exports.getShortChunkName = getShortChunkName;
151
+ module.exports.getShortChunkName = getShortChunkName;
160
152
 
161
153
  /**
162
154
  * @param {Chunk} chunk the chunk
@@ -191,7 +183,7 @@ const getLongChunkName = (
191
183
  .join(delimiter);
192
184
  return shortenLongString(chunkName, delimiter, hashFunction);
193
185
  };
194
- exports.getLongChunkName = getLongChunkName;
186
+ module.exports.getLongChunkName = getLongChunkName;
195
187
 
196
188
  /**
197
189
  * @param {Chunk} chunk the chunk
@@ -213,7 +205,7 @@ const getFullChunkName = (
213
205
  );
214
206
  return fullModuleNames.join();
215
207
  };
216
- exports.getFullChunkName = getFullChunkName;
208
+ module.exports.getFullChunkName = getFullChunkName;
217
209
 
218
210
  /**
219
211
  * @template K
@@ -246,7 +238,7 @@ const getUsedModuleIdsAndModules = (compilation, filter) => {
246
238
  const usedIds = new Set();
247
239
  if (compilation.usedModuleIds) {
248
240
  for (const id of compilation.usedModuleIds) {
249
- usedIds.add(id + "");
241
+ usedIds.add(String(id));
250
242
  }
251
243
  }
252
244
 
@@ -254,20 +246,18 @@ const getUsedModuleIdsAndModules = (compilation, filter) => {
254
246
  if (!module.needId) continue;
255
247
  const moduleId = chunkGraph.getModuleId(module);
256
248
  if (moduleId !== null) {
257
- usedIds.add(moduleId + "");
258
- } else {
259
- if (
260
- (!filter || filter(module)) &&
261
- chunkGraph.getNumberOfModuleChunks(module) !== 0
262
- ) {
263
- modules.push(module);
264
- }
249
+ usedIds.add(String(moduleId));
250
+ } else if (
251
+ (!filter || filter(module)) &&
252
+ chunkGraph.getNumberOfModuleChunks(module) !== 0
253
+ ) {
254
+ modules.push(module);
265
255
  }
266
256
  }
267
257
 
268
258
  return [usedIds, modules];
269
259
  };
270
- exports.getUsedModuleIdsAndModules = getUsedModuleIdsAndModules;
260
+ module.exports.getUsedModuleIdsAndModules = getUsedModuleIdsAndModules;
271
261
 
272
262
  /**
273
263
  * @param {Compilation} compilation the compilation
@@ -278,20 +268,20 @@ const getUsedChunkIds = compilation => {
278
268
  const usedIds = new Set();
279
269
  if (compilation.usedChunkIds) {
280
270
  for (const id of compilation.usedChunkIds) {
281
- usedIds.add(id + "");
271
+ usedIds.add(String(id));
282
272
  }
283
273
  }
284
274
 
285
275
  for (const chunk of compilation.chunks) {
286
276
  const chunkId = chunk.id;
287
277
  if (chunkId !== null) {
288
- usedIds.add(chunkId + "");
278
+ usedIds.add(String(chunkId));
289
279
  }
290
280
  }
291
281
 
292
282
  return usedIds;
293
283
  };
294
- exports.getUsedChunkIds = getUsedChunkIds;
284
+ module.exports.getUsedChunkIds = getUsedChunkIds;
295
285
 
296
286
  /**
297
287
  * @template T
@@ -359,7 +349,7 @@ const assignNames = (
359
349
  unnamedItems.sort(comparator);
360
350
  return unnamedItems;
361
351
  };
362
- exports.assignNames = assignNames;
352
+ module.exports.assignNames = assignNames;
363
353
 
364
354
  /**
365
355
  * @template T
@@ -413,7 +403,7 @@ const assignDeterministicIds = (
413
403
  } while (!assignId(item, id));
414
404
  }
415
405
  };
416
- exports.assignDeterministicIds = assignDeterministicIds;
406
+ module.exports.assignDeterministicIds = assignDeterministicIds;
417
407
 
418
408
  /**
419
409
  * @param {Set<string>} usedIds used ids
@@ -432,7 +422,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
432
422
  */
433
423
  assignId = module => {
434
424
  if (chunkGraph.getModuleId(module) === null) {
435
- while (usedIds.has(nextId + "")) nextId++;
425
+ while (usedIds.has(String(nextId))) nextId++;
436
426
  chunkGraph.setModuleId(module, nextId++);
437
427
  }
438
428
  };
@@ -450,7 +440,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
450
440
  assignId(module);
451
441
  }
452
442
  };
453
- exports.assignAscendingModuleIds = assignAscendingModuleIds;
443
+ module.exports.assignAscendingModuleIds = assignAscendingModuleIds;
454
444
 
455
445
  /**
456
446
  * @param {Iterable<Chunk>} chunks the chunks
@@ -464,7 +454,7 @@ const assignAscendingChunkIds = (chunks, compilation) => {
464
454
  if (usedIds.size > 0) {
465
455
  for (const chunk of chunks) {
466
456
  if (chunk.id === null) {
467
- while (usedIds.has(nextId + "")) nextId++;
457
+ while (usedIds.has(String(nextId))) nextId++;
468
458
  chunk.id = nextId;
469
459
  chunk.ids = [nextId];
470
460
  nextId++;
@@ -480,4 +470,4 @@ const assignAscendingChunkIds = (chunks, compilation) => {
480
470
  }
481
471
  }
482
472
  };
483
- exports.assignAscendingChunkIds = assignAscendingChunkIds;
473
+ module.exports.assignAscendingChunkIds = assignAscendingChunkIds;
@@ -10,6 +10,7 @@ const { getUsedModuleIdsAndModules } = require("./IdHelpers");
10
10
 
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
  /** @typedef {import("../Module")} Module */
13
+ /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
13
14
 
14
15
  const plugin = "SyncModuleIdsPlugin";
15
16
 
@@ -42,7 +43,9 @@ class SyncModuleIdsPlugin {
42
43
  let dataChanged = false;
43
44
  if (this._read) {
44
45
  compiler.hooks.readRecords.tapAsync(plugin, callback => {
45
- const fs = compiler.intermediateFileSystem;
46
+ const fs =
47
+ /** @type {IntermediateFileSystem} */
48
+ (compiler.intermediateFileSystem);
46
49
  fs.readFile(this._path, (err, buffer) => {
47
50
  if (err) {
48
51
  if (err.code !== "ENOENT") {
@@ -69,7 +72,9 @@ class SyncModuleIdsPlugin {
69
72
  for (const [key, value] of sorted) {
70
73
  json[key] = value;
71
74
  }
72
- const fs = compiler.intermediateFileSystem;
75
+ const fs =
76
+ /** @type {IntermediateFileSystem} */
77
+ (compiler.intermediateFileSystem);
73
78
  fs.writeFile(this._path, JSON.stringify(json), callback);
74
79
  });
75
80
  }
package/lib/index.js CHANGED
@@ -70,11 +70,7 @@ const memoize = require("./util/memoize");
70
70
  */
71
71
  const lazyFunction = factory => {
72
72
  const fac = memoize(factory);
73
- const f = /** @type {any} */ (
74
- (...args) => {
75
- return fac()(...args);
76
- }
77
- );
73
+ const f = /** @type {any} */ ((...args) => fac()(...args));
78
74
  return /** @type {T} */ (f);
79
75
  };
80
76
 
@@ -33,6 +33,7 @@ class ArrayPushCallbackChunkFormatPlugin {
33
33
  if (chunk.hasRuntime()) return;
34
34
  if (chunkGraph.getNumberOfEntryModules(chunk) > 0) {
35
35
  set.add(RuntimeGlobals.onChunksLoaded);
36
+ set.add(RuntimeGlobals.exports);
36
37
  set.add(RuntimeGlobals.require);
37
38
  }
38
39
  set.add(RuntimeGlobals.chunkCallback);
@@ -83,10 +84,11 @@ class ArrayPushCallbackChunkFormatPlugin {
83
84
  );
84
85
  if (runtimeModules.length > 0 || entries.length > 0) {
85
86
  const runtime = new ConcatSource(
86
- (runtimeTemplate.supportsArrowFunction()
87
- ? `${RuntimeGlobals.require} =>`
88
- : `function(${RuntimeGlobals.require})`) +
89
- " { // webpackRuntimeModules\n"
87
+ `${
88
+ runtimeTemplate.supportsArrowFunction()
89
+ ? `${RuntimeGlobals.require} =>`
90
+ : `function(${RuntimeGlobals.require})`
91
+ } { // webpackRuntimeModules\n`
90
92
  );
91
93
  if (runtimeModules.length > 0) {
92
94
  runtime.add(
@@ -184,7 +184,7 @@ class BasicEvaluatedExpression {
184
184
  asCompileTimeValue() {
185
185
  switch (this.type) {
186
186
  case TypeUndefined:
187
- return undefined;
187
+ return;
188
188
  case TypeNull:
189
189
  return null;
190
190
  case TypeString:
@@ -252,7 +252,6 @@ class BasicEvaluatedExpression {
252
252
  const str = this.asString();
253
253
  if (typeof str === "string") return str !== "";
254
254
  }
255
- return undefined;
256
255
  }
257
256
 
258
257
  /**
@@ -275,8 +274,6 @@ class BasicEvaluatedExpression {
275
274
  if (this.isConstArray()) return false;
276
275
  if (this.isTemplateString()) return false;
277
276
  if (this.isRegExp()) return false;
278
-
279
- return undefined;
280
277
  }
281
278
 
282
279
  /**
@@ -292,12 +289,12 @@ class BasicEvaluatedExpression {
292
289
  if (this.isBigInt()) return `${this.bigint}`;
293
290
  if (this.isRegExp()) return `${this.regExp}`;
294
291
  if (this.isArray()) {
295
- let array = [];
292
+ const array = [];
296
293
  for (const item of /** @type {BasicEvaluatedExpression[]} */ (
297
294
  this.items
298
295
  )) {
299
296
  const itemStr = item.asString();
300
- if (itemStr === undefined) return undefined;
297
+ if (itemStr === undefined) return;
301
298
  array.push(itemStr);
302
299
  }
303
300
  return `${array}`;
@@ -309,12 +306,11 @@ class BasicEvaluatedExpression {
309
306
  this.parts
310
307
  )) {
311
308
  const partStr = part.asString();
312
- if (partStr === undefined) return undefined;
309
+ if (partStr === undefined) return;
313
310
  str += partStr;
314
311
  }
315
312
  return str;
316
313
  }
317
- return undefined;
318
314
  }
319
315
 
320
316
  /**
@@ -390,7 +386,6 @@ class BasicEvaluatedExpression {
390
386
 
391
387
  /**
392
388
  * Set's the value of this expression to a particular identifier and its members.
393
- *
394
389
  * @param {string | VariableInfoInterface} identifier identifier to set
395
390
  * @param {string | VariableInfoInterface} rootInfo root info
396
391
  * @param {() => string[]} getMembers members
@@ -417,7 +412,6 @@ class BasicEvaluatedExpression {
417
412
 
418
413
  /**
419
414
  * Wraps an array of expressions with a prefix and postfix expression.
420
- *
421
415
  * @param {BasicEvaluatedExpression | null | undefined} prefix Expression to be added before the innerExpressions
422
416
  * @param {BasicEvaluatedExpression | null | undefined} postfix Expression to be added after the innerExpressions
423
417
  * @param {BasicEvaluatedExpression[] | undefined} innerExpressions Expressions to be wrapped
@@ -434,7 +428,6 @@ class BasicEvaluatedExpression {
434
428
 
435
429
  /**
436
430
  * Stores the options of a conditional expression.
437
- *
438
431
  * @param {BasicEvaluatedExpression[]} options optional (consequent/alternate) expressions to be set
439
432
  * @returns {this} this
440
433
  */
@@ -447,7 +440,6 @@ class BasicEvaluatedExpression {
447
440
 
448
441
  /**
449
442
  * Adds options to a conditional expression.
450
- *
451
443
  * @param {BasicEvaluatedExpression[]} options optional (consequent/alternate) expressions to be added
452
444
  * @returns {this} this
453
445
  */
@@ -465,7 +457,6 @@ class BasicEvaluatedExpression {
465
457
 
466
458
  /**
467
459
  * Set's the value of this expression to an array of expressions.
468
- *
469
460
  * @param {BasicEvaluatedExpression[]} items expressions to set
470
461
  * @returns {this} this
471
462
  */
@@ -478,7 +469,6 @@ class BasicEvaluatedExpression {
478
469
 
479
470
  /**
480
471
  * Set's the value of this expression to an array of strings.
481
- *
482
472
  * @param {string[]} array array to set
483
473
  * @returns {this} this
484
474
  */
@@ -492,7 +482,6 @@ class BasicEvaluatedExpression {
492
482
  /**
493
483
  * Set's the value of this expression to a processed/unprocessed template string. Used
494
484
  * for evaluating TemplateLiteral expressions in the JavaScript Parser.
495
- *
496
485
  * @param {BasicEvaluatedExpression[]} quasis template string quasis
497
486
  * @param {BasicEvaluatedExpression[]} parts template string parts
498
487
  * @param {"cooked" | "raw"} kind template string kind
@@ -522,7 +511,6 @@ class BasicEvaluatedExpression {
522
511
 
523
512
  /**
524
513
  * Set's the value of the expression to nullish.
525
- *
526
514
  * @param {boolean} value true, if the expression is nullish
527
515
  * @returns {this} this
528
516
  */
@@ -536,7 +524,6 @@ class BasicEvaluatedExpression {
536
524
 
537
525
  /**
538
526
  * Set's the range for the expression.
539
- *
540
527
  * @param {[number, number]} range range to set
541
528
  * @returns {this} this
542
529
  */
@@ -547,7 +534,6 @@ class BasicEvaluatedExpression {
547
534
 
548
535
  /**
549
536
  * Set whether or not the expression has side effects.
550
- *
551
537
  * @param {boolean} sideEffects true, if the expression has side effects
552
538
  * @returns {this} this
553
539
  */
@@ -558,7 +544,6 @@ class BasicEvaluatedExpression {
558
544
 
559
545
  /**
560
546
  * Set the expression node for the expression.
561
- *
562
547
  * @param {Node | undefined} expression expression
563
548
  * @returns {this} this
564
549
  */
@@ -30,4 +30,4 @@ const getAllChunks = (entrypoint, excludedChunk1, excludedChunk2) => {
30
30
  }
31
31
  return chunks;
32
32
  };
33
- exports.getAllChunks = getAllChunks;
33
+ module.exports.getAllChunks = getAllChunks;
@@ -8,6 +8,7 @@
8
8
  const { ConcatSource, RawSource } = require("webpack-sources");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const Template = require("../Template");
11
+ const { getUndoPath } = require("../util/identifier");
11
12
  const {
12
13
  getChunkFilenameTemplate,
13
14
  getCompilationHooks
@@ -50,7 +51,7 @@ class CommonJsChunkFormatPlugin {
50
51
  const source = new ConcatSource();
51
52
  source.add(`exports.id = ${JSON.stringify(chunk.id)};\n`);
52
53
  source.add(`exports.ids = ${JSON.stringify(chunk.ids)};\n`);
53
- source.add(`exports.modules = `);
54
+ source.add("exports.modules = ");
54
55
  source.add(modules);
55
56
  source.add(";\n");
56
57
  const runtimeModules =
@@ -79,11 +80,13 @@ class CommonJsChunkFormatPlugin {
79
80
  contentHashType: "javascript"
80
81
  }
81
82
  )
83
+ .replace(/^\/+/g, "")
82
84
  .split("/");
83
85
  const runtimeOutputName = compilation
84
86
  .getPath(
85
87
  getChunkFilenameTemplate(
86
- runtimeChunk,
88
+ /** @type {Chunk} */
89
+ (runtimeChunk),
87
90
  compilation.outputOptions
88
91
  ),
89
92
  {
@@ -91,26 +94,22 @@ class CommonJsChunkFormatPlugin {
91
94
  contentHashType: "javascript"
92
95
  }
93
96
  )
97
+ .replace(/^\/+/g, "")
94
98
  .split("/");
95
99
 
96
- // remove filename, we only need the directory
97
- currentOutputName.pop();
98
-
99
100
  // remove common parts
100
101
  while (
101
- currentOutputName.length > 0 &&
102
- runtimeOutputName.length > 0 &&
102
+ currentOutputName.length > 1 &&
103
+ runtimeOutputName.length > 1 &&
103
104
  currentOutputName[0] === runtimeOutputName[0]
104
105
  ) {
105
106
  currentOutputName.shift();
106
107
  runtimeOutputName.shift();
107
108
  }
108
-
109
+ const last = runtimeOutputName.join("/");
109
110
  // create final path
110
111
  const runtimePath =
111
- (currentOutputName.length > 0
112
- ? "../".repeat(currentOutputName.length)
113
- : "./") + runtimeOutputName.join("/");
112
+ getUndoPath(currentOutputName.join("/"), last, true) + last;
114
113
 
115
114
  const entrySource = new ConcatSource();
116
115
  entrySource.add(
@@ -51,10 +51,11 @@ class EnableChunkLoadingPlugin {
51
51
  throw new Error(
52
52
  `Chunk loading type "${type}" is not enabled. ` +
53
53
  "EnableChunkLoadingPlugin need to be used to enable this type of chunk loading. " +
54
- 'This usually happens through the "output.enabledChunkLoadingTypes" option. ' +
55
- 'If you are using a function as entry which sets "chunkLoading", you need to add all potential chunk loading types to "output.enabledChunkLoadingTypes". ' +
56
- "These types are enabled: " +
57
- Array.from(getEnabledTypes(compiler)).join(", ")
54
+ `This usually happens through the "output.enabledChunkLoadingTypes" option. ` +
55
+ `If you are using a function as entry which sets "chunkLoading", you need to add all potential chunk loading types to "output.enabledChunkLoadingTypes". ` +
56
+ `These types are enabled: ${Array.from(
57
+ getEnabledTypes(compiler)
58
+ ).join(", ")}`
58
59
  );
59
60
  }
60
61
  }
@@ -85,7 +86,7 @@ class EnableChunkLoadingPlugin {
85
86
  break;
86
87
  }
87
88
  case "require": {
88
- //@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
89
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
89
90
  const CommonJsChunkLoadingPlugin = require("../node/CommonJsChunkLoadingPlugin");
90
91
  new CommonJsChunkLoadingPlugin({
91
92
  asyncChunkLoading: false
@@ -93,7 +94,7 @@ class EnableChunkLoadingPlugin {
93
94
  break;
94
95
  }
95
96
  case "async-node": {
96
- //@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
97
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
97
98
  const CommonJsChunkLoadingPlugin = require("../node/CommonJsChunkLoadingPlugin");
98
99
  new CommonJsChunkLoadingPlugin({
99
100
  asyncChunkLoading: true
@@ -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 = [];