webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -13,28 +13,31 @@ const LazySet = require("../util/LazySet");
|
|
|
13
13
|
const makeSerializable = require("../util/makeSerializable");
|
|
14
14
|
const memoize = require("../util/memoize");
|
|
15
15
|
const {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
NOT_SERIALIZABLE,
|
|
17
|
+
createFileSerializer
|
|
18
18
|
} = require("../util/serialization");
|
|
19
19
|
|
|
20
20
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
|
21
|
+
/** @typedef {import("../Compilation").FileSystemDependencies} FileSystemDependencies */
|
|
22
|
+
/** @typedef {import("../Cache").Data} Data */
|
|
21
23
|
/** @typedef {import("../Cache").Etag} Etag */
|
|
22
24
|
/** @typedef {import("../Compiler")} Compiler */
|
|
23
25
|
/** @typedef {import("../FileSystemInfo").ResolveBuildDependenciesResult} ResolveBuildDependenciesResult */
|
|
26
|
+
/** @typedef {import("../FileSystemInfo").ResolveResults} ResolveResults */
|
|
24
27
|
/** @typedef {import("../FileSystemInfo").Snapshot} Snapshot */
|
|
25
28
|
/** @typedef {import("../logging/Logger").Logger} Logger */
|
|
26
29
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
27
30
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
31
|
+
/** @typedef {typeof import("../util/Hash")} Hash */
|
|
28
32
|
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
29
33
|
|
|
30
|
-
/** @typedef {Map<string, string | false>} ResolveResults */
|
|
31
34
|
/** @typedef {Set<string>} Items */
|
|
32
35
|
/** @typedef {Set<string>} BuildDependencies */
|
|
33
36
|
/** @typedef {Map<string, PackItemInfo>} ItemInfo */
|
|
34
37
|
|
|
35
38
|
class PackContainer {
|
|
36
39
|
/**
|
|
37
|
-
* @param {
|
|
40
|
+
* @param {Pack} data stored data
|
|
38
41
|
* @param {string} version version identifier
|
|
39
42
|
* @param {Snapshot} buildSnapshot snapshot of all build dependencies
|
|
40
43
|
* @param {BuildDependencies} buildDependencies list of all unresolved build dependencies captured
|
|
@@ -49,11 +52,17 @@ class PackContainer {
|
|
|
49
52
|
resolveResults,
|
|
50
53
|
resolveBuildDependenciesSnapshot
|
|
51
54
|
) {
|
|
55
|
+
/** @type {Pack | (() => Pack)} */
|
|
52
56
|
this.data = data;
|
|
57
|
+
/** @type {string} */
|
|
53
58
|
this.version = version;
|
|
59
|
+
/** @type {Snapshot} */
|
|
54
60
|
this.buildSnapshot = buildSnapshot;
|
|
61
|
+
/** @type {BuildDependencies} */
|
|
55
62
|
this.buildDependencies = buildDependencies;
|
|
63
|
+
/** @type {ResolveResults} */
|
|
56
64
|
this.resolveResults = resolveResults;
|
|
65
|
+
/** @type {Snapshot} */
|
|
57
66
|
this.resolveBuildDependenciesSnapshot = resolveBuildDependenciesSnapshot;
|
|
58
67
|
}
|
|
59
68
|
|
|
@@ -99,13 +108,18 @@ class PackItemInfo {
|
|
|
99
108
|
/**
|
|
100
109
|
* @param {string} identifier identifier of item
|
|
101
110
|
* @param {string | null | undefined} etag etag of item
|
|
102
|
-
* @param {
|
|
111
|
+
* @param {Data} value fresh value of item
|
|
103
112
|
*/
|
|
104
113
|
constructor(identifier, etag, value) {
|
|
114
|
+
/** @type {string} */
|
|
105
115
|
this.identifier = identifier;
|
|
116
|
+
/** @type {string | null | undefined} */
|
|
106
117
|
this.etag = etag;
|
|
118
|
+
/** @type {number} */
|
|
107
119
|
this.location = -1;
|
|
120
|
+
/** @type {number} */
|
|
108
121
|
this.lastAccess = Date.now();
|
|
122
|
+
/** @type {Data} */
|
|
109
123
|
this.freshValue = value;
|
|
110
124
|
}
|
|
111
125
|
}
|
|
@@ -154,7 +168,7 @@ class Pack {
|
|
|
154
168
|
/**
|
|
155
169
|
* @param {string} identifier unique name for the resource
|
|
156
170
|
* @param {string | null} etag etag of the resource
|
|
157
|
-
* @returns {
|
|
171
|
+
* @returns {Data} cached content
|
|
158
172
|
*/
|
|
159
173
|
get(identifier, etag) {
|
|
160
174
|
const info = this.itemInfo.get(identifier);
|
|
@@ -177,7 +191,7 @@ class Pack {
|
|
|
177
191
|
/**
|
|
178
192
|
* @param {string} identifier unique name for the resource
|
|
179
193
|
* @param {string | null} etag etag of the resource
|
|
180
|
-
* @param {
|
|
194
|
+
* @param {Data} data cached content
|
|
181
195
|
* @returns {void}
|
|
182
196
|
*/
|
|
183
197
|
set(identifier, etag, data) {
|
|
@@ -268,7 +282,7 @@ class Pack {
|
|
|
268
282
|
}
|
|
269
283
|
|
|
270
284
|
_persistFreshContent() {
|
|
271
|
-
/** @typedef {{ items: Items, map:
|
|
285
|
+
/** @typedef {{ items: Items, map: Content, loc: number }} PackItem */
|
|
272
286
|
const itemsCount = this.freshContent.size;
|
|
273
287
|
if (itemsCount > 0) {
|
|
274
288
|
const packCount = Math.ceil(itemsCount / MAX_ITEMS_IN_FRESH_PACK);
|
|
@@ -290,8 +304,9 @@ class Pack {
|
|
|
290
304
|
return pack;
|
|
291
305
|
};
|
|
292
306
|
let pack = createNextPack();
|
|
293
|
-
if (this.requestsTimeout !== undefined)
|
|
307
|
+
if (this.requestsTimeout !== undefined) {
|
|
294
308
|
clearTimeout(this.requestsTimeout);
|
|
309
|
+
}
|
|
295
310
|
for (const identifier of this.requests) {
|
|
296
311
|
if (identifier === undefined) {
|
|
297
312
|
if (ignoreNextTimeTick) {
|
|
@@ -327,7 +342,7 @@ class Pack {
|
|
|
327
342
|
`${itemsCount} fresh items in cache put into pack ${
|
|
328
343
|
packs.length > 1
|
|
329
344
|
? packs
|
|
330
|
-
.map(pack => `${pack.loc} (${pack.items.size} items)`)
|
|
345
|
+
.map((pack) => `${pack.loc} (${pack.items.size} items)`)
|
|
331
346
|
.join(", ")
|
|
332
347
|
: packs[0].loc
|
|
333
348
|
}`
|
|
@@ -377,9 +392,11 @@ class Pack {
|
|
|
377
392
|
smallUnusedContentSize > MIN_CONTENT_SIZE
|
|
378
393
|
) {
|
|
379
394
|
mergedIndices = smallUnusedContents;
|
|
380
|
-
} else
|
|
395
|
+
} else {
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
381
398
|
|
|
382
|
-
/** @type {PackContent[]
|
|
399
|
+
/** @type {PackContent[]} */
|
|
383
400
|
const mergedContent = [];
|
|
384
401
|
|
|
385
402
|
// 3. Remove old content entries
|
|
@@ -393,7 +410,7 @@ class Pack {
|
|
|
393
410
|
const mergedItems = new Set();
|
|
394
411
|
/** @type {Items} */
|
|
395
412
|
const mergedUsedItems = new Set();
|
|
396
|
-
/** @type {(
|
|
413
|
+
/** @type {((map: Content) => Promise<void>)[]} */
|
|
397
414
|
const addToMergedMap = [];
|
|
398
415
|
for (const content of mergedContent) {
|
|
399
416
|
for (const identifier of content.items) {
|
|
@@ -402,7 +419,7 @@ class Pack {
|
|
|
402
419
|
for (const identifier of content.used) {
|
|
403
420
|
mergedUsedItems.add(identifier);
|
|
404
421
|
}
|
|
405
|
-
addToMergedMap.push(async map => {
|
|
422
|
+
addToMergedMap.push(async (map) => {
|
|
406
423
|
// unpack existing content
|
|
407
424
|
// after that values are accessible in .content
|
|
408
425
|
await content.unpack(
|
|
@@ -428,7 +445,7 @@ class Pack {
|
|
|
428
445
|
memoize(async () => {
|
|
429
446
|
/** @type {Content} */
|
|
430
447
|
const map = new Map();
|
|
431
|
-
await Promise.all(addToMergedMap.map(fn => fn(map)));
|
|
448
|
+
await Promise.all(addToMergedMap.map((fn) => fn(map)));
|
|
432
449
|
return new PackContentItems(map);
|
|
433
450
|
})
|
|
434
451
|
);
|
|
@@ -472,6 +489,7 @@ class Pack {
|
|
|
472
489
|
await content.unpack(
|
|
473
490
|
"it should be splitted into used and unused items"
|
|
474
491
|
);
|
|
492
|
+
/** @type {Content} */
|
|
475
493
|
const map = new Map();
|
|
476
494
|
for (const identifier of usedItems) {
|
|
477
495
|
map.set(
|
|
@@ -597,7 +615,10 @@ class Pack {
|
|
|
597
615
|
const content = this.content[i];
|
|
598
616
|
if (content !== undefined) {
|
|
599
617
|
write(content.items);
|
|
600
|
-
content.writeLazy(lazy =>
|
|
618
|
+
content.writeLazy((lazy) =>
|
|
619
|
+
/** @type {NonNullable<ObjectSerializerContext["writeSeparate"]>} */
|
|
620
|
+
(writeSeparate)(lazy, { name: `${i}` })
|
|
621
|
+
);
|
|
601
622
|
} else {
|
|
602
623
|
write(undefined); // undefined marks an empty content slot
|
|
603
624
|
}
|
|
@@ -618,7 +639,7 @@ class Pack {
|
|
|
618
639
|
item = read();
|
|
619
640
|
}
|
|
620
641
|
this.itemInfo.clear();
|
|
621
|
-
const infoItems = items.map(identifier => {
|
|
642
|
+
const infoItems = items.map((identifier) => {
|
|
622
643
|
const info = new PackItemInfo(identifier, undefined, undefined);
|
|
623
644
|
this.itemInfo.set(identifier, info);
|
|
624
645
|
return info;
|
|
@@ -659,7 +680,7 @@ class Pack {
|
|
|
659
680
|
|
|
660
681
|
makeSerializable(Pack, "webpack/lib/cache/PackFileCacheStrategy", "Pack");
|
|
661
682
|
|
|
662
|
-
/** @typedef {Map<string,
|
|
683
|
+
/** @typedef {Map<string, Data>} Content */
|
|
663
684
|
|
|
664
685
|
class PackContentItems {
|
|
665
686
|
/**
|
|
@@ -670,7 +691,7 @@ class PackContentItems {
|
|
|
670
691
|
}
|
|
671
692
|
|
|
672
693
|
/**
|
|
673
|
-
* @param {ObjectSerializerContext & {
|
|
694
|
+
* @param {ObjectSerializerContext & { logger: Logger, profile: boolean | undefined }} context context
|
|
674
695
|
*/
|
|
675
696
|
serialize({ write, snapshot, rollback, logger, profile }) {
|
|
676
697
|
if (profile) {
|
|
@@ -684,15 +705,17 @@ class PackContentItems {
|
|
|
684
705
|
const durationHr = process.hrtime(start);
|
|
685
706
|
const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
|
|
686
707
|
if (duration > 1) {
|
|
687
|
-
if (duration > 500)
|
|
708
|
+
if (duration > 500) {
|
|
688
709
|
logger.error(`Serialization of '${key}': ${duration} ms`);
|
|
689
|
-
else if (duration > 50)
|
|
710
|
+
} else if (duration > 50) {
|
|
690
711
|
logger.warn(`Serialization of '${key}': ${duration} ms`);
|
|
691
|
-
else if (duration > 10)
|
|
712
|
+
} else if (duration > 10) {
|
|
692
713
|
logger.info(`Serialization of '${key}': ${duration} ms`);
|
|
693
|
-
else if (duration > 5)
|
|
714
|
+
} else if (duration > 5) {
|
|
694
715
|
logger.log(`Serialization of '${key}': ${duration} ms`);
|
|
695
|
-
else
|
|
716
|
+
} else {
|
|
717
|
+
logger.debug(`Serialization of '${key}': ${duration} ms`);
|
|
718
|
+
}
|
|
696
719
|
}
|
|
697
720
|
} catch (err) {
|
|
698
721
|
rollback(s);
|
|
@@ -759,15 +782,17 @@ class PackContentItems {
|
|
|
759
782
|
const durationHr = process.hrtime(start);
|
|
760
783
|
const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
|
|
761
784
|
if (duration > 1) {
|
|
762
|
-
if (duration > 100)
|
|
785
|
+
if (duration > 100) {
|
|
763
786
|
logger.error(`Deserialization of '${key}': ${duration} ms`);
|
|
764
|
-
else if (duration > 20)
|
|
787
|
+
} else if (duration > 20) {
|
|
765
788
|
logger.warn(`Deserialization of '${key}': ${duration} ms`);
|
|
766
|
-
else if (duration > 5)
|
|
789
|
+
} else if (duration > 5) {
|
|
767
790
|
logger.info(`Deserialization of '${key}': ${duration} ms`);
|
|
768
|
-
else if (duration > 2)
|
|
791
|
+
} else if (duration > 2) {
|
|
769
792
|
logger.log(`Deserialization of '${key}': ${duration} ms`);
|
|
770
|
-
else
|
|
793
|
+
} else {
|
|
794
|
+
logger.debug(`Deserialization of '${key}': ${duration} ms`);
|
|
795
|
+
}
|
|
771
796
|
}
|
|
772
797
|
map.set(key, value);
|
|
773
798
|
key = read();
|
|
@@ -791,7 +816,7 @@ makeSerializable(
|
|
|
791
816
|
"PackContentItems"
|
|
792
817
|
);
|
|
793
818
|
|
|
794
|
-
/** @typedef {(
|
|
819
|
+
/** @typedef {(() => Promise<PackContentItems> | PackContentItems) & Partial<{ options: { size?: number }}>} LazyFunction */
|
|
795
820
|
|
|
796
821
|
class PackContent {
|
|
797
822
|
/*
|
|
@@ -816,13 +841,13 @@ class PackContent {
|
|
|
816
841
|
/**
|
|
817
842
|
* @param {Items} items keys
|
|
818
843
|
* @param {Items} usedItems used keys
|
|
819
|
-
* @param {PackContentItems |
|
|
844
|
+
* @param {PackContentItems | (() => Promise<PackContentItems>)} dataOrFn sync or async content
|
|
820
845
|
* @param {Logger=} logger logger for logging
|
|
821
846
|
* @param {string=} lazyName name of dataOrFn for logging
|
|
822
847
|
*/
|
|
823
848
|
constructor(items, usedItems, dataOrFn, logger, lazyName) {
|
|
824
849
|
this.items = items;
|
|
825
|
-
/** @type {
|
|
850
|
+
/** @type {LazyFunction | undefined} */
|
|
826
851
|
this.lazy = typeof dataOrFn === "function" ? dataOrFn : undefined;
|
|
827
852
|
/** @type {Content | undefined} */
|
|
828
853
|
this.content = typeof dataOrFn === "function" ? undefined : dataOrFn.map;
|
|
@@ -860,19 +885,16 @@ class PackContent {
|
|
|
860
885
|
);
|
|
861
886
|
logger.time(timeMessage);
|
|
862
887
|
}
|
|
863
|
-
const value = /** @type {
|
|
888
|
+
const value = /** @type {LazyFunction} */ (this.lazy)();
|
|
864
889
|
if ("then" in value) {
|
|
865
|
-
return value.then(data => {
|
|
890
|
+
return value.then((data) => {
|
|
866
891
|
const map = data.map;
|
|
867
892
|
if (timeMessage) {
|
|
868
893
|
logger.timeEnd(timeMessage);
|
|
869
894
|
}
|
|
870
895
|
// Move to state C
|
|
871
896
|
this.content = map;
|
|
872
|
-
this.lazy = SerializerMiddleware.unMemoizeLazy(
|
|
873
|
-
/** @type {LazyFn} */
|
|
874
|
-
(this.lazy)
|
|
875
|
-
);
|
|
897
|
+
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
|
876
898
|
return map.get(identifier);
|
|
877
899
|
});
|
|
878
900
|
}
|
|
@@ -883,10 +905,7 @@ class PackContent {
|
|
|
883
905
|
}
|
|
884
906
|
// Move to state C
|
|
885
907
|
this.content = map;
|
|
886
|
-
this.lazy = SerializerMiddleware.unMemoizeLazy(
|
|
887
|
-
/** @type {LazyFn} */
|
|
888
|
-
(this.lazy)
|
|
889
|
-
);
|
|
908
|
+
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
|
890
909
|
return map.get(identifier);
|
|
891
910
|
}
|
|
892
911
|
|
|
@@ -916,9 +935,11 @@ class PackContent {
|
|
|
916
935
|
);
|
|
917
936
|
logger.time(timeMessage);
|
|
918
937
|
}
|
|
919
|
-
const value =
|
|
938
|
+
const value =
|
|
939
|
+
/** @type {PackContentItems | Promise<PackContentItems>} */
|
|
940
|
+
(this.lazy());
|
|
920
941
|
if ("then" in value) {
|
|
921
|
-
return value.then(data => {
|
|
942
|
+
return value.then((data) => {
|
|
922
943
|
if (timeMessage) {
|
|
923
944
|
logger.timeEnd(timeMessage);
|
|
924
945
|
}
|
|
@@ -937,7 +958,9 @@ class PackContent {
|
|
|
937
958
|
*/
|
|
938
959
|
getSize() {
|
|
939
960
|
if (!this.lazy) return -1;
|
|
940
|
-
const options =
|
|
961
|
+
const options =
|
|
962
|
+
/** @type {{ options: { size?: number } }} */
|
|
963
|
+
(this.lazy).options;
|
|
941
964
|
if (!options) return -1;
|
|
942
965
|
const size = options.size;
|
|
943
966
|
if (typeof size !== "number") return -1;
|
|
@@ -954,8 +977,7 @@ class PackContent {
|
|
|
954
977
|
}
|
|
955
978
|
|
|
956
979
|
/**
|
|
957
|
-
* @
|
|
958
|
-
* @param {function(any): function(): Promise<PackContentItems> | PackContentItems} write write function
|
|
980
|
+
* @param {(lazy: LazyFunction) => (() => PackContentItems | Promise<PackContentItems>)} write write function
|
|
959
981
|
* @returns {void}
|
|
960
982
|
*/
|
|
961
983
|
writeLazy(write) {
|
|
@@ -1007,12 +1029,12 @@ class PackContent {
|
|
|
1007
1029
|
);
|
|
1008
1030
|
logger.time(timeMessage);
|
|
1009
1031
|
}
|
|
1010
|
-
const value = /** @type {
|
|
1032
|
+
const value = /** @type {LazyFunction} */ (this.lazy)();
|
|
1011
1033
|
this.outdated = false;
|
|
1012
1034
|
if ("then" in value) {
|
|
1013
1035
|
// Move to state B1
|
|
1014
1036
|
this.lazy = write(() =>
|
|
1015
|
-
value.then(data => {
|
|
1037
|
+
value.then((data) => {
|
|
1016
1038
|
if (timeMessage) {
|
|
1017
1039
|
logger.timeEnd(timeMessage);
|
|
1018
1040
|
}
|
|
@@ -1024,10 +1046,7 @@ class PackContent {
|
|
|
1024
1046
|
}
|
|
1025
1047
|
// Move to state C1 (or maybe C2)
|
|
1026
1048
|
this.content = map;
|
|
1027
|
-
this.lazy = SerializerMiddleware.unMemoizeLazy(
|
|
1028
|
-
/** @type {LazyFn} */
|
|
1029
|
-
(this.lazy)
|
|
1030
|
-
);
|
|
1049
|
+
this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
|
|
1031
1050
|
|
|
1032
1051
|
return new PackContentItems(map);
|
|
1033
1052
|
})
|
|
@@ -1053,7 +1072,7 @@ class PackContent {
|
|
|
1053
1072
|
* @param {Buffer} buf buffer
|
|
1054
1073
|
* @returns {Buffer} buffer that can be collected
|
|
1055
1074
|
*/
|
|
1056
|
-
const allowCollectingMemory = buf => {
|
|
1075
|
+
const allowCollectingMemory = (buf) => {
|
|
1057
1076
|
const wasted = buf.buffer.byteLength - buf.byteLength;
|
|
1058
1077
|
if (wasted > 8192 && (wasted > 1048576 || wasted > buf.byteLength)) {
|
|
1059
1078
|
return Buffer.from(buf);
|
|
@@ -1091,9 +1110,11 @@ class PackFileCacheStrategy {
|
|
|
1091
1110
|
compression,
|
|
1092
1111
|
readonly
|
|
1093
1112
|
}) {
|
|
1113
|
+
/** @type {import("../serialization/Serializer")<PackContainer, null, EXPECTED_OBJECT>} */
|
|
1094
1114
|
this.fileSerializer = createFileSerializer(
|
|
1095
1115
|
fs,
|
|
1096
|
-
|
|
1116
|
+
/** @type {string | Hash} */
|
|
1117
|
+
(compiler.options.output.hashFunction)
|
|
1097
1118
|
);
|
|
1098
1119
|
this.fileSystemInfo = new FileSystemInfo(fs, {
|
|
1099
1120
|
managedPaths: snapshot.managedPaths,
|
|
@@ -1120,7 +1141,7 @@ class PackFileCacheStrategy {
|
|
|
1120
1141
|
this.snapshot = snapshot;
|
|
1121
1142
|
/** @type {BuildDependencies} */
|
|
1122
1143
|
this.buildDependencies = new Set();
|
|
1123
|
-
/** @type {
|
|
1144
|
+
/** @type {FileSystemDependencies} */
|
|
1124
1145
|
this.newBuildDependencies = new LazySet();
|
|
1125
1146
|
/** @type {Snapshot | undefined} */
|
|
1126
1147
|
this.resolveBuildDependenciesSnapshot = undefined;
|
|
@@ -1169,7 +1190,7 @@ class PackFileCacheStrategy {
|
|
|
1169
1190
|
? allowCollectingMemory
|
|
1170
1191
|
: undefined
|
|
1171
1192
|
})
|
|
1172
|
-
.catch(err => {
|
|
1193
|
+
.catch((err) => {
|
|
1173
1194
|
if (err.code !== "ENOENT") {
|
|
1174
1195
|
logger.warn(
|
|
1175
1196
|
`Restoring pack failed from ${cacheLocation}${this._extension}: ${err}`
|
|
@@ -1182,7 +1203,7 @@ class PackFileCacheStrategy {
|
|
|
1182
1203
|
}
|
|
1183
1204
|
return undefined;
|
|
1184
1205
|
})
|
|
1185
|
-
.then(packContainer => {
|
|
1206
|
+
.then((packContainer) => {
|
|
1186
1207
|
logger.timeEnd("restore cache container");
|
|
1187
1208
|
if (!packContainer) return;
|
|
1188
1209
|
if (!(packContainer instanceof PackContainer)) {
|
|
@@ -1200,7 +1221,7 @@ class PackFileCacheStrategy {
|
|
|
1200
1221
|
}
|
|
1201
1222
|
logger.time("check build dependencies");
|
|
1202
1223
|
return Promise.all([
|
|
1203
|
-
new Promise((resolve,
|
|
1224
|
+
new Promise((resolve, _reject) => {
|
|
1204
1225
|
this.fileSystemInfo.checkSnapshotValid(
|
|
1205
1226
|
packContainer.buildSnapshot,
|
|
1206
1227
|
(err, valid) => {
|
|
@@ -1222,7 +1243,7 @@ class PackFileCacheStrategy {
|
|
|
1222
1243
|
}
|
|
1223
1244
|
);
|
|
1224
1245
|
}),
|
|
1225
|
-
new Promise((resolve,
|
|
1246
|
+
new Promise((resolve, _reject) => {
|
|
1226
1247
|
this.fileSystemInfo.checkSnapshotValid(
|
|
1227
1248
|
packContainer.resolveBuildDependenciesSnapshot,
|
|
1228
1249
|
(err, valid) => {
|
|
@@ -1268,7 +1289,7 @@ class PackFileCacheStrategy {
|
|
|
1268
1289
|
);
|
|
1269
1290
|
})
|
|
1270
1291
|
])
|
|
1271
|
-
.catch(err => {
|
|
1292
|
+
.catch((err) => {
|
|
1272
1293
|
logger.timeEnd("check build dependencies");
|
|
1273
1294
|
throw err;
|
|
1274
1295
|
})
|
|
@@ -1276,20 +1297,23 @@ class PackFileCacheStrategy {
|
|
|
1276
1297
|
logger.timeEnd("check build dependencies");
|
|
1277
1298
|
if (buildSnapshotValid && resolveValid) {
|
|
1278
1299
|
logger.time("restore cache content metadata");
|
|
1279
|
-
const d =
|
|
1300
|
+
const d =
|
|
1301
|
+
/** @type {() => Pack} */
|
|
1302
|
+
(packContainer.data)();
|
|
1280
1303
|
logger.timeEnd("restore cache content metadata");
|
|
1281
1304
|
return d;
|
|
1282
1305
|
}
|
|
1283
1306
|
return undefined;
|
|
1284
1307
|
});
|
|
1285
1308
|
})
|
|
1286
|
-
.then(pack => {
|
|
1309
|
+
.then((pack) => {
|
|
1287
1310
|
if (pack) {
|
|
1288
1311
|
pack.maxAge = this.maxAge;
|
|
1289
1312
|
this.buildSnapshot = buildSnapshot;
|
|
1290
1313
|
if (buildDependencies) this.buildDependencies = buildDependencies;
|
|
1291
|
-
if (newBuildDependencies)
|
|
1314
|
+
if (newBuildDependencies) {
|
|
1292
1315
|
this.newBuildDependencies.addAll(newBuildDependencies);
|
|
1316
|
+
}
|
|
1293
1317
|
this.resolveResults = resolveResults;
|
|
1294
1318
|
this.resolveBuildDependenciesSnapshot =
|
|
1295
1319
|
resolveBuildDependenciesSnapshot;
|
|
@@ -1297,7 +1321,7 @@ class PackFileCacheStrategy {
|
|
|
1297
1321
|
}
|
|
1298
1322
|
return new Pack(logger, this.maxAge);
|
|
1299
1323
|
})
|
|
1300
|
-
.catch(err => {
|
|
1324
|
+
.catch((err) => {
|
|
1301
1325
|
this.logger.warn(
|
|
1302
1326
|
`Restoring pack from ${cacheLocation}${this._extension} failed: ${err}`
|
|
1303
1327
|
);
|
|
@@ -1309,13 +1333,13 @@ class PackFileCacheStrategy {
|
|
|
1309
1333
|
/**
|
|
1310
1334
|
* @param {string} identifier unique name for the resource
|
|
1311
1335
|
* @param {Etag | null} etag etag of the resource
|
|
1312
|
-
* @param {
|
|
1336
|
+
* @param {Data} data cached content
|
|
1313
1337
|
* @returns {Promise<void>} promise
|
|
1314
1338
|
*/
|
|
1315
1339
|
store(identifier, etag, data) {
|
|
1316
1340
|
if (this.readonly) return Promise.resolve();
|
|
1317
1341
|
|
|
1318
|
-
return this._getPack().then(pack => {
|
|
1342
|
+
return this._getPack().then((pack) => {
|
|
1319
1343
|
pack.set(identifier, etag === null ? null : etag.toString(), data);
|
|
1320
1344
|
});
|
|
1321
1345
|
}
|
|
@@ -1323,14 +1347,14 @@ class PackFileCacheStrategy {
|
|
|
1323
1347
|
/**
|
|
1324
1348
|
* @param {string} identifier unique name for the resource
|
|
1325
1349
|
* @param {Etag | null} etag etag of the resource
|
|
1326
|
-
* @returns {Promise<
|
|
1350
|
+
* @returns {Promise<Data>} promise to the cached content
|
|
1327
1351
|
*/
|
|
1328
1352
|
restore(identifier, etag) {
|
|
1329
1353
|
return this._getPack()
|
|
1330
|
-
.then(pack =>
|
|
1354
|
+
.then((pack) =>
|
|
1331
1355
|
pack.get(identifier, etag === null ? null : etag.toString())
|
|
1332
1356
|
)
|
|
1333
|
-
.catch(err => {
|
|
1357
|
+
.catch((err) => {
|
|
1334
1358
|
if (err && err.code !== "ENOENT") {
|
|
1335
1359
|
this.logger.warn(
|
|
1336
1360
|
`Restoring failed for ${identifier} from pack: ${err}`
|
|
@@ -1341,7 +1365,7 @@ class PackFileCacheStrategy {
|
|
|
1341
1365
|
}
|
|
1342
1366
|
|
|
1343
1367
|
/**
|
|
1344
|
-
* @param {
|
|
1368
|
+
* @param {FileSystemDependencies | Iterable<string>} dependencies dependencies to store
|
|
1345
1369
|
*/
|
|
1346
1370
|
storeBuildDependencies(dependencies) {
|
|
1347
1371
|
if (this.readonly) return;
|
|
@@ -1353,7 +1377,7 @@ class PackFileCacheStrategy {
|
|
|
1353
1377
|
if (packPromise === undefined) return Promise.resolve();
|
|
1354
1378
|
const reportProgress = ProgressPlugin.getReporter(this.compiler);
|
|
1355
1379
|
return (this.storePromise = packPromise
|
|
1356
|
-
.then(pack => {
|
|
1380
|
+
.then((pack) => {
|
|
1357
1381
|
pack.stopCapturingRequests();
|
|
1358
1382
|
if (!pack.invalid) return;
|
|
1359
1383
|
this.packPromise = undefined;
|
|
@@ -1368,108 +1392,112 @@ class PackFileCacheStrategy {
|
|
|
1368
1392
|
if (newBuildDependencies.size > 0 || !this.buildSnapshot) {
|
|
1369
1393
|
if (reportProgress) reportProgress(0.5, "resolve build dependencies");
|
|
1370
1394
|
this.logger.debug(
|
|
1371
|
-
`Capturing build dependencies... (${
|
|
1372
|
-
newBuildDependencies
|
|
1373
|
-
).join(", ")})`
|
|
1395
|
+
`Capturing build dependencies... (${[...newBuildDependencies].join(", ")})`
|
|
1374
1396
|
);
|
|
1375
|
-
promise = new Promise(
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
this.resolveResults
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
reportProgress(
|
|
1401
|
-
0.6,
|
|
1402
|
-
"snapshot build dependencies",
|
|
1403
|
-
"resolving"
|
|
1404
|
-
);
|
|
1405
|
-
}
|
|
1406
|
-
this.fileSystemInfo.createSnapshot(
|
|
1407
|
-
undefined,
|
|
1408
|
-
resolveDependencies.files,
|
|
1409
|
-
resolveDependencies.directories,
|
|
1410
|
-
resolveDependencies.missing,
|
|
1411
|
-
this.snapshot.resolveBuildDependencies,
|
|
1412
|
-
(err, snapshot) => {
|
|
1413
|
-
if (err) {
|
|
1414
|
-
this.logger.timeEnd("snapshot build dependencies");
|
|
1415
|
-
return reject(err);
|
|
1416
|
-
}
|
|
1417
|
-
if (!snapshot) {
|
|
1418
|
-
this.logger.timeEnd("snapshot build dependencies");
|
|
1419
|
-
return reject(
|
|
1420
|
-
new Error("Unable to snapshot resolve dependencies")
|
|
1421
|
-
);
|
|
1422
|
-
}
|
|
1423
|
-
if (this.resolveBuildDependenciesSnapshot) {
|
|
1424
|
-
this.resolveBuildDependenciesSnapshot =
|
|
1425
|
-
this.fileSystemInfo.mergeSnapshots(
|
|
1426
|
-
this.resolveBuildDependenciesSnapshot,
|
|
1427
|
-
snapshot
|
|
1428
|
-
);
|
|
1429
|
-
} else {
|
|
1430
|
-
this.resolveBuildDependenciesSnapshot = snapshot;
|
|
1431
|
-
}
|
|
1432
|
-
if (reportProgress) {
|
|
1433
|
-
reportProgress(
|
|
1434
|
-
0.7,
|
|
1435
|
-
"snapshot build dependencies",
|
|
1436
|
-
"modules"
|
|
1437
|
-
);
|
|
1397
|
+
promise = new Promise(
|
|
1398
|
+
/**
|
|
1399
|
+
* @param {(value?: undefined) => void} resolve resolve
|
|
1400
|
+
* @param {(reason?: Error) => void} reject reject
|
|
1401
|
+
*/
|
|
1402
|
+
(resolve, reject) => {
|
|
1403
|
+
this.logger.time("resolve build dependencies");
|
|
1404
|
+
this.fileSystemInfo.resolveBuildDependencies(
|
|
1405
|
+
this.context,
|
|
1406
|
+
newBuildDependencies,
|
|
1407
|
+
(err, result) => {
|
|
1408
|
+
this.logger.timeEnd("resolve build dependencies");
|
|
1409
|
+
if (err) return reject(err);
|
|
1410
|
+
|
|
1411
|
+
this.logger.time("snapshot build dependencies");
|
|
1412
|
+
const {
|
|
1413
|
+
files,
|
|
1414
|
+
directories,
|
|
1415
|
+
missing,
|
|
1416
|
+
resolveResults,
|
|
1417
|
+
resolveDependencies
|
|
1418
|
+
} = /** @type {ResolveBuildDependenciesResult} */ (result);
|
|
1419
|
+
if (this.resolveResults) {
|
|
1420
|
+
for (const [key, value] of resolveResults) {
|
|
1421
|
+
this.resolveResults.set(key, value);
|
|
1438
1422
|
}
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1423
|
+
} else {
|
|
1424
|
+
this.resolveResults = resolveResults;
|
|
1425
|
+
}
|
|
1426
|
+
if (reportProgress) {
|
|
1427
|
+
reportProgress(
|
|
1428
|
+
0.6,
|
|
1429
|
+
"snapshot build dependencies",
|
|
1430
|
+
"resolving"
|
|
1431
|
+
);
|
|
1432
|
+
}
|
|
1433
|
+
this.fileSystemInfo.createSnapshot(
|
|
1434
|
+
undefined,
|
|
1435
|
+
resolveDependencies.files,
|
|
1436
|
+
resolveDependencies.directories,
|
|
1437
|
+
resolveDependencies.missing,
|
|
1438
|
+
this.snapshot.resolveBuildDependencies,
|
|
1439
|
+
(err, snapshot) => {
|
|
1440
|
+
if (err) {
|
|
1446
1441
|
this.logger.timeEnd("snapshot build dependencies");
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1442
|
+
return reject(err);
|
|
1443
|
+
}
|
|
1444
|
+
if (!snapshot) {
|
|
1445
|
+
this.logger.timeEnd("snapshot build dependencies");
|
|
1446
|
+
return reject(
|
|
1447
|
+
new Error("Unable to snapshot resolve dependencies")
|
|
1448
|
+
);
|
|
1449
|
+
}
|
|
1450
|
+
if (this.resolveBuildDependenciesSnapshot) {
|
|
1451
|
+
this.resolveBuildDependenciesSnapshot =
|
|
1452
|
+
this.fileSystemInfo.mergeSnapshots(
|
|
1453
|
+
this.resolveBuildDependenciesSnapshot,
|
|
1454
|
+
snapshot
|
|
1451
1455
|
);
|
|
1452
|
-
|
|
1453
|
-
this.
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1456
|
+
} else {
|
|
1457
|
+
this.resolveBuildDependenciesSnapshot = snapshot;
|
|
1458
|
+
}
|
|
1459
|
+
if (reportProgress) {
|
|
1460
|
+
reportProgress(
|
|
1461
|
+
0.7,
|
|
1462
|
+
"snapshot build dependencies",
|
|
1463
|
+
"modules"
|
|
1464
|
+
);
|
|
1465
|
+
}
|
|
1466
|
+
this.fileSystemInfo.createSnapshot(
|
|
1467
|
+
undefined,
|
|
1468
|
+
files,
|
|
1469
|
+
directories,
|
|
1470
|
+
missing,
|
|
1471
|
+
this.snapshot.buildDependencies,
|
|
1472
|
+
(err, snapshot) => {
|
|
1473
|
+
this.logger.timeEnd("snapshot build dependencies");
|
|
1474
|
+
if (err) return reject(err);
|
|
1475
|
+
if (!snapshot) {
|
|
1476
|
+
return reject(
|
|
1477
|
+
new Error("Unable to snapshot build dependencies")
|
|
1460
1478
|
);
|
|
1461
|
-
|
|
1462
|
-
this.
|
|
1479
|
+
}
|
|
1480
|
+
this.logger.debug("Captured build dependencies");
|
|
1481
|
+
|
|
1482
|
+
if (this.buildSnapshot) {
|
|
1483
|
+
this.buildSnapshot =
|
|
1484
|
+
this.fileSystemInfo.mergeSnapshots(
|
|
1485
|
+
this.buildSnapshot,
|
|
1486
|
+
snapshot
|
|
1487
|
+
);
|
|
1488
|
+
} else {
|
|
1489
|
+
this.buildSnapshot = snapshot;
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
resolve();
|
|
1463
1493
|
}
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
);
|
|
1472
|
-
});
|
|
1494
|
+
);
|
|
1495
|
+
}
|
|
1496
|
+
);
|
|
1497
|
+
}
|
|
1498
|
+
);
|
|
1499
|
+
}
|
|
1500
|
+
);
|
|
1473
1501
|
} else {
|
|
1474
1502
|
promise = Promise.resolve();
|
|
1475
1503
|
}
|
|
@@ -1512,14 +1540,14 @@ class PackFileCacheStrategy {
|
|
|
1512
1540
|
Math.round(stats.size / 1024 / 1024)
|
|
1513
1541
|
);
|
|
1514
1542
|
})
|
|
1515
|
-
.catch(err => {
|
|
1543
|
+
.catch((err) => {
|
|
1516
1544
|
this.logger.timeEnd("store pack");
|
|
1517
1545
|
this.logger.warn(`Caching failed for pack: ${err}`);
|
|
1518
1546
|
this.logger.debug(err.stack);
|
|
1519
1547
|
});
|
|
1520
1548
|
});
|
|
1521
1549
|
})
|
|
1522
|
-
.catch(err => {
|
|
1550
|
+
.catch((err) => {
|
|
1523
1551
|
this.logger.warn(`Caching failed for pack: ${err}`);
|
|
1524
1552
|
this.logger.debug(err.stack);
|
|
1525
1553
|
}));
|