@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -6,7 +6,6 @@
6
6
  "use strict";
7
7
 
8
8
  const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
9
- const { concatComparators, keepOriginalOrder } = require("../util/comparators");
10
9
  const smartGrouping = require("../util/smartGrouping");
11
10
 
12
11
  /** @typedef {import("../Chunk")} Chunk */
@@ -18,10 +17,11 @@ const smartGrouping = require("../util/smartGrouping");
18
17
  /** @typedef {import("../Module")} Module */
19
18
  /** @typedef {import("../ModuleGraph").ModuleProfile} ModuleProfile */
20
19
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
21
- /** @typedef {import("../WebpackError")} WebpackError */
20
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
22
21
  /** @typedef {import("../util/comparators").Comparator<EXPECTED_ANY>} Comparator */
23
22
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
24
23
  /**
24
+ * Defines the group config type used by this module.
25
25
  * @template T, R
26
26
  * @typedef {import("../util/smartGrouping").GroupConfig<T, R>} GroupConfig
27
27
  */
@@ -42,6 +42,7 @@ const smartGrouping = require("../util/smartGrouping");
42
42
  /** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
43
43
 
44
44
  /**
45
+ * Defines the known stats factory context type used by this module.
45
46
  * @typedef {object} KnownStatsFactoryContext
46
47
  * @property {string} type
47
48
  * @property {Compilation} compilation
@@ -59,12 +60,14 @@ const smartGrouping = require("../util/smartGrouping");
59
60
  // StatsLogging StatsLoggingEntry
60
61
 
61
62
  /**
63
+ * Defines the stats object type used by this module.
62
64
  * @template T
63
65
  * @template F
64
66
  * @typedef {T extends Compilation ? StatsCompilation : T extends ChunkGroupInfoWithName ? StatsChunkGroup : T extends Chunk ? StatsChunk : T extends OriginRecord ? StatsChunkOrigin : T extends Module ? StatsModule : T extends ModuleGraphConnection ? StatsModuleReason : T extends Asset ? StatsAsset : T extends ModuleTrace ? StatsModuleTraceItem : T extends Dependency ? StatsModuleTraceDependency : T extends Error ? StatsError : T extends ModuleProfile ? StatsProfile : F} StatsObject
65
67
  */
66
68
 
67
69
  /**
70
+ * Defines the created object type used by this module.
68
71
  * @template T
69
72
  * @template F
70
73
  * @typedef {T extends ChunkGroupInfoWithName[] ? Record<string, StatsObject<ChunkGroupInfoWithName, F>> : T extends (infer V)[] ? StatsObject<V, F>[] : StatsObject<T, F>} CreatedObject
@@ -76,6 +79,7 @@ const smartGrouping = require("../util/smartGrouping");
76
79
  /** @typedef {EXPECTED_ANY} Result */
77
80
 
78
81
  /**
82
+ * Defines the stats factory hooks type used by this module.
79
83
  * @typedef {object} StatsFactoryHooks
80
84
  * @property {HookMap<SyncBailHook<[ObjectForExtract, FactoryData, StatsFactoryContext], void>>} extract
81
85
  * @property {HookMap<SyncBailHook<[FactoryDataItem, StatsFactoryContext, number, number], boolean | void>>} filter
@@ -91,6 +95,7 @@ const smartGrouping = require("../util/smartGrouping");
91
95
  */
92
96
 
93
97
  /**
98
+ * Represents the stats factory runtime component.
94
99
  * @template T
95
100
  * @typedef {Map<string, T[]>} Caches
96
101
  */
@@ -125,14 +130,16 @@ class StatsFactory {
125
130
  });
126
131
  const hooks = this.hooks;
127
132
  this._caches =
128
- /** @type {{ [Key in keyof StatsFactoryHooks]: Map<string, SyncBailHook<EXPECTED_ANY, EXPECTED_ANY>[]> }} */ ({});
133
+ /** @type {{ [Key in keyof StatsFactoryHooks]: StatsFactoryHooks[Key] extends HookMap<infer H> ? Map<string, H[]> : never }} */ ({});
129
134
  for (const key of Object.keys(hooks)) {
130
135
  this._caches[/** @type {keyof StatsFactoryHooks} */ (key)] = new Map();
131
136
  }
