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
package/lib/ChunkGroup.js
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
const util = require("util");
|
|
9
9
|
const SortableSet = require("./util/SortableSet");
|
|
10
10
|
const {
|
|
11
|
-
compareLocations,
|
|
12
11
|
compareChunks,
|
|
13
|
-
compareIterables
|
|
12
|
+
compareIterables,
|
|
13
|
+
compareLocations
|
|
14
14
|
} = require("./util/comparators");
|
|
15
15
|
|
|
16
16
|
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
@@ -21,8 +21,7 @@ const {
|
|
|
21
21
|
/** @typedef {import("./Module")} Module */
|
|
22
22
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
23
23
|
|
|
24
|
-
/** @typedef {{
|
|
25
|
-
/** @typedef {{module: Module | null, loc: DependencyLocation, request: string}} OriginRecord */
|
|
24
|
+
/** @typedef {{ module: Module | null, loc: DependencyLocation, request: string }} OriginRecord */
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* @typedef {object} RawChunkGroupOptions
|
|
@@ -40,13 +39,13 @@ let debugId = 5000;
|
|
|
40
39
|
* @param {SortableSet<T>} set set to convert to array.
|
|
41
40
|
* @returns {T[]} the array format of existing set
|
|
42
41
|
*/
|
|
43
|
-
const getArray = set =>
|
|
42
|
+
const getArray = (set) => [...set];
|
|
44
43
|
|
|
45
44
|
/**
|
|
46
45
|
* A convenience method used to sort chunks based on their id's
|
|
47
46
|
* @param {ChunkGroup} a first sorting comparator
|
|
48
47
|
* @param {ChunkGroup} b second sorting comparator
|
|
49
|
-
* @returns {1|0
|
|
48
|
+
* @returns {1 | 0 | -1} a sorting index to determine order
|
|
50
49
|
*/
|
|
51
50
|
const sortById = (a, b) => {
|
|
52
51
|
if (a.id < b.id) return -1;
|
|
@@ -57,7 +56,7 @@ const sortById = (a, b) => {
|
|
|
57
56
|
/**
|
|
58
57
|
* @param {OriginRecord} a the first comparator in sort
|
|
59
58
|
* @param {OriginRecord} b the second comparator in sort
|
|
60
|
-
* @returns {1
|
|
59
|
+
* @returns {1 | -1| 0} returns sorting order as index
|
|
61
60
|
*/
|
|
62
61
|
const sortOrigin = (a, b) => {
|
|
63
62
|
const aIdent = a.module ? a.module.identifier() : "";
|
|
@@ -92,16 +91,19 @@ class ChunkGroup {
|
|
|
92
91
|
this.chunks = [];
|
|
93
92
|
/** @type {OriginRecord[]} */
|
|
94
93
|
this.origins = [];
|
|
94
|
+
|
|
95
|
+
/** @typedef {Map<Module, number>} OrderIndices */
|
|
96
|
+
|
|
95
97
|
/** Indices in top-down order */
|
|
96
98
|
/**
|
|
97
99
|
* @private
|
|
98
|
-
* @type {
|
|
100
|
+
* @type {OrderIndices}
|
|
99
101
|
*/
|
|
100
102
|
this._modulePreOrderIndices = new Map();
|
|
101
103
|
/** Indices in bottom-up order */
|
|
102
104
|
/**
|
|
103
105
|
* @private
|
|
104
|
-
* @type {
|
|
106
|
+
* @type {OrderIndices}
|
|
105
107
|
*/
|
|
106
108
|
this._modulePostOrderIndices = new Map();
|
|
107
109
|
/** @type {number | undefined} */
|
|
@@ -114,17 +116,23 @@ class ChunkGroup {
|
|
|
114
116
|
* @returns {void}
|
|
115
117
|
*/
|
|
116
118
|
addOptions(options) {
|
|
117
|
-
for (const
|
|
118
|
-
|
|
119
|
+
for (const key of /** @type {(keyof ChunkGroupOptions)[]} */ (
|
|
120
|
+
Object.keys(options)
|
|
121
|
+
)) {
|
|
119
122
|
if (this.options[key] === undefined) {
|
|
120
|
-
/** @type {
|
|
121
|
-
(this.options
|
|
123
|
+
/** @type {ChunkGroupOptions[keyof ChunkGroupOptions]} */
|
|
124
|
+
(this.options[key]) = options[key];
|
|
122
125
|
} else if (this.options[key] !== options[key]) {
|
|
123
126
|
if (key.endsWith("Order")) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
const orderKey =
|
|
128
|
+
/** @type {Exclude<keyof ChunkGroupOptions, "name" | "fetchPriority">} */
|
|
129
|
+
(key);
|
|
130
|
+
|
|
131
|
+
this.options[orderKey] = Math.max(
|
|
132
|
+
/** @type {number} */
|
|
133
|
+
(this.options[orderKey]),
|
|
134
|
+
/** @type {number} */
|
|
135
|
+
(options[orderKey])
|
|
128
136
|
);
|
|
129
137
|
} else {
|
|
130
138
|
throw new Error(
|
|
@@ -137,7 +145,7 @@ class ChunkGroup {
|
|
|
137
145
|
|
|
138
146
|
/**
|
|
139
147
|
* returns the name of current ChunkGroup
|
|
140
|
-
* @returns {
|
|
148
|
+
* @returns {ChunkGroupOptions["name"]} returns the ChunkGroup name
|
|
141
149
|
*/
|
|
142
150
|
get name() {
|
|
143
151
|
return this.options.name;
|
|
@@ -158,7 +166,7 @@ class ChunkGroup {
|
|
|
158
166
|
* @returns {string} a unique concatenation of chunk debugId's
|
|
159
167
|
*/
|
|
160
168
|
get debugId() {
|
|
161
|
-
return Array.from(this.chunks, x => x.debugId).join("+");
|
|
169
|
+
return Array.from(this.chunks, (x) => x.debugId).join("+");
|
|
162
170
|
}
|
|
163
171
|
|
|
164
172
|
/**
|
|
@@ -166,7 +174,7 @@ class ChunkGroup {
|
|
|
166
174
|
* @returns {string} a unique concatenation of chunk ids
|
|
167
175
|
*/
|
|
168
176
|
get id() {
|
|
169
|
-
return Array.from(this.chunks, x => x.id).join("+");
|
|
177
|
+
return Array.from(this.chunks, (x) => x.id).join("+");
|
|
170
178
|
}
|
|
171
179
|
|
|
172
180
|
/**
|
|
@@ -366,7 +374,7 @@ class ChunkGroup {
|
|
|
366
374
|
}
|
|
367
375
|
|
|
368
376
|
/**
|
|
369
|
-
* @returns {
|
|
377
|
+
* @returns {AsyncDependenciesBlock[]} an array containing the blocks
|
|
370
378
|
*/
|
|
371
379
|
getBlocks() {
|
|
372
380
|
return this._blocks.getFromCache(getArray);
|
|
@@ -429,7 +437,7 @@ class ChunkGroup {
|
|
|
429
437
|
}
|
|
430
438
|
}
|
|
431
439
|
|
|
432
|
-
return
|
|
440
|
+
return [...files];
|
|
433
441
|
}
|
|
434
442
|
|
|
435
443
|
/**
|
|
@@ -480,7 +488,7 @@ class ChunkGroup {
|
|
|
480
488
|
* Sorting values are based off of number of chunks in ChunkGroup.
|
|
481
489
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
482
490
|
* @param {ChunkGroup} otherGroup the chunkGroup to compare this against
|
|
483
|
-
* @returns {-1|0|1} sort position for comparison
|
|
491
|
+
* @returns {-1 | 0 | 1} sort position for comparison
|
|
484
492
|
*/
|
|
485
493
|
compareTo(chunkGraph, otherGroup) {
|
|
486
494
|
if (this.chunks.length > otherGroup.chunks.length) return -1;
|
|
@@ -526,7 +534,7 @@ class ChunkGroup {
|
|
|
526
534
|
if (cmp !== 0) return cmp;
|
|
527
535
|
return a.group.compareTo(chunkGraph, b.group);
|
|
528
536
|
});
|
|
529
|
-
result[name] = list.map(i => i.group);
|
|
537
|
+
result[name] = list.map((i) => i.group);
|
|
530
538
|
}
|
|
531
539
|
return result;
|
|
532
540
|
}
|
package/lib/ChunkTemplate.js
CHANGED
|
@@ -9,7 +9,7 @@ const util = require("util");
|
|
|
9
9
|
const memoize = require("./util/memoize");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("tapable").Tap} Tap */
|
|
12
|
-
/** @typedef {import("
|
|
12
|
+
/** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
|
|
13
13
|
/** @typedef {import("./Chunk")} Chunk */
|
|
14
14
|
/** @typedef {import("./Compilation")} Compilation */
|
|
15
15
|
/** @typedef {import("./Compilation").ChunkHashContext} ChunkHashContext */
|
|
@@ -42,7 +42,7 @@ class ChunkTemplate {
|
|
|
42
42
|
/**
|
|
43
43
|
* @template AdditionalOptions
|
|
44
44
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
45
|
-
* @param {
|
|
45
|
+
* @param {(renderManifestEntries: RenderManifestEntry[], renderManifestOptions: RenderManifestOptions) => RenderManifestEntry[]} fn function
|
|
46
46
|
*/
|
|
47
47
|
(options, fn) => {
|
|
48
48
|
compilation.hooks.renderManifest.tap(
|
|
@@ -62,7 +62,7 @@ class ChunkTemplate {
|
|
|
62
62
|
/**
|
|
63
63
|
* @template AdditionalOptions
|
|
64
64
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
65
|
-
* @param {
|
|
65
|
+
* @param {(source: Source, moduleTemplate: ModuleTemplate, renderContext: RenderContext) => Source} fn function
|
|
66
66
|
*/
|
|
67
67
|
(options, fn) => {
|
|
68
68
|
getJavascriptModulesPlugin()
|
|
@@ -84,7 +84,7 @@ class ChunkTemplate {
|
|
|
84
84
|
/**
|
|
85
85
|
* @template AdditionalOptions
|
|
86
86
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
87
|
-
* @param {
|
|
87
|
+
* @param {(source: Source, moduleTemplate: ModuleTemplate, renderContext: RenderContext) => Source} fn function
|
|
88
88
|
*/
|
|
89
89
|
(options, fn) => {
|
|
90
90
|
getJavascriptModulesPlugin()
|
|
@@ -106,7 +106,7 @@ class ChunkTemplate {
|
|
|
106
106
|
/**
|
|
107
107
|
* @template AdditionalOptions
|
|
108
108
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
109
|
-
* @param {
|
|
109
|
+
* @param {(source: Source, chunk: Chunk) => Source} fn function
|
|
110
110
|
*/
|
|
111
111
|
(options, fn) => {
|
|
112
112
|
getJavascriptModulesPlugin()
|
|
@@ -132,7 +132,7 @@ class ChunkTemplate {
|
|
|
132
132
|
/**
|
|
133
133
|
* @template AdditionalOptions
|
|
134
134
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
135
|
-
* @param {
|
|
135
|
+
* @param {(hash: Hash) => void} fn function
|
|
136
136
|
*/
|
|
137
137
|
(options, fn) => {
|
|
138
138
|
compilation.hooks.fullHash.tap(options, fn);
|
|
@@ -146,7 +146,7 @@ class ChunkTemplate {
|
|
|
146
146
|
/**
|
|
147
147
|
* @template AdditionalOptions
|
|
148
148
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
149
|
-
* @param {
|
|
149
|
+
* @param {(hash: Hash, chunk: Chunk, chunkHashContext: ChunkHashContext) => void} fn function
|
|
150
150
|
*/
|
|
151
151
|
(options, fn) => {
|
|
152
152
|
getJavascriptModulesPlugin()
|
|
@@ -170,7 +170,7 @@ Object.defineProperty(ChunkTemplate.prototype, "outputOptions", {
|
|
|
170
170
|
* @this {ChunkTemplate}
|
|
171
171
|
* @returns {OutputOptions} output options
|
|
172
172
|
*/
|
|
173
|
-
function () {
|
|
173
|
+
function outputOptions() {
|
|
174
174
|
return this._outputOptions;
|
|
175
175
|
},
|
|
176
176
|
"ChunkTemplate.outputOptions is deprecated (use Compilation.outputOptions instead)",
|
package/lib/CleanPlugin.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const path = require("path");
|
|
8
9
|
const asyncLib = require("neo-async");
|
|
9
10
|
const { SyncBailHook } = require("tapable");
|
|
10
11
|
const Compilation = require("./Compilation");
|
|
@@ -19,9 +20,7 @@ const processAsyncTree = require("./util/processAsyncTree");
|
|
|
19
20
|
/** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
|
|
20
21
|
/** @typedef {import("./util/fs").StatsCallback} StatsCallback */
|
|
21
22
|
|
|
22
|
-
/** @typedef {(function(string):boolean)|RegExp} IgnoreItem */
|
|
23
23
|
/** @typedef {Map<string, number>} Assets */
|
|
24
|
-
/** @typedef {function(IgnoreItem): void} AddToIgnoreCallback */
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* @typedef {object} CleanPluginCompilationHooks
|
|
@@ -31,13 +30,14 @@ const processAsyncTree = require("./util/processAsyncTree");
|
|
|
31
30
|
/**
|
|
32
31
|
* @callback KeepFn
|
|
33
32
|
* @param {string} path path
|
|
34
|
-
* @returns {boolean |
|
|
33
|
+
* @returns {boolean | undefined} true, if the path should be kept
|
|
35
34
|
*/
|
|
36
35
|
|
|
37
36
|
const validate = createSchemaValidation(
|
|
38
37
|
undefined,
|
|
39
38
|
() => {
|
|
40
39
|
const { definitions } = require("../schemas/WebpackOptions.json");
|
|
40
|
+
|
|
41
41
|
return {
|
|
42
42
|
definitions,
|
|
43
43
|
oneOf: [{ $ref: "#/definitions/CleanOptions" }]
|
|
@@ -51,7 +51,7 @@ const validate = createSchemaValidation(
|
|
|
51
51
|
const _10sec = 10 * 1000;
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* merge assets map 2 into map 1
|
|
55
55
|
* @param {Assets} as1 assets
|
|
56
56
|
* @param {Assets} as2 assets
|
|
57
57
|
* @returns {void}
|
|
@@ -63,23 +63,44 @@ const mergeAssets = (as1, as2) => {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
+
/** @typedef {Map<string, number>} CurrentAssets */
|
|
67
|
+
|
|
66
68
|
/**
|
|
67
|
-
* @param {
|
|
68
|
-
* @
|
|
69
|
-
* @param {Map<string, number>} currentAssets filename of the current assets (must not start with .. or ., must only use / as path separator)
|
|
70
|
-
* @param {function((Error | null)=, Set<string>=): void} callback returns the filenames of the assets that shouldn't be there
|
|
71
|
-
* @returns {void}
|
|
69
|
+
* @param {CurrentAssets} assets current assets
|
|
70
|
+
* @returns {Set<string>} Set of directory paths
|
|
72
71
|
*/
|
|
73
|
-
|
|
72
|
+
function getDirectories(assets) {
|
|
74
73
|
const directories = new Set();
|
|
74
|
+
/**
|
|
75
|
+
* @param {string} filename asset filename
|
|
76
|
+
*/
|
|
77
|
+
const addDirectory = (filename) => {
|
|
78
|
+
directories.add(path.dirname(filename));
|
|
79
|
+
};
|
|
80
|
+
|
|
75
81
|
// get directories of assets
|
|
76
|
-
for (const [asset] of
|
|
77
|
-
|
|
82
|
+
for (const [asset] of assets) {
|
|
83
|
+
addDirectory(asset);
|
|
78
84
|
}
|
|
79
85
|
// and all parent directories
|
|
80
86
|
for (const directory of directories) {
|
|
81
|
-
|
|
87
|
+
addDirectory(directory);
|
|
82
88
|
}
|
|
89
|
+
return directories;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** @typedef {Set<string>} Diff */
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @param {OutputFileSystem} fs filesystem
|
|
96
|
+
* @param {string} outputPath output path
|
|
97
|
+
* @param {CurrentAssets} currentAssets filename of the current assets (must not start with .. or ., must only use / as path separator)
|
|
98
|
+
* @param {(err?: Error | null, set?: Diff) => void} callback returns the filenames of the assets that shouldn't be there
|
|
99
|
+
* @returns {void}
|
|
100
|
+
*/
|
|
101
|
+
const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
102
|
+
const directories = getDirectories(currentAssets);
|
|
103
|
+
/** @type {Diff} */
|
|
83
104
|
const diff = new Set();
|
|
84
105
|
asyncLib.forEachLimit(
|
|
85
106
|
directories,
|
|
@@ -97,7 +118,10 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
|
97
118
|
}
|
|
98
119
|
for (const entry of /** @type {string[]} */ (entries)) {
|
|
99
120
|
const file = entry;
|
|
100
|
-
|
|
121
|
+
// Since path.normalize("./file") === path.normalize("file"),
|
|
122
|
+
// return file directly when directory === "."
|
|
123
|
+
const filename =
|
|
124
|
+
directory && directory !== "." ? `${directory}/${file}` : file;
|
|
101
125
|
if (!directories.has(filename) && !currentAssets.has(filename)) {
|
|
102
126
|
diff.add(filename);
|
|
103
127
|
}
|
|
@@ -105,7 +129,7 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
|
105
129
|
callback();
|
|
106
130
|
});
|
|
107
131
|
},
|
|
108
|
-
err => {
|
|
132
|
+
(err) => {
|
|
109
133
|
if (err) return callback(err);
|
|
110
134
|
|
|
111
135
|
callback(null, diff);
|
|
@@ -116,7 +140,7 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
|
116
140
|
/**
|
|
117
141
|
* @param {Assets} currentAssets assets list
|
|
118
142
|
* @param {Assets} oldAssets old assets list
|
|
119
|
-
* @returns {
|
|
143
|
+
* @returns {Diff} diff
|
|
120
144
|
*/
|
|
121
145
|
const getDiffToOldAssets = (currentAssets, oldAssets) => {
|
|
122
146
|
const diff = new Set();
|
|
@@ -148,16 +172,16 @@ const doStat = (fs, filename, callback) => {
|
|
|
148
172
|
* @param {string} outputPath output path
|
|
149
173
|
* @param {boolean} dry only log instead of fs modification
|
|
150
174
|
* @param {Logger} logger logger
|
|
151
|
-
* @param {
|
|
152
|
-
* @param {
|
|
153
|
-
* @param {
|
|
175
|
+
* @param {Diff} diff filenames of the assets that shouldn't be there
|
|
176
|
+
* @param {KeepFn} isKept check if the entry is ignored
|
|
177
|
+
* @param {(err?: Error, assets?: Assets) => void} callback callback
|
|
154
178
|
* @returns {void}
|
|
155
179
|
*/
|
|
156
180
|
const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
157
181
|
/**
|
|
158
182
|
* @param {string} msg message
|
|
159
183
|
*/
|
|
160
|
-
const log = msg => {
|
|
184
|
+
const log = (msg) => {
|
|
161
185
|
if (dry) {
|
|
162
186
|
logger.info(msg);
|
|
163
187
|
} else {
|
|
@@ -166,7 +190,7 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
166
190
|
};
|
|
167
191
|
/** @typedef {{ type: "check" | "unlink" | "rmdir", filename: string, parent: { remaining: number, job: Job } | undefined }} Job */
|
|
168
192
|
/** @type {Job[]} */
|
|
169
|
-
const jobs = Array.from(diff.keys(), filename => ({
|
|
193
|
+
const jobs = Array.from(diff.keys(), (filename) => ({
|
|
170
194
|
type: "check",
|
|
171
195
|
filename,
|
|
172
196
|
parent: undefined
|
|
@@ -177,22 +201,43 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
177
201
|
jobs,
|
|
178
202
|
10,
|
|
179
203
|
({ type, filename, parent }, push, callback) => {
|
|
204
|
+
const path = join(fs, outputPath, filename);
|
|
180
205
|
/**
|
|
181
206
|
* @param {Error & { code?: string }} err error
|
|
182
207
|
* @returns {void}
|
|
183
208
|
*/
|
|
184
|
-
const handleError = err => {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
209
|
+
const handleError = (err) => {
|
|
210
|
+
const isAlreadyRemoved = () =>
|
|
211
|
+
new Promise((resolve) => {
|
|
212
|
+
if (err.code === "ENOENT") {
|
|
213
|
+
resolve(true);
|
|
214
|
+
} else if (err.code === "EPERM") {
|
|
215
|
+
// https://github.com/isaacs/rimraf/blob/main/src/fix-eperm.ts#L37
|
|
216
|
+
// fs.existsSync(path) === false https://github.com/webpack/webpack/actions/runs/15493412975/job/43624272783?pr=19586
|
|
217
|
+
doStat(fs, path, (err) => {
|
|
218
|
+
if (err) {
|
|
219
|
+
resolve(err.code === "ENOENT");
|
|
220
|
+
} else {
|
|
221
|
+
resolve(false);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
} else {
|
|
225
|
+
resolve(false);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
isAlreadyRemoved().then((isRemoved) => {
|
|
230
|
+
if (isRemoved) {
|
|
231
|
+
log(`${filename} was removed during cleaning by something else`);
|
|
232
|
+
handleParent();
|
|
233
|
+
return callback();
|
|
234
|
+
}
|
|
235
|
+
return callback(err);
|
|
236
|
+
});
|
|
191
237
|
};
|
|
192
238
|
const handleParent = () => {
|
|
193
239
|
if (parent && --parent.remaining === 0) push(parent.job);
|
|
194
240
|
};
|
|
195
|
-
const path = join(fs, outputPath, filename);
|
|
196
241
|
switch (type) {
|
|
197
242
|
case "check":
|
|
198
243
|
if (isKept(filename)) {
|
|
@@ -260,7 +305,7 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
260
305
|
);
|
|
261
306
|
return process.nextTick(callback);
|
|
262
307
|
}
|
|
263
|
-
fs.rmdir(path, err => {
|
|
308
|
+
fs.rmdir(path, (err) => {
|
|
264
309
|
if (err) return handleError(err);
|
|
265
310
|
handleParent();
|
|
266
311
|
callback();
|
|
@@ -278,7 +323,7 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
278
323
|
);
|
|
279
324
|
return process.nextTick(callback);
|
|
280
325
|
}
|
|
281
|
-
fs.unlink(path, err => {
|
|
326
|
+
fs.unlink(path, (err) => {
|
|
282
327
|
if (err) return handleError(err);
|
|
283
328
|
handleParent();
|
|
284
329
|
callback();
|
|
@@ -286,7 +331,7 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
286
331
|
break;
|
|
287
332
|
}
|
|
288
333
|
},
|
|
289
|
-
err => {
|
|
334
|
+
(err) => {
|
|
290
335
|
if (err) return callback(err);
|
|
291
336
|
callback(undefined, keptAssets);
|
|
292
337
|
}
|
|
@@ -296,6 +341,8 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
|
296
341
|
/** @type {WeakMap<Compilation, CleanPluginCompilationHooks>} */
|
|
297
342
|
const compilationHooksMap = new WeakMap();
|
|
298
343
|
|
|
344
|
+
const PLUGIN_NAME = "CleanPlugin";
|
|
345
|
+
|
|
299
346
|
class CleanPlugin {
|
|
300
347
|
/**
|
|
301
348
|
* @param {Compilation} compilation the compilation
|
|
@@ -336,31 +383,31 @@ class CleanPlugin {
|
|
|
336
383
|
typeof keep === "function"
|
|
337
384
|
? keep
|
|
338
385
|
: typeof keep === "string"
|
|
339
|
-
? path => path.startsWith(keep)
|
|
386
|
+
? (path) => path.startsWith(keep)
|
|
340
387
|
: typeof keep === "object" && keep.test
|
|
341
|
-
? path => keep.test(path)
|
|
388
|
+
? (path) => keep.test(path)
|
|
342
389
|
: () => false;
|
|
343
390
|
|
|
344
391
|
// We assume that no external modification happens while the compiler is active
|
|
345
392
|
// So we can store the old assets and only diff to them to avoid fs access on
|
|
346
393
|
// incremental builds
|
|
347
|
-
/** @type {undefined|Assets} */
|
|
394
|
+
/** @type {undefined | Assets} */
|
|
348
395
|
let oldAssets;
|
|
349
396
|
|
|
350
397
|
compiler.hooks.emit.tapAsync(
|
|
351
398
|
{
|
|
352
|
-
name:
|
|
399
|
+
name: PLUGIN_NAME,
|
|
353
400
|
stage: 100
|
|
354
401
|
},
|
|
355
402
|
(compilation, callback) => {
|
|
356
403
|
const hooks = CleanPlugin.getCompilationHooks(compilation);
|
|
357
|
-
const logger = compilation.getLogger(
|
|
404
|
+
const logger = compilation.getLogger(`webpack.${PLUGIN_NAME}`);
|
|
358
405
|
const fs = /** @type {OutputFileSystem} */ (compiler.outputFileSystem);
|
|
359
406
|
|
|
360
407
|
if (!fs.readdir) {
|
|
361
408
|
return callback(
|
|
362
409
|
new Error(
|
|
363
|
-
|
|
410
|
+
`${PLUGIN_NAME}: Output filesystem doesn't support listing directories (readdir)`
|
|
364
411
|
)
|
|
365
412
|
);
|
|
366
413
|
}
|
|
@@ -392,9 +439,9 @@ class CleanPlugin {
|
|
|
392
439
|
|
|
393
440
|
/**
|
|
394
441
|
* @param {string} path path
|
|
395
|
-
* @returns {boolean |
|
|
442
|
+
* @returns {boolean | undefined} true, if needs to be kept
|
|
396
443
|
*/
|
|
397
|
-
const isKept = path => {
|
|
444
|
+
const isKept = (path) => {
|
|
398
445
|
const result = hooks.keep.call(path);
|
|
399
446
|
if (result !== undefined) return result;
|
|
400
447
|
return keepFn(path);
|
|
@@ -402,7 +449,7 @@ class CleanPlugin {
|
|
|
402
449
|
|
|
403
450
|
/**
|
|
404
451
|
* @param {(Error | null)=} err err
|
|
405
|
-
* @param {
|
|
452
|
+
* @param {Diff=} diff diff
|
|
406
453
|
*/
|
|
407
454
|
const diffCallback = (err, diff) => {
|
|
408
455
|
if (err) {
|
|
@@ -415,7 +462,7 @@ class CleanPlugin {
|
|
|
415
462
|
outputPath,
|
|
416
463
|
dry,
|
|
417
464
|
logger,
|
|
418
|
-
/** @type {
|
|
465
|
+
/** @type {Diff} */ (diff),
|
|
419
466
|
isKept,
|
|
420
467
|
(err, keptAssets) => {
|
|
421
468
|
if (err) {
|
|
@@ -441,3 +488,4 @@ class CleanPlugin {
|
|
|
441
488
|
}
|
|
442
489
|
|
|
443
490
|
module.exports = CleanPlugin;
|
|
491
|
+
module.exports._getDirectories = getDirectories;
|
|
@@ -5,14 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { DEFAULTS } = require("./config/defaults");
|
|
8
9
|
const { getOrInsert } = require("./util/MapHelpers");
|
|
9
10
|
const { first } = require("./util/SetHelpers");
|
|
10
11
|
const createHash = require("./util/createHash");
|
|
11
|
-
const {
|
|
12
|
+
const { RuntimeSpecMap, runtimeToString } = require("./util/runtime");
|
|
12
13
|
|
|
13
14
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
14
15
|
/** @typedef {import("./Module")} Module */
|
|
16
|
+
/** @typedef {import("./Module").SourceType} SourceType */
|
|
15
17
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
|
18
|
+
/** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
|
|
16
19
|
/** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
|
17
20
|
/** @typedef {typeof import("./util/Hash")} Hash */
|
|
18
21
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
@@ -21,7 +24,7 @@ class CodeGenerationResults {
|
|
|
21
24
|
/**
|
|
22
25
|
* @param {string | Hash} hashFunction the hash function to use
|
|
23
26
|
*/
|
|
24
|
-
constructor(hashFunction =
|
|
27
|
+
constructor(hashFunction = DEFAULTS.HASH_FUNCTION) {
|
|
25
28
|
/** @type {Map<Module, RuntimeSpecMap<CodeGenerationResult>>} */
|
|
26
29
|
this.map = new Map();
|
|
27
30
|
this._hashFunction = hashFunction;
|
|
@@ -38,7 +41,7 @@ class CodeGenerationResults {
|
|
|
38
41
|
throw new Error(
|
|
39
42
|
`No code generation entry for ${module.identifier()} (existing entries: ${Array.from(
|
|
40
43
|
this.map.keys(),
|
|
41
|
-
m => m.identifier()
|
|
44
|
+
(m) => m.identifier()
|
|
42
45
|
).join(", ")})`
|
|
43
46
|
);
|
|
44
47
|
}
|
|
@@ -49,7 +52,7 @@ class CodeGenerationResults {
|
|
|
49
52
|
throw new Error(
|
|
50
53
|
`No unique code generation entry for unspecified runtime for ${module.identifier()} (existing runtimes: ${Array.from(
|
|
51
54
|
entry.keys(),
|
|
52
|
-
r => runtimeToString(r)
|
|
55
|
+
(r) => runtimeToString(r)
|
|
53
56
|
).join(", ")}).
|
|
54
57
|
Caller might not support runtime-dependent code generation (opt-out via optimization.usedExports: "global").`
|
|
55
58
|
);
|
|
@@ -65,7 +68,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
65
68
|
runtime
|
|
66
69
|
)} for ${module.identifier()} (existing runtimes: ${Array.from(
|
|
67
70
|
entry.keys(),
|
|
68
|
-
r => runtimeToString(r)
|
|
71
|
+
(r) => runtimeToString(r)
|
|
69
72
|
).join(", ")})`
|
|
70
73
|
);
|
|
71
74
|
}
|
|
@@ -94,7 +97,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
94
97
|
/**
|
|
95
98
|
* @param {Module} module the module
|
|
96
99
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
97
|
-
* @param {
|
|
100
|
+
* @param {SourceType} sourceType the source type
|
|
98
101
|
* @returns {Source} a source
|
|
99
102
|
*/
|
|
100
103
|
getSource(module, runtime, sourceType) {
|
|
@@ -116,7 +119,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
116
119
|
* @param {Module} module the module
|
|
117
120
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
118
121
|
* @param {string} key data key
|
|
119
|
-
* @returns {
|
|
122
|
+
* @returns {ReturnType<CodeGenerationResultData["get"]>} data generated by code generation
|
|
120
123
|
*/
|
|
121
124
|
getData(module, runtime, key) {
|
|
122
125
|
const data = this.get(module, runtime).data;
|
|
@@ -126,7 +129,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
126
129
|
/**
|
|
127
130
|
* @param {Module} module the module
|
|
128
131
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
129
|
-
* @returns {
|
|
132
|
+
* @returns {string} hash of the code generation
|
|
130
133
|
*/
|
|
131
134
|
getHash(module, runtime) {
|
|
132
135
|
const info = this.get(module, runtime);
|
|
@@ -139,7 +142,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
139
142
|
if (info.runtimeRequirements) {
|
|
140
143
|
for (const rr of info.runtimeRequirements) hash.update(rr);
|
|
141
144
|
}
|
|
142
|
-
return (info.hash =
|
|
145
|
+
return (info.hash = hash.digest("hex"));
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
/**
|