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/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
|
-
|
|
22
|
+
const getEntryRuntime = (compilation, name, options) => {
|
|
23
23
|
let dependOn;
|
|
24
24
|
let runtime;
|
|
25
25
|
if (options) {
|
|
@@ -52,7 +52,7 @@ module.exports.getEntryRuntime = (compilation, name, options) => {
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* @param {RuntimeSpec} runtime runtime
|
|
55
|
-
* @param {
|
|
55
|
+
* @param {(runtime: string | undefined) => void} fn functor
|
|
56
56
|
* @param {boolean} deterministicOrder enforce a deterministic order
|
|
57
57
|
* @returns {void}
|
|
58
58
|
*/
|
|
@@ -68,67 +68,63 @@ const forEachRuntime = (runtime, fn, deterministicOrder = false) => {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
-
module.exports.forEachRuntime = forEachRuntime;
|
|
72
71
|
|
|
73
72
|
/**
|
|
74
73
|
* @template T
|
|
75
|
-
* @param {
|
|
74
|
+
* @param {Exclude<RuntimeSpec, undefined | string>} set set
|
|
76
75
|
* @returns {string} runtime key
|
|
77
76
|
*/
|
|
78
|
-
const getRuntimesKey = set => {
|
|
77
|
+
const getRuntimesKey = (set) => {
|
|
79
78
|
set.sort();
|
|
80
|
-
return
|
|
79
|
+
return [...set].join("\n");
|
|
81
80
|
};
|
|
82
81
|
|
|
83
82
|
/**
|
|
84
83
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
85
84
|
* @returns {string} key of runtimes
|
|
86
85
|
*/
|
|
87
|
-
const getRuntimeKey = runtime => {
|
|
86
|
+
const getRuntimeKey = (runtime) => {
|
|
88
87
|
if (runtime === undefined) return "*";
|
|
89
88
|
if (typeof runtime === "string") return runtime;
|
|
90
89
|
return runtime.getFromUnorderedCache(getRuntimesKey);
|
|
91
90
|
};
|
|
92
|
-
module.exports.getRuntimeKey = getRuntimeKey;
|
|
93
91
|
|
|
94
92
|
/**
|
|
95
93
|
* @param {string} key key of runtimes
|
|
96
94
|
* @returns {RuntimeSpec} runtime(s)
|
|
97
95
|
*/
|
|
98
|
-
const keyToRuntime = key => {
|
|
96
|
+
const keyToRuntime = (key) => {
|
|
99
97
|
if (key === "*") return;
|
|
100
98
|
const items = key.split("\n");
|
|
101
99
|
if (items.length === 1) return items[0];
|
|
102
100
|
return new SortableSet(items);
|
|
103
101
|
};
|
|
104
|
-
module.exports.keyToRuntime = keyToRuntime;
|
|
105
102
|
|
|
106
103
|
/**
|
|
107
104
|
* @template T
|
|
108
|
-
* @param {
|
|
105
|
+
* @param {Exclude<RuntimeSpec, undefined | string>} set set
|
|
109
106
|
* @returns {string} runtime string
|
|
110
107
|
*/
|
|
111
|
-
const getRuntimesString = set => {
|
|
108
|
+
const getRuntimesString = (set) => {
|
|
112
109
|
set.sort();
|
|
113
|
-
return
|
|
110
|
+
return [...set].join("+");
|
|
114
111
|
};
|
|
115
112
|
|
|
116
113
|
/**
|
|
117
114
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
118
115
|
* @returns {string} readable version
|
|
119
116
|
*/
|
|
120
|
-
const runtimeToString = runtime => {
|
|
117
|
+
const runtimeToString = (runtime) => {
|
|
121
118
|
if (runtime === undefined) return "*";
|
|
122
119
|
if (typeof runtime === "string") return runtime;
|
|
123
120
|
return runtime.getFromUnorderedCache(getRuntimesString);
|
|
124
121
|
};
|
|
125
|
-
module.exports.runtimeToString = runtimeToString;
|
|
126
122
|
|
|
127
123
|
/**
|
|
128
124
|
* @param {RuntimeCondition} runtimeCondition runtime condition
|
|
129
125
|
* @returns {string} readable version
|
|
130
126
|
*/
|
|
131
|
-
|
|
127
|
+
const runtimeConditionToString = (runtimeCondition) => {
|
|
132
128
|
if (runtimeCondition === true) return "true";
|
|
133
129
|
if (runtimeCondition === false) return "false";
|
|
134
130
|
return runtimeToString(runtimeCondition);
|
|
@@ -163,14 +159,13 @@ const runtimeEqual = (a, b) => {
|
|
|
163
159
|
if (aV.value !== bV.value) return false;
|
|
164
160
|
}
|
|
165
161
|
};
|
|
166
|
-
module.exports.runtimeEqual = runtimeEqual;
|
|
167
162
|
|
|
168
163
|
/**
|
|
169
164
|
* @param {RuntimeSpec} a first
|
|
170
165
|
* @param {RuntimeSpec} b second
|
|
171
|
-
* @returns {-1|0|1} compare
|
|
166
|
+
* @returns {-1 | 0 | 1} compare
|
|
172
167
|
*/
|
|
173
|
-
|
|
168
|
+
const compareRuntime = (a, b) => {
|
|
174
169
|
if (a === b) {
|
|
175
170
|
return 0;
|
|
176
171
|
} else if (a === undefined) {
|
|
@@ -221,7 +216,6 @@ const mergeRuntime = (a, b) => {
|
|
|
221
216
|
if (set.size === a.size) return a;
|
|
222
217
|
return set;
|
|
223
218
|
};
|
|
224
|
-
module.exports.mergeRuntime = mergeRuntime;
|
|
225
219
|
|
|
226
220
|
/**
|
|
227
221
|
* @param {RuntimeCondition} a first
|
|
@@ -229,7 +223,7 @@ module.exports.mergeRuntime = mergeRuntime;
|
|
|
229
223
|
* @param {RuntimeSpec} runtime full runtime
|
|
230
224
|
* @returns {RuntimeCondition} result
|
|
231
225
|
*/
|
|
232
|
-
|
|
226
|
+
const mergeRuntimeCondition = (a, b, runtime) => {
|
|
233
227
|
if (a === false) return b;
|
|
234
228
|
if (b === false) return a;
|
|
235
229
|
if (a === true || b === true) return true;
|
|
@@ -250,7 +244,7 @@ module.exports.mergeRuntimeCondition = (a, b, runtime) => {
|
|
|
250
244
|
* @param {RuntimeSpec} runtime full runtime
|
|
251
245
|
* @returns {RuntimeSpec | true} result
|
|
252
246
|
*/
|
|
253
|
-
|
|
247
|
+
const mergeRuntimeConditionNonFalse = (a, b, runtime) => {
|
|
254
248
|
if (a === true || b === true) return true;
|
|
255
249
|
const merged = mergeRuntime(a, b);
|
|
256
250
|
if (merged === undefined) return;
|
|
@@ -296,14 +290,13 @@ const mergeRuntimeOwned = (a, b) => {
|
|
|
296
290
|
for (const item of b) a.add(item);
|
|
297
291
|
return a;
|
|
298
292
|
};
|
|
299
|
-
module.exports.mergeRuntimeOwned = mergeRuntimeOwned;
|
|
300
293
|
|
|
301
294
|
/**
|
|
302
295
|
* @param {RuntimeSpec} a first
|
|
303
296
|
* @param {RuntimeSpec} b second
|
|
304
297
|
* @returns {RuntimeSpec} merged
|
|
305
298
|
*/
|
|
306
|
-
|
|
299
|
+
const intersectRuntime = (a, b) => {
|
|
307
300
|
if (a === undefined) {
|
|
308
301
|
return b;
|
|
309
302
|
} else if (b === undefined) {
|
|
@@ -376,7 +369,6 @@ const subtractRuntime = (a, b) => {
|
|
|
376
369
|
}
|
|
377
370
|
return set;
|
|
378
371
|
};
|
|
379
|
-
module.exports.subtractRuntime = subtractRuntime;
|
|
380
372
|
|
|
381
373
|
/**
|
|
382
374
|
* @param {RuntimeCondition} a first
|
|
@@ -384,7 +376,7 @@ module.exports.subtractRuntime = subtractRuntime;
|
|
|
384
376
|
* @param {RuntimeSpec} runtime runtime
|
|
385
377
|
* @returns {RuntimeCondition} result
|
|
386
378
|
*/
|
|
387
|
-
|
|
379
|
+
const subtractRuntimeCondition = (a, b, runtime) => {
|
|
388
380
|
if (b === true) return false;
|
|
389
381
|
if (b === false) return a;
|
|
390
382
|
if (a === false) return false;
|
|
@@ -394,10 +386,10 @@ module.exports.subtractRuntimeCondition = (a, b, runtime) => {
|
|
|
394
386
|
|
|
395
387
|
/**
|
|
396
388
|
* @param {RuntimeSpec} runtime runtime
|
|
397
|
-
* @param {
|
|
389
|
+
* @param {(runtime?: RuntimeSpec) => boolean} filter filter function
|
|
398
390
|
* @returns {boolean | RuntimeSpec} true/false if filter is constant for all runtimes, otherwise runtimes that are active
|
|
399
391
|
*/
|
|
400
|
-
|
|
392
|
+
const filterRuntime = (runtime, filter) => {
|
|
401
393
|
if (runtime === undefined) return filter();
|
|
402
394
|
if (typeof runtime === "string") return filter(runtime);
|
|
403
395
|
let some = false;
|
|
@@ -424,24 +416,26 @@ module.exports.filterRuntime = (runtime, filter) => {
|
|
|
424
416
|
|
|
425
417
|
/**
|
|
426
418
|
* @template T
|
|
419
|
+
* @template [R=T]
|
|
427
420
|
*/
|
|
428
421
|
class RuntimeSpecMap {
|
|
429
422
|
/**
|
|
430
|
-
* @param {RuntimeSpecMap<T>=} clone copy form this
|
|
423
|
+
* @param {RuntimeSpecMap<T, R>=} clone copy form this
|
|
431
424
|
*/
|
|
432
425
|
constructor(clone) {
|
|
426
|
+
/** @type {0 | 1 | 2} */
|
|
433
427
|
this._mode = clone ? clone._mode : 0; // 0 = empty, 1 = single entry, 2 = map
|
|
434
428
|
/** @type {RuntimeSpec} */
|
|
435
429
|
this._singleRuntime = clone ? clone._singleRuntime : undefined;
|
|
436
|
-
/** @type {
|
|
430
|
+
/** @type {R | undefined} */
|
|
437
431
|
this._singleValue = clone ? clone._singleValue : undefined;
|
|
438
|
-
/** @type {RuntimeSpecMapInnerMap<
|
|
432
|
+
/** @type {RuntimeSpecMapInnerMap<R> | undefined} */
|
|
439
433
|
this._map = clone && clone._map ? new Map(clone._map) : undefined;
|
|
440
434
|
}
|
|
441
435
|
|
|
442
436
|
/**
|
|
443
437
|
* @param {RuntimeSpec} runtime the runtimes
|
|
444
|
-
* @returns {
|
|
438
|
+
* @returns {R | undefined} value
|
|
445
439
|
*/
|
|
446
440
|
get(runtime) {
|
|
447
441
|
switch (this._mode) {
|
|
@@ -452,7 +446,7 @@ class RuntimeSpecMap {
|
|
|
452
446
|
? this._singleValue
|
|
453
447
|
: undefined;
|
|
454
448
|
default:
|
|
455
|
-
return /** @type {RuntimeSpecMapInnerMap<
|
|
449
|
+
return /** @type {RuntimeSpecMapInnerMap<R>} */ (this._map).get(
|
|
456
450
|
getRuntimeKey(runtime)
|
|
457
451
|
);
|
|
458
452
|
}
|
|
@@ -469,7 +463,7 @@ class RuntimeSpecMap {
|
|
|
469
463
|
case 1:
|
|
470
464
|
return runtimeEqual(this._singleRuntime, runtime);
|
|
471
465
|
default:
|
|
472
|
-
return /** @type {RuntimeSpecMapInnerMap<
|
|
466
|
+
return /** @type {RuntimeSpecMapInnerMap<R>} */ (this._map).has(
|
|
473
467
|
getRuntimeKey(runtime)
|
|
474
468
|
);
|
|
475
469
|
}
|
|
@@ -477,7 +471,7 @@ class RuntimeSpecMap {
|
|
|
477
471
|
|
|
478
472
|
/**
|
|
479
473
|
* @param {RuntimeSpec} runtime the runtimes
|
|
480
|
-
* @param {
|
|
474
|
+
* @param {R} value the value
|
|
481
475
|
*/
|
|
482
476
|
set(runtime, value) {
|
|
483
477
|
switch (this._mode) {
|
|
@@ -495,21 +489,21 @@ class RuntimeSpecMap {
|
|
|
495
489
|
this._map = new Map();
|
|
496
490
|
this._map.set(
|
|
497
491
|
getRuntimeKey(this._singleRuntime),
|
|
498
|
-
/** @type {
|
|
492
|
+
/** @type {R} */ (this._singleValue)
|
|
499
493
|
);
|
|
500
494
|
this._singleRuntime = undefined;
|
|
501
495
|
this._singleValue = undefined;
|
|
502
496
|
/* falls through */
|
|
503
497
|
default:
|
|
504
|
-
/** @type {RuntimeSpecMapInnerMap<
|
|
498
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
505
499
|
(this._map).set(getRuntimeKey(runtime), value);
|
|
506
500
|
}
|
|
507
501
|
}
|
|
508
502
|
|
|
509
503
|
/**
|
|
510
504
|
* @param {RuntimeSpec} runtime the runtimes
|
|
511
|
-
* @param {() =>
|
|
512
|
-
* @returns {
|
|
505
|
+
* @param {() => R} computer function to compute the value
|
|
506
|
+
* @returns {R} the new value
|
|
513
507
|
*/
|
|
514
508
|
provide(runtime, computer) {
|
|
515
509
|
switch (this._mode) {
|
|
@@ -519,13 +513,14 @@ class RuntimeSpecMap {
|
|
|
519
513
|
return (this._singleValue = computer());
|
|
520
514
|
case 1: {
|
|
521
515
|
if (runtimeEqual(this._singleRuntime, runtime)) {
|
|
522
|
-
return /** @type {
|
|
516
|
+
return /** @type {R} */ (this._singleValue);
|
|
523
517
|
}
|
|
524
518
|
this._mode = 2;
|
|
525
519
|
this._map = new Map();
|
|
526
520
|
this._map.set(
|
|
527
521
|
getRuntimeKey(this._singleRuntime),
|
|
528
|
-
/** @type {
|
|
522
|
+
/** @type {R} */
|
|
523
|
+
(this._singleValue)
|
|
529
524
|
);
|
|
530
525
|
this._singleRuntime = undefined;
|
|
531
526
|
this._singleValue = undefined;
|
|
@@ -535,10 +530,12 @@ class RuntimeSpecMap {
|
|
|
535
530
|
}
|
|
536
531
|
default: {
|
|
537
532
|
const key = getRuntimeKey(runtime);
|
|
538
|
-
const value =
|
|
533
|
+
const value =
|
|
534
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
535
|
+
(this._map).get(key);
|
|
539
536
|
if (value !== undefined) return value;
|
|
540
537
|
const newValue = computer();
|
|
541
|
-
/** @type {
|
|
538
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
542
539
|
(this._map).set(key, newValue);
|
|
543
540
|
return newValue;
|
|
544
541
|
}
|
|
@@ -560,14 +557,14 @@ class RuntimeSpecMap {
|
|
|
560
557
|
}
|
|
561
558
|
return;
|
|
562
559
|
default:
|
|
563
|
-
/** @type {RuntimeSpecMapInnerMap<
|
|
560
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
564
561
|
(this._map).delete(getRuntimeKey(runtime));
|
|
565
562
|
}
|
|
566
563
|
}
|
|
567
564
|
|
|
568
565
|
/**
|
|
569
566
|
* @param {RuntimeSpec} runtime the runtimes
|
|
570
|
-
* @param {
|
|
567
|
+
* @param {(value: R | undefined) => R} fn function to update the value
|
|
571
568
|
*/
|
|
572
569
|
update(runtime, fn) {
|
|
573
570
|
switch (this._mode) {
|
|
@@ -584,7 +581,8 @@ class RuntimeSpecMap {
|
|
|
584
581
|
this._map = new Map();
|
|
585
582
|
this._map.set(
|
|
586
583
|
getRuntimeKey(this._singleRuntime),
|
|
587
|
-
/** @type {
|
|
584
|
+
/** @type {R} */
|
|
585
|
+
(this._singleValue)
|
|
588
586
|
);
|
|
589
587
|
this._singleRuntime = undefined;
|
|
590
588
|
this._singleValue = undefined;
|
|
@@ -594,11 +592,14 @@ class RuntimeSpecMap {
|
|
|
594
592
|
}
|
|
595
593
|
default: {
|
|
596
594
|
const key = getRuntimeKey(runtime);
|
|
597
|
-
const oldValue =
|
|
595
|
+
const oldValue =
|
|
596
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
597
|
+
(this._map).get(key);
|
|
598
598
|
const newValue = fn(oldValue);
|
|
599
|
-
if (newValue !== oldValue)
|
|
600
|
-
/** @type {RuntimeSpecMapInnerMap<
|
|
599
|
+
if (newValue !== oldValue) {
|
|
600
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
601
601
|
(this._map).set(key, newValue);
|
|
602
|
+
}
|
|
602
603
|
}
|
|
603
604
|
}
|
|
604
605
|
}
|
|
@@ -611,7 +612,7 @@ class RuntimeSpecMap {
|
|
|
611
612
|
return [this._singleRuntime];
|
|
612
613
|
default:
|
|
613
614
|
return Array.from(
|
|
614
|
-
/** @type {RuntimeSpecMapInnerMap<
|
|
615
|
+
/** @type {RuntimeSpecMapInnerMap<R>} */
|
|
615
616
|
(this._map).keys(),
|
|
616
617
|
keyToRuntime
|
|
617
618
|
);
|
|
@@ -619,16 +620,16 @@ class RuntimeSpecMap {
|
|
|
619
620
|
}
|
|
620
621
|
|
|
621
622
|
/**
|
|
622
|
-
* @returns {IterableIterator<
|
|
623
|
+
* @returns {IterableIterator<R>} values
|
|
623
624
|
*/
|
|
624
625
|
values() {
|
|
625
626
|
switch (this._mode) {
|
|
626
627
|
case 0:
|
|
627
628
|
return [][Symbol.iterator]();
|
|
628
629
|
case 1:
|
|
629
|
-
return [/** @type {
|
|
630
|
+
return [/** @type {R} */ (this._singleValue)][Symbol.iterator]();
|
|
630
631
|
default:
|
|
631
|
-
return /** @type {
|
|
632
|
+
return /** @type {RuntimeSpecMapInnerMap<R>} */ (this._map).values();
|
|
632
633
|
}
|
|
633
634
|
}
|
|
634
635
|
|
|
@@ -637,12 +638,10 @@ class RuntimeSpecMap {
|
|
|
637
638
|
return /** @type {number} */ (this._mode);
|
|
638
639
|
}
|
|
639
640
|
|
|
640
|
-
return /** @type {
|
|
641
|
+
return /** @type {RuntimeSpecMapInnerMap<R>} */ (this._map).size;
|
|
641
642
|
}
|
|
642
643
|
}
|
|
643
644
|
|
|
644
|
-
module.exports.RuntimeSpecMap = RuntimeSpecMap;
|
|
645
|
-
|
|
646
645
|
class RuntimeSpecSet {
|
|
647
646
|
/**
|
|
648
647
|
* @param {Iterable<RuntimeSpec>=} iterable iterable
|
|
@@ -684,4 +683,21 @@ class RuntimeSpecSet {
|
|
|
684
683
|
}
|
|
685
684
|
}
|
|
686
685
|
|
|
686
|
+
module.exports.RuntimeSpecMap = RuntimeSpecMap;
|
|
687
687
|
module.exports.RuntimeSpecSet = RuntimeSpecSet;
|
|
688
|
+
module.exports.compareRuntime = compareRuntime;
|
|
689
|
+
module.exports.filterRuntime = filterRuntime;
|
|
690
|
+
module.exports.forEachRuntime = forEachRuntime;
|
|
691
|
+
module.exports.getEntryRuntime = getEntryRuntime;
|
|
692
|
+
module.exports.getRuntimeKey = getRuntimeKey;
|
|
693
|
+
module.exports.intersectRuntime = intersectRuntime;
|
|
694
|
+
module.exports.keyToRuntime = keyToRuntime;
|
|
695
|
+
module.exports.mergeRuntime = mergeRuntime;
|
|
696
|
+
module.exports.mergeRuntimeCondition = mergeRuntimeCondition;
|
|
697
|
+
module.exports.mergeRuntimeConditionNonFalse = mergeRuntimeConditionNonFalse;
|
|
698
|
+
module.exports.mergeRuntimeOwned = mergeRuntimeOwned;
|
|
699
|
+
module.exports.runtimeConditionToString = runtimeConditionToString;
|
|
700
|
+
module.exports.runtimeEqual = runtimeEqual;
|
|
701
|
+
module.exports.runtimeToString = runtimeToString;
|
|
702
|
+
module.exports.subtractRuntime = subtractRuntime;
|
|
703
|
+
module.exports.subtractRuntimeCondition = subtractRuntimeCondition;
|
package/lib/util/semver.js
CHANGED
|
@@ -6,22 +6,23 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
9
|
-
/** @typedef {string | number
|
|
9
|
+
/** @typedef {string | number} VersionValue */
|
|
10
|
+
/** @typedef {VersionValue | undefined} SemVerRangeItem */
|
|
10
11
|
/** @typedef {(SemVerRangeItem | SemVerRangeItem[])[]} SemVerRange */
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @param {string} str version string
|
|
14
15
|
* @returns {SemVerRange} parsed version
|
|
15
16
|
*/
|
|
16
|
-
const parseVersion = str => {
|
|
17
|
+
const parseVersion = (str) => {
|
|
17
18
|
/**
|
|
18
19
|
* @param {str} str str
|
|
19
|
-
* @returns {
|
|
20
|
+
* @returns {VersionValue[]} result
|
|
20
21
|
*/
|
|
21
22
|
var splitAndConvert = function (str) {
|
|
22
23
|
return str.split(".").map(function (item) {
|
|
23
24
|
// eslint-disable-next-line eqeqeq
|
|
24
|
-
return +item == /** @type {
|
|
25
|
+
return +item == /** @type {string | number} */ (item) ? +item : item;
|
|
25
26
|
});
|
|
26
27
|
};
|
|
27
28
|
|
|
@@ -29,7 +30,7 @@ const parseVersion = str => {
|
|
|
29
30
|
/** @type {RegExpExecArray} */
|
|
30
31
|
(/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str));
|
|
31
32
|
|
|
32
|
-
/** @type {(
|
|
33
|
+
/** @type {(VersionValue | undefined | [])[]} */
|
|
33
34
|
var ver = match[1] ? splitAndConvert(match[1]) : [];
|
|
34
35
|
|
|
35
36
|
if (match[2]) {
|
|
@@ -100,15 +101,15 @@ module.exports.versionLt = versionLt;
|
|
|
100
101
|
* @param {string} str range string
|
|
101
102
|
* @returns {SemVerRange} parsed range
|
|
102
103
|
*/
|
|
103
|
-
module.exports.parseRange = str => {
|
|
104
|
+
module.exports.parseRange = (str) => {
|
|
104
105
|
/**
|
|
105
106
|
* @param {string} str str
|
|
106
|
-
* @returns {
|
|
107
|
+
* @returns {VersionValue[]} result
|
|
107
108
|
*/
|
|
108
|
-
const splitAndConvert = str => {
|
|
109
|
+
const splitAndConvert = (str) => {
|
|
109
110
|
return str
|
|
110
111
|
.split(".")
|
|
111
|
-
.map(item => (item !== "NaN" && `${+item}` === item ? +item : item));
|
|
112
|
+
.map((item) => (item !== "NaN" && `${+item}` === item ? +item : item));
|
|
112
113
|
};
|
|
113
114
|
|
|
114
115
|
// see https://docs.npmjs.com/misc/semver#range-grammar for grammar
|
|
@@ -116,7 +117,7 @@ module.exports.parseRange = str => {
|
|
|
116
117
|
* @param {string} str str
|
|
117
118
|
* @returns {SemVerRangeItem[]}
|
|
118
119
|
*/
|
|
119
|
-
const parsePartial = str => {
|
|
120
|
+
const parsePartial = (str) => {
|
|
120
121
|
const match =
|
|
121
122
|
/** @type {RegExpExecArray} */
|
|
122
123
|
(/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(str));
|
|
@@ -146,7 +147,7 @@ module.exports.parseRange = str => {
|
|
|
146
147
|
* @param {SemVerRangeItem[]} range range
|
|
147
148
|
* @returns {SemVerRangeItem[]}
|
|
148
149
|
*/
|
|
149
|
-
const toFixed = range => {
|
|
150
|
+
const toFixed = (range) => {
|
|
150
151
|
if (range.length === 1) {
|
|
151
152
|
// Special case for "*" is "x.x.x" instead of "="
|
|
152
153
|
return [0];
|
|
@@ -166,7 +167,7 @@ module.exports.parseRange = str => {
|
|
|
166
167
|
* @param {SemVerRangeItem[]} range
|
|
167
168
|
* @returns {SemVerRangeItem[]} result
|
|
168
169
|
*/
|
|
169
|
-
const negate = range => {
|
|
170
|
+
const negate = (range) => {
|
|
170
171
|
return [-(/** @type { [number]} */ (range)[0]) - 1, ...range.slice(1)];
|
|
171
172
|
};
|
|
172
173
|
|
|
@@ -174,7 +175,7 @@ module.exports.parseRange = str => {
|
|
|
174
175
|
* @param {string} str str
|
|
175
176
|
* @returns {SemVerRange}
|
|
176
177
|
*/
|
|
177
|
-
const parseSimple = str => {
|
|
178
|
+
const parseSimple = (str) => {
|
|
178
179
|
// simple ::= primitive | partial | tilde | caret
|
|
179
180
|
// primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | '!' ) ( ' ' ) * partial
|
|
180
181
|
// tilde ::= '~' ( ' ' ) * partial
|
|
@@ -253,21 +254,31 @@ module.exports.parseRange = str => {
|
|
|
253
254
|
* @param {string} str str
|
|
254
255
|
* @returns {SemVerRange}
|
|
255
256
|
*/
|
|
256
|
-
const parseRange = str => {
|
|
257
|
+
const parseRange = (str) => {
|
|
257
258
|
// range ::= hyphen | simple ( ' ' ( ' ' ) * simple ) * | ''
|
|
258
259
|
// hyphen ::= partial ( ' ' ) * ' - ' ( ' ' ) * partial
|
|
259
260
|
const items = str.split(/\s+-\s+/);
|
|
260
261
|
|
|
261
262
|
if (items.length === 1) {
|
|
262
|
-
|
|
263
|
-
/** @type {SemVerRangeItem[][]} */
|
|
264
|
-
(
|
|
265
|
-
str
|
|
266
|
-
.trim()
|
|
267
|
-
.split(/(?<=[-0-9A-Za-z])\s+/g)
|
|
268
|
-
.map(parseSimple)
|
|
269
|
-
);
|
|
263
|
+
str = str.trim();
|
|
270
264
|
|
|
265
|
+
/** @type {SemVerRangeItem[][]} */
|
|
266
|
+
const items = [];
|
|
267
|
+
const r = /[-0-9A-Za-z]\s+/g;
|
|
268
|
+
var start = 0;
|
|
269
|
+
var match;
|
|
270
|
+
while ((match = r.exec(str))) {
|
|
271
|
+
const end = match.index + 1;
|
|
272
|
+
items.push(
|
|
273
|
+
/** @type {SemVerRangeItem[]} */
|
|
274
|
+
(parseSimple(str.slice(start, end).trim()))
|
|
275
|
+
);
|
|
276
|
+
start = end;
|
|
277
|
+
}
|
|
278
|
+
items.push(
|
|
279
|
+
/** @type {SemVerRangeItem[]} */
|
|
280
|
+
(parseSimple(str.slice(start).trim()))
|
|
281
|
+
);
|
|
271
282
|
return combine(items, 2);
|
|
272
283
|
}
|
|
273
284
|
|
|
@@ -282,7 +293,7 @@ module.exports.parseRange = str => {
|
|
|
282
293
|
* @param {string} str str
|
|
283
294
|
* @returns {SemVerRange}
|
|
284
295
|
*/
|
|
285
|
-
const parseLogicalOr = str => {
|
|
296
|
+
const parseLogicalOr = (str) => {
|
|
286
297
|
// range-set ::= range ( logical-or range ) *
|
|
287
298
|
// logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
288
299
|
const items =
|
|
@@ -300,7 +311,7 @@ module.exports.parseRange = str => {
|
|
|
300
311
|
* @param {SemVerRange} range
|
|
301
312
|
* @returns {string}
|
|
302
313
|
*/
|
|
303
|
-
const rangeToString = range => {
|
|
314
|
+
const rangeToString = (range) => {
|
|
304
315
|
var fixCount = /** @type {number} */ (range[0]);
|
|
305
316
|
var str = "";
|
|
306
317
|
if (range.length === 1) {
|
|
@@ -419,7 +430,7 @@ const satisfy = (range, version) => {
|
|
|
419
430
|
/** @type {"s" | "n" | "u" | ""} */
|
|
420
431
|
(j < range.length ? (typeof range[j])[0] : "");
|
|
421
432
|
|
|
422
|
-
/** @type {
|
|
433
|
+
/** @type {VersionValue | undefined} */
|
|
423
434
|
var versionValue;
|
|
424
435
|
/** @type {"n" | "s" | "u" | "o" | undefined} */
|
|
425
436
|
var versionType;
|
|
@@ -460,8 +471,8 @@ const satisfy = (range, version) => {
|
|
|
460
471
|
// Handles "cmp" cases
|
|
461
472
|
if (
|
|
462
473
|
negated
|
|
463
|
-
? versionValue > /** @type {
|
|
464
|
-
: versionValue < /** @type {
|
|
474
|
+
? versionValue > /** @type {VersionValue[]} */ (range)[j]
|
|
475
|
+
: versionValue < /** @type {VersionValue[]} */ (range)[j]
|
|
465
476
|
) {
|
|
466
477
|
return false;
|
|
467
478
|
}
|
|
@@ -522,7 +533,7 @@ module.exports.satisfy = satisfy;
|
|
|
522
533
|
* @param {SemVerRange | string | number | false | undefined} json
|
|
523
534
|
* @returns {string}
|
|
524
535
|
*/
|
|
525
|
-
module.exports.stringifyHoley = json => {
|
|
536
|
+
module.exports.stringifyHoley = (json) => {
|
|
526
537
|
switch (typeof json) {
|
|
527
538
|
case "undefined":
|
|
528
539
|
return "";
|
|
@@ -548,10 +559,10 @@ module.exports.stringifyHoley = json => {
|
|
|
548
559
|
* @param {RuntimeTemplate} runtimeTemplate
|
|
549
560
|
* @returns {string}
|
|
550
561
|
*/
|
|
551
|
-
exports.parseVersionRuntimeCode = runtimeTemplate =>
|
|
562
|
+
exports.parseVersionRuntimeCode = (runtimeTemplate) =>
|
|
552
563
|
`var parseVersion = ${runtimeTemplate.basicFunction("str", [
|
|
553
564
|
"// see webpack/lib/util/semver.js for original code",
|
|
554
|
-
`var p=${runtimeTemplate.supportsArrowFunction() ? "p=>" : "function(p)"}{return p.split(".").map(
|
|
565
|
+
`var p=${runtimeTemplate.supportsArrowFunction() ? "p=>" : "function(p)"}{return p.split(".").map(${runtimeTemplate.supportsArrowFunction() ? "p=>" : "function(p)"}{return+p==p?+p:p})},n=/^([^-+]+)?(?:-([^+]+))?(?:\\+(.+))?$/.exec(str),r=n[1]?p(n[1]):[];return n[2]&&(r.length++,r.push.apply(r,p(n[2]))),n[3]&&(r.push([]),r.push.apply(r,p(n[3]))),r;`
|
|
555
566
|
])}`;
|
|
556
567
|
//#endregion
|
|
557
568
|
|
|
@@ -560,7 +571,7 @@ exports.parseVersionRuntimeCode = runtimeTemplate =>
|
|
|
560
571
|
* @param {RuntimeTemplate} runtimeTemplate
|
|
561
572
|
* @returns {string}
|
|
562
573
|
*/
|
|
563
|
-
exports.versionLtRuntimeCode = runtimeTemplate =>
|
|
574
|
+
exports.versionLtRuntimeCode = (runtimeTemplate) =>
|
|
564
575
|
`var versionLt = ${runtimeTemplate.basicFunction("a, b", [
|
|
565
576
|
"// see webpack/lib/util/semver.js for original code",
|
|
566
577
|
'a=parseVersion(a),b=parseVersion(b);for(var r=0;;){if(r>=a.length)return r<b.length&&"u"!=(typeof b[r])[0];var e=a[r],n=(typeof e)[0];if(r>=b.length)return"u"==n;var t=b[r],f=(typeof t)[0];if(n!=f)return"o"==n&&"n"==f||("s"==f||"u"==n);if("o"!=n&&"u"!=n&&e!=t)return e<t;r++}'
|
|
@@ -572,7 +583,7 @@ exports.versionLtRuntimeCode = runtimeTemplate =>
|
|
|
572
583
|
* @param {RuntimeTemplate} runtimeTemplate
|
|
573
584
|
* @returns {string}
|
|
574
585
|
*/
|
|
575
|
-
exports.rangeToStringRuntimeCode = runtimeTemplate =>
|
|
586
|
+
exports.rangeToStringRuntimeCode = (runtimeTemplate) =>
|
|
576
587
|
`var rangeToString = ${runtimeTemplate.basicFunction("range", [
|
|
577
588
|
"// see webpack/lib/util/semver.js for original code",
|
|
578
589
|
'var r=range[0],n="";if(1===range.length)return"*";if(r+.5){n+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var e=1,a=1;a<range.length;a++){e--,n+="u"==(typeof(t=range[a]))[0]?"-":(e>0?".":"")+(e=2,t)}return n}var g=[];for(a=1;a<range.length;a++){var t=range[a];g.push(0===t?"not("+o()+")":1===t?"("+o()+" || "+o()+")":2===t?g.pop()+" "+g.pop():rangeToString(t))}return o();function o(){return g.pop().replace(/^\\((.+)\\)$/,"$1")}'
|
|
@@ -584,7 +595,7 @@ exports.rangeToStringRuntimeCode = runtimeTemplate =>
|
|
|
584
595
|
* @param {RuntimeTemplate} runtimeTemplate
|
|
585
596
|
* @returns {string}
|
|
586
597
|
*/
|
|
587
|
-
exports.satisfyRuntimeCode = runtimeTemplate =>
|
|
598
|
+
exports.satisfyRuntimeCode = (runtimeTemplate) =>
|
|
588
599
|
`var satisfy = ${runtimeTemplate.basicFunction("range, version", [
|
|
589
600
|
"// see webpack/lib/util/semver.js for original code",
|
|
590
601
|
'if(0 in range){version=parseVersion(version);var e=range[0],r=e<0;r&&(e=-e-1);for(var n=0,i=1,a=!0;;i++,n++){var f,s,g=i<range.length?(typeof range[i])[0]:"";if(n>=version.length||"o"==(s=(typeof(f=version[n]))[0]))return!a||("u"==g?i>e&&!r:""==g!=r);if("u"==s){if(!a||"u"!=g)return!1}else if(a)if(g==s)if(i<=e){if(f!=range[i])return!1}else{if(r?f>range[i]:f<range[i])return!1;f!=range[i]&&(a=!1)}else if("s"!=g&&"n"!=g){if(r||i<=e)return!1;a=!1,i--}else{if(i<=e||s<g!=r)return!1;a=!1}else"s"!=g&&"n"!=g&&(a=!1,i--)}}var t=[],o=t.pop.bind(t);for(n=1;n<range.length;n++){var u=range[n];t.push(1==u?o()|o():2==u?o()&o():u?satisfy(u,version):!o())}return!!o();'
|