webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -8,14 +8,14 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const ContainerEntryModule = require("./ContainerEntryModule");
10
10
 
11
+ /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
11
12
  /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
13
13
  /** @typedef {import("./ContainerEntryDependency")} ContainerEntryDependency */
14
14
 
15
15
  module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
18
+ * @param {ModuleFactoryCallback} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create({ dependencies: [dependency] }, callback) {
@@ -14,7 +14,6 @@ const { parseOptions } = require("./options");
14
14
 
15
15
  /** @typedef {import("../../declarations/plugins/container/ContainerPlugin").ContainerPluginOptions} ContainerPluginOptions */
16
16
  /** @typedef {import("../Compiler")} Compiler */
17
- /** @typedef {import("./ContainerEntryModule").ExposeOptions} ExposeOptions */
18
17
  /** @typedef {import("./ContainerEntryModule").ExposesList} ExposesList */
19
18
 
20
19
  const getModuleFederationPlugin = memoize(() =>
@@ -22,7 +21,7 @@ const getModuleFederationPlugin = memoize(() =>
22
21
  );
23
22
 
24
23
  const validate = createSchemaValidation(
25
- require("../../schemas/plugins/container/ContainerPlugin.check.js"),
24
+ require("../../schemas/plugins/container/ContainerPlugin.check"),
26
25
  () => require("../../schemas/plugins/container/ContainerPlugin.json"),
27
26
  {
28
27
  name: "Container Plugin",
@@ -51,11 +50,11 @@ class ContainerPlugin {
51
50
  exposes: /** @type {ExposesList} */ (
52
51
  parseOptions(
53
52
  options.exposes,
54
- item => ({
53
+ (item) => ({
55
54
  import: Array.isArray(item) ? item : [item],
56
55
  name: undefined
57
56
  }),
58
- item => ({
57
+ (item) => ({
59
58
  import: Array.isArray(item.import) ? item.import : [item.import],
60
59
  name: item.name || undefined
61
60
  })
@@ -83,7 +82,7 @@ class ContainerPlugin {
83
82
  const dep = new ContainerEntryDependency(name, exposes, shareScope);
84
83
  dep.loc = { name };
85
84
  compilation.addEntry(
86
- /** @type {string} */ (compilation.options.context),
85
+ compilation.options.context,
87
86
  dep,
88
87
  {
89
88
  name,
@@ -91,7 +90,7 @@ class ContainerPlugin {
91
90
  runtime,
92
91
  library
93
92
  },
94
- error => {
93
+ (error) => {
95
94
  if (error) return callback(error);
96
95
  hooks.addContainerEntryDependency.call(dep);
97
96
  callback();
@@ -17,11 +17,10 @@ const RemoteToExternalDependency = require("./RemoteToExternalDependency");
17
17
  const { parseOptions } = require("./options");
18
18
 
19
19
  /** @typedef {import("../../declarations/plugins/container/ContainerReferencePlugin").ContainerReferencePluginOptions} ContainerReferencePluginOptions */
20
- /** @typedef {import("../../declarations/plugins/container/ContainerReferencePlugin").RemotesConfig} RemotesConfig */
21
20
  /** @typedef {import("../Compiler")} Compiler */
22
21
 
23
22
  const validate = createSchemaValidation(
24
- require("../../schemas/plugins/container/ContainerReferencePlugin.check.js"),
23
+ require("../../schemas/plugins/container/ContainerReferencePlugin.check"),
25
24
  () =>
26
25
  require("../../schemas/plugins/container/ContainerReferencePlugin.json"),
27
26
  {
@@ -31,6 +30,7 @@ const validate = createSchemaValidation(
31
30
  );
32
31
 
33
32
  const slashCode = "/".charCodeAt(0);
33
+ const PLUGIN_NAME = "ContainerReferencePlugin";
34
34
 
35
35
  class ContainerReferencePlugin {
36
36
  /**
@@ -42,11 +42,11 @@ class ContainerReferencePlugin {
42
42
  this._remoteType = options.remoteType;
43
43
  this._remotes = parseOptions(
44
44
  options.remotes,
45
- item => ({
45
+ (item) => ({
46
46
  external: Array.isArray(item) ? item : [item],
47
47
  shareScope: options.shareScope || "default"
48
48
  }),
49
- item => ({
49
+ (item) => ({
50
50
  external: Array.isArray(item.external)
51
51
  ? item.external
52
52
  : [item.external],
@@ -79,7 +79,7 @@ class ContainerReferencePlugin {
79
79
  new ExternalsPlugin(remoteType, remoteExternals).apply(compiler);
80
80
 
81
81
  compiler.hooks.compilation.tap(
82
- "ContainerReferencePlugin",
82
+ PLUGIN_NAME,
83
83
  (compilation, { normalModuleFactory }) => {
84
84
  compilation.dependencyFactories.set(
85
85
  RemoteToExternalDependency,
@@ -96,37 +96,34 @@ class ContainerReferencePlugin {
96
96
  new FallbackModuleFactory()
97
97
  );
98
98
 
99
- normalModuleFactory.hooks.factorize.tap(
100
- "ContainerReferencePlugin",
101
- data => {
102
- if (!data.request.includes("!")) {
103
- for (const [key, config] of remotes) {
104
- if (
105
- data.request.startsWith(`${key}`) &&
106
- (data.request.length === key.length ||
107
- data.request.charCodeAt(key.length) === slashCode)
108
- ) {
109
- return new RemoteModule(
110
- data.request,
111
- config.external.map((external, i) =>
112
- external.startsWith("internal ")
113
- ? external.slice(9)
114
- : `webpack/container/reference/${key}${
115
- i ? `/fallback-${i}` : ""
116
- }`
117
- ),
118
- `.${data.request.slice(key.length)}`,
119
- config.shareScope
120
- );
121
- }
99
+ normalModuleFactory.hooks.factorize.tap(PLUGIN_NAME, (data) => {
100
+ if (!data.request.includes("!")) {
101
+ for (const [key, config] of remotes) {
102
+ if (
103
+ data.request.startsWith(`${key}`) &&
104
+ (data.request.length === key.length ||
105
+ data.request.charCodeAt(key.length) === slashCode)
106
+ ) {
107
+ return new RemoteModule(
108
+ data.request,
109
+ config.external.map((external, i) =>
110
+ external.startsWith("internal ")
111
+ ? external.slice(9)
112
+ : `webpack/container/reference/${key}${
113
+ i ? `/fallback-${i}` : ""
114
+ }`
115
+ ),
116
+ `.${data.request.slice(key.length)}`,
117
+ config.shareScope
118
+ );
122
119
  }
123
120
  }
124
121
  }
125
- );
122
+ });
126
123
 
127
124
  compilation.hooks.runtimeRequirementInTree
128
125
  .for(RuntimeGlobals.ensureChunkHandlers)
129
- .tap("ContainerReferencePlugin", (chunk, set) => {
126
+ .tap(PLUGIN_NAME, (chunk, set) => {
130
127
  set.add(RuntimeGlobals.module);
131
128
  set.add(RuntimeGlobals.moduleFactoriesAddOnly);
132
129
  set.add(RuntimeGlobals.hasOwnProperty);
@@ -8,12 +8,13 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
+ /** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
11
12
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
14
 
14
15
  class FallbackDependency extends Dependency {
15
16
  /**
16
- * @param {string[]} requests requests
17
+ * @param {ExternalRequests} requests requests
17
18
  */
18
19
  constructor(requests) {
19
20
  super();
@@ -7,36 +7,40 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("../Module");
10
- const { JS_TYPES } = require("../ModuleSourceTypesConstants");
10
+ const {
11
+ JAVASCRIPT_TYPE,
12
+ JAVASCRIPT_TYPES
13
+ } = require("../ModuleSourceTypeConstants");
11
14
  const { WEBPACK_MODULE_TYPE_FALLBACK } = require("../ModuleTypeConstants");
12
15
  const RuntimeGlobals = require("../RuntimeGlobals");
13
16
  const Template = require("../Template");
14
17
  const makeSerializable = require("../util/makeSerializable");
15
18
  const FallbackItemDependency = require("./FallbackItemDependency");
16
19
 
17
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
20
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
18
21
  /** @typedef {import("../Chunk")} Chunk */
19
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
21
22
  /** @typedef {import("../Compilation")} Compilation */
23
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
22
24
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
23
25
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
24
26
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
27
+ /** @typedef {import("../Module").LibIdent} LibIdent */
28
+ /** @typedef {import("../Module").NameForCondition} NameForCondition */
29
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
25
30
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
26
31
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
27
32
  /** @typedef {import("../RequestShortener")} RequestShortener */
28
33
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
29
- /** @typedef {import("../WebpackError")} WebpackError */
30
34
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
31
35
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
- /** @typedef {import("../util/Hash")} Hash */
33
36
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
37
+ /** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
34
38
 
35
39
  const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
36
40
 
37
41
  class FallbackModule extends Module {
38
42
  /**
39
- * @param {string[]} requests list of requests to choose one
43
+ * @param {ExternalRequests} requests list of requests to choose one
40
44
  */
41
45
  constructor(requests) {
42
46
  super(WEBPACK_MODULE_TYPE_FALLBACK);
@@ -61,7 +65,7 @@ class FallbackModule extends Module {
61
65
 
62
66
  /**
63
67
  * @param {LibIdentOptions} options options
64
- * @returns {string | null} an identifier for library inclusion
68
+ * @returns {LibIdent | null} an identifier for library inclusion
65
69
  */
66
70
  libIdent(options) {
67
71
  return `${this.layer ? `(${this.layer})/` : ""}webpack/container/fallback/${
@@ -80,7 +84,7 @@ class FallbackModule extends Module {
80
84
 
81
85
  /**
82
86
  * @param {NeedBuildContext} context context info
83
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
87
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
84
88
  * @returns {void}
85
89
  */
86
90
  needBuild(context, callback) {
@@ -92,7 +96,7 @@ class FallbackModule extends Module {
92
96
  * @param {Compilation} compilation the compilation
93
97
  * @param {ResolverWithOptions} resolver the resolver
94
98
  * @param {InputFileSystem} fs the file system
95
- * @param {function(WebpackError=): void} callback callback function
99
+ * @param {BuildCallback} callback callback function
96
100
  * @returns {void}
97
101
  */
98
102
  build(options, compilation, resolver, fs, callback) {
@@ -102,8 +106,9 @@ class FallbackModule extends Module {
102
106
  };
103
107
 
104
108
  this.clearDependenciesAndBlocks();
105
- for (const request of this.requests)
109
+ for (const request of this.requests) {
106
110
  this.addDependency(new FallbackItemDependency(request));
111
+ }
107
112
 
108
113
  callback();
109
114
  }
@@ -120,7 +125,7 @@ class FallbackModule extends Module {
120
125
  * @returns {SourceTypes} types available (do not mutate)
121
126
  */
122
127
  getSourceTypes() {
123
- return JS_TYPES;
128
+ return JAVASCRIPT_TYPES;
124
129
  }
125
130
 
126
131
  /**
@@ -128,7 +133,7 @@ class FallbackModule extends Module {
128
133
  * @returns {CodeGenerationResult} result
129
134
  */
130
135
  codeGeneration({ runtimeTemplate, moduleGraph, chunkGraph }) {
131
- const ids = this.dependencies.map(dep =>
136
+ const ids = this.dependencies.map((dep) =>
132
137
  chunkGraph.getModuleId(/** @type {Module} */ (moduleGraph.getModule(dep)))
133
138
  );
134
139
  const code = Template.asString([
@@ -154,7 +159,7 @@ class FallbackModule extends Module {
154
159
  "module.exports = loop();"
155
160
  ]);
156
161
  const sources = new Map();
157
- sources.set("javascript", new RawSource(code));
162
+ sources.set(JAVASCRIPT_TYPE, new RawSource(code));
158
163
  return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS };
159
164
  }
160
165
 
@@ -8,14 +8,14 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const FallbackModule = require("./FallbackModule");
10
10
 
11
+ /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
11
12
  /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
13
13
  /** @typedef {import("./FallbackDependency")} FallbackDependency */
14
14
 
15
15
  module.exports = class FallbackModuleFactory extends ModuleFactory {
16
16
  /**
17
17
  * @param {ModuleFactoryCreateData} data data object
18
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
18
+ * @param {ModuleFactoryCallback} callback callback
19
19
  * @returns {void}
20
20
  */
21
21
  create({ dependencies: [dependency] }, callback) {
@@ -31,19 +31,19 @@ class HoistContainerReferences {
31
31
  * @param {Compiler} compiler The webpack compiler instance.
32
32
  */
33
33
  apply(compiler) {
34
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
34
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
35
35
  const hooks =
36
36
  getModuleFederationPlugin().getCompilationHooks(compilation);
37
37
  const depsToTrace = new Set();
38
38
  const entryExternalsToHoist = new Set();
39
- hooks.addContainerEntryDependency.tap(PLUGIN_NAME, dep => {
39
+ hooks.addContainerEntryDependency.tap(PLUGIN_NAME, (dep) => {
40
40
  depsToTrace.add(dep);
41
41
  });
42
- hooks.addFederationRuntimeDependency.tap(PLUGIN_NAME, dep => {
42
+ hooks.addFederationRuntimeDependency.tap(PLUGIN_NAME, (dep) => {
43
43
  depsToTrace.add(dep);
44
44
  });
45
45
 
46
- compilation.hooks.addEntry.tap(PLUGIN_NAME, entryDep => {
46
+ compilation.hooks.addEntry.tap(PLUGIN_NAME, (entryDep) => {
47
47
  if (entryDep.type === "entry") {
48
48
  entryExternalsToHoist.add(entryDep);
49
49
  }
@@ -56,7 +56,7 @@ class HoistContainerReferences {
56
56
  // advanced stage is where SplitChunksPlugin runs.
57
57
  stage: STAGE_ADVANCED + 1
58
58
  },
59
- chunks => {
59
+ (_chunks) => {
60
60
  this.hoistModulesInChunks(
61
61
  compilation,
62
62
  depsToTrace,
@@ -92,7 +92,7 @@ class HoistContainerReferences {
92
92
  const runtimes = new Set();
93
93
 
94
94
  for (const runtimeSpec of containerRuntimes) {
95
- forEachRuntime(runtimeSpec, runtimeKey => {
95
+ forEachRuntime(runtimeSpec, (runtimeKey) => {
96
96
  if (runtimeKey) {
97
97
  runtimes.add(runtimeKey);
98
98
  }
@@ -139,7 +139,7 @@ class HoistContainerReferences {
139
139
  const runtimes = new Set();
140
140
 
141
141
  for (const runtimeSpec of containerRuntimes) {
142
- forEachRuntime(runtimeSpec, runtimeKey => {
142
+ forEachRuntime(runtimeSpec, (runtimeKey) => {
143
143
  if (runtimeKey) {
144
144
  runtimes.add(runtimeKey);
145
145
  }
@@ -6,7 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const { SyncHook } = require("tapable");
9
- const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check.js");
9
+ const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check");
10
10
  const Compilation = require("../Compilation");
11
11
  const SharePlugin = require("../sharing/SharePlugin");
12
12
  const createSchemaValidation = require("../util/create-schema-validation");
@@ -16,7 +16,6 @@ const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
16
16
 
17
17
  /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ExternalsType} ExternalsType */
18
18
  /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ModuleFederationPluginOptions} ModuleFederationPluginOptions */
19
- /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").Shared} Shared */
20
19
  /** @typedef {import("../Compiler")} Compiler */
21
20
  /** @typedef {import("../Dependency")} Dependency */
22
21
 
@@ -27,7 +26,7 @@ const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
27
26
  */
28
27
 
29
28
  const validate = createSchemaValidation(
30
- require("../../schemas/plugins/container/ModuleFederationPlugin.check.js"),
29
+ require("../../schemas/plugins/container/ModuleFederationPlugin.check"),
31
30
  () => require("../../schemas/plugins/container/ModuleFederationPlugin.json"),
32
31
  {
33
32
  name: "Module Federation Plugin",
@@ -37,6 +36,7 @@ const validate = createSchemaValidation(
37
36
 
38
37
  /** @type {WeakMap<Compilation, CompilationHooks>} */
39
38
  const compilationHooksMap = new WeakMap();
39
+ const PLUGIN_NAME = "ModuleFederationPlugin";
40
40
 
41
41
  class ModuleFederationPlugin {
42
42
  /**
@@ -89,7 +89,7 @@ class ModuleFederationPlugin {
89
89
  ) {
90
90
  compiler.options.output.enabledLibraryTypes.push(library.type);
91
91
  }
92
- compiler.hooks.afterPlugins.tap("ModuleFederationPlugin", () => {
92
+ compiler.hooks.afterPlugins.tap(PLUGIN_NAME, () => {
93
93
  if (
94
94
  options.exposes &&
95
95
  (Array.isArray(options.exposes)
@@ -7,38 +7,38 @@
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
9
  const Module = require("../Module");
10
- const {
11
- REMOTE_AND_SHARE_INIT_TYPES
12
- } = require("../ModuleSourceTypesConstants");
10
+ const { REMOTE_AND_SHARE_INIT_TYPES } = require("../ModuleSourceTypeConstants");
13
11
  const { WEBPACK_MODULE_TYPE_REMOTE } = require("../ModuleTypeConstants");
14
12
  const RuntimeGlobals = require("../RuntimeGlobals");
15
13
  const makeSerializable = require("../util/makeSerializable");
16
14
  const FallbackDependency = require("./FallbackDependency");
17
15
  const RemoteToExternalDependency = require("./RemoteToExternalDependency");
18
16
 
19
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
20
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
21
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
17
+ /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
22
18
  /** @typedef {import("../Compilation")} Compilation */
19
+ /** @typedef {import("../Module").BuildCallback} BuildCallback */
23
20
  /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
24
21
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
25
22
  /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
23
+ /** @typedef {import("../Module").LibIdent} LibIdent */
24
+ /** @typedef {import("../Module").NameForCondition} NameForCondition */
25
+ /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
26
26
  /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
27
27
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
28
28
  /** @typedef {import("../RequestShortener")} RequestShortener */
29
29
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
30
- /** @typedef {import("../WebpackError")} WebpackError */
31
30
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
32
31
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
33
- /** @typedef {import("../util/Hash")} Hash */
34
32
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
35
33
 
36
34
  const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
37
35
 
36
+ /** @typedef {string[]} ExternalRequests */
37
+
38
38
  class RemoteModule extends Module {
39
39
  /**
40
40
  * @param {string} request request string
41
- * @param {string[]} externalRequests list of external requests to containers
41
+ * @param {ExternalRequests} externalRequests list of external requests to containers
42
42
  * @param {string} internalRequest name of exposed module in container
43
43
  * @param {string} shareScope the used share scope name
44
44
  */
@@ -70,7 +70,7 @@ class RemoteModule extends Module {
70
70
 
71
71
  /**
72
72
  * @param {LibIdentOptions} options options
73
- * @returns {string | null} an identifier for library inclusion
73
+ * @returns {LibIdent | null} an identifier for library inclusion
74
74
  */
75
75
  libIdent(options) {
76
76
  return `${this.layer ? `(${this.layer})/` : ""}webpack/container/remote/${
@@ -80,7 +80,7 @@ class RemoteModule extends Module {
80
80
 
81
81
  /**
82
82
  * @param {NeedBuildContext} context context info
83
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
83
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
84
84
  * @returns {void}
85
85
  */
86
86
  needBuild(context, callback) {
@@ -92,7 +92,7 @@ class RemoteModule extends Module {
92
92
  * @param {Compilation} compilation the compilation
93
93
  * @param {ResolverWithOptions} resolver the resolver
94
94
  * @param {InputFileSystem} fs the file system
95
- * @param {function(WebpackError=): void} callback callback function
95
+ * @param {BuildCallback} callback callback function
96
96
  * @returns {void}
97
97
  */
98
98
  build(options, compilation, resolver, fs, callback) {
@@ -129,7 +129,7 @@ class RemoteModule extends Module {
129
129
  }
130
130
 
131
131
  /**
132
- * @returns {string | null} absolute path which should be used for condition matching (usually the resource path)
132
+ * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
133
133
  */
134
134
  nameForCondition() {
135
135
  return this.request;
@@ -139,7 +139,7 @@ class RemoteModule extends Module {
139
139
  * @param {CodeGenerationContext} context context for code generation
140
140
  * @returns {CodeGenerationResult} result
141
141
  */
142
- codeGeneration({ runtimeTemplate, moduleGraph, chunkGraph }) {
142
+ codeGeneration({ moduleGraph, chunkGraph }) {
143
143
  const module = moduleGraph.getModule(this.dependencies[0]);
144
144
  const id = module && chunkGraph.getModuleId(module);
145
145
  const sources = new Map();
@@ -28,9 +28,9 @@ class RemoteRuntimeModule extends RuntimeModule {
28
28
  const compilation = /** @type {Compilation} */ (this.compilation);
29
29
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
30
30
  const { runtimeTemplate, moduleGraph } = compilation;
31
- /** @type {Record<ChunkId, (string | number)[]>} */
31
+ /** @type {Record<ChunkId, ModuleId[]>} */
32
32
  const chunkToRemotesMapping = {};
33
- /** @type {Record<ModuleId, [string, string, string | number | null]>} */
33
+ /** @type {Record<ModuleId, [string, string, ModuleId]>} */
34
34
  const idToExternalAndNameMapping = {};
35
35
  for (const chunk of /** @type {Chunk} */ (
36
36
  this.chunk
@@ -19,16 +19,16 @@
19
19
  * @template T
20
20
  * @template N
21
21
  * @param {ContainerOptionsFormat<T>} options options passed by the user
22
- * @param {function(string | string[], string) : N} normalizeSimple normalize a simple item
23
- * @param {function(T, string) : N} normalizeOptions normalize a complex item
24
- * @param {function(string, N): void} fn processing function
22
+ * @param {(item: string | string[], itemOrKey: string) => N} normalizeSimple normalize a simple item
23
+ * @param {(value: T, key: string) => N} normalizeOptions normalize a complex item
24
+ * @param {(item: string, normalized: N) => void} fn processing function
25
25
  * @returns {void}
26
26
  */
27
27
  const process = (options, normalizeSimple, normalizeOptions, fn) => {
28
28
  /**
29
29
  * @param {(string | Item<T>)[]} items items
30
30
  */
31
- const array = items => {
31
+ const array = (items) => {
32
32
  for (const item of items) {
33
33
  if (typeof item === "string") {
34
34
  fn(item, normalizeSimple(item, item));
@@ -42,7 +42,7 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
42
42
  /**
43
43
  * @param {Item<T>} obj an object
44
44
  */
45
- const object = obj => {
45
+ const object = (obj) => {
46
46
  for (const [key, value] of Object.entries(obj)) {
47
47
  if (typeof value === "string" || Array.isArray(value)) {
48
48
  fn(key, normalizeSimple(value, key));
@@ -66,8 +66,8 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
66
66
  * @template T
67
67
  * @template R
68
68
  * @param {ContainerOptionsFormat<T>} options options passed by the user
69
- * @param {function(string | string[], string) : R} normalizeSimple normalize a simple item
70
- * @param {function(T, string) : R} normalizeOptions normalize a complex item
69
+ * @param {(item: string | string[], itemOrKey: string) => R} normalizeSimple normalize a simple item
70
+ * @param {(value: T, key: string) => R} normalizeOptions normalize a complex item
71
71
  * @returns {[string, R][]} parsed options
72
72
  */
73
73
  const parseOptions = (options, normalizeSimple, normalizeOptions) => {
@@ -90,8 +90,8 @@ const scope = (scope, options) => {
90
90
  const obj = {};
91
91
  process(
92
92
  options,
93
- item => /** @type {string | string[] | T} */ (item),
94
- item => /** @type {string | string[] | T} */ (item),
93
+ (item) => /** @type {string | string[] | T} */ (item),
94
+ (item) => /** @type {string | string[] | T} */ (item),
95
95
  (key, value) => {
96
96
  obj[
97
97
  key.startsWith("./") ? `${scope}${key.slice(1)}` : `${scope}/${key}`