webpack 5.59.0 → 5.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
package/lib/util/runtime.js
CHANGED
@@ -19,7 +19,7 @@ const SortableSet = require("./SortableSet");
|
|
19
19
|
* @param {EntryOptions=} options optionally already received entry options
|
20
20
|
* @returns {RuntimeSpec} runtime
|
21
21
|
*/
|
22
|
-
exports.getEntryRuntime = (compilation, name, options) => {
|
22
|
+
module.exports.getEntryRuntime = (compilation, name, options) => {
|
23
23
|
let dependOn;
|
24
24
|
let runtime;
|
25
25
|
if (options) {
|
@@ -31,7 +31,7 @@ exports.getEntryRuntime = (compilation, name, options) => {
|
|
31
31
|
}
|
32
32
|
if (dependOn) {
|
33
33
|
/** @type {RuntimeSpec} */
|
34
|
-
let result
|
34
|
+
let result;
|
35
35
|
const queue = new Set(dependOn);
|
36
36
|
for (const name of queue) {
|
37
37
|
const dep = compilation.entries.get(name);
|
@@ -46,18 +46,17 @@ exports.getEntryRuntime = (compilation, name, options) => {
|
|
46
46
|
}
|
47
47
|
}
|
48
48
|
return result || name;
|
49
|
-
} else {
|
50
|
-
return runtime || name;
|
51
49
|
}
|
50
|
+
return runtime || name;
|
52
51
|
};
|
53
52
|
|
54
53
|
/**
|
55
54
|
* @param {RuntimeSpec} runtime runtime
|
56
|
-
* @param {function(string): void} fn functor
|
55
|
+
* @param {function(string | undefined): void} fn functor
|
57
56
|
* @param {boolean} deterministicOrder enforce a deterministic order
|
58
57
|
* @returns {void}
|
59
58
|
*/
|
60
|
-
|
59
|
+
const forEachRuntime = (runtime, fn, deterministicOrder = false) => {
|
61
60
|
if (runtime === undefined) {
|
62
61
|
fn(undefined);
|
63
62
|
} else if (typeof runtime === "string") {
|
@@ -69,7 +68,13 @@ exports.forEachRuntime = (runtime, fn, deterministicOrder = false) => {
|
|
69
68
|
}
|
70
69
|
}
|
71
70
|
};
|
71
|
+
module.exports.forEachRuntime = forEachRuntime;
|
72
72
|
|
73
|
+
/**
|
74
|
+
* @template T
|
75
|
+
* @param {SortableSet<T>} set set
|
76
|
+
* @returns {string} runtime key
|
77
|
+
*/
|
73
78
|
const getRuntimesKey = set => {
|
74
79
|
set.sort();
|
75
80
|
return Array.from(set).join("\n");
|
@@ -84,20 +89,25 @@ const getRuntimeKey = runtime => {
|
|
84
89
|
if (typeof runtime === "string") return runtime;
|
85
90
|
return runtime.getFromUnorderedCache(getRuntimesKey);
|
86
91
|
};
|
87
|
-
exports.getRuntimeKey = getRuntimeKey;
|
92
|
+
module.exports.getRuntimeKey = getRuntimeKey;
|
88
93
|
|
89
94
|
/**
|
90
95
|
* @param {string} key key of runtimes
|
91
96
|
* @returns {RuntimeSpec} runtime(s)
|
92
97
|
*/
|
93
98
|
const keyToRuntime = key => {
|
94
|
-
if (key === "*") return
|
99
|
+
if (key === "*") return;
|
95
100
|
const items = key.split("\n");
|
96
101
|
if (items.length === 1) return items[0];
|
97
102
|
return new SortableSet(items);
|
98
103
|
};
|
99
|
-
exports.keyToRuntime = keyToRuntime;
|
104
|
+
module.exports.keyToRuntime = keyToRuntime;
|
100
105
|
|
106
|
+
/**
|
107
|
+
* @template T
|
108
|
+
* @param {SortableSet<T>} set set
|
109
|
+
* @returns {string} runtime string
|
110
|
+
*/
|
101
111
|
const getRuntimesString = set => {
|
102
112
|
set.sort();
|
103
113
|
return Array.from(set).join("+");
|
@@ -112,13 +122,13 @@ const runtimeToString = runtime => {
|
|
112
122
|
if (typeof runtime === "string") return runtime;
|
113
123
|
return runtime.getFromUnorderedCache(getRuntimesString);
|
114
124
|
};
|
115
|
-
exports.runtimeToString = runtimeToString;
|
125
|
+
module.exports.runtimeToString = runtimeToString;
|
116
126
|
|
117
127
|
/**
|
118
128
|
* @param {RuntimeCondition} runtimeCondition runtime condition
|
119
129
|
* @returns {string} readable version
|
120
130
|
*/
|
121
|
-
exports.runtimeConditionToString = runtimeCondition => {
|
131
|
+
module.exports.runtimeConditionToString = runtimeCondition => {
|
122
132
|
if (runtimeCondition === true) return "true";
|
123
133
|
if (runtimeCondition === false) return "false";
|
124
134
|
return runtimeToString(runtimeCondition);
|
@@ -141,40 +151,38 @@ const runtimeEqual = (a, b) => {
|
|
141
151
|
return false;
|
142
152
|
} else if (a.size !== b.size) {
|
143
153
|
return false;
|
144
|
-
}
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
}
|
154
|
+
}
|
155
|
+
a.sort();
|
156
|
+
b.sort();
|
157
|
+
const aIt = a[Symbol.iterator]();
|
158
|
+
const bIt = b[Symbol.iterator]();
|
159
|
+
for (;;) {
|
160
|
+
const aV = aIt.next();
|
161
|
+
if (aV.done) return true;
|
162
|
+
const bV = bIt.next();
|
163
|
+
if (aV.value !== bV.value) return false;
|
155
164
|
}
|
156
165
|
};
|
157
|
-
exports.runtimeEqual = runtimeEqual;
|
166
|
+
module.exports.runtimeEqual = runtimeEqual;
|
158
167
|
|
159
168
|
/**
|
160
169
|
* @param {RuntimeSpec} a first
|
161
170
|
* @param {RuntimeSpec} b second
|
162
171
|
* @returns {-1|0|1} compare
|
163
172
|
*/
|
164
|
-
exports.compareRuntime = (a, b) => {
|
173
|
+
module.exports.compareRuntime = (a, b) => {
|
165
174
|
if (a === b) {
|
166
175
|
return 0;
|
167
176
|
} else if (a === undefined) {
|
168
177
|
return -1;
|
169
178
|
} else if (b === undefined) {
|
170
179
|
return 1;
|
171
|
-
} else {
|
172
|
-
const aKey = getRuntimeKey(a);
|
173
|
-
const bKey = getRuntimeKey(b);
|
174
|
-
if (aKey < bKey) return -1;
|
175
|
-
if (aKey > bKey) return 1;
|
176
|
-
return 0;
|
177
180
|
}
|
181
|
+
const aKey = getRuntimeKey(a);
|
182
|
+
const bKey = getRuntimeKey(b);
|
183
|
+
if (aKey < bKey) return -1;
|
184
|
+
if (aKey > bKey) return 1;
|
185
|
+
return 0;
|
178
186
|
};
|
179
187
|
|
180
188
|
/**
|
@@ -197,26 +205,23 @@ const mergeRuntime = (a, b) => {
|
|
197
205
|
return set;
|
198
206
|
} else if (b.has(a)) {
|
199
207
|
return b;
|
200
|
-
} else {
|
201
|
-
const set = new SortableSet(b);
|
202
|
-
set.add(a);
|
203
|
-
return set;
|
204
|
-
}
|
205
|
-
} else {
|
206
|
-
if (typeof b === "string") {
|
207
|
-
if (a.has(b)) return a;
|
208
|
-
const set = new SortableSet(a);
|
209
|
-
set.add(b);
|
210
|
-
return set;
|
211
|
-
} else {
|
212
|
-
const set = new SortableSet(a);
|
213
|
-
for (const item of b) set.add(item);
|
214
|
-
if (set.size === a.size) return a;
|
215
|
-
return set;
|
216
208
|
}
|
209
|
+
const set = new SortableSet(b);
|
210
|
+
set.add(a);
|
211
|
+
return set;
|
212
|
+
}
|
213
|
+
if (typeof b === "string") {
|
214
|
+
if (a.has(b)) return a;
|
215
|
+
const set = new SortableSet(a);
|
216
|
+
set.add(b);
|
217
|
+
return set;
|
217
218
|
}
|
219
|
+
const set = new SortableSet(a);
|
220
|
+
for (const item of b) set.add(item);
|
221
|
+
if (set.size === a.size) return a;
|
222
|
+
return set;
|
218
223
|
};
|
219
|
-
exports.mergeRuntime = mergeRuntime;
|
224
|
+
module.exports.mergeRuntime = mergeRuntime;
|
220
225
|
|
221
226
|
/**
|
222
227
|
* @param {RuntimeCondition} a first
|
@@ -224,12 +229,12 @@ exports.mergeRuntime = mergeRuntime;
|
|
224
229
|
* @param {RuntimeSpec} runtime full runtime
|
225
230
|
* @returns {RuntimeCondition} result
|
226
231
|
*/
|
227
|
-
exports.mergeRuntimeCondition = (a, b, runtime) => {
|
232
|
+
module.exports.mergeRuntimeCondition = (a, b, runtime) => {
|
228
233
|
if (a === false) return b;
|
229
234
|
if (b === false) return a;
|
230
235
|
if (a === true || b === true) return true;
|
231
236
|
const merged = mergeRuntime(a, b);
|
232
|
-
if (merged === undefined) return
|
237
|
+
if (merged === undefined) return;
|
233
238
|
if (typeof merged === "string") {
|
234
239
|
if (typeof runtime === "string" && merged === runtime) return true;
|
235
240
|
return merged;
|
@@ -245,10 +250,10 @@ exports.mergeRuntimeCondition = (a, b, runtime) => {
|
|
245
250
|
* @param {RuntimeSpec} runtime full runtime
|
246
251
|
* @returns {RuntimeSpec | true} result
|
247
252
|
*/
|
248
|
-
exports.mergeRuntimeConditionNonFalse = (a, b, runtime) => {
|
253
|
+
module.exports.mergeRuntimeConditionNonFalse = (a, b, runtime) => {
|
249
254
|
if (a === true || b === true) return true;
|
250
255
|
const merged = mergeRuntime(a, b);
|
251
|
-
if (merged === undefined) return
|
256
|
+
if (merged === undefined) return;
|
252
257
|
if (typeof merged === "string") {
|
253
258
|
if (typeof runtime === "string" && merged === runtime) return true;
|
254
259
|
return merged;
|
@@ -271,38 +276,34 @@ const mergeRuntimeOwned = (a, b) => {
|
|
271
276
|
} else if (a === undefined) {
|
272
277
|
if (typeof b === "string") {
|
273
278
|
return b;
|
274
|
-
} else {
|
275
|
-
return new SortableSet(b);
|
276
279
|
}
|
280
|
+
return new SortableSet(b);
|
277
281
|
} else if (typeof a === "string") {
|
278
282
|
if (typeof b === "string") {
|
279
283
|
const set = new SortableSet();
|
280
284
|
set.add(a);
|
281
285
|
set.add(b);
|
282
286
|
return set;
|
283
|
-
} else {
|
284
|
-
const set = new SortableSet(b);
|
285
|
-
set.add(a);
|
286
|
-
return set;
|
287
|
-
}
|
288
|
-
} else {
|
289
|
-
if (typeof b === "string") {
|
290
|
-
a.add(b);
|
291
|
-
return a;
|
292
|
-
} else {
|
293
|
-
for (const item of b) a.add(item);
|
294
|
-
return a;
|
295
287
|
}
|
288
|
+
const set = new SortableSet(b);
|
289
|
+
set.add(a);
|
290
|
+
return set;
|
291
|
+
}
|
292
|
+
if (typeof b === "string") {
|
293
|
+
a.add(b);
|
294
|
+
return a;
|
296
295
|
}
|
296
|
+
for (const item of b) a.add(item);
|
297
|
+
return a;
|
297
298
|
};
|
298
|
-
exports.mergeRuntimeOwned = mergeRuntimeOwned;
|
299
|
+
module.exports.mergeRuntimeOwned = mergeRuntimeOwned;
|
299
300
|
|
300
301
|
/**
|
301
302
|
* @param {RuntimeSpec} a first
|
302
303
|
* @param {RuntimeSpec} b second
|
303
304
|
* @returns {RuntimeSpec} merged
|
304
305
|
*/
|
305
|
-
exports.intersectRuntime = (a, b) => {
|
306
|
+
module.exports.intersectRuntime = (a, b) => {
|
306
307
|
if (a === undefined) {
|
307
308
|
return b;
|
308
309
|
} else if (b === undefined) {
|
@@ -311,26 +312,26 @@ exports.intersectRuntime = (a, b) => {
|
|
311
312
|
return a;
|
312
313
|
} else if (typeof a === "string") {
|
313
314
|
if (typeof b === "string") {
|
314
|
-
return
|
315
|
+
return;
|
315
316
|
} else if (b.has(a)) {
|
316
317
|
return a;
|
317
|
-
} else {
|
318
|
-
return undefined;
|
319
|
-
}
|
320
|
-
} else {
|
321
|
-
if (typeof b === "string") {
|
322
|
-
if (a.has(b)) return b;
|
323
|
-
return undefined;
|
324
|
-
} else {
|
325
|
-
const set = new SortableSet();
|
326
|
-
for (const item of b) {
|
327
|
-
if (a.has(item)) set.add(item);
|
328
|
-
}
|
329
|
-
if (set.size === 0) return undefined;
|
330
|
-
if (set.size === 1) for (const item of set) return item;
|
331
|
-
return set;
|
332
318
|
}
|
319
|
+
return;
|
320
|
+
}
|
321
|
+
if (typeof b === "string") {
|
322
|
+
if (a.has(b)) return b;
|
323
|
+
return;
|
324
|
+
}
|
325
|
+
const set = new SortableSet();
|
326
|
+
for (const item of b) {
|
327
|
+
if (a.has(item)) set.add(item);
|
333
328
|
}
|
329
|
+
if (set.size === 0) return;
|
330
|
+
if (set.size === 1) {
|
331
|
+
const [item] = set;
|
332
|
+
return item;
|
333
|
+
}
|
334
|
+
return set;
|
334
335
|
};
|
335
336
|
|
336
337
|
/**
|
@@ -340,41 +341,42 @@ exports.intersectRuntime = (a, b) => {
|
|
340
341
|
*/
|
341
342
|
const subtractRuntime = (a, b) => {
|
342
343
|
if (a === undefined) {
|
343
|
-
return
|
344
|
+
return;
|
344
345
|
} else if (b === undefined) {
|
345
346
|
return a;
|
346
347
|
} else if (a === b) {
|
347
|
-
return
|
348
|
+
return;
|
348
349
|
} else if (typeof a === "string") {
|
349
350
|
if (typeof b === "string") {
|
350
351
|
return a;
|
351
352
|
} else if (b.has(a)) {
|
352
|
-
return
|
353
|
-
} else {
|
354
|
-
return a;
|
353
|
+
return;
|
355
354
|
}
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
if (item !== b) return item;
|
362
|
-
}
|
363
|
-
}
|
364
|
-
const set = new SortableSet(a);
|
365
|
-
set.delete(b);
|
366
|
-
} else {
|
367
|
-
const set = new SortableSet();
|
355
|
+
return a;
|
356
|
+
}
|
357
|
+
if (typeof b === "string") {
|
358
|
+
if (!a.has(b)) return a;
|
359
|
+
if (a.size === 2) {
|
368
360
|
for (const item of a) {
|
369
|
-
if (
|
361
|
+
if (item !== b) return item;
|
370
362
|
}
|
371
|
-
if (set.size === 0) return undefined;
|
372
|
-
if (set.size === 1) for (const item of set) return item;
|
373
|
-
return set;
|
374
363
|
}
|
364
|
+
const set = new SortableSet(a);
|
365
|
+
set.delete(b);
|
366
|
+
return set;
|
367
|
+
}
|
368
|
+
const set = new SortableSet();
|
369
|
+
for (const item of a) {
|
370
|
+
if (!b.has(item)) set.add(item);
|
375
371
|
}
|
372
|
+
if (set.size === 0) return;
|
373
|
+
if (set.size === 1) {
|
374
|
+
const [item] = set;
|
375
|
+
return item;
|
376
|
+
}
|
377
|
+
return set;
|
376
378
|
};
|
377
|
-
exports.subtractRuntime = subtractRuntime;
|
379
|
+
module.exports.subtractRuntime = subtractRuntime;
|
378
380
|
|
379
381
|
/**
|
380
382
|
* @param {RuntimeCondition} a first
|
@@ -382,7 +384,7 @@ exports.subtractRuntime = subtractRuntime;
|
|
382
384
|
* @param {RuntimeSpec} runtime runtime
|
383
385
|
* @returns {RuntimeCondition} result
|
384
386
|
*/
|
385
|
-
exports.subtractRuntimeCondition = (a, b, runtime) => {
|
387
|
+
module.exports.subtractRuntimeCondition = (a, b, runtime) => {
|
386
388
|
if (b === true) return false;
|
387
389
|
if (b === false) return a;
|
388
390
|
if (a === false) return false;
|
@@ -392,15 +394,15 @@ exports.subtractRuntimeCondition = (a, b, runtime) => {
|
|
392
394
|
|
393
395
|
/**
|
394
396
|
* @param {RuntimeSpec} runtime runtime
|
395
|
-
* @param {function(RuntimeSpec): boolean} filter filter function
|
397
|
+
* @param {function(RuntimeSpec=): boolean} filter filter function
|
396
398
|
* @returns {boolean | RuntimeSpec} true/false if filter is constant for all runtimes, otherwise runtimes that are active
|
397
399
|
*/
|
398
|
-
exports.filterRuntime = (runtime, filter) => {
|
399
|
-
if (runtime === undefined) return filter(
|
400
|
+
module.exports.filterRuntime = (runtime, filter) => {
|
401
|
+
if (runtime === undefined) return filter();
|
400
402
|
if (typeof runtime === "string") return filter(runtime);
|
401
403
|
let some = false;
|
402
404
|
let every = true;
|
403
|
-
let result
|
405
|
+
let result;
|
404
406
|
for (const r of runtime) {
|
405
407
|
const v = filter(r);
|
406
408
|
if (v) {
|
@@ -415,6 +417,11 @@ exports.filterRuntime = (runtime, filter) => {
|
|
415
417
|
return result;
|
416
418
|
};
|
417
419
|
|
420
|
+
/**
|
421
|
+
* @template T
|
422
|
+
* @typedef {Map<string, T>} RuntimeSpecMapInnerMap
|
423
|
+
*/
|
424
|
+
|
418
425
|
/**
|
419
426
|
* @template T
|
420
427
|
*/
|
@@ -426,26 +433,28 @@ class RuntimeSpecMap {
|
|
426
433
|
this._mode = clone ? clone._mode : 0; // 0 = empty, 1 = single entry, 2 = map
|
427
434
|
/** @type {RuntimeSpec} */
|
428
435
|
this._singleRuntime = clone ? clone._singleRuntime : undefined;
|
429
|
-
/** @type {T} */
|
436
|
+
/** @type {T | undefined} */
|
430
437
|
this._singleValue = clone ? clone._singleValue : undefined;
|
431
|
-
/** @type {
|
438
|
+
/** @type {RuntimeSpecMapInnerMap<T> | undefined} */
|
432
439
|
this._map = clone && clone._map ? new Map(clone._map) : undefined;
|
433
440
|
}
|
434
441
|
|
435
442
|
/**
|
436
443
|
* @param {RuntimeSpec} runtime the runtimes
|
437
|
-
* @returns {T} value
|
444
|
+
* @returns {T | undefined} value
|
438
445
|
*/
|
439
446
|
get(runtime) {
|
440
447
|
switch (this._mode) {
|
441
448
|
case 0:
|
442
|
-
return
|
449
|
+
return;
|
443
450
|
case 1:
|
444
451
|
return runtimeEqual(this._singleRuntime, runtime)
|
445
452
|
? this._singleValue
|
446
453
|
: undefined;
|
447
454
|
default:
|
448
|
-
return this._map.get(
|
455
|
+
return /** @type {RuntimeSpecMapInnerMap<T>} */ (this._map).get(
|
456
|
+
getRuntimeKey(runtime)
|
457
|
+
);
|
449
458
|
}
|
450
459
|
}
|
451
460
|
|
@@ -460,10 +469,16 @@ class RuntimeSpecMap {
|
|
460
469
|
case 1:
|
461
470
|
return runtimeEqual(this._singleRuntime, runtime);
|
462
471
|
default:
|
463
|
-
return this._map.has(
|
472
|
+
return /** @type {RuntimeSpecMapInnerMap<T>} */ (this._map).has(
|
473
|
+
getRuntimeKey(runtime)
|
474
|
+
);
|
464
475
|
}
|
465
476
|
}
|
466
477
|
|
478
|
+
/**
|
479
|
+
* @param {RuntimeSpec} runtime the runtimes
|
480
|
+
* @param {T} value the value
|
481
|
+
*/
|
467
482
|
set(runtime, value) {
|
468
483
|
switch (this._mode) {
|
469
484
|
case 0:
|
@@ -478,15 +493,24 @@ class RuntimeSpecMap {
|
|
478
493
|
}
|
479
494
|
this._mode = 2;
|
480
495
|
this._map = new Map();
|
481
|
-
this._map.set(
|
496
|
+
this._map.set(
|
497
|
+
getRuntimeKey(this._singleRuntime),
|
498
|
+
/** @type {T} */ (this._singleValue)
|
499
|
+
);
|
482
500
|
this._singleRuntime = undefined;
|
483
501
|
this._singleValue = undefined;
|
484
502
|
/* falls through */
|
485
503
|
default:
|
486
|
-
|
504
|
+
/** @type {RuntimeSpecMapInnerMap<T>} */
|
505
|
+
(this._map).set(getRuntimeKey(runtime), value);
|
487
506
|
}
|
488
507
|
}
|
489
508
|
|
509
|
+
/**
|
510
|
+
* @param {RuntimeSpec} runtime the runtimes
|
511
|
+
* @param {() => TODO} computer function to compute the value
|
512
|
+
* @returns {TODO} true, when the runtime was deleted
|
513
|
+
*/
|
490
514
|
provide(runtime, computer) {
|
491
515
|
switch (this._mode) {
|
492
516
|
case 0:
|
@@ -495,11 +519,14 @@ class RuntimeSpecMap {
|
|
495
519
|
return (this._singleValue = computer());
|
496
520
|
case 1: {
|
497
521
|
if (runtimeEqual(this._singleRuntime, runtime)) {
|
498
|
-
return this._singleValue;
|
522
|
+
return /** @type {T} */ (this._singleValue);
|
499
523
|
}
|
500
524
|
this._mode = 2;
|
501
525
|
this._map = new Map();
|
502
|
-
this._map.set(
|
526
|
+
this._map.set(
|
527
|
+
getRuntimeKey(this._singleRuntime),
|
528
|
+
/** @type {T} */ (this._singleValue)
|
529
|
+
);
|
503
530
|
this._singleRuntime = undefined;
|
504
531
|
this._singleValue = undefined;
|
505
532
|
const newValue = computer();
|
@@ -508,15 +535,19 @@ class RuntimeSpecMap {
|
|
508
535
|
}
|
509
536
|
default: {
|
510
537
|
const key = getRuntimeKey(runtime);
|
511
|
-
const value = this._map.get(key);
|
538
|
+
const value = /** @type {Map<string, T>} */ (this._map).get(key);
|
512
539
|
if (value !== undefined) return value;
|
513
540
|
const newValue = computer();
|
514
|
-
|
541
|
+
/** @type {Map<string, T>} */
|
542
|
+
(this._map).set(key, newValue);
|
515
543
|
return newValue;
|
516
544
|
}
|
517
545
|
}
|
518
546
|
}
|
519
547
|
|
548
|
+
/**
|
549
|
+
* @param {RuntimeSpec} runtime the runtimes
|
550
|
+
*/
|
520
551
|
delete(runtime) {
|
521
552
|
switch (this._mode) {
|
522
553
|
case 0:
|
@@ -529,10 +560,15 @@ class RuntimeSpecMap {
|
|
529
560
|
}
|
530
561
|
return;
|
531
562
|
default:
|
532
|
-
|
563
|
+
/** @type {RuntimeSpecMapInnerMap<T>} */
|
564
|
+
(this._map).delete(getRuntimeKey(runtime));
|
533
565
|
}
|
534
566
|
}
|
535
567
|
|
568
|
+
/**
|
569
|
+
* @param {RuntimeSpec} runtime the runtimes
|
570
|
+
* @param {function(T | undefined): T} fn function to update the value
|
571
|
+
*/
|
536
572
|
update(runtime, fn) {
|
537
573
|
switch (this._mode) {
|
538
574
|
case 0:
|
@@ -546,7 +582,10 @@ class RuntimeSpecMap {
|
|
546
582
|
if (newValue !== undefined) {
|
547
583
|
this._mode = 2;
|
548
584
|
this._map = new Map();
|
549
|
-
this._map.set(
|
585
|
+
this._map.set(
|
586
|
+
getRuntimeKey(this._singleRuntime),
|
587
|
+
/** @type {T} */ (this._singleValue)
|
588
|
+
);
|
550
589
|
this._singleRuntime = undefined;
|
551
590
|
this._singleValue = undefined;
|
552
591
|
this._map.set(getRuntimeKey(runtime), newValue);
|
@@ -555,9 +594,11 @@ class RuntimeSpecMap {
|
|
555
594
|
}
|
556
595
|
default: {
|
557
596
|
const key = getRuntimeKey(runtime);
|
558
|
-
const oldValue = this._map.get(key);
|
597
|
+
const oldValue = /** @type {Map<string, T>} */ (this._map).get(key);
|
559
598
|
const newValue = fn(oldValue);
|
560
|
-
if (newValue !== oldValue)
|
599
|
+
if (newValue !== oldValue)
|
600
|
+
/** @type {RuntimeSpecMapInnerMap<T>} */
|
601
|
+
(this._map).set(key, newValue);
|
561
602
|
}
|
562
603
|
}
|
563
604
|
}
|
@@ -569,7 +610,11 @@ class RuntimeSpecMap {
|
|
569
610
|
case 1:
|
570
611
|
return [this._singleRuntime];
|
571
612
|
default:
|
572
|
-
return Array.from(
|
613
|
+
return Array.from(
|
614
|
+
/** @type {RuntimeSpecMapInnerMap<T>} */
|
615
|
+
(this._map).keys(),
|
616
|
+
keyToRuntime
|
617
|
+
);
|
573
618
|
}
|
574
619
|
}
|
575
620
|
|
@@ -578,21 +623,24 @@ class RuntimeSpecMap {
|
|
578
623
|
case 0:
|
579
624
|
return [][Symbol.iterator]();
|
580
625
|
case 1:
|
581
|
-
return [this._singleValue][Symbol.iterator]();
|
626
|
+
return [/** @type {T} */ (this._singleValue)][Symbol.iterator]();
|
582
627
|
default:
|
583
|
-
return this._map.values();
|
628
|
+
return /** @type {Map<string, T>} */ (this._map).values();
|
584
629
|
}
|
585
630
|
}
|
586
631
|
|
587
632
|
get size() {
|
588
|
-
if (this._mode <= 1) return this._mode;
|
589
|
-
return this._map.size;
|
633
|
+
if (/** @type {number} */ (this._mode) <= 1) return this._mode;
|
634
|
+
return /** @type {Map<string, T>} */ (this._map).size;
|
590
635
|
}
|
591
636
|
}
|
592
637
|
|
593
|
-
exports.RuntimeSpecMap = RuntimeSpecMap;
|
638
|
+
module.exports.RuntimeSpecMap = RuntimeSpecMap;
|
594
639
|
|
595
640
|
class RuntimeSpecSet {
|
641
|
+
/**
|
642
|
+
* @param {Iterable<RuntimeSpec>=} iterable iterable
|
643
|
+
*/
|
596
644
|
constructor(iterable) {
|
597
645
|
/** @type {Map<string, RuntimeSpec>} */
|
598
646
|
this._map = new Map();
|
@@ -603,10 +651,17 @@ class RuntimeSpecSet {
|
|
603
651
|
}
|
604
652
|
}
|
605
653
|
|
654
|
+
/**
|
655
|
+
* @param {RuntimeSpec} runtime runtime
|
656
|
+
*/
|
606
657
|
add(runtime) {
|
607
658
|
this._map.set(getRuntimeKey(runtime), runtime);
|
608
659
|
}
|
609
660
|
|
661
|
+
/**
|
662
|
+
* @param {RuntimeSpec} runtime runtime
|
663
|
+
* @returns {boolean} true, when the runtime exists
|
664
|
+
*/
|
610
665
|
has(runtime) {
|
611
666
|
return this._map.has(getRuntimeKey(runtime));
|
612
667
|
}
|
@@ -620,4 +675,4 @@ class RuntimeSpecSet {
|
|
620
675
|
}
|
621
676
|
}
|
622
677
|
|
623
|
-
exports.RuntimeSpecSet = RuntimeSpecSet;
|
678
|
+
module.exports.RuntimeSpecSet = RuntimeSpecSet;
|