webpack 5.92.1 → 5.94.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +132 -70
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +39 -40
- package/lib/css/CssGenerator.js +11 -14
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +144 -61
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +10 -13
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -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 +1 -0
- package/types.d.ts +682 -347
@@ -137,8 +137,9 @@ jsTypes.set(TypeError, new ErrorObjectSerializer(TypeError));
|
|
137
137
|
// If in a sandboxed environment (e. g. jest), this escapes the sandbox and registers
|
138
138
|
// real Object and Array types to. These types may occur in the wild too, e. g. when
|
139
139
|
// using Structured Clone in postMessage.
|
140
|
+
// eslint-disable-next-line n/exports-style
|
140
141
|
if (exports.constructor !== Object) {
|
141
|
-
// eslint-disable-next-line jsdoc/check-types
|
142
|
+
// eslint-disable-next-line jsdoc/check-types, n/exports-style
|
142
143
|
const Obj = /** @type {typeof Object} */ (exports.constructor);
|
143
144
|
const Fn = /** @type {typeof Function} */ (Obj.constructor);
|
144
145
|
for (const [type, config] of Array.from(jsTypes)) {
|
@@ -185,6 +186,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
185
186
|
this.extendContext = extendContext;
|
186
187
|
this._hashFunction = hashFunction;
|
187
188
|
}
|
189
|
+
|
188
190
|
/**
|
189
191
|
* @param {RegExp} regExp RegExp for which the request is tested
|
190
192
|
* @param {function(string): boolean} loader loader to load the request, returns true when successful
|
@@ -202,7 +204,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
202
204
|
* @returns {void}
|
203
205
|
*/
|
204
206
|
static register(Constructor, request, name, serializer) {
|
205
|
-
const key = request
|
207
|
+
const key = `${request}/${name}`;
|
206
208
|
|
207
209
|
if (serializers.has(Constructor)) {
|
208
210
|
throw new Error(
|
@@ -267,7 +269,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
267
269
|
* @returns {ObjectSerializer} serializer
|
268
270
|
*/
|
269
271
|
static getDeserializerFor(request, name) {
|
270
|
-
const key = request
|
272
|
+
const key = `${request}/${name}`;
|
271
273
|
const serializer = serializerInversed.get(key);
|
272
274
|
|
273
275
|
if (serializer === undefined) {
|
@@ -283,7 +285,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
283
285
|
* @returns {ObjectSerializer} serializer
|
284
286
|
*/
|
285
287
|
static _getDeserializerForWithoutError(request, name) {
|
286
|
-
const key = request
|
288
|
+
const key = `${request}/${name}`;
|
287
289
|
const serializer = serializerInversed.get(key);
|
288
290
|
return serializer;
|
289
291
|
}
|
@@ -316,17 +318,16 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
316
318
|
}
|
317
319
|
bufferDedupeMap.set(len, [entry, buf]);
|
318
320
|
return buf;
|
319
|
-
} else {
|
320
|
-
const hash = toHash(entry, this._hashFunction);
|
321
|
-
const newMap = new Map();
|
322
|
-
newMap.set(hash, entry);
|
323
|
-
bufferDedupeMap.set(len, newMap);
|
324
|
-
const hashBuf = toHash(buf, this._hashFunction);
|
325
|
-
if (hash === hashBuf) {
|
326
|
-
return entry;
|
327
|
-
}
|
328
|
-
return buf;
|
329
321
|
}
|
322
|
+
const hash = toHash(entry, this._hashFunction);
|
323
|
+
const newMap = new Map();
|
324
|
+
newMap.set(hash, entry);
|
325
|
+
bufferDedupeMap.set(len, newMap);
|
326
|
+
const hashBuf = toHash(buf, this._hashFunction);
|
327
|
+
if (hash === hashBuf) {
|
328
|
+
return entry;
|
329
|
+
}
|
330
|
+
return buf;
|
330
331
|
} else if (Array.isArray(entry)) {
|
331
332
|
if (entry.length < 16) {
|
332
333
|
for (const item of entry) {
|
@@ -336,32 +337,29 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
336
337
|
}
|
337
338
|
entry.push(buf);
|
338
339
|
return buf;
|
339
|
-
} else {
|
340
|
-
const newMap = new Map();
|
341
|
-
const hash = toHash(buf, this._hashFunction);
|
342
|
-
let found;
|
343
|
-
for (const item of entry) {
|
344
|
-
const itemHash = toHash(item, this._hashFunction);
|
345
|
-
newMap.set(itemHash, item);
|
346
|
-
if (found === undefined && itemHash === hash) found = item;
|
347
|
-
}
|
348
|
-
bufferDedupeMap.set(len, newMap);
|
349
|
-
if (found === undefined) {
|
350
|
-
newMap.set(hash, buf);
|
351
|
-
return buf;
|
352
|
-
} else {
|
353
|
-
return found;
|
354
|
-
}
|
355
340
|
}
|
356
|
-
|
341
|
+
const newMap = new Map();
|
357
342
|
const hash = toHash(buf, this._hashFunction);
|
358
|
-
|
359
|
-
|
360
|
-
|
343
|
+
let found;
|
344
|
+
for (const item of entry) {
|
345
|
+
const itemHash = toHash(item, this._hashFunction);
|
346
|
+
newMap.set(itemHash, item);
|
347
|
+
if (found === undefined && itemHash === hash) found = item;
|
361
348
|
}
|
362
|
-
|
363
|
-
|
349
|
+
bufferDedupeMap.set(len, newMap);
|
350
|
+
if (found === undefined) {
|
351
|
+
newMap.set(hash, buf);
|
352
|
+
return buf;
|
353
|
+
}
|
354
|
+
return found;
|
355
|
+
}
|
356
|
+
const hash = toHash(buf, this._hashFunction);
|
357
|
+
const item = entry.get(hash);
|
358
|
+
if (item !== undefined) {
|
359
|
+
return item;
|
364
360
|
}
|
361
|
+
entry.set(hash, buf);
|
362
|
+
return buf;
|
365
363
|
};
|
366
364
|
let currentPosTypeLookup = 0;
|
367
365
|
let objectTypeLookup = new Map();
|
@@ -385,7 +383,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
385
383
|
if (request) {
|
386
384
|
return `${request}${name ? `.${name}` : ""}`;
|
387
385
|
}
|
388
|
-
} catch (
|
386
|
+
} catch (_err) {
|
389
387
|
// ignore -> fallback
|
390
388
|
}
|
391
389
|
if (typeof item === "object" && item !== null) {
|
@@ -408,8 +406,8 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
408
406
|
}
|
409
407
|
try {
|
410
408
|
return `${item}`;
|
411
|
-
} catch (
|
412
|
-
return `(${
|
409
|
+
} catch (err) {
|
410
|
+
return `(${err.message})`;
|
413
411
|
}
|
414
412
|
})
|
415
413
|
.join(" -> ");
|
@@ -419,16 +417,16 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
419
417
|
write(value, key) {
|
420
418
|
try {
|
421
419
|
process(value);
|
422
|
-
} catch (
|
423
|
-
if (
|
420
|
+
} catch (err) {
|
421
|
+
if (err !== NOT_SERIALIZABLE) {
|
424
422
|
if (hasDebugInfoAttached === undefined)
|
425
423
|
hasDebugInfoAttached = new WeakSet();
|
426
|
-
if (!hasDebugInfoAttached.has(
|
427
|
-
|
428
|
-
hasDebugInfoAttached.add(
|
424
|
+
if (!hasDebugInfoAttached.has(err)) {
|
425
|
+
err.message += `\nwhile serializing ${stackToString(value)}`;
|
426
|
+
hasDebugInfoAttached.add(err);
|
429
427
|
}
|
430
428
|
}
|
431
|
-
throw
|
429
|
+
throw err;
|
432
430
|
}
|
433
431
|
},
|
434
432
|
setCircularReference(ref) {
|
@@ -491,7 +489,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
491
489
|
|
492
490
|
if (cycleStack.has(item)) {
|
493
491
|
throw new Error(
|
494
|
-
|
492
|
+
"This is a circular references. To serialize circular references use 'setCircularReference' somewhere in the circle during serialize and deserialize."
|
495
493
|
);
|
496
494
|
}
|
497
495
|
|
@@ -542,7 +540,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
542
540
|
result.push(item);
|
543
541
|
} else if (typeof item === "function") {
|
544
542
|
if (!SerializerMiddleware.isLazy(item))
|
545
|
-
throw new Error(
|
543
|
+
throw new Error(`Unexpected function ${item}`);
|
546
544
|
/** @type {SerializedType} */
|
547
545
|
const serializedData =
|
548
546
|
SerializerMiddleware.getLazySerializedValue(item);
|
@@ -573,10 +571,10 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
573
571
|
process(item);
|
574
572
|
}
|
575
573
|
return result;
|
576
|
-
} catch (
|
577
|
-
if (
|
574
|
+
} catch (err) {
|
575
|
+
if (err === NOT_SERIALIZABLE) return null;
|
578
576
|
|
579
|
-
throw
|
577
|
+
throw err;
|
580
578
|
} finally {
|
581
579
|
// Get rid of these references to avoid leaking memory
|
582
580
|
// This happens because the optimized code v8 generates
|
@@ -637,7 +635,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
637
635
|
if (nextItem === ESCAPE_ESCAPE_VALUE) {
|
638
636
|
return ESCAPE;
|
639
637
|
} else if (nextItem === ESCAPE_UNDEFINED) {
|
640
|
-
|
638
|
+
// Nothing
|
641
639
|
} else if (nextItem === ESCAPE_END_OBJECT) {
|
642
640
|
throw new Error(
|
643
641
|
`Unexpected end of object at position ${currentDataPos - 1}`
|
@@ -670,11 +668,9 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
670
668
|
if (request && !loadedRequests.has(request)) {
|
671
669
|
let loaded = false;
|
672
670
|
for (const [regExp, loader] of loaders) {
|
673
|
-
if (regExp.test(request)) {
|
674
|
-
|
675
|
-
|
676
|
-
break;
|
677
|
-
}
|
671
|
+
if (regExp.test(request) && loader(request)) {
|
672
|
+
loaded = true;
|
673
|
+
break;
|
678
674
|
}
|
679
675
|
}
|
680
676
|
if (!loaded) {
|
@@ -7,19 +7,36 @@
|
|
7
7
|
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
8
|
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
9
|
|
10
|
+
/** @typedef {(arg0?: any) => void} CacheAssoc */
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @template T
|
14
|
+
* @typedef {WeakMap<CacheAssoc, ObjectStructure<T>>}
|
15
|
+
*/
|
10
16
|
const cache = new WeakMap();
|
11
17
|
|
18
|
+
/**
|
19
|
+
* @template T
|
20
|
+
*/
|
12
21
|
class ObjectStructure {
|
13
22
|
constructor() {
|
14
23
|
this.keys = undefined;
|
15
24
|
this.children = undefined;
|
16
25
|
}
|
17
26
|
|
27
|
+
/**
|
28
|
+
* @param {keyof T[]} keys keys
|
29
|
+
* @returns {keyof T[]} keys
|
30
|
+
*/
|
18
31
|
getKeys(keys) {
|
19
32
|
if (this.keys === undefined) this.keys = keys;
|
20
33
|
return this.keys;
|
21
34
|
}
|
22
35
|
|
36
|
+
/**
|
37
|
+
* @param {keyof T} key key
|
38
|
+
* @returns {ObjectStructure<T>} object structure
|
39
|
+
*/
|
23
40
|
key(key) {
|
24
41
|
if (this.children === undefined) this.children = new Map();
|
25
42
|
const child = this.children.get(key);
|
@@ -30,6 +47,12 @@ class ObjectStructure {
|
|
30
47
|
}
|
31
48
|
}
|
32
49
|
|
50
|
+
/**
|
51
|
+
* @template T
|
52
|
+
* @param {(keyof T)[]} keys keys
|
53
|
+
* @param {CacheAssoc} cacheAssoc cache assoc fn
|
54
|
+
* @returns {(keyof T)[]} keys
|
55
|
+
*/
|
33
56
|
const getCachedKeys = (keys, cacheAssoc) => {
|
34
57
|
let root = cache.get(cacheAssoc);
|
35
58
|
if (root === undefined) {
|
@@ -45,11 +68,12 @@ const getCachedKeys = (keys, cacheAssoc) => {
|
|
45
68
|
|
46
69
|
class PlainObjectSerializer {
|
47
70
|
/**
|
48
|
-
* @
|
71
|
+
* @template {object} T
|
72
|
+
* @param {T} obj plain object
|
49
73
|
* @param {ObjectSerializerContext} context context
|
50
74
|
*/
|
51
75
|
serialize(obj, context) {
|
52
|
-
const keys = Object.keys(obj);
|
76
|
+
const keys = /** @type {(keyof T)[]} */ (Object.keys(obj));
|
53
77
|
if (keys.length > 128) {
|
54
78
|
// Objects with so many keys are unlikely to share structure
|
55
79
|
// with other objects
|
@@ -70,19 +94,21 @@ class PlainObjectSerializer {
|
|
70
94
|
context.write(null);
|
71
95
|
}
|
72
96
|
}
|
97
|
+
|
73
98
|
/**
|
99
|
+
* @template {object} T
|
74
100
|
* @param {ObjectDeserializerContext} context context
|
75
|
-
* @returns {
|
101
|
+
* @returns {T} plain object
|
76
102
|
*/
|
77
103
|
deserialize(context) {
|
78
104
|
const keys = context.read();
|
79
|
-
const obj = {};
|
105
|
+
const obj = /** @type {T} */ ({});
|
80
106
|
if (Array.isArray(keys)) {
|
81
107
|
for (const key of keys) {
|
82
|
-
obj[key] = context.read();
|
108
|
+
obj[/** @type {keyof T} */ (key)] = context.read();
|
83
109
|
}
|
84
110
|
} else if (keys !== null) {
|
85
|
-
obj[keys] = context.read();
|
111
|
+
obj[/** @type {keyof T} */ (keys)] = context.read();
|
86
112
|
}
|
87
113
|
return obj;
|
88
114
|
}
|
@@ -52,11 +52,10 @@ class Serializer {
|
|
52
52
|
/** @type {any} */
|
53
53
|
let current = value;
|
54
54
|
for (const middleware of this.deserializeMiddlewares) {
|
55
|
-
|
56
|
-
current
|
57
|
-
|
58
|
-
|
59
|
-
}
|
55
|
+
current =
|
56
|
+
current && typeof current.then === "function"
|
57
|
+
? current.then(data => middleware.deserialize(data, ctx))
|
58
|
+
: middleware.deserialize(current, ctx);
|
60
59
|
}
|
61
60
|
return current;
|
62
61
|
}
|
@@ -45,7 +45,7 @@ class SerializerMiddleware {
|
|
45
45
|
* @param {any=} serializedValue serialized value
|
46
46
|
* @returns {function(): Promise<any> | any} lazy function
|
47
47
|
*/
|
48
|
-
static createLazy(value, target, options = {}, serializedValue) {
|
48
|
+
static createLazy(value, target, options = {}, serializedValue = undefined) {
|
49
49
|
if (SerializerMiddleware.isLazy(value, target)) return value;
|
50
50
|
const fn = typeof value === "function" ? value : () => value;
|
51
51
|
fn[LAZY_TARGET] = target;
|
@@ -62,24 +62,24 @@ class SerializerMiddleware {
|
|
62
62
|
static isLazy(fn, target) {
|
63
63
|
if (typeof fn !== "function") return false;
|
64
64
|
const t = fn[LAZY_TARGET];
|
65
|
-
return target ? t === target :
|
65
|
+
return target ? t === target : Boolean(t);
|
66
66
|
}
|
67
67
|
|
68
68
|
/**
|
69
69
|
* @param {function(): Promise<any> | any} fn lazy function
|
70
|
-
* @returns {object} options
|
70
|
+
* @returns {object | undefined} options
|
71
71
|
*/
|
72
72
|
static getLazyOptions(fn) {
|
73
|
-
if (typeof fn !== "function") return
|
73
|
+
if (typeof fn !== "function") return;
|
74
74
|
return /** @type {any} */ (fn).options;
|
75
75
|
}
|
76
76
|
|
77
77
|
/**
|
78
78
|
* @param {function(): Promise<any> | any} fn lazy function
|
79
|
-
* @returns {any} serialized value
|
79
|
+
* @returns {any | undefined} serialized value
|
80
80
|
*/
|
81
81
|
static getLazySerializedValue(fn) {
|
82
|
-
if (typeof fn !== "function") return
|
82
|
+
if (typeof fn !== "function") return;
|
83
83
|
return fn[LAZY_SERIALIZED_VALUE];
|
84
84
|
}
|
85
85
|
|
@@ -19,6 +19,7 @@ class SetObjectSerializer {
|
|
19
19
|
context.write(value);
|
20
20
|
}
|
21
21
|
}
|
22
|
+
|
22
23
|
/**
|
23
24
|
* @template T
|
24
25
|
* @param {ObjectDeserializerContext} context context
|
@@ -26,7 +27,7 @@ class SetObjectSerializer {
|
|
26
27
|
*/
|
27
28
|
deserialize(context) {
|
28
29
|
/** @type {number} */
|
29
|
-
|
30
|
+
const size = context.read();
|
30
31
|
/** @type {Set<T>} */
|
31
32
|
const set = new Set();
|
32
33
|
for (let i = 0; i < size; i++) {
|
@@ -207,26 +207,31 @@ class ConsumeSharedModule extends Module {
|
|
207
207
|
});
|
208
208
|
}
|
209
209
|
}
|
210
|
-
|
211
|
-
const args = [
|
210
|
+
|
211
|
+
const args = [
|
212
|
+
JSON.stringify(shareScope),
|
213
|
+
JSON.stringify(shareKey),
|
214
|
+
JSON.stringify(eager)
|
215
|
+
];
|
212
216
|
if (requiredVersion) {
|
213
|
-
if (strictVersion) {
|
214
|
-
fn += "Strict";
|
215
|
-
}
|
216
|
-
if (singleton) {
|
217
|
-
fn += "Singleton";
|
218
|
-
}
|
219
217
|
args.push(stringifyHoley(requiredVersion));
|
220
|
-
fn += "VersionCheck";
|
221
|
-
} else {
|
222
|
-
if (singleton) {
|
223
|
-
fn += "Singleton";
|
224
|
-
}
|
225
218
|
}
|
226
219
|
if (fallbackCode) {
|
227
|
-
fn += "Fallback";
|
228
220
|
args.push(fallbackCode);
|
229
221
|
}
|
222
|
+
|
223
|
+
let fn;
|
224
|
+
|
225
|
+
if (requiredVersion) {
|
226
|
+
if (strictVersion) {
|
227
|
+
fn = singleton ? "loadStrictSingletonVersion" : "loadStrictVersion";
|
228
|
+
} else {
|
229
|
+
fn = singleton ? "loadSingletonVersion" : "loadVersion";
|
230
|
+
}
|
231
|
+
} else {
|
232
|
+
fn = singleton ? "loadSingleton" : "load";
|
233
|
+
}
|
234
|
+
|
230
235
|
const code = runtimeTemplate.returningFunction(`${fn}(${args.join(", ")})`);
|
231
236
|
const sources = new Map();
|
232
237
|
sources.set("consume-shared", new RawSource(code));
|