@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
@@ -4,14 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  class MapObjectSerializer {
11
8
  /**
9
+ * Serializes this instance into the provided serializer context.
12
10
  * @template K, V
13
11
  * @param {Map<K, V>} obj map
14
- * @param {ObjectSerializerContext} context context
12
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | K | V)[]>} context context
15
13
  */
16
14
  serialize(obj, context) {
17
15
  context.write(obj.size);
@@ -24,22 +22,22 @@ class MapObjectSerializer {
24
22
  }
25
23
 
26
24
  /**
25
+ * Restores this instance from the provided deserializer context.
27
26
  * @template K, V
28
- * @param {ObjectDeserializerContext} context context
27
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | K | V)[]>} context context
29
28
  * @returns {Map<K, V>} map
30
29
  */
31
30
  deserialize(context) {
32
- /** @type {number} */
33
- const size = context.read();
31
+ const size = /** @type {number} */ (context.read());
34
32
  /** @type {Map<K, V>} */
35
33
  const map = new Map();
36
34
  /** @type {K[]} */
37
35
  const keys = [];
38
36
  for (let i = 0; i < size; i++) {
39
- keys.push(context.read());
37
+ keys.push(/** @type {K} */ (context.read()));
40
38
  }
41
39
  for (let i = 0; i < size; i++) {
42
- map.set(keys[i], context.read());
40
+ map.set(keys[i], /** @type {V} */ (context.read()));
43
41
  }
44
42
  return map;
45
43
  }
@@ -4,16 +4,14 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  /** @typedef {string[]} Keys */
11
8
 
12
9
  class NullPrototypeObjectSerializer {
13
10
  /**
11
+ * Serializes this instance into the provided serializer context.
14
12
  * @template {object} T
15
13
  * @param {T} obj null object
16
- * @param {ObjectSerializerContext} context context
14
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(string | null | T[keyof T])[]>} context context
17
15
  */
18
16
  serialize(obj, context) {
19
17
  /** @type {Keys} */
@@ -28,8 +26,9 @@ class NullPrototypeObjectSerializer {
28
26
  }
29
27
 
30
28
  /**
29
+ * Restores this instance from the provided deserializer context.
31
30
  * @template {object} T
32
- * @param {ObjectDeserializerContext} context context
31
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(string | null | T[keyof T])[]>} context context
33
32
  * @returns {T} null object
34
33
  */
35
34
  deserialize(context) {
@@ -37,14 +36,15 @@ class NullPrototypeObjectSerializer {
37
36
  const obj = Object.create(null);
38
37
  /** @type {Keys} */
39
38
  const keys = [];
40
- /** @type {Keys[number] | null} */
41
- let key = context.read();
39
+ let key = /** @type {string | null} */ (context.read());
42
40
  while (key !== null) {
43
41
  keys.push(key);
44
- key = context.read();
42
+ key = /** @type {string | null} */ (context.read());
45
43
  }
46
44
  for (const key of keys) {
47
- obj[/** @type {keyof T} */ (key)] = context.read();
45
+ obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
46
+ context.read()
47
+ );
48
48
  }
49
49
  return obj;
50
50
  }
@@ -48,6 +48,7 @@ Technically any value can be used.
48
48
  */
49
49
 
50
50
  /**
51
+ * Defines the object serializer snapshot type used by this module.
51
52
  * @typedef {object} ObjectSerializerSnapshot
52
53
  * @property {number} length
53
54
  * @property {number} cycleStackSize
@@ -60,8 +61,23 @@ Technically any value can be used.
60
61
  /** @typedef {EXPECTED_OBJECT | string} ReferenceableItem */
61
62
 
62
63
  /**
64
+ * First tuple element; element type for an open array; `EXPECTED_ANY` once exhausted.
65
+ * @template {readonly EXPECTED_ANY[]} T
66
+ * @typedef {T extends readonly [infer H, ...EXPECTED_ANY[]] ? H : T extends readonly [] ? EXPECTED_ANY : T extends readonly (infer E)[] ? E : never} Head
67
+ */
68
+
69
+ /**
70
+ * Tuple without its first element; unchanged when `T` is an open array.
71
+ * @template {readonly EXPECTED_ANY[]} T
72
+ * @typedef {T extends readonly [EXPECTED_ANY, ...infer R] ? R : T} Tail
73
+ */
74
+
75
+ /**
76
+ * Defines the object serializer context type used by this module.
77
+ * `T` is the tuple of values written in order; each `write` consumes the head.
78
+ * @template {readonly EXPECTED_ANY[]} [T=readonly EXPECTED_ANY[]]
63
79
  * @typedef {object} ObjectSerializerContext
64
- * @property {(value: EXPECTED_ANY) => void} write
80
+ * @property {(value: Head<T>) => ObjectSerializerContext<Tail<T>>} write
65
81
  * @property {(value: ReferenceableItem) => void} setCircularReference
66
82
  * @property {() => ObjectSerializerSnapshot} snapshot
67
83
  * @property {(snapshot: ObjectSerializerSnapshot) => void} rollback
@@ -70,18 +86,25 @@ Technically any value can be used.
70
86
  */
71
87
 
72
88
  /**
89
+ * Defines the object deserializer context type used by this module.
90
+ * `T` is the tuple of values read in order: `read` returns the head, and `rest`
91
+ * re-types the same context to `Tail<T>` so successive reads stay positional.
92
+ * @template {readonly EXPECTED_ANY[]} [T=readonly EXPECTED_ANY[]]
73
93
  * @typedef {object} ObjectDeserializerContext
74
- * @property {() => EXPECTED_ANY} read
94
+ * @property {() => Head<T>} read
95
+ * @property {ObjectDeserializerContext<Tail<T>>} rest
75
96
  * @property {(value: ReferenceableItem) => void} setCircularReference
76
97
  */
77
98
 
78
99
  /**
100
+ * Defines the object serializer type used by this module.
79
101
  * @typedef {object} ObjectSerializer
80
- * @property {(value: EXPECTED_ANY, context: ObjectSerializerContext) => void} serialize
81
- * @property {(context: ObjectDeserializerContext) => EXPECTED_ANY} deserialize
102
+ * @property {(value: EXPECTED_ANY, context: ObjectSerializerContext<EXPECTED_ANY>) => void} serialize
103
+ * @property {(context: ObjectDeserializerContext<EXPECTED_ANY>) => EXPECTED_ANY} deserialize
82
104
  */
83
105
 
84
106
  /**
107
+ * Updates set size using the provided set.
85
108
  * @template T
86
109
  * @param {Set<T>} set set
87
110
  * @param {number} size count of items to keep
@@ -96,6 +119,7 @@ const setSetSize = (set, size) => {
96
119
  };
97
120
 
98
121
  /**
122
+ * Updates map size using the provided map.
99
123
  * @template K, X
100
124
  * @param {Map<K, X>} map map
101
125
  * @param {number} size count of items to keep
@@ -110,6 +134,7 @@ const setMapSize = (map, size) => {
110
134
  };
111
135
 
112
136
  /**
137
+ * Returns hash.
113
138
  * @param {Buffer} buffer buffer
114
139
  * @param {HashFunction} hashFunction hash function to use
115
140
  * @returns {string} hash
@@ -207,13 +232,15 @@ const loaders = new Map();
207
232
  /** @typedef {PrimitiveSerializableType[]} SerializedType */
208
233
  /** @typedef {{ logger: Logger }} Context */
209
234
 
210
- /** @typedef {(context: ObjectSerializerContext | ObjectDeserializerContext) => void} ExtendContext */
235
+ /** @typedef {(context: ObjectSerializerContext<EXPECTED_ANY> | ObjectDeserializerContext<EXPECTED_ANY>) => void} ExtendContext */
211
236
 
212
237
  /**
238
+ * Represents ObjectMiddleware.
213
239
  * @extends {SerializerMiddleware<DeserializedType, SerializedType, Context>}
214
240
  */
215
241
  class ObjectMiddleware extends SerializerMiddleware {
216
242
  /**
243
+ * Creates an instance of ObjectMiddleware.
217
244
  * @param {ExtendContext} extendContext context extensions
218
245
  * @param {HashFunction} hashFunction hash function to use
219
246
  */
@@ -226,6 +253,7 @@ class ObjectMiddleware extends SerializerMiddleware {
226
253
  }
227
254
 
228
255
  /**
256
+ * Processes the provided reg exp.
229
257
  * @param {RegExp} regExp RegExp for which the request is tested
230
258
  * @param {(request: string) => boolean} loader loader to load the request, returns true when successful
231
259
  * @returns {void}
@@ -235,6 +263,7 @@ class ObjectMiddleware extends SerializerMiddleware {
235
263
  }
236
264
 
237
265
  /**
266
+ * Processes the provided constructor.
238
267
  * @param {Constructor} Constructor the constructor
239
268
  * @param {string} request the request which will be required when deserializing
240
269
  * @param {string | null} name the name to make multiple serializer unique when sharing a request
@@ -266,6 +295,7 @@ class ObjectMiddleware extends SerializerMiddleware {
266
295
  }
267
296
 
268
297
  /**
298
+ * Register not serializable.
269
299
  * @param {Constructor} Constructor the constructor
270
300
  * @returns {void}
271
301
  */
@@ -280,6 +310,7 @@ class ObjectMiddleware extends SerializerMiddleware {
280
310
  }
281
311
 
282
312
  /**
313
+ * Gets serializer for.
283
314
  * @param {EXPECTED_ANY} object for serialization
284
315
  * @returns {SerializerConfigWithSerializer} Serializer config
285
316
  */
@@ -311,6 +342,7 @@ class ObjectMiddleware extends SerializerMiddleware {
311
342
  }
312
343
 
313
344
  /**
345
+ * Gets deserializer for.
314
346
  * @param {string} request request
315
347
  * @param {string} name name
316
348
  * @returns {ObjectSerializer} serializer
@@ -327,6 +359,7 @@ class ObjectMiddleware extends SerializerMiddleware {
327
359
  }
328
360
 
329
361
  /**
362
+ * Get deserializer for without error.
330
363
  * @param {string} request request
331
364
  * @param {string} name name
332
365
  * @returns {ObjectSerializer | undefined} serializer
@@ -338,6 +371,7 @@ class ObjectMiddleware extends SerializerMiddleware {
338
371
  }
339
372
 
340
373
  /**
374
+ * Serializes this instance into the provided serializer context.
341
375
  * @param {DeserializedType} data data
342
376
  * @param {Context} context context object
343
377
  * @returns {SerializedType | Promise<SerializedType> | null} serialized data
@@ -349,6 +383,7 @@ class ObjectMiddleware extends SerializerMiddleware {
349
383
  /** @type {Map<ReferenceableItem, number>} */
350
384
  let referenceable = new Map();
351
385
  /**
386
+ * Adds referenceable.
352
387
  * @param {ReferenceableItem} item referenceable item
353
388
  */
354
389
  const addReferenceable = (item) => {
@@ -357,6 +392,7 @@ class ObjectMiddleware extends SerializerMiddleware {
357
392
  /** @type {Map<number, Buffer | [Buffer, Buffer] | Map<string, Buffer>>} */
358
393
  let bufferDedupeMap = new Map();
359
394
  /**
395
+ * Returns deduped buffer.
360
396
  * @param {Buffer} buf buffer
361
397
  * @returns {Buffer} deduped buffer
362
398
  */
@@ -426,6 +462,7 @@ class ObjectMiddleware extends SerializerMiddleware {
426
462
  /** @type {Set<ComplexSerializableType>} */
427
463
  const cycleStack = new Set();
428
464
  /**
465
+ * Returns stack.
429
466
  * @param {ComplexSerializableType} item item to stack
430
467
  * @returns {string} stack
431
468
  */
@@ -487,11 +524,11 @@ class ObjectMiddleware extends SerializerMiddleware {
487
524
  };
488
525
  /** @type {undefined | WeakSet<Error>} */
489
526
  let hasDebugInfoAttached;
490
- /** @type {ObjectSerializerContext} */
527
+ /** @type {ObjectSerializerContext<EXPECTED_ANY>} */
491
528
  let ctx = {
492
529
  write(value) {
493
530
  try {
494
- process(value);
531
+ process(/** @type {ComplexSerializableType} */ (value));
495
532
  } catch (err) {
496
533
  if (err !== NOT_SERIALIZABLE) {
497
534
  if (hasDebugInfoAttached === undefined) {
@@ -499,12 +536,14 @@ class ObjectMiddleware extends SerializerMiddleware {
499
536
  }
500
537
  if (!hasDebugInfoAttached.has(/** @type {Error} */ (err))) {
501
538
  /** @type {Error} */
502
- (err).message += `\nwhile serializing ${stackToString(value)}`;
539
+ (err).message +=
540
+ `\nwhile serializing ${stackToString(/** @type {ComplexSerializableType} */ (value))}`;
503
541
  hasDebugInfoAttached.add(/** @type {Error} */ (err));
504
542
  }
505
543
  }
506
544
  throw err;
507
545
  }
546
+ return ctx;
508
547
  },
509
548
  setCircularReference(ref) {
510
549
  addReferenceable(ref);
@@ -531,6 +570,7 @@ class ObjectMiddleware extends SerializerMiddleware {
531
570
  };
532
571
  this.extendContext(ctx);
533
572
  /**
573
+ * Processes the provided item.
534
574
  * @param {ComplexSerializableType} item item to serialize
535
575
  */
536
576
  const process = (item) => {
@@ -605,8 +645,19 @@ class ObjectMiddleware extends SerializerMiddleware {
605
645
  // check if we can emit a reference
606
646
  const ref = referenceable.get(item);
607
647
  if (ref !== undefined) {
608
- result.push(ESCAPE, ref - currentPos);
609
- return;
648
+ const offset = ref - currentPos;
649
+ if (
650
+ // One far ref → 5 bytes (`null` + offset), one near ref -> 2/3 bytes
651
+ offset >= -32768 ||
652
+ // long enough that the ref wins, keep it
653
+ item.length >= 4 ||
654
+ // multibyte → inline would be even bigger, keep it
655
+ Buffer.byteLength(item) !== item.length
656
+ ) {
657
+ // A back-reference is `null` + the offset.
658
+ result.push(ESCAPE, offset);
659
+ return;
660
+ }
610
661
  }
611
662
  addReferenceable(item);
612
663
  }
@@ -681,6 +732,7 @@ class ObjectMiddleware extends SerializerMiddleware {
681
732
  }
682
733
 
683
734
  /**
735
+ * Restores this instance from the provided deserializer context.
684
736
  * @param {SerializedType} data data
685
737
  * @param {Context} context context object
686
738
  * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
@@ -703,6 +755,7 @@ class ObjectMiddleware extends SerializerMiddleware {
703
755
  /** @type {ReferenceableItem[]} */
704
756
  let referenceable = [];
705
757
  /**
758
+ * Adds referenceable.
706
759
  * @param {ReferenceableItem} item referenceable item
707
760
  */
708
761
  const addReferenceable = (item) => {
@@ -714,10 +767,14 @@ class ObjectMiddleware extends SerializerMiddleware {
714
767
  let objectTypeLookup = [];
715
768
  /** @type {ComplexSerializableType[]} */
716
769
  let result = [];
717
- /** @type {ObjectDeserializerContext} */
770
+ /** @type {ObjectDeserializerContext<EXPECTED_ANY>} */
718
771
  let ctx = {
719
772
  read() {
720
- return decodeValue();
773
+ return /** @type {EXPECTED_ANY} */ (decodeValue());
774
+ },
775
+ // type-only cursor advance; same object, retyped to the tuple tail
776
+ get rest() {
777
+ return ctx;
721
778
  },
722
779
  setCircularReference(ref) {
723
780
  addReferenceable(ref);
@@ -726,6 +783,7 @@ class ObjectMiddleware extends SerializerMiddleware {
726
783
  };
727
784
  this.extendContext(ctx);
728
785
  /**
786
+ * Decodes the provided value.
729
787
  * @returns {ComplexSerializableType} deserialize value
730
788
  */
731
789
  const decodeValue = () => {
@@ -836,7 +894,9 @@ class ObjectMiddleware extends SerializerMiddleware {
836
894
  }
837
895
 
838
896
  return item;
839
- } else if (Buffer.isBuffer(item)) {
897
+ } else if (typeof item === "object") {
898
+ // Only non-null objects reach here (ESCAPE/null handled above), and
899
+ // the stream's only object type is Buffer — avoids a Buffer.isBuffer call
840
900
  addReferenceable(item);
841
901
 
842
902
  return item;
@@ -4,18 +4,17 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  /** @typedef {EXPECTED_FUNCTION} CacheAssoc */
11
8
 
12
9
  /**
10
+ * Defines the shared type used by this module.
13
11
  * @template T
14
12
  * @typedef {WeakMap<CacheAssoc, ObjectStructure<T>>}
15
13
  */
16
14
  const cache = new WeakMap();
17
15
 
18
16
  /**
17
+ * Represents ObjectStructure.
19
18
  * @template T
20
19
  */
21
20
  class ObjectStructure {
@@ -27,6 +26,7 @@ class ObjectStructure {
27
26
  }
28
27
 
29
28
  /**
29
+ * Returns keys.
30
30
  * @param {keyof T[]} keys keys
31
31
  * @returns {keyof T[]} keys
32
32
  */
@@ -36,6 +36,7 @@ class ObjectStructure {
36
36
  }
37
37
 
38
38
  /**
39
+ * Returns object structure.
39
40
  * @param {keyof T} key key
40
41
  * @returns {ObjectStructure<T>} object structure
41
42
  */
@@ -50,6 +51,7 @@ class ObjectStructure {
50
51
  }
51
52
 
52
53
  /**
54
+ * Returns keys.
53
55
  * @template T
54
56
  * @param {(keyof T)[]} keys keys
55
57
  * @param {CacheAssoc} cacheAssoc cache assoc fn
@@ -70,9 +72,10 @@ const getCachedKeys = (keys, cacheAssoc) => {
70
72
 
71
73
  class PlainObjectSerializer {
72
74
  /**
75
+ * Serializes this instance into the provided serializer context.
73
76
  * @template {object} T
74
77
  * @param {T} obj plain object
75
- * @param {ObjectSerializerContext} context context
78
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
76
79
  */
77
80
  serialize(obj, context) {
78
81
  const keys = /** @type {(keyof T)[]} */ (Object.keys(obj));
@@ -98,19 +101,24 @@ class PlainObjectSerializer {
98
101
  }
99
102
 
100
103
  /**
104
+ * Restores this instance from the provided deserializer context.
101
105
  * @template {object} T
102
- * @param {ObjectDeserializerContext} context context
106
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
103
107
  * @returns {T} plain object
104
108
  */
105
109
  deserialize(context) {
106
- const keys = context.read();
110
+ const keys = /** @type {(keyof T)[] | keyof T | null} */ (context.read());
107
111
  const obj = /** @type {T} */ ({});
108
112
  if (Array.isArray(keys)) {
109
113
  for (const key of keys) {
110
- obj[/** @type {keyof T} */ (key)] = context.read();
114
+ obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
115
+ context.read()
116
+ );
111
117
  }
112
118
  } else if (keys !== null) {
113
- obj[/** @type {keyof T} */ (keys)] = context.read();
119
+ obj[/** @type {keyof T} */ (keys)] = /** @type {T[keyof T]} */ (
120
+ context.read()
121
+ );
114
122
  }
115
123
  return obj;
116
124
  }
@@ -4,11 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
7
+ /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext<[string, string]>} ObjectDeserializerContext */
8
+ /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<[string, string]>} ObjectSerializerContext */
9
9
 
10
10
  class RegExpObjectSerializer {
11
11
  /**
12
+ * Serializes this instance into the provided serializer context.
12
13
  * @param {RegExp} obj regexp
13
14
  * @param {ObjectSerializerContext} context context
14
15
  */
@@ -18,6 +19,7 @@ class RegExpObjectSerializer {
18
19
  }
19
20
 
20
21
  /**
22
+ * Restores this instance from the provided deserializer context.
21
23
  * @param {ObjectDeserializerContext} context context
22
24
  * @returns {RegExp} regexp
23
25
  */
@@ -5,27 +5,32 @@
5
5
  "use strict";
6
6
 
7
7
  /**
8
+ * Defines the serializer middleware type used by this module.
8
9
  * @template T, K, C
9
10
  * @typedef {import("./SerializerMiddleware")<T, K, C>} SerializerMiddleware
10
11
  */
11
12
 
12
13
  /**
14
+ * Represents Serializer.
13
15
  * @template DeserializedValue
14
16
  * @template SerializedValue
15
17
  * @template Context
16
18
  */
17
19
  class Serializer {
18
20
  /**
21
+ * Creates an instance of Serializer.
19
22
  * @param {SerializerMiddleware<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>[]} middlewares serializer middlewares
20
23
  * @param {Context=} context context
21
24
  */
22
25
  constructor(middlewares, context) {
23
26
  this.serializeMiddlewares = [...middlewares];
24
27
  this.deserializeMiddlewares = [...middlewares].reverse();
28
+ /** @type {Context | undefined} */
25
29
  this.context = context;
26
30
  }
27
31
 
28
32
  /**
33
+ * Serializes this instance into the provided serializer context.
29
34
  * @template ExtendedContext
30
35
  * @param {DeserializedValue | Promise<DeserializedValue>} obj object
31
36
  * @param {Context & ExtendedContext} context context object
@@ -57,6 +62,7 @@ class Serializer {
57
62
  }
58
63
 
59
64
  /**
65
+ * Restores this instance from the provided deserializer context.
60
66
  * @template ExtendedContext
61
67
  * @param {SerializedValue | Promise<SerializedValue>} value value
62
68
  * @param {Context & ExtendedContext} context object
@@ -13,6 +13,7 @@ const LAZY_SERIALIZED_VALUE = Symbol("lazy serialization data");
13
13
  /** @typedef {Record<string, EXPECTED_ANY>} LazyOptions */
14
14
 
15
15
  /**
16
+ * Defines the lazy function type used by this module.
16
17
  * @template InputValue
17
18
  * @template OutputValue
18
19
  * @template {LazyTarget} InternalLazyTarget
@@ -21,6 +22,7 @@ const LAZY_SERIALIZED_VALUE = Symbol("lazy serialization data");
21
22
  */
22
23
 
23
24
  /**
25
+ * Represents SerializerMiddleware.
24
26
  * @template DeserializedType
25
27
  * @template SerializedType
26
28
  * @template Context
@@ -28,31 +30,34 @@ const LAZY_SERIALIZED_VALUE = Symbol("lazy serialization data");
28
30
  class SerializerMiddleware {
29
31
  /* istanbul ignore next */
30
32
  /**
33
+ * Serializes this instance into the provided serializer context.
31
34
  * @abstract
32
35
  * @param {DeserializedType} data data
33
36
  * @param {Context} context context object
34
37
  * @returns {SerializedType | Promise<SerializedType> | null} serialized data
35
38
  */
36
39
  serialize(data, context) {
37
- const AbstractMethodError = require("../AbstractMethodError");
40
+ const AbstractMethodError = require("../errors/AbstractMethodError");
38
41
 
39
42
  throw new AbstractMethodError();
40
43
  }
41
44
 
42
45
  /* istanbul ignore next */
43
46
  /**
47
+ * Restores this instance from the provided deserializer context.
44
48
  * @abstract
45
49
  * @param {SerializedType} data data
46
50
  * @param {Context} context context object
47
51
  * @returns {DeserializedType | Promise<DeserializedType>} deserialized data
48
52
  */
49
53
  deserialize(data, context) {
50
- const AbstractMethodError = require("../AbstractMethodError");
54
+ const AbstractMethodError = require("../errors/AbstractMethodError");
51
55
 
52
56
  throw new AbstractMethodError();
53
57
  }
54
58
 
55
59
  /**
60
+ * Creates a lazy from the provided value.
56
61
  * @template TLazyInputValue
57
62
  * @template TLazyOutputValue
58
63
  * @template {LazyTarget} TLazyTarget
@@ -80,6 +85,7 @@ class SerializerMiddleware {
80
85
  }
81
86
 
82
87
  /**
88
+ * Checks whether this serializer middleware is lazy.
83
89
  * @template {LazyTarget} TLazyTarget
84
90
  * @param {EXPECTED_ANY} fn lazy function
85
91
  * @param {TLazyTarget=} target target middleware
@@ -92,6 +98,7 @@ class SerializerMiddleware {
92
98
  }
93
99
 
94
100
  /**
101
+ * Returns options.
95
102
  * @template TLazyInputValue
96
103
  * @template TLazyOutputValue
97
104
  * @template {LazyTarget} TLazyTarget
@@ -105,6 +112,7 @@ class SerializerMiddleware {
105
112
  }
106
113
 
107
114
  /**
115
+ * Gets lazy serialized value.
108
116
  * @template TLazyInputValue
109
117
  * @template TLazyOutputValue
110
118
  * @template {LazyTarget} TLazyTarget
@@ -118,6 +126,7 @@ class SerializerMiddleware {
118
126
  }
119
127
 
120
128
  /**
129
+ * Sets lazy serialized value.
121
130
  * @template TLazyInputValue
122
131
  * @template TLazyOutputValue
123
132
  * @template {LazyTarget} TLazyTarget
@@ -131,6 +140,7 @@ class SerializerMiddleware {
131
140
  }
132
141
 
133
142
  /**
143
+ * Returns new lazy.
134
144
  * @template TLazyInputValue DeserializedValue
135
145
  * @template TLazyOutputValue SerializedValue
136
146
  * @template {LazyTarget} TLazyTarget
@@ -165,6 +175,7 @@ class SerializerMiddleware {
165
175
  }
166
176
 
167
177
  /**
178
+ * Returns new lazy.
168
179
  * @template TLazyInputValue SerializedValue
169
180
  * @template TLazyOutputValue DeserializedValue
170
181
  * @template {LazyTarget} TLazyTarget
@@ -198,6 +209,7 @@ class SerializerMiddleware {
198
209
  }
199
210
 
200
211
  /**
212
+ * Returns new lazy.
201
213
  * @template TLazyInputValue
202
214
  * @template TLazyOutputValue
203
215
  * @template {LazyTarget} TLazyTarget
@@ -4,14 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  class SetObjectSerializer {
11
8
  /**
9
+ * Serializes this instance into the provided serializer context.
12
10
  * @template T
13
11
  * @param {Set<T>} obj set
14
- * @param {ObjectSerializerContext} context context
12
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
15
13
  */
16
14
  serialize(obj, context) {
17
15
  context.write(obj.size);
@@ -21,17 +19,17 @@ class SetObjectSerializer {
21
19
  }
22
20
 
23
21
  /**
22
+ * Restores this instance from the provided deserializer context.
24
23
  * @template T
25
- * @param {ObjectDeserializerContext} context context
24
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
26
25
  * @returns {Set<T>} date
27
26
  */
28
27
  deserialize(context) {
29
- /** @type {number} */
30
- const size = context.read();
28
+ const size = /** @type {number} */ (context.read());
31
29
  /** @type {Set<T>} */
32
30
  const set = new Set();
33
31
  for (let i = 0; i < size; i++) {
34
- set.add(context.read());
32
+ set.add(/** @type {T} */ (context.read()));
35
33
  }
36
34
  return set;
37
35
  }
@@ -11,10 +11,12 @@ const SerializerMiddleware = require("./SerializerMiddleware");
11
11
  /** @typedef {EXPECTED_OBJECT} Context */
12
12
 
13
13
  /**
14
+ * Represents SingleItemMiddleware.
14
15
  * @extends {SerializerMiddleware<DeserializedType, SerializedType, Context>}
15
16
  */
16
17
  class SingleItemMiddleware extends SerializerMiddleware {
17
18
  /**
19
+ * Serializes this instance into the provided serializer context.
18
20
  * @param {DeserializedType} data data
19
21
  * @param {Context} context context object
20
22
  * @returns {SerializedType | Promise<SerializedType> | null} serialized data
@@ -24,6 +26,7 @@ class SingleItemMiddleware extends SerializerMiddleware {
24
26
  }
25
27
 
26
28
  /**
29
+ * Restores this instance from the provided deserializer context.
27
30
  * @param {SerializedType} data data
28
31
  * @param {Context} context context object
29
32
  * @returns {DeserializedType | Promise<DeserializedType>} deserialized data