@depup/webpack 5.105.4-depup.37

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 (709) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +38 -0
  3. package/bin/webpack.js +196 -0
  4. package/hot/dev-server.js +90 -0
  5. package/hot/emitter-event-target.js +7 -0
  6. package/hot/emitter.js +2 -0
  7. package/hot/lazy-compilation-node.js +66 -0
  8. package/hot/lazy-compilation-universal.js +18 -0
  9. package/hot/lazy-compilation-web.js +93 -0
  10. package/hot/load-http.js +7 -0
  11. package/hot/log-apply-result.js +49 -0
  12. package/hot/log.js +78 -0
  13. package/hot/only-dev-server.js +118 -0
  14. package/hot/poll.js +41 -0
  15. package/hot/signal.js +66 -0
  16. package/lib/APIPlugin.js +392 -0
  17. package/lib/AbstractMethodError.js +56 -0
  18. package/lib/AsyncDependenciesBlock.js +128 -0
  19. package/lib/AsyncDependencyToInitialChunkError.js +34 -0
  20. package/lib/AutomaticPrefetchPlugin.js +66 -0
  21. package/lib/BannerPlugin.js +138 -0
  22. package/lib/Cache.js +168 -0
  23. package/lib/CacheFacade.js +349 -0
  24. package/lib/CaseSensitiveModulesWarning.js +72 -0
  25. package/lib/Chunk.js +899 -0
  26. package/lib/ChunkGraph.js +1968 -0
  27. package/lib/ChunkGroup.js +615 -0
  28. package/lib/ChunkRenderError.js +38 -0
  29. package/lib/ChunkTemplate.js +181 -0
  30. package/lib/CleanPlugin.js +495 -0
  31. package/lib/CodeGenerationError.js +35 -0
  32. package/lib/CodeGenerationResults.js +167 -0
  33. package/lib/CommentCompilationWarning.js +33 -0
  34. package/lib/CompatibilityPlugin.js +240 -0
  35. package/lib/Compilation.js +5876 -0
  36. package/lib/Compiler.js +1413 -0
  37. package/lib/ConcatenationScope.js +181 -0
  38. package/lib/ConcurrentCompilationError.js +18 -0
  39. package/lib/ConditionalInitFragment.js +120 -0
  40. package/lib/ConstPlugin.js +567 -0
  41. package/lib/ContextExclusionPlugin.js +33 -0
  42. package/lib/ContextModule.js +1411 -0
  43. package/lib/ContextModuleFactory.js +514 -0
  44. package/lib/ContextReplacementPlugin.js +227 -0
  45. package/lib/CssModule.js +179 -0
  46. package/lib/DefinePlugin.js +878 -0
  47. package/lib/DelegatedModule.js +279 -0
  48. package/lib/DelegatedModuleFactoryPlugin.js +116 -0
  49. package/lib/DelegatedPlugin.js +49 -0
  50. package/lib/DependenciesBlock.js +120 -0
  51. package/lib/Dependency.js +390 -0
  52. package/lib/DependencyTemplate.js +71 -0
  53. package/lib/DependencyTemplates.js +67 -0
  54. package/lib/DllEntryPlugin.js +76 -0
  55. package/lib/DllModule.js +175 -0
  56. package/lib/DllModuleFactory.js +38 -0
  57. package/lib/DllPlugin.js +73 -0
  58. package/lib/DllReferencePlugin.js +189 -0
  59. package/lib/DotenvPlugin.js +468 -0
  60. package/lib/DynamicEntryPlugin.js +93 -0
  61. package/lib/EntryOptionPlugin.js +98 -0
  62. package/lib/EntryPlugin.js +72 -0
  63. package/lib/Entrypoint.js +120 -0
  64. package/lib/EnvironmentNotSupportAsyncWarning.js +51 -0
  65. package/lib/EnvironmentPlugin.js +74 -0
  66. package/lib/ErrorHelpers.js +100 -0
  67. package/lib/EvalDevToolModulePlugin.js +135 -0
  68. package/lib/EvalSourceMapDevToolPlugin.js +252 -0
  69. package/lib/ExportsInfo.js +1663 -0
  70. package/lib/ExportsInfoApiPlugin.js +87 -0
  71. package/lib/ExternalModule.js +1169 -0
  72. package/lib/ExternalModuleFactoryPlugin.js +370 -0
  73. package/lib/ExternalsPlugin.js +93 -0
  74. package/lib/FalseIIFEUmdWarning.js +20 -0
  75. package/lib/FileSystemInfo.js +4131 -0
  76. package/lib/FlagAllModulesAsUsedPlugin.js +55 -0
  77. package/lib/FlagDependencyExportsPlugin.js +437 -0
  78. package/lib/FlagDependencyUsagePlugin.js +348 -0
  79. package/lib/FlagEntryExportAsUsedPlugin.js +56 -0
  80. package/lib/Generator.js +188 -0
  81. package/lib/GraphHelpers.js +46 -0
  82. package/lib/HarmonyLinkingError.js +17 -0
  83. package/lib/HookWebpackError.js +121 -0
  84. package/lib/HotModuleReplacementPlugin.js +930 -0
  85. package/lib/HotUpdateChunk.js +16 -0
  86. package/lib/IgnoreErrorModuleFactory.js +39 -0
  87. package/lib/IgnorePlugin.js +105 -0
  88. package/lib/IgnoreWarningsPlugin.js +41 -0
  89. package/lib/InitFragment.js +204 -0
  90. package/lib/InvalidDependenciesModuleWarning.js +44 -0
  91. package/lib/JavascriptMetaInfoPlugin.js +78 -0
  92. package/lib/LibManifestPlugin.js +144 -0
  93. package/lib/LibraryTemplatePlugin.js +48 -0
  94. package/lib/LoaderOptionsPlugin.js +81 -0
  95. package/lib/LoaderTargetPlugin.js +39 -0
  96. package/lib/MainTemplate.js +371 -0
  97. package/lib/ManifestPlugin.js +242 -0
  98. package/lib/Module.js +1319 -0
  99. package/lib/ModuleBuildError.js +83 -0
  100. package/lib/ModuleDependencyError.js +44 -0
  101. package/lib/ModuleDependencyWarning.js +49 -0
  102. package/lib/ModuleError.js +69 -0
  103. package/lib/ModuleFactory.js +57 -0
  104. package/lib/ModuleFilenameHelpers.js +388 -0
  105. package/lib/ModuleGraph.js +1024 -0
  106. package/lib/ModuleGraphConnection.js +199 -0
  107. package/lib/ModuleHashingError.js +31 -0
  108. package/lib/ModuleInfoHeaderPlugin.js +318 -0
  109. package/lib/ModuleNotFoundError.js +90 -0
  110. package/lib/ModuleParseError.js +125 -0
  111. package/lib/ModuleProfile.js +108 -0
  112. package/lib/ModuleRestoreError.js +46 -0
  113. package/lib/ModuleSourceTypeConstants.js +179 -0
  114. package/lib/ModuleStoreError.js +45 -0
  115. package/lib/ModuleTemplate.js +173 -0
  116. package/lib/ModuleTypeConstants.js +190 -0
  117. package/lib/ModuleWarning.js +68 -0
  118. package/lib/MultiCompiler.js +678 -0
  119. package/lib/MultiStats.js +213 -0
  120. package/lib/MultiWatching.js +77 -0
  121. package/lib/NoEmitOnErrorsPlugin.js +30 -0
  122. package/lib/NoModeWarning.js +23 -0
  123. package/lib/NodeStuffInWebError.js +35 -0
  124. package/lib/NodeStuffPlugin.js +587 -0
  125. package/lib/NormalModule.js +1798 -0
  126. package/lib/NormalModuleFactory.js +1455 -0
  127. package/lib/NormalModuleReplacementPlugin.js +75 -0
  128. package/lib/NullFactory.js +24 -0
  129. package/lib/OptimizationStages.js +10 -0
  130. package/lib/OptionsApply.js +24 -0
  131. package/lib/Parser.js +40 -0
  132. package/lib/PlatformPlugin.js +41 -0
  133. package/lib/PrefetchPlugin.js +56 -0
  134. package/lib/ProgressPlugin.js +712 -0
  135. package/lib/ProvidePlugin.js +121 -0
  136. package/lib/RawModule.js +180 -0
  137. package/lib/RecordIdsPlugin.js +216 -0
  138. package/lib/RequestShortener.js +36 -0
  139. package/lib/RequireJsStuffPlugin.js +84 -0
  140. package/lib/ResolverFactory.js +156 -0
  141. package/lib/RuntimeGlobals.js +450 -0
  142. package/lib/RuntimeModule.js +242 -0
  143. package/lib/RuntimePlugin.js +547 -0
  144. package/lib/RuntimeTemplate.js +1288 -0
  145. package/lib/SelfModuleFactory.js +33 -0
  146. package/lib/SingleEntryPlugin.js +8 -0
  147. package/lib/SizeFormatHelpers.js +25 -0
  148. package/lib/SourceMapDevToolModuleOptionsPlugin.js +52 -0
  149. package/lib/SourceMapDevToolPlugin.js +646 -0
  150. package/lib/Stats.js +89 -0
  151. package/lib/Template.js +427 -0
  152. package/lib/TemplatedPathPlugin.js +400 -0
  153. package/lib/UnhandledSchemeError.js +34 -0
  154. package/lib/UnsupportedFeatureWarning.js +35 -0
  155. package/lib/UseStrictPlugin.js +81 -0
  156. package/lib/WarnCaseSensitiveModulesPlugin.js +64 -0
  157. package/lib/WarnDeprecatedOptionPlugin.js +60 -0
  158. package/lib/WarnNoModeSetPlugin.js +27 -0
  159. package/lib/WatchIgnorePlugin.js +155 -0
  160. package/lib/Watching.js +531 -0
  161. package/lib/WebpackError.js +81 -0
  162. package/lib/WebpackIsIncludedPlugin.js +93 -0
  163. package/lib/WebpackOptionsApply.js +941 -0
  164. package/lib/WebpackOptionsDefaulter.js +26 -0
  165. package/lib/asset/AssetBytesGenerator.js +172 -0
  166. package/lib/asset/AssetBytesParser.js +37 -0
  167. package/lib/asset/AssetGenerator.js +816 -0
  168. package/lib/asset/AssetModulesPlugin.js +358 -0
  169. package/lib/asset/AssetParser.js +73 -0
  170. package/lib/asset/AssetSourceGenerator.js +171 -0
  171. package/lib/asset/AssetSourceParser.js +37 -0
  172. package/lib/asset/RawDataUrlModule.js +179 -0
  173. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  174. package/lib/async-modules/AwaitDependenciesInitFragment.js +90 -0
  175. package/lib/async-modules/InferAsyncModulesPlugin.js +54 -0
  176. package/lib/buildChunkGraph.js +1392 -0
  177. package/lib/cache/AddBuildDependenciesPlugin.js +32 -0
  178. package/lib/cache/AddManagedPathsPlugin.js +40 -0
  179. package/lib/cache/IdleFileCachePlugin.js +242 -0
  180. package/lib/cache/MemoryCachePlugin.js +57 -0
  181. package/lib/cache/MemoryWithGcCachePlugin.js +142 -0
  182. package/lib/cache/PackFileCacheStrategy.js +1600 -0
  183. package/lib/cache/ResolverCachePlugin.js +450 -0
  184. package/lib/cache/getLazyHashedEtag.js +91 -0
  185. package/lib/cache/mergeEtags.js +71 -0
  186. package/lib/cli.js +859 -0
  187. package/lib/config/browserslistTargetHandler.js +388 -0
  188. package/lib/config/defaults.js +2086 -0
  189. package/lib/config/normalization.js +681 -0
  190. package/lib/config/target.js +389 -0
  191. package/lib/container/ContainerEntryDependency.js +50 -0
  192. package/lib/container/ContainerEntryModule.js +303 -0
  193. package/lib/container/ContainerEntryModuleFactory.js +27 -0
  194. package/lib/container/ContainerExposedDependency.js +62 -0
  195. package/lib/container/ContainerPlugin.js +118 -0
  196. package/lib/container/ContainerReferencePlugin.js +139 -0
  197. package/lib/container/FallbackDependency.js +66 -0
  198. package/lib/container/FallbackItemDependency.js +34 -0
  199. package/lib/container/FallbackModule.js +193 -0
  200. package/lib/container/FallbackModuleFactory.js +27 -0
  201. package/lib/container/HoistContainerReferencesPlugin.js +256 -0
  202. package/lib/container/ModuleFederationPlugin.js +131 -0
  203. package/lib/container/RemoteModule.js +225 -0
  204. package/lib/container/RemoteRuntimeModule.js +144 -0
  205. package/lib/container/RemoteToExternalDependency.js +33 -0
  206. package/lib/container/options.js +105 -0
  207. package/lib/css/CssGenerator.js +587 -0
  208. package/lib/css/CssLoadingRuntimeModule.js +513 -0
  209. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  210. package/lib/css/CssModulesPlugin.js +939 -0
  211. package/lib/css/CssParser.js +2621 -0
  212. package/lib/css/walkCssTokens.js +1740 -0
  213. package/lib/debug/ProfilingPlugin.js +589 -0
  214. package/lib/dependencies/AMDDefineDependency.js +267 -0
  215. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +504 -0
  216. package/lib/dependencies/AMDPlugin.js +243 -0
  217. package/lib/dependencies/AMDRequireArrayDependency.js +124 -0
  218. package/lib/dependencies/AMDRequireContextDependency.js +69 -0
  219. package/lib/dependencies/AMDRequireDependenciesBlock.js +28 -0
  220. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +425 -0
  221. package/lib/dependencies/AMDRequireDependency.js +189 -0
  222. package/lib/dependencies/AMDRequireItemDependency.js +41 -0
  223. package/lib/dependencies/AMDRuntimeModules.js +50 -0
  224. package/lib/dependencies/CachedConstDependency.js +135 -0
  225. package/lib/dependencies/CommonJsDependencyHelpers.js +65 -0
  226. package/lib/dependencies/CommonJsExportRequireDependency.js +416 -0
  227. package/lib/dependencies/CommonJsExportsDependency.js +184 -0
  228. package/lib/dependencies/CommonJsExportsParserPlugin.js +425 -0
  229. package/lib/dependencies/CommonJsFullRequireDependency.js +162 -0
  230. package/lib/dependencies/CommonJsImportsParserPlugin.js +611 -0
  231. package/lib/dependencies/CommonJsPlugin.js +316 -0
  232. package/lib/dependencies/CommonJsRequireContextDependency.js +73 -0
  233. package/lib/dependencies/CommonJsRequireDependency.js +42 -0
  234. package/lib/dependencies/CommonJsSelfReferenceDependency.js +156 -0
  235. package/lib/dependencies/ConstDependency.js +118 -0
  236. package/lib/dependencies/ContextDependency.js +183 -0
  237. package/lib/dependencies/ContextDependencyHelpers.js +277 -0
  238. package/lib/dependencies/ContextDependencyTemplateAsId.js +63 -0
  239. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +62 -0
  240. package/lib/dependencies/ContextElementDependency.js +147 -0
  241. package/lib/dependencies/CreateRequireParserPlugin.js +356 -0
  242. package/lib/dependencies/CreateScriptUrlDependency.js +75 -0
  243. package/lib/dependencies/CriticalDependencyWarning.js +29 -0
  244. package/lib/dependencies/CssIcssExportDependency.js +539 -0
  245. package/lib/dependencies/CssIcssImportDependency.js +183 -0
  246. package/lib/dependencies/CssIcssSymbolDependency.js +131 -0
  247. package/lib/dependencies/CssImportDependency.js +120 -0
  248. package/lib/dependencies/CssUrlDependency.js +189 -0
  249. package/lib/dependencies/DelegatedSourceDependency.js +33 -0
  250. package/lib/dependencies/DllEntryDependency.js +61 -0
  251. package/lib/dependencies/DynamicExports.js +73 -0
  252. package/lib/dependencies/EntryDependency.js +30 -0
  253. package/lib/dependencies/ExportsInfoDependency.js +161 -0
  254. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  255. package/lib/dependencies/ExternalModuleInitFragment.js +137 -0
  256. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +87 -0
  257. package/lib/dependencies/HarmonyAcceptDependency.js +237 -0
  258. package/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
  259. package/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
  260. package/lib/dependencies/HarmonyDetectionParserPlugin.js +103 -0
  261. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +165 -0
  262. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +254 -0
  263. package/lib/dependencies/HarmonyExportExpressionDependency.js +211 -0
  264. package/lib/dependencies/HarmonyExportHeaderDependency.js +78 -0
  265. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1494 -0
  266. package/lib/dependencies/HarmonyExportInitFragment.js +191 -0
  267. package/lib/dependencies/HarmonyExportSpecifierDependency.js +127 -0
  268. package/lib/dependencies/HarmonyExports.js +46 -0
  269. package/lib/dependencies/HarmonyImportDependency.js +459 -0
  270. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +576 -0
  271. package/lib/dependencies/HarmonyImportSideEffectDependency.js +91 -0
  272. package/lib/dependencies/HarmonyImportSpecifierDependency.js +514 -0
  273. package/lib/dependencies/HarmonyModulesPlugin.js +158 -0
  274. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +39 -0
  275. package/lib/dependencies/ImportContextDependency.js +81 -0
  276. package/lib/dependencies/ImportDependency.js +158 -0
  277. package/lib/dependencies/ImportEagerDependency.js +76 -0
  278. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  279. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +312 -0
  280. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  281. package/lib/dependencies/ImportMetaHotAcceptDependency.js +41 -0
  282. package/lib/dependencies/ImportMetaHotDeclineDependency.js +42 -0
  283. package/lib/dependencies/ImportMetaPlugin.js +447 -0
  284. package/lib/dependencies/ImportParserPlugin.js +602 -0
  285. package/lib/dependencies/ImportPhase.js +125 -0
  286. package/lib/dependencies/ImportPlugin.js +98 -0
  287. package/lib/dependencies/ImportWeakDependency.js +74 -0
  288. package/lib/dependencies/JsonExportsDependency.js +137 -0
  289. package/lib/dependencies/LoaderDependency.js +38 -0
  290. package/lib/dependencies/LoaderImportDependency.js +39 -0
  291. package/lib/dependencies/LoaderPlugin.js +294 -0
  292. package/lib/dependencies/LocalModule.js +60 -0
  293. package/lib/dependencies/LocalModuleDependency.js +84 -0
  294. package/lib/dependencies/LocalModulesHelpers.js +68 -0
  295. package/lib/dependencies/ModuleDecoratorDependency.js +136 -0
  296. package/lib/dependencies/ModuleDependency.js +100 -0
  297. package/lib/dependencies/ModuleDependencyTemplateAsId.js +35 -0
  298. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +39 -0
  299. package/lib/dependencies/ModuleHotAcceptDependency.js +41 -0
  300. package/lib/dependencies/ModuleHotDeclineDependency.js +42 -0
  301. package/lib/dependencies/ModuleInitFragmentDependency.js +87 -0
  302. package/lib/dependencies/NullDependency.js +42 -0
  303. package/lib/dependencies/PrefetchDependency.js +27 -0
  304. package/lib/dependencies/ProvidedDependency.js +156 -0
  305. package/lib/dependencies/PureExpressionDependency.js +161 -0
  306. package/lib/dependencies/RequireContextDependency.js +38 -0
  307. package/lib/dependencies/RequireContextDependencyParserPlugin.js +69 -0
  308. package/lib/dependencies/RequireContextPlugin.js +167 -0
  309. package/lib/dependencies/RequireEnsureDependenciesBlock.js +29 -0
  310. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +145 -0
  311. package/lib/dependencies/RequireEnsureDependency.js +115 -0
  312. package/lib/dependencies/RequireEnsureItemDependency.js +36 -0
  313. package/lib/dependencies/RequireEnsurePlugin.js +86 -0
  314. package/lib/dependencies/RequireHeaderDependency.js +70 -0
  315. package/lib/dependencies/RequireIncludeDependency.js +79 -0
  316. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +100 -0
  317. package/lib/dependencies/RequireIncludePlugin.js +63 -0
  318. package/lib/dependencies/RequireResolveContextDependency.js +67 -0
  319. package/lib/dependencies/RequireResolveDependency.js +58 -0
  320. package/lib/dependencies/RequireResolveHeaderDependency.js +81 -0
  321. package/lib/dependencies/RuntimeRequirementsDependency.js +85 -0
  322. package/lib/dependencies/StaticExportsDependency.js +72 -0
  323. package/lib/dependencies/SystemPlugin.js +168 -0
  324. package/lib/dependencies/SystemRuntimeModule.js +35 -0
  325. package/lib/dependencies/URLContextDependency.js +65 -0
  326. package/lib/dependencies/URLDependency.js +165 -0
  327. package/lib/dependencies/URLPlugin.js +67 -0
  328. package/lib/dependencies/UnsupportedDependency.js +82 -0
  329. package/lib/dependencies/WebAssemblyExportImportedDependency.js +93 -0
  330. package/lib/dependencies/WebAssemblyImportDependency.js +108 -0
  331. package/lib/dependencies/WebpackIsIncludedDependency.js +84 -0
  332. package/lib/dependencies/WorkerDependency.js +141 -0
  333. package/lib/dependencies/WorkerPlugin.js +565 -0
  334. package/lib/dependencies/getFunctionExpression.js +66 -0
  335. package/lib/dependencies/processExportInfo.js +67 -0
  336. package/lib/electron/ElectronTargetPlugin.js +71 -0
  337. package/lib/errors/BuildCycleError.js +30 -0
  338. package/lib/esm/ExportWebpackRequireRuntimeModule.js +30 -0
  339. package/lib/esm/ModuleChunkFormatPlugin.js +273 -0
  340. package/lib/esm/ModuleChunkLoadingPlugin.js +143 -0
  341. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +426 -0
  342. package/lib/formatLocation.js +67 -0
  343. package/lib/hmr/HotModuleReplacement.runtime.js +419 -0
  344. package/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
  345. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +471 -0
  346. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  347. package/lib/hmr/LazyCompilationPlugin.js +473 -0
  348. package/lib/hmr/lazyCompilationBackend.js +167 -0
  349. package/lib/ids/ChunkModuleIdRangePlugin.js +94 -0
  350. package/lib/ids/DeterministicChunkIdsPlugin.js +73 -0
  351. package/lib/ids/DeterministicModuleIdsPlugin.js +98 -0
  352. package/lib/ids/HashedModuleIdsPlugin.js +85 -0
  353. package/lib/ids/IdHelpers.js +492 -0
  354. package/lib/ids/NamedChunkIdsPlugin.js +92 -0
  355. package/lib/ids/NamedModuleIdsPlugin.js +68 -0
  356. package/lib/ids/NaturalChunkIdsPlugin.js +35 -0
  357. package/lib/ids/NaturalModuleIdsPlugin.js +40 -0
  358. package/lib/ids/OccurrenceChunkIdsPlugin.js +86 -0
  359. package/lib/ids/OccurrenceModuleIdsPlugin.js +168 -0
  360. package/lib/ids/SyncModuleIdsPlugin.js +161 -0
  361. package/lib/index.js +681 -0
  362. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +153 -0
  363. package/lib/javascript/BasicEvaluatedExpression.js +603 -0
  364. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  365. package/lib/javascript/ChunkHelpers.js +45 -0
  366. package/lib/javascript/CommonJsChunkFormatPlugin.js +148 -0
  367. package/lib/javascript/EnableChunkLoadingPlugin.js +127 -0
  368. package/lib/javascript/JavascriptGenerator.js +277 -0
  369. package/lib/javascript/JavascriptModulesPlugin.js +1905 -0
  370. package/lib/javascript/JavascriptParser.js +5476 -0
  371. package/lib/javascript/JavascriptParserHelpers.js +129 -0
  372. package/lib/javascript/StartupHelpers.js +178 -0
  373. package/lib/json/JsonData.js +74 -0
  374. package/lib/json/JsonGenerator.js +234 -0
  375. package/lib/json/JsonModulesPlugin.js +66 -0
  376. package/lib/json/JsonParser.js +93 -0
  377. package/lib/library/AbstractLibraryPlugin.js +339 -0
  378. package/lib/library/AmdLibraryPlugin.js +181 -0
  379. package/lib/library/AssignLibraryPlugin.js +445 -0
  380. package/lib/library/EnableLibraryPlugin.js +306 -0
  381. package/lib/library/ExportPropertyLibraryPlugin.js +116 -0
  382. package/lib/library/JsonpLibraryPlugin.js +92 -0
  383. package/lib/library/ModuleLibraryPlugin.js +438 -0
  384. package/lib/library/SystemLibraryPlugin.js +256 -0
  385. package/lib/library/UmdLibraryPlugin.js +355 -0
  386. package/lib/logging/Logger.js +223 -0
  387. package/lib/logging/createConsoleLogger.js +217 -0
  388. package/lib/logging/runtime.js +45 -0
  389. package/lib/logging/truncateArgs.js +83 -0
  390. package/lib/node/CommonJsChunkLoadingPlugin.js +120 -0
  391. package/lib/node/NodeEnvironmentPlugin.js +73 -0
  392. package/lib/node/NodeSourcePlugin.js +19 -0
  393. package/lib/node/NodeTargetPlugin.js +102 -0
  394. package/lib/node/NodeTemplatePlugin.js +42 -0
  395. package/lib/node/NodeWatchFileSystem.js +198 -0
  396. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +286 -0
  397. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +123 -0
  398. package/lib/node/ReadFileCompileWasmPlugin.js +127 -0
  399. package/lib/node/RequireChunkLoadingRuntimeModule.js +239 -0
  400. package/lib/node/nodeConsole.js +185 -0
  401. package/lib/optimize/AggressiveMergingPlugin.js +98 -0
  402. package/lib/optimize/AggressiveSplittingPlugin.js +352 -0
  403. package/lib/optimize/ConcatenatedModule.js +2290 -0
  404. package/lib/optimize/EnsureChunkConditionsPlugin.js +88 -0
  405. package/lib/optimize/FlagIncludedChunksPlugin.js +137 -0
  406. package/lib/optimize/InnerGraph.js +368 -0
  407. package/lib/optimize/InnerGraphPlugin.js +455 -0
  408. package/lib/optimize/LimitChunkCountPlugin.js +302 -0
  409. package/lib/optimize/MangleExportsPlugin.js +194 -0
  410. package/lib/optimize/MergeDuplicateChunksPlugin.js +138 -0
  411. package/lib/optimize/MinChunkSizePlugin.js +121 -0
  412. package/lib/optimize/MinMaxSizeWarning.js +35 -0
  413. package/lib/optimize/ModuleConcatenationPlugin.js +971 -0
  414. package/lib/optimize/RealContentHashPlugin.js +488 -0
  415. package/lib/optimize/RemoveEmptyChunksPlugin.js +60 -0
  416. package/lib/optimize/RemoveParentModulesPlugin.js +216 -0
  417. package/lib/optimize/RuntimeChunkPlugin.js +52 -0
  418. package/lib/optimize/SideEffectsFlagPlugin.js +417 -0
  419. package/lib/optimize/SplitChunksPlugin.js +1836 -0
  420. package/lib/performance/AssetsOverSizeLimitWarning.js +37 -0
  421. package/lib/performance/EntrypointsOverSizeLimitWarning.js +40 -0
  422. package/lib/performance/NoAsyncChunksWarning.js +21 -0
  423. package/lib/performance/SizeLimitsPlugin.js +183 -0
  424. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +46 -0
  425. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
  426. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +56 -0
  427. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +52 -0
  428. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +46 -0
  429. package/lib/rules/BasicEffectRulePlugin.js +56 -0
  430. package/lib/rules/BasicMatcherRulePlugin.js +68 -0
  431. package/lib/rules/ObjectMatcherRulePlugin.js +79 -0
  432. package/lib/rules/RuleSetCompiler.js +447 -0
  433. package/lib/rules/UseEffectRulePlugin.js +236 -0
  434. package/lib/runtime/AsyncModuleRuntimeModule.js +199 -0
  435. package/lib/runtime/AutoPublicPathRuntimeModule.js +90 -0
  436. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  437. package/lib/runtime/ChunkNameRuntimeModule.js +28 -0
  438. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +40 -0
  439. package/lib/runtime/CompatRuntimeModule.js +83 -0
  440. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +69 -0
  441. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  442. package/lib/runtime/CreateScriptUrlRuntimeModule.js +38 -0
  443. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +42 -0
  444. package/lib/runtime/EnsureChunkRuntimeModule.js +69 -0
  445. package/lib/runtime/GetChunkFilenameRuntimeModule.js +299 -0
  446. package/lib/runtime/GetFullHashRuntimeModule.js +31 -0
  447. package/lib/runtime/GetMainFilenameRuntimeModule.js +49 -0
  448. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +99 -0
  449. package/lib/runtime/GlobalRuntimeModule.js +47 -0
  450. package/lib/runtime/HasOwnPropertyRuntimeModule.js +35 -0
  451. package/lib/runtime/HelperRuntimeModule.js +18 -0
  452. package/lib/runtime/LoadScriptRuntimeModule.js +174 -0
  453. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +232 -0
  454. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +39 -0
  455. package/lib/runtime/NonceRuntimeModule.js +24 -0
  456. package/lib/runtime/OnChunksLoadedRuntimeModule.js +78 -0
  457. package/lib/runtime/PublicPathRuntimeModule.js +38 -0
  458. package/lib/runtime/RelativeUrlRuntimeModule.js +44 -0
  459. package/lib/runtime/RuntimeIdRuntimeModule.js +33 -0
  460. package/lib/runtime/StartupChunkDependenciesPlugin.js +88 -0
  461. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +77 -0
  462. package/lib/runtime/StartupEntrypointRuntimeModule.js +54 -0
  463. package/lib/runtime/SystemContextRuntimeModule.js +23 -0
  464. package/lib/runtime/ToBinaryRuntimeModule.js +72 -0
  465. package/lib/schemes/DataUriPlugin.js +47 -0
  466. package/lib/schemes/FileUriPlugin.js +54 -0
  467. package/lib/schemes/HttpUriPlugin.js +1410 -0
  468. package/lib/schemes/VirtualUrlPlugin.js +248 -0
  469. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  470. package/lib/serialization/ArraySerializer.js +38 -0
  471. package/lib/serialization/BinaryMiddleware.js +1164 -0
  472. package/lib/serialization/DateObjectSerializer.js +28 -0
  473. package/lib/serialization/ErrorObjectSerializer.js +49 -0
  474. package/lib/serialization/FileMiddleware.js +766 -0
  475. package/lib/serialization/MapObjectSerializer.js +48 -0
  476. package/lib/serialization/NullPrototypeObjectSerializer.js +53 -0
  477. package/lib/serialization/ObjectMiddleware.js +877 -0
  478. package/lib/serialization/PlainObjectSerializer.js +119 -0
  479. package/lib/serialization/RegExpObjectSerializer.js +29 -0
  480. package/lib/serialization/Serializer.js +82 -0
  481. package/lib/serialization/SerializerMiddleware.js +226 -0
  482. package/lib/serialization/SetObjectSerializer.js +40 -0
  483. package/lib/serialization/SingleItemMiddleware.js +36 -0
  484. package/lib/serialization/types.js +13 -0
  485. package/lib/sharing/ConsumeSharedFallbackDependency.js +33 -0
  486. package/lib/sharing/ConsumeSharedModule.js +344 -0
  487. package/lib/sharing/ConsumeSharedPlugin.js +380 -0
  488. package/lib/sharing/ConsumeSharedRuntimeModule.js +358 -0
  489. package/lib/sharing/ProvideForSharedDependency.js +33 -0
  490. package/lib/sharing/ProvideSharedDependency.js +80 -0
  491. package/lib/sharing/ProvideSharedModule.js +196 -0
  492. package/lib/sharing/ProvideSharedModuleFactory.js +37 -0
  493. package/lib/sharing/ProvideSharedPlugin.js +248 -0
  494. package/lib/sharing/SharePlugin.js +91 -0
  495. package/lib/sharing/ShareRuntimeModule.js +152 -0
  496. package/lib/sharing/resolveMatchedConfigs.js +106 -0
  497. package/lib/sharing/utils.js +421 -0
  498. package/lib/stats/DefaultStatsFactoryPlugin.js +2791 -0
  499. package/lib/stats/DefaultStatsPresetPlugin.js +417 -0
  500. package/lib/stats/DefaultStatsPrinterPlugin.js +1860 -0
  501. package/lib/stats/StatsFactory.js +406 -0
  502. package/lib/stats/StatsPrinter.js +300 -0
  503. package/lib/url/URLParserPlugin.js +266 -0
  504. package/lib/util/AppendOnlyStackedSet.js +78 -0
  505. package/lib/util/ArrayHelpers.js +46 -0
  506. package/lib/util/ArrayQueue.js +104 -0
  507. package/lib/util/AsyncQueue.js +411 -0
  508. package/lib/util/Hash.js +68 -0
  509. package/lib/util/IterableHelpers.js +46 -0
  510. package/lib/util/LazyBucketSortedSet.js +272 -0
  511. package/lib/util/LazySet.js +236 -0
  512. package/lib/util/MapHelpers.js +34 -0
  513. package/lib/util/ParallelismFactorCalculator.js +70 -0
  514. package/lib/util/Queue.js +52 -0
  515. package/lib/util/Semaphore.js +51 -0
  516. package/lib/util/SetHelpers.js +94 -0
  517. package/lib/util/SortableSet.js +176 -0
  518. package/lib/util/StackedCacheMap.js +140 -0
  519. package/lib/util/StackedMap.js +164 -0
  520. package/lib/util/StringXor.js +103 -0
  521. package/lib/util/TupleQueue.js +70 -0
  522. package/lib/util/TupleSet.js +185 -0
  523. package/lib/util/URLAbsoluteSpecifier.js +86 -0
  524. package/lib/util/WeakTupleMap.js +227 -0
  525. package/lib/util/binarySearchBounds.js +136 -0
  526. package/lib/util/chainedImports.js +99 -0
  527. package/lib/util/cleverMerge.js +676 -0
  528. package/lib/util/comparators.js +645 -0
  529. package/lib/util/compileBooleanMatcher.js +313 -0
  530. package/lib/util/concatenate.js +232 -0
  531. package/lib/util/conventions.js +126 -0
  532. package/lib/util/create-schema-validation.js +41 -0
  533. package/lib/util/createHash.js +91 -0
  534. package/lib/util/dataURL.js +39 -0
  535. package/lib/util/deprecation.js +350 -0
  536. package/lib/util/deterministicGrouping.js +561 -0
  537. package/lib/util/extractSourceMap.js +318 -0
  538. package/lib/util/extractUrlAndGlobal.js +18 -0
  539. package/lib/util/findGraphRoots.js +211 -0
  540. package/lib/util/fs.js +675 -0
  541. package/lib/util/generateDebugId.js +33 -0
  542. package/lib/util/hash/BatchedHash.js +115 -0
  543. package/lib/util/hash/BulkUpdateHash.js +145 -0
  544. package/lib/util/hash/DebugHash.js +75 -0
  545. package/lib/util/hash/hash-digest.js +217 -0
  546. package/lib/util/hash/md4.js +20 -0
  547. package/lib/util/hash/wasm-hash.js +232 -0
  548. package/lib/util/hash/xxhash64.js +20 -0
  549. package/lib/util/identifier.js +471 -0
  550. package/lib/util/internalSerializables.js +222 -0
  551. package/lib/util/magicComment.js +25 -0
  552. package/lib/util/makeSerializable.js +60 -0
  553. package/lib/util/memoize.js +36 -0
  554. package/lib/util/nonNumericOnlyHash.js +22 -0
  555. package/lib/util/numberHash.js +95 -0
  556. package/lib/util/objectToMap.js +15 -0
  557. package/lib/util/processAsyncTree.js +68 -0
  558. package/lib/util/propertyAccess.js +30 -0
  559. package/lib/util/propertyName.js +76 -0
  560. package/lib/util/registerExternalSerializer.js +334 -0
  561. package/lib/util/removeBOM.js +25 -0
  562. package/lib/util/runtime.js +717 -0
  563. package/lib/util/semver.js +604 -0
  564. package/lib/util/serialization.js +153 -0
  565. package/lib/util/smartGrouping.js +221 -0
  566. package/lib/util/source.js +62 -0
  567. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  568. package/lib/validateSchema.js +177 -0
  569. package/lib/wasm/EnableWasmLoadingPlugin.js +146 -0
  570. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +154 -0
  571. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +74 -0
  572. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +212 -0
  573. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +209 -0
  574. package/lib/wasm-async/AsyncWebAssemblyParser.js +80 -0
  575. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +107 -0
  576. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +20 -0
  577. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +422 -0
  578. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +91 -0
  579. package/lib/wasm-sync/WebAssemblyGenerator.js +535 -0
  580. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +111 -0
  581. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +236 -0
  582. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +151 -0
  583. package/lib/wasm-sync/WebAssemblyParser.js +201 -0
  584. package/lib/wasm-sync/WebAssemblyUtils.js +66 -0
  585. package/lib/web/FetchCompileAsyncWasmPlugin.js +70 -0
  586. package/lib/web/FetchCompileWasmPlugin.js +86 -0
  587. package/lib/web/JsonpChunkLoadingPlugin.js +101 -0
  588. package/lib/web/JsonpChunkLoadingRuntimeModule.js +455 -0
  589. package/lib/web/JsonpTemplatePlugin.js +37 -0
  590. package/lib/webpack.js +227 -0
  591. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +110 -0
  592. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +231 -0
  593. package/lib/webworker/WebWorkerTemplatePlugin.js +26 -0
  594. package/module.d.ts +238 -0
  595. package/package.json +258 -0
  596. package/schemas/WebpackOptions.check.d.ts +7 -0
  597. package/schemas/WebpackOptions.check.js +6 -0
  598. package/schemas/WebpackOptions.json +6179 -0
  599. package/schemas/_container.json +155 -0
  600. package/schemas/_sharing.json +118 -0
  601. package/schemas/plugins/BannerPlugin.check.d.ts +7 -0
  602. package/schemas/plugins/BannerPlugin.check.js +6 -0
  603. package/schemas/plugins/BannerPlugin.json +115 -0
  604. package/schemas/plugins/DllPlugin.check.d.ts +7 -0
  605. package/schemas/plugins/DllPlugin.check.js +6 -0
  606. package/schemas/plugins/DllPlugin.json +36 -0
  607. package/schemas/plugins/DllReferencePlugin.check.d.ts +7 -0
  608. package/schemas/plugins/DllReferencePlugin.check.js +6 -0
  609. package/schemas/plugins/DllReferencePlugin.json +206 -0
  610. package/schemas/plugins/IgnorePlugin.check.d.ts +7 -0
  611. package/schemas/plugins/IgnorePlugin.check.js +6 -0
  612. package/schemas/plugins/IgnorePlugin.json +34 -0
  613. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +7 -0
  614. package/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
  615. package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  616. package/schemas/plugins/ManifestPlugin.check.d.ts +7 -0
  617. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  618. package/schemas/plugins/ManifestPlugin.json +98 -0
  619. package/schemas/plugins/ProgressPlugin.check.d.ts +7 -0
  620. package/schemas/plugins/ProgressPlugin.check.js +6 -0
  621. package/schemas/plugins/ProgressPlugin.json +65 -0
  622. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +7 -0
  623. package/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
  624. package/schemas/plugins/SourceMapDevToolPlugin.json +168 -0
  625. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +7 -0
  626. package/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
  627. package/schemas/plugins/WatchIgnorePlugin.json +25 -0
  628. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +7 -0
  629. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
  630. package/schemas/plugins/asset/AssetGeneratorOptions.json +3 -0
  631. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +7 -0
  632. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
  633. package/schemas/plugins/asset/AssetInlineGeneratorOptions.json +3 -0
  634. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +7 -0
  635. package/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
  636. package/schemas/plugins/asset/AssetParserOptions.json +3 -0
  637. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +7 -0
  638. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
  639. package/schemas/plugins/asset/AssetResourceGeneratorOptions.json +3 -0
  640. package/schemas/plugins/container/ContainerPlugin.check.d.ts +7 -0
  641. package/schemas/plugins/container/ContainerPlugin.check.js +6 -0
  642. package/schemas/plugins/container/ContainerPlugin.json +294 -0
  643. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +7 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +132 -0
  646. package/schemas/plugins/container/ExternalsType.check.d.ts +7 -0
  647. package/schemas/plugins/container/ExternalsType.check.js +6 -0
  648. package/schemas/plugins/container/ExternalsType.json +3 -0
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +7 -0
  650. package/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
  651. package/schemas/plugins/container/ModuleFederationPlugin.json +525 -0
  652. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  653. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  654. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  655. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  656. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  657. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  658. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  659. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  660. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  661. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  662. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  663. package/schemas/plugins/css/CssParserOptions.json +3 -0
  664. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +7 -0
  665. package/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
  666. package/schemas/plugins/debug/ProfilingPlugin.json +12 -0
  667. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  668. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  669. package/schemas/plugins/ids/HashedModuleIdsPlugin.json +57 -0
  670. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +7 -0
  671. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
  672. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
  673. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +7 -0
  674. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
  675. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
  676. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +7 -0
  677. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  678. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  679. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +7 -0
  680. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  681. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  682. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +7 -0
  683. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
  684. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  685. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +7 -0
  686. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
  687. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
  688. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +7 -0
  689. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +6 -0
  690. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.json +11 -0
  691. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +7 -0
  692. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
  693. package/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
  694. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +7 -0
  695. package/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
  696. package/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
  697. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  698. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  699. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  700. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +7 -0
  701. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
  702. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
  703. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +7 -0
  704. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
  705. package/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
  706. package/schemas/plugins/sharing/SharePlugin.check.d.ts +7 -0
  707. package/schemas/plugins/sharing/SharePlugin.check.js +6 -0
  708. package/schemas/plugins/sharing/SharePlugin.json +133 -0
  709. package/types.d.ts +20217 -0
@@ -0,0 +1,877 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const { DEFAULTS } = require("../config/defaults");
8
+ const createHash = require("../util/createHash");
9
+ const AggregateErrorSerializer = require("./AggregateErrorSerializer");
10
+ const ArraySerializer = require("./ArraySerializer");
11
+ const DateObjectSerializer = require("./DateObjectSerializer");
12
+ const ErrorObjectSerializer = require("./ErrorObjectSerializer");
13
+ const MapObjectSerializer = require("./MapObjectSerializer");
14
+ const NullPrototypeObjectSerializer = require("./NullPrototypeObjectSerializer");
15
+ const PlainObjectSerializer = require("./PlainObjectSerializer");
16
+ const RegExpObjectSerializer = require("./RegExpObjectSerializer");
17
+ const SerializerMiddleware = require("./SerializerMiddleware");
18
+ const SetObjectSerializer = require("./SetObjectSerializer");
19
+
20
+ /** @typedef {import("../logging/Logger").Logger} Logger */
21
+ /** @typedef {import("../util/Hash").HashFunction} HashFunction */
22
+ /** @typedef {import("./SerializerMiddleware").LazyOptions} LazyOptions */
23
+ /** @typedef {import("./types").ComplexSerializableType} ComplexSerializableType */
24
+ /** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
25
+
26
+ /** @typedef {new (...params: EXPECTED_ANY[]) => EXPECTED_ANY} Constructor */
27
+
28
+ /*
29
+
30
+ Format:
31
+
32
+ File -> Section*
33
+ Section -> ObjectSection | ReferenceSection | EscapeSection | OtherSection
34
+
35
+ ObjectSection -> ESCAPE (
36
+ number:relativeOffset (number > 0) |
37
+ string:request (string|null):export
38
+ ) Section:value* ESCAPE ESCAPE_END_OBJECT
39
+ ReferenceSection -> ESCAPE number:relativeOffset (number < 0)
40
+ EscapeSection -> ESCAPE ESCAPE_ESCAPE_VALUE (escaped value ESCAPE)
41
+ EscapeSection -> ESCAPE ESCAPE_UNDEFINED (escaped value ESCAPE)
42
+ OtherSection -> any (except ESCAPE)
43
+
44
+ Why using null as escape value?
45
+ Multiple null values can merged by the BinaryMiddleware, which makes it very efficient
46
+ Technically any value can be used.
47
+
48
+ */
49
+
50
+ /**
51
+ * @typedef {object} ObjectSerializerSnapshot
52
+ * @property {number} length
53
+ * @property {number} cycleStackSize
54
+ * @property {number} referenceableSize
55
+ * @property {number} currentPos
56
+ * @property {number} objectTypeLookupSize
57
+ * @property {number} currentPosTypeLookup
58
+ */
59
+
60
+ /** @typedef {EXPECTED_OBJECT | string} ReferenceableItem */
61
+
62
+ /**
63
+ * @typedef {object} ObjectSerializerContext
64
+ * @property {(value: EXPECTED_ANY) => void} write
65
+ * @property {(value: ReferenceableItem) => void} setCircularReference
66
+ * @property {() => ObjectSerializerSnapshot} snapshot
67
+ * @property {(snapshot: ObjectSerializerSnapshot) => void} rollback
68
+ * @property {((item: EXPECTED_ANY | (() => EXPECTED_ANY)) => void)=} writeLazy
69
+ * @property {((item: (EXPECTED_ANY | (() => EXPECTED_ANY)), obj: LazyOptions | undefined) => import("./SerializerMiddleware").LazyFunction<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY, LazyOptions>)=} writeSeparate
70
+ */
71
+
72
+ /**
73
+ * @typedef {object} ObjectDeserializerContext
74
+ * @property {() => EXPECTED_ANY} read
75
+ * @property {(value: ReferenceableItem) => void} setCircularReference
76
+ */
77
+
78
+ /**
79
+ * @typedef {object} ObjectSerializer
80
+ * @property {(value: EXPECTED_ANY, context: ObjectSerializerContext) => void} serialize
81
+ * @property {(context: ObjectDeserializerContext) => EXPECTED_ANY} deserialize
82
+ */
83
+
84
+ /**
85
+ * @template T
86
+ * @param {Set<T>} set set
87
+ * @param {number} size count of items to keep
88
+ */
89
+ const setSetSize = (set, size) => {
90
+ let i = 0;
91
+ for (const item of set) {
92
+ if (i++ >= size) {
93
+ set.delete(item);
94
+ }
95
+ }
96
+ };
97
+
98
+ /**
99
+ * @template K, X
100
+ * @param {Map<K, X>} map map
101
+ * @param {number} size count of items to keep
102
+ */
103
+ const setMapSize = (map, size) => {
104
+ let i = 0;
105
+ for (const item of map.keys()) {
106
+ if (i++ >= size) {
107
+ map.delete(item);
108
+ }
109
+ }
110
+ };
111
+
112
+ /**
113
+ * @param {Buffer} buffer buffer
114
+ * @param {HashFunction} hashFunction hash function to use
115
+ * @returns {string} hash
116
+ */
117
+ const toHash = (buffer, hashFunction) => {
118
+ const hash = createHash(hashFunction);
119
+ hash.update(buffer);
120
+ return hash.digest("latin1");
121
+ };
122
+
123
+ const ESCAPE = null;
124
+ const ESCAPE_ESCAPE_VALUE = null;
125
+ const ESCAPE_END_OBJECT = true;
126
+ const ESCAPE_UNDEFINED = false;
127
+
128
+ const CURRENT_VERSION = 2;
129
+
130
+ /** @typedef {{ request?: string, name?: string | number | null, serializer?: ObjectSerializer }} SerializerConfig */
131
+ /** @typedef {{ request?: string, name?: string | number | null, serializer: ObjectSerializer }} SerializerConfigWithSerializer */
132
+
133
+ /** @type {Map<Constructor | null, SerializerConfig>} */
134
+ const serializers = new Map();
135
+ /** @type {Map<string | number, ObjectSerializer>} */
136
+ const serializerInversed = new Map();
137
+
138
+ /** @type {Set<string>} */
139
+ const loadedRequests = new Set();
140
+
141
+ const NOT_SERIALIZABLE = {};
142
+
143
+ /** @type {Map<Constructor | null, ObjectSerializer>} */
144
+ const jsTypes = new Map();
145
+
146
+ jsTypes.set(Object, new PlainObjectSerializer());
147
+ jsTypes.set(Array, new ArraySerializer());
148
+ jsTypes.set(null, new NullPrototypeObjectSerializer());
149
+ jsTypes.set(Map, new MapObjectSerializer());
150
+ jsTypes.set(Set, new SetObjectSerializer());
151
+ jsTypes.set(Date, new DateObjectSerializer());
152
+ jsTypes.set(RegExp, new RegExpObjectSerializer());
153
+ jsTypes.set(Error, new ErrorObjectSerializer(Error));
154
+ jsTypes.set(EvalError, new ErrorObjectSerializer(EvalError));
155
+ jsTypes.set(RangeError, new ErrorObjectSerializer(RangeError));
156
+ jsTypes.set(ReferenceError, new ErrorObjectSerializer(ReferenceError));
157
+ jsTypes.set(SyntaxError, new ErrorObjectSerializer(SyntaxError));
158
+ jsTypes.set(TypeError, new ErrorObjectSerializer(TypeError));
159
+
160
+ // eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax
161
+ if (typeof AggregateError !== "undefined") {
162
+ jsTypes.set(
163
+ // eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax
164
+ AggregateError,
165
+ new AggregateErrorSerializer()
166
+ );
167
+ }
168
+
169
+ // If in a sandboxed environment (e.g. jest), this escapes the sandbox and registers
170
+ // real Object and Array types to. These types may occur in the wild too, e.g. when
171
+ // using Structured Clone in postMessage.
172
+ // eslint-disable-next-line n/exports-style
173
+ if (exports.constructor !== Object) {
174
+ // eslint-disable-next-line n/exports-style
175
+ const Obj = /** @type {ObjectConstructor} */ (exports.constructor);
176
+ const Fn = /** @type {FunctionConstructor} */ (Obj.constructor);
177
+ for (const [type, config] of jsTypes) {
178
+ if (type) {
179
+ const Type = new Fn(`return ${type.name};`)();
180
+ jsTypes.set(Type, config);
181
+ }
182
+ }
183
+ }
184
+
185
+ {
186
+ let i = 1;
187
+ for (const [type, serializer] of jsTypes) {
188
+ serializers.set(type, {
189
+ request: "",
190
+ name: i++,
191
+ serializer
192
+ });
193
+ }
194
+ }
195
+
196
+ for (const { request, name, serializer } of serializers.values()) {
197
+ serializerInversed.set(
198
+ `${request}/${name}`,
199
+ /** @type {ObjectSerializer} */ (serializer)
200
+ );
201
+ }
202
+
203
+ /** @type {Map<RegExp, (request: string) => boolean>} */
204
+ const loaders = new Map();
205
+
206
+ /** @typedef {ComplexSerializableType[]} DeserializedType */
207
+ /** @typedef {PrimitiveSerializableType[]} SerializedType */
208
+ /** @typedef {{ logger: Logger }} Context */
209
+
210
+ /** @typedef {(context: ObjectSerializerContext | ObjectDeserializerContext) => void} ExtendContext */
211
+
212
+ /**
213
+ * @extends {SerializerMiddleware<DeserializedType, SerializedType, Context>}
214
+ */
215
+ class ObjectMiddleware extends SerializerMiddleware {
216
+ /**
217
+ * @param {ExtendContext} extendContext context extensions
218
+ * @param {HashFunction} hashFunction hash function to use
219
+ */
220
+ constructor(extendContext, hashFunction = DEFAULTS.HASH_FUNCTION) {
221
+ super();
222
+ /** @type {ExtendContext} */
223
+ this.extendContext = extendContext;
224
+ /** @type {HashFunction} */
225
+ this._hashFunction = hashFunction;
226
+ }
227
+
228
+ /**
229
+ * @param {RegExp} regExp RegExp for which the request is tested
230
+ * @param {(request: string) => boolean} loader loader to load the request, returns true when successful
231
+ * @returns {void}
232
+ */
233
+ static registerLoader(regExp, loader) {
234
+ loaders.set(regExp, loader);
235
+ }
236
+
237
+ /**
238
+ * @param {Constructor} Constructor the constructor
239
+ * @param {string} request the request which will be required when deserializing
240
+ * @param {string | null} name the name to make multiple serializer unique when sharing a request
241
+ * @param {ObjectSerializer} serializer the serializer
242
+ * @returns {void}
243
+ */
244
+ static register(Constructor, request, name, serializer) {
245
+ const key = `${request}/${name}`;
246
+
247
+ if (serializers.has(Constructor)) {
248
+ throw new Error(
249
+ `ObjectMiddleware.register: serializer for ${Constructor.name} is already registered`
250
+ );
251
+ }
252
+
253
+ if (serializerInversed.has(key)) {
254
+ throw new Error(
255
+ `ObjectMiddleware.register: serializer for ${key} is already registered`
256
+ );
257
+ }
258
+
259
+ serializers.set(Constructor, {
260
+ request,
261
+ name,
262
+ serializer
263
+ });
264
+
265
+ serializerInversed.set(key, serializer);
266
+ }
267
+
268
+ /**
269
+ * @param {Constructor} Constructor the constructor
270
+ * @returns {void}
271
+ */
272
+ static registerNotSerializable(Constructor) {
273
+ if (serializers.has(Constructor)) {
274
+ throw new Error(
275
+ `ObjectMiddleware.registerNotSerializable: serializer for ${Constructor.name} is already registered`
276
+ );
277
+ }
278
+
279
+ serializers.set(Constructor, NOT_SERIALIZABLE);
280
+ }
281
+
282
+ /**
283
+ * @param {EXPECTED_ANY} object for serialization
284
+ * @returns {SerializerConfigWithSerializer} Serializer config
285
+ */
286
+ static getSerializerFor(object) {
287
+ const proto = Object.getPrototypeOf(object);
288
+ /** @type {null | Constructor} */
289
+ let c;
290
+ if (proto === null) {
291
+ // Object created with Object.create(null)
292
+ c = null;
293
+ } else {
294
+ c = proto.constructor;
295
+ if (!c) {
296
+ throw new Error(
297
+ "Serialization of objects with prototype without valid constructor property not possible"
298
+ );
299
+ }
300
+ }
301
+ const config = serializers.get(c);
302
+
303
+ if (!config) {
304
+ throw new Error(
305
+ `No serializer registered for ${/** @type {Constructor} */ (c).name}`
306
+ );
307
+ }
308
+ if (config === NOT_SERIALIZABLE) throw NOT_SERIALIZABLE;
309
+
310
+ return /** @type {SerializerConfigWithSerializer} */ (config);
311
+ }
312
+
313
+ /**
314
+ * @param {string} request request
315
+ * @param {string} name name
316
+ * @returns {ObjectSerializer} serializer
317
+ */
318
+ static getDeserializerFor(request, name) {
319
+ const key = `${request}/${name}`;
320
+ const serializer = serializerInversed.get(key);
321
+
322
+ if (serializer === undefined) {
323
+ throw new Error(`No deserializer registered for ${key}`);
324
+ }
325
+
326
+ return serializer;
327
+ }
328
+
329
+ /**
330
+ * @param {string} request request
331
+ * @param {string} name name
332
+ * @returns {ObjectSerializer | undefined} serializer
333
+ */
334
+ static _getDeserializerForWithoutError(request, name) {
335
+ const key = `${request}/${name}`;
336
+ const serializer = serializerInversed.get(key);
337
+ return serializer;
338
+ }
339
+
340
+ /**
341
+ * @param {DeserializedType} data data
342
+ * @param {Context} context context object
343
+ * @returns {SerializedType | Promise<SerializedType> | null} serialized data
344
+ */
345
+ serialize(data, context) {
346
+ /** @type {PrimitiveSerializableType[]} */
347
+ let result = [CURRENT_VERSION];
348
+ let currentPos = 0;
349
+ /** @type {Map<ReferenceableItem, number>} */
350
+ let referenceable = new Map();
351
+ /**
352
+ * @param {ReferenceableItem} item referenceable item
353
+ */
354
+ const addReferenceable = (item) => {
355
+ referenceable.set(item, currentPos++);
356
+ };
357
+ /** @type {Map<number, Buffer | [Buffer, Buffer] | Map<string, Buffer>>} */
358
+ let bufferDedupeMap = new Map();
359
+ /**
360
+ * @param {Buffer} buf buffer
361
+ * @returns {Buffer} deduped buffer
362
+ */
363
+ const dedupeBuffer = (buf) => {
364
+ const len = buf.length;
365
+ const entry = bufferDedupeMap.get(len);
366
+ if (entry === undefined) {
367
+ bufferDedupeMap.set(len, buf);
368
+ return buf;
369
+ }
370
+ if (Buffer.isBuffer(entry)) {
371
+ if (len < 32) {
372
+ if (buf.equals(entry)) {
373
+ return entry;
374
+ }
375
+ bufferDedupeMap.set(len, [entry, buf]);
376
+ return buf;
377
+ }
378
+ const hash = toHash(entry, this._hashFunction);
379
+ /** @type {Map<string, Buffer>} */
380
+ const newMap = new Map();
381
+ newMap.set(hash, entry);
382
+ bufferDedupeMap.set(len, newMap);
383
+ const hashBuf = toHash(buf, this._hashFunction);
384
+ if (hash === hashBuf) {
385
+ return entry;
386
+ }
387
+ return buf;
388
+ } else if (Array.isArray(entry)) {
389
+ if (entry.length < 16) {
390
+ for (const item of entry) {
391
+ if (buf.equals(item)) {
392
+ return item;
393
+ }
394
+ }
395
+ entry.push(buf);
396
+ return buf;
397
+ }
398
+ /** @type {Map<string, Buffer>} */
399
+ const newMap = new Map();
400
+ const hash = toHash(buf, this._hashFunction);
401
+ /** @type {undefined | Buffer} */
402
+ let found;
403
+ for (const item of entry) {
404
+ const itemHash = toHash(item, this._hashFunction);
405
+ newMap.set(itemHash, item);
406
+ if (found === undefined && itemHash === hash) found = item;
407
+ }
408
+ bufferDedupeMap.set(len, newMap);
409
+ if (found === undefined) {
410
+ newMap.set(hash, buf);
411
+ return buf;
412
+ }
413
+ return found;
414
+ }
415
+ const hash = toHash(buf, this._hashFunction);
416
+ const item = entry.get(hash);
417
+ if (item !== undefined) {
418
+ return item;
419
+ }
420
+ entry.set(hash, buf);
421
+ return buf;
422
+ };
423
+ let currentPosTypeLookup = 0;
424
+ /** @type {Map<ComplexSerializableType, number>} */
425
+ let objectTypeLookup = new Map();
426
+ /** @type {Set<ComplexSerializableType>} */
427
+ const cycleStack = new Set();
428
+ /**
429
+ * @param {ComplexSerializableType} item item to stack
430
+ * @returns {string} stack
431
+ */
432
+ const stackToString = (item) => {
433
+ const arr = [...cycleStack];
434
+ arr.push(item);
435
+ return arr
436
+ .map((item) => {
437
+ if (typeof item === "string") {
438
+ if (item.length > 100) {
439
+ return `String ${JSON.stringify(item.slice(0, 100)).slice(
440
+ 0,
441
+ -1
442
+ )}..."`;
443
+ }
444
+ return `String ${JSON.stringify(item)}`;
445
+ }
446
+ try {
447
+ const { request, name } = ObjectMiddleware.getSerializerFor(item);
448
+ if (request) {
449
+ return `${request}${name ? `.${name}` : ""}`;
450
+ }
451
+ } catch (_err) {
452
+ // ignore -> fallback
453
+ }
454
+ if (typeof item === "object" && item !== null) {
455
+ if (item.constructor) {
456
+ if (item.constructor === Object) {
457
+ return `Object { ${Object.keys(item).join(", ")} }`;
458
+ }
459
+ if (item.constructor === Map) {
460
+ return `Map { ${/** @type {Map<EXPECTED_ANY, EXPECTED_ANY>} */ (item).size} items }`;
461
+ }
462
+ if (item.constructor === Array) {
463
+ return `Array { ${/** @type {EXPECTED_ANY[]} */ (item).length} items }`;
464
+ }
465
+ if (item.constructor === Set) {
466
+ return `Set { ${/** @type {Set<EXPECTED_ANY>} */ (item).size} items }`;
467
+ }
468
+ if (item.constructor === RegExp) {
469
+ return /** @type {RegExp} */ (item).toString();
470
+ }
471
+ return `${item.constructor.name}`;
472
+ }
473
+ return `Object [null prototype] { ${Object.keys(item).join(
474
+ ", "
475
+ )} }`;
476
+ }
477
+ if (typeof item === "bigint") {
478
+ return `BigInt ${item}n`;
479
+ }
480
+ try {
481
+ return `${item}`;
482
+ } catch (err) {
483
+ return `(${/** @type {Error} */ (err).message})`;
484
+ }
485
+ })
486
+ .join(" -> ");
487
+ };
488
+ /** @type {undefined | WeakSet<Error>} */
489
+ let hasDebugInfoAttached;
490
+ /** @type {ObjectSerializerContext} */
491
+ let ctx = {
492
+ write(value) {
493
+ try {
494
+ process(value);
495
+ } catch (err) {
496
+ if (err !== NOT_SERIALIZABLE) {
497
+ if (hasDebugInfoAttached === undefined) {
498
+ hasDebugInfoAttached = new WeakSet();
499
+ }
500
+ if (!hasDebugInfoAttached.has(/** @type {Error} */ (err))) {
501
+ /** @type {Error} */
502
+ (err).message += `\nwhile serializing ${stackToString(value)}`;
503
+ hasDebugInfoAttached.add(/** @type {Error} */ (err));
504
+ }
505
+ }
506
+ throw err;
507
+ }
508
+ },
509
+ setCircularReference(ref) {
510
+ addReferenceable(ref);
511
+ },
512
+ snapshot() {
513
+ return {
514
+ length: result.length,
515
+ cycleStackSize: cycleStack.size,
516
+ referenceableSize: referenceable.size,
517
+ currentPos,
518
+ objectTypeLookupSize: objectTypeLookup.size,
519
+ currentPosTypeLookup
520
+ };
521
+ },
522
+ rollback(snapshot) {
523
+ result.length = snapshot.length;
524
+ setSetSize(cycleStack, snapshot.cycleStackSize);
525
+ setMapSize(referenceable, snapshot.referenceableSize);
526
+ currentPos = snapshot.currentPos;
527
+ setMapSize(objectTypeLookup, snapshot.objectTypeLookupSize);
528
+ currentPosTypeLookup = snapshot.currentPosTypeLookup;
529
+ },
530
+ ...context
531
+ };
532
+ this.extendContext(ctx);
533
+ /**
534
+ * @param {ComplexSerializableType} item item to serialize
535
+ */
536
+ const process = (item) => {
537
+ if (Buffer.isBuffer(item)) {
538
+ // check if we can emit a reference
539
+ const ref = referenceable.get(item);
540
+ if (ref !== undefined) {
541
+ result.push(ESCAPE, ref - currentPos);
542
+ return;
543
+ }
544
+ const alreadyUsedBuffer = dedupeBuffer(item);
545
+ if (alreadyUsedBuffer !== item) {
546
+ const ref = referenceable.get(alreadyUsedBuffer);
547
+ if (ref !== undefined) {
548
+ referenceable.set(item, ref);
549
+ result.push(ESCAPE, ref - currentPos);
550
+ return;
551
+ }
552
+ item = alreadyUsedBuffer;
553
+ }
554
+ addReferenceable(item);
555
+
556
+ result.push(/** @type {Buffer} */ (item));
557
+ } else if (item === ESCAPE) {
558
+ result.push(ESCAPE, ESCAPE_ESCAPE_VALUE);
559
+ } else if (
560
+ typeof item === "object"
561
+ // We don't have to check for null as ESCAPE is null and this has been checked before
562
+ ) {
563
+ // check if we can emit a reference
564
+ const ref = referenceable.get(item);
565
+ if (ref !== undefined) {
566
+ result.push(ESCAPE, ref - currentPos);
567
+ return;
568
+ }
569
+
570
+ if (cycleStack.has(item)) {
571
+ throw new Error(
572
+ "This is a circular references. To serialize circular references use 'setCircularReference' somewhere in the circle during serialize and deserialize."
573
+ );
574
+ }
575
+
576
+ const { request, name, serializer } = ObjectMiddleware.getSerializerFor(
577
+ /** @type {Constructor} */
578
+ (item)
579
+ );
580
+ const key = `${request}/${name}`;
581
+ const lastIndex = objectTypeLookup.get(key);
582
+
583
+ if (lastIndex === undefined) {
584
+ objectTypeLookup.set(key, currentPosTypeLookup++);
585
+
586
+ result.push(ESCAPE, request, name);
587
+ } else {
588
+ result.push(ESCAPE, currentPosTypeLookup - lastIndex);
589
+ }
590
+
591
+ cycleStack.add(item);
592
+
593
+ try {
594
+ serializer.serialize(item, ctx);
595
+ } finally {
596
+ cycleStack.delete(item);
597
+ }
598
+
599
+ result.push(ESCAPE, ESCAPE_END_OBJECT);
600
+
601
+ addReferenceable(item);
602
+ } else if (typeof item === "string") {
603
+ if (item.length > 1) {
604
+ // short strings are shorter when not emitting a reference (this saves 1 byte per empty string)
605
+ // check if we can emit a reference
606
+ const ref = referenceable.get(item);
607
+ if (ref !== undefined) {
608
+ result.push(ESCAPE, ref - currentPos);
609
+ return;
610
+ }
611
+ addReferenceable(item);
612
+ }
613
+
614
+ if (item.length > 102400 && context.logger) {
615
+ context.logger.warn(
616
+ `Serializing big strings (${Math.round(
617
+ item.length / 1024
618
+ )}kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)`
619
+ );
620
+ }
621
+
622
+ result.push(item);
623
+ } else if (typeof item === "function") {
624
+ if (!SerializerMiddleware.isLazy(item)) {
625
+ throw new Error(`Unexpected function ${item}`);
626
+ }
627
+
628
+ /** @type {SerializedType | undefined} */
629
+ const serializedData =
630
+ SerializerMiddleware.getLazySerializedValue(item);
631
+
632
+ if (serializedData !== undefined) {
633
+ if (typeof serializedData === "function") {
634
+ result.push(serializedData);
635
+ } else {
636
+ throw new Error("Not implemented");
637
+ }
638
+ } else if (SerializerMiddleware.isLazy(item, this)) {
639
+ throw new Error("Not implemented");
640
+ } else {
641
+ const data =
642
+ /** @type {() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>} */
643
+ (
644
+ SerializerMiddleware.serializeLazy(item, (data) =>
645
+ this.serialize([data], context)
646
+ )
647
+ );
648
+ SerializerMiddleware.setLazySerializedValue(item, data);
649
+ result.push(data);
650
+ }
651
+ } else if (item === undefined) {
652
+ result.push(ESCAPE, ESCAPE_UNDEFINED);
653
+ } else {
654
+ result.push(item);
655
+ }
656
+ };
657
+
658
+ try {
659
+ for (const item of data) {
660
+ process(item);
661
+ }
662
+ return result;
663
+ } catch (err) {
664
+ if (err === NOT_SERIALIZABLE) return null;
665
+
666
+ throw err;
667
+ } finally {
668
+ // Get rid of these references to avoid leaking memory
669
+ // This happens because the optimized code v8 generates
670
+ // is optimized for our "ctx.write" method so it will reference
671
+ // it from e. g. Dependency.prototype.serialize -(IC)-> ctx.write
672
+ data =
673
+ result =
674
+ referenceable =
675
+ bufferDedupeMap =
676
+ objectTypeLookup =
677
+ ctx =
678
+ /** @type {EXPECTED_ANY} */
679
+ (undefined);
680
+ }
681
+ }
682
+
683
+ /**
684
+ * @param {SerializedType} data data
685
+ * @param {Context} context context object
686
+ * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
687
+ */
688
+ deserialize(data, context) {
689
+ let currentDataPos = 0;
690
+ const read = () => {
691
+ if (currentDataPos >= data.length) {
692
+ throw new Error("Unexpected end of stream");
693
+ }
694
+
695
+ return data[currentDataPos++];
696
+ };
697
+
698
+ if (read() !== CURRENT_VERSION) {
699
+ throw new Error("Version mismatch, serializer changed");
700
+ }
701
+
702
+ let currentPos = 0;
703
+ /** @type {ReferenceableItem[]} */
704
+ let referenceable = [];
705
+ /**
706
+ * @param {ReferenceableItem} item referenceable item
707
+ */
708
+ const addReferenceable = (item) => {
709
+ referenceable.push(item);
710
+ currentPos++;
711
+ };
712
+ let currentPosTypeLookup = 0;
713
+ /** @type {ObjectSerializer[]} */
714
+ let objectTypeLookup = [];
715
+ /** @type {ComplexSerializableType[]} */
716
+ let result = [];
717
+ /** @type {ObjectDeserializerContext} */
718
+ let ctx = {
719
+ read() {
720
+ return decodeValue();
721
+ },
722
+ setCircularReference(ref) {
723
+ addReferenceable(ref);
724
+ },
725
+ ...context
726
+ };
727
+ this.extendContext(ctx);
728
+ /**
729
+ * @returns {ComplexSerializableType} deserialize value
730
+ */
731
+ const decodeValue = () => {
732
+ const item = read();
733
+
734
+ if (item === ESCAPE) {
735
+ const nextItem = read();
736
+
737
+ if (nextItem === ESCAPE_ESCAPE_VALUE) {
738
+ return ESCAPE;
739
+ } else if (nextItem === ESCAPE_UNDEFINED) {
740
+ // Nothing
741
+ } else if (nextItem === ESCAPE_END_OBJECT) {
742
+ throw new Error(
743
+ `Unexpected end of object at position ${currentDataPos - 1}`
744
+ );
745
+ } else {
746
+ const request = nextItem;
747
+ /** @type {undefined | ObjectSerializer} */
748
+ let serializer;
749
+
750
+ if (typeof request === "number") {
751
+ if (request < 0) {
752
+ // relative reference
753
+ return referenceable[currentPos + request];
754
+ }
755
+ serializer = objectTypeLookup[currentPosTypeLookup - request];
756
+ } else {
757
+ if (typeof request !== "string") {
758
+ throw new Error(
759
+ `Unexpected type (${typeof request}) of request ` +
760
+ `at position ${currentDataPos - 1}`
761
+ );
762
+ }
763
+ const name = /** @type {string} */ (read());
764
+
765
+ serializer = ObjectMiddleware._getDeserializerForWithoutError(
766
+ request,
767
+ name
768
+ );
769
+
770
+ if (serializer === undefined) {
771
+ if (request && !loadedRequests.has(request)) {
772
+ let loaded = false;
773
+ for (const [regExp, loader] of loaders) {
774
+ if (regExp.test(request) && loader(request)) {
775
+ loaded = true;
776
+ break;
777
+ }
778
+ }
779
+ if (!loaded) {
780
+ require(request);
781
+ }
782
+
783
+ loadedRequests.add(request);
784
+ }
785
+
786
+ serializer = ObjectMiddleware.getDeserializerFor(request, name);
787
+ }
788
+
789
+ objectTypeLookup.push(serializer);
790
+ currentPosTypeLookup++;
791
+ }
792
+ try {
793
+ const item = serializer.deserialize(ctx);
794
+ const end1 = read();
795
+
796
+ if (end1 !== ESCAPE) {
797
+ throw new Error("Expected end of object");
798
+ }
799
+
800
+ const end2 = read();
801
+
802
+ if (end2 !== ESCAPE_END_OBJECT) {
803
+ throw new Error("Expected end of object");
804
+ }
805
+
806
+ addReferenceable(item);
807
+
808
+ return item;
809
+ } catch (err) {
810
+ // As this is only for error handling, we omit creating a Map for
811
+ // faster access to this information, as this would affect performance
812
+ // in the good case
813
+ /** @type {undefined | [Constructor | null, SerializerConfig]} */
814
+ let serializerEntry;
815
+ for (const entry of serializers) {
816
+ if (entry[1].serializer === serializer) {
817
+ serializerEntry = entry;
818
+ break;
819
+ }
820
+ }
821
+ const name = !serializerEntry
822
+ ? "unknown"
823
+ : !serializerEntry[1].request
824
+ ? /** @type {Constructor[]} */ (serializerEntry)[0].name
825
+ : serializerEntry[1].name
826
+ ? `${serializerEntry[1].request} ${serializerEntry[1].name}`
827
+ : serializerEntry[1].request;
828
+ /** @type {Error} */
829
+ (err).message += `\n(during deserialization of ${name})`;
830
+ throw err;
831
+ }
832
+ }
833
+ } else if (typeof item === "string") {
834
+ if (item.length > 1) {
835
+ addReferenceable(item);
836
+ }
837
+
838
+ return item;
839
+ } else if (Buffer.isBuffer(item)) {
840
+ addReferenceable(item);
841
+
842
+ return item;
843
+ } else if (typeof item === "function") {
844
+ return SerializerMiddleware.deserializeLazy(
845
+ item,
846
+ (data) =>
847
+ /** @type {[DeserializedType]} */
848
+ (this.deserialize(data, context))[0]
849
+ );
850
+ } else {
851
+ return item;
852
+ }
853
+ };
854
+
855
+ try {
856
+ while (currentDataPos < data.length) {
857
+ result.push(decodeValue());
858
+ }
859
+ return result;
860
+ } finally {
861
+ // Get rid of these references to avoid leaking memory
862
+ // This happens because the optimized code v8 generates
863
+ // is optimized for our "ctx.read" method so it will reference
864
+ // it from e. g. Dependency.prototype.deserialize -(IC)-> ctx.read
865
+ result =
866
+ referenceable =
867
+ data =
868
+ objectTypeLookup =
869
+ ctx =
870
+ /** @type {EXPECTED_ANY} */
871
+ (undefined);
872
+ }
873
+ }
874
+ }
875
+
876
+ module.exports = ObjectMiddleware;
877
+ module.exports.NOT_SERIALIZABLE = NOT_SERIALIZABLE;