@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/conventions.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
|
|
9
9
|
// Copy from css-loader
|
|
10
10
|
/**
|
|
11
|
+
* Preserve camel case.
|
|
11
12
|
* @param {string} string string
|
|
12
13
|
* @returns {string} result
|
|
13
14
|
*/
|
|
@@ -51,6 +52,7 @@ const preserveCamelCase = (string) => {
|
|
|
51
52
|
|
|
52
53
|
// Copy from css-loader
|
|
53
54
|
/**
|
|
55
|
+
* Returns result.
|
|
54
56
|
* @param {string} input input
|
|
55
57
|
* @returns {string} result
|
|
56
58
|
*/
|
|
@@ -79,6 +81,27 @@ module.exports.camelCase = (input) => {
|
|
|
79
81
|
};
|
|
80
82
|
|
|
81
83
|
/**
|
|
84
|
+
* Safely stringify an arbitrary value for an error message — falls back to
|
|
85
|
+
* `String(...)` when JSON.stringify would throw (BigInt, circular, etc.).
|
|
86
|
+
* @param {EXPECTED_ANY} value value to stringify
|
|
87
|
+
* @returns {string} stringified value
|
|
88
|
+
*/
|
|
89
|
+
const safeStringify = (value) => {
|
|
90
|
+
try {
|
|
91
|
+
const json = JSON.stringify(value);
|
|
92
|
+
if (json !== undefined) return json;
|
|
93
|
+
} catch (_err) {
|
|
94
|
+
// fall through to String fallback
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
return String(value);
|
|
98
|
+
} catch (_err) {
|
|
99
|
+
return "[value cannot be converted to string]";
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns results.
|
|
82
105
|
* @param {string} input input
|
|
83
106
|
* @param {CssGeneratorExportsConvention | undefined} convention convention
|
|
84
107
|
* @returns {string[]} results
|
|
@@ -87,7 +110,28 @@ module.exports.cssExportConvention = (input, convention) => {
|
|
|
87
110
|
/** @type {Set<string>} */
|
|
88
111
|
const set = new Set();
|
|
89
112
|
if (typeof convention === "function") {
|
|
90
|
-
|
|
113
|
+
const result = convention(input);
|
|
114
|
+
const validate = (/** @type {string} */ name) => {
|
|
115
|
+
if (typeof name !== "string" || name.length === 0) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
`exportsConvention function must return a non-empty string or an array of non-empty strings, got ${safeStringify(result)}`
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
if (Array.isArray(result)) {
|
|
122
|
+
if (result.length === 0) {
|
|
123
|
+
throw new Error(
|
|
124
|
+
"exportsConvention function returned an empty array; it must return at least one name"
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
for (const name of result) {
|
|
128
|
+
validate(name);
|
|
129
|
+
set.add(name);
|
|
130
|
+
}
|
|
131
|
+
} else {
|
|
132
|
+
validate(result);
|
|
133
|
+
set.add(result);
|
|
134
|
+
}
|
|
91
135
|
} else {
|
|
92
136
|
switch (convention) {
|
|
93
137
|
case "camel-case": {
|
|
@@ -119,6 +163,7 @@ module.exports.cssExportConvention = (input, convention) => {
|
|
|
119
163
|
|
|
120
164
|
// Copy from css-loader
|
|
121
165
|
/**
|
|
166
|
+
* Returns result.
|
|
122
167
|
* @param {string} input input
|
|
123
168
|
* @returns {string} result
|
|
124
169
|
*/
|
package/lib/util/createHash.js
CHANGED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const memoize = require("./memoize");
|
|
8
|
+
|
|
9
|
+
const getCompilation = memoize(() => require("../Compilation"));
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @template T
|
|
13
|
+
* @param {() => T} createHooks factory that returns a fresh hooks object
|
|
14
|
+
* @returns {(compilation: import("../Compilation")) => T} getter that returns (or creates) hooks for the compilation
|
|
15
|
+
*/
|
|
16
|
+
const createHooksRegistry = (createHooks) => {
|
|
17
|
+
/** @type {WeakMap<import("../Compilation"), T>} */
|
|
18
|
+
const map = new WeakMap();
|
|
19
|
+
return (compilation) => {
|
|
20
|
+
if (!(compilation instanceof getCompilation())) {
|
|
21
|
+
// a compilation from another webpack copy fails instanceof — match the class name
|
|
22
|
+
const candidate =
|
|
23
|
+
/** @type {{ constructor?: { name: string } } | null} */ (compilation);
|
|
24
|
+
if (
|
|
25
|
+
!candidate ||
|
|
26
|
+
!candidate.constructor ||
|
|
27
|
+
candidate.constructor.name !== "Compilation"
|
|
28
|
+
) {
|
|
29
|
+
throw new TypeError(
|
|
30
|
+
"The 'compilation' argument must be an instance of Compilation"
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
let hooks = map.get(compilation);
|
|
35
|
+
if (hooks === undefined) {
|
|
36
|
+
hooks = createHooks();
|
|
37
|
+
map.set(compilation, hooks);
|
|
38
|
+
}
|
|
39
|
+
return hooks;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
module.exports = createHooksRegistry;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Utilities for building V3 source-map `mappings` strings without pulling in a
|
|
9
|
+
* full source-map library. The shape of the input is intentionally minimal —
|
|
10
|
+
* one slot per generated line, each holding zero, one, or many segments — so
|
|
11
|
+
* call sites that have a "one mapping per line" structure (like the CSS-module
|
|
12
|
+
* exports emit in `lib/css/CssGenerator.js`) can build mappings directly,
|
|
13
|
+
* while richer call sites can pass arrays of segments.
|
|
14
|
+
*
|
|
15
|
+
* TODO move this encoder into `webpack-sources` and replace the body of this
|
|
16
|
+
* file with re-exports. The public shape (`encodeVLQ`, `encodeMappings(lines)`,
|
|
17
|
+
* `MappingSegment`, `LineMappings`) is intended to match what would land
|
|
18
|
+
* upstream so call sites don't have to change.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const VLQ_BASE64 =
|
|
22
|
+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Encode a signed integer as a base64 VLQ string per the source-map V3 spec.
|
|
26
|
+
* @param {number} value signed integer to encode
|
|
27
|
+
* @returns {string} base64 VLQ encoded value
|
|
28
|
+
*/
|
|
29
|
+
const encodeVLQ = (value) => {
|
|
30
|
+
let vlq = value < 0 ? (-value << 1) | 1 : value << 1;
|
|
31
|
+
let result = "";
|
|
32
|
+
do {
|
|
33
|
+
let digit = vlq & 0x1f;
|
|
34
|
+
vlq >>>= 5;
|
|
35
|
+
if (vlq > 0) digit |= 0x20;
|
|
36
|
+
result += VLQ_BASE64[digit];
|
|
37
|
+
} while (vlq > 0);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @typedef {object} MappingSegment
|
|
43
|
+
* @property {number=} generatedColumn 0-based generated column (defaults to 0)
|
|
44
|
+
* @property {number=} sourceIndex index into the surrounding source map's `sources` array; omit for a generated-only segment
|
|
45
|
+
* @property {number=} originalLine 0-based line in the original source (required when `sourceIndex` is set)
|
|
46
|
+
* @property {number=} originalColumn 0-based column in the original source (required when `sourceIndex` is set)
|
|
47
|
+
* @property {number=} nameIndex index into the surrounding source map's `names` array
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/** @typedef {null | MappingSegment | MappingSegment[]} LineMappings */
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Encode a V3 source-map `mappings` string from a per-generated-line
|
|
54
|
+
* description of segments.
|
|
55
|
+
*
|
|
56
|
+
* Each entry of `lines` describes the mappings for one generated line:
|
|
57
|
+
*
|
|
58
|
+
* - `null` (or `undefined`) — the line has no mappings.
|
|
59
|
+
* - a single `MappingSegment` — convenience for the common "one mapping at
|
|
60
|
+
* column 0" case.
|
|
61
|
+
* - `MappingSegment[]` — multiple segments on the same line.
|
|
62
|
+
*
|
|
63
|
+
* Lines are joined with `;`, segments within a line with `,`. All numeric
|
|
64
|
+
* fields are encoded as deltas relative to the previous emitted segment, per
|
|
65
|
+
* the V3 spec.
|
|
66
|
+
* @param {LineMappings[]} lines per-generated-line mapping segments
|
|
67
|
+
* @returns {string} VLQ-encoded V3 mappings string
|
|
68
|
+
*/
|
|
69
|
+
const encodeMappings = (lines) => {
|
|
70
|
+
let prevSourceIndex = 0;
|
|
71
|
+
let prevOriginalLine = 0;
|
|
72
|
+
let prevOriginalColumn = 0;
|
|
73
|
+
let prevNameIndex = 0;
|
|
74
|
+
|
|
75
|
+
const encodedLines = [];
|
|
76
|
+
|
|
77
|
+
for (const line of lines) {
|
|
78
|
+
if (line === null || line === undefined) {
|
|
79
|
+
encodedLines.push("");
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const segments = Array.isArray(line) ? line : [line];
|
|
84
|
+
let prevGeneratedColumn = 0;
|
|
85
|
+
const encodedSegments = [];
|
|
86
|
+
|
|
87
|
+
for (const segment of segments) {
|
|
88
|
+
const generatedColumn = segment.generatedColumn || 0;
|
|
89
|
+
let encoded = encodeVLQ(generatedColumn - prevGeneratedColumn);
|
|
90
|
+
prevGeneratedColumn = generatedColumn;
|
|
91
|
+
|
|
92
|
+
if (segment.sourceIndex !== undefined) {
|
|
93
|
+
const originalLine = /** @type {number} */ (segment.originalLine);
|
|
94
|
+
const originalColumn = /** @type {number} */ (segment.originalColumn);
|
|
95
|
+
encoded += encodeVLQ(segment.sourceIndex - prevSourceIndex);
|
|
96
|
+
encoded += encodeVLQ(originalLine - prevOriginalLine);
|
|
97
|
+
encoded += encodeVLQ(originalColumn - prevOriginalColumn);
|
|
98
|
+
prevSourceIndex = segment.sourceIndex;
|
|
99
|
+
prevOriginalLine = originalLine;
|
|
100
|
+
prevOriginalColumn = originalColumn;
|
|
101
|
+
|
|
102
|
+
if (segment.nameIndex !== undefined) {
|
|
103
|
+
encoded += encodeVLQ(segment.nameIndex - prevNameIndex);
|
|
104
|
+
prevNameIndex = segment.nameIndex;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
encodedSegments.push(encoded);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
encodedLines.push(encodedSegments.join(","));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return encodedLines.join(";");
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
module.exports.encodeMappings = encodeMappings;
|
|
118
|
+
module.exports.encodeVLQ = encodeVLQ;
|
package/lib/util/dataURL.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
const URIRegEx = /^data:([^;,]+)?((?:;[^;,]+)*?)(?:;(base64)?)?,(.*)$/i;
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
+
* Decodes the provided uri.
|
|
13
14
|
* @param {string} uri data URI
|
|
14
15
|
* @returns {Buffer | null} decoded data
|
|
15
16
|
*/
|
|
@@ -27,9 +28,9 @@ const decodeDataURI = (uri) => {
|
|
|
27
28
|
// CSS allows to use `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="stroke: rgb(223,224,225); stroke-width: 2px; fill: none; stroke-dasharray: 6px 3px" /></svg>`
|
|
28
29
|
// so we return original body if we can't `decodeURIComponent`
|
|
29
30
|
try {
|
|
30
|
-
return Buffer.from(decodeURIComponent(body), "
|
|
31
|
+
return Buffer.from(decodeURIComponent(body), "utf8");
|
|
31
32
|
} catch (_) {
|
|
32
|
-
return Buffer.from(body, "
|
|
33
|
+
return Buffer.from(body, "utf8");
|
|
33
34
|
}
|
|
34
35
|
};
|
|
35
36
|
|
package/lib/util/deprecation.js
CHANGED
|
@@ -11,16 +11,19 @@ const util = require("util");
|
|
|
11
11
|
const deprecationCache = new Map();
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
+
* Defines the fake hook marker type used by this module.
|
|
14
15
|
* @typedef {object} FakeHookMarker
|
|
15
16
|
* @property {true} _fakeHook it's a fake hook
|
|
16
17
|
*/
|
|
17
18
|
|
|
18
19
|
/**
|
|
20
|
+
* Defines the shared type used by this module.
|
|
19
21
|
* @template T
|
|
20
22
|
* @typedef {T & FakeHookMarker} FakeHook<T>
|
|
21
23
|
*/
|
|
22
24
|
|
|
23
25
|
/**
|
|
26
|
+
* Creates a deprecation.
|
|
24
27
|
* @param {string} message deprecation message
|
|
25
28
|
* @param {string} code deprecation code
|
|
26
29
|
* @returns {() => void} function to trigger deprecation
|
|
@@ -74,11 +77,13 @@ const DISABLED_METHODS = [
|
|
|
74
77
|
];
|
|
75
78
|
|
|
76
79
|
/**
|
|
80
|
+
* Defines the set with deprecated array methods type used by this module.
|
|
77
81
|
* @template T
|
|
78
82
|
* @typedef {Set<T> & { [Symbol.isConcatSpreadable]: boolean } & { push: (...items: T[]) => void, length?: number } & { [P in DISABLED_METHODS_NAMES]: () => void } & { [P in COPY_METHODS_NAMES]: P extends keyof Array<T> ? () => Pick<Array<T>, P> : never }} SetWithDeprecatedArrayMethods
|
|
79
83
|
*/
|
|
80
84
|
|
|
81
85
|
/**
|
|
86
|
+
* Processes the provided set.
|
|
82
87
|
* @template T
|
|
83
88
|
* @param {Set<T>} set new set
|
|
84
89
|
* @param {string} name property name
|
|
@@ -139,11 +144,13 @@ module.exports.arrayToSetDeprecation = (set, name) => {
|
|
|
139
144
|
};
|
|
140
145
|
}
|
|
141
146
|
/**
|
|
147
|
+
* Creates an index getter.
|
|
142
148
|
* @param {number} index index
|
|
143
149
|
* @returns {() => T | undefined} value
|
|
144
150
|
*/
|
|
145
151
|
const createIndexGetter = (index) => {
|
|
146
152
|
/**
|
|
153
|
+
* Returns the value at this location.
|
|
147
154
|
* @this {Set<T>} a Set
|
|
148
155
|
* @returns {T | undefined} the value at this location
|
|
149
156
|
*/
|
|
@@ -158,6 +165,7 @@ module.exports.arrayToSetDeprecation = (set, name) => {
|
|
|
158
165
|
return fn;
|
|
159
166
|
};
|
|
160
167
|
/**
|
|
168
|
+
* Define index getter.
|
|
161
169
|
* @param {number} index index
|
|
162
170
|
*/
|
|
163
171
|
const defineIndexGetter = (index) => {
|
|
@@ -192,6 +200,7 @@ module.exports.arrayToSetDeprecation = (set, name) => {
|
|
|
192
200
|
};
|
|
193
201
|
|
|
194
202
|
/**
|
|
203
|
+
* Returns } SetDeprecatedArray.
|
|
195
204
|
* @template T
|
|
196
205
|
* @param {string} name name
|
|
197
206
|
* @returns {{ new <T = EXPECTED_ANY>(values?: ReadonlyArray<T> | null): SetDeprecatedArray<T> }} SetDeprecatedArray
|
|
@@ -200,10 +209,12 @@ module.exports.createArrayToSetDeprecationSet = (name) => {
|
|
|
200
209
|
let initialized = false;
|
|
201
210
|
|
|
202
211
|
/**
|
|
212
|
+
* Represents SetDeprecatedArray.
|
|
203
213
|
* @template T
|
|
204
214
|
*/
|
|
205
215
|
class SetDeprecatedArray extends Set {
|
|
206
216
|
/**
|
|
217
|
+
* Creates an instance of SetDeprecatedArray.
|
|
207
218
|
* @param {ReadonlyArray<T> | null=} items items
|
|
208
219
|
*/
|
|
209
220
|
constructor(items) {
|
|
@@ -222,6 +233,7 @@ module.exports.createArrayToSetDeprecationSet = (name) => {
|
|
|
222
233
|
};
|
|
223
234
|
|
|
224
235
|
/**
|
|
236
|
+
* Returns fake hook which redirects.
|
|
225
237
|
* @template {object} T
|
|
226
238
|
* @param {T} fakeHook fake hook implementation
|
|
227
239
|
* @param {string=} message deprecation message (not deprecated when unset)
|
|
@@ -238,6 +250,7 @@ module.exports.createFakeHook = (fakeHook, message, code) => {
|
|
|
238
250
|
};
|
|
239
251
|
|
|
240
252
|
/**
|
|
253
|
+
* Deprecate all properties.
|
|
241
254
|
* @template T
|
|
242
255
|
* @param {T} obj object
|
|
243
256
|
* @param {string} message deprecation message
|
|
@@ -269,6 +282,7 @@ const deprecateAllProperties = (obj, message, code) => {
|
|
|
269
282
|
set: descriptor.writable
|
|
270
283
|
? util.deprecate(
|
|
271
284
|
/**
|
|
285
|
+
* Handles the callback logic for this hook.
|
|
272
286
|
* @template T
|
|
273
287
|
* @param {T} v value
|
|
274
288
|
* @returns {T} result
|
|
@@ -287,6 +301,7 @@ const deprecateAllProperties = (obj, message, code) => {
|
|
|
287
301
|
module.exports.deprecateAllProperties = deprecateAllProperties;
|
|
288
302
|
|
|
289
303
|
/**
|
|
304
|
+
* Returns frozen object with deprecation when modifying.
|
|
290
305
|
* @template {object} T
|
|
291
306
|
* @param {T} obj object
|
|
292
307
|
* @param {string} name property name
|
|
@@ -302,6 +317,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
|
|
|
302
317
|
new Proxy(obj, {
|
|
303
318
|
set: util.deprecate(
|
|
304
319
|
/**
|
|
320
|
+
* Handles the callback logic for this hook.
|
|
305
321
|
* @param {object} target target
|
|
306
322
|
* @param {string | symbol} property property
|
|
307
323
|
* @param {EXPECTED_ANY} value value
|
|
@@ -315,6 +331,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
|
|
|
315
331
|
),
|
|
316
332
|
defineProperty: util.deprecate(
|
|
317
333
|
/**
|
|
334
|
+
* Handles the define property callback for this hook.
|
|
318
335
|
* @param {object} target target
|
|
319
336
|
* @param {string | symbol} property property
|
|
320
337
|
* @param {PropertyDescriptor} descriptor descriptor
|
|
@@ -327,6 +344,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
|
|
|
327
344
|
),
|
|
328
345
|
deleteProperty: util.deprecate(
|
|
329
346
|
/**
|
|
347
|
+
* Handles the delete property callback for this hook.
|
|
330
348
|
* @param {object} target target
|
|
331
349
|
* @param {string | symbol} property property
|
|
332
350
|
* @returns {boolean} result
|
|
@@ -337,6 +355,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
|
|
|
337
355
|
),
|
|
338
356
|
setPrototypeOf: util.deprecate(
|
|
339
357
|
/**
|
|
358
|
+
* Updates prototype of using the provided target.
|
|
340
359
|
* @param {object} target target
|
|
341
360
|
* @param {EXPECTED_OBJECT | null} proto proto
|
|
342
361
|
* @returns {boolean} result
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
// 3.2% that 5 or more groups are invalidated
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
+
* Returns the similarity as number.
|
|
28
29
|
* @param {string} a key
|
|
29
30
|
* @param {string} b key
|
|
30
31
|
* @returns {number} the similarity as number
|
|
@@ -41,6 +42,7 @@ const similarity = (a, b) => {
|
|
|
41
42
|
};
|
|
42
43
|
|
|
43
44
|
/**
|
|
45
|
+
* Returns the common part and a single char for the difference.
|
|
44
46
|
* @param {string} a key
|
|
45
47
|
* @param {string} b key
|
|
46
48
|
* @param {Set<string>} usedNames set of already used names
|
|
@@ -73,48 +75,53 @@ const getName = (a, b, usedNames) => {
|
|
|
73
75
|
/** @typedef {Record<string, number>} Sizes */
|
|
74
76
|
|
|
75
77
|
/**
|
|
78
|
+
* Adds the provided total to this object.
|
|
76
79
|
* @param {Sizes} total total size
|
|
77
80
|
* @param {Sizes} size single size
|
|
78
81
|
* @returns {void}
|
|
79
82
|
*/
|
|
80
83
|
const addSizeTo = (total, size) => {
|
|
81
|
-
for (const key
|
|
84
|
+
for (const key in size) {
|
|
82
85
|
total[key] = (total[key] || 0) + size[key];
|
|
83
86
|
}
|
|
84
87
|
};
|
|
85
88
|
|
|
86
89
|
/**
|
|
90
|
+
* Subtract size from.
|
|
87
91
|
* @param {Sizes} total total size
|
|
88
92
|
* @param {Sizes} size single size
|
|
89
93
|
* @returns {void}
|
|
90
94
|
*/
|
|
91
95
|
const subtractSizeFrom = (total, size) => {
|
|
92
|
-
for (const key
|
|
96
|
+
for (const key in size) {
|
|
93
97
|
total[key] -= size[key];
|
|
94
98
|
}
|
|
95
99
|
};
|
|
96
100
|
|
|
97
101
|
/**
|
|
102
|
+
* Returns total size.
|
|
98
103
|
* @template T
|
|
99
|
-
* @param {
|
|
104
|
+
* @param {Node<T>[]} nodes some nodes
|
|
105
|
+
* @param {number=} start start index
|
|
100
106
|
* @returns {Sizes} total size
|
|
101
107
|
*/
|
|
102
|
-
const sumSize = (nodes) => {
|
|
108
|
+
const sumSize = (nodes, start) => {
|
|
103
109
|
/** @type {Sizes} */
|
|
104
110
|
const sum = Object.create(null);
|
|
105
|
-
for (
|
|
106
|
-
addSizeTo(sum,
|
|
111
|
+
for (let i = start || 0; i < nodes.length; i++) {
|
|
112
|
+
addSizeTo(sum, nodes[i].size);
|
|
107
113
|
}
|
|
108
114
|
return sum;
|
|
109
115
|
};
|
|
110
116
|
|
|
111
117
|
/**
|
|
118
|
+
* Checks whether this object is too big.
|
|
112
119
|
* @param {Sizes} size size
|
|
113
120
|
* @param {Sizes} maxSize minimum size
|
|
114
121
|
* @returns {boolean} true, when size is too big
|
|
115
122
|
*/
|
|
116
123
|
const isTooBig = (size, maxSize) => {
|
|
117
|
-
for (const key
|
|
124
|
+
for (const key in size) {
|
|
118
125
|
const s = size[key];
|
|
119
126
|
if (s === 0) continue;
|
|
120
127
|
const maxSizeValue = maxSize[key];
|
|
@@ -124,12 +131,13 @@ const isTooBig = (size, maxSize) => {
|
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
/**
|
|
134
|
+
* Checks whether this object is too small.
|
|
127
135
|
* @param {Sizes} size size
|
|
128
136
|
* @param {Sizes} minSize minimum size
|
|
129
137
|
* @returns {boolean} true, when size is too small
|
|
130
138
|
*/
|
|
131
139
|
const isTooSmall = (size, minSize) => {
|
|
132
|
-
for (const key
|
|
140
|
+
for (const key in size) {
|
|
133
141
|
const s = size[key];
|
|
134
142
|
if (s === 0) continue;
|
|
135
143
|
const minSizeValue = minSize[key];
|
|
@@ -141,6 +149,7 @@ const isTooSmall = (size, minSize) => {
|
|
|
141
149
|
/** @typedef {Set<string>} Types */
|
|
142
150
|
|
|
143
151
|
/**
|
|
152
|
+
* Gets too small types.
|
|
144
153
|
* @param {Sizes} size size
|
|
145
154
|
* @param {Sizes} minSize minimum size
|
|
146
155
|
* @returns {Types} set of types that are too small
|
|
@@ -148,7 +157,7 @@ const isTooSmall = (size, minSize) => {
|
|
|
148
157
|
const getTooSmallTypes = (size, minSize) => {
|
|
149
158
|
/** @type {Types} */
|
|
150
159
|
const types = new Set();
|
|
151
|
-
for (const key
|
|
160
|
+
for (const key in size) {
|
|
152
161
|
const s = size[key];
|
|
153
162
|
if (s === 0) continue;
|
|
154
163
|
const minSizeValue = minSize[key];
|
|
@@ -158,44 +167,50 @@ const getTooSmallTypes = (size, minSize) => {
|
|
|
158
167
|
};
|
|
159
168
|
|
|
160
169
|
/**
|
|
161
|
-
*
|
|
162
|
-
* @param {
|
|
170
|
+
* Gets number of matching size types.
|
|
171
|
+
* @param {Sizes} size size
|
|
163
172
|
* @param {Types} types types
|
|
164
173
|
* @returns {number} number of matching size types
|
|
165
174
|
*/
|
|
166
175
|
const getNumberOfMatchingSizeTypes = (size, types) => {
|
|
167
176
|
let i = 0;
|
|
168
|
-
for (const key
|
|
169
|
-
if (size[
|
|
177
|
+
for (const key in size) {
|
|
178
|
+
if (size[key] !== 0 && types.has(key)) i++;
|
|
170
179
|
}
|
|
171
180
|
return i;
|
|
172
181
|
};
|
|
173
182
|
|
|
174
183
|
/**
|
|
184
|
+
* Selective size sum.
|
|
175
185
|
* @param {Sizes} size size
|
|
176
186
|
* @param {Types} types types
|
|
177
187
|
* @returns {number} selective size sum
|
|
178
188
|
*/
|
|
179
189
|
const selectiveSizeSum = (size, types) => {
|
|
180
190
|
let sum = 0;
|
|
181
|
-
for (const key
|
|
191
|
+
for (const key in size) {
|
|
182
192
|
if (size[key] !== 0 && types.has(key)) sum += size[key];
|
|
183
193
|
}
|
|
184
194
|
return sum;
|
|
185
195
|
};
|
|
186
196
|
|
|
187
197
|
/**
|
|
198
|
+
* Represents the node runtime component.
|
|
188
199
|
* @template T
|
|
189
200
|
*/
|
|
190
201
|
class Node {
|
|
191
202
|
/**
|
|
203
|
+
* Creates an instance of Node.
|
|
192
204
|
* @param {T} item item
|
|
193
205
|
* @param {string} key key
|
|
194
206
|
* @param {Sizes} size size
|
|
195
207
|
*/
|
|
196
208
|
constructor(item, key, size) {
|
|
209
|
+
/** @type {T} */
|
|
197
210
|
this.item = item;
|
|
211
|
+
/** @type {string} */
|
|
198
212
|
this.key = key;
|
|
213
|
+
/** @type {Sizes} */
|
|
199
214
|
this.size = size;
|
|
200
215
|
}
|
|
201
216
|
}
|
|
@@ -203,23 +218,29 @@ class Node {
|
|
|
203
218
|
/** @typedef {number[]} Similarities */
|
|
204
219
|
|
|
205
220
|
/**
|
|
221
|
+
* Represents the group runtime component.
|
|
206
222
|
* @template T
|
|
207
223
|
*/
|
|
208
224
|
class Group {
|
|
209
225
|
/**
|
|
226
|
+
* Creates an instance of Group.
|
|
210
227
|
* @param {Node<T>[]} nodes nodes
|
|
211
228
|
* @param {Similarities | null} similarities similarities between the nodes (length = nodes.length - 1)
|
|
212
229
|
* @param {Sizes=} size size of the group
|
|
213
230
|
*/
|
|
214
231
|
constructor(nodes, similarities, size) {
|
|
232
|
+
/** @type {Node<T>[]} */
|
|
215
233
|
this.nodes = nodes;
|
|
234
|
+
/** @type {Similarities | null} */
|
|
216
235
|
this.similarities = similarities;
|
|
236
|
+
/** @type {Sizes} */
|
|
217
237
|
this.size = size || sumSize(nodes);
|
|
218
238
|
/** @type {string | undefined} */
|
|
219
239
|
this.key = undefined;
|
|
220
240
|
}
|
|
221
241
|
|
|
222
242
|
/**
|
|
243
|
+
* Returns removed nodes.
|
|
223
244
|
* @param {(node: Node<T>) => boolean} filter filter function
|
|
224
245
|
* @returns {Node<T>[] | undefined} removed nodes
|
|
225
246
|
*/
|
|
@@ -257,6 +278,7 @@ class Group {
|
|
|
257
278
|
}
|
|
258
279
|
|
|
259
280
|
/**
|
|
281
|
+
* Returns similarities.
|
|
260
282
|
* @template T
|
|
261
283
|
* @param {Iterable<Node<T>>} nodes nodes
|
|
262
284
|
* @returns {Similarities} similarities
|
|
@@ -277,6 +299,7 @@ const getSimilarities = (nodes) => {
|
|
|
277
299
|
};
|
|
278
300
|
|
|
279
301
|
/**
|
|
302
|
+
* Defines the shared type used by this module.
|
|
280
303
|
* @template T
|
|
281
304
|
* @typedef {object} GroupedItems<T>
|
|
282
305
|
* @property {string} key
|
|
@@ -285,6 +308,7 @@ const getSimilarities = (nodes) => {
|
|
|
285
308
|
*/
|
|
286
309
|
|
|
287
310
|
/**
|
|
311
|
+
* Defines the options type used by this module.
|
|
288
312
|
* @template T
|
|
289
313
|
* @typedef {object} Options
|
|
290
314
|
* @property {Sizes} maxSize maximum size of a group
|
|
@@ -295,6 +319,7 @@ const getSimilarities = (nodes) => {
|
|
|
295
319
|
*/
|
|
296
320
|
|
|
297
321
|
/**
|
|
322
|
+
* Returns grouped items.
|
|
298
323
|
* @template T
|
|
299
324
|
* @param {Options<T>} options options object
|
|
300
325
|
* @returns {GroupedItems<T>[]} grouped items
|
|
@@ -332,6 +357,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
|
|
|
332
357
|
const initialGroup = new Group(initialNodes, getSimilarities(initialNodes));
|
|
333
358
|
|
|
334
359
|
/**
|
|
360
|
+
* Removes problematic nodes.
|
|
335
361
|
* @param {Group<T>} group group
|
|
336
362
|
* @param {Sizes} consideredSize size of the group to consider
|
|
337
363
|
* @returns {boolean} true, if the group was modified
|
|
@@ -351,9 +377,12 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
|
|
|
351
377
|
);
|
|
352
378
|
if (possibleResultGroups.length > 0) {
|
|
353
379
|
const bestGroup = possibleResultGroups.reduce((min, group) => {
|
|
354
|
-
const minMatches = getNumberOfMatchingSizeTypes(
|
|
380
|
+
const minMatches = getNumberOfMatchingSizeTypes(
|
|
381
|
+
min.size,
|
|
382
|
+
problemTypes
|
|
383
|
+
);
|
|
355
384
|
const groupMatches = getNumberOfMatchingSizeTypes(
|
|
356
|
-
group,
|
|
385
|
+
group.size,
|
|
357
386
|
problemTypes
|
|
358
387
|
);
|
|
359
388
|
if (minMatches !== groupMatches) {
|
|
@@ -463,7 +492,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
|
|
|
463
492
|
let best = -1;
|
|
464
493
|
let bestSimilarity = Infinity;
|
|
465
494
|
let pos = left;
|
|
466
|
-
const rightSize = sumSize(group.nodes
|
|
495
|
+
const rightSize = sumSize(group.nodes, pos);
|
|
467
496
|
|
|
468
497
|
// pos v v right
|
|
469
498
|
// [ O O O ] O O O [ O O O ]
|
|
@@ -16,6 +16,7 @@ const { isAbsolute, join } = require("./fs");
|
|
|
16
16
|
/** @typedef {(resourcePath: string) => Promise<StringOrBuffer>} ReadResource */
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Defines the source mapping url type used by this module.
|
|
19
20
|
* @typedef {object} SourceMappingURL
|
|
20
21
|
* @property {string} sourceMappingURL
|
|
21
22
|
* @property {string} replacementString
|
|
@@ -91,7 +92,7 @@ function getAbsolutePath(context, request, sourceRoot) {
|
|
|
91
92
|
* @returns {boolean} true if value is a URL
|
|
92
93
|
*/
|
|
93
94
|
function isURL(value) {
|
|
94
|
-
return validProtocolPattern.test(value) && !
|
|
95
|
+
return validProtocolPattern.test(value) && !isAbsolute(value);
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
/**
|