@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- 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 +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
package/lib/util/cleverMerge.js
CHANGED
|
@@ -51,6 +51,7 @@ const cachedCleverMerge = (first, second) => {
|
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
+
* Caches d set property.
|
|
54
55
|
* @template T
|
|
55
56
|
* @param {Partial<T>} obj object
|
|
56
57
|
* @param {string} property property
|
|
@@ -86,10 +87,12 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
86
87
|
};
|
|
87
88
|
|
|
88
89
|
/**
|
|
90
|
+
* Defines the by values type used by this module.
|
|
89
91
|
* @typedef {Map<string, EXPECTED_ANY>} ByValues
|
|
90
92
|
*/
|
|
91
93
|
|
|
92
94
|
/**
|
|
95
|
+
* Defines the object parsed property entry type used by this module.
|
|
93
96
|
* @template T
|
|
94
97
|
* @typedef {object} ObjectParsedPropertyEntry
|
|
95
98
|
* @property {T[keyof T] | undefined} base base value
|
|
@@ -100,16 +103,19 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
100
103
|
/** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
|
|
101
104
|
|
|
102
105
|
/**
|
|
106
|
+
* Defines the parsed object static type used by this module.
|
|
103
107
|
* @template {object} T
|
|
104
108
|
* @typedef {Map<keyof T, ObjectParsedPropertyEntry<T>>} ParsedObjectStatic
|
|
105
109
|
*/
|
|
106
110
|
|
|
107
111
|
/**
|
|
112
|
+
* Defines the parsed object dynamic type used by this module.
|
|
108
113
|
* @template {object} T
|
|
109
114
|
* @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
|
|
110
115
|
*/
|
|
111
116
|
|
|
112
117
|
/**
|
|
118
|
+
* Defines the parsed object type used by this module.
|
|
113
119
|
* @template {object} T
|
|
114
120
|
* @typedef {object} ParsedObject
|
|
115
121
|
* @property {ParsedObjectStatic<T>} static static properties (key is property name)
|
|
@@ -120,21 +126,23 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
120
126
|
const parseCache = new WeakMap();
|
|
121
127
|
|
|
122
128
|
/**
|
|
129
|
+
* Caches d parse object.
|
|
123
130
|
* @template {object} T
|
|
124
131
|
* @param {T} obj the object
|
|
125
132
|
* @returns {ParsedObject<T>} parsed object
|
|
126
133
|
*/
|
|
127
134
|
const cachedParseObject = (obj) => {
|
|
128
|
-
const entry = parseCache.get(
|
|
135
|
+
const entry = parseCache.get(obj);
|
|
129
136
|
if (entry !== undefined) return entry;
|
|
130
137
|
const result = parseObject(obj);
|
|
131
|
-
parseCache.set(
|
|
138
|
+
parseCache.set(obj, result);
|
|
132
139
|
return result;
|
|
133
140
|
};
|
|
134
141
|
|
|
135
142
|
/** @typedef {{ [p: string]: { [p: string]: EXPECTED_ANY } } | DynamicFunction} ByObject */
|
|
136
143
|
|
|
137
144
|
/**
|
|
145
|
+
* Returns parsed object.
|
|
138
146
|
* @template {object} T
|
|
139
147
|
* @param {T} obj the object
|
|
140
148
|
* @returns {ParsedObject<T>} parsed object
|
|
@@ -145,6 +153,7 @@ const parseObject = (obj) => {
|
|
|
145
153
|
/** @type {ParsedObjectDynamic<T> | undefined} */
|
|
146
154
|
let dynamicInfo;
|
|
147
155
|
/**
|
|
156
|
+
* Returns object parsed property entry.
|
|
148
157
|
* @param {keyof T} p path
|
|
149
158
|
* @returns {Partial<ObjectParsedPropertyEntry<T>>} object parsed property entry
|
|
150
159
|
*/
|
|
@@ -221,6 +230,7 @@ const parseObject = (obj) => {
|
|
|
221
230
|
};
|
|
222
231
|
|
|
223
232
|
/**
|
|
233
|
+
* Returns the object.
|
|
224
234
|
* @template {object} T
|
|
225
235
|
* @param {ParsedObjectStatic<T>} info static properties (key is property name)
|
|
226
236
|
* @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
|
|
@@ -269,6 +279,7 @@ const VALUE_TYPE_OBJECT = 3;
|
|
|
269
279
|
const VALUE_TYPE_DELETE = 4;
|
|
270
280
|
|
|
271
281
|
/**
|
|
282
|
+
* Returns value type.
|
|
272
283
|
* @template T
|
|
273
284
|
* @param {T} value a single value
|
|
274
285
|
* @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
|
|
@@ -311,6 +322,7 @@ const cleverMerge = (first, second) => {
|
|
|
311
322
|
};
|
|
312
323
|
|
|
313
324
|
/**
|
|
325
|
+
* Returns merged object of first and second object.
|
|
314
326
|
* @template {object} T
|
|
315
327
|
* @template {object} O
|
|
316
328
|
* Merges two objects. Objects are deeply clever merged.
|
|
@@ -378,6 +390,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
|
|
|
378
390
|
};
|
|
379
391
|
|
|
380
392
|
/**
|
|
393
|
+
* Merges the provided values into a single result.
|
|
381
394
|
* @template T, O
|
|
382
395
|
* @param {ObjectParsedPropertyEntry<T>} firstEntry a
|
|
383
396
|
* @param {ObjectParsedPropertyEntry<O>} secondEntry b
|
|
@@ -510,6 +523,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
|
|
|
510
523
|
};
|
|
511
524
|
|
|
512
525
|
/**
|
|
526
|
+
* Gets from by values.
|
|
513
527
|
* @template V
|
|
514
528
|
* @param {ByValues} byValues all values
|
|
515
529
|
* @param {string} key value of the selector
|
|
@@ -523,6 +537,7 @@ const getFromByValues = (byValues, key) => {
|
|
|
523
537
|
};
|
|
524
538
|
|
|
525
539
|
/**
|
|
540
|
+
* Merges single value.
|
|
526
541
|
* @template A
|
|
527
542
|
* @template B
|
|
528
543
|
* @param {A | A[]} a value
|
|
@@ -585,6 +600,7 @@ const mergeSingleValue = (a, b, internalCaching) => {
|
|
|
585
600
|
};
|
|
586
601
|
|
|
587
602
|
/**
|
|
603
|
+
* Removes operations.
|
|
588
604
|
* @template {object} T
|
|
589
605
|
* @param {T} obj the object
|
|
590
606
|
* @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
|
|
@@ -632,6 +648,7 @@ const removeOperations = (obj, keysToKeepOriginalValue = []) => {
|
|
|
632
648
|
};
|
|
633
649
|
|
|
634
650
|
/**
|
|
651
|
+
* Resolves by property.
|
|
635
652
|
* @template T
|
|
636
653
|
* @template {keyof T} P
|
|
637
654
|
* @template V
|
package/lib/util/comparators.js
CHANGED
|
@@ -24,50 +24,57 @@ const { compareRuntime } = require("./runtime");
|
|
|
24
24
|
/** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
+
* Defines the dependency source order type used by this module.
|
|
27
28
|
* @typedef {object} DependencySourceOrder
|
|
28
29
|
* @property {number} main the main source order
|
|
29
30
|
* @property {number} sub the sub source order
|
|
30
31
|
*/
|
|
31
32
|
|
|
32
33
|
/**
|
|
34
|
+
* Defines the comparator type used by this module.
|
|
33
35
|
* @template T
|
|
34
36
|
* @typedef {(a: T, b: T) => -1 | 0 | 1} Comparator
|
|
35
37
|
*/
|
|
36
38
|
/**
|
|
39
|
+
* Defines the raw parameterized comparator type used by this module.
|
|
37
40
|
* @template {object} TArg
|
|
38
41
|
* @template T
|
|
39
42
|
* @typedef {(tArg: TArg, a: T, b: T) => -1 | 0 | 1} RawParameterizedComparator
|
|
40
43
|
*/
|
|
41
44
|
/**
|
|
45
|
+
* Defines the parameterized comparator type used by this module.
|
|
42
46
|
* @template {object} TArg
|
|
43
47
|
* @template T
|
|
44
48
|
* @typedef {(tArg: TArg) => Comparator<T>} ParameterizedComparator
|
|
45
49
|
*/
|
|
46
50
|
|
|
47
51
|
/**
|
|
52
|
+
* Creates a cached parameterized comparator.
|
|
48
53
|
* @template {object} TArg
|
|
49
54
|
* @template {object} T
|
|
50
55
|
* @param {RawParameterizedComparator<TArg, T>} fn comparator with argument
|
|
51
56
|
* @returns {ParameterizedComparator<TArg, T>} comparator
|
|
52
57
|
*/
|
|
53
58
|
const createCachedParameterizedComparator = (fn) => {
|
|
54
|
-
/** @type {WeakMap<
|
|
59
|
+
/** @type {WeakMap<TArg, Comparator<T>>} */
|
|
55
60
|
const map = new WeakMap();
|
|
56
61
|
return (arg) => {
|
|
57
|
-
const cachedResult = map.get(
|
|
62
|
+
const cachedResult = map.get(arg);
|
|
58
63
|
if (cachedResult !== undefined) return cachedResult;
|
|
64
|
+
// arrow closure dispatches faster than a bound function on the sort hot path
|
|
59
65
|
/**
|
|
60
66
|
* @param {T} a first item
|
|
61
67
|
* @param {T} b second item
|
|
62
68
|
* @returns {-1 | 0 | 1} compare result
|
|
63
69
|
*/
|
|
64
|
-
const result = fn
|
|
65
|
-
map.set(
|
|
70
|
+
const result = (a, b) => fn(arg, a, b);
|
|
71
|
+
map.set(arg, result);
|
|
66
72
|
return result;
|
|
67
73
|
};
|
|
68
74
|
};
|
|
69
75
|
|
|
70
76
|
/**
|
|
77
|
+
* Compares the provided values and returns their ordering.
|
|
71
78
|
* @param {string | number} a first id
|
|
72
79
|
* @param {string | number} b second id
|
|
73
80
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -82,6 +89,7 @@ const compareIds = (a, b) => {
|
|
|
82
89
|
};
|
|
83
90
|
|
|
84
91
|
/**
|
|
92
|
+
* Compares iterables.
|
|
85
93
|
* @template T
|
|
86
94
|
* @param {Comparator<T>} elementComparator comparator for elements
|
|
87
95
|
* @returns {Comparator<Iterable<T>>} comparator for iterables of elements
|
|
@@ -90,6 +98,7 @@ const compareIterables = (elementComparator) => {
|
|
|
90
98
|
const cacheEntry = compareIteratorsCache.get(elementComparator);
|
|
91
99
|
if (cacheEntry !== undefined) return cacheEntry;
|
|
92
100
|
/**
|
|
101
|
+
* Returns compare result.
|
|
93
102
|
* @param {Iterable<T>} a first value
|
|
94
103
|
* @param {Iterable<T>} b second value
|
|
95
104
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -177,6 +186,7 @@ const compareLocations = (a, b) => {
|
|
|
177
186
|
};
|
|
178
187
|
|
|
179
188
|
/**
|
|
189
|
+
* Compares modules by id.
|
|
180
190
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
181
191
|
* @param {Module} a module
|
|
182
192
|
* @param {Module} b module
|
|
@@ -189,6 +199,7 @@ const compareModulesById = (chunkGraph, a, b) =>
|
|
|
189
199
|
);
|
|
190
200
|
|
|
191
201
|
/**
|
|
202
|
+
* Compares the provided values and returns their ordering.
|
|
192
203
|
* @param {number} a number
|
|
193
204
|
* @param {number} b number
|
|
194
205
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -203,6 +214,7 @@ const compareNumbers = (a, b) => {
|
|
|
203
214
|
};
|
|
204
215
|
|
|
205
216
|
/**
|
|
217
|
+
* Compares strings numeric.
|
|
206
218
|
* @param {string} a string
|
|
207
219
|
* @param {string} b string
|
|
208
220
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -274,6 +286,7 @@ const compareStringsNumeric = (a, b) => {
|
|
|
274
286
|
};
|
|
275
287
|
|
|
276
288
|
/**
|
|
289
|
+
* Compares modules by post order index or identifier.
|
|
277
290
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
278
291
|
* @param {Module} a module
|
|
279
292
|
* @param {Module} b module
|
|
@@ -289,6 +302,7 @@ const compareModulesByPostOrderIndexOrIdentifier = (moduleGraph, a, b) => {
|
|
|
289
302
|
};
|
|
290
303
|
|
|
291
304
|
/**
|
|
305
|
+
* Compares modules by pre order index or identifier.
|
|
292
306
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
293
307
|
* @param {Module} a module
|
|
294
308
|
* @param {Module} b module
|
|
@@ -304,6 +318,7 @@ const compareModulesByPreOrderIndexOrIdentifier = (moduleGraph, a, b) => {
|
|
|
304
318
|
};
|
|
305
319
|
|
|
306
320
|
/**
|
|
321
|
+
* Compares modules by id or identifier.
|
|
307
322
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
308
323
|
* @param {Module} a module
|
|
309
324
|
* @param {Module} b module
|
|
@@ -332,6 +347,7 @@ const compareModulesByFullName = (compiler, a, b) => {
|
|
|
332
347
|
};
|
|
333
348
|
|
|
334
349
|
/**
|
|
350
|
+
* Compares the provided values and returns their ordering.
|
|
335
351
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
336
352
|
* @param {Chunk} a chunk
|
|
337
353
|
* @param {Chunk} b chunk
|
|
@@ -340,6 +356,7 @@ const compareModulesByFullName = (compiler, a, b) => {
|
|
|
340
356
|
const compareChunks = (chunkGraph, a, b) => chunkGraph.compareChunks(a, b);
|
|
341
357
|
|
|
342
358
|
/**
|
|
359
|
+
* Compares the provided values and returns their ordering.
|
|
343
360
|
* @param {string} a first string
|
|
344
361
|
* @param {string} b second string
|
|
345
362
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -351,6 +368,7 @@ const compareStrings = (a, b) => {
|
|
|
351
368
|
};
|
|
352
369
|
|
|
353
370
|
/**
|
|
371
|
+
* Compares chunk groups by index.
|
|
354
372
|
* @param {ChunkGroup} a first chunk group
|
|
355
373
|
* @param {ChunkGroup} b second chunk group
|
|
356
374
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -359,6 +377,7 @@ const compareChunkGroupsByIndex = (a, b) =>
|
|
|
359
377
|
/** @type {number} */ (a.index) < /** @type {number} */ (b.index) ? -1 : 1;
|
|
360
378
|
|
|
361
379
|
/**
|
|
380
|
+
* Represents TwoKeyWeakMap.
|
|
362
381
|
* @template {EXPECTED_OBJECT} K1
|
|
363
382
|
* @template {EXPECTED_OBJECT} K2
|
|
364
383
|
* @template T
|
|
@@ -373,6 +392,7 @@ class TwoKeyWeakMap {
|
|
|
373
392
|
}
|
|
374
393
|
|
|
375
394
|
/**
|
|
395
|
+
* Returns value.
|
|
376
396
|
* @param {K1} key1 first key
|
|
377
397
|
* @param {K2} key2 second key
|
|
378
398
|
* @returns {T | undefined} value
|
|
@@ -386,6 +406,7 @@ class TwoKeyWeakMap {
|
|
|
386
406
|
}
|
|
387
407
|
|
|
388
408
|
/**
|
|
409
|
+
* Updates value using the provided key1.
|
|
389
410
|
* @param {K1} key1 first key
|
|
390
411
|
* @param {K2} key2 second key
|
|
391
412
|
* @param {T | undefined} value new value
|
|
@@ -405,6 +426,7 @@ class TwoKeyWeakMap {
|
|
|
405
426
|
const concatComparatorsCache = new TwoKeyWeakMap();
|
|
406
427
|
|
|
407
428
|
/**
|
|
429
|
+
* Concat comparators.
|
|
408
430
|
* @template T
|
|
409
431
|
* @param {Comparator<T>} c1 comparator
|
|
410
432
|
* @param {Comparator<T>} c2 comparator
|
|
@@ -421,6 +443,7 @@ const concatComparators = (c1, c2, ...cRest) => {
|
|
|
421
443
|
);
|
|
422
444
|
if (cacheEntry !== undefined) return cacheEntry;
|
|
423
445
|
/**
|
|
446
|
+
* Returns compare result.
|
|
424
447
|
* @param {T} a first value
|
|
425
448
|
* @param {T} b second value
|
|
426
449
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -435,6 +458,7 @@ const concatComparators = (c1, c2, ...cRest) => {
|
|
|
435
458
|
};
|
|
436
459
|
|
|
437
460
|
/**
|
|
461
|
+
* Defines the selector type used by this module.
|
|
438
462
|
* @template A, B
|
|
439
463
|
* @typedef {(input: A) => B | undefined | null} Selector
|
|
440
464
|
*/
|
|
@@ -443,6 +467,7 @@ const concatComparators = (c1, c2, ...cRest) => {
|
|
|
443
467
|
const compareSelectCache = new TwoKeyWeakMap();
|
|
444
468
|
|
|
445
469
|
/**
|
|
470
|
+
* Compares the provided values and returns their ordering.
|
|
446
471
|
* @template T
|
|
447
472
|
* @template R
|
|
448
473
|
* @param {Selector<T, R>} getter getter for value
|
|
@@ -453,6 +478,7 @@ const compareSelect = (getter, comparator) => {
|
|
|
453
478
|
const cacheEntry = compareSelectCache.get(getter, comparator);
|
|
454
479
|
if (cacheEntry !== undefined) return cacheEntry;
|
|
455
480
|
/**
|
|
481
|
+
* Returns compare result.
|
|
456
482
|
* @param {T} a first value
|
|
457
483
|
* @param {T} b second value
|
|
458
484
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -481,6 +507,7 @@ const compareIteratorsCache = new WeakMap();
|
|
|
481
507
|
// TODO this is no longer needed when minimum node.js version is >= 12
|
|
482
508
|
// since these versions ship with a stable sort function
|
|
483
509
|
/**
|
|
510
|
+
* Keep original order.
|
|
484
511
|
* @template T
|
|
485
512
|
* @param {Iterable<T>} iterable original ordered list
|
|
486
513
|
* @returns {Comparator<T>} comparator
|
|
@@ -500,6 +527,7 @@ const keepOriginalOrder = (iterable) => {
|
|
|
500
527
|
};
|
|
501
528
|
|
|
502
529
|
/**
|
|
530
|
+
* Compares chunks natural.
|
|
503
531
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
504
532
|
* @returns {Comparator<Chunk>} comparator
|
|
505
533
|
*/
|
|
@@ -511,6 +539,7 @@ const compareChunksNatural = (chunkGraph) => {
|
|
|
511
539
|
compareSelect((chunk) => chunk.runtime, compareRuntime),
|
|
512
540
|
compareSelect(
|
|
513
541
|
/**
|
|
542
|
+
* Handles the callback logic for this hook.
|
|
514
543
|
* @param {Chunk} chunk a chunk
|
|
515
544
|
* @returns {Iterable<Module>} modules
|
|
516
545
|
*/
|
|
@@ -591,6 +620,7 @@ module.exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
|
|
|
591
620
|
module.exports.compareChunks =
|
|
592
621
|
createCachedParameterizedComparator(compareChunks);
|
|
593
622
|
/**
|
|
623
|
+
* Returns compare result.
|
|
594
624
|
* @param {Chunk} a chunk
|
|
595
625
|
* @param {Chunk} b chunk
|
|
596
626
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -617,6 +647,7 @@ module.exports.compareModulesById =
|
|
|
617
647
|
module.exports.compareModulesByIdOrIdentifier =
|
|
618
648
|
createCachedParameterizedComparator(compareModulesByIdOrIdentifier);
|
|
619
649
|
/**
|
|
650
|
+
* Returns compare result.
|
|
620
651
|
* @param {Module} a module
|
|
621
652
|
* @param {Module} b module
|
|
622
653
|
* @returns {-1 | 0 | 1} compare result
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Returns quoted meta.
|
|
9
10
|
* @param {string} str string
|
|
10
11
|
* @returns {string} quoted meta
|
|
11
12
|
*/
|
|
12
13
|
const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
|
13
14
|
|
|
14
15
|
/**
|
|
16
|
+
* Quote meta in char class.
|
|
15
17
|
* @param {string} char character to escape for use in character class
|
|
16
18
|
* @returns {string} escaped character
|
|
17
19
|
*/
|
|
@@ -85,6 +87,7 @@ const formatRange = (start, end) => {
|
|
|
85
87
|
};
|
|
86
88
|
|
|
87
89
|
/**
|
|
90
|
+
* Returns string.
|
|
88
91
|
* @param {string} str string
|
|
89
92
|
* @returns {string} string
|
|
90
93
|
*/
|
|
@@ -96,6 +99,7 @@ const toSimpleString = (str) => {
|
|
|
96
99
|
};
|
|
97
100
|
|
|
98
101
|
/**
|
|
102
|
+
* Compile boolean matcher.
|
|
99
103
|
* @param {Record<string | number, boolean>} map value map
|
|
100
104
|
* @returns {boolean | ((value: string) => string)} true/false, when unconditionally true/false, or a template function to determine the value at runtime
|
|
101
105
|
*/
|
|
@@ -108,6 +112,7 @@ const compileBooleanMatcher = (map) => {
|
|
|
108
112
|
};
|
|
109
113
|
|
|
110
114
|
/**
|
|
115
|
+
* Compile boolean matcher from lists.
|
|
111
116
|
* @param {string[]} positiveItems positive items
|
|
112
117
|
* @param {string[]} negativeItems negative items
|
|
113
118
|
* @returns {(value: string) => string} a template function to determine the value at runtime
|
|
@@ -132,6 +137,7 @@ const compileBooleanMatcherFromLists = (positiveItems, negativeItems) => {
|
|
|
132
137
|
/** @typedef {string[][]} ListOfCommonItems */
|
|
133
138
|
|
|
134
139
|
/**
|
|
140
|
+
* Returns list of common items.
|
|
135
141
|
* @param {Set<string>} itemsSet items set
|
|
136
142
|
* @param {(str: string) => string | false} getKey get key function
|
|
137
143
|
* @param {(str: string[]) => boolean} condition condition
|
|
@@ -166,6 +172,7 @@ const popCommonItems = (itemsSet, getKey, condition) => {
|
|
|
166
172
|
};
|
|
167
173
|
|
|
168
174
|
/**
|
|
175
|
+
* Gets common prefix.
|
|
169
176
|
* @param {string[]} items items
|
|
170
177
|
* @returns {string} common prefix
|
|
171
178
|
*/
|
|
@@ -184,6 +191,7 @@ const getCommonPrefix = (items) => {
|
|
|
184
191
|
};
|
|
185
192
|
|
|
186
193
|
/**
|
|
194
|
+
* Gets common suffix.
|
|
187
195
|
* @param {string[]} items items
|
|
188
196
|
* @returns {string} common suffix
|
|
189
197
|
*/
|
|
@@ -202,6 +210,7 @@ const getCommonSuffix = (items) => {
|
|
|
202
210
|
};
|
|
203
211
|
|
|
204
212
|
/**
|
|
213
|
+
* Returns regexp.
|
|
205
214
|
* @param {string[]} itemsArr array of items
|
|
206
215
|
* @returns {string} regexp
|
|
207
216
|
*/
|
package/lib/util/concatenate.js
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
|
|
10
|
-
/** @typedef {import("eslint-scope").Scope} Scope */
|
|
11
|
-
/** @typedef {import("eslint-scope").Reference} Reference */
|
|
12
|
-
/** @typedef {import("eslint-scope").Variable} Variable */
|
|
13
10
|
/** @typedef {import("estree").Node} Node */
|
|
11
|
+
/** @typedef {import("../javascript/JavascriptModulesPlugin").Scope} Scope */
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptModulesPlugin").Reference} Reference */
|
|
13
|
+
/** @typedef {import("../javascript/JavascriptModulesPlugin").Variable} Variable */
|
|
14
14
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
15
15
|
/** @typedef {Set<string>} UsedNames */
|
|
16
16
|
|
|
@@ -18,17 +18,21 @@ const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
|
|
|
18
18
|
const NAMESPACE_OBJECT_EXPORT = "__WEBPACK_NAMESPACE_OBJECT__";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
+
* Gets all references.
|
|
21
22
|
* @param {Variable} variable variable
|
|
22
23
|
* @returns {Reference[]} references
|
|
23
24
|
*/
|
|
24
25
|
const getAllReferences = (variable) => {
|
|
25
26
|
let set = variable.references;
|
|
26
27
|
// Look for inner scope variables too (like in class Foo { t() { Foo } })
|
|
27
|
-
|
|
28
|
+
// identifiers is tiny (usually 1 declaration) — indexOf beats a Set here
|
|
29
|
+
const identifiers = variable.identifiers;
|
|
28
30
|
for (const scope of variable.scope.childScopes) {
|
|
29
31
|
for (const innerVar of scope.variables) {
|
|
30
|
-
if (innerVar.identifiers.some((id) => identifiers.
|
|
31
|
-
|
|
32
|
+
if (innerVar.identifiers.some((id) => identifiers.includes(id))) {
|
|
33
|
+
// copy-on-write to keep the common no-match case allocation-free
|
|
34
|
+
if (set === variable.references) set = [...set];
|
|
35
|
+
for (const ref of innerVar.references) set.push(ref);
|
|
32
36
|
break;
|
|
33
37
|
}
|
|
34
38
|
}
|
|
@@ -37,6 +41,7 @@ const getAllReferences = (variable) => {
|
|
|
37
41
|
};
|
|
38
42
|
|
|
39
43
|
/**
|
|
44
|
+
* Returns result.
|
|
40
45
|
* @param {Node | Node[]} ast ast
|
|
41
46
|
* @param {Node} node node
|
|
42
47
|
* @returns {undefined | Node[]} result
|
|
@@ -49,6 +54,7 @@ const getPathInAst = (ast, node) => {
|
|
|
49
54
|
const nr = /** @type {Range} */ (node.range);
|
|
50
55
|
|
|
51
56
|
/**
|
|
57
|
+
* Returns result.
|
|
52
58
|
* @param {Node} n node
|
|
53
59
|
* @returns {Node[] | undefined} result
|
|
54
60
|
*/
|
|
@@ -65,9 +71,28 @@ const getPathInAst = (ast, node) => {
|
|
|
65
71
|
};
|
|
66
72
|
|
|
67
73
|
if (Array.isArray(ast)) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
// sibling ranges are ordered and disjoint; binary search the container
|
|
75
|
+
let lo = 0;
|
|
76
|
+
let hi = ast.length - 1;
|
|
77
|
+
while (lo <= hi) {
|
|
78
|
+
const mid = (lo + hi) >> 1;
|
|
79
|
+
const item = ast[mid];
|
|
80
|
+
const r = item && item.range;
|
|
81
|
+
if (!r) {
|
|
82
|
+
// holes or range-less nodes: scan the remaining window linearly
|
|
83
|
+
for (let i = lo; i <= hi; i++) {
|
|
84
|
+
const enterResult = enterNode(ast[i]);
|
|
85
|
+
if (enterResult !== undefined) return enterResult;
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (r[0] > nr[0]) {
|
|
90
|
+
hi = mid - 1;
|
|
91
|
+
} else if (nr[0] >= r[1]) {
|
|
92
|
+
lo = mid + 1;
|
|
93
|
+
} else {
|
|
94
|
+
return r[1] >= nr[1] ? enterNode(item) : undefined;
|
|
95
|
+
}
|
|
71
96
|
}
|
|
72
97
|
} else if (ast && typeof ast === "object") {
|
|
73
98
|
const keys =
|
|
@@ -91,7 +116,34 @@ const getPathInAst = (ast, node) => {
|
|
|
91
116
|
}
|
|
92
117
|
};
|
|
93
118
|
|
|
119
|
+
/** @type {Map<string, string[]>} */
|
|
120
|
+
const splittedInfoCache = new Map();
|
|
121
|
+
|
|
94
122
|
/**
|
|
123
|
+
* Returns path segments of the cleaned extra info.
|
|
124
|
+
* @param {string} extraInfo extra info
|
|
125
|
+
* @returns {string[]} cleaned path segments
|
|
126
|
+
*/
|
|
127
|
+
const getSplittedInfo = (extraInfo) => {
|
|
128
|
+
let splittedInfo = splittedInfoCache.get(extraInfo);
|
|
129
|
+
if (splittedInfo === undefined) {
|
|
130
|
+
// bound the cache — extraInfo repeats for every renamed binding of a
|
|
131
|
+
// module, but distinct values grow with project size
|
|
132
|
+
if (splittedInfoCache.size >= 4096) splittedInfoCache.clear();
|
|
133
|
+
// Remove uncool stuff
|
|
134
|
+
splittedInfo = extraInfo
|
|
135
|
+
.replace(
|
|
136
|
+
/\.+\/|(?:\/index)?\.[a-zA-Z0-9]{1,4}(?:$|\s|\?)|\s*\+\s*\d+\s*modules/g,
|
|
137
|
+
""
|
|
138
|
+
)
|
|
139
|
+
.split("/");
|
|
140
|
+
splittedInfoCache.set(extraInfo, splittedInfo);
|
|
141
|
+
}
|
|
142
|
+
return splittedInfo;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Returns found new name.
|
|
95
147
|
* @param {string} oldName old name
|
|
96
148
|
* @param {UsedNames} usedNamed1 used named 1
|
|
97
149
|
* @param {UsedNames} usedNamed2 used named 2
|
|
@@ -108,15 +160,9 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
|
|
|
108
160
|
name = "namespaceObject";
|
|
109
161
|
}
|
|
110
162
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
""
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
const splittedInfo = extraInfo.split("/");
|
|
118
|
-
while (splittedInfo.length) {
|
|
119
|
-
name = splittedInfo.pop() + (name ? `_${name}` : "");
|
|
163
|
+
const splittedInfo = getSplittedInfo(extraInfo);
|
|
164
|
+
for (let i = splittedInfo.length - 1; i >= 0; i--) {
|
|
165
|
+
name = splittedInfo[i] + (name ? `_${name}` : "");
|
|
120
166
|
const nameIdent = Template.toIdentifier(name);
|
|
121
167
|
if (
|
|
122
168
|
!usedNamed1.has(nameIdent) &&
|
|
@@ -126,15 +172,18 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
|
|
|
126
172
|
}
|
|
127
173
|
}
|
|
128
174
|
|
|
175
|
+
// `_${i}` is identifier-safe, so escaping the base once is equivalent to
|
|
176
|
+
// escaping every candidate — avoids two regexes per collision
|
|
177
|
+
const nameIdent = Template.toIdentifier(name);
|
|
129
178
|
let i = 0;
|
|
130
|
-
let nameWithNumber =
|
|
179
|
+
let nameWithNumber = `${nameIdent}_${i}`;
|
|
131
180
|
while (
|
|
132
181
|
usedNamed1.has(nameWithNumber) ||
|
|
133
182
|
// eslint-disable-next-line no-unmodified-loop-condition
|
|
134
183
|
(usedNamed2 && usedNamed2.has(nameWithNumber))
|
|
135
184
|
) {
|
|
136
185
|
i++;
|
|
137
|
-
nameWithNumber =
|
|
186
|
+
nameWithNumber = `${nameIdent}_${i}`;
|
|
138
187
|
}
|
|
139
188
|
return nameWithNumber;
|
|
140
189
|
}
|
|
@@ -142,6 +191,7 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
|
|
|
142
191
|
/** @typedef {Set<Scope>} ScopeSet */
|
|
143
192
|
|
|
144
193
|
/**
|
|
194
|
+
* Adds scope symbols.
|
|
145
195
|
* @param {Scope | null} s scope
|
|
146
196
|
* @param {UsedNames} nameSet name set
|
|
147
197
|
* @param {ScopeSet} scopeSet1 scope set 1
|
|
@@ -199,23 +249,29 @@ const RESERVED_NAMES = new Set(
|
|
|
199
249
|
);
|
|
200
250
|
|
|
201
251
|
/** @typedef {{ usedNames: UsedNames, alreadyCheckedScopes: ScopeSet }} ScopeInfo */
|
|
202
|
-
/** @typedef {Map<string, ScopeInfo
|
|
252
|
+
/** @typedef {Map<string, Map<string, ScopeInfo>>} UsedNamesInScopeInfo */
|
|
203
253
|
|
|
204
254
|
/**
|
|
255
|
+
* Gets used names in scope info.
|
|
205
256
|
* @param {UsedNamesInScopeInfo} usedNamesInScopeInfo used names in scope info
|
|
206
257
|
* @param {string} module module identifier
|
|
207
258
|
* @param {string} id export id
|
|
208
259
|
* @returns {ScopeInfo} info
|
|
209
260
|
*/
|
|
210
261
|
const getUsedNamesInScopeInfo = (usedNamesInScopeInfo, module, id) => {
|
|
211
|
-
|
|
212
|
-
let
|
|
262
|
+
// nested maps avoid building a `${module}-${id}` key string per lookup
|
|
263
|
+
let byId = usedNamesInScopeInfo.get(module);
|
|
264
|
+
if (byId === undefined) {
|
|
265
|
+
byId = new Map();
|
|
266
|
+
usedNamesInScopeInfo.set(module, byId);
|
|
267
|
+
}
|
|
268
|
+
let info = byId.get(id);
|
|
213
269
|
if (info === undefined) {
|
|
214
270
|
info = {
|
|
215
271
|
usedNames: new Set(),
|
|
216
272
|
alreadyCheckedScopes: new Set()
|
|
217
273
|
};
|
|
218
|
-
|
|
274
|
+
byId.set(id, info);
|
|
219
275
|
}
|
|
220
276
|
return info;
|
|
221
277
|
};
|