@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
|
@@ -22,6 +22,7 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
22
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
+
* Defines the sync hook type used by this module.
|
|
25
26
|
* @template T
|
|
26
27
|
* @typedef {import("tapable").SyncHook<T>} SyncHook
|
|
27
28
|
*/
|
|
@@ -30,15 +31,19 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
30
31
|
|
|
31
32
|
class CacheEntry {
|
|
32
33
|
/**
|
|
34
|
+
* Creates an instance of CacheEntry.
|
|
33
35
|
* @param {ResolveRequest} result result
|
|
34
36
|
* @param {Snapshot} snapshot snapshot
|
|
35
37
|
*/
|
|
36
38
|
constructor(result, snapshot) {
|
|
39
|
+
/** @type {ResolveRequest} */
|
|
37
40
|
this.result = result;
|
|
41
|
+
/** @type {Snapshot} */
|
|
38
42
|
this.snapshot = snapshot;
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
/**
|
|
46
|
+
* Serializes this instance into the provided serializer context.
|
|
42
47
|
* @param {ObjectSerializerContext} context context
|
|
43
48
|
*/
|
|
44
49
|
serialize({ write }) {
|
|
@@ -47,6 +52,7 @@ class CacheEntry {
|
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
/**
|
|
55
|
+
* Restores this instance from the provided deserializer context.
|
|
50
56
|
* @param {ObjectDeserializerContext} context context
|
|
51
57
|
*/
|
|
52
58
|
deserialize({ read }) {
|
|
@@ -58,6 +64,7 @@ class CacheEntry {
|
|
|
58
64
|
makeSerializable(CacheEntry, "webpack/lib/cache/ResolverCachePlugin");
|
|
59
65
|
|
|
60
66
|
/**
|
|
67
|
+
* Adds the provided set to the cache entry.
|
|
61
68
|
* @template T
|
|
62
69
|
* @param {Set<T> | LazySet<T>} set set to add items to
|
|
63
70
|
* @param {Set<T> | LazySet<T> | Iterable<T>} otherSet set to add items from
|
|
@@ -74,6 +81,7 @@ const addAllToSet = (set, otherSet) => {
|
|
|
74
81
|
};
|
|
75
82
|
|
|
76
83
|
/**
|
|
84
|
+
* Returns stringified version.
|
|
77
85
|
* @template {object} T
|
|
78
86
|
* @param {T} object an object
|
|
79
87
|
* @param {boolean} excludeContext if true, context is not included in string
|
|
@@ -98,7 +106,7 @@ const PLUGIN_NAME = "ResolverCachePlugin";
|
|
|
98
106
|
|
|
99
107
|
class ResolverCachePlugin {
|
|
100
108
|
/**
|
|
101
|
-
*
|
|
109
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
102
110
|
* @param {Compiler} compiler the compiler instance
|
|
103
111
|
* @returns {void}
|
|
104
112
|
*/
|
|
@@ -135,6 +143,7 @@ class ResolverCachePlugin {
|
|
|
135
143
|
/** @typedef {ResolveRequest & { _ResolverCachePluginCacheMiss: true }} ResolveRequestWithCacheMiss */
|
|
136
144
|
|
|
137
145
|
/**
|
|
146
|
+
* Processes the provided item cache.
|
|
138
147
|
* @param {ItemCacheFacade} itemCache cache
|
|
139
148
|
* @param {Resolver} resolver the resolver
|
|
140
149
|
* @param {ResolveContext} resolveContext context for resolving meta info
|
|
@@ -175,6 +184,7 @@ class ResolverCachePlugin {
|
|
|
175
184
|
(yieldResult).push(obj);
|
|
176
185
|
}
|
|
177
186
|
/**
|
|
187
|
+
* Processes the provided key.
|
|
178
188
|
* @param {"fileDependencies" | "contextDependencies" | "missingDependencies"} key key
|
|
179
189
|
*/
|
|
180
190
|
const propagate = (key) => {
|
|
@@ -375,6 +385,7 @@ class ResolverCachePlugin {
|
|
|
375
385
|
}
|
|
376
386
|
};
|
|
377
387
|
/**
|
|
388
|
+
* Process cache result.
|
|
378
389
|
* @param {(Error | null)=} err error if any
|
|
379
390
|
* @param {(CacheEntry | null)=} cacheEntry cache entry
|
|
380
391
|
* @returns {void}
|
|
@@ -13,17 +13,19 @@ const createHash = require("../util/createHash");
|
|
|
13
13
|
/** @typedef {import("../util/Hash").HashFunction} HashFunction */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
+
* Represents the lazy hashed etag runtime component.
|
|
16
17
|
* @typedef {object} HashableObject
|
|
17
18
|
* @property {(hash: Hash) => void} updateHash
|
|
18
19
|
*/
|
|
19
20
|
|
|
20
21
|
class LazyHashedEtag {
|
|
21
22
|
/**
|
|
23
|
+
* Creates an instance of LazyHashedEtag.
|
|
22
24
|
* @param {HashableObject} obj object with updateHash method
|
|
23
25
|
* @param {HashFunction} hashFunction the hash function to use
|
|
24
26
|
*/
|
|
25
27
|
constructor(obj, hashFunction = DEFAULTS.HASH_FUNCTION) {
|
|
26
|
-
/** @type {HashableObject} */
|
|
28
|
+
/** @type {HashableObject | undefined} */
|
|
27
29
|
this._obj = obj;
|
|
28
30
|
/** @type {undefined | string} */
|
|
29
31
|
this._hash = undefined;
|
|
@@ -32,13 +34,21 @@ class LazyHashedEtag {
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
/**
|
|
37
|
+
* Returns a string representation.
|
|
35
38
|
* @returns {string} hash of object
|
|
36
39
|
*/
|
|
37
40
|
toString() {
|
|
38
41
|
if (this._hash === undefined) {
|
|
39
42
|
const hash = createHash(this._hashFunction);
|
|
40
|
-
|
|
43
|
+
/** @type {HashableObject} */
|
|
44
|
+
(this._obj).updateHash(hash);
|
|
41
45
|
this._hash = hash.digest("base64");
|
|
46
|
+
// Drop the captured object once the hash is memoized. The hash is
|
|
47
|
+
// never reset, so we never need `_obj` again — and many callers
|
|
48
|
+
// (e.g. `SourceMapDevToolPlugin`, `RealContentHashPlugin`) capture
|
|
49
|
+
// a heavy `CachedSource` here that would otherwise stay reachable
|
|
50
|
+
// through this etag for the lifetime of the compilation cache.
|
|
51
|
+
this._obj = undefined;
|
|
42
52
|
}
|
|
43
53
|
return this._hash;
|
|
44
54
|
}
|
|
@@ -53,6 +63,7 @@ const mapStrings = new Map();
|
|
|
53
63
|
const mapObjects = new WeakMap();
|
|
54
64
|
|
|
55
65
|
/**
|
|
66
|
+
* Returns etag.
|
|
56
67
|
* @param {HashableObject} obj object with updateHash method
|
|
57
68
|
* @param {HashFunction=} hashFunction the hash function to use
|
|
58
69
|
* @returns {LazyHashedEtag} etag
|
package/lib/cache/mergeEtags.js
CHANGED
|
@@ -9,11 +9,14 @@
|
|
|
9
9
|
|
|
10
10
|
class MergedEtag {
|
|
11
11
|
/**
|
|
12
|
+
* Creates an instance of MergedEtag.
|
|
12
13
|
* @param {Etag} a first
|
|
13
14
|
* @param {Etag} b second
|
|
14
15
|
*/
|
|
15
16
|
constructor(a, b) {
|
|
17
|
+
/** @type {Etag} */
|
|
16
18
|
this.a = a;
|
|
19
|
+
/** @type {Etag} */
|
|
17
20
|
this.b = b;
|
|
18
21
|
}
|
|
19
22
|
|
|
@@ -28,6 +31,7 @@ const dualObjectMap = new WeakMap();
|
|
|
28
31
|
const objectStringMap = new WeakMap();
|
|
29
32
|
|
|
30
33
|
/**
|
|
34
|
+
* Merges the provided values into a single result.
|
|
31
35
|
* @param {Etag} a first
|
|
32
36
|
* @param {Etag} b second
|
|
33
37
|
* @returns {string | MergedEtag} result
|
package/lib/cli.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
const path = require("path");
|
|
9
9
|
const tty = require("tty");
|
|
10
|
-
const webpackSchema =
|
|
10
|
+
const webpackSchema =
|
|
11
|
+
/** @type {EXPECTED_ANY} */
|
|
12
|
+
(require("../schemas/WebpackOptions.json"));
|
|
11
13
|
|
|
12
14
|
/** @typedef {import("json-schema").JSONSchema4} JSONSchema4 */
|
|
13
15
|
/** @typedef {import("json-schema").JSONSchema6} JSONSchema6 */
|
|
@@ -15,18 +17,20 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
|
|
|
15
17
|
/** @typedef {JSONSchema4 | JSONSchema6 | JSONSchema7} JSONSchema */
|
|
16
18
|
/** @typedef {JSONSchema & { absolutePath: boolean, instanceof: string, cli: { helper?: boolean, exclude?: boolean, description?: string, negatedDescription?: string, resetDescription?: string } }} Schema */
|
|
17
19
|
|
|
18
|
-
// TODO add originPath to PathItem for better errors
|
|
19
20
|
/**
|
|
21
|
+
* Defines the path item type used by this module.
|
|
20
22
|
* @typedef {object} PathItem
|
|
21
23
|
* @property {Schema} schema the part of the schema
|
|
22
24
|
* @property {string} path the path in the config
|
|
25
|
+
* @property {string} segment the JSON pointer segment of this schema part (absolute when starting with "#")
|
|
23
26
|
*/
|
|
24
27
|
|
|
25
|
-
/** @typedef {"unknown-argument" | "unexpected-non-array-in-path" | "unexpected-non-object-in-path" | "multiple-values-unexpected" | "invalid-value"} ProblemType */
|
|
28
|
+
/** @typedef {"unknown-argument" | "unexpected-non-array-in-path" | "unexpected-non-object-in-path" | "prototype-pollution-in-path" | "multiple-values-unexpected" | "invalid-value"} ProblemType */
|
|
26
29
|
|
|
27
30
|
/** @typedef {string | number | boolean | RegExp} Value */
|
|
28
31
|
|
|
29
32
|
/**
|
|
33
|
+
* Defines the problem type used by this module.
|
|
30
34
|
* @typedef {object} Problem
|
|
31
35
|
* @property {ProblemType} type
|
|
32
36
|
* @property {string} path
|
|
@@ -37,6 +41,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
|
|
|
37
41
|
*/
|
|
38
42
|
|
|
39
43
|
/**
|
|
44
|
+
* Defines the local problem type used by this module.
|
|
40
45
|
* @typedef {object} LocalProblem
|
|
41
46
|
* @property {ProblemType} type
|
|
42
47
|
* @property {string} path
|
|
@@ -48,6 +53,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
|
|
|
48
53
|
/** @typedef {string | number | boolean | EnumValueObject | EnumValueArray | null} EnumValue */
|
|
49
54
|
|
|
50
55
|
/**
|
|
56
|
+
* Defines the argument config type used by this module.
|
|
51
57
|
* @typedef {object} ArgumentConfig
|
|
52
58
|
* @property {string=} description
|
|
53
59
|
* @property {string=} negatedDescription
|
|
@@ -60,6 +66,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
|
|
|
60
66
|
/** @typedef {"string" | "number" | "boolean"} SimpleType */
|
|
61
67
|
|
|
62
68
|
/**
|
|
69
|
+
* Defines the argument type used by this module.
|
|
63
70
|
* @typedef {object} Argument
|
|
64
71
|
* @property {string | undefined} description
|
|
65
72
|
* @property {SimpleType} simpleType
|
|
@@ -72,6 +79,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
|
|
|
72
79
|
/** @typedef {Record<string, EXPECTED_ANY>} ObjectConfiguration */
|
|
73
80
|
|
|
74
81
|
/**
|
|
82
|
+
* Returns object of arguments.
|
|
75
83
|
* @param {Schema=} schema a json schema to create arguments for (by default webpack schema is used)
|
|
76
84
|
* @returns {Flags} object of arguments
|
|
77
85
|
*/
|
|
@@ -80,6 +88,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
80
88
|
const flags = {};
|
|
81
89
|
|
|
82
90
|
/**
|
|
91
|
+
* Path to argument name.
|
|
83
92
|
* @param {string} input input
|
|
84
93
|
* @returns {string} result
|
|
85
94
|
*/
|
|
@@ -95,6 +104,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
95
104
|
.toLowerCase();
|
|
96
105
|
|
|
97
106
|
/**
|
|
107
|
+
* Returns schema part.
|
|
98
108
|
* @param {string} path path
|
|
99
109
|
* @returns {Schema} schema part
|
|
100
110
|
*/
|
|
@@ -117,6 +127,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
117
127
|
};
|
|
118
128
|
|
|
119
129
|
/**
|
|
130
|
+
* Returns description.
|
|
120
131
|
* @param {PathItem[]} path path in the schema
|
|
121
132
|
* @returns {string | undefined} description
|
|
122
133
|
*/
|
|
@@ -131,6 +142,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
131
142
|
};
|
|
132
143
|
|
|
133
144
|
/**
|
|
145
|
+
* Gets negated description.
|
|
134
146
|
* @param {PathItem[]} path path in the schema
|
|
135
147
|
* @returns {string | undefined} negative description
|
|
136
148
|
*/
|
|
@@ -144,6 +156,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
144
156
|
};
|
|
145
157
|
|
|
146
158
|
/**
|
|
159
|
+
* Gets reset description.
|
|
147
160
|
* @param {PathItem[]} path path in the schema
|
|
148
161
|
* @returns {string | undefined} reset description
|
|
149
162
|
*/
|
|
@@ -157,6 +170,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
157
170
|
};
|
|
158
171
|
|
|
159
172
|
/**
|
|
173
|
+
* Schema to argument config.
|
|
160
174
|
* @param {Schema} schemaPart schema
|
|
161
175
|
* @returns {Pick<ArgumentConfig, "type" | "values"> | undefined} partial argument config
|
|
162
176
|
*/
|
|
@@ -167,6 +181,12 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
167
181
|
values: schemaPart.enum
|
|
168
182
|
};
|
|
169
183
|
}
|
|
184
|
+
if (schemaPart.const !== undefined) {
|
|
185
|
+
return {
|
|
186
|
+
type: "enum",
|
|
187
|
+
values: [schemaPart.const]
|
|
188
|
+
};
|
|
189
|
+
}
|
|
170
190
|
switch (schemaPart.type) {
|
|
171
191
|
case "number":
|
|
172
192
|
return {
|
|
@@ -190,6 +210,7 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
190
210
|
};
|
|
191
211
|
|
|
192
212
|
/**
|
|
213
|
+
* Adds the provided path to this object.
|
|
193
214
|
* @param {PathItem[]} path path in the schema
|
|
194
215
|
* @returns {void}
|
|
195
216
|
*/
|
|
@@ -219,6 +240,21 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
219
240
|
};
|
|
220
241
|
|
|
221
242
|
/**
|
|
243
|
+
* Joins the per-item segments into a JSON pointer (built only when needed).
|
|
244
|
+
* @param {PathItem[]} path full path in schema (deepest item first)
|
|
245
|
+
* @returns {string} JSON pointer to the deepest schema part
|
|
246
|
+
*/
|
|
247
|
+
const getOriginPath = (path) => {
|
|
248
|
+
let origin = "";
|
|
249
|
+
for (let i = path.length - 1; i >= 0; i--) {
|
|
250
|
+
const { segment } = path[i];
|
|
251
|
+
origin = segment[0] === "#" ? segment : origin + segment;
|
|
252
|
+
}
|
|
253
|
+
return origin;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Adds the provided path to this object.
|
|
222
258
|
* @param {PathItem[]} path full path in schema
|
|
223
259
|
* @param {boolean} multiple inside of an array
|
|
224
260
|
* @returns {number} number of arguments added
|
|
@@ -267,7 +303,11 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
267
303
|
) {
|
|
268
304
|
if (multiple) {
|
|
269
305
|
throw new Error(
|
|
270
|
-
`Conflicting schema for ${path[0].path}
|
|
306
|
+
`Conflicting schema for ${path[0].path} (${getOriginPath(
|
|
307
|
+
path
|
|
308
|
+
)}) with ${
|
|
309
|
+
argConfig.type
|
|
310
|
+
} type (array type must be before single item type)`
|
|
271
311
|
);
|
|
272
312
|
}
|
|
273
313
|
return 0;
|
|
@@ -278,17 +318,25 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
278
318
|
return 1;
|
|
279
319
|
};
|
|
280
320
|
|
|
281
|
-
// TODO support `not`
|
|
282
|
-
// TODO support `const`, but we don't use it on our schema
|
|
321
|
+
// TODO support `not`
|
|
283
322
|
/**
|
|
323
|
+
* Returns added arguments.
|
|
284
324
|
* @param {Schema} schemaPart the current schema
|
|
285
|
-
* @param {string} schemaPath the current path in the
|
|
325
|
+
* @param {string} schemaPath the current path in the config
|
|
286
326
|
* @param {PathItem[]} path all previous visited schemaParts
|
|
287
327
|
* @param {string | null} inArray if inside of an array, the path to the array
|
|
328
|
+
* @param {string} segment the JSON pointer segment of the current schema
|
|
288
329
|
* @returns {number} added arguments
|
|
289
330
|
*/
|
|
290
|
-
const traverse = (
|
|
331
|
+
const traverse = (
|
|
332
|
+
schemaPart,
|
|
333
|
+
schemaPath = "",
|
|
334
|
+
path = [],
|
|
335
|
+
inArray = null,
|
|
336
|
+
segment = "#"
|
|
337
|
+
) => {
|
|
291
338
|
while (schemaPart.$ref) {
|
|
339
|
+
segment = schemaPart.$ref;
|
|
292
340
|
schemaPart = getSchemaPart(schemaPart.$ref);
|
|
293
341
|
}
|
|
294
342
|
|
|
@@ -303,12 +351,33 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
303
351
|
if (schemaPart.cli && schemaPart.cli.exclude) return 0;
|
|
304
352
|
|
|
305
353
|
/** @type {PathItem[]} */
|
|
306
|
-
const fullPath = [
|
|
354
|
+
const fullPath = [
|
|
355
|
+
{ schema: schemaPart, path: schemaPath, segment },
|
|
356
|
+
...path
|
|
357
|
+
];
|
|
307
358
|
|
|
308
359
|
let addedArguments = 0;
|
|
309
360
|
|
|
310
361
|
addedArguments += addFlag(fullPath, Boolean(inArray));
|
|
311
362
|
|
|
363
|
+
// Collect flags from both branches of a conditional schema.
|
|
364
|
+
const conditional = /** @type {JSONSchema7} */ (schemaPart);
|
|
365
|
+
if (conditional.if) {
|
|
366
|
+
for (const key of /** @type {const} */ (["if", "then", "else"])) {
|
|
367
|
+
const subSchema = conditional[key];
|
|
368
|
+
if (subSchema && typeof subSchema === "object") {
|
|
369
|
+
addedArguments += traverse(
|
|
370
|
+
/** @type {Schema} */
|
|
371
|
+
(subSchema),
|
|
372
|
+
schemaPath,
|
|
373
|
+
fullPath,
|
|
374
|
+
inArray,
|
|
375
|
+
`/${key}`
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
312
381
|
if (schemaPart.type === "object") {
|
|
313
382
|
if (schemaPart.properties) {
|
|
314
383
|
for (const property of Object.keys(schemaPart.properties)) {
|
|
@@ -317,7 +386,8 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
317
386
|
(schemaPart.properties[property]),
|
|
318
387
|
schemaPath ? `${schemaPath}.${property}` : property,
|
|
319
388
|
fullPath,
|
|
320
|
-
inArray
|
|
389
|
+
inArray,
|
|
390
|
+
`/properties/${property}`
|
|
321
391
|
);
|
|
322
392
|
}
|
|
323
393
|
}
|
|
@@ -337,7 +407,8 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
337
407
|
(item),
|
|
338
408
|
`${schemaPath}.${i}`,
|
|
339
409
|
fullPath,
|
|
340
|
-
schemaPath
|
|
410
|
+
schemaPath,
|
|
411
|
+
`/items/${i}`
|
|
341
412
|
);
|
|
342
413
|
}
|
|
343
414
|
|
|
@@ -349,7 +420,8 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
349
420
|
(schemaPart.items),
|
|
350
421
|
`${schemaPath}[]`,
|
|
351
422
|
fullPath,
|
|
352
|
-
schemaPath
|
|
423
|
+
schemaPath,
|
|
424
|
+
"/items"
|
|
353
425
|
);
|
|
354
426
|
|
|
355
427
|
if (addedArguments > 0) {
|
|
@@ -360,10 +432,16 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
360
432
|
return addedArguments;
|
|
361
433
|
}
|
|
362
434
|
|
|
363
|
-
const
|
|
435
|
+
const ofKey = schemaPart.oneOf
|
|
436
|
+
? "oneOf"
|
|
437
|
+
: schemaPart.anyOf
|
|
438
|
+
? "anyOf"
|
|
439
|
+
: schemaPart.allOf
|
|
440
|
+
? "allOf"
|
|
441
|
+
: undefined;
|
|
364
442
|
|
|
365
|
-
if (
|
|
366
|
-
const items =
|
|
443
|
+
if (ofKey) {
|
|
444
|
+
const items = /** @type {Schema[]} */ (schemaPart[ofKey]);
|
|
367
445
|
|
|
368
446
|
for (let i = 0; i < items.length; i++) {
|
|
369
447
|
addedArguments += traverse(
|
|
@@ -371,7 +449,8 @@ const getArguments = (schema = webpackSchema) => {
|
|
|
371
449
|
(items[i]),
|
|
372
450
|
schemaPath,
|
|
373
451
|
fullPath,
|
|
374
|
-
inArray
|
|
452
|
+
inArray,
|
|
453
|
+
`/${ofKey}/${i}`
|
|
375
454
|
);
|
|
376
455
|
}
|
|
377
456
|
|
|
@@ -433,6 +512,15 @@ const cliAddedItems = new WeakMap();
|
|
|
433
512
|
/** @typedef {string | number} Property */
|
|
434
513
|
|
|
435
514
|
/**
|
|
515
|
+
* Whether a path segment would walk into the prototype chain.
|
|
516
|
+
* @param {string} name path segment
|
|
517
|
+
* @returns {boolean} true when the segment is unsafe to write through
|
|
518
|
+
*/
|
|
519
|
+
const isUnsafeKey = (name) =>
|
|
520
|
+
name === "__proto__" || name === "constructor" || name === "prototype";
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Gets object and property.
|
|
436
524
|
* @param {ObjectConfiguration} config configuration
|
|
437
525
|
* @param {string} schemaPath path in the config
|
|
438
526
|
* @param {number | undefined} index index of value when multiple values are provided, otherwise undefined
|
|
@@ -447,6 +535,14 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
|
|
|
447
535
|
for (const part of parts) {
|
|
448
536
|
const isArray = part.endsWith("[]");
|
|
449
537
|
const name = isArray ? part.slice(0, -2) : part;
|
|
538
|
+
if (isUnsafeKey(name)) {
|
|
539
|
+
return {
|
|
540
|
+
problem: {
|
|
541
|
+
type: "prototype-pollution-in-path",
|
|
542
|
+
path: parts.slice(0, i).join(".")
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
}
|
|
450
546
|
let value = current[name];
|
|
451
547
|
if (isArray) {
|
|
452
548
|
if (value === undefined) {
|
|
@@ -493,6 +589,14 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
|
|
|
493
589
|
current = value;
|
|
494
590
|
i++;
|
|
495
591
|
}
|
|
592
|
+
if (isUnsafeKey(property.endsWith("[]") ? property.slice(0, -2) : property)) {
|
|
593
|
+
return {
|
|
594
|
+
problem: {
|
|
595
|
+
type: "prototype-pollution-in-path",
|
|
596
|
+
path: parts.join(".")
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
}
|
|
496
600
|
const value = current[property];
|
|
497
601
|
if (property.endsWith("[]")) {
|
|
498
602
|
const name = property.slice(0, -2);
|
|
@@ -533,6 +637,7 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
|
|
|
533
637
|
};
|
|
534
638
|
|
|
535
639
|
/**
|
|
640
|
+
* Updates value using the provided config.
|
|
536
641
|
* @param {ObjectConfiguration} config configuration
|
|
537
642
|
* @param {string} schemaPath path in the config
|
|
538
643
|
* @param {ParsedValue} value parsed value
|
|
@@ -552,6 +657,7 @@ const setValue = (config, schemaPath, value, index) => {
|
|
|
552
657
|
};
|
|
553
658
|
|
|
554
659
|
/**
|
|
660
|
+
* Process argument config.
|
|
555
661
|
* @param {ArgumentConfig} argConfig processing instructions
|
|
556
662
|
* @param {ObjectConfiguration} config configuration
|
|
557
663
|
* @param {Value} value the value
|
|
@@ -579,6 +685,7 @@ const processArgumentConfig = (argConfig, config, value, index) => {
|
|
|
579
685
|
};
|
|
580
686
|
|
|
581
687
|
/**
|
|
688
|
+
* Gets expected value.
|
|
582
689
|
* @param {ArgumentConfig} argConfig processing instructions
|
|
583
690
|
* @returns {string | undefined} expected message
|
|
584
691
|
*/
|
|
@@ -606,6 +713,7 @@ const getExpectedValue = (argConfig) => {
|
|
|
606
713
|
const DECIMAL_NUMBER_REGEXP = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;
|
|
607
714
|
|
|
608
715
|
/**
|
|
716
|
+
* Parses value for argument config.
|
|
609
717
|
* @param {ArgumentConfig} argConfig processing instructions
|
|
610
718
|
* @param {Value} value the value
|
|
611
719
|
* @returns {ParsedValue | undefined} parsed value
|
|
@@ -665,6 +773,7 @@ const parseValueForArgumentConfig = (argConfig, value) => {
|
|
|
665
773
|
/** @typedef {Record<string, Value[]>} Values */
|
|
666
774
|
|
|
667
775
|
/**
|
|
776
|
+
* Processes the provided arg.
|
|
668
777
|
* @param {Flags} args object of arguments
|
|
669
778
|
* @param {ObjectConfiguration} config configuration
|
|
670
779
|
* @param {Values} values object with values
|
|
@@ -684,6 +793,7 @@ const processArguments = (args, config, values) => {
|
|
|
684
793
|
continue;
|
|
685
794
|
}
|
|
686
795
|
/**
|
|
796
|
+
* Processes the provided value.
|
|
687
797
|
* @param {Value} value value
|
|
688
798
|
* @param {number | undefined} i index
|
|
689
799
|
*/
|
|
@@ -718,21 +828,26 @@ const processArguments = (args, config, values) => {
|
|
|
718
828
|
};
|
|
719
829
|
|
|
720
830
|
/**
|
|
831
|
+
* Checks whether this object is color supported.
|
|
721
832
|
* @returns {boolean} true when colors supported, otherwise false
|
|
722
833
|
*/
|
|
723
834
|
const isColorSupported = () => {
|
|
724
835
|
const { env = {}, argv = [], platform = "" } = process;
|
|
725
836
|
|
|
726
|
-
|
|
727
|
-
|
|
837
|
+
// Read values instead of using `in`: Deno's and Bun's `process.env` honor
|
|
838
|
+
// property access but not the `in`/`has` trap, so `"X" in env` is unreliable.
|
|
839
|
+
const isDisabled = env.NO_COLOR !== undefined || argv.includes("--no-color");
|
|
840
|
+
const isForced = env.FORCE_COLOR !== undefined || argv.includes("--color");
|
|
728
841
|
const isWindows = platform === "win32";
|
|
729
842
|
const isDumbTerminal = env.TERM === "dumb";
|
|
730
843
|
|
|
731
844
|
const isCompatibleTerminal = tty.isatty(1) && env.TERM && !isDumbTerminal;
|
|
732
845
|
|
|
733
846
|
const isCI =
|
|
734
|
-
|
|
735
|
-
(
|
|
847
|
+
env.CI !== undefined &&
|
|
848
|
+
(env.GITHUB_ACTIONS !== undefined ||
|
|
849
|
+
env.GITLAB_CI !== undefined ||
|
|
850
|
+
env.CIRCLECI !== undefined);
|
|
736
851
|
|
|
737
852
|
return (
|
|
738
853
|
!isDisabled &&
|
|
@@ -741,6 +856,7 @@ const isColorSupported = () => {
|
|
|
741
856
|
};
|
|
742
857
|
|
|
743
858
|
/**
|
|
859
|
+
* Returns result.
|
|
744
860
|
* @param {number} index index
|
|
745
861
|
* @param {string} string string
|
|
746
862
|
* @param {string} close close
|
|
@@ -761,6 +877,7 @@ const replaceClose = (
|
|
|
761
877
|
) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
|
|
762
878
|
|
|
763
879
|
/**
|
|
880
|
+
* Returns result.
|
|
764
881
|
* @param {number} index index to replace
|
|
765
882
|
* @param {string} string string
|
|
766
883
|
* @param {string} open open string
|
|
@@ -776,6 +893,7 @@ const clearBleed = (index, string, open, close, replace) =>
|
|
|
776
893
|
/** @typedef {(value: EXPECTED_ANY) => string} PrintFunction */
|
|
777
894
|
|
|
778
895
|
/**
|
|
896
|
+
* Returns function to create color.
|
|
779
897
|
* @param {string} open open string
|
|
780
898
|
* @param {string} close close string
|
|
781
899
|
* @param {string=} replace extra replace
|
|
@@ -790,6 +908,7 @@ const filterEmpty =
|
|
|
790
908
|
: "";
|
|
791
909
|
|
|
792
910
|
/**
|
|
911
|
+
* Returns result.
|
|
793
912
|
* @param {number} open open code
|
|
794
913
|
* @param {number} close close code
|
|
795
914
|
* @param {string=} replace extra replace
|
|
@@ -799,15 +918,18 @@ const init = (open, close, replace) =>
|
|
|
799
918
|
filterEmpty(`\u001B[${open}m`, `\u001B[${close}m`, replace);
|
|
800
919
|
|
|
801
920
|
/**
|
|
921
|
+
* Defines the colors type used by this module.
|
|
802
922
|
* @typedef {{ reset: PrintFunction, bold: PrintFunction, dim: PrintFunction, italic: PrintFunction, underline: PrintFunction, inverse: PrintFunction, hidden: PrintFunction, strikethrough: PrintFunction, black: PrintFunction, red: PrintFunction, green: PrintFunction, yellow: PrintFunction, blue: PrintFunction, magenta: PrintFunction, cyan: PrintFunction, white: PrintFunction, gray: PrintFunction, bgBlack: PrintFunction, bgRed: PrintFunction, bgGreen: PrintFunction, bgYellow: PrintFunction, bgBlue: PrintFunction, bgMagenta: PrintFunction, bgCyan: PrintFunction, bgWhite: PrintFunction, blackBright: PrintFunction, redBright: PrintFunction, greenBright: PrintFunction, yellowBright: PrintFunction, blueBright: PrintFunction, magentaBright: PrintFunction, cyanBright: PrintFunction, whiteBright: PrintFunction, bgBlackBright: PrintFunction, bgRedBright: PrintFunction, bgGreenBright: PrintFunction, bgYellowBright: PrintFunction, bgBlueBright: PrintFunction, bgMagentaBright: PrintFunction, bgCyanBright: PrintFunction, bgWhiteBright: PrintFunction }} Colors
|
|
803
923
|
*/
|
|
804
924
|
|
|
805
925
|
/**
|
|
926
|
+
* Defines the colors options type used by this module.
|
|
806
927
|
* @typedef {object} ColorsOptions
|
|
807
928
|
* @property {boolean=} useColor force use colors
|
|
808
929
|
*/
|
|
809
930
|
|
|
810
931
|
/**
|
|
932
|
+
* Creates a colors from the provided colors option.
|
|
811
933
|
* @param {ColorsOptions=} options options
|
|
812
934
|
* @returns {Colors} colors
|
|
813
935
|
*/
|