webpack 5.93.0 → 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 +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- 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 +126 -69
- 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/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -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 +26 -24
- package/lib/css/CssGenerator.js +9 -4
- 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 +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- 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 +40 -15
- 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 +3 -3
- 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 +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +91 -69
- 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 +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- 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 +80 -48
- 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 +54 -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/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/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- 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 +8 -11
- 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 +15 -14
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1 -0
- 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 +667 -347
@@ -160,19 +160,18 @@ class Pack {
|
|
160
160
|
const info = this.itemInfo.get(identifier);
|
161
161
|
this._addRequest(identifier);
|
162
162
|
if (info === undefined) {
|
163
|
-
return
|
163
|
+
return;
|
164
164
|
}
|
165
165
|
if (info.etag !== etag) return null;
|
166
166
|
info.lastAccess = Date.now();
|
167
167
|
const loc = info.location;
|
168
168
|
if (loc === -1) {
|
169
169
|
return info.freshValue;
|
170
|
-
} else {
|
171
|
-
if (!this.content[loc]) {
|
172
|
-
return undefined;
|
173
|
-
}
|
174
|
-
return /** @type {PackContent} */ (this.content[loc]).get(identifier);
|
175
170
|
}
|
171
|
+
if (!this.content[loc]) {
|
172
|
+
return;
|
173
|
+
}
|
174
|
+
return /** @type {PackContent} */ (this.content[loc]).get(identifier);
|
176
175
|
}
|
177
176
|
|
178
177
|
/**
|
@@ -528,7 +527,7 @@ class Pack {
|
|
528
527
|
*/
|
529
528
|
_gcOldestContent() {
|
530
529
|
/** @type {PackItemInfo | undefined} */
|
531
|
-
let oldest
|
530
|
+
let oldest;
|
532
531
|
for (const info of this.itemInfo.values()) {
|
533
532
|
if (oldest === undefined || info.lastAccess < oldest.lastAccess) {
|
534
533
|
oldest = info;
|
@@ -677,16 +676,16 @@ class PackContentItems {
|
|
677
676
|
logger.log(`Serialization of '${key}': ${duration} ms`);
|
678
677
|
else logger.debug(`Serialization of '${key}': ${duration} ms`);
|
679
678
|
}
|
680
|
-
} catch (
|
679
|
+
} catch (err) {
|
681
680
|
rollback(s);
|
682
|
-
if (
|
681
|
+
if (err === NOT_SERIALIZABLE) continue;
|
683
682
|
const msg = "Skipped not serializable cache item";
|
684
|
-
if (
|
685
|
-
logger.log(`${msg} (in build error): ${
|
686
|
-
logger.debug(`${msg} '${key}' (in build error): ${
|
683
|
+
if (err.message.includes("ModuleBuildError")) {
|
684
|
+
logger.log(`${msg} (in build error): ${err.message}`);
|
685
|
+
logger.debug(`${msg} '${key}' (in build error): ${err.stack}`);
|
687
686
|
} else {
|
688
|
-
logger.warn(`${msg}: ${
|
689
|
-
logger.debug(`${msg} '${key}': ${
|
687
|
+
logger.warn(`${msg}: ${err.message}`);
|
688
|
+
logger.debug(`${msg} '${key}': ${err.stack}`);
|
690
689
|
}
|
691
690
|
}
|
692
691
|
}
|
@@ -698,7 +697,7 @@ class PackContentItems {
|
|
698
697
|
try {
|
699
698
|
write(true);
|
700
699
|
write(this.map);
|
701
|
-
} catch (
|
700
|
+
} catch (_err) {
|
702
701
|
rollback(s);
|
703
702
|
|
704
703
|
// Try to serialize each item on it's own
|
@@ -708,13 +707,13 @@ class PackContentItems {
|
|
708
707
|
try {
|
709
708
|
write(key);
|
710
709
|
write(value);
|
711
|
-
} catch (
|
710
|
+
} catch (err) {
|
712
711
|
rollback(s);
|
713
|
-
if (
|
712
|
+
if (err === NOT_SERIALIZABLE) continue;
|
714
713
|
logger.warn(
|
715
|
-
`Skipped not serializable cache item '${key}': ${
|
714
|
+
`Skipped not serializable cache item '${key}': ${err.message}`
|
716
715
|
);
|
717
|
-
logger.debug(
|
716
|
+
logger.debug(err.stack);
|
718
717
|
}
|
719
718
|
}
|
720
719
|
write(null);
|
@@ -817,6 +816,7 @@ class PackContent {
|
|
817
816
|
return this.content.get(identifier);
|
818
817
|
}
|
819
818
|
|
819
|
+
const logger = /** @type {Logger} */ (this.logger);
|
820
820
|
// We are in state B
|
821
821
|
const { lazyName } = this;
|
822
822
|
/** @type {string | undefined} */
|
@@ -827,35 +827,35 @@ class PackContent {
|
|
827
827
|
timeMessage = `restore cache content ${lazyName} (${formatSize(
|
828
828
|
this.getSize()
|
829
829
|
)})`;
|
830
|
-
|
830
|
+
logger.log(
|
831
831
|
`starting to restore cache content ${lazyName} (${formatSize(
|
832
832
|
this.getSize()
|
833
833
|
)}) because of request to: ${identifier}`
|
834
834
|
);
|
835
|
-
|
835
|
+
logger.time(timeMessage);
|
836
836
|
}
|
837
837
|
const value = this.lazy();
|
838
838
|
if ("then" in value) {
|
839
839
|
return value.then(data => {
|
840
840
|
const map = data.map;
|
841
841
|
if (timeMessage) {
|
842
|
-
|
842
|
+
logger.timeEnd(timeMessage);
|
843
843
|
}
|
844
844
|
// Move to state C
|
845
845
|
this.content = map;
|
846
846
|
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
847
847
|
return map.get(identifier);
|
848
848
|
});
|
849
|
-
} else {
|
850
|
-
const map = value.map;
|
851
|
-
if (timeMessage) {
|
852
|
-
this.logger.timeEnd(timeMessage);
|
853
|
-
}
|
854
|
-
// Move to state C
|
855
|
-
this.content = map;
|
856
|
-
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
857
|
-
return map.get(identifier);
|
858
849
|
}
|
850
|
+
|
851
|
+
const map = value.map;
|
852
|
+
if (timeMessage) {
|
853
|
+
logger.timeEnd(timeMessage);
|
854
|
+
}
|
855
|
+
// Move to state C
|
856
|
+
this.content = map;
|
857
|
+
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
858
|
+
return map.get(identifier);
|
859
859
|
}
|
860
860
|
|
861
861
|
/**
|
@@ -865,6 +865,7 @@ class PackContent {
|
|
865
865
|
unpack(reason) {
|
866
866
|
if (this.content) return;
|
867
867
|
|
868
|
+
const logger = /** @type {Logger} */ (this.logger);
|
868
869
|
// Move from state B to C
|
869
870
|
if (this.lazy) {
|
870
871
|
const { lazyName } = this;
|
@@ -876,27 +877,26 @@ class PackContent {
|
|
876
877
|
timeMessage = `unpack cache content ${lazyName} (${formatSize(
|
877
878
|
this.getSize()
|
878
879
|
)})`;
|
879
|
-
|
880
|
+
logger.log(
|
880
881
|
`starting to unpack cache content ${lazyName} (${formatSize(
|
881
882
|
this.getSize()
|
882
883
|
)}) because ${reason}`
|
883
884
|
);
|
884
|
-
|
885
|
+
logger.time(timeMessage);
|
885
886
|
}
|
886
887
|
const value = this.lazy();
|
887
888
|
if ("then" in value) {
|
888
889
|
return value.then(data => {
|
889
890
|
if (timeMessage) {
|
890
|
-
|
891
|
+
logger.timeEnd(timeMessage);
|
891
892
|
}
|
892
893
|
this.content = data.map;
|
893
894
|
});
|
894
|
-
} else {
|
895
|
-
if (timeMessage) {
|
896
|
-
this.logger.timeEnd(timeMessage);
|
897
|
-
}
|
898
|
-
this.content = value.map;
|
899
895
|
}
|
896
|
+
if (timeMessage) {
|
897
|
+
logger.timeEnd(timeMessage);
|
898
|
+
}
|
899
|
+
this.content = value.map;
|
900
900
|
}
|
901
901
|
}
|
902
902
|
|
@@ -957,6 +957,7 @@ class PackContent {
|
|
957
957
|
);
|
958
958
|
return;
|
959
959
|
}
|
960
|
+
const logger = /** @type {Logger} */ (this.logger);
|
960
961
|
// State B2
|
961
962
|
const { lazyName } = this;
|
962
963
|
/** @type {string | undefined} */
|
@@ -967,12 +968,12 @@ class PackContent {
|
|
967
968
|
timeMessage = `unpack cache content ${lazyName} (${formatSize(
|
968
969
|
this.getSize()
|
969
970
|
)})`;
|
970
|
-
|
971
|
+
logger.log(
|
971
972
|
`starting to unpack cache content ${lazyName} (${formatSize(
|
972
973
|
this.getSize()
|
973
974
|
)}) because it's outdated and need to be serialized`
|
974
975
|
);
|
975
|
-
|
976
|
+
logger.time(timeMessage);
|
976
977
|
}
|
977
978
|
const value = this.lazy();
|
978
979
|
this.outdated = false;
|
@@ -981,7 +982,7 @@ class PackContent {
|
|
981
982
|
this.lazy = write(() =>
|
982
983
|
value.then(data => {
|
983
984
|
if (timeMessage) {
|
984
|
-
|
985
|
+
logger.timeEnd(timeMessage);
|
985
986
|
}
|
986
987
|
const oldMap = data.map;
|
987
988
|
/** @type {Map<string, any>} */
|
@@ -999,7 +1000,7 @@ class PackContent {
|
|
999
1000
|
} else {
|
1000
1001
|
// Move to state C1
|
1001
1002
|
if (timeMessage) {
|
1002
|
-
|
1003
|
+
logger.timeEnd(timeMessage);
|
1003
1004
|
}
|
1004
1005
|
const oldMap = value.map;
|
1005
1006
|
/** @type {Map<string, any>} */
|
@@ -1148,19 +1149,19 @@ class PackFileCacheStrategy {
|
|
1148
1149
|
})
|
1149
1150
|
.then(packContainer => {
|
1150
1151
|
logger.timeEnd("restore cache container");
|
1151
|
-
if (!packContainer) return
|
1152
|
+
if (!packContainer) return;
|
1152
1153
|
if (!(packContainer instanceof PackContainer)) {
|
1153
1154
|
logger.warn(
|
1154
1155
|
`Restored pack from ${cacheLocation}${this._extension}, but contained content is unexpected.`,
|
1155
1156
|
packContainer
|
1156
1157
|
);
|
1157
|
-
return
|
1158
|
+
return;
|
1158
1159
|
}
|
1159
1160
|
if (packContainer.version !== version) {
|
1160
1161
|
logger.log(
|
1161
1162
|
`Restored pack from ${cacheLocation}${this._extension}, but version doesn't match.`
|
1162
1163
|
);
|
1163
|
-
return
|
1164
|
+
return;
|
1164
1165
|
}
|
1165
1166
|
logger.time("check build dependencies");
|
1166
1167
|
return Promise.all([
|
@@ -1321,7 +1322,7 @@ class PackFileCacheStrategy {
|
|
1321
1322
|
pack.stopCapturingRequests();
|
1322
1323
|
if (!pack.invalid) return;
|
1323
1324
|
this.packPromise = undefined;
|
1324
|
-
this.logger.log(
|
1325
|
+
this.logger.log("Storing pack...");
|
1325
1326
|
let promise;
|
1326
1327
|
const newBuildDependencies = new Set();
|
1327
1328
|
for (const dep of this.newBuildDependencies) {
|
@@ -1439,7 +1440,7 @@ class PackFileCacheStrategy {
|
|
1439
1440
|
}
|
1440
1441
|
return promise.then(() => {
|
1441
1442
|
if (reportProgress) reportProgress(0.8, "serialize pack");
|
1442
|
-
this.logger.time(
|
1443
|
+
this.logger.time("store pack");
|
1443
1444
|
const updatedBuildDependencies = new Set(this.buildDependencies);
|
1444
1445
|
for (const dep of newBuildDependencies) {
|
1445
1446
|
updatedBuildDependencies.add(dep);
|
@@ -1464,7 +1465,7 @@ class PackFileCacheStrategy {
|
|
1464
1465
|
this.buildDependencies.add(dep);
|
1465
1466
|
}
|
1466
1467
|
this.newBuildDependencies.clear();
|
1467
|
-
this.logger.timeEnd(
|
1468
|
+
this.logger.timeEnd("store pack");
|
1468
1469
|
const stats = pack.getContentStats();
|
1469
1470
|
this.logger.log(
|
1470
1471
|
"Stored pack (%d items, %d files, %d MiB)",
|
@@ -1474,7 +1475,7 @@ class PackFileCacheStrategy {
|
|
1474
1475
|
);
|
1475
1476
|
})
|
1476
1477
|
.catch(err => {
|
1477
|
-
this.logger.timeEnd(
|
1478
|
+
this.logger.timeEnd("store pack");
|
1478
1479
|
this.logger.warn(`Caching failed for pack: ${err}`);
|
1479
1480
|
this.logger.debug(err.stack);
|
1480
1481
|
});
|
@@ -59,11 +59,10 @@ const objectToString = (object, excludeContext) => {
|
|
59
59
|
for (const key in object) {
|
60
60
|
if (excludeContext && key === "context") continue;
|
61
61
|
const value = object[key];
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
}
|
62
|
+
str +=
|
63
|
+
typeof value === "object" && value !== null
|
64
|
+
? `|${key}=[${objectToString(value, false)}|]`
|
65
|
+
: `|${key}=|${value}`;
|
67
66
|
}
|
68
67
|
return str;
|
69
68
|
};
|
@@ -241,7 +240,8 @@ class ResolverCachePlugin {
|
|
241
240
|
}
|
242
241
|
}
|
243
242
|
const itemCache = cache.getItemCache(identifier, null);
|
244
|
-
let callbacks
|
243
|
+
let callbacks;
|
244
|
+
let yields;
|
245
245
|
const done = withYield
|
246
246
|
? (err, result) => {
|
247
247
|
if (callbacks === undefined) {
|
package/lib/cache/mergeEtags.js
CHANGED
@@ -34,27 +34,23 @@ const mergeEtags = (a, b) => {
|
|
34
34
|
if (typeof a === "string") {
|
35
35
|
if (typeof b === "string") {
|
36
36
|
return `${a}|${b}`;
|
37
|
-
} else {
|
38
|
-
const temp = b;
|
39
|
-
b = a;
|
40
|
-
a = temp;
|
41
37
|
}
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
if (mergedEtag === undefined) {
|
51
|
-
const newMergedEtag = new MergedEtag(a, b);
|
52
|
-
map.set(b, newMergedEtag);
|
53
|
-
return newMergedEtag;
|
54
|
-
} else {
|
55
|
-
return mergedEtag;
|
56
|
-
}
|
38
|
+
const temp = b;
|
39
|
+
b = a;
|
40
|
+
a = temp;
|
41
|
+
} else if (typeof b !== "string") {
|
42
|
+
// both a and b are objects
|
43
|
+
let map = dualObjectMap.get(a);
|
44
|
+
if (map === undefined) {
|
45
|
+
dualObjectMap.set(a, (map = new WeakMap()));
|
57
46
|
}
|
47
|
+
const mergedEtag = map.get(b);
|
48
|
+
if (mergedEtag === undefined) {
|
49
|
+
const newMergedEtag = new MergedEtag(a, b);
|
50
|
+
map.set(b, newMergedEtag);
|
51
|
+
return newMergedEtag;
|
52
|
+
}
|
53
|
+
return mergedEtag;
|
58
54
|
}
|
59
55
|
// a is object, b is string
|
60
56
|
let map = objectStringMap.get(a);
|
@@ -66,9 +62,8 @@ const mergeEtags = (a, b) => {
|
|
66
62
|
const newMergedEtag = new MergedEtag(a, b);
|
67
63
|
map.set(b, newMergedEtag);
|
68
64
|
return newMergedEtag;
|
69
|
-
} else {
|
70
|
-
return mergedEtag;
|
71
65
|
}
|
66
|
+
return mergedEtag;
|
72
67
|
};
|
73
68
|
|
74
69
|
module.exports = mergeEtags;
|