137
+ /** @type {boolean} */
132
138
  this._inCreate = false;
133
139
  }
134
140
 
135
141
  /**
142
+ * Get all level hooks.
136
143
  * @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
137
144
  * @template {HM extends HookMap<infer H> ? H : never} H
138
145
  * @param {HM} hookMap hook map
@@ -159,9 +166,10 @@ class StatsFactory {
159
166
  }
160
167
 
161
168
  /**
169
+ * Returns hook.
162
170
  * @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
163
171
  * @template {HM extends HookMap<infer H> ? H : never} H
164
- * @template {H extends import("tapable").Hook<EXPECTED_ANY, infer R> ? R : never} R
172
+ * @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
165
173
  * @param {HM} hookMap hook map
166
174
  * @param {Caches<H>} cache cache
167
175
  * @param {string} type type
@@ -177,14 +185,16 @@ class StatsFactory {
177
185
  }
178
186
 
179
187
  /**
188
+ * For each level waterfall.
180
189
  * @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
181
190
  * @template {HM extends HookMap<infer H> ? H : never} H
191
+ * @template [D=EXPECTED_ANY]
182
192
  * @param {HM} hookMap hook map
183
193
  * @param {Caches<H>} cache cache
184
194
  * @param {string} type type
185
- * @param {FactoryData} data data
186
- * @param {(hook: H, factoryData: FactoryData) => FactoryData} fn fn
187
- * @returns {FactoryData} data
195
+ * @param {D} data data
196
+ * @param {(hook: H, data: D) => D} fn fn
197
+ * @returns {D} data
188
198
  * @private
189
199
  */
190
200
  _forEachLevelWaterfall(hookMap, cache, type, data, fn) {
@@ -195,16 +205,17 @@ class StatsFactory {
195
205
  }
196
206
 
197
207
  /**
208
+ * For each level filter.
198
209
  * @template {StatsFactoryHooks[keyof StatsFactoryHooks]} T
199
210
  * @template {T extends HookMap<infer H> ? H : never} H
200
- * @template {H extends import("tapable").Hook<EXPECTED_ANY, infer R> ? R : never} R
211
+ * @template [D=EXPECTED_ANY]
201
212
  * @param {T} hookMap hook map
202
213
  * @param {Caches<H>} cache cache
203
214
  * @param {string} type type
204
- * @param {FactoryData[]} items items
205
- * @param {(hook: H, item: R, idx: number, i: number) => R | undefined} fn fn
215
+ * @param {D[]} items items
216
+ * @param {(hook: H, item: D, idx: number, i: number) => boolean | void} fn fn
206
217
  * @param {boolean} forceClone force clone
207
- * @returns {R[]} result for each level
218
+ * @returns {D[]} result for each level
208
219
  * @private
209
220
  */
210
221
  _forEachLevelFilter(hookMap, cache, type, items, fn, forceClone) {
@@ -225,6 +236,7 @@ class StatsFactory {
225
236
  }
226
237
 
227
238
  /**
239
+ * Returns created object.
228
240
  * @template FactoryData
229
241
  * @template FallbackCreatedObject
230
242
  * @param {string} type type
@@ -248,6 +260,7 @@ class StatsFactory {
248
260
  }
249
261
 
250
262
  /**
263
+ * Returns created object.
251
264
  * @private
252
265
  * @template FactoryData
253
266
  * @template FallbackCreatedObject
@@ -280,10 +293,7 @@ class StatsFactory {
280
293
  h.call(comparators, context)
281
294
  );
282
295
  if (comparators.length > 0) {
283
- items.sort(
284
- // @ts-expect-error number of arguments is correct
285
- concatComparators(...comparators, keepOriginalOrder(items))
286
- );
296
+ sortWithOriginalOrder(items, comparators);
287
297
  }
288
298
 
289
299
  // run filter on sorted items
@@ -296,23 +306,30 @@ class StatsFactory {
296
306
  false
297
307
  );
298
308
 
299
- // for each item
309
+ // reuse one item context; create() spreads it synchronously, so mutating
310
+ // `_index`/the name key between items is safe and skips a per-item spread
311
+ /** @type {StatsFactoryContext} */
312
+ const itemContext = { ...context };
313
+ const itemNameType = `${type}[]`;
314
+ /** @type {string | void} */
315
+ let prevItemName;
300
316
  let resultItems = items2.map((item, i) => {
301
- /** @type {StatsFactoryContext} */
302
- const itemContext = {
303
- ...context,
304
- _index: i
305
- };
317
+ itemContext._index = i;
306
318
 
307
319
  // run getItemName
308
320
  const itemName = this._forEachLevel(
309
321
  this.hooks.getItemName,
310
322
  this._caches.getItemName,
311
- `${type}[]`,
323
+ itemNameType,
312
324
  (h) => h.call(item, itemContext)
313
325
  );
326
+ // drop a previous item's name key before adding this one's
327
+ if (prevItemName !== undefined && prevItemName !== itemName) {
328
+ delete itemContext[prevItemName];
329
+ }
314
330
  if (itemName) itemContext[itemName] = item;
315
- const innerType = itemName ? `${type}[].${itemName}` : `${type}[]`;
331
+ prevItemName = itemName;
332
+ const innerType = itemName ? `${type}[].${itemName}` : itemNameType;
316
333
 
317
334
  // run getItemFactory
318
335
  const itemFactory =
@@ -337,10 +354,7 @@ class StatsFactory {
337
354
  (h) => h.call(comparators2, context)
338
355
  );
339
356
  if (comparators2.length > 0) {
340
- resultItems.sort(
341
- // @ts-expect-error number of arguments is correct
342
- concatComparators(...comparators2, keepOriginalOrder(resultItems))
343
- );
357
+ sortWithOriginalOrder(resultItems, comparators2);
344
358
  }
345
359
 
346
360
  // group result items
@@ -403,4 +417,33 @@ class StatsFactory {
403
417
  }
404
418
  }
405
419
 
420
+ /**
421
+ * Stable in-place sort applying comparators in order, keeping the original order
422
+ * for equal items. Inlined instead of `concatComparators(...c, keepOriginalOrder())`
423
+ * because that combination is single-use per sort and only thrashes the comparator
424
+ * caches (a fresh tiebreaker closure every call allocates a new cache entry).
425
+ * @param {EXPECTED_ANY[]} items items to sort in place
426
+ * @param {Comparator[]} comparators comparators applied in order
427
+ * @returns {void}
428
+ */
429
+ const sortWithOriginalOrder = (items, comparators) => {
430
+ // original-index tiebreaker keeps the sort stable on engines without a stable Array.sort
431
+ /** @type {Map<EXPECTED_ANY, number>} */
432
+ const originalOrder = new Map();
433
+ for (let i = 0; i < items.length; i++) {
434
+ originalOrder.set(items[i], i);
435
+ }
436
+ const count = comparators.length;
437
+ items.sort((a, b) => {
438
+ for (let i = 0; i < count; i++) {
439
+ const res = comparators[i](a, b);
440
+ if (res !== 0) return res;
441
+ }
442
+ return (
443
+ /** @type {number} */ (originalOrder.get(a)) -
444
+ /** @type {number} */ (originalOrder.get(b))
445
+ );
446
+ });
447
+ };
448
+
406
449
  module.exports = StatsFactory;
@@ -21,12 +21,14 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
21
21
  /** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
22
22
 
23
23
  /**
24
+ * Defines the printed element type used by this module.
24
25
  * @typedef {object} PrintedElement
25
26
  * @property {string} element
26
27
  * @property {string | undefined} content
27
28
  */
28
29
 
29
30
  /**
31
+ * Defines the known stats printer context type used by this module.
30
32
  * @typedef {object} KnownStatsPrinterContext
31
33
  * @property {string=} type
32
34
  * @property {StatsCompilation=} compilation
@@ -47,6 +49,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
47
49
  /** @typedef {(value: string | number) => string} ColorFunction */
48
50
 
49
51
  /**
52
+ * Defines the known stats printer color functions type used by this module.
50
53
  * @typedef {object} KnownStatsPrinterColorFunctions
51
54
  * @property {ColorFunction=} bold
52
55
  * @property {ColorFunction=} yellow
@@ -57,6 +60,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
57
60
  */
58
61
 
59
62
  /**
63
+ * Defines the known stats printer formatters type used by this module.
60
64
  * @typedef {object} KnownStatsPrinterFormatters
61
65
  * @property {(file: string, oversize?: boolean) => string=} formatFilename
62
66
  * @property {(id: string | number) => string=} formatModuleId
@@ -69,11 +73,18 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
69
73
  * @property {(message: string) => string=} formatError
70
74
  */
71
75
 
76
+ /**
77
+ * Extracts the inner hook type held by a `HookMap`.
78
+ * @template T
79
+ * @typedef {T extends HookMap<infer H> ? H : never} HookMapHook
80
+ */
81
+
72
82
  /** @typedef {KnownStatsPrinterColorFunctions & KnownStatsPrinterFormatters & KnownStatsPrinterContext & Record<string, EXPECTED_ANY>} StatsPrinterContext */
73
83
  /** @typedef {StatsPrinterContext & Required<KnownStatsPrinterColorFunctions> & Required<KnownStatsPrinterFormatters> & { type: string }} StatsPrinterContextWithExtra */
74
84
  /** @typedef {EXPECTED_ANY} PrintObject */
75
85
 
76
86
  /**
87
+ * Represents the stats printer runtime component.
77
88
  * @typedef {object} StatsPrintHooks
78
89
  * @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], void>>} sortElements
79
90
  * @property {HookMap<SyncBailHook<[PrintedElement[], StatsPrinterContext], string | undefined | void>>} printElements
@@ -102,8 +113,9 @@ class StatsPrinter {
102
113
  print: new HookMap(() => new SyncBailHook(["object", "context"])),
103
114
  result: new HookMap(() => new SyncWaterfallHook(["result", "context"]))
104
115
  });
105
- /** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string, import("tapable").Hook<EXPECTED_ANY, EXPECTED_ANY>[]>>} */
116
+ /** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string, HookMapHook<StatsPrintHooks[keyof StatsPrintHooks]>[]>>} */
106
117
  this._levelHookCache = new Map();
118
+ /** @type {boolean} */
107
119
  this._inPrint = false;
108
120
  }
109
121
 
@@ -144,7 +156,7 @@ class StatsPrinter {
144
156
  * @private
145
157
  * @template {StatsPrintHooks[keyof StatsPrintHooks]} HM
146
158
  * @template {HM extends HookMap<infer H> ? H : never} H
147
- * @template {H extends import("tapable").Hook<EXPECTED_ANY, infer R> ? R : never} R
159
+ * @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
148
160
  * @param {HM} hookMap hook map
149
161
  * @param {string} type type
150
162
  * @param {(hooK: H) => R | undefined | void} fn fn
@@ -176,6 +188,7 @@ class StatsPrinter {
176
188
  }
177
189
 
178
190
  /**
191
+ * Returns printed result.
179
192
  * @param {string} type The type
180
193
  * @param {PrintObject} object Object to print
181
194
  * @param {StatsPrinterContext=} baseContext The base context
@@ -195,6 +208,7 @@ class StatsPrinter {
195
208
  }
196
209
 
197
210
  /**
211
+ * Returns printed result.
198
212
  * @private
199
213
  * @param {string} type type
200
214
  * @param {PrintObject} object object
@@ -0,0 +1,210 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const mod = require("module");
9
+ const {
10
+ JAVASCRIPT_MODULE_TYPE_AUTO,
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
+ JAVASCRIPT_MODULE_TYPE_ESM
13
+ } = require("../ModuleTypeConstants");
14
+ const NormalModule = require("../NormalModule");
15
+ const ModuleBuildError = require("../errors/ModuleBuildError");
16
+ const memoize = require("../util/memoize");
17
+ const removeBOM = require("../util/removeBOM");
18
+
19
+ /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
20
+ /** @typedef {import("../Compiler")} Compiler */
21
+ /** @typedef {import("../NormalModule")} NormalModuleType */
22
+ /** @typedef {import("../NormalModule").Result} Result */
23
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
24
+
25
+ const getSourceMapSource = memoize(
26
+ () => require("webpack-sources").SourceMapSource
27
+ );
28
+
29
+ const PLUGIN_NAME = "TypeScriptPlugin";
30
+
31
+ /** @type {Set<string>} */
32
+ const JS_MODULE_TYPES = new Set([
33
+ JAVASCRIPT_MODULE_TYPE_AUTO,
34
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
35
+ JAVASCRIPT_MODULE_TYPE_ESM
36
+ ]);
37
+
38
+ const TS_RESOURCE_RE = /\.(?:[mc]?tsx?)$/i;
39
+ const TSX_RESOURCE_RE = /\.[mc]?tsx$/i;
40
+ const TS_DATA_URI_RE = /^data:(?:text|application)\/typescript/i;
41
+
42
+ const TSX_NOT_SUPPORTED =
43
+ "experiments.typescript does not support .tsx/JSX. " +
44
+ "Use a TSX-capable loader (e.g. swc-loader, esbuild-loader, ts-loader) for .tsx files.";
45
+
46
+ const NODE_API_MISSING =
47
+ "experiments.typescript requires Node.js >= 22.6. " +
48
+ "`module.stripTypeScriptTypes` is not available on this Node.js version.";
49
+
50
+ /**
51
+ * Whether the resource (path or `data:` URI) should go through the TypeScript
52
+ * transform. Returns true for `.ts`, `.cts`, `.mts`, and the JSX-flavoured
53
+ * variants (so the `.tsx` branch can throw a friendly error), as well as the
54
+ * `text/typescript` / `application/typescript` data URIs.
55
+ * @param {string} resource module resource (without query string)
56
+ * @returns {boolean} true if the resource should be transformed
57
+ */
58
+ const isTypeScriptResource = (resource) =>
59
+ TS_RESOURCE_RE.test(resource) || TS_DATA_URI_RE.test(resource);
60
+
61
+ /**
62
+ * Build a line-granularity identity source map for a strip-types output.
63
+ * `mode: "strip"` replaces type annotations with whitespace, so the stripped
64
+ * output preserves the original line layout — an identity mapping is correct.
65
+ * Node's API does not emit a source map in strip mode (`sourceMap: true` is
66
+ * rejected on Node 22+ and Node 26+), so we construct one by hand.
67
+ * @param {string} resource module resource path
68
+ * @param {string} originalSource pre-strip source content
69
+ * @returns {RawSourceMap} identity source map
70
+ */
71
+ const createIdentitySourceMap = (resource, originalSource) => {
72
+ const lineCount = (originalSource.match(/\n/g) || []).length + 1;
73
+ // Mappings: each line emits a single segment at column 0 mapping to
74
+ // column 0 of the same line in the source. `AAAA` for line 1, `;AACA`
75
+ // for each subsequent line (cumulative source-line delta of +1 per line).
76
+ const mappings = `AAAA${";AACA".repeat(lineCount - 1)}`;
77
+
78
+ return {
79
+ version: 3,
80
+ file: resource,
81
+ sources: [resource],
82
+ sourcesContent: [originalSource],
83
+ names: [],
84
+ mappings
85
+ };
86
+ };
87
+
88
+ /**
89
+ * Compose the strip-types source map with an upstream loader source map so the
90
+ * final map points back to the loader's original input (e.g. a `.vue` /
91
+ * `.svelte` / custom loader that emits TS code).
92
+ * @param {string} resource module resource
93
+ * @param {string} strippedSource post-strip JS
94
+ * @param {RawSourceMap} stripMap identity map for the strip step
95
+ * @param {string} preStripSource pre-strip TS (loader output)
96
+ * @param {string | RawSourceMap} loaderSourceMap upstream loader source map
97
+ * @returns {RawSourceMap} composed map
98
+ */
99
+ const composeWithLoaderSourceMap = (
100
+ resource,
101
+ strippedSource,
102
+ stripMap,
103
+ preStripSource,
104
+ loaderSourceMap
105
+ ) => {
106
+ const SourceMapSource = getSourceMapSource();
107
+ const composed = new SourceMapSource(
108
+ strippedSource,
109
+ resource,
110
+ stripMap,
111
+ preStripSource,
112
+ loaderSourceMap,
113
+ true
114
+ );
115
+ return /** @type {RawSourceMap} */ (composed.sourceAndMap().map) || stripMap;
116
+ };
117
+
118
+ /**
119
+ * Run `module.stripTypeScriptTypes` on the input, wrapping any thrown
120
+ * `TypeScript ...` errors as `ModuleBuildError` so they surface as
121
+ * per-module build errors instead of uncaught exceptions.
122
+ * @param {string} input pre-strip TS source (BOM-free string)
123
+ * @returns {string} stripped JS
124
+ */
125
+ const stripTypes = (input) => {
126
+ try {
127
+ // Pass only `mode`. `sourceUrl` would emit a `//# sourceURL=…` pragma
128
+ // into the output (V8 debugger hint), and `sourceMap: true` is
129
+ // rejected in strip mode — we build the source map by hand instead.
130
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
131
+ return mod.stripTypeScriptTypes(input, { mode: "strip" });
132
+ } catch (err) {
133
+ throw new ModuleBuildError(/** @type {Error} */ (err));
134
+ }
135
+ };
136
+
137
+ /**
138
+ * Coerce a Buffer-or-string source to a UTF-8 string, dropping any BOM.
139
+ * @param {string | Buffer} source raw source from the loader pipeline
140
+ * @returns {string} UTF-8 string without BOM
141
+ */
142
+ const toBomFreeString = (source) => {
143
+ const text = Buffer.isBuffer(source) ? source.toString("utf8") : source;
144
+ const stripped = removeBOM(text);
145
+ return typeof stripped === "string" ? stripped : stripped.toString("utf8");
146
+ };
147
+
148
+ class TypeScriptPlugin {
149
+ /**
150
+ * @param {Compiler} compiler webpack compiler
151
+ * @returns {void}
152
+ */
153
+ apply(compiler) {
154
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
155
+ NormalModule.getCompilationHooks(compilation).processResult.tap(
156
+ PLUGIN_NAME,
157
+ (result, module) => this._processResult(result, module)
158
+ );
159
+ });
160
+ }
161
+
162
+ /**
163
+ * processResult tap body. Returns the input untouched unless this is a
164
+ * TypeScript module that needs to be transformed.
165
+ * @param {Result} result loader result tuple
166
+ * @param {NormalModuleType} module the normal module
167
+ * @returns {Result} possibly transformed result
168
+ */
169
+ _processResult(result, module) {
170
+ if (!JS_MODULE_TYPES.has(module.type)) return result;
171
+
172
+ const parser = /** @type {JavascriptParser} */ (module.parser);
173
+ if (!parser.options.typescript) return result;
174
+
175
+ const resource = module.nameForCondition();
176
+ if (!resource || !isTypeScriptResource(resource)) return result;
177
+
178
+ if (TSX_RESOURCE_RE.test(resource)) {
179
+ throw new ModuleBuildError(new Error(TSX_NOT_SUPPORTED));
180
+ }
181
+
182
+ if (!("stripTypeScriptTypes" in mod)) {
183
+ throw new ModuleBuildError(new Error(NODE_API_MISSING));
184
+ }
185
+
186
+ const [rawSource, loaderSourceMap, ...rest] = result;
187
+ const preStripSource = toBomFreeString(rawSource);
188
+ const strippedSource = stripTypes(preStripSource);
189
+
190
+ const needSourceMap = module.useSourceMap || module.useSimpleSourceMap;
191
+ const stripMap = needSourceMap
192
+ ? createIdentitySourceMap(module.resource, preStripSource)
193
+ : undefined;
194
+
195
+ const outputSourceMap =
196
+ stripMap && loaderSourceMap
197
+ ? composeWithLoaderSourceMap(
198
+ module.resource,
199
+ strippedSource,
200
+ stripMap,
201
+ preStripSource,
202
+ loaderSourceMap
203
+ )
204
+ : stripMap || loaderSourceMap;
205
+
206
+ return [strippedSource, outputSourceMap, ...rest];
207
+ }
208
+ }
209
+
210
+ module.exports = TypeScriptPlugin;