@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/config/defaults.js
CHANGED
|
@@ -22,6 +22,7 @@ const {
|
|
|
22
22
|
CSS_MODULE_TYPE_AUTO,
|
|
23
23
|
CSS_MODULE_TYPE_GLOBAL,
|
|
24
24
|
CSS_MODULE_TYPE_MODULE,
|
|
25
|
+
HTML_MODULE_TYPE,
|
|
25
26
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
26
27
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
27
28
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
@@ -30,6 +31,7 @@ const {
|
|
|
30
31
|
WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
31
32
|
} = require("../ModuleTypeConstants");
|
|
32
33
|
const Template = require("../Template");
|
|
34
|
+
const RuleSetCompiler = require("../rules/RuleSetCompiler");
|
|
33
35
|
const { cleverMerge } = require("../util/cleverMerge");
|
|
34
36
|
const {
|
|
35
37
|
getDefaultTarget,
|
|
@@ -70,6 +72,7 @@ const {
|
|
|
70
72
|
/** @typedef {import("../../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
|
|
71
73
|
/** @typedef {import("../../declarations/WebpackOptions").Performance} Performance */
|
|
72
74
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
75
|
+
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
|
|
73
76
|
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRules} RuleSetRules */
|
|
74
77
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
|
75
78
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
|
@@ -80,11 +83,13 @@ const {
|
|
|
80
83
|
/** @typedef {import("./target").TargetProperties} TargetProperties */
|
|
81
84
|
|
|
82
85
|
/**
|
|
86
|
+
* Defines the recursive non nullable type used by this module.
|
|
83
87
|
* @template T
|
|
84
88
|
* @typedef {{ [P in keyof T]-?: T[P] extends object ? RecursiveNonNullable<NonNullable<T[P]>> : NonNullable<T[P]> }} RecursiveNonNullable
|
|
85
89
|
*/
|
|
86
90
|
|
|
87
91
|
/**
|
|
92
|
+
* Defines the shared type used by this module.
|
|
88
93
|
* @typedef {Output & {
|
|
89
94
|
* uniqueName: NonNullable<Output["uniqueName"]>,
|
|
90
95
|
* filename: NonNullable<Output["filename"]>,
|
|
@@ -100,6 +105,7 @@ const {
|
|
|
100
105
|
* devtoolNamespace: NonNullable<Output["devtoolNamespace"]>,
|
|
101
106
|
* publicPath: NonNullable<Output["publicPath"]>,
|
|
102
107
|
* workerPublicPath: NonNullable<Output["workerPublicPath"]>,
|
|
108
|
+
* workerChunkFilename: NonNullable<Output["workerChunkFilename"]>,
|
|
103
109
|
* workerWasmLoading: NonNullable<Output["workerWasmLoading"]>,
|
|
104
110
|
* workerChunkLoading: NonNullable<Output["workerChunkLoading"]>,
|
|
105
111
|
* chunkFormat: NonNullable<Output["chunkFormat"]>,
|
|
@@ -120,6 +126,7 @@ const {
|
|
|
120
126
|
* compareBeforeEmit: NonNullable<Output["compareBeforeEmit"]>,
|
|
121
127
|
* strictModuleErrorHandling: NonNullable<Output["strictModuleErrorHandling"]>,
|
|
122
128
|
* strictModuleExceptionHandling: NonNullable<Output["strictModuleExceptionHandling"]>,
|
|
129
|
+
* strictModuleResolution: NonNullable<Output["strictModuleResolution"]>,
|
|
123
130
|
* importFunctionName: NonNullable<Output["importFunctionName"]>,
|
|
124
131
|
* importMetaName: NonNullable<Output["importMetaName"]>,
|
|
125
132
|
* environment: RecursiveNonNullable<Output["environment"]>,
|
|
@@ -129,6 +136,7 @@ const {
|
|
|
129
136
|
*/
|
|
130
137
|
|
|
131
138
|
/**
|
|
139
|
+
* Defines the shared type used by this module.
|
|
132
140
|
* @typedef {SnapshotOptions & {
|
|
133
141
|
* managedPaths: NonNullable<SnapshotOptions["managedPaths"]>,
|
|
134
142
|
* unmanagedPaths: NonNullable<SnapshotOptions["unmanagedPaths"]>,
|
|
@@ -141,6 +149,7 @@ const {
|
|
|
141
149
|
*/
|
|
142
150
|
|
|
143
151
|
/**
|
|
152
|
+
* Defines the shared type used by this module.
|
|
144
153
|
* @typedef {Optimization & {
|
|
145
154
|
* runtimeChunk: NonNullable<Optimization["runtimeChunk"]>,
|
|
146
155
|
* splitChunks: NonNullable<Optimization["splitChunks"]>,
|
|
@@ -155,6 +164,7 @@ const {
|
|
|
155
164
|
* usedExports: NonNullable<Optimization["usedExports"]>,
|
|
156
165
|
* mangleExports: NonNullable<Optimization["mangleExports"]>,
|
|
157
166
|
* innerGraph: NonNullable<Optimization["innerGraph"]>,
|
|
167
|
+
* inlineExports: NonNullable<Optimization["inlineExports"]>,
|
|
158
168
|
* concatenateModules: NonNullable<Optimization["concatenateModules"]>,
|
|
159
169
|
* avoidEntryIife: NonNullable<Optimization["avoidEntryIife"]>,
|
|
160
170
|
* emitOnErrors: NonNullable<Optimization["emitOnErrors"]>,
|
|
@@ -169,6 +179,7 @@ const {
|
|
|
169
179
|
*/
|
|
170
180
|
|
|
171
181
|
/**
|
|
182
|
+
* Defines the shared type used by this module.
|
|
172
183
|
* @typedef {ExternalsPresets & {
|
|
173
184
|
* web: NonNullable<ExternalsPresets["web"]>,
|
|
174
185
|
* node: NonNullable<ExternalsPresets["node"]>,
|
|
@@ -181,6 +192,7 @@ const {
|
|
|
181
192
|
*/
|
|
182
193
|
|
|
183
194
|
/**
|
|
195
|
+
* Defines the shared type used by this module.
|
|
184
196
|
* @typedef {InfrastructureLogging & {
|
|
185
197
|
* stream: NonNullable<InfrastructureLogging["stream"]>,
|
|
186
198
|
* level: NonNullable<InfrastructureLogging["level"]>,
|
|
@@ -191,14 +203,17 @@ const {
|
|
|
191
203
|
*/
|
|
192
204
|
|
|
193
205
|
/**
|
|
206
|
+
* Defines the webpack options normalized with base defaults type used by this module.
|
|
194
207
|
* @typedef {WebpackOptionsNormalized & { context: NonNullable<WebpackOptionsNormalized["context"]> } & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }} WebpackOptionsNormalizedWithBaseDefaults
|
|
195
208
|
*/
|
|
196
209
|
|
|
197
210
|
/**
|
|
211
|
+
* Defines the webpack options normalized with defaults type used by this module.
|
|
198
212
|
* @typedef {WebpackOptionsNormalizedWithBaseDefaults & { target: NonNullable<WebpackOptionsNormalized["target"]> } & { output: OutputNormalizedWithDefaults } & { optimization: OptimizationNormalizedWithDefaults } & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> } & { stats: NonNullable<WebpackOptionsNormalized["stats"]> } & { node: NonNullable<WebpackOptionsNormalized["node"]> } & { profile: NonNullable<WebpackOptionsNormalized["profile"]> } & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> } & { snapshot: SnapshotNormalizedWithDefaults } & { externalsPresets: ExternalsPresetsNormalizedWithDefaults } & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> } & { watch: NonNullable<WebpackOptionsNormalized["watch"]> } & { performance: NonNullable<WebpackOptionsNormalized["performance"]> } & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> } & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]> } & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }} WebpackOptionsNormalizedWithDefaults
|
|
199
213
|
*/
|
|
200
214
|
|
|
201
215
|
/**
|
|
216
|
+
* Defines the resolved options type used by this module.
|
|
202
217
|
* @typedef {object} ResolvedOptions
|
|
203
218
|
* @property {PlatformTargetProperties | false} platform - platform target properties
|
|
204
219
|
*/
|
|
@@ -211,7 +226,7 @@ const DEFAULTS = {
|
|
|
211
226
|
};
|
|
212
227
|
|
|
213
228
|
/**
|
|
214
|
-
*
|
|
229
|
+
* Processes the provided obj.
|
|
215
230
|
* @template T
|
|
216
231
|
* @template {keyof T} P
|
|
217
232
|
* @param {T} obj an object
|
|
@@ -226,7 +241,7 @@ const D = (obj, prop, value) => {
|
|
|
226
241
|
};
|
|
227
242
|
|
|
228
243
|
/**
|
|
229
|
-
*
|
|
244
|
+
* Processes the provided obj.
|
|
230
245
|
* @template T
|
|
231
246
|
* @template {keyof T} P
|
|
232
247
|
* @param {T} obj an object
|
|
@@ -282,6 +297,7 @@ const A = (obj, prop, factory) => {
|
|
|
282
297
|
};
|
|
283
298
|
|
|
284
299
|
/**
|
|
300
|
+
* Apply webpack options base defaults.
|
|
285
301
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
286
302
|
* @returns {void}
|
|
287
303
|
*/
|
|
@@ -291,6 +307,7 @@ const applyWebpackOptionsBaseDefaults = (options) => {
|
|
|
291
307
|
};
|
|
292
308
|
|
|
293
309
|
/**
|
|
310
|
+
* Apply webpack options defaults.
|
|
294
311
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
295
312
|
* @param {number=} compilerIndex index of compiler
|
|
296
313
|
* @returns {ResolvedOptions} Resolved options after apply defaults
|
|
@@ -326,6 +343,26 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
326
343
|
}
|
|
327
344
|
}
|
|
328
345
|
|
|
346
|
+
D(options, "watch", false);
|
|
347
|
+
D(options, "profile", false);
|
|
348
|
+
D(options, "parallelism", 100);
|
|
349
|
+
D(options, "recordsInputPath", false);
|
|
350
|
+
D(options, "recordsOutputPath", false);
|
|
351
|
+
|
|
352
|
+
// Capture the raw html intent before "auto" is resolved: only an explicit
|
|
353
|
+
// `html: true` (or futureDefaults) keeps `.html` ahead of `.js` when resolving.
|
|
354
|
+
const htmlExplicitlyEnabled = options.experiments.html === true;
|
|
355
|
+
const htmlWasUnset = options.experiments.html === undefined;
|
|
356
|
+
|
|
357
|
+
applyExperimentsDefaults(options.experiments, {
|
|
358
|
+
production,
|
|
359
|
+
development,
|
|
360
|
+
targetProperties,
|
|
361
|
+
rules: options.module.rules
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// After experiments are resolved: the default dev source map depends on the
|
|
365
|
+
// (possibly "auto"-resolved) `experiments.css` value.
|
|
329
366
|
F(
|
|
330
367
|
options,
|
|
331
368
|
"devtool",
|
|
@@ -348,24 +385,20 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
348
385
|
)
|
|
349
386
|
);
|
|
350
387
|
|
|
351
|
-
D(options, "watch", false);
|
|
352
|
-
D(options, "profile", false);
|
|
353
|
-
D(options, "parallelism", 100);
|
|
354
|
-
D(options, "recordsInputPath", false);
|
|
355
|
-
D(options, "recordsOutputPath", false);
|
|
356
|
-
|
|
357
|
-
applyExperimentsDefaults(options.experiments, {
|
|
358
|
-
production,
|
|
359
|
-
development,
|
|
360
|
-
targetProperties
|
|
361
|
-
});
|
|
362
|
-
|
|
363
388
|
const futureDefaults =
|
|
364
389
|
/** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
|
|
365
390
|
(options.experiments.futureDefaults);
|
|
366
391
|
|
|
392
|
+
// `.html` outranks `.js` only for an explicit opt-in (`html: true`, or the
|
|
393
|
+
// futureDefaults-forced default), never for the auto-enabled default.
|
|
394
|
+
const htmlFirst = htmlExplicitlyEnabled || (htmlWasUnset && futureDefaults);
|
|
395
|
+
|
|
367
396
|
F(options, "validate", () => !(futureDefaults === true && production));
|
|
368
397
|
|
|
398
|
+
// Progress lives on infrastructureLogging; webpack@6 shows the interactive
|
|
399
|
+
// bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
|
|
400
|
+
D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
|
|
401
|
+
|
|
369
402
|
F(options, "cache", () =>
|
|
370
403
|
development ? { type: /** @type {"memory"} */ ("memory") } : false
|
|
371
404
|
);
|
|
@@ -399,7 +432,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
399
432
|
entry: options.entry,
|
|
400
433
|
futureDefaults,
|
|
401
434
|
asyncWebAssembly:
|
|
402
|
-
/** @type {
|
|
435
|
+
/** @type {boolean} */
|
|
403
436
|
(options.experiments.asyncWebAssembly)
|
|
404
437
|
});
|
|
405
438
|
|
|
@@ -415,11 +448,17 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
415
448
|
/** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
|
|
416
449
|
(options.experiments.syncWebAssembly),
|
|
417
450
|
asyncWebAssembly:
|
|
418
|
-
/** @type {
|
|
451
|
+
/** @type {boolean} */
|
|
419
452
|
(options.experiments.asyncWebAssembly),
|
|
420
453
|
css:
|
|
421
|
-
/** @type {
|
|
454
|
+
/** @type {boolean} */
|
|
422
455
|
(options.experiments.css),
|
|
456
|
+
html:
|
|
457
|
+
/** @type {boolean} */
|
|
458
|
+
(options.experiments.html),
|
|
459
|
+
typescript:
|
|
460
|
+
/** @type {boolean} */
|
|
461
|
+
(options.experiments.typescript),
|
|
423
462
|
deferImport:
|
|
424
463
|
/** @type {NonNullable<ExperimentsNormalized["deferImport"]>} */
|
|
425
464
|
(options.experiments.deferImport),
|
|
@@ -433,9 +472,33 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
433
472
|
mode: options.mode,
|
|
434
473
|
outputModule:
|
|
435
474
|
/** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
|
|
436
|
-
(options.output.module)
|
|
475
|
+
(options.output.module),
|
|
476
|
+
library: options.output.library
|
|
437
477
|
});
|
|
438
478
|
|
|
479
|
+
// `output.resourceHints.urlHints` shorthand: fan the project-wide rules out
|
|
480
|
+
// as the base `urlHints` of every URL-emitting parser (JS `new URL`, CSS
|
|
481
|
+
// `url()`, HTML `<img src>`). They go first so parser-scoped
|
|
482
|
+
// `parser.<type>.urlHints` rules — matched later, last-match-wins — override.
|
|
483
|
+
const outputUrlHints =
|
|
484
|
+
options.output.resourceHints && options.output.resourceHints.urlHints;
|
|
485
|
+
if (outputUrlHints && outputUrlHints.length > 0) {
|
|
486
|
+
for (const type of [
|
|
487
|
+
"javascript",
|
|
488
|
+
CSS_MODULE_TYPE,
|
|
489
|
+
CSS_MODULE_TYPE_AUTO,
|
|
490
|
+
CSS_MODULE_TYPE_MODULE,
|
|
491
|
+
CSS_MODULE_TYPE_GLOBAL,
|
|
492
|
+
HTML_MODULE_TYPE
|
|
493
|
+
]) {
|
|
494
|
+
const parser =
|
|
495
|
+
/** @type {{ urlHints?: import("../../declarations/WebpackOptions").UrlHintRule[] } | undefined} */
|
|
496
|
+
(options.module.parser[type]);
|
|
497
|
+
if (!parser) continue;
|
|
498
|
+
parser.urlHints = [...outputUrlHints, ...(parser.urlHints || [])];
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
439
502
|
applyExternalsPresetsDefaults(options.externalsPresets, {
|
|
440
503
|
targetProperties,
|
|
441
504
|
buildHttp: Boolean(options.experiments.buildHttp),
|
|
@@ -448,7 +511,13 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
448
511
|
/** @type {NonNullable<WebpackOptionsNormalized["loader"]>} */ (
|
|
449
512
|
options.loader
|
|
450
513
|
),
|
|
451
|
-
{
|
|
514
|
+
{
|
|
515
|
+
targetProperties,
|
|
516
|
+
environment: options.output.environment,
|
|
517
|
+
outputModule:
|
|
518
|
+
/** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
|
|
519
|
+
(options.output.module)
|
|
520
|
+
}
|
|
452
521
|
);
|
|
453
522
|
|
|
454
523
|
F(options, "externalsType", () => {
|
|
@@ -492,7 +561,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
492
561
|
development,
|
|
493
562
|
production,
|
|
494
563
|
css:
|
|
495
|
-
/** @type {
|
|
564
|
+
/** @type {boolean} */
|
|
496
565
|
(options.experiments.css),
|
|
497
566
|
records: Boolean(options.recordsInputPath || options.recordsOutputPath)
|
|
498
567
|
});
|
|
@@ -504,8 +573,15 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
504
573
|
targetProperties,
|
|
505
574
|
mode: /** @type {Mode} */ (options.mode),
|
|
506
575
|
css:
|
|
507
|
-
/** @type {
|
|
508
|
-
(options.experiments.css)
|
|
576
|
+
/** @type {boolean} */
|
|
577
|
+
(options.experiments.css),
|
|
578
|
+
html:
|
|
579
|
+
/** @type {boolean} */
|
|
580
|
+
(options.experiments.html),
|
|
581
|
+
htmlFirst,
|
|
582
|
+
typescript:
|
|
583
|
+
/** @type {boolean} */
|
|
584
|
+
(options.experiments.typescript)
|
|
509
585
|
}),
|
|
510
586
|
options.resolve
|
|
511
587
|
);
|
|
@@ -524,36 +600,103 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
524
600
|
browser: targetProperties.browser,
|
|
525
601
|
webworker: targetProperties.webworker,
|
|
526
602
|
node: targetProperties.node,
|
|
603
|
+
deno: targetProperties.deno,
|
|
604
|
+
bun: targetProperties.bun,
|
|
527
605
|
nwjs: targetProperties.nwjs,
|
|
528
|
-
electron: targetProperties.electron
|
|
606
|
+
electron: targetProperties.electron,
|
|
607
|
+
// spans both web and node (target "universal" or ["web", "node"])
|
|
608
|
+
universal:
|
|
609
|
+
targetProperties.node === null && targetProperties.web === null
|
|
529
610
|
}
|
|
530
611
|
};
|
|
531
612
|
};
|
|
532
613
|
|
|
533
614
|
/**
|
|
615
|
+
* Apply experiments defaults.
|
|
534
616
|
* @param {ExperimentsNormalized} experiments options
|
|
535
617
|
* @param {object} options options
|
|
536
618
|
* @param {boolean} options.production is production
|
|
537
619
|
* @param {boolean} options.development is development mode
|
|
538
620
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
621
|
+
* @param {RuleSetRules} options.rules user `module.rules`, used to resolve the css/html/asyncWebAssembly/typescript "auto" defaults
|
|
539
622
|
* @returns {void}
|
|
540
623
|
*/
|
|
541
624
|
const applyExperimentsDefaults = (
|
|
542
625
|
experiments,
|
|
543
|
-
{ production, development, targetProperties }
|
|
626
|
+
{ production, development, targetProperties, rules }
|
|
544
627
|
) => {
|
|
545
628
|
D(experiments, "futureDefaults", false);
|
|
546
629
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
|
547
630
|
// TODO do we need sync web assembly in webpack@6?
|
|
548
631
|
D(experiments, "syncWebAssembly", false);
|
|
549
|
-
D(
|
|
550
|
-
|
|
632
|
+
D(
|
|
633
|
+
experiments,
|
|
634
|
+
"asyncWebAssembly",
|
|
635
|
+
experiments.futureDefaults ? true : "auto"
|
|
636
|
+
);
|
|
637
|
+
// the universal target (web + node, neither specific) only works as ESM
|
|
638
|
+
const universal =
|
|
639
|
+
Boolean(targetProperties) &&
|
|
640
|
+
/** @type {TargetProperties} */ (targetProperties).node === null &&
|
|
641
|
+
/** @type {TargetProperties} */ (targetProperties).web === null;
|
|
642
|
+
// the deno and bun targets only emit ECMAScript modules
|
|
643
|
+
const deno =
|
|
644
|
+
Boolean(targetProperties) &&
|
|
645
|
+
/** @type {TargetProperties} */ (targetProperties).deno === true;
|
|
646
|
+
const bun =
|
|
647
|
+
Boolean(targetProperties) &&
|
|
648
|
+
/** @type {TargetProperties} */ (targetProperties).bun === true;
|
|
649
|
+
D(experiments, "outputModule", universal || deno || bun);
|
|
551
650
|
D(experiments, "lazyCompilation", undefined);
|
|
552
651
|
D(experiments, "buildHttp", undefined);
|
|
553
652
|
D(experiments, "cacheUnaffected", experiments.futureDefaults);
|
|
554
653
|
D(experiments, "deferImport", false);
|
|
555
654
|
D(experiments, "sourceImport", false);
|
|
556
|
-
F(experiments, "css", () => (experiments.futureDefaults ? true :
|
|
655
|
+
F(experiments, "css", () => (experiments.futureDefaults ? true : "auto"));
|
|
656
|
+
F(experiments, "html", () => (experiments.futureDefaults ? true : "auto"));
|
|
657
|
+
F(experiments, "typescript", () =>
|
|
658
|
+
experiments.futureDefaults ? true : "auto"
|
|
659
|
+
);
|
|
660
|
+
|
|
661
|
+
// Resolve the "auto" default: enable the built-in css/html module type unless
|
|
662
|
+
// the user already registered a loader (or explicit type) for these files, so
|
|
663
|
+
// enabling them by default does not break existing css-loader/html-loader setups.
|
|
664
|
+
// The built-in `/\.css$/i` rule also covers `.module.css`, so a loader scoped to
|
|
665
|
+
// CSS modules must disable the built-in type too — sample both extensions.
|
|
666
|
+
// When enabled implicitly the value stays `"auto"` (truthy): Css/HtmlModulesPlugin
|
|
667
|
+
// then step aside per-module for requests that loaders were applied to
|
|
668
|
+
// (inline requests or loaders injected via hooks, e.g. html-webpack-plugin).
|
|
669
|
+
// TODO webpack 6: css/html default to `true`, drop the `"auto"` marker.
|
|
670
|
+
if (experiments.css === "auto") {
|
|
671
|
+
experiments.css =
|
|
672
|
+
!(
|
|
673
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.css") ||
|
|
674
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.module.css")
|
|
675
|
+
) && "auto";
|
|
676
|
+
}
|
|
677
|
+
if (experiments.html === "auto") {
|
|
678
|
+
experiments.html =
|
|
679
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.html") && "auto";
|
|
680
|
+
}
|
|
681
|
+
// Auto-enable only when the built-in TypeScript support can actually run:
|
|
682
|
+
// it needs `module.stripTypeScriptTypes` (Node.js >= 22.6) and must step
|
|
683
|
+
// aside for a loader registered for `.ts`/`.mts`/`.cts` (e.g. ts-loader).
|
|
684
|
+
if (experiments.typescript === "auto") {
|
|
685
|
+
experiments.typescript =
|
|
686
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
687
|
+
typeof require("module").stripTypeScriptTypes === "function" &&
|
|
688
|
+
!(
|
|
689
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.ts") ||
|
|
690
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.mts") ||
|
|
691
|
+
RuleSetCompiler.hasRuleForResource(rules, "/file.cts")
|
|
692
|
+
);
|
|
693
|
+
}
|
|
694
|
+
// `syncWebAssembly` already claims `.wasm`, so don't let "auto" override it.
|
|
695
|
+
if (experiments.asyncWebAssembly === "auto") {
|
|
696
|
+
experiments.asyncWebAssembly =
|
|
697
|
+
!experiments.syncWebAssembly &&
|
|
698
|
+
!RuleSetCompiler.hasRuleForResource(rules, "/file.wasm");
|
|
699
|
+
}
|
|
557
700
|
|
|
558
701
|
if (typeof experiments.buildHttp === "object") {
|
|
559
702
|
D(experiments.buildHttp, "frozen", production);
|
|
@@ -562,6 +705,7 @@ const applyExperimentsDefaults = (
|
|
|
562
705
|
};
|
|
563
706
|
|
|
564
707
|
/**
|
|
708
|
+
* Apply cache defaults.
|
|
565
709
|
* @param {CacheOptionsNormalized} cache options
|
|
566
710
|
* @param {object} options options
|
|
567
711
|
* @param {string} options.name name
|
|
@@ -644,6 +788,7 @@ const applyCacheDefaults = (
|
|
|
644
788
|
};
|
|
645
789
|
|
|
646
790
|
/**
|
|
791
|
+
* Apply snapshot defaults.
|
|
647
792
|
* @param {SnapshotOptions} snapshot options
|
|
648
793
|
* @param {object} options options
|
|
649
794
|
* @param {boolean} options.production is production
|
|
@@ -721,6 +866,7 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
721
866
|
};
|
|
722
867
|
|
|
723
868
|
/**
|
|
869
|
+
* Apply javascript parser options defaults.
|
|
724
870
|
* @param {JavascriptParserOptions} parserOptions parser options
|
|
725
871
|
* @param {object} options options
|
|
726
872
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
@@ -728,11 +874,21 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
728
874
|
* @param {boolean} options.sourceImport is import source enabled
|
|
729
875
|
* @param {boolean} options.isNode is node target platform
|
|
730
876
|
* @param {boolean} options.outputModule is output.module enabled
|
|
877
|
+
* @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
|
|
878
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
731
879
|
* @returns {void}
|
|
732
880
|
*/
|
|
733
881
|
const applyJavascriptParserOptionsDefaults = (
|
|
734
882
|
parserOptions,
|
|
735
|
-
{
|
|
883
|
+
{
|
|
884
|
+
futureDefaults,
|
|
885
|
+
deferImport,
|
|
886
|
+
sourceImport,
|
|
887
|
+
isNode,
|
|
888
|
+
outputModule,
|
|
889
|
+
library,
|
|
890
|
+
typescript
|
|
891
|
+
}
|
|
736
892
|
) => {
|
|
737
893
|
D(parserOptions, "unknownContextRequest", ".");
|
|
738
894
|
D(parserOptions, "unknownContextRegExp", false);
|
|
@@ -755,10 +911,14 @@ const applyJavascriptParserOptionsDefaults = (
|
|
|
755
911
|
D(parserOptions, "dynamicUrl", true);
|
|
756
912
|
D(parserOptions, "deferImport", deferImport);
|
|
757
913
|
D(parserOptions, "sourceImport", sourceImport);
|
|
914
|
+
D(parserOptions, "typescript", typescript);
|
|
758
915
|
if (futureDefaults) D(parserOptions, "exportsPresence", "error");
|
|
916
|
+
D(parserOptions, "strictModeViolations", futureDefaults ? "error" : "warn");
|
|
917
|
+
D(parserOptions, "anonymousDefaultExportName", !library);
|
|
759
918
|
};
|
|
760
919
|
|
|
761
920
|
/**
|
|
921
|
+
* Apply json generator options defaults.
|
|
762
922
|
* @param {JsonGeneratorOptions} generatorOptions generator options
|
|
763
923
|
* @returns {void}
|
|
764
924
|
*/
|
|
@@ -767,6 +927,7 @@ const applyJsonGeneratorOptionsDefaults = (generatorOptions) => {
|
|
|
767
927
|
};
|
|
768
928
|
|
|
769
929
|
/**
|
|
930
|
+
* Apply css generator options defaults.
|
|
770
931
|
* @param {CssGeneratorOptions} generatorOptions generator options
|
|
771
932
|
* @param {object} options options
|
|
772
933
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -785,12 +946,15 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
785
946
|
};
|
|
786
947
|
|
|
787
948
|
/**
|
|
949
|
+
* Apply module defaults.
|
|
788
950
|
* @param {ModuleOptions} module options
|
|
789
951
|
* @param {object} options options
|
|
790
952
|
* @param {boolean} options.cache is caching enabled
|
|
791
953
|
* @param {boolean} options.syncWebAssembly is syncWebAssembly enabled
|
|
792
954
|
* @param {boolean} options.asyncWebAssembly is asyncWebAssembly enabled
|
|
955
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
793
956
|
* @param {boolean} options.css is css enabled
|
|
957
|
+
* @param {boolean} options.html is html enabled
|
|
794
958
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
795
959
|
* @param {string} options.uniqueName the unique name
|
|
796
960
|
* @param {boolean} options.isNode is node target platform
|
|
@@ -801,6 +965,7 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
801
965
|
* @param {HashSalt} options.hashSalt hash salt
|
|
802
966
|
* @param {HashFunction} options.hashFunction hash function
|
|
803
967
|
* @param {boolean} options.outputModule is output.module enabled
|
|
968
|
+
* @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
|
|
804
969
|
* @returns {void}
|
|
805
970
|
*/
|
|
806
971
|
const applyModuleDefaults = (
|
|
@@ -812,6 +977,8 @@ const applyModuleDefaults = (
|
|
|
812
977
|
syncWebAssembly,
|
|
813
978
|
asyncWebAssembly,
|
|
814
979
|
css,
|
|
980
|
+
html,
|
|
981
|
+
typescript,
|
|
815
982
|
futureDefaults,
|
|
816
983
|
isNode,
|
|
817
984
|
uniqueName,
|
|
@@ -819,7 +986,8 @@ const applyModuleDefaults = (
|
|
|
819
986
|
mode,
|
|
820
987
|
deferImport,
|
|
821
988
|
sourceImport,
|
|
822
|
-
outputModule
|
|
989
|
+
outputModule,
|
|
990
|
+
library
|
|
823
991
|
}
|
|
824
992
|
) => {
|
|
825
993
|
if (cache) {
|
|
@@ -827,6 +995,7 @@ const applyModuleDefaults = (
|
|
|
827
995
|
module,
|
|
828
996
|
"unsafeCache",
|
|
829
997
|
/**
|
|
998
|
+
* Handles the callback logic for this hook.
|
|
830
999
|
* @param {Module} module module
|
|
831
1000
|
* @returns {boolean} true, if we want to cache the module
|
|
832
1001
|
*/
|
|
@@ -880,11 +1049,14 @@ const applyModuleDefaults = (
|
|
|
880
1049
|
deferImport,
|
|
881
1050
|
sourceImport,
|
|
882
1051
|
isNode,
|
|
883
|
-
outputModule
|
|
1052
|
+
outputModule,
|
|
1053
|
+
library,
|
|
1054
|
+
typescript
|
|
884
1055
|
}
|
|
885
1056
|
);
|
|
886
1057
|
|
|
887
1058
|
F(module.generator, "json", () => ({}));
|
|
1059
|
+
|
|
888
1060
|
applyJsonGeneratorOptionsDefaults(
|
|
889
1061
|
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown["json"]>} */
|
|
890
1062
|
(module.generator.json)
|
|
@@ -911,6 +1083,18 @@ const applyModuleDefaults = (
|
|
|
911
1083
|
"namedExports",
|
|
912
1084
|
true
|
|
913
1085
|
);
|
|
1086
|
+
D(
|
|
1087
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
1088
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
1089
|
+
"customMedia",
|
|
1090
|
+
true
|
|
1091
|
+
);
|
|
1092
|
+
D(
|
|
1093
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
1094
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
1095
|
+
"customSelectors",
|
|
1096
|
+
true
|
|
1097
|
+
);
|
|
914
1098
|
|
|
915
1099
|
for (const type of [
|
|
916
1100
|
CSS_MODULE_TYPE_AUTO,
|
|
@@ -955,6 +1139,18 @@ const applyModuleDefaults = (
|
|
|
955
1139
|
"grid",
|
|
956
1140
|
true
|
|
957
1141
|
);
|
|
1142
|
+
D(
|
|
1143
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
1144
|
+
(module.parser[type]),
|
|
1145
|
+
"customMedia",
|
|
1146
|
+
true
|
|
1147
|
+
);
|
|
1148
|
+
D(
|
|
1149
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
1150
|
+
(module.parser[type]),
|
|
1151
|
+
"customSelectors",
|
|
1152
|
+
true
|
|
1153
|
+
);
|
|
958
1154
|
}
|
|
959
1155
|
|
|
960
1156
|
F(module.generator, CSS_MODULE_TYPE, () => ({}));
|
|
@@ -1027,6 +1223,28 @@ const applyModuleDefaults = (
|
|
|
1027
1223
|
}
|
|
1028
1224
|
}
|
|
1029
1225
|
|
|
1226
|
+
if (html) {
|
|
1227
|
+
// `module.generator.html.extract` is intentionally left undefined by
|
|
1228
|
+
// default: HtmlGenerator treats undefined as "extract iff this HTML
|
|
1229
|
+
// module is a compilation entry", which is the HTML-entry-point
|
|
1230
|
+
// behaviour. Setting `extract: true` forces extraction for all HTML
|
|
1231
|
+
// modules (including imported ones); `extract: false` disables it
|
|
1232
|
+
// everywhere.
|
|
1233
|
+
F(module.generator, HTML_MODULE_TYPE, () => ({}));
|
|
1234
|
+
// `module.parser.html.sources` defaults to `true` — HtmlParser uses
|
|
1235
|
+
// the built-in source list to extract URL-like attributes (`<img
|
|
1236
|
+
// src>`, `<link href>`, `<script src>`, …) as webpack dependencies.
|
|
1237
|
+
// Users may pass `false` to disable extraction entirely or an array
|
|
1238
|
+
// (with `"..."` to include the defaults) to customize it.
|
|
1239
|
+
F(module.parser, HTML_MODULE_TYPE, () => ({}));
|
|
1240
|
+
D(
|
|
1241
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[HTML_MODULE_TYPE]>} */
|
|
1242
|
+
(module.parser[HTML_MODULE_TYPE]),
|
|
1243
|
+
"sources",
|
|
1244
|
+
true
|
|
1245
|
+
);
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1030
1248
|
A(module, "defaultRules", () => {
|
|
1031
1249
|
const esm = {
|
|
1032
1250
|
type: JAVASCRIPT_MODULE_TYPE_ESM,
|
|
@@ -1084,6 +1302,7 @@ const applyModuleDefaults = (
|
|
|
1084
1302
|
...esm
|
|
1085
1303
|
}
|
|
1086
1304
|
];
|
|
1305
|
+
|
|
1087
1306
|
if (asyncWebAssembly) {
|
|
1088
1307
|
const wasm = {
|
|
1089
1308
|
type: WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
|
@@ -1129,6 +1348,7 @@ const applyModuleDefaults = (
|
|
|
1129
1348
|
...wasm
|
|
1130
1349
|
});
|
|
1131
1350
|
}
|
|
1351
|
+
|
|
1132
1352
|
if (css) {
|
|
1133
1353
|
const resolve = {
|
|
1134
1354
|
fullySpecified: true,
|
|
@@ -1150,14 +1370,20 @@ const applyModuleDefaults = (
|
|
|
1150
1370
|
resolve
|
|
1151
1371
|
});
|
|
1152
1372
|
// For CSS modules, i.e. `.class { composes: className from "./style.css" }`
|
|
1153
|
-
// We inherit for such constructions
|
|
1373
|
+
// We inherit for such constructions, but skip files that are already
|
|
1374
|
+
// detected as CSS modules by extension (`.module.<ext>`) — they get
|
|
1375
|
+
// the same modules-mode behavior from the auto rule, and forcing a
|
|
1376
|
+
// different type stamp here would create a duplicate module instance.
|
|
1377
|
+
const moduleExtension = /\.module\.\w+$/i;
|
|
1154
1378
|
rules.push({
|
|
1155
1379
|
dependency: /css-import-local-module/,
|
|
1380
|
+
exclude: moduleExtension,
|
|
1156
1381
|
type: CSS_MODULE_TYPE_MODULE,
|
|
1157
1382
|
resolve
|
|
1158
1383
|
});
|
|
1159
1384
|
rules.push({
|
|
1160
1385
|
dependency: /css-import-global-module/,
|
|
1386
|
+
exclude: moduleExtension,
|
|
1161
1387
|
type: CSS_MODULE_TYPE_GLOBAL,
|
|
1162
1388
|
resolve
|
|
1163
1389
|
});
|
|
@@ -1179,6 +1405,94 @@ const applyModuleDefaults = (
|
|
|
1179
1405
|
}
|
|
1180
1406
|
);
|
|
1181
1407
|
}
|
|
1408
|
+
if (html) {
|
|
1409
|
+
const resolve = {
|
|
1410
|
+
fullySpecified: true,
|
|
1411
|
+
preferRelative: true
|
|
1412
|
+
};
|
|
1413
|
+
|
|
1414
|
+
rules.push({
|
|
1415
|
+
test: /\.html$/i,
|
|
1416
|
+
type: HTML_MODULE_TYPE,
|
|
1417
|
+
resolve
|
|
1418
|
+
});
|
|
1419
|
+
rules.push({
|
|
1420
|
+
mimetype: "text/html",
|
|
1421
|
+
type: HTML_MODULE_TYPE,
|
|
1422
|
+
resolve
|
|
1423
|
+
});
|
|
1424
|
+
// `<iframe srcdoc>` content is fed back through the HTML pipeline as a
|
|
1425
|
+
// `data:text/html` module. `extract: "inline"` exposes the processed
|
|
1426
|
+
// HTML on the `html` codegen channel that `HtmlInlineHtmlDependency.
|
|
1427
|
+
// Template` reads back into the attribute, without emitting a standalone
|
|
1428
|
+
// `.html` file (the module is never a page on its own).
|
|
1429
|
+
rules.push({
|
|
1430
|
+
dependency: "html-srcdoc",
|
|
1431
|
+
generator: {
|
|
1432
|
+
extract: "inline"
|
|
1433
|
+
},
|
|
1434
|
+
resolve
|
|
1435
|
+
});
|
|
1436
|
+
if (css) {
|
|
1437
|
+
// Inline `<style>` content in an HTML module is fed into the
|
|
1438
|
+
// CSS pipeline as a `data:text/css` virtual module. We force
|
|
1439
|
+
// `exportType: "text"` so the CSS module exposes the
|
|
1440
|
+
// processed CSS text on the `css-text` codegen channel that
|
|
1441
|
+
// `HtmlInlineStyleDependency.Template` reads back into the
|
|
1442
|
+
// `<style>` tag.
|
|
1443
|
+
rules.push({
|
|
1444
|
+
dependency: "html-style",
|
|
1445
|
+
parser: {
|
|
1446
|
+
exportType: "text"
|
|
1447
|
+
},
|
|
1448
|
+
resolve
|
|
1449
|
+
});
|
|
1450
|
+
// A `style="..."` attribute is a CSS block's contents, not a
|
|
1451
|
+
// stylesheet, so parse it as one (`as: "block-contents"`).
|
|
1452
|
+
rules.push({
|
|
1453
|
+
dependency: "html-style-attribute",
|
|
1454
|
+
parser: {
|
|
1455
|
+
exportType: "text",
|
|
1456
|
+
as: "block-contents"
|
|
1457
|
+
},
|
|
1458
|
+
resolve
|
|
1459
|
+
});
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
if (typescript) {
|
|
1464
|
+
rules.push(
|
|
1465
|
+
{
|
|
1466
|
+
test: /\.mts$/i,
|
|
1467
|
+
...esm
|
|
1468
|
+
},
|
|
1469
|
+
{
|
|
1470
|
+
test: /\.ts$/i,
|
|
1471
|
+
descriptionData: {
|
|
1472
|
+
type: "module"
|
|
1473
|
+
},
|
|
1474
|
+
...esm
|
|
1475
|
+
},
|
|
1476
|
+
{
|
|
1477
|
+
test: /\.cts$/i,
|
|
1478
|
+
...commonjs
|
|
1479
|
+
},
|
|
1480
|
+
{
|
|
1481
|
+
test: /\.ts$/i,
|
|
1482
|
+
descriptionData: {
|
|
1483
|
+
type: "commonjs"
|
|
1484
|
+
},
|
|
1485
|
+
...commonjs
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
mimetype: {
|
|
1489
|
+
or: ["text/typescript", "application/typescript"]
|
|
1490
|
+
},
|
|
1491
|
+
...esm
|
|
1492
|
+
}
|
|
1493
|
+
);
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1182
1496
|
rules.push(
|
|
1183
1497
|
{
|
|
1184
1498
|
dependency: "url",
|
|
@@ -1211,11 +1525,52 @@ const applyModuleDefaults = (
|
|
|
1211
1525
|
type: ASSET_MODULE_TYPE_BYTES
|
|
1212
1526
|
}
|
|
1213
1527
|
);
|
|
1528
|
+
if (html) {
|
|
1529
|
+
// A `.webmanifest` referenced by `<link rel="manifest">` is a `url`
|
|
1530
|
+
// dependency; route it to the `asset/webmanifest` type so its icon URLs
|
|
1531
|
+
// are parsed. Must come after the generic `url` → asset rule so it wins.
|
|
1532
|
+
rules.push({
|
|
1533
|
+
dependency: "url",
|
|
1534
|
+
test: /\.webmanifest$/i,
|
|
1535
|
+
type: "asset/webmanifest"
|
|
1536
|
+
});
|
|
1537
|
+
// A generated manifest (`output.html.manifest` object) is injected as a
|
|
1538
|
+
// `data:application/manifest+json` URL with no `.webmanifest` extension;
|
|
1539
|
+
// route it by mimetype so its icons are parsed and hashed too.
|
|
1540
|
+
rules.push({
|
|
1541
|
+
dependency: "url",
|
|
1542
|
+
mimetype: "application/manifest+json",
|
|
1543
|
+
type: "asset/webmanifest"
|
|
1544
|
+
});
|
|
1545
|
+
}
|
|
1546
|
+
if (futureDefaults) {
|
|
1547
|
+
rules.push({
|
|
1548
|
+
oneOf: [
|
|
1549
|
+
{
|
|
1550
|
+
resourceQuery: /(\?|&)raw(&|$)/,
|
|
1551
|
+
type: ASSET_MODULE_TYPE_SOURCE
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
resourceQuery: /(\?|&)url(&|$)/,
|
|
1555
|
+
type: ASSET_MODULE_TYPE_RESOURCE
|
|
1556
|
+
},
|
|
1557
|
+
{
|
|
1558
|
+
resourceQuery: /(\?|&)no-inline(&|$)/,
|
|
1559
|
+
type: ASSET_MODULE_TYPE_RESOURCE
|
|
1560
|
+
},
|
|
1561
|
+
{
|
|
1562
|
+
resourceQuery: /(\?|&)inline(&|$)/,
|
|
1563
|
+
type: ASSET_MODULE_TYPE_INLINE
|
|
1564
|
+
}
|
|
1565
|
+
]
|
|
1566
|
+
});
|
|
1567
|
+
}
|
|
1214
1568
|
return rules;
|
|
1215
1569
|
});
|
|
1216
1570
|
};
|
|
1217
1571
|
|
|
1218
1572
|
/**
|
|
1573
|
+
* Apply output defaults.
|
|
1219
1574
|
* @param {Output} output options
|
|
1220
1575
|
* @param {object} options options
|
|
1221
1576
|
* @param {string} options.context context
|
|
@@ -1242,6 +1597,7 @@ const applyOutputDefaults = (
|
|
|
1242
1597
|
}
|
|
1243
1598
|
) => {
|
|
1244
1599
|
/**
|
|
1600
|
+
* Returns a readable library name.
|
|
1245
1601
|
* @param {Library=} library the library option
|
|
1246
1602
|
* @returns {string} a readable library name
|
|
1247
1603
|
*/
|
|
@@ -1293,11 +1649,13 @@ const applyOutputDefaults = (
|
|
|
1293
1649
|
|
|
1294
1650
|
const environment = /** @type {Environment} */ (output.environment);
|
|
1295
1651
|
/**
|
|
1652
|
+
* Returns true, when v is truthy or undefined.
|
|
1296
1653
|
* @param {boolean | undefined} v value
|
|
1297
1654
|
* @returns {boolean} true, when v is truthy or undefined
|
|
1298
1655
|
*/
|
|
1299
1656
|
const optimistic = (v) => v || v === undefined;
|
|
1300
1657
|
/**
|
|
1658
|
+
* Conditionally optimistic.
|
|
1301
1659
|
* @param {boolean | undefined} v value
|
|
1302
1660
|
* @param {boolean | undefined} c condition
|
|
1303
1661
|
* @returns {boolean | undefined} true, when v is truthy or undefined, or c is truthy
|
|
@@ -1309,6 +1667,17 @@ const applyOutputDefaults = (
|
|
|
1309
1667
|
"globalThis",
|
|
1310
1668
|
() => /** @type {boolean | undefined} */ (tp && tp.globalThis)
|
|
1311
1669
|
);
|
|
1670
|
+
F(
|
|
1671
|
+
environment,
|
|
1672
|
+
"symbol",
|
|
1673
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.symbol))
|
|
1674
|
+
);
|
|
1675
|
+
F(
|
|
1676
|
+
environment,
|
|
1677
|
+
"hasOwn",
|
|
1678
|
+
// No optimistic, because it is new
|
|
1679
|
+
() => tp && /** @type {boolean | undefined} */ (tp.hasOwn)
|
|
1680
|
+
);
|
|
1312
1681
|
F(
|
|
1313
1682
|
environment,
|
|
1314
1683
|
"bigIntLiteral",
|
|
@@ -1320,6 +1689,22 @@ const applyOutputDefaults = (
|
|
|
1320
1689
|
"const",
|
|
1321
1690
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
1322
1691
|
);
|
|
1692
|
+
// `let` was added after `const`; targets predating it report only `const`,
|
|
1693
|
+
// so fall back to `const` when `let` is unreported (undefined). Targets that
|
|
1694
|
+
// do report `let` (browserslist, built-ins) keep their own accurate value.
|
|
1695
|
+
F(environment, "let", () =>
|
|
1696
|
+
conditionallyOptimistic(
|
|
1697
|
+
/** @type {boolean | undefined} */ (tp && tp.let),
|
|
1698
|
+
environment.const
|
|
1699
|
+
)
|
|
1700
|
+
);
|
|
1701
|
+
F(
|
|
1702
|
+
environment,
|
|
1703
|
+
"logicalAssignment",
|
|
1704
|
+
() =>
|
|
1705
|
+
// No optimistic, because it is new
|
|
1706
|
+
tp && /** @type {boolean | undefined} */ (tp.logicalAssignment)
|
|
1707
|
+
);
|
|
1323
1708
|
F(
|
|
1324
1709
|
environment,
|
|
1325
1710
|
"methodShorthand",
|
|
@@ -1338,6 +1723,11 @@ const applyOutputDefaults = (
|
|
|
1338
1723
|
() =>
|
|
1339
1724
|
tp && optimistic(/** @type {boolean | undefined} */ (tp.asyncFunction))
|
|
1340
1725
|
);
|
|
1726
|
+
F(
|
|
1727
|
+
environment,
|
|
1728
|
+
"generator",
|
|
1729
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.generator))
|
|
1730
|
+
);
|
|
1341
1731
|
F(
|
|
1342
1732
|
environment,
|
|
1343
1733
|
"forOf",
|
|
@@ -1355,6 +1745,11 @@ const applyOutputDefaults = (
|
|
|
1355
1745
|
() =>
|
|
1356
1746
|
tp && optimistic(/** @type {boolean | undefined} */ (tp.optionalChaining))
|
|
1357
1747
|
);
|
|
1748
|
+
F(
|
|
1749
|
+
environment,
|
|
1750
|
+
"spread",
|
|
1751
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.spread))
|
|
1752
|
+
);
|
|
1358
1753
|
F(
|
|
1359
1754
|
environment,
|
|
1360
1755
|
"nodePrefixForCoreModules",
|
|
@@ -1371,6 +1766,13 @@ const applyOutputDefaults = (
|
|
|
1371
1766
|
// No optimistic, because it is new
|
|
1372
1767
|
tp && /** @type {boolean | undefined} */ (tp.importMetaDirnameAndFilename)
|
|
1373
1768
|
);
|
|
1769
|
+
F(
|
|
1770
|
+
environment,
|
|
1771
|
+
"nodeBuiltinModuleGetter",
|
|
1772
|
+
() =>
|
|
1773
|
+
// No optimistic, because it is new
|
|
1774
|
+
tp && /** @type {boolean | undefined} */ (tp.nodeBuiltinModuleGetter)
|
|
1775
|
+
);
|
|
1374
1776
|
F(
|
|
1375
1777
|
environment,
|
|
1376
1778
|
"templateLiteral",
|
|
@@ -1400,6 +1802,30 @@ const applyOutputDefaults = (
|
|
|
1400
1802
|
"document",
|
|
1401
1803
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.document))
|
|
1402
1804
|
);
|
|
1805
|
+
F(
|
|
1806
|
+
environment,
|
|
1807
|
+
"modulePreload",
|
|
1808
|
+
() =>
|
|
1809
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.modulePreload))
|
|
1810
|
+
);
|
|
1811
|
+
|
|
1812
|
+
// Vite-style default for ESM output (`output.module`): preload the entry's
|
|
1813
|
+
// initial dependency graph, which native `import()` would otherwise fetch in
|
|
1814
|
+
// a waterfall. Classic output loads initial chunks via parallel `<script>`
|
|
1815
|
+
// tags (no waterfall), so it stays opt-in.
|
|
1816
|
+
if (output.module && output.resourceHints === undefined) {
|
|
1817
|
+
output.resourceHints = {};
|
|
1818
|
+
}
|
|
1819
|
+
if (output.resourceHints) {
|
|
1820
|
+
if (output.module) D(output.resourceHints, "initial", true);
|
|
1821
|
+
// `modulePreloadPolyfill` defaults from the target's modulepreload
|
|
1822
|
+
// support: inject the polyfill iff the environment lacks it.
|
|
1823
|
+
D(
|
|
1824
|
+
output.resourceHints,
|
|
1825
|
+
"modulePreloadPolyfill",
|
|
1826
|
+
!environment.modulePreload
|
|
1827
|
+
);
|
|
1828
|
+
}
|
|
1403
1829
|
|
|
1404
1830
|
D(output, "filename", output.module ? "[name].mjs" : "[name].js");
|
|
1405
1831
|
F(output, "iife", () => !output.module);
|
|
@@ -1439,8 +1865,48 @@ const applyOutputDefaults = (
|
|
|
1439
1865
|
}
|
|
1440
1866
|
return "[id].css";
|
|
1441
1867
|
});
|
|
1868
|
+
// Derive html filename defaults from `output.filename` / `output.chunkFilename`
|
|
1869
|
+
// (the same shape the CSS pipeline uses), but if the derived template lacks
|
|
1870
|
+
// any per-module differentiator, fall back to `[name].html` so multiple
|
|
1871
|
+
// extracted HTML modules in one compilation don't collide on the same
|
|
1872
|
+
// emitted file. For example: `output.filename: "bundle.js"` would derive
|
|
1873
|
+
// `bundle.html` — two `.html` modules extracted in the same build would
|
|
1874
|
+
// both want that name and conflict at emit time.
|
|
1875
|
+
const HAS_PATH_PLACEHOLDER_REGEXP =
|
|
1876
|
+
/\[(name|id|chunkhash|contenthash|fullhash|hash)/;
|
|
1877
|
+
/**
|
|
1878
|
+
* @param {string} template html filename template derived from `output.filename`
|
|
1879
|
+
* @returns {string} same template, or `[name].html` if it has no per-module placeholder
|
|
1880
|
+
*/
|
|
1881
|
+
const ensureUniqueHtmlTemplate = (template) =>
|
|
1882
|
+
HAS_PATH_PLACEHOLDER_REGEXP.test(template) ? template : "[name].html";
|
|
1883
|
+
F(output, "htmlFilename", () => {
|
|
1884
|
+
const filename =
|
|
1885
|
+
/** @type {NonNullable<Output["htmlFilename"]>} */
|
|
1886
|
+
(output.filename);
|
|
1887
|
+
if (typeof filename !== "function") {
|
|
1888
|
+
return ensureUniqueHtmlTemplate(
|
|
1889
|
+
filename.replace(/\.[mc]?js(\?|$)/, ".html$1")
|
|
1890
|
+
);
|
|
1891
|
+
}
|
|
1892
|
+
return "[name].html";
|
|
1893
|
+
});
|
|
1894
|
+
F(output, "htmlChunkFilename", () => {
|
|
1895
|
+
const chunkFilename =
|
|
1896
|
+
/** @type {NonNullable<Output["htmlChunkFilename"]>} */
|
|
1897
|
+
(output.chunkFilename);
|
|
1898
|
+
if (typeof chunkFilename !== "function") {
|
|
1899
|
+
return ensureUniqueHtmlTemplate(
|
|
1900
|
+
chunkFilename.replace(/\.[mc]?js(\?|$)/, ".html$1")
|
|
1901
|
+
);
|
|
1902
|
+
}
|
|
1903
|
+
return "[name].html";
|
|
1904
|
+
});
|
|
1905
|
+
D(output, "html", false);
|
|
1442
1906
|
D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
|
|
1443
1907
|
D(output, "webassemblyModuleFilename", "[hash].module.wasm");
|
|
1908
|
+
// On by default like other wasm toolchains; set false to drop the fallback runtime code.
|
|
1909
|
+
D(output, "wasmStreamingFallback", true);
|
|
1444
1910
|
D(output, "compareBeforeEmit", true);
|
|
1445
1911
|
D(output, "charset", !futureDefaults);
|
|
1446
1912
|
const uniqueNameId = Template.toIdentifier(
|
|
@@ -1452,8 +1918,11 @@ const applyOutputDefaults = (
|
|
|
1452
1918
|
if (tp) {
|
|
1453
1919
|
if (tp.global) return "global";
|
|
1454
1920
|
if (tp.globalThis) return "globalThis";
|
|
1455
|
-
//
|
|
1456
|
-
|
|
1921
|
+
// Universal target (web + node) with no reported accessor: `globalThis`
|
|
1922
|
+
// is the only one defined everywhere (`null` = mixed support → `self`).
|
|
1923
|
+
if (tp.web === null && tp.node === null && tp.globalThis === undefined) {
|
|
1924
|
+
return "globalThis";
|
|
1925
|
+
}
|
|
1457
1926
|
}
|
|
1458
1927
|
return "self";
|
|
1459
1928
|
});
|
|
@@ -1520,6 +1989,13 @@ const applyOutputDefaults = (
|
|
|
1520
1989
|
}
|
|
1521
1990
|
return false;
|
|
1522
1991
|
});
|
|
1992
|
+
F(
|
|
1993
|
+
output,
|
|
1994
|
+
"workerChunkFilename",
|
|
1995
|
+
() =>
|
|
1996
|
+
/** @type {NonNullable<Output["workerChunkFilename"]>} */
|
|
1997
|
+
(output.chunkFilename)
|
|
1998
|
+
);
|
|
1523
1999
|
F(output, "workerChunkLoading", () => {
|
|
1524
2000
|
if (tp) {
|
|
1525
2001
|
switch (output.chunkFormat) {
|
|
@@ -1576,7 +2052,9 @@ const applyOutputDefaults = (
|
|
|
1576
2052
|
D(
|
|
1577
2053
|
output,
|
|
1578
2054
|
"hotUpdateMainFilename",
|
|
1579
|
-
|
|
2055
|
+
// Only `chunkLoading: "import"` loads the manifest via `import()` (needs an
|
|
2056
|
+
// `export default` ES module); every other loader fetches it as raw JSON.
|
|
2057
|
+
`[runtime].[fullhash].hot-update.${output.chunkLoading === "import" ? "json.mjs" : "json"}`
|
|
1580
2058
|
);
|
|
1581
2059
|
D(output, "crossOriginLoading", false);
|
|
1582
2060
|
F(output, "scriptType", () => (output.module ? "module" : false));
|
|
@@ -1601,6 +2079,7 @@ const applyOutputDefaults = (
|
|
|
1601
2079
|
D(output, "hashDigestLength", futureDefaults ? 16 : 20);
|
|
1602
2080
|
D(output, "strictModuleErrorHandling", false);
|
|
1603
2081
|
D(output, "strictModuleExceptionHandling", false);
|
|
2082
|
+
F(output, "strictModuleResolution", () => development);
|
|
1604
2083
|
|
|
1605
2084
|
const { trustedTypes } = output;
|
|
1606
2085
|
if (trustedTypes) {
|
|
@@ -1615,6 +2094,7 @@ const applyOutputDefaults = (
|
|
|
1615
2094
|
}
|
|
1616
2095
|
|
|
1617
2096
|
/**
|
|
2097
|
+
* Processes the provided fn.
|
|
1618
2098
|
* @param {(entryDescription: EntryDescription) => void} fn iterator
|
|
1619
2099
|
* @returns {void}
|
|
1620
2100
|
*/
|
|
@@ -1673,6 +2153,7 @@ const applyOutputDefaults = (
|
|
|
1673
2153
|
};
|
|
1674
2154
|
|
|
1675
2155
|
/**
|
|
2156
|
+
* Apply externals presets defaults.
|
|
1676
2157
|
* @param {ExternalsPresets} externalsPresets options
|
|
1677
2158
|
* @param {object} options options
|
|
1678
2159
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -1685,6 +2166,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1685
2166
|
{ targetProperties, buildHttp, outputModule }
|
|
1686
2167
|
) => {
|
|
1687
2168
|
/**
|
|
2169
|
+
* Checks whether this object is universal.
|
|
1688
2170
|
* @param {keyof TargetProperties} key a key
|
|
1689
2171
|
* @returns {boolean} true when target is universal, otherwise false
|
|
1690
2172
|
*/
|
|
@@ -1705,7 +2187,25 @@ const applyExternalsPresetsDefaults = (
|
|
|
1705
2187
|
externalsPresets,
|
|
1706
2188
|
"node",
|
|
1707
2189
|
/** @type {boolean | undefined} */
|
|
1708
|
-
(
|
|
2190
|
+
(
|
|
2191
|
+
targetProperties &&
|
|
2192
|
+
((targetProperties.node &&
|
|
2193
|
+
!targetProperties.deno &&
|
|
2194
|
+
!targetProperties.bun) ||
|
|
2195
|
+
isUniversal("node"))
|
|
2196
|
+
)
|
|
2197
|
+
);
|
|
2198
|
+
D(
|
|
2199
|
+
externalsPresets,
|
|
2200
|
+
"deno",
|
|
2201
|
+
/** @type {boolean | undefined} */
|
|
2202
|
+
(Boolean(targetProperties && targetProperties.deno))
|
|
2203
|
+
);
|
|
2204
|
+
D(
|
|
2205
|
+
externalsPresets,
|
|
2206
|
+
"bun",
|
|
2207
|
+
/** @type {boolean | undefined} */
|
|
2208
|
+
(Boolean(targetProperties && targetProperties.bun))
|
|
1709
2209
|
);
|
|
1710
2210
|
D(
|
|
1711
2211
|
externalsPresets,
|
|
@@ -1752,13 +2252,18 @@ const applyExternalsPresetsDefaults = (
|
|
|
1752
2252
|
};
|
|
1753
2253
|
|
|
1754
2254
|
/**
|
|
2255
|
+
* Apply loader defaults.
|
|
1755
2256
|
* @param {Loader} loader options
|
|
1756
2257
|
* @param {object} options options
|
|
1757
2258
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
1758
2259
|
* @param {Environment} options.environment environment
|
|
2260
|
+
* @param {boolean} options.outputModule is output type is module
|
|
1759
2261
|
* @returns {void}
|
|
1760
2262
|
*/
|
|
1761
|
-
const applyLoaderDefaults = (
|
|
2263
|
+
const applyLoaderDefaults = (
|
|
2264
|
+
loader,
|
|
2265
|
+
{ targetProperties, environment, outputModule }
|
|
2266
|
+
) => {
|
|
1762
2267
|
F(loader, "target", () => {
|
|
1763
2268
|
if (targetProperties) {
|
|
1764
2269
|
if (targetProperties.electron) {
|
|
@@ -1768,14 +2273,26 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
|
|
|
1768
2273
|
return "electron";
|
|
1769
2274
|
}
|
|
1770
2275
|
if (targetProperties.nwjs) return "nwjs";
|
|
2276
|
+
if (targetProperties.deno) return "deno";
|
|
2277
|
+
if (targetProperties.bun) return "bun";
|
|
1771
2278
|
if (targetProperties.node) return "node";
|
|
1772
2279
|
if (targetProperties.web) return "web";
|
|
2280
|
+
// no single platform to report: the bundle runs on both (target
|
|
2281
|
+
// `"universal"` / `["web", "node"]`), so loaders get `"universal"`
|
|
2282
|
+
if (
|
|
2283
|
+
outputModule &&
|
|
2284
|
+
targetProperties.node === null &&
|
|
2285
|
+
targetProperties.web === null
|
|
2286
|
+
) {
|
|
2287
|
+
return "universal";
|
|
2288
|
+
}
|
|
1773
2289
|
}
|
|
1774
2290
|
});
|
|
1775
2291
|
D(loader, "environment", environment);
|
|
1776
2292
|
};
|
|
1777
2293
|
|
|
1778
2294
|
/**
|
|
2295
|
+
* Apply node defaults.
|
|
1779
2296
|
* @param {WebpackNode} node options
|
|
1780
2297
|
* @param {object} options options
|
|
1781
2298
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
@@ -1821,6 +2338,7 @@ const applyNodeDefaults = (
|
|
|
1821
2338
|
};
|
|
1822
2339
|
|
|
1823
2340
|
/**
|
|
2341
|
+
* Apply performance defaults.
|
|
1824
2342
|
* @param {Performance} performance options
|
|
1825
2343
|
* @param {object} options options
|
|
1826
2344
|
* @param {boolean} options.production is production
|
|
@@ -1834,6 +2352,7 @@ const applyPerformanceDefaults = (performance, { production }) => {
|
|
|
1834
2352
|
};
|
|
1835
2353
|
|
|
1836
2354
|
/**
|
|
2355
|
+
* Apply optimization defaults.
|
|
1837
2356
|
* @param {Optimization} optimization options
|
|
1838
2357
|
* @param {object} options options
|
|
1839
2358
|
* @param {boolean} options.production is production
|
|
@@ -1864,6 +2383,7 @@ const applyOptimizationDefaults = (
|
|
|
1864
2383
|
D(optimization, "providedExports", true);
|
|
1865
2384
|
D(optimization, "usedExports", production);
|
|
1866
2385
|
D(optimization, "innerGraph", production);
|
|
2386
|
+
D(optimization, "inlineExports", production);
|
|
1867
2387
|
D(optimization, "mangleExports", production);
|
|
1868
2388
|
D(optimization, "concatenateModules", production);
|
|
1869
2389
|
D(optimization, "avoidEntryIife", production);
|
|
@@ -1877,8 +2397,8 @@ const applyOptimizationDefaults = (
|
|
|
1877
2397
|
A(optimization, "minimizer", () => [
|
|
1878
2398
|
{
|
|
1879
2399
|
apply: (compiler) => {
|
|
1880
|
-
// Lazy load the
|
|
1881
|
-
const TerserPlugin = require("
|
|
2400
|
+
// Lazy load the minimizer plugin
|
|
2401
|
+
const TerserPlugin = require("minimizer-webpack-plugin");
|
|
1882
2402
|
|
|
1883
2403
|
new TerserPlugin({
|
|
1884
2404
|
terserOptions: {
|
|
@@ -1931,12 +2451,16 @@ const applyOptimizationDefaults = (
|
|
|
1931
2451
|
};
|
|
1932
2452
|
|
|
1933
2453
|
/**
|
|
2454
|
+
* Gets resolve defaults.
|
|
1934
2455
|
* @param {object} options options
|
|
1935
2456
|
* @param {boolean} options.cache is cache enable
|
|
1936
2457
|
* @param {string} options.context build context
|
|
1937
2458
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
1938
2459
|
* @param {Mode} options.mode mode
|
|
1939
2460
|
* @param {boolean} options.css is css enabled
|
|
2461
|
+
* @param {boolean} options.html is html enabled
|
|
2462
|
+
* @param {boolean} options.htmlFirst whether `.html` should outrank `.js` when resolving (only when html was explicitly enabled)
|
|
2463
|
+
* @param {boolean} options.typescript is typescript enabled
|
|
1940
2464
|
* @returns {ResolveOptions} resolve options
|
|
1941
2465
|
*/
|
|
1942
2466
|
const getResolveDefaults = ({
|
|
@@ -1944,7 +2468,10 @@ const getResolveDefaults = ({
|
|
|
1944
2468
|
context,
|
|
1945
2469
|
targetProperties,
|
|
1946
2470
|
mode,
|
|
1947
|
-
css
|
|
2471
|
+
css,
|
|
2472
|
+
html,
|
|
2473
|
+
htmlFirst,
|
|
2474
|
+
typescript
|
|
1948
2475
|
}) => {
|
|
1949
2476
|
/** @type {string[]} */
|
|
1950
2477
|
const conditions = ["webpack"];
|
|
@@ -1952,6 +2479,8 @@ const getResolveDefaults = ({
|
|
|
1952
2479
|
conditions.push(mode === "development" ? "development" : "production");
|
|
1953
2480
|
|
|
1954
2481
|
if (targetProperties) {
|
|
2482
|
+
if (targetProperties.deno) conditions.push("deno");
|
|
2483
|
+
if (targetProperties.bun) conditions.push("bun");
|
|
1955
2484
|
if (targetProperties.webworker) conditions.push("worker");
|
|
1956
2485
|
if (targetProperties.node) conditions.push("node");
|
|
1957
2486
|
if (targetProperties.web) conditions.push("browser");
|
|
@@ -1959,25 +2488,54 @@ const getResolveDefaults = ({
|
|
|
1959
2488
|
if (targetProperties.nwjs) conditions.push("nwjs");
|
|
1960
2489
|
}
|
|
1961
2490
|
|
|
1962
|
-
const jsExtensions =
|
|
2491
|
+
const jsExtensions = typescript
|
|
2492
|
+
? [".ts", ".js", ".json", ".wasm"]
|
|
2493
|
+
: [".js", ".json", ".wasm"];
|
|
2494
|
+
|
|
2495
|
+
// Explicitly enabling html keeps `.html` ahead of `.js` (html-as-entry feature).
|
|
2496
|
+
// Auto-enabled html/css are lower-priority fallbacks after `.js`, so enabling
|
|
2497
|
+
// them by default never makes `x.html`/`x.css` shadow `x.js`.
|
|
2498
|
+
const esmResolveExtensions = [
|
|
2499
|
+
...(html && htmlFirst ? [".html"] : []),
|
|
2500
|
+
...jsExtensions,
|
|
2501
|
+
...(html && !htmlFirst ? [".html"] : []),
|
|
2502
|
+
...(css ? [".css"] : [])
|
|
2503
|
+
];
|
|
1963
2504
|
|
|
1964
2505
|
const tp = targetProperties;
|
|
1965
2506
|
const browserField =
|
|
1966
2507
|
tp && tp.web && (!tp.node || (tp.electron && tp.electronRenderer));
|
|
1967
2508
|
|
|
2509
|
+
// When `experiments.typescript` is on, also honor the `typescript`
|
|
2510
|
+
// conditional-exports key so monorepo packages can ship .ts sources via
|
|
2511
|
+
// `package.json#exports` — same convention Node.js's amaro uses.
|
|
2512
|
+
const tsConditionPrefix = typescript ? ["typescript"] : [];
|
|
2513
|
+
|
|
1968
2514
|
/** @type {() => ResolveOptions} */
|
|
1969
2515
|
const cjsDeps = () => ({
|
|
1970
2516
|
aliasFields: browserField ? ["browser"] : [],
|
|
1971
2517
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
1972
|
-
conditionNames: [
|
|
2518
|
+
conditionNames: [
|
|
2519
|
+
...tsConditionPrefix,
|
|
2520
|
+
"require",
|
|
2521
|
+
"module-sync",
|
|
2522
|
+
"module",
|
|
2523
|
+
"..."
|
|
2524
|
+
],
|
|
1973
2525
|
extensions: [...jsExtensions]
|
|
1974
2526
|
});
|
|
1975
2527
|
/** @type {() => ResolveOptions} */
|
|
1976
2528
|
const esmDeps = () => ({
|
|
1977
2529
|
aliasFields: browserField ? ["browser"] : [],
|
|
1978
2530
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
1979
|
-
conditionNames: [
|
|
1980
|
-
|
|
2531
|
+
conditionNames: [
|
|
2532
|
+
...tsConditionPrefix,
|
|
2533
|
+
"import",
|
|
2534
|
+
"module-sync",
|
|
2535
|
+
"module",
|
|
2536
|
+
"..."
|
|
2537
|
+
],
|
|
2538
|
+
extensions: [...esmResolveExtensions]
|
|
1981
2539
|
});
|
|
1982
2540
|
|
|
1983
2541
|
/** @type {() => ResolveOptions} */
|
|
@@ -2057,10 +2615,20 @@ const getResolveDefaults = ({
|
|
|
2057
2615
|
cssResolveOptions;
|
|
2058
2616
|
}
|
|
2059
2617
|
|
|
2618
|
+
if (typescript) {
|
|
2619
|
+
resolveOptions.tsconfig = true;
|
|
2620
|
+
resolveOptions.extensionAlias = {
|
|
2621
|
+
".js": [".js", ".ts"],
|
|
2622
|
+
".cjs": [".cjs", ".cts"],
|
|
2623
|
+
".mjs": [".mjs", ".mts"]
|
|
2624
|
+
};
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2060
2627
|
return resolveOptions;
|
|
2061
2628
|
};
|
|
2062
2629
|
|
|
2063
2630
|
/**
|
|
2631
|
+
* Gets resolve loader defaults.
|
|
2064
2632
|
* @param {object} options options
|
|
2065
2633
|
* @param {boolean} options.cache is cache enable
|
|
2066
2634
|
* @returns {ResolveOptions} resolve options
|
|
@@ -2080,6 +2648,7 @@ const getResolveLoaderDefaults = ({ cache }) => {
|
|
|
2080
2648
|
};
|
|
2081
2649
|
|
|
2082
2650
|
/**
|
|
2651
|
+
* Apply infrastructure logging defaults.
|
|
2083
2652
|
* @param {InfrastructureLogging} infrastructureLogging options
|
|
2084
2653
|
* @returns {void}
|
|
2085
2654
|
*/
|