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/cleverMerge.js
CHANGED
@@ -23,26 +23,28 @@ const DYNAMIC_INFO = Symbol("cleverMerge dynamic info");
|
|
23
23
|
* // when same arguments passed, gets the result from WeakMap and returns it.
|
24
24
|
* cachedCleverMerge({a: 1}, {a: 2})
|
25
25
|
* {a: 2}
|
26
|
-
* @param {T} first first object
|
27
|
-
* @param {O} second second object
|
26
|
+
* @param {T | null | undefined} first first object
|
27
|
+
* @param {O | null | undefined} second second object
|
28
28
|
* @returns {T & O | T | O} merged object of first and second object
|
29
29
|
*/
|
30
30
|
const cachedCleverMerge = (first, second) => {
|
31
|
-
if (second === undefined) return first;
|
32
|
-
if (first === undefined) return second;
|
33
|
-
if (typeof second !== "object" || second === null)
|
34
|
-
|
31
|
+
if (second === undefined) return /** @type {T} */ (first);
|
32
|
+
if (first === undefined) return /** @type {O} */ (second);
|
33
|
+
if (typeof second !== "object" || second === null)
|
34
|
+
return /** @type {O} */ (second);
|
35
|
+
if (typeof first !== "object" || first === null)
|
36
|
+
return /** @type {T} */ (first);
|
35
37
|
|
36
38
|
let innerCache = mergeCache.get(first);
|
37
39
|
if (innerCache === undefined) {
|
38
40
|
innerCache = new WeakMap();
|
39
41
|
mergeCache.set(first, innerCache);
|
40
42
|
}
|
41
|
-
const prevMerge = innerCache.get(second);
|
43
|
+
const prevMerge = /** @type {T & O} */ (innerCache.get(second));
|
42
44
|
if (prevMerge !== undefined) return prevMerge;
|
43
45
|
const newMerge = _cleverMerge(first, second, true);
|
44
46
|
innerCache.set(second, newMerge);
|
45
|
-
return newMerge;
|
47
|
+
return /** @type {T & O} */ (newMerge);
|
46
48
|
};
|
47
49
|
|
48
50
|
/**
|
@@ -69,7 +71,7 @@ const cachedSetProperty = (obj, property, value) => {
|
|
69
71
|
|
70
72
|
let result = mapByValue.get(value);
|
71
73
|
|
72
|
-
if (result) return result;
|
74
|
+
if (result) return /** @type {T} */ (result);
|
73
75
|
|
74
76
|
result = {
|
75
77
|
...obj,
|
@@ -77,18 +79,18 @@ const cachedSetProperty = (obj, property, value) => {
|
|
77
79
|
};
|
78
80
|
mapByValue.set(value, result);
|
79
81
|
|
80
|
-
return result;
|
82
|
+
return /** @type {T} */ (result);
|
81
83
|
};
|
82
84
|
|
83
85
|
/**
|
84
|
-
* @typedef {
|
86
|
+
* @typedef {object} ObjectParsedPropertyEntry
|
85
87
|
* @property {any | undefined} base base value
|
86
88
|
* @property {string | undefined} byProperty the name of the selector property
|
87
89
|
* @property {Map<string, any>} byValues value depending on selector property, merged with base
|
88
90
|
*/
|
89
91
|
|
90
92
|
/**
|
91
|
-
* @typedef {
|
93
|
+
* @typedef {object} ParsedObject
|
92
94
|
* @property {Map<string, ObjectParsedPropertyEntry>} static static properties (key is property name)
|
93
95
|
* @property {{ byProperty: string, fn: Function } | undefined} dynamic dynamic part
|
94
96
|
*/
|
@@ -229,7 +231,7 @@ const getValueType = value => {
|
|
229
231
|
} else if (value === DELETE) {
|
230
232
|
return VALUE_TYPE_DELETE;
|
231
233
|
} else if (Array.isArray(value)) {
|
232
|
-
if (value.
|
234
|
+
if (value.includes("...")) return VALUE_TYPE_ARRAY_EXTEND;
|
233
235
|
return VALUE_TYPE_ATOM;
|
234
236
|
} else if (
|
235
237
|
typeof value === "object" &&
|
@@ -257,7 +259,7 @@ const cleverMerge = (first, second) => {
|
|
257
259
|
if (typeof second !== "object" || second === null) return second;
|
258
260
|
if (typeof first !== "object" || first === null) return first;
|
259
261
|
|
260
|
-
return _cleverMerge(first, second, false);
|
262
|
+
return /** @type {T & O} */ (_cleverMerge(first, second, false));
|
261
263
|
};
|
262
264
|
|
263
265
|
/**
|
@@ -457,8 +459,8 @@ const mergeSingleValue = (a, b, internalCaching) => {
|
|
457
459
|
return aType !== VALUE_TYPE_OBJECT
|
458
460
|
? b
|
459
461
|
: internalCaching
|
460
|
-
|
461
|
-
|
462
|
+
? cachedCleverMerge(a, b)
|
463
|
+
: cleverMerge(a, b);
|
462
464
|
}
|
463
465
|
case VALUE_TYPE_UNDEFINED:
|
464
466
|
return a;
|
@@ -467,8 +469,8 @@ const mergeSingleValue = (a, b, internalCaching) => {
|
|
467
469
|
aType !== VALUE_TYPE_ATOM
|
468
470
|
? aType
|
469
471
|
: Array.isArray(a)
|
470
|
-
|
471
|
-
|
472
|
+
? VALUE_TYPE_ARRAY_EXTEND
|
473
|
+
: VALUE_TYPE_OBJECT
|
472
474
|
) {
|
473
475
|
case VALUE_TYPE_UNDEFINED:
|
474
476
|
return b;
|
@@ -498,27 +500,40 @@ const mergeSingleValue = (a, b, internalCaching) => {
|
|
498
500
|
};
|
499
501
|
|
500
502
|
/**
|
501
|
-
* @template T
|
503
|
+
* @template {object} T
|
502
504
|
* @param {T} obj the object
|
505
|
+
* @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
|
503
506
|
* @returns {T} the object without operations like "..." or DELETE
|
504
507
|
*/
|
505
|
-
const removeOperations = obj => {
|
508
|
+
const removeOperations = (obj, keysToKeepOriginalValue = []) => {
|
506
509
|
const newObj = /** @type {T} */ ({});
|
507
510
|
for (const key of Object.keys(obj)) {
|
508
|
-
const value = obj[key];
|
511
|
+
const value = obj[/** @type {keyof T} */ (key)];
|
509
512
|
const type = getValueType(value);
|
513
|
+
if (
|
514
|
+
type === VALUE_TYPE_OBJECT &&
|
515
|
+
keysToKeepOriginalValue.includes(/** @type {keyof T} */ (key))
|
516
|
+
) {
|
517
|
+
newObj[/** @type {keyof T} */ (key)] = value;
|
518
|
+
continue;
|
519
|
+
}
|
510
520
|
switch (type) {
|
511
521
|
case VALUE_TYPE_UNDEFINED:
|
512
522
|
case VALUE_TYPE_DELETE:
|
513
523
|
break;
|
514
524
|
case VALUE_TYPE_OBJECT:
|
515
|
-
newObj[key] = removeOperations(
|
525
|
+
newObj[key] = removeOperations(
|
526
|
+
/** @type {TODO} */ (value),
|
527
|
+
keysToKeepOriginalValue
|
528
|
+
);
|
516
529
|
break;
|
517
530
|
case VALUE_TYPE_ARRAY_EXTEND:
|
518
|
-
newObj[key] =
|
531
|
+
newObj[key] =
|
532
|
+
/** @type {any[]} */
|
533
|
+
(value).filter(i => i !== "...");
|
519
534
|
break;
|
520
535
|
default:
|
521
|
-
newObj[key] = value;
|
536
|
+
newObj[/** @type {keyof T} */ (key)] = value;
|
522
537
|
break;
|
523
538
|
}
|
524
539
|
}
|
@@ -537,21 +552,21 @@ const resolveByProperty = (obj, byProperty, ...values) => {
|
|
537
552
|
if (typeof obj !== "object" || obj === null || !(byProperty in obj)) {
|
538
553
|
return obj;
|
539
554
|
}
|
540
|
-
const { [byProperty]: _byValue, ..._remaining } =
|
555
|
+
const { [byProperty]: _byValue, ..._remaining } = obj;
|
541
556
|
const remaining = /** @type {T} */ (_remaining);
|
542
|
-
const byValue =
|
543
|
-
|
544
|
-
|
557
|
+
const byValue =
|
558
|
+
/** @type {Record<string, T> | function(...any[]): T} */
|
559
|
+
(_byValue);
|
545
560
|
if (typeof byValue === "object") {
|
546
561
|
const key = values[0];
|
547
562
|
if (key in byValue) {
|
548
563
|
return cachedCleverMerge(remaining, byValue[key]);
|
549
564
|
} else if ("default" in byValue) {
|
550
565
|
return cachedCleverMerge(remaining, byValue.default);
|
551
|
-
} else {
|
552
|
-
return /** @type {T} */ (remaining);
|
553
566
|
}
|
567
|
+
return remaining;
|
554
568
|
} else if (typeof byValue === "function") {
|
569
|
+
// eslint-disable-next-line prefer-spread
|
555
570
|
const result = byValue.apply(null, values);
|
556
571
|
return cachedCleverMerge(
|
557
572
|
remaining,
|
@@ -560,9 +575,9 @@ const resolveByProperty = (obj, byProperty, ...values) => {
|
|
560
575
|
}
|
561
576
|
};
|
562
577
|
|
563
|
-
exports.cachedSetProperty = cachedSetProperty;
|
564
|
-
exports.cachedCleverMerge = cachedCleverMerge;
|
565
|
-
exports.cleverMerge = cleverMerge;
|
566
|
-
exports.resolveByProperty = resolveByProperty;
|
567
|
-
exports.removeOperations = removeOperations;
|
568
|
-
exports.DELETE = DELETE;
|
578
|
+
module.exports.cachedSetProperty = cachedSetProperty;
|
579
|
+
module.exports.cachedCleverMerge = cachedCleverMerge;
|
580
|
+
module.exports.cleverMerge = cleverMerge;
|
581
|
+
module.exports.resolveByProperty = resolveByProperty;
|
582
|
+
module.exports.removeOperations = removeOperations;
|
583
|
+
module.exports.DELETE = DELETE;
|
package/lib/util/comparators.js
CHANGED
@@ -8,15 +8,28 @@
|
|
8
8
|
const { compareRuntime } = require("./runtime");
|
9
9
|
|
10
10
|
/** @typedef {import("../Chunk")} Chunk */
|
11
|
+
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
11
12
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
13
|
+
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
12
14
|
/** @typedef {import("../ChunkGroup")} ChunkGroup */
|
13
15
|
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
14
16
|
/** @typedef {import("../Module")} Module */
|
15
17
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
18
|
|
17
|
-
/**
|
18
|
-
|
19
|
-
|
19
|
+
/**
|
20
|
+
* @template T
|
21
|
+
* @typedef {function(T, T): -1|0|1} Comparator
|
22
|
+
*/
|
23
|
+
/**
|
24
|
+
* @template TArg
|
25
|
+
* @template T
|
26
|
+
* @typedef {function(TArg, T, T): -1|0|1} RawParameterizedComparator
|
27
|
+
*/
|
28
|
+
/**
|
29
|
+
* @template TArg
|
30
|
+
* @template T
|
31
|
+
* @typedef {function(TArg): Comparator<T>} ParameterizedComparator
|
32
|
+
*/
|
20
33
|
|
21
34
|
/**
|
22
35
|
* @template T
|
@@ -45,18 +58,16 @@ const createCachedParameterizedComparator = fn => {
|
|
45
58
|
* @param {Chunk} b chunk
|
46
59
|
* @returns {-1|0|1} compare result
|
47
60
|
*/
|
48
|
-
exports.compareChunksById = (a, b) =>
|
49
|
-
|
50
|
-
};
|
61
|
+
module.exports.compareChunksById = (a, b) =>
|
62
|
+
compareIds(/** @type {ChunkId} */ (a.id), /** @type {ChunkId} */ (b.id));
|
51
63
|
|
52
64
|
/**
|
53
65
|
* @param {Module} a module
|
54
66
|
* @param {Module} b module
|
55
67
|
* @returns {-1|0|1} compare result
|
56
68
|
*/
|
57
|
-
exports.compareModulesByIdentifier = (a, b) =>
|
58
|
-
|
59
|
-
};
|
69
|
+
module.exports.compareModulesByIdentifier = (a, b) =>
|
70
|
+
compareIds(a.identifier(), b.identifier());
|
60
71
|
|
61
72
|
/**
|
62
73
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
@@ -64,11 +75,13 @@ exports.compareModulesByIdentifier = (a, b) => {
|
|
64
75
|
* @param {Module} b module
|
65
76
|
* @returns {-1|0|1} compare result
|
66
77
|
*/
|
67
|
-
const compareModulesById = (chunkGraph, a, b) =>
|
68
|
-
|
69
|
-
}
|
78
|
+
const compareModulesById = (chunkGraph, a, b) =>
|
79
|
+
compareIds(
|
80
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(a)),
|
81
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(b))
|
82
|
+
);
|
70
83
|
/** @type {ParameterizedComparator<ChunkGraph, Module>} */
|
71
|
-
exports.compareModulesById =
|
84
|
+
module.exports.compareModulesById =
|
72
85
|
createCachedParameterizedComparator(compareModulesById);
|
73
86
|
|
74
87
|
/**
|
@@ -84,7 +97,7 @@ const compareNumbers = (a, b) => {
|
|
84
97
|
if (a > b) return 1;
|
85
98
|
return 0;
|
86
99
|
};
|
87
|
-
exports.compareNumbers = compareNumbers;
|
100
|
+
module.exports.compareNumbers = compareNumbers;
|
88
101
|
|
89
102
|
/**
|
90
103
|
* @param {string} a string
|
@@ -92,35 +105,71 @@ exports.compareNumbers = compareNumbers;
|
|
92
105
|
* @returns {-1|0|1} compare result
|
93
106
|
*/
|
94
107
|
const compareStringsNumeric = (a, b) => {
|
95
|
-
const
|
96
|
-
const
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
108
|
+
const aLength = a.length;
|
109
|
+
const bLength = b.length;
|
110
|
+
|
111
|
+
let aChar = 0;
|
112
|
+
let bChar = 0;
|
113
|
+
|
114
|
+
let aIsDigit = false;
|
115
|
+
let bIsDigit = false;
|
116
|
+
let i = 0;
|
117
|
+
let j = 0;
|
118
|
+
while (i < aLength && j < bLength) {
|
119
|
+
aChar = a.charCodeAt(i);
|
120
|
+
bChar = b.charCodeAt(j);
|
121
|
+
|
122
|
+
aIsDigit = aChar >= 48 && aChar <= 57;
|
123
|
+
bIsDigit = bChar >= 48 && bChar <= 57;
|
124
|
+
|
125
|
+
if (!aIsDigit && !bIsDigit) {
|
126
|
+
if (aChar < bChar) return -1;
|
127
|
+
if (aChar > bChar) return 1;
|
128
|
+
i++;
|
129
|
+
j++;
|
130
|
+
} else if (aIsDigit && !bIsDigit) {
|
131
|
+
// This segment of a is shorter than in b
|
132
|
+
return 1;
|
133
|
+
} else if (!aIsDigit && bIsDigit) {
|
134
|
+
// This segment of b is shorter than in a
|
135
|
+
return -1;
|
112
136
|
} else {
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
137
|
+
let aNumber = aChar - 48;
|
138
|
+
let bNumber = bChar - 48;
|
139
|
+
|
140
|
+
while (++i < aLength) {
|
141
|
+
aChar = a.charCodeAt(i);
|
142
|
+
if (aChar < 48 || aChar > 57) break;
|
143
|
+
aNumber = aNumber * 10 + aChar - 48;
|
144
|
+
}
|
145
|
+
|
146
|
+
while (++j < bLength) {
|
147
|
+
bChar = b.charCodeAt(j);
|
148
|
+
if (bChar < 48 || bChar > 57) break;
|
149
|
+
bNumber = bNumber * 10 + bChar - 48;
|
150
|
+
}
|
151
|
+
|
152
|
+
if (aNumber < bNumber) return -1;
|
153
|
+
if (aNumber > bNumber) return 1;
|
117
154
|
}
|
118
155
|
}
|
119
|
-
|
120
|
-
if (
|
156
|
+
|
157
|
+
if (j < bLength) {
|
158
|
+
// a is shorter than b
|
159
|
+
bChar = b.charCodeAt(j);
|
160
|
+
bIsDigit = bChar >= 48 && bChar <= 57;
|
161
|
+
return bIsDigit ? -1 : 1;
|
162
|
+
}
|
163
|
+
if (i < aLength) {
|
164
|
+
// b is shorter than a
|
165
|
+
aChar = a.charCodeAt(i);
|
166
|
+
aIsDigit = aChar >= 48 && aChar <= 57;
|
167
|
+
return aIsDigit ? 1 : -1;
|
168
|
+
}
|
169
|
+
|
121
170
|
return 0;
|
122
171
|
};
|
123
|
-
exports.compareStringsNumeric = compareStringsNumeric;
|
172
|
+
module.exports.compareStringsNumeric = compareStringsNumeric;
|
124
173
|
|
125
174
|
/**
|
126
175
|
* @param {ModuleGraph} moduleGraph the module graph
|
@@ -130,14 +179,14 @@ exports.compareStringsNumeric = compareStringsNumeric;
|
|
130
179
|
*/
|
131
180
|
const compareModulesByPostOrderIndexOrIdentifier = (moduleGraph, a, b) => {
|
132
181
|
const cmp = compareNumbers(
|
133
|
-
moduleGraph.getPostOrderIndex(a),
|
134
|
-
moduleGraph.getPostOrderIndex(b)
|
182
|
+
/** @type {number} */ (moduleGraph.getPostOrderIndex(a)),
|
183
|
+
/** @type {number} */ (moduleGraph.getPostOrderIndex(b))
|
135
184
|
);
|
136
185
|
if (cmp !== 0) return cmp;
|
137
186
|
return compareIds(a.identifier(), b.identifier());
|
138
187
|
};
|
139
188
|
/** @type {ParameterizedComparator<ModuleGraph, Module>} */
|
140
|
-
exports.compareModulesByPostOrderIndexOrIdentifier =
|
189
|
+
module.exports.compareModulesByPostOrderIndexOrIdentifier =
|
141
190
|
createCachedParameterizedComparator(
|
142
191
|
compareModulesByPostOrderIndexOrIdentifier
|
143
192
|
);
|
@@ -150,14 +199,14 @@ exports.compareModulesByPostOrderIndexOrIdentifier =
|
|
150
199
|
*/
|
151
200
|
const compareModulesByPreOrderIndexOrIdentifier = (moduleGraph, a, b) => {
|
152
201
|
const cmp = compareNumbers(
|
153
|
-
moduleGraph.getPreOrderIndex(a),
|
154
|
-
moduleGraph.getPreOrderIndex(b)
|
202
|
+
/** @type {number} */ (moduleGraph.getPreOrderIndex(a)),
|
203
|
+
/** @type {number} */ (moduleGraph.getPreOrderIndex(b))
|
155
204
|
);
|
156
205
|
if (cmp !== 0) return cmp;
|
157
206
|
return compareIds(a.identifier(), b.identifier());
|
158
207
|
};
|
159
208
|
/** @type {ParameterizedComparator<ModuleGraph, Module>} */
|
160
|
-
exports.compareModulesByPreOrderIndexOrIdentifier =
|
209
|
+
module.exports.compareModulesByPreOrderIndexOrIdentifier =
|
161
210
|
createCachedParameterizedComparator(
|
162
211
|
compareModulesByPreOrderIndexOrIdentifier
|
163
212
|
);
|
@@ -169,14 +218,16 @@ exports.compareModulesByPreOrderIndexOrIdentifier =
|
|
169
218
|
* @returns {-1|0|1} compare result
|
170
219
|
*/
|
171
220
|
const compareModulesByIdOrIdentifier = (chunkGraph, a, b) => {
|
172
|
-
const cmp = compareIds(
|
221
|
+
const cmp = compareIds(
|
222
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(a)),
|
223
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(b))
|
224
|
+
);
|
173
225
|
if (cmp !== 0) return cmp;
|
174
226
|
return compareIds(a.identifier(), b.identifier());
|
175
227
|
};
|
176
228
|
/** @type {ParameterizedComparator<ChunkGraph, Module>} */
|
177
|
-
exports.compareModulesByIdOrIdentifier =
|
178
|
-
compareModulesByIdOrIdentifier
|
179
|
-
);
|
229
|
+
module.exports.compareModulesByIdOrIdentifier =
|
230
|
+
createCachedParameterizedComparator(compareModulesByIdOrIdentifier);
|
180
231
|
|
181
232
|
/**
|
182
233
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
@@ -184,11 +235,10 @@ exports.compareModulesByIdOrIdentifier = createCachedParameterizedComparator(
|
|
184
235
|
* @param {Chunk} b chunk
|
185
236
|
* @returns {-1|0|1} compare result
|
186
237
|
*/
|
187
|
-
const compareChunks = (chunkGraph, a, b) =>
|
188
|
-
return chunkGraph.compareChunks(a, b);
|
189
|
-
};
|
238
|
+
const compareChunks = (chunkGraph, a, b) => chunkGraph.compareChunks(a, b);
|
190
239
|
/** @type {ParameterizedComparator<ChunkGraph, Chunk>} */
|
191
|
-
exports.compareChunks =
|
240
|
+
module.exports.compareChunks =
|
241
|
+
createCachedParameterizedComparator(compareChunks);
|
192
242
|
|
193
243
|
/**
|
194
244
|
* @param {string|number} a first id
|
@@ -204,7 +254,7 @@ const compareIds = (a, b) => {
|
|
204
254
|
return 0;
|
205
255
|
};
|
206
256
|
|
207
|
-
exports.compareIds = compareIds;
|
257
|
+
module.exports.compareIds = compareIds;
|
208
258
|
|
209
259
|
/**
|
210
260
|
* @param {string} a first string
|
@@ -217,18 +267,16 @@ const compareStrings = (a, b) => {
|
|
217
267
|
return 0;
|
218
268
|
};
|
219
269
|
|
220
|
-
exports.compareStrings = compareStrings;
|
270
|
+
module.exports.compareStrings = compareStrings;
|
221
271
|
|
222
272
|
/**
|
223
273
|
* @param {ChunkGroup} a first chunk group
|
224
274
|
* @param {ChunkGroup} b second chunk group
|
225
275
|
* @returns {-1|0|1} compare result
|
226
276
|
*/
|
227
|
-
const compareChunkGroupsByIndex = (a, b) =>
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
|
277
|
+
const compareChunkGroupsByIndex = (a, b) =>
|
278
|
+
/** @type {number} */ (a.index) < /** @type {number} */ (b.index) ? -1 : 1;
|
279
|
+
module.exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
|
232
280
|
|
233
281
|
/**
|
234
282
|
* @template K1 {Object}
|
@@ -237,7 +285,10 @@ exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
|
|
237
285
|
*/
|
238
286
|
class TwoKeyWeakMap {
|
239
287
|
constructor() {
|
240
|
-
/**
|
288
|
+
/**
|
289
|
+
* @private
|
290
|
+
* @type {WeakMap<any, WeakMap<any, T | undefined>>}
|
291
|
+
*/
|
241
292
|
this._map = new WeakMap();
|
242
293
|
}
|
243
294
|
|
@@ -249,7 +300,7 @@ class TwoKeyWeakMap {
|
|
249
300
|
get(key1, key2) {
|
250
301
|
const childMap = this._map.get(key1);
|
251
302
|
if (childMap === undefined) {
|
252
|
-
return
|
303
|
+
return;
|
253
304
|
}
|
254
305
|
return childMap.get(key2);
|
255
306
|
}
|
@@ -302,9 +353,12 @@ const concatComparators = (c1, c2, ...cRest) => {
|
|
302
353
|
concatComparatorsCache.set(c1, c2, result);
|
303
354
|
return result;
|
304
355
|
};
|
305
|
-
exports.concatComparators = concatComparators;
|
356
|
+
module.exports.concatComparators = concatComparators;
|
306
357
|
|
307
|
-
/**
|
358
|
+
/**
|
359
|
+
* @template A, B
|
360
|
+
* @typedef {(input: A) => B | undefined | null} Selector
|
361
|
+
*/
|
308
362
|
|
309
363
|
/** @type {TwoKeyWeakMap<Selector<any, any>, Comparator<any>, Comparator<any>>}} */
|
310
364
|
const compareSelectCache = new TwoKeyWeakMap();
|
@@ -332,17 +386,16 @@ const compareSelect = (getter, comparator) => {
|
|
332
386
|
return comparator(aValue, bValue);
|
333
387
|
}
|
334
388
|
return -1;
|
335
|
-
} else {
|
336
|
-
if (bValue !== undefined && bValue !== null) {
|
337
|
-
return 1;
|
338
|
-
}
|
339
|
-
return 0;
|
340
389
|
}
|
390
|
+
if (bValue !== undefined && bValue !== null) {
|
391
|
+
return 1;
|
392
|
+
}
|
393
|
+
return 0;
|
341
394
|
};
|
342
395
|
compareSelectCache.set(getter, comparator, result);
|
343
396
|
return result;
|
344
397
|
};
|
345
|
-
exports.compareSelect = compareSelect;
|
398
|
+
module.exports.compareSelect = compareSelect;
|
346
399
|
|
347
400
|
/** @type {WeakMap<Comparator<any>, Comparator<Iterable<any>>>} */
|
348
401
|
const compareIteratorsCache = new WeakMap();
|
@@ -363,7 +416,6 @@ const compareIterables = elementComparator => {
|
|
363
416
|
const result = (a, b) => {
|
364
417
|
const aI = a[Symbol.iterator]();
|
365
418
|
const bI = b[Symbol.iterator]();
|
366
|
-
// eslint-disable-next-line no-constant-condition
|
367
419
|
while (true) {
|
368
420
|
const aItem = aI.next();
|
369
421
|
const bItem = bI.next();
|
@@ -379,7 +431,7 @@ const compareIterables = elementComparator => {
|
|
379
431
|
compareIteratorsCache.set(elementComparator, result);
|
380
432
|
return result;
|
381
433
|
};
|
382
|
-
exports.compareIterables = compareIterables;
|
434
|
+
module.exports.compareIterables = compareIterables;
|
383
435
|
|
384
436
|
// TODO this is no longer needed when minimum node.js version is >= 12
|
385
437
|
// since these versions ship with a stable sort function
|
@@ -388,25 +440,32 @@ exports.compareIterables = compareIterables;
|
|
388
440
|
* @param {Iterable<T>} iterable original ordered list
|
389
441
|
* @returns {Comparator<T>} comparator
|
390
442
|
*/
|
391
|
-
exports.keepOriginalOrder = iterable => {
|
443
|
+
module.exports.keepOriginalOrder = iterable => {
|
392
444
|
/** @type {Map<T, number>} */
|
393
445
|
const map = new Map();
|
394
446
|
let i = 0;
|
395
447
|
for (const item of iterable) {
|
396
448
|
map.set(item, i++);
|
397
449
|
}
|
398
|
-
return (a, b) =>
|
450
|
+
return (a, b) =>
|
451
|
+
compareNumbers(
|
452
|
+
/** @type {number} */ (map.get(a)),
|
453
|
+
/** @type {number} */ (map.get(b))
|
454
|
+
);
|
399
455
|
};
|
400
456
|
|
401
457
|
/**
|
402
458
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
403
459
|
* @returns {Comparator<Chunk>} comparator
|
404
460
|
*/
|
405
|
-
exports.compareChunksNatural = chunkGraph => {
|
406
|
-
const cmpFn = exports.compareModulesById(chunkGraph);
|
461
|
+
module.exports.compareChunksNatural = chunkGraph => {
|
462
|
+
const cmpFn = module.exports.compareModulesById(chunkGraph);
|
407
463
|
const cmpIterableFn = compareIterables(cmpFn);
|
408
464
|
return concatComparators(
|
409
|
-
compareSelect(
|
465
|
+
compareSelect(
|
466
|
+
chunk => /** @type {string|number} */ (chunk.name),
|
467
|
+
compareIds
|
468
|
+
),
|
410
469
|
compareSelect(chunk => chunk.runtime, compareRuntime),
|
411
470
|
compareSelect(
|
412
471
|
/**
|
@@ -425,9 +484,9 @@ exports.compareChunksNatural = chunkGraph => {
|
|
425
484
|
* @param {DependencyLocation} b A location node
|
426
485
|
* @returns {-1|0|1} sorting comparator value
|
427
486
|
*/
|
428
|
-
exports.compareLocations = (a, b) => {
|
429
|
-
|
430
|
-
|
487
|
+
module.exports.compareLocations = (a, b) => {
|
488
|
+
const isObjectA = typeof a === "object" && a !== null;
|
489
|
+
const isObjectB = typeof b === "object" && b !== null;
|
431
490
|
if (!isObjectA || !isObjectB) {
|
432
491
|
if (isObjectA) return 1;
|
433
492
|
if (isObjectB) return -1;
|
@@ -439,8 +498,10 @@ exports.compareLocations = (a, b) => {
|
|
439
498
|
const bp = b.start;
|
440
499
|
if (ap.line < bp.line) return -1;
|
441
500
|
if (ap.line > bp.line) return 1;
|
442
|
-
if (ap.column < bp.column)
|
443
|
-
|
501
|
+
if (/** @type {number} */ (ap.column) < /** @type {number} */ (bp.column))
|
502
|
+
return -1;
|
503
|
+
if (/** @type {number} */ (ap.column) > /** @type {number} */ (bp.column))
|
504
|
+
return 1;
|
444
505
|
} else return -1;
|
445
506
|
} else if ("start" in b) return 1;
|
446
507
|
if ("name" in a) {
|
@@ -451,8 +512,10 @@ exports.compareLocations = (a, b) => {
|
|
451
512
|
} else if ("name" in b) return 1;
|
452
513
|
if ("index" in a) {
|
453
514
|
if ("index" in b) {
|
454
|
-
if (a.index < b.index)
|
455
|
-
|
515
|
+
if (/** @type {number} */ (a.index) < /** @type {number} */ (b.index))
|
516
|
+
return -1;
|
517
|
+
if (/** @type {number} */ (a.index) > /** @type {number} */ (b.index))
|
518
|
+
return 1;
|
456
519
|
} else return -1;
|
457
520
|
} else if ("index" in b) return 1;
|
458
521
|
return 0;
|