webpack 5.107.1 → 5.108.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/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +8 -4
- package/lib/CacheFacade.js +7 -0
- package/lib/Chunk.js +4 -0
- package/lib/ChunkGraph.js +30 -9
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +2 -1
- package/lib/Compilation.js +396 -65
- package/lib/Compiler.js +52 -14
- package/lib/ConcatenationScope.js +10 -3
- package/lib/ContextExclusionPlugin.js +1 -0
- package/lib/ContextModule.js +92 -47
- package/lib/ContextModuleFactory.js +45 -38
- package/lib/ContextReplacementPlugin.js +4 -0
- package/lib/DefinePlugin.js +89 -15
- package/lib/Dependency.js +111 -7
- package/lib/EntryOptionPlugin.js +39 -2
- package/lib/EntryPlugin.js +2 -0
- package/lib/ExportsInfo.js +314 -73
- package/lib/ExternalModule.js +82 -34
- package/lib/ExternalModuleFactoryPlugin.js +1 -0
- package/lib/ExternalsPlugin.js +1 -0
- package/lib/FileSystemInfo.js +173 -23
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
- package/lib/FlagDependencyExportsPlugin.js +23 -0
- package/lib/FlagDependencyUsagePlugin.js +87 -5
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
- package/lib/Generator.js +8 -0
- package/lib/HotModuleReplacementPlugin.js +65 -28
- package/lib/IgnorePlugin.js +1 -0
- package/lib/InitFragment.js +5 -0
- package/lib/JavascriptMetaInfoPlugin.js +7 -5
- package/lib/LazyBarrel.js +361 -0
- package/lib/LoaderTargetPlugin.js +1 -0
- package/lib/Module.js +21 -42
- package/lib/ModuleGraph.js +3 -2
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleTemplate.js +2 -0
- package/lib/MultiCompiler.js +16 -0
- package/lib/MultiStats.js +1 -0
- package/lib/MultiWatching.js +2 -0
- package/lib/NodeStuffPlugin.js +22 -17
- package/lib/NormalModule.js +557 -77
- package/lib/NormalModuleReplacementPlugin.js +2 -0
- package/lib/PrefetchPlugin.js +2 -0
- package/lib/ProgressPlugin.js +9 -1
- package/lib/ProvidePlugin.js +1 -0
- package/lib/RawModule.js +20 -16
- package/lib/RecordIdsPlugin.js +1 -0
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimePlugin.js +58 -26
- package/lib/RuntimeTemplate.js +278 -21
- package/lib/SelfModuleFactory.js +1 -0
- package/lib/SourceMapDevToolPlugin.js +105 -30
- package/lib/Stats.js +1 -0
- package/lib/Template.js +8 -2
- package/lib/TemplatedPathPlugin.js +473 -131
- package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
- package/lib/WarnDeprecatedOptionPlugin.js +4 -0
- package/lib/WarnNoModeSetPlugin.js +1 -0
- package/lib/WatchIgnorePlugin.js +1 -0
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +50 -5
- package/lib/asset/AssetBytesGenerator.js +11 -3
- package/lib/asset/AssetGenerator.js +47 -22
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +14 -14
- package/lib/asset/AssetParser.js +2 -2
- package/lib/asset/AssetSourceGenerator.js +8 -0
- package/lib/asset/RawDataUrlModule.js +12 -13
- package/lib/buildChunkGraph.js +88 -9
- package/lib/bun/BunTargetPlugin.js +48 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
- package/lib/cache/AddManagedPathsPlugin.js +3 -0
- package/lib/cache/IdleFileCachePlugin.js +4 -0
- package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
- package/lib/cache/PackFileCacheStrategy.js +1 -0
- package/lib/cache/ResolverCachePlugin.js +2 -0
- package/lib/cache/getLazyHashedEtag.js +9 -2
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +109 -19
- package/lib/config/browserslistTargetHandler.js +99 -0
- package/lib/config/defaults.js +147 -7
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +5 -0
- package/lib/config/target.js +181 -2
- package/lib/container/ContainerEntryModule.js +15 -14
- package/lib/container/ContainerExposedDependency.js +2 -2
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +5 -7
- package/lib/container/FallbackModule.js +10 -9
- package/lib/container/RemoteModule.js +20 -10
- package/lib/container/RemoteRuntimeModule.js +14 -12
- package/lib/css/CssGenerator.js +353 -327
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
- package/lib/css/CssLoadingRuntimeModule.js +118 -47
- package/lib/css/CssModule.js +52 -23
- package/lib/css/CssModulesPlugin.js +107 -124
- package/lib/css/CssParser.js +2759 -2205
- package/lib/css/syntax.js +2859 -0
- package/lib/debug/ProfilingPlugin.js +2 -0
- package/lib/deno/DenoTargetPlugin.js +47 -0
- package/lib/dependencies/AMDDefineDependency.js +22 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
- package/lib/dependencies/AMDRequireContextDependency.js +7 -11
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireDependency.js +24 -20
- package/lib/dependencies/CachedConstDependency.js +3 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
- package/lib/dependencies/CommonJsExportsDependency.js +21 -16
- package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
- package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
- package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
- package/lib/dependencies/CommonJsPlugin.js +1 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
- package/lib/dependencies/CommonJsRequireDependency.js +42 -11
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
- package/lib/dependencies/ConstDependency.js +16 -11
- package/lib/dependencies/ContextDependency.js +4 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
- package/lib/dependencies/ContextElementDependency.js +23 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
- package/lib/dependencies/CriticalDependencyWarning.js +1 -0
- package/lib/dependencies/CssIcssExportDependency.js +512 -574
- package/lib/dependencies/CssIcssImportDependency.js +9 -9
- package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
- package/lib/dependencies/CssImportDependency.js +25 -1
- package/lib/dependencies/CssUrlDependency.js +23 -14
- package/lib/dependencies/DllEntryDependency.js +9 -13
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +12 -12
- package/lib/dependencies/ExternalModuleDependency.js +8 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
- package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
- package/lib/dependencies/HarmonyExportInitFragment.js +22 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
- package/lib/dependencies/HarmonyExports.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +24 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
- package/lib/dependencies/HarmonyImportGuard.js +254 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
- package/lib/dependencies/HarmonyLinkingError.js +1 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
- package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +267 -154
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +20 -27
- package/lib/dependencies/HtmlInlineStyleDependency.js +62 -11
- package/lib/dependencies/HtmlSourceDependency.js +18 -0
- package/lib/dependencies/ImportContextDependency.js +5 -9
- package/lib/dependencies/ImportDependency.js +44 -2
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +74 -30
- package/lib/dependencies/ImportParserPlugin.js +19 -0
- package/lib/dependencies/ImportWeakDependency.js +1 -0
- package/lib/dependencies/JsonExportsDependency.js +9 -9
- package/lib/dependencies/LoaderImportDependency.js +1 -0
- package/lib/dependencies/LocalModule.js +11 -12
- package/lib/dependencies/LocalModuleDependency.js +11 -13
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
- package/lib/dependencies/ProvidedDependency.js +31 -27
- package/lib/dependencies/PureExpressionDependency.js +7 -9
- package/lib/dependencies/RequireEnsureDependency.js +12 -13
- package/lib/dependencies/RequireHeaderDependency.js +3 -4
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireResolveContextDependency.js +7 -11
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
- package/lib/dependencies/StaticExportsDependency.js +10 -10
- package/lib/dependencies/SystemPlugin.js +2 -0
- package/lib/dependencies/URLContextDependency.js +5 -7
- package/lib/dependencies/URLDependency.js +14 -16
- package/lib/dependencies/UnsupportedDependency.js +8 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
- package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
- package/lib/dependencies/WorkerDependency.js +19 -8
- package/lib/dependencies/WorkerPlugin.js +40 -10
- package/lib/dependencies/processExportInfo.js +13 -11
- package/lib/dll/DelegatedModule.js +29 -15
- package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
- package/lib/dll/DelegatedPlugin.js +1 -0
- package/lib/dll/DllEntryPlugin.js +3 -0
- package/lib/dll/DllModule.js +3 -2
- package/lib/dll/DllPlugin.js +16 -0
- package/lib/dll/DllReferencePlugin.js +3 -0
- package/lib/dll/LibManifestPlugin.js +1 -0
- package/lib/electron/ElectronTargetPlugin.js +22 -4
- package/lib/errors/ConcurrentCompilationError.js +1 -0
- package/lib/errors/HookWebpackError.js +11 -13
- package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
- package/lib/errors/JSONParseError.js +9 -8
- package/lib/errors/ModuleBuildError.js +16 -13
- package/lib/errors/ModuleDependencyError.js +8 -1
- package/lib/errors/ModuleDependencyWarning.js +8 -1
- package/lib/errors/ModuleError.js +5 -11
- package/lib/errors/ModuleHashingError.js +4 -0
- package/lib/errors/ModuleNotFoundError.js +3 -0
- package/lib/errors/ModuleParseError.js +5 -11
- package/lib/errors/ModuleRestoreError.js +2 -0
- package/lib/errors/ModuleStoreError.js +3 -0
- package/lib/errors/ModuleWarning.js +7 -11
- package/lib/errors/NodeStuffInWebError.js +1 -0
- package/lib/errors/NonErrorEmittedError.js +2 -0
- package/lib/errors/UnhandledSchemeError.js +1 -0
- package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/LazyCompilationPlugin.js +134 -6
- package/lib/html/HtmlGenerator.js +292 -50
- package/lib/html/HtmlModule.js +40 -0
- package/lib/html/HtmlModulesPlugin.js +287 -60
- package/lib/html/HtmlParser.js +1108 -1099
- package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
- package/lib/ids/IdHelpers.js +4 -2
- package/lib/index.js +19 -0
- package/lib/javascript/BasicEvaluatedExpression.js +1 -0
- package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
- package/lib/javascript/JavascriptGenerator.js +6 -2
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +257 -102
- package/lib/javascript/JavascriptParser.js +286 -159
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +7 -0
- package/lib/json/JsonParser.js +4 -2
- package/lib/library/AssignLibraryPlugin.js +5 -3
- package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
- package/lib/library/FalseIIFEUmdWarning.js +1 -0
- package/lib/library/ModuleLibraryPlugin.js +54 -29
- package/lib/library/SystemLibraryPlugin.js +3 -3
- package/lib/node/NodeTargetPlugin.js +1 -0
- package/lib/node/NodeWatchFileSystem.js +38 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
- package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
- package/lib/optimize/ConcatenatedModule.js +397 -78
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +372 -275
- package/lib/optimize/InnerGraphPlugin.js +196 -99
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
- package/lib/optimize/RealContentHashPlugin.js +14 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
- package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
- package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/HttpUriPlugin.js +3 -2
- package/lib/serialization/AggregateErrorSerializer.js +7 -6
- package/lib/serialization/ArraySerializer.js +4 -8
- package/lib/serialization/BinaryMiddleware.js +538 -468
- package/lib/serialization/DateObjectSerializer.js +2 -2
- package/lib/serialization/ErrorObjectSerializer.js +7 -6
- package/lib/serialization/MapObjectSerializer.js +5 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
- package/lib/serialization/ObjectMiddleware.js +50 -13
- package/lib/serialization/PlainObjectSerializer.js +9 -8
- package/lib/serialization/RegExpObjectSerializer.js +2 -2
- package/lib/serialization/Serializer.js +1 -0
- package/lib/serialization/SetObjectSerializer.js +4 -8
- package/lib/sharing/ConsumeSharedModule.js +6 -7
- package/lib/sharing/ConsumeSharedPlugin.js +1 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
- package/lib/sharing/ProvideSharedDependency.js +30 -15
- package/lib/sharing/ProvideSharedModule.js +30 -11
- package/lib/sharing/ProvideSharedPlugin.js +4 -2
- package/lib/sharing/SharePlugin.js +3 -0
- package/lib/sharing/ShareRuntimeModule.js +18 -16
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
- package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
- package/lib/stats/StatsFactory.js +11 -9
- package/lib/stats/StatsPrinter.js +9 -2
- package/lib/url/URLParserPlugin.js +5 -2
- package/lib/util/AsyncQueue.js +10 -0
- package/lib/util/LazyBucketSortedSet.js +5 -0
- package/lib/util/LazySet.js +6 -4
- package/lib/util/LocConverter.js +11 -1
- package/lib/util/Semaphore.js +1 -0
- package/lib/util/SourceProcessor.js +106 -0
- package/lib/util/TupleSet.js +1 -0
- package/lib/util/WeakTupleMap.js +27 -1
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/comparators.js +2 -2
- package/lib/util/concatenate.js +31 -7
- package/lib/util/createHash.js +0 -1
- package/lib/util/deterministicGrouping.js +19 -12
- package/lib/util/extractSourceMap.js +1 -1
- package/lib/util/findGraphRoots.js +2 -0
- package/lib/util/fs.js +16 -6
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +24 -15
- package/lib/util/identifier.js +7 -0
- package/lib/util/internalSerializables.js +11 -2
- package/lib/util/magicComment.js +42 -0
- package/lib/util/makeSerializable.js +1 -0
- package/lib/util/nonNumericOnlyHash.js +30 -1
- package/lib/util/property.js +7 -1
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +4 -4
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
- package/lib/wasm-sync/WebAssemblyParser.js +7 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
- package/package.json +36 -28
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +212 -3
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
- package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +1592 -314
- package/lib/css/walkCssTokens.js +0 -2020
- package/lib/util/AppendOnlyStackedSet.js +0 -93
|
@@ -4,8 +4,8 @@
|
|
|
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<[number]>} ObjectDeserializerContext */
|
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<[number]>} ObjectSerializerContext */
|
|
9
9
|
|
|
10
10
|
class DateObjectSerializer {
|
|
11
11
|
/**
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
/** @typedef {import("./
|
|
8
|
-
/** @typedef {import("./ObjectMiddleware").
|
|
7
|
+
/** @typedef {import("./types").ComplexSerializableType} ComplexSerializableType */
|
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext<ComplexSerializableType[]>} ObjectDeserializerContext */
|
|
9
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<ComplexSerializableType[]>} ObjectSerializerContext */
|
|
9
10
|
|
|
10
11
|
/** @typedef {Error & { cause?: unknown }} ErrorWithCause */
|
|
11
12
|
|
|
@@ -27,8 +28,8 @@ class ErrorObjectSerializer {
|
|
|
27
28
|
context.write(obj.message);
|
|
28
29
|
context.write(obj.stack);
|
|
29
30
|
context.write(
|
|
30
|
-
/** @type {
|
|
31
|
-
(obj).cause
|
|
31
|
+
/** @type {ComplexSerializableType} */
|
|
32
|
+
(/** @type {ErrorWithCause} */ (obj).cause)
|
|
32
33
|
);
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -40,8 +41,8 @@ class ErrorObjectSerializer {
|
|
|
40
41
|
deserialize(context) {
|
|
41
42
|
const err = new this.Type();
|
|
42
43
|
|
|
43
|
-
err.message = context.read();
|
|
44
|
-
err.stack = context.read();
|
|
44
|
+
err.message = /** @type {string} */ (context.read());
|
|
45
|
+
err.stack = /** @type {string | undefined} */ (context.read());
|
|
45
46
|
/** @type {ErrorWithCause} */
|
|
46
47
|
(err).cause = context.read();
|
|
47
48
|
|
|
@@ -4,15 +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
|
/**
|
|
12
9
|
* Serializes this instance into the provided serializer context.
|
|
13
10
|
* @template K, V
|
|
14
11
|
* @param {Map<K, V>} obj map
|
|
15
|
-
* @param {ObjectSerializerContext} context context
|
|
12
|
+
* @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | K | V)[]>} context context
|
|
16
13
|
*/
|
|
17
14
|
serialize(obj, context) {
|
|
18
15
|
context.write(obj.size);
|
|
@@ -27,21 +24,20 @@ class MapObjectSerializer {
|
|
|
27
24
|
/**
|
|
28
25
|
* Restores this instance from the provided deserializer context.
|
|
29
26
|
* @template K, V
|
|
30
|
-
* @param {ObjectDeserializerContext} context context
|
|
27
|
+
* @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | K | V)[]>} context context
|
|
31
28
|
* @returns {Map<K, V>} map
|
|
32
29
|
*/
|
|
33
30
|
deserialize(context) {
|
|
34
|
-
/** @type {number} */
|
|
35
|
-
const size = context.read();
|
|
31
|
+
const size = /** @type {number} */ (context.read());
|
|
36
32
|
/** @type {Map<K, V>} */
|
|
37
33
|
const map = new Map();
|
|
38
34
|
/** @type {K[]} */
|
|
39
35
|
const keys = [];
|
|
40
36
|
for (let i = 0; i < size; i++) {
|
|
41
|
-
keys.push(context.read());
|
|
37
|
+
keys.push(/** @type {K} */ (context.read()));
|
|
42
38
|
}
|
|
43
39
|
for (let i = 0; i < size; i++) {
|
|
44
|
-
map.set(keys[i], context.read());
|
|
40
|
+
map.set(keys[i], /** @type {V} */ (context.read()));
|
|
45
41
|
}
|
|
46
42
|
return map;
|
|
47
43
|
}
|
|
@@ -4,9 +4,6 @@
|
|
|
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 {
|
|
@@ -14,7 +11,7 @@ class NullPrototypeObjectSerializer {
|
|
|
14
11
|
* Serializes this instance into the provided serializer context.
|
|
15
12
|
* @template {object} T
|
|
16
13
|
* @param {T} obj null object
|
|
17
|
-
* @param {ObjectSerializerContext} context context
|
|
14
|
+
* @param {import("./ObjectMiddleware").ObjectSerializerContext<(string | null | T[keyof T])[]>} context context
|
|
18
15
|
*/
|
|
19
16
|
serialize(obj, context) {
|
|
20
17
|
/** @type {Keys} */
|
|
@@ -31,7 +28,7 @@ class NullPrototypeObjectSerializer {
|
|
|
31
28
|
/**
|
|
32
29
|
* Restores this instance from the provided deserializer context.
|
|
33
30
|
* @template {object} T
|
|
34
|
-
* @param {ObjectDeserializerContext} context context
|
|
31
|
+
* @param {import("./ObjectMiddleware").ObjectDeserializerContext<(string | null | T[keyof T])[]>} context context
|
|
35
32
|
* @returns {T} null object
|
|
36
33
|
*/
|
|
37
34
|
deserialize(context) {
|
|
@@ -39,14 +36,15 @@ class NullPrototypeObjectSerializer {
|
|
|
39
36
|
const obj = Object.create(null);
|
|
40
37
|
/** @type {Keys} */
|
|
41
38
|
const keys = [];
|
|
42
|
-
/** @type {
|
|
43
|
-
let key = context.read();
|
|
39
|
+
let key = /** @type {string | null} */ (context.read());
|
|
44
40
|
while (key !== null) {
|
|
45
41
|
keys.push(key);
|
|
46
|
-
key = context.read();
|
|
42
|
+
key = /** @type {string | null} */ (context.read());
|
|
47
43
|
}
|
|
48
44
|
for (const key of keys) {
|
|
49
|
-
obj[/** @type {keyof T} */ (key)] =
|
|
45
|
+
obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
|
|
46
|
+
context.read()
|
|
47
|
+
);
|
|
50
48
|
}
|
|
51
49
|
return obj;
|
|
52
50
|
}
|
|
@@ -60,10 +60,24 @@ Technically any value can be used.
|
|
|
60
60
|
|
|
61
61
|
/** @typedef {EXPECTED_OBJECT | string} ReferenceableItem */
|
|
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
|
+
|
|
63
75
|
/**
|
|
64
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[]]
|
|
65
79
|
* @typedef {object} ObjectSerializerContext
|
|
66
|
-
* @property {(value:
|
|
80
|
+
* @property {(value: Head<T>) => ObjectSerializerContext<Tail<T>>} write
|
|
67
81
|
* @property {(value: ReferenceableItem) => void} setCircularReference
|
|
68
82
|
* @property {() => ObjectSerializerSnapshot} snapshot
|
|
69
83
|
* @property {(snapshot: ObjectSerializerSnapshot) => void} rollback
|
|
@@ -73,16 +87,20 @@ Technically any value can be used.
|
|
|
73
87
|
|
|
74
88
|
/**
|
|
75
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[]]
|
|
76
93
|
* @typedef {object} ObjectDeserializerContext
|
|
77
|
-
* @property {() =>
|
|
94
|
+
* @property {() => Head<T>} read
|
|
95
|
+
* @property {ObjectDeserializerContext<Tail<T>>} rest
|
|
78
96
|
* @property {(value: ReferenceableItem) => void} setCircularReference
|
|
79
97
|
*/
|
|
80
98
|
|
|
81
99
|
/**
|
|
82
100
|
* Defines the object serializer type used by this module.
|
|
83
101
|
* @typedef {object} ObjectSerializer
|
|
84
|
-
* @property {(value: EXPECTED_ANY, context: ObjectSerializerContext) => void} serialize
|
|
85
|
-
* @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
|
|
86
104
|
*/
|
|
87
105
|
|
|
88
106
|
/**
|
|
@@ -214,7 +232,7 @@ const loaders = new Map();
|
|
|
214
232
|
/** @typedef {PrimitiveSerializableType[]} SerializedType */
|
|
215
233
|
/** @typedef {{ logger: Logger }} Context */
|
|
216
234
|
|
|
217
|
-
/** @typedef {(context: ObjectSerializerContext | ObjectDeserializerContext) => void} ExtendContext */
|
|
235
|
+
/** @typedef {(context: ObjectSerializerContext<EXPECTED_ANY> | ObjectDeserializerContext<EXPECTED_ANY>) => void} ExtendContext */
|
|
218
236
|
|
|
219
237
|
/**
|
|
220
238
|
* Represents ObjectMiddleware.
|
|
@@ -506,11 +524,11 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
|
506
524
|
};
|
|
507
525
|
/** @type {undefined | WeakSet<Error>} */
|
|
508
526
|
let hasDebugInfoAttached;
|
|
509
|
-
/** @type {ObjectSerializerContext} */
|
|
527
|
+
/** @type {ObjectSerializerContext<EXPECTED_ANY>} */
|
|
510
528
|
let ctx = {
|
|
511
529
|
write(value) {
|
|
512
530
|
try {
|
|
513
|
-
process(value);
|
|
531
|
+
process(/** @type {ComplexSerializableType} */ (value));
|
|
514
532
|
} catch (err) {
|
|
515
533
|
if (err !== NOT_SERIALIZABLE) {
|
|
516
534
|
if (hasDebugInfoAttached === undefined) {
|
|
@@ -518,12 +536,14 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
|
518
536
|
}
|
|
519
537
|
if (!hasDebugInfoAttached.has(/** @type {Error} */ (err))) {
|
|
520
538
|
/** @type {Error} */
|
|
521
|
-
(err).message +=
|
|
539
|
+
(err).message +=
|
|
540
|
+
`\nwhile serializing ${stackToString(/** @type {ComplexSerializableType} */ (value))}`;
|
|
522
541
|
hasDebugInfoAttached.add(/** @type {Error} */ (err));
|
|
523
542
|
}
|
|
524
543
|
}
|
|
525
544
|
throw err;
|
|
526
545
|
}
|
|
546
|
+
return ctx;
|
|
527
547
|
},
|
|
528
548
|
setCircularReference(ref) {
|
|
529
549
|
addReferenceable(ref);
|
|
@@ -625,8 +645,19 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
|
625
645
|
// check if we can emit a reference
|
|
626
646
|
const ref = referenceable.get(item);
|
|
627
647
|
if (ref !== undefined) {
|
|
628
|
-
|
|
629
|
-
|
|
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
|
+
}
|
|
630
661
|
}
|
|
631
662
|
addReferenceable(item);
|
|
632
663
|
}
|
|
@@ -736,10 +767,14 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
|
736
767
|
let objectTypeLookup = [];
|
|
737
768
|
/** @type {ComplexSerializableType[]} */
|
|
738
769
|
let result = [];
|
|
739
|
-
/** @type {ObjectDeserializerContext} */
|
|
770
|
+
/** @type {ObjectDeserializerContext<EXPECTED_ANY>} */
|
|
740
771
|
let ctx = {
|
|
741
772
|
read() {
|
|
742
|
-
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;
|
|
743
778
|
},
|
|
744
779
|
setCircularReference(ref) {
|
|
745
780
|
addReferenceable(ref);
|
|
@@ -859,7 +894,9 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
|
859
894
|
}
|
|
860
895
|
|
|
861
896
|
return item;
|
|
862
|
-
} 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
|
|
863
900
|
addReferenceable(item);
|
|
864
901
|
|
|
865
902
|
return item;
|
|
@@ -4,9 +4,6 @@
|
|
|
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
|
/**
|
|
@@ -78,7 +75,7 @@ class PlainObjectSerializer {
|
|
|
78
75
|
* Serializes this instance into the provided serializer context.
|
|
79
76
|
* @template {object} T
|
|
80
77
|
* @param {T} obj plain object
|
|
81
|
-
* @param {ObjectSerializerContext} context context
|
|
78
|
+
* @param {import("./ObjectMiddleware").ObjectSerializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
|
|
82
79
|
*/
|
|
83
80
|
serialize(obj, context) {
|
|
84
81
|
const keys = /** @type {(keyof T)[]} */ (Object.keys(obj));
|
|
@@ -106,18 +103,22 @@ class PlainObjectSerializer {
|
|
|
106
103
|
/**
|
|
107
104
|
* Restores this instance from the provided deserializer context.
|
|
108
105
|
* @template {object} T
|
|
109
|
-
* @param {ObjectDeserializerContext} context context
|
|
106
|
+
* @param {import("./ObjectMiddleware").ObjectDeserializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
|
|
110
107
|
* @returns {T} plain object
|
|
111
108
|
*/
|
|
112
109
|
deserialize(context) {
|
|
113
|
-
const keys = context.read();
|
|
110
|
+
const keys = /** @type {(keyof T)[] | keyof T | null} */ (context.read());
|
|
114
111
|
const obj = /** @type {T} */ ({});
|
|
115
112
|
if (Array.isArray(keys)) {
|
|
116
113
|
for (const key of keys) {
|
|
117
|
-
obj[/** @type {keyof T} */ (key)] =
|
|
114
|
+
obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
|
|
115
|
+
context.read()
|
|
116
|
+
);
|
|
118
117
|
}
|
|
119
118
|
} else if (keys !== null) {
|
|
120
|
-
obj[/** @type {keyof T} */ (keys)] =
|
|
119
|
+
obj[/** @type {keyof T} */ (keys)] = /** @type {T[keyof T]} */ (
|
|
120
|
+
context.read()
|
|
121
|
+
);
|
|
121
122
|
}
|
|
122
123
|
return obj;
|
|
123
124
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
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
|
/**
|
|
@@ -4,15 +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
|
/**
|
|
12
9
|
* Serializes this instance into the provided serializer context.
|
|
13
10
|
* @template T
|
|
14
11
|
* @param {Set<T>} obj set
|
|
15
|
-
* @param {ObjectSerializerContext} context context
|
|
12
|
+
* @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
|
|
16
13
|
*/
|
|
17
14
|
serialize(obj, context) {
|
|
18
15
|
context.write(obj.size);
|
|
@@ -24,16 +21,15 @@ class SetObjectSerializer {
|
|
|
24
21
|
/**
|
|
25
22
|
* Restores this instance from the provided deserializer context.
|
|
26
23
|
* @template T
|
|
27
|
-
* @param {ObjectDeserializerContext} context context
|
|
24
|
+
* @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
|
|
28
25
|
* @returns {Set<T>} date
|
|
29
26
|
*/
|
|
30
27
|
deserialize(context) {
|
|
31
|
-
/** @type {number} */
|
|
32
|
-
const size = context.read();
|
|
28
|
+
const size = /** @type {number} */ (context.read());
|
|
33
29
|
/** @type {Set<T>} */
|
|
34
30
|
const set = new Set();
|
|
35
31
|
for (let i = 0; i < size; i++) {
|
|
36
|
-
set.add(context.read());
|
|
32
|
+
set.add(/** @type {T} */ (context.read()));
|
|
37
33
|
}
|
|
38
34
|
return set;
|
|
39
35
|
}
|
|
@@ -39,8 +39,8 @@ const fallbackModuleCache = new WeakMap();
|
|
|
39
39
|
/** @typedef {import("../Module").ExportsType} ExportsType */
|
|
40
40
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
41
41
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
42
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
43
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
42
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ConsumeOptions]>} ObjectDeserializerContext */
|
|
43
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ConsumeOptions]>} ObjectSerializerContext */
|
|
44
44
|
/** @typedef {import("../util/Hash")} Hash */
|
|
45
45
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
|
46
46
|
/** @typedef {import("../util/semver").SemVerRange} SemVerRange */
|
|
@@ -68,6 +68,7 @@ class ConsumeSharedModule extends Module {
|
|
|
68
68
|
*/
|
|
69
69
|
constructor(context, options) {
|
|
70
70
|
super(WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE, context);
|
|
71
|
+
/** @type {ConsumeOptions} */
|
|
71
72
|
this.options = options;
|
|
72
73
|
}
|
|
73
74
|
|
|
@@ -335,8 +336,7 @@ class ConsumeSharedModule extends Module {
|
|
|
335
336
|
* @param {ObjectSerializerContext} context context
|
|
336
337
|
*/
|
|
337
338
|
serialize(context) {
|
|
338
|
-
|
|
339
|
-
write(this.options);
|
|
339
|
+
context.write(this.options);
|
|
340
340
|
super.serialize(context);
|
|
341
341
|
}
|
|
342
342
|
|
|
@@ -345,9 +345,8 @@ class ConsumeSharedModule extends Module {
|
|
|
345
345
|
* @param {ObjectDeserializerContext} context context
|
|
346
346
|
*/
|
|
347
347
|
deserialize(context) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
super.deserialize(context);
|
|
348
|
+
this.options = context.read();
|
|
349
|
+
super.deserialize(context.rest);
|
|
351
350
|
}
|
|
352
351
|
}
|
|
353
352
|
|