webpack 5.107.2 → 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 +25 -11
- package/lib/ConcatenationScope.js +10 -3
- package/lib/ContextExclusionPlugin.js +1 -0
- package/lib/ContextModule.js +92 -47
- 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 +2 -0
- package/lib/MultiStats.js +1 -0
- package/lib/MultiWatching.js +2 -0
- package/lib/NodeStuffPlugin.js +22 -17
- package/lib/NormalModule.js +142 -80
- package/lib/NormalModuleReplacementPlugin.js +2 -0
- package/lib/PrefetchPlugin.js +2 -0
- package/lib/ProgressPlugin.js +8 -0
- 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 +3 -5
- 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 +64 -7
- 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/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 +18 -15
- 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} +261 -109
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +17 -13
- package/lib/dependencies/HtmlInlineStyleDependency.js +45 -11
- 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 +22 -6
- 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 +30 -6
- package/lib/html/HtmlGenerator.js +217 -23
- package/lib/html/HtmlModule.js +40 -0
- package/lib/html/HtmlModulesPlugin.js +219 -55
- 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 +285 -158
- 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 +24 -5
- package/lib/library/SystemLibraryPlugin.js +3 -3
- package/lib/node/NodeTargetPlugin.js +1 -0
- package/lib/node/NodeWatchFileSystem.js +1 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
- package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
- package/lib/optimize/ConcatenatedModule.js +395 -77
- 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 +10 -5
- 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 +35 -27
- 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 +1456 -290
- package/lib/css/walkCssTokens.js +0 -2020
- package/lib/util/AppendOnlyStackedSet.js +0 -93
|
@@ -40,7 +40,9 @@ function getOptimizedDeferredModule(
|
|
|
40
40
|
) {
|
|
41
41
|
runtimeRequirements.add(RuntimeGlobals.makeOptimizedDeferredNamespaceObject);
|
|
42
42
|
const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
|
|
43
|
-
return `${
|
|
43
|
+
return `${
|
|
44
|
+
RuntimeGlobals.makeOptimizedDeferredNamespaceObject
|
|
45
|
+
}(${moduleId}, ${mode}${
|
|
44
46
|
asyncDepsIds.length > 0
|
|
45
47
|
? `, ${JSON.stringify(asyncDepsIds.filter((x) => x !== null))}`
|
|
46
48
|
: ""
|
|
@@ -63,19 +65,22 @@ class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeMod
|
|
|
63
65
|
*/
|
|
64
66
|
generate() {
|
|
65
67
|
if (!this.compilation) return null;
|
|
68
|
+
const { runtimeTemplate } = this.compilation;
|
|
69
|
+
const cst = runtimeTemplate.renderConst();
|
|
70
|
+
const lt = runtimeTemplate.renderLet();
|
|
66
71
|
const fn = RuntimeGlobals.makeOptimizedDeferredNamespaceObject;
|
|
67
72
|
const hasAsync = this.hasAsyncRuntime;
|
|
68
73
|
return Template.asString([
|
|
69
74
|
// Note: must be a function (not arrow), because this is used in body!
|
|
70
75
|
`${fn} = function(moduleId, mode${hasAsync ? ", asyncDeps" : ""}) {`,
|
|
71
76
|
Template.indent([
|
|
72
|
-
|
|
73
|
-
hasAsync ?
|
|
74
|
-
|
|
77
|
+
`${cst} r = this;`,
|
|
78
|
+
hasAsync ? `${cst} isAsync = asyncDeps && asyncDeps.length;` : "",
|
|
79
|
+
`${cst} obj = {`,
|
|
75
80
|
Template.indent([
|
|
76
81
|
"get a() {",
|
|
77
82
|
Template.indent([
|
|
78
|
-
|
|
83
|
+
`${lt} exports = r(moduleId);`,
|
|
79
84
|
hasAsync
|
|
80
85
|
? `if(isAsync) exports = exports[${RuntimeGlobals.asyncModuleExportSymbol}];`
|
|
81
86
|
: "",
|
|
@@ -115,11 +120,11 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
115
120
|
generate() {
|
|
116
121
|
if (!this.compilation) return null;
|
|
117
122
|
const { runtimeTemplate } = this.compilation;
|
|
123
|
+
const cst = runtimeTemplate.renderConst();
|
|
124
|
+
const lt = runtimeTemplate.renderLet();
|
|
118
125
|
const fn = RuntimeGlobals.makeDeferredNamespaceObject;
|
|
119
126
|
const hasAsync = this.hasAsyncRuntime;
|
|
120
|
-
const init = runtimeTemplate.
|
|
121
|
-
? "init?.();"
|
|
122
|
-
: "if (init) init();";
|
|
127
|
+
const init = `${runtimeTemplate.optionalChaining("init", "()")};`;
|
|
123
128
|
return `${fn} = ${runtimeTemplate.basicFunction("moduleId, mode", [
|
|
124
129
|
// Per the TC39 import-defer spec, deferred namespaces are
|
|
125
130
|
// distinct from their eager counterparts and the same module
|
|
@@ -144,13 +149,13 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
144
149
|
// "default-with-named", another as "namespace") get
|
|
145
150
|
// distinct cache entries.
|
|
146
151
|
"mode &= ~16;",
|
|
147
|
-
|
|
152
|
+
`${lt} byMode = __webpack_module_deferred_namespace_cache__[moduleId];`,
|
|
148
153
|
"if (byMode && byMode[mode] !== undefined) return byMode[mode];",
|
|
149
154
|
"if (!byMode) byMode = __webpack_module_deferred_namespace_cache__[moduleId] = {};",
|
|
150
|
-
|
|
155
|
+
`${cst} cachedModule = __webpack_module_cache__[moduleId];`,
|
|
151
156
|
"if (cachedModule && cachedModule.error === undefined && !(mode & 8)) {",
|
|
152
157
|
Template.indent([
|
|
153
|
-
|
|
158
|
+
`${lt} exports = cachedModule.exports;`,
|
|
154
159
|
hasAsync
|
|
155
160
|
? `if (${RuntimeGlobals.asyncModuleExportSymbol} in exports) exports = exports[${RuntimeGlobals.asyncModuleExportSymbol}];`
|
|
156
161
|
: "",
|
|
@@ -158,7 +163,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
158
163
|
]),
|
|
159
164
|
"}",
|
|
160
165
|
"",
|
|
161
|
-
|
|
166
|
+
`${lt} init = ${runtimeTemplate.basicFunction("", [
|
|
162
167
|
`ns = ${RuntimeGlobals.require}(moduleId);`,
|
|
163
168
|
hasAsync
|
|
164
169
|
? `if (${RuntimeGlobals.asyncModuleExportSymbol} in ns) ns = ns[${RuntimeGlobals.asyncModuleExportSymbol}];`
|
|
@@ -206,12 +211,12 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
206
211
|
// proposal, the [[StringTag]] of a Deferred Module Namespace
|
|
207
212
|
// Exotic Object is "Deferred Module"), and the target was already
|
|
208
213
|
// pre-populated with those values below.
|
|
209
|
-
|
|
214
|
+
`${cst} keys = Reflect.ownKeys(ns);`,
|
|
210
215
|
"for (var i = 0; i < keys.length; i++) {",
|
|
211
216
|
Template.indent([
|
|
212
|
-
|
|
217
|
+
`${cst} k = keys[i];`,
|
|
213
218
|
'if (k === "__esModule" || k === Symbol.toStringTag) continue;',
|
|
214
|
-
|
|
219
|
+
`if (!${runtimeTemplate.objectHasOwn("ns_target", "k")}) {`,
|
|
215
220
|
Template.indent([
|
|
216
221
|
"try { Object.defineProperty(ns_target, k, Reflect.getOwnPropertyDescriptor(ns, k)); } catch (_) {}"
|
|
217
222
|
]),
|
|
@@ -227,15 +232,15 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
227
232
|
// `__esModule` / `Symbol.toStringTag` non-configurable properties).
|
|
228
233
|
// Using a dedicated target keeps the proxy invariant-compliant
|
|
229
234
|
// without interfering with the module's own exports object.
|
|
230
|
-
|
|
235
|
+
`${cst} ns_target = { __proto__: null };`,
|
|
231
236
|
// Pre-populate the synthetic deferred-namespace properties with
|
|
232
237
|
// fully non-configurable, non-writable, non-enumerable descriptors
|
|
233
238
|
// (matching the TC39 import-defer spec for Module Namespace
|
|
234
239
|
// Exotic Objects). The trap returns the same descriptors below.
|
|
235
240
|
'Object.defineProperty(ns_target, "__esModule", { value: true });',
|
|
236
241
|
'Object.defineProperty(ns_target, Symbol.toStringTag, { value: "Deferred Module" });',
|
|
237
|
-
|
|
238
|
-
|
|
242
|
+
`${lt} ns = ns_target;`,
|
|
243
|
+
`${cst} handler = {`,
|
|
239
244
|
Template.indent([
|
|
240
245
|
"__proto__: null,",
|
|
241
246
|
// Per the TC39 import-defer proposal, `IsSymbolLikeNamespaceKey`
|
|
@@ -244,7 +249,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
244
249
|
// trigger evaluation of the deferred module. The Symbol checks
|
|
245
250
|
// below short-circuit to the pre-populated target without
|
|
246
251
|
// running `init()`.
|
|
247
|
-
|
|
252
|
+
`${runtimeTemplate.method("get", "_, name", [
|
|
248
253
|
"switch (name) {",
|
|
249
254
|
Template.indent([
|
|
250
255
|
'case "__esModule": return true;',
|
|
@@ -256,7 +261,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
256
261
|
init,
|
|
257
262
|
"return ns[name];"
|
|
258
263
|
])},`,
|
|
259
|
-
|
|
264
|
+
`${runtimeTemplate.method("has", "_, name", [
|
|
260
265
|
"switch (name) {",
|
|
261
266
|
Template.indent(
|
|
262
267
|
[
|
|
@@ -275,12 +280,20 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
275
280
|
init,
|
|
276
281
|
"return name in ns;"
|
|
277
282
|
])},`,
|
|
278
|
-
|
|
283
|
+
`${runtimeTemplate.method("ownKeys", "", [
|
|
279
284
|
init,
|
|
280
|
-
|
|
285
|
+
`${cst} filtered = Reflect.ownKeys(ns).filter(${runtimeTemplate.expressionFunction(
|
|
286
|
+
'x !== "then" && x !== Symbol.toStringTag',
|
|
287
|
+
"x"
|
|
288
|
+
)});`,
|
|
289
|
+
`${cst} keys = ${
|
|
290
|
+
runtimeTemplate.supportsSpread()
|
|
291
|
+
? "[...filtered, Symbol.toStringTag]"
|
|
292
|
+
: "filtered.concat([Symbol.toStringTag])"
|
|
293
|
+
};`,
|
|
281
294
|
"return keys;"
|
|
282
295
|
])},`,
|
|
283
|
-
|
|
296
|
+
`${runtimeTemplate.method("getOwnPropertyDescriptor", "_, name", [
|
|
284
297
|
"switch (name) {",
|
|
285
298
|
Template.indent([
|
|
286
299
|
// Match the descriptors actually defined on `ns_target`
|
|
@@ -294,7 +307,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
294
307
|
"}",
|
|
295
308
|
'if (typeof name === "symbol") return Reflect.getOwnPropertyDescriptor(ns_target, name);',
|
|
296
309
|
init,
|
|
297
|
-
|
|
310
|
+
`${lt} desc = Reflect.getOwnPropertyDescriptor(ns, name);`,
|
|
298
311
|
'if (mode & 2 && name == "default" && !desc) {',
|
|
299
312
|
Template.indent("desc = { value: ns, configurable: true };"),
|
|
300
313
|
"}",
|
|
@@ -305,7 +318,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
305
318
|
// algorithm calls `[[GetOwnProperty]]` first, which forces
|
|
306
319
|
// evaluation on a deferred namespace). Symbol keys go through
|
|
307
320
|
// OrdinaryDefineOwnProperty and do not trigger eval.
|
|
308
|
-
|
|
321
|
+
`${runtimeTemplate.method("defineProperty", "_, name", [
|
|
309
322
|
'if (typeof name === "symbol" || name === "then") return false;',
|
|
310
323
|
init,
|
|
311
324
|
"return false;"
|
|
@@ -314,7 +327,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
314
327
|
// still trigger evaluation for string keys (the spec
|
|
315
328
|
// algorithm calls `GetModuleExportsList` for non-symbol-like
|
|
316
329
|
// keys, forcing evaluation on a deferred namespace).
|
|
317
|
-
|
|
330
|
+
`${runtimeTemplate.method("deleteProperty", "_, name", [
|
|
318
331
|
'if (typeof name === "symbol" || name === "then") return false;',
|
|
319
332
|
init,
|
|
320
333
|
"return false;"
|
|
@@ -26,7 +26,7 @@ class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
26
26
|
return Template.asString([
|
|
27
27
|
"// define __esModule on exports",
|
|
28
28
|
`${fn} = ${runtimeTemplate.basicFunction("exports", [
|
|
29
|
-
|
|
29
|
+
`if(${runtimeTemplate.supportsSymbol() ? "" : "typeof Symbol !== 'undefined' && "}Symbol.toStringTag) {`,
|
|
30
30
|
Template.indent([
|
|
31
31
|
"Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });"
|
|
32
32
|
]),
|
|
@@ -23,7 +23,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
23
23
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
24
|
const { runtimeTemplate } = compilation;
|
|
25
25
|
return Template.asString([
|
|
26
|
-
|
|
26
|
+
`${runtimeTemplate.renderConst()} deferred = [];`,
|
|
27
27
|
`${RuntimeGlobals.onChunksLoaded} = ${runtimeTemplate.basicFunction(
|
|
28
28
|
"result, chunkIds, fn, priority",
|
|
29
29
|
[
|
|
@@ -35,14 +35,14 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
35
35
|
"return;"
|
|
36
36
|
]),
|
|
37
37
|
"}",
|
|
38
|
-
|
|
38
|
+
`${runtimeTemplate.renderLet()} notFulfilled = Infinity;`,
|
|
39
39
|
"for (var i = 0; i < deferred.length; i++) {",
|
|
40
40
|
Template.indent([
|
|
41
41
|
runtimeTemplate.destructureArray(
|
|
42
42
|
["chunkIds", "fn", "priority"],
|
|
43
43
|
"deferred[i]"
|
|
44
44
|
),
|
|
45
|
-
|
|
45
|
+
`${runtimeTemplate.renderLet()} fulfilled = true;`,
|
|
46
46
|
"for (var j = 0; j < chunkIds.length; j++) {",
|
|
47
47
|
Template.indent([
|
|
48
48
|
`if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(${
|
|
@@ -63,7 +63,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
63
63
|
"if(fulfilled) {",
|
|
64
64
|
Template.indent([
|
|
65
65
|
"deferred.splice(i--, 1)",
|
|
66
|
-
|
|
66
|
+
`${runtimeTemplate.renderConst()} r = fn();`,
|
|
67
67
|
"if (r !== undefined) result = r;"
|
|
68
68
|
]),
|
|
69
69
|
"}"
|
|
@@ -22,11 +22,12 @@ class RelativeUrlRuntimeModule extends HelperRuntimeModule {
|
|
|
22
22
|
generate() {
|
|
23
23
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
24
|
const { runtimeTemplate } = compilation;
|
|
25
|
+
const cst = runtimeTemplate.renderConst();
|
|
25
26
|
return Template.asString([
|
|
26
27
|
`${RuntimeGlobals.relativeUrl} = function RelativeURL(url) {`,
|
|
27
28
|
Template.indent([
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
`${cst} realUrl = new URL(url, "x:/");`,
|
|
30
|
+
`${cst} values = {};`,
|
|
30
31
|
"for (var key in realUrl) values[key] = realUrl[key];",
|
|
31
32
|
"values.href = url;",
|
|
32
33
|
'values.pathname = url.replace(/[?#].*/, "");',
|
|
@@ -36,7 +36,7 @@ class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
|
|
|
36
36
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
37
37
|
const { runtimeTemplate } = compilation;
|
|
38
38
|
return Template.asString([
|
|
39
|
-
|
|
39
|
+
`${runtimeTemplate.renderConst()} next = ${RuntimeGlobals.startup};`,
|
|
40
40
|
`${RuntimeGlobals.startup} = ${runtimeTemplate.basicFunction(
|
|
41
41
|
"",
|
|
42
42
|
!this.asyncChunkLoading
|
|
@@ -26,11 +26,12 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
26
26
|
generate() {
|
|
27
27
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
28
28
|
const { runtimeTemplate } = compilation;
|
|
29
|
+
const cst = runtimeTemplate.renderConst();
|
|
29
30
|
return `${
|
|
30
31
|
RuntimeGlobals.startupEntrypoint
|
|
31
32
|
} = ${runtimeTemplate.basicFunction("result, chunkIds, fn", [
|
|
32
33
|
"// arguments: chunkIds, moduleId are deprecated",
|
|
33
|
-
|
|
34
|
+
`${cst} moduleId = chunkIds;`,
|
|
34
35
|
`if(!fn) chunkIds = result, fn = ${runtimeTemplate.returningFunction(
|
|
35
36
|
`${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`
|
|
36
37
|
)};`,
|
|
@@ -39,13 +40,13 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
39
40
|
`return Promise.all(chunkIds.map(${RuntimeGlobals.ensureChunk}, ${
|
|
40
41
|
RuntimeGlobals.require
|
|
41
42
|
})).then(${runtimeTemplate.basicFunction("", [
|
|
42
|
-
|
|
43
|
+
`${cst} r = fn();`,
|
|
43
44
|
"return r === undefined ? result : r;"
|
|
44
45
|
])})`
|
|
45
46
|
]
|
|
46
47
|
: [
|
|
47
48
|
`chunkIds.map(${RuntimeGlobals.ensureChunk}, ${RuntimeGlobals.require})`,
|
|
48
|
-
|
|
49
|
+
`${cst} r = fn();`,
|
|
49
50
|
"return r === undefined ? result : r;"
|
|
50
51
|
])
|
|
51
52
|
])}`;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
|
+
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
9
|
+
|
|
10
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
11
|
+
|
|
12
|
+
class WorkerRuntimeModule extends HelperRuntimeModule {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("worker");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Generates runtime code for this runtime module.
|
|
19
|
+
* @returns {string | null} runtime code
|
|
20
|
+
*/
|
|
21
|
+
generate() {
|
|
22
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
23
|
+
const { runtimeTemplate } = compilation;
|
|
24
|
+
// prefer a global `Worker` when present (web, Bun, polyfills), else `worker_threads.Worker`
|
|
25
|
+
const nodeWorker = runtimeTemplate.getBuiltinModule(
|
|
26
|
+
runtimeTemplate.renderNodePrefixForCoreModule("worker_threads"),
|
|
27
|
+
".Worker"
|
|
28
|
+
);
|
|
29
|
+
return `${RuntimeGlobals.worker} = typeof Worker !== "undefined" ? Worker : ${nodeWorker};`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports = WorkerRuntimeModule;
|
|
@@ -29,6 +29,7 @@ const memoize = require("../util/memoize");
|
|
|
29
29
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
30
30
|
/** @typedef {import("../NormalModuleFactory").ResourceDataWithData} ResourceDataWithData */
|
|
31
31
|
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
32
|
+
/** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
|
|
32
33
|
|
|
33
34
|
const getHttp = memoize(() => require("http"));
|
|
34
35
|
const getHttps = memoize(() => require("https"));
|
|
@@ -1357,7 +1358,7 @@ Run build with un-frozen lockfile to automatically fix lockfile.`
|
|
|
1357
1358
|
if (err) return callback(err);
|
|
1358
1359
|
const result = /** @type {Info} */ (_result);
|
|
1359
1360
|
if (module) {
|
|
1360
|
-
/** @type {
|
|
1361
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1361
1362
|
(module.buildInfo).resourceIntegrity = result.entry.integrity;
|
|
1362
1363
|
}
|
|
1363
1364
|
callback(null, result.content);
|
|
@@ -1370,7 +1371,7 @@ Run build with un-frozen lockfile to automatically fix lockfile.`
|
|
|
1370
1371
|
const result = /** @type {Info} */ (_result);
|
|
1371
1372
|
if (
|
|
1372
1373
|
result.entry.integrity !==
|
|
1373
|
-
/** @type {
|
|
1374
|
+
/** @type {NormalModuleBuildInfo} */
|
|
1374
1375
|
(module.buildInfo).resourceIntegrity
|
|
1375
1376
|
) {
|
|
1376
1377
|
return callback(null, true);
|
|
@@ -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, errors: EXPECTED_ANY[] }} AggregateError */
|
|
11
12
|
|
|
@@ -19,7 +20,7 @@ class AggregateErrorSerializer {
|
|
|
19
20
|
context.write(obj.errors);
|
|
20
21
|
context.write(obj.message);
|
|
21
22
|
context.write(obj.stack);
|
|
22
|
-
context.write(obj.cause);
|
|
23
|
+
context.write(/** @type {ComplexSerializableType} */ (obj.cause));
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
/**
|
|
@@ -28,12 +29,12 @@ class AggregateErrorSerializer {
|
|
|
28
29
|
* @returns {AggregateError} error
|
|
29
30
|
*/
|
|
30
31
|
deserialize(context) {
|
|
31
|
-
const errors = context.read();
|
|
32
|
+
const errors = /** @type {EXPECTED_ANY[]} */ (context.read());
|
|
32
33
|
// eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax, unicorn/error-message
|
|
33
34
|
const err = new AggregateError(errors);
|
|
34
35
|
|
|
35
|
-
err.message = context.read();
|
|
36
|
-
err.stack = context.read();
|
|
36
|
+
err.message = /** @type {string} */ (context.read());
|
|
37
|
+
err.stack = /** @type {string | undefined} */ (context.read());
|
|
37
38
|
err.cause = context.read();
|
|
38
39
|
|
|
39
40
|
return err;
|
|
@@ -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 ArraySerializer {
|
|
11
8
|
/**
|
|
12
9
|
* Serializes this instance into the provided serializer context.
|
|
13
10
|
* @template T
|
|
14
11
|
* @param {T[]} array array
|
|
15
|
-
* @param {ObjectSerializerContext} context context
|
|
12
|
+
* @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
|
|
16
13
|
*/
|
|
17
14
|
serialize(array, context) {
|
|
18
15
|
context.write(array.length);
|
|
@@ -22,16 +19,15 @@ class ArraySerializer {
|
|
|
22
19
|
/**
|
|
23
20
|
* Restores this instance from the provided deserializer context.
|
|
24
21
|
* @template T
|
|
25
|
-
* @param {ObjectDeserializerContext} context context
|
|
22
|
+
* @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
|
|
26
23
|
* @returns {T[]} array
|
|
27
24
|
*/
|
|
28
25
|
deserialize(context) {
|
|
29
|
-
/** @type {number} */
|
|
30
|
-
const length = context.read();
|
|
26
|
+
const length = /** @type {number} */ (context.read());
|
|
31
27
|
/** @type {T[]} */
|
|
32
28
|
const array = [];
|
|
33
29
|
for (let i = 0; i < length; i++) {
|
|
34
|
-
array.push(context.read());
|
|
30
|
+
array.push(/** @type {T} */ (context.read()));
|
|
35
31
|
}
|
|
36
32
|
return array;
|
|
37
33
|
}
|