@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.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /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 {
|
|
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)] =
|
|
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:
|
|
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 {() =>
|
|
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 +=
|
|
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
|
-
|
|
609
|
-
|
|
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 (
|
|
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)] =
|
|
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)] =
|
|
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
|