webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/config/defaults.js
CHANGED
|
@@ -8,36 +8,40 @@
|
|
|
8
8
|
const fs = require("fs");
|
|
9
9
|
const path = require("path");
|
|
10
10
|
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
WEBASSEMBLY_MODULE_TYPE_SYNC,
|
|
11
|
+
CSS_TYPE,
|
|
12
|
+
JAVASCRIPT_TYPE,
|
|
13
|
+
UNKNOWN_TYPE
|
|
14
|
+
} = require("../ModuleSourceTypeConstants");
|
|
15
|
+
const {
|
|
17
16
|
ASSET_MODULE_TYPE,
|
|
17
|
+
ASSET_MODULE_TYPE_BYTES,
|
|
18
18
|
ASSET_MODULE_TYPE_INLINE,
|
|
19
19
|
ASSET_MODULE_TYPE_RESOURCE,
|
|
20
|
-
|
|
20
|
+
ASSET_MODULE_TYPE_SOURCE,
|
|
21
21
|
CSS_MODULE_TYPE,
|
|
22
|
+
CSS_MODULE_TYPE_AUTO,
|
|
23
|
+
CSS_MODULE_TYPE_GLOBAL,
|
|
22
24
|
CSS_MODULE_TYPE_MODULE,
|
|
23
|
-
|
|
25
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
26
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
27
|
+
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
28
|
+
JSON_MODULE_TYPE,
|
|
29
|
+
WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
|
30
|
+
WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
24
31
|
} = require("../ModuleTypeConstants");
|
|
25
32
|
const Template = require("../Template");
|
|
26
33
|
const { cleverMerge } = require("../util/cleverMerge");
|
|
27
34
|
const {
|
|
28
|
-
|
|
35
|
+
getDefaultTarget,
|
|
29
36
|
getTargetProperties,
|
|
30
|
-
|
|
37
|
+
getTargetsProperties
|
|
31
38
|
} = require("./target");
|
|
32
39
|
|
|
33
|
-
/** @typedef {import("../../declarations/WebpackOptions").CacheOptions} CacheOptions */
|
|
34
40
|
/** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptionsNormalized */
|
|
35
41
|
/** @typedef {import("../../declarations/WebpackOptions").Context} Context */
|
|
36
42
|
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
|
|
37
|
-
/** @typedef {import("../../declarations/WebpackOptions").CssParserOptions} CssParserOptions */
|
|
38
43
|
/** @typedef {import("../../declarations/WebpackOptions").EntryDescription} EntryDescription */
|
|
39
44
|
/** @typedef {import("../../declarations/WebpackOptions").EntryNormalized} Entry */
|
|
40
|
-
/** @typedef {import("../../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
|
|
41
45
|
/** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
|
|
42
46
|
/** @typedef {import("../../declarations/WebpackOptions").Experiments} Experiments */
|
|
43
47
|
/** @typedef {import("../../declarations/WebpackOptions").ExperimentsNormalized} ExperimentsNormalized */
|
|
@@ -47,15 +51,18 @@ const {
|
|
|
47
51
|
/** @typedef {import("../../declarations/WebpackOptions").GeneratorOptionsByModuleTypeKnown} GeneratorOptionsByModuleTypeKnown */
|
|
48
52
|
/** @typedef {import("../../declarations/WebpackOptions").InfrastructureLogging} InfrastructureLogging */
|
|
49
53
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
54
|
+
/** @typedef {import("../../declarations/WebpackOptions").JsonGeneratorOptions} JsonGeneratorOptions */
|
|
50
55
|
/** @typedef {import("../../declarations/WebpackOptions").Library} Library */
|
|
51
56
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
|
|
52
|
-
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
|
53
57
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
54
58
|
/** @typedef {import("../../declarations/WebpackOptions").Loader} Loader */
|
|
55
59
|
/** @typedef {import("../../declarations/WebpackOptions").Mode} Mode */
|
|
60
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashSalt */
|
|
61
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashDigest */
|
|
62
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashDigestLength} HashDigestLength */
|
|
56
63
|
/** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
|
|
57
64
|
/** @typedef {import("../../declarations/WebpackOptions").Node} WebpackNode */
|
|
58
|
-
/** @typedef {import("../../declarations/WebpackOptions").
|
|
65
|
+
/** @typedef {import("../../declarations/WebpackOptions").OptimizationNormalized} Optimization */
|
|
59
66
|
/** @typedef {import("../../declarations/WebpackOptions").OptimizationSplitChunksOptions} OptimizationSplitChunksOptions */
|
|
60
67
|
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
|
|
61
68
|
/** @typedef {import("../../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
|
|
@@ -63,14 +70,150 @@ const {
|
|
|
63
70
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
64
71
|
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRules} RuleSetRules */
|
|
65
72
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
|
66
|
-
/** @typedef {import("../../declarations/WebpackOptions").Target} Target */
|
|
67
|
-
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
|
|
68
73
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
|
69
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
70
74
|
/** @typedef {import("../Module")} Module */
|
|
71
75
|
/** @typedef {import("./target").PlatformTargetProperties} PlatformTargetProperties */
|
|
72
76
|
/** @typedef {import("./target").TargetProperties} TargetProperties */
|
|
73
77
|
|
|
78
|
+
/**
|
|
79
|
+
* @template T
|
|
80
|
+
* @typedef {{ [P in keyof T]-?: T[P] extends object ? RecursiveNonNullable<NonNullable<T[P]>> : NonNullable<T[P]> }} RecursiveNonNullable
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @typedef {Output & {
|
|
85
|
+
* uniqueName: NonNullable<Output["uniqueName"]>,
|
|
86
|
+
* filename: NonNullable<Output["filename"]>,
|
|
87
|
+
* cssFilename: NonNullable<Output["cssFilename"]>,
|
|
88
|
+
* chunkFilename: NonNullable<Output["chunkFilename"]>,
|
|
89
|
+
* cssChunkFilename: NonNullable<Output["cssChunkFilename"]>,
|
|
90
|
+
* hotUpdateChunkFilename: NonNullable<Output["hotUpdateChunkFilename"]>,
|
|
91
|
+
* hotUpdateGlobal: NonNullable<Output["hotUpdateGlobal"]>,
|
|
92
|
+
* assetModuleFilename: NonNullable<Output["assetModuleFilename"]>,
|
|
93
|
+
* webassemblyModuleFilename: NonNullable<Output["webassemblyModuleFilename"]>
|
|
94
|
+
* sourceMapFilename: NonNullable<Output["sourceMapFilename"]>,
|
|
95
|
+
* hotUpdateMainFilename: NonNullable<Output["hotUpdateMainFilename"]>,
|
|
96
|
+
* devtoolNamespace: NonNullable<Output["devtoolNamespace"]>,
|
|
97
|
+
* publicPath: NonNullable<Output["publicPath"]>
|
|
98
|
+
* workerPublicPath: NonNullable<Output["workerPublicPath"]>
|
|
99
|
+
* workerWasmLoading: NonNullable<Output["workerWasmLoading"]>
|
|
100
|
+
* workerChunkLoading: NonNullable<Output["workerChunkLoading"]>
|
|
101
|
+
* chunkFormat: NonNullable<Output["chunkFormat"]>,
|
|
102
|
+
* module: NonNullable<Output["module"]>,
|
|
103
|
+
* asyncChunks: NonNullable<Output["asyncChunks"]>,
|
|
104
|
+
* charset: NonNullable<Output["charset"]>,
|
|
105
|
+
* iife: NonNullable<Output["iife"]>,
|
|
106
|
+
* globalObject: NonNullable<Output["globalObject"]>,
|
|
107
|
+
* scriptType: NonNullable<Output["scriptType"]>,
|
|
108
|
+
* path: NonNullable<Output["path"]>,
|
|
109
|
+
* pathinfo: NonNullable<Output["pathinfo"]>,
|
|
110
|
+
* hashFunction: NonNullable<Output["hashFunction"]>,
|
|
111
|
+
* hashDigest: NonNullable<Output["hashDigest"]>,
|
|
112
|
+
* hashDigestLength: NonNullable<Output["hashDigestLength"]>,
|
|
113
|
+
* chunkLoadTimeout: NonNullable<Output["chunkLoadTimeout"]>,
|
|
114
|
+
* chunkLoading: NonNullable<Output["chunkLoading"]>,
|
|
115
|
+
* chunkLoadingGlobal: NonNullable<Output["chunkLoadingGlobal"]>,
|
|
116
|
+
* compareBeforeEmit: NonNullable<Output["compareBeforeEmit"]>,
|
|
117
|
+
* strictModuleErrorHandling: NonNullable<Output["strictModuleErrorHandling"]>,
|
|
118
|
+
* strictModuleExceptionHandling: NonNullable<Output["strictModuleExceptionHandling"]>,
|
|
119
|
+
* importFunctionName: NonNullable<Output["importFunctionName"]>,
|
|
120
|
+
* importMetaName: NonNullable<Output["importMetaName"]>,
|
|
121
|
+
* environment: RecursiveNonNullable<Output["environment"]>,
|
|
122
|
+
* crossOriginLoading: NonNullable<Output["crossOriginLoading"]>,
|
|
123
|
+
* wasmLoading: NonNullable<Output["wasmLoading"]>,
|
|
124
|
+
* }} OutputNormalizedWithDefaults
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @typedef {SnapshotOptions & {
|
|
129
|
+
* managedPaths: NonNullable<SnapshotOptions["managedPaths"]>,
|
|
130
|
+
* unmanagedPaths: NonNullable<SnapshotOptions["unmanagedPaths"]>,
|
|
131
|
+
* immutablePaths: NonNullable<SnapshotOptions["immutablePaths"]>,
|
|
132
|
+
* resolveBuildDependencies: NonNullable<SnapshotOptions["resolveBuildDependencies"]>,
|
|
133
|
+
* buildDependencies: NonNullable<SnapshotOptions["buildDependencies"]>,
|
|
134
|
+
* module: NonNullable<SnapshotOptions["module"]>,
|
|
135
|
+
* resolve: NonNullable<SnapshotOptions["resolve"]>,
|
|
136
|
+
* }} SnapshotNormalizedWithDefaults
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @typedef {Optimization & {
|
|
141
|
+
* runtimeChunk: NonNullable<Optimization["runtimeChunk"]>,
|
|
142
|
+
* splitChunks: NonNullable<Optimization["splitChunks"]>,
|
|
143
|
+
* mergeDuplicateChunks: NonNullable<Optimization["mergeDuplicateChunks"]>,
|
|
144
|
+
* removeAvailableModules: NonNullable<Optimization["removeAvailableModules"]>,
|
|
145
|
+
* removeEmptyChunks: NonNullable<Optimization["removeEmptyChunks"]>,
|
|
146
|
+
* flagIncludedChunks: NonNullable<Optimization["flagIncludedChunks"]>,
|
|
147
|
+
* moduleIds: NonNullable<Optimization["moduleIds"]>,
|
|
148
|
+
* chunkIds: NonNullable<Optimization["chunkIds"]>,
|
|
149
|
+
* sideEffects: NonNullable<Optimization["sideEffects"]>,
|
|
150
|
+
* providedExports: NonNullable<Optimization["providedExports"]>,
|
|
151
|
+
* usedExports: NonNullable<Optimization["usedExports"]>,
|
|
152
|
+
* mangleExports: NonNullable<Optimization["mangleExports"]>,
|
|
153
|
+
* innerGraph: NonNullable<Optimization["innerGraph"]>,
|
|
154
|
+
* concatenateModules: NonNullable<Optimization["concatenateModules"]>,
|
|
155
|
+
* avoidEntryIife: NonNullable<Optimization["avoidEntryIife"]>,
|
|
156
|
+
* emitOnErrors: NonNullable<Optimization["emitOnErrors"]>,
|
|
157
|
+
* checkWasmTypes: NonNullable<Optimization["checkWasmTypes"]>,
|
|
158
|
+
* mangleWasmImports: NonNullable<Optimization["mangleWasmImports"]>,
|
|
159
|
+
* portableRecords: NonNullable<Optimization["portableRecords"]>,
|
|
160
|
+
* realContentHash: NonNullable<Optimization["realContentHash"]>,
|
|
161
|
+
* minimize: NonNullable<Optimization["minimize"]>,
|
|
162
|
+
* minimizer: NonNullable<Exclude<Optimization["minimizer"], "...">>,
|
|
163
|
+
* nodeEnv: NonNullable<Optimization["nodeEnv"]>,
|
|
164
|
+
* }} OptimizationNormalizedWithDefaults
|
|
165
|
+
*/
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @typedef {ExternalsPresets & {
|
|
169
|
+
* web: NonNullable<ExternalsPresets["web"]>,
|
|
170
|
+
* node: NonNullable<ExternalsPresets["node"]>,
|
|
171
|
+
* nwjs: NonNullable<ExternalsPresets["nwjs"]>,
|
|
172
|
+
* electron: NonNullable<ExternalsPresets["electron"]>,
|
|
173
|
+
* electronMain: NonNullable<ExternalsPresets["electronMain"]>,
|
|
174
|
+
* electronPreload: NonNullable<ExternalsPresets["electronPreload"]>,
|
|
175
|
+
* electronRenderer: NonNullable<ExternalsPresets["electronRenderer"]>,
|
|
176
|
+
* }} ExternalsPresetsNormalizedWithDefaults
|
|
177
|
+
*/
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @typedef {InfrastructureLogging & {
|
|
181
|
+
* stream: NonNullable<InfrastructureLogging["stream"]>,
|
|
182
|
+
* level: NonNullable<InfrastructureLogging["level"]>,
|
|
183
|
+
* debug: NonNullable<InfrastructureLogging["debug"]>,
|
|
184
|
+
* colors: NonNullable<InfrastructureLogging["colors"]>,
|
|
185
|
+
* appendOnly: NonNullable<InfrastructureLogging["appendOnly"]>,
|
|
186
|
+
* }} InfrastructureLoggingNormalizedWithDefaults
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* @typedef {WebpackOptionsNormalized
|
|
191
|
+
* & { context: NonNullable<WebpackOptionsNormalized["context"]> }
|
|
192
|
+
* & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }
|
|
193
|
+
* } WebpackOptionsNormalizedWithBaseDefaults
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @typedef {WebpackOptionsNormalizedWithBaseDefaults
|
|
198
|
+
* & { target: NonNullable<WebpackOptionsNormalized["target"]> }
|
|
199
|
+
* & { output: OutputNormalizedWithDefaults }
|
|
200
|
+
* & { optimization: OptimizationNormalizedWithDefaults }
|
|
201
|
+
* & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> }
|
|
202
|
+
* & { stats: NonNullable<WebpackOptionsNormalized["stats"]> }
|
|
203
|
+
* & { node: NonNullable<WebpackOptionsNormalized["node"]> }
|
|
204
|
+
* & { profile: NonNullable<WebpackOptionsNormalized["profile"]> }
|
|
205
|
+
* & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> }
|
|
206
|
+
* & { snapshot: SnapshotNormalizedWithDefaults }
|
|
207
|
+
* & { externalsPresets: ExternalsPresetsNormalizedWithDefaults }
|
|
208
|
+
* & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> }
|
|
209
|
+
* & { watch: NonNullable<WebpackOptionsNormalized["watch"]> }
|
|
210
|
+
* & { performance: NonNullable<WebpackOptionsNormalized["performance"]> }
|
|
211
|
+
* & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> }
|
|
212
|
+
* & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]>
|
|
213
|
+
* & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }
|
|
214
|
+
* }} WebpackOptionsNormalizedWithDefaults
|
|
215
|
+
*/
|
|
216
|
+
|
|
74
217
|
/**
|
|
75
218
|
* @typedef {object} ResolvedOptions
|
|
76
219
|
* @property {PlatformTargetProperties | false} platform - platform target properties
|
|
@@ -78,6 +221,10 @@ const {
|
|
|
78
221
|
|
|
79
222
|
const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
|
|
80
223
|
const DEFAULT_CACHE_NAME = "default";
|
|
224
|
+
const DEFAULTS = {
|
|
225
|
+
// TODO webpack 6 - use xxhash64
|
|
226
|
+
HASH_FUNCTION: "md4"
|
|
227
|
+
};
|
|
81
228
|
|
|
82
229
|
/**
|
|
83
230
|
* Sets a constant default value when undefined
|
|
@@ -100,7 +247,7 @@ const D = (obj, prop, value) => {
|
|
|
100
247
|
* @template {keyof T} P
|
|
101
248
|
* @param {T} obj an object
|
|
102
249
|
* @param {P} prop a property of this object
|
|
103
|
-
* @param {
|
|
250
|
+
* @param {() => T[P]} factory a default value factory for the property
|
|
104
251
|
* @returns {void}
|
|
105
252
|
*/
|
|
106
253
|
const F = (obj, prop, factory) => {
|
|
@@ -118,7 +265,7 @@ const F = (obj, prop, factory) => {
|
|
|
118
265
|
* @template {keyof T} P
|
|
119
266
|
* @param {T} obj an object
|
|
120
267
|
* @param {P} prop a property of this object
|
|
121
|
-
* @param {
|
|
268
|
+
* @param {() => T[P]} factory a default value factory for the property
|
|
122
269
|
* @returns {void}
|
|
123
270
|
*/
|
|
124
271
|
const A = (obj, prop, factory) => {
|
|
@@ -135,9 +282,9 @@ const A = (obj, prop, factory) => {
|
|
|
135
282
|
newArray = value.slice(0, i);
|
|
136
283
|
obj[prop] = /** @type {T[P]} */ (/** @type {unknown} */ (newArray));
|
|
137
284
|
}
|
|
138
|
-
const items =
|
|
139
|
-
/** @type {
|
|
140
|
-
|
|
285
|
+
const items =
|
|
286
|
+
/** @type {EXPECTED_ANY[]} */
|
|
287
|
+
(/** @type {unknown} */ (factory()));
|
|
141
288
|
if (items !== undefined) {
|
|
142
289
|
for (const item of items) {
|
|
143
290
|
newArray.push(item);
|
|
@@ -154,14 +301,14 @@ const A = (obj, prop, factory) => {
|
|
|
154
301
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
155
302
|
* @returns {void}
|
|
156
303
|
*/
|
|
157
|
-
const applyWebpackOptionsBaseDefaults = options => {
|
|
304
|
+
const applyWebpackOptionsBaseDefaults = (options) => {
|
|
158
305
|
F(options, "context", () => process.cwd());
|
|
159
306
|
applyInfrastructureLoggingDefaults(options.infrastructureLogging);
|
|
160
307
|
};
|
|
161
308
|
|
|
162
309
|
/**
|
|
163
310
|
* @param {WebpackOptionsNormalized} options options to be modified
|
|
164
|
-
* @param {number}
|
|
311
|
+
* @param {number=} compilerIndex index of compiler
|
|
165
312
|
* @returns {ResolvedOptions} Resolved options after apply defaults
|
|
166
313
|
*/
|
|
167
314
|
const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
@@ -220,6 +367,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
220
367
|
mode: mode || "production",
|
|
221
368
|
development,
|
|
222
369
|
cacheUnaffected: options.experiments.cacheUnaffected,
|
|
370
|
+
futureDefaults,
|
|
223
371
|
compilerIndex
|
|
224
372
|
});
|
|
225
373
|
const cache = Boolean(options.cache);
|
|
@@ -236,7 +384,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
236
384
|
target === undefined ||
|
|
237
385
|
(typeof target === "string" && target.startsWith("browserslist")) ||
|
|
238
386
|
(Array.isArray(target) &&
|
|
239
|
-
target.some(target => target.startsWith("browserslist"))),
|
|
387
|
+
target.some((target) => target.startsWith("browserslist"))),
|
|
240
388
|
outputModule:
|
|
241
389
|
/** @type {NonNullable<ExperimentsNormalized["outputModule"]>} */
|
|
242
390
|
(options.experiments.outputModule),
|
|
@@ -250,6 +398,15 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
250
398
|
|
|
251
399
|
applyModuleDefaults(options.module, {
|
|
252
400
|
cache,
|
|
401
|
+
hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
|
|
402
|
+
options.output.hashSalt
|
|
403
|
+
),
|
|
404
|
+
hashDigest: /** @type {NonNullable<Output["hashDigest"]>} */ (
|
|
405
|
+
options.output.hashDigest
|
|
406
|
+
),
|
|
407
|
+
hashDigestLength: /** @type {NonNullable<Output["hashDigestLength"]>} */ (
|
|
408
|
+
options.output.hashDigestLength
|
|
409
|
+
),
|
|
253
410
|
syncWebAssembly:
|
|
254
411
|
/** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
|
|
255
412
|
(options.experiments.syncWebAssembly),
|
|
@@ -259,15 +416,22 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
259
416
|
css:
|
|
260
417
|
/** @type {NonNullable<ExperimentsNormalized["css"]>} */
|
|
261
418
|
(options.experiments.css),
|
|
419
|
+
deferImport:
|
|
420
|
+
/** @type {NonNullable<ExperimentsNormalized["deferImport"]>} */
|
|
421
|
+
(options.experiments.deferImport),
|
|
262
422
|
futureDefaults,
|
|
263
423
|
isNode: targetProperties && targetProperties.node === true,
|
|
264
|
-
uniqueName: options.output.uniqueName,
|
|
265
|
-
targetProperties
|
|
424
|
+
uniqueName: /** @type {string} */ (options.output.uniqueName),
|
|
425
|
+
targetProperties,
|
|
426
|
+
mode: options.mode
|
|
266
427
|
});
|
|
267
428
|
|
|
268
429
|
applyExternalsPresetsDefaults(options.externalsPresets, {
|
|
269
430
|
targetProperties,
|
|
270
|
-
buildHttp: Boolean(options.experiments.buildHttp)
|
|
431
|
+
buildHttp: Boolean(options.experiments.buildHttp),
|
|
432
|
+
outputModule:
|
|
433
|
+
/** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
|
|
434
|
+
(options.output.module)
|
|
271
435
|
});
|
|
272
436
|
|
|
273
437
|
applyLoaderDefaults(
|
|
@@ -280,6 +444,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
280
444
|
F(options, "externalsType", () => {
|
|
281
445
|
const validExternalTypes = require("../../schemas/WebpackOptions.json")
|
|
282
446
|
.definitions.ExternalsType.enum;
|
|
447
|
+
|
|
283
448
|
return options.output.library &&
|
|
284
449
|
validExternalTypes.includes(options.output.library.type)
|
|
285
450
|
? /** @type {ExternalsType} */ (options.output.library.type)
|
|
@@ -369,22 +534,16 @@ const applyExperimentsDefaults = (
|
|
|
369
534
|
) => {
|
|
370
535
|
D(experiments, "futureDefaults", false);
|
|
371
536
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
|
537
|
+
// TODO do we need sync web assembly in webpack@6?
|
|
372
538
|
D(experiments, "syncWebAssembly", false);
|
|
373
539
|
D(experiments, "asyncWebAssembly", experiments.futureDefaults);
|
|
374
540
|
D(experiments, "outputModule", false);
|
|
375
|
-
D(experiments, "layers", false);
|
|
376
541
|
D(experiments, "lazyCompilation", undefined);
|
|
377
542
|
D(experiments, "buildHttp", undefined);
|
|
378
543
|
D(experiments, "cacheUnaffected", experiments.futureDefaults);
|
|
544
|
+
D(experiments, "deferImport", false);
|
|
379
545
|
F(experiments, "css", () => (experiments.futureDefaults ? true : undefined));
|
|
380
546
|
|
|
381
|
-
// TODO webpack 6: remove this. topLevelAwait should be enabled by default
|
|
382
|
-
let shouldEnableTopLevelAwait = true;
|
|
383
|
-
if (typeof experiments.topLevelAwait === "boolean") {
|
|
384
|
-
shouldEnableTopLevelAwait = experiments.topLevelAwait;
|
|
385
|
-
}
|
|
386
|
-
D(experiments, "topLevelAwait", shouldEnableTopLevelAwait);
|
|
387
|
-
|
|
388
547
|
if (typeof experiments.buildHttp === "object") {
|
|
389
548
|
D(experiments.buildHttp, "frozen", production);
|
|
390
549
|
D(experiments.buildHttp, "upgrade", false);
|
|
@@ -396,14 +555,15 @@ const applyExperimentsDefaults = (
|
|
|
396
555
|
* @param {object} options options
|
|
397
556
|
* @param {string} options.name name
|
|
398
557
|
* @param {Mode} options.mode mode
|
|
558
|
+
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
399
559
|
* @param {boolean} options.development is development mode
|
|
400
|
-
* @param {number}
|
|
560
|
+
* @param {number=} options.compilerIndex index of compiler
|
|
401
561
|
* @param {Experiments["cacheUnaffected"]} options.cacheUnaffected the cacheUnaffected experiment is enabled
|
|
402
562
|
* @returns {void}
|
|
403
563
|
*/
|
|
404
564
|
const applyCacheDefaults = (
|
|
405
565
|
cache,
|
|
406
|
-
{ name, mode, development, cacheUnaffected, compilerIndex }
|
|
566
|
+
{ name, mode, development, cacheUnaffected, compilerIndex, futureDefaults }
|
|
407
567
|
) => {
|
|
408
568
|
if (cache === false) return;
|
|
409
569
|
switch (cache.type) {
|
|
@@ -446,7 +606,7 @@ const applyCacheDefaults = (
|
|
|
446
606
|
/** @type {NonNullable<FileCacheOptions["name"]>} */ (cache.name)
|
|
447
607
|
)
|
|
448
608
|
);
|
|
449
|
-
D(cache, "hashAlgorithm", "md4");
|
|
609
|
+
D(cache, "hashAlgorithm", futureDefaults ? "xxhash64" : "md4");
|
|
450
610
|
D(cache, "store", "pack");
|
|
451
611
|
D(cache, "compression", false);
|
|
452
612
|
D(cache, "profile", false);
|
|
@@ -543,6 +703,7 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
543
703
|
F(snapshot, "module", () =>
|
|
544
704
|
production ? { timestamp: true, hash: true } : { timestamp: true }
|
|
545
705
|
);
|
|
706
|
+
F(snapshot, "contextModule", () => ({ timestamp: true }));
|
|
546
707
|
F(snapshot, "resolve", () =>
|
|
547
708
|
production ? { timestamp: true, hash: true } : { timestamp: true }
|
|
548
709
|
);
|
|
@@ -552,12 +713,13 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
|
|
|
552
713
|
* @param {JavascriptParserOptions} parserOptions parser options
|
|
553
714
|
* @param {object} options options
|
|
554
715
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
716
|
+
* @param {boolean} options.deferImport is defer import enabled
|
|
555
717
|
* @param {boolean} options.isNode is node target platform
|
|
556
718
|
* @returns {void}
|
|
557
719
|
*/
|
|
558
720
|
const applyJavascriptParserOptionsDefaults = (
|
|
559
721
|
parserOptions,
|
|
560
|
-
{ futureDefaults, isNode }
|
|
722
|
+
{ futureDefaults, deferImport, isNode }
|
|
561
723
|
) => {
|
|
562
724
|
D(parserOptions, "unknownContextRequest", ".");
|
|
563
725
|
D(parserOptions, "unknownContextRegExp", false);
|
|
@@ -577,9 +739,19 @@ const applyJavascriptParserOptionsDefaults = (
|
|
|
577
739
|
D(parserOptions, "dynamicImportPreload", false);
|
|
578
740
|
D(parserOptions, "dynamicImportFetchPriority", false);
|
|
579
741
|
D(parserOptions, "createRequire", isNode);
|
|
742
|
+
D(parserOptions, "dynamicUrl", true);
|
|
743
|
+
D(parserOptions, "deferImport", deferImport);
|
|
580
744
|
if (futureDefaults) D(parserOptions, "exportsPresence", "error");
|
|
581
745
|
};
|
|
582
746
|
|
|
747
|
+
/**
|
|
748
|
+
* @param {JsonGeneratorOptions} generatorOptions generator options
|
|
749
|
+
* @returns {void}
|
|
750
|
+
*/
|
|
751
|
+
const applyJsonGeneratorOptionsDefaults = (generatorOptions) => {
|
|
752
|
+
D(generatorOptions, "JSONParse", true);
|
|
753
|
+
};
|
|
754
|
+
|
|
583
755
|
/**
|
|
584
756
|
* @param {CssGeneratorOptions} generatorOptions generator options
|
|
585
757
|
* @param {object} options options
|
|
@@ -608,12 +780,20 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
608
780
|
* @param {boolean} options.futureDefaults is future defaults enabled
|
|
609
781
|
* @param {string} options.uniqueName the unique name
|
|
610
782
|
* @param {boolean} options.isNode is node target platform
|
|
783
|
+
* @param {boolean} options.deferImport is defer import enabled
|
|
611
784
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
785
|
+
* @param {Mode | undefined} options.mode mode
|
|
786
|
+
* @param {HashSalt} options.hashSalt hash salt
|
|
787
|
+
* @param {HashDigest} options.hashDigest hash digest
|
|
788
|
+
* @param {HashDigestLength} options.hashDigestLength hash digest length
|
|
612
789
|
* @returns {void}
|
|
613
790
|
*/
|
|
614
791
|
const applyModuleDefaults = (
|
|
615
792
|
module,
|
|
616
793
|
{
|
|
794
|
+
hashSalt,
|
|
795
|
+
hashDigest,
|
|
796
|
+
hashDigestLength,
|
|
617
797
|
cache,
|
|
618
798
|
syncWebAssembly,
|
|
619
799
|
asyncWebAssembly,
|
|
@@ -621,7 +801,9 @@ const applyModuleDefaults = (
|
|
|
621
801
|
futureDefaults,
|
|
622
802
|
isNode,
|
|
623
803
|
uniqueName,
|
|
624
|
-
targetProperties
|
|
804
|
+
targetProperties,
|
|
805
|
+
mode,
|
|
806
|
+
deferImport
|
|
625
807
|
}
|
|
626
808
|
) => {
|
|
627
809
|
if (cache) {
|
|
@@ -630,11 +812,14 @@ const applyModuleDefaults = (
|
|
|
630
812
|
"unsafeCache",
|
|
631
813
|
/**
|
|
632
814
|
* @param {Module} module module
|
|
633
|
-
* @returns {boolean
|
|
815
|
+
* @returns {boolean} true, if we want to cache the module
|
|
634
816
|
*/
|
|
635
|
-
module => {
|
|
817
|
+
(module) => {
|
|
636
818
|
const name = module.nameForCondition();
|
|
637
|
-
|
|
819
|
+
if (!name) {
|
|
820
|
+
return false;
|
|
821
|
+
}
|
|
822
|
+
return NODE_MODULES_REGEXP.test(name);
|
|
638
823
|
}
|
|
639
824
|
);
|
|
640
825
|
} else {
|
|
@@ -643,19 +828,19 @@ const applyModuleDefaults = (
|
|
|
643
828
|
|
|
644
829
|
F(module.parser, ASSET_MODULE_TYPE, () => ({}));
|
|
645
830
|
F(
|
|
646
|
-
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[
|
|
831
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[ASSET_MODULE_TYPE]>} */
|
|
647
832
|
(module.parser[ASSET_MODULE_TYPE]),
|
|
648
833
|
"dataUrlCondition",
|
|
649
834
|
() => ({})
|
|
650
835
|
);
|
|
651
836
|
if (
|
|
652
837
|
typeof (
|
|
653
|
-
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[
|
|
838
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[ASSET_MODULE_TYPE]>} */
|
|
654
839
|
(module.parser[ASSET_MODULE_TYPE]).dataUrlCondition
|
|
655
840
|
) === "object"
|
|
656
841
|
) {
|
|
657
842
|
D(
|
|
658
|
-
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[
|
|
843
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[ASSET_MODULE_TYPE]>} */
|
|
659
844
|
(module.parser[ASSET_MODULE_TYPE]).dataUrlCondition,
|
|
660
845
|
"maxSize",
|
|
661
846
|
8096
|
|
@@ -663,53 +848,158 @@ const applyModuleDefaults = (
|
|
|
663
848
|
}
|
|
664
849
|
|
|
665
850
|
F(module.parser, "javascript", () => ({}));
|
|
851
|
+
F(module.parser, JSON_MODULE_TYPE, () => ({}));
|
|
852
|
+
D(
|
|
853
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[JSON_MODULE_TYPE]>} */
|
|
854
|
+
(module.parser[JSON_MODULE_TYPE]),
|
|
855
|
+
"exportsDepth",
|
|
856
|
+
mode === "development" ? 1 : Infinity
|
|
857
|
+
);
|
|
666
858
|
|
|
667
859
|
applyJavascriptParserOptionsDefaults(
|
|
668
860
|
/** @type {NonNullable<ParserOptionsByModuleTypeKnown["javascript"]>} */
|
|
669
861
|
(module.parser.javascript),
|
|
670
862
|
{
|
|
671
863
|
futureDefaults,
|
|
864
|
+
deferImport,
|
|
672
865
|
isNode
|
|
673
866
|
}
|
|
674
867
|
);
|
|
675
868
|
|
|
869
|
+
F(module.generator, "json", () => ({}));
|
|
870
|
+
applyJsonGeneratorOptionsDefaults(
|
|
871
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown["json"]>} */
|
|
872
|
+
(module.generator.json)
|
|
873
|
+
);
|
|
874
|
+
|
|
676
875
|
if (css) {
|
|
677
876
|
F(module.parser, CSS_MODULE_TYPE, () => ({}));
|
|
678
877
|
|
|
679
|
-
D(
|
|
680
|
-
|
|
681
|
-
|
|
878
|
+
D(
|
|
879
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
880
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
881
|
+
"import",
|
|
882
|
+
true
|
|
883
|
+
);
|
|
884
|
+
D(
|
|
885
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
886
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
887
|
+
"url",
|
|
888
|
+
true
|
|
889
|
+
);
|
|
890
|
+
D(
|
|
891
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
892
|
+
(module.parser[CSS_MODULE_TYPE]),
|
|
893
|
+
"namedExports",
|
|
894
|
+
true
|
|
895
|
+
);
|
|
896
|
+
|
|
897
|
+
for (const type of [
|
|
898
|
+
CSS_MODULE_TYPE_AUTO,
|
|
899
|
+
CSS_MODULE_TYPE_MODULE,
|
|
900
|
+
CSS_MODULE_TYPE_GLOBAL
|
|
901
|
+
]) {
|
|
902
|
+
F(module.parser, type, () => ({}));
|
|
903
|
+
|
|
904
|
+
D(
|
|
905
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
906
|
+
(module.parser[type]),
|
|
907
|
+
"animation",
|
|
908
|
+
true
|
|
909
|
+
);
|
|
910
|
+
D(
|
|
911
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
912
|
+
(module.parser[type]),
|
|
913
|
+
"container",
|
|
914
|
+
true
|
|
915
|
+
);
|
|
916
|
+
D(
|
|
917
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
918
|
+
(module.parser[type]),
|
|
919
|
+
"customIdents",
|
|
920
|
+
true
|
|
921
|
+
);
|
|
922
|
+
D(
|
|
923
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
924
|
+
(module.parser[type]),
|
|
925
|
+
"dashedIdents",
|
|
926
|
+
true
|
|
927
|
+
);
|
|
928
|
+
D(
|
|
929
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
930
|
+
(module.parser[type]),
|
|
931
|
+
"function",
|
|
932
|
+
true
|
|
933
|
+
);
|
|
934
|
+
D(
|
|
935
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
936
|
+
(module.parser[type]),
|
|
937
|
+
"grid",
|
|
938
|
+
true
|
|
939
|
+
);
|
|
940
|
+
}
|
|
682
941
|
|
|
683
942
|
F(module.generator, CSS_MODULE_TYPE, () => ({}));
|
|
684
943
|
|
|
685
944
|
applyCssGeneratorOptionsDefaults(
|
|
686
|
-
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[
|
|
945
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE]>} */
|
|
687
946
|
(module.generator[CSS_MODULE_TYPE]),
|
|
688
947
|
{ targetProperties }
|
|
689
948
|
);
|
|
690
949
|
|
|
691
950
|
const localIdentName =
|
|
692
|
-
|
|
951
|
+
mode === "development"
|
|
952
|
+
? uniqueName.length > 0
|
|
953
|
+
? "[uniqueName]-[id]-[local]"
|
|
954
|
+
: "[id]-[local]"
|
|
955
|
+
: "[fullhash]";
|
|
956
|
+
const localIdentHashSalt = hashSalt;
|
|
957
|
+
const localIdentHashDigest = "base64url";
|
|
958
|
+
const localIdentHashDigestLength = 6;
|
|
959
|
+
const exportsConvention = "as-is";
|
|
960
|
+
|
|
961
|
+
for (const type of [
|
|
962
|
+
CSS_MODULE_TYPE_AUTO,
|
|
963
|
+
CSS_MODULE_TYPE_MODULE,
|
|
964
|
+
CSS_MODULE_TYPE_GLOBAL
|
|
965
|
+
]) {
|
|
966
|
+
F(module.generator, type, () => ({}));
|
|
967
|
+
|
|
968
|
+
D(
|
|
969
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
970
|
+
(module.generator[type]),
|
|
971
|
+
"localIdentName",
|
|
972
|
+
localIdentName
|
|
973
|
+
);
|
|
693
974
|
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
975
|
+
D(
|
|
976
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
977
|
+
(module.generator[type]),
|
|
978
|
+
"localIdentHashSalt",
|
|
979
|
+
localIdentHashSalt
|
|
980
|
+
);
|
|
697
981
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
D(module.generator[CSS_MODULE_TYPE_MODULE], "exportsConvention", "as-is");
|
|
982
|
+
D(
|
|
983
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
|
|
984
|
+
(module.generator[type]),
|
|
985
|
+
"localIdentHashDigest",
|
|
986
|
+
localIdentHashDigest
|
|
987
|
+
);
|
|
705
988
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
989
|
+
D(
|
|
990
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
|
|
991
|
+
(module.generator[type]),
|
|
992
|
+
"localIdentHashDigestLength",
|
|
993
|
+
localIdentHashDigestLength
|
|
994
|
+
);
|
|
995
|
+
|
|
996
|
+
D(
|
|
997
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
998
|
+
(module.generator[type]),
|
|
999
|
+
"exportsConvention",
|
|
1000
|
+
exportsConvention
|
|
1001
|
+
);
|
|
1002
|
+
}
|
|
713
1003
|
}
|
|
714
1004
|
|
|
715
1005
|
A(module, "defaultRules", () => {
|
|
@@ -834,6 +1124,35 @@ const applyModuleDefaults = (
|
|
|
834
1124
|
type: CSS_MODULE_TYPE,
|
|
835
1125
|
resolve
|
|
836
1126
|
});
|
|
1127
|
+
// For CSS modules, i.e. `.class { composes: className from "./style.css" }`
|
|
1128
|
+
// We inherit for such constructions
|
|
1129
|
+
rules.push({
|
|
1130
|
+
dependency: /css-import-local-module/,
|
|
1131
|
+
type: CSS_MODULE_TYPE_MODULE,
|
|
1132
|
+
resolve
|
|
1133
|
+
});
|
|
1134
|
+
rules.push({
|
|
1135
|
+
dependency: /css-import-global-module/,
|
|
1136
|
+
type: CSS_MODULE_TYPE_GLOBAL,
|
|
1137
|
+
resolve
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
rules.push(
|
|
1141
|
+
{
|
|
1142
|
+
with: { type: "css" },
|
|
1143
|
+
parser: {
|
|
1144
|
+
exportType: "css-style-sheet"
|
|
1145
|
+
},
|
|
1146
|
+
resolve
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
assert: { type: "css" },
|
|
1150
|
+
parser: {
|
|
1151
|
+
exportType: "css-style-sheet"
|
|
1152
|
+
},
|
|
1153
|
+
resolve
|
|
1154
|
+
}
|
|
1155
|
+
);
|
|
837
1156
|
}
|
|
838
1157
|
rules.push(
|
|
839
1158
|
{
|
|
@@ -848,13 +1167,23 @@ const applyModuleDefaults = (
|
|
|
848
1167
|
}
|
|
849
1168
|
]
|
|
850
1169
|
},
|
|
1170
|
+
{
|
|
1171
|
+
with: { type: JSON_MODULE_TYPE },
|
|
1172
|
+
type: JSON_MODULE_TYPE,
|
|
1173
|
+
parser: { namedExports: false }
|
|
1174
|
+
},
|
|
851
1175
|
{
|
|
852
1176
|
assert: { type: JSON_MODULE_TYPE },
|
|
853
|
-
type: JSON_MODULE_TYPE
|
|
1177
|
+
type: JSON_MODULE_TYPE,
|
|
1178
|
+
parser: { namedExports: false }
|
|
854
1179
|
},
|
|
855
1180
|
{
|
|
856
|
-
with: { type:
|
|
857
|
-
type:
|
|
1181
|
+
with: { type: "text" },
|
|
1182
|
+
type: ASSET_MODULE_TYPE_SOURCE
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
with: { type: "bytes" },
|
|
1186
|
+
type: ASSET_MODULE_TYPE_BYTES
|
|
858
1187
|
}
|
|
859
1188
|
);
|
|
860
1189
|
return rules;
|
|
@@ -891,7 +1220,7 @@ const applyOutputDefaults = (
|
|
|
891
1220
|
* @param {Library=} library the library option
|
|
892
1221
|
* @returns {string} a readable library name
|
|
893
1222
|
*/
|
|
894
|
-
const getLibraryName = library => {
|
|
1223
|
+
const getLibraryName = (library) => {
|
|
895
1224
|
const libraryName =
|
|
896
1225
|
typeof library === "object" &&
|
|
897
1226
|
library &&
|
|
@@ -922,7 +1251,7 @@ const applyOutputDefaults = (
|
|
|
922
1251
|
if (libraryName) return libraryName;
|
|
923
1252
|
const pkgPath = path.resolve(context, "package.json");
|
|
924
1253
|
try {
|
|
925
|
-
const packageInfo = JSON.parse(fs.readFileSync(pkgPath, "
|
|
1254
|
+
const packageInfo = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
926
1255
|
return packageInfo.name || "";
|
|
927
1256
|
} catch (err) {
|
|
928
1257
|
if (/** @type {Error & { code: string }} */ (err).code !== "ENOENT") {
|
|
@@ -942,7 +1271,7 @@ const applyOutputDefaults = (
|
|
|
942
1271
|
* @param {boolean | undefined} v value
|
|
943
1272
|
* @returns {boolean} true, when v is truthy or undefined
|
|
944
1273
|
*/
|
|
945
|
-
const optimistic = v => v || v === undefined;
|
|
1274
|
+
const optimistic = (v) => v || v === undefined;
|
|
946
1275
|
/**
|
|
947
1276
|
* @param {boolean | undefined} v value
|
|
948
1277
|
* @param {boolean | undefined} c condition
|
|
@@ -966,6 +1295,12 @@ const applyOutputDefaults = (
|
|
|
966
1295
|
"const",
|
|
967
1296
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
968
1297
|
);
|
|
1298
|
+
F(
|
|
1299
|
+
environment,
|
|
1300
|
+
"methodShorthand",
|
|
1301
|
+
() =>
|
|
1302
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.methodShorthand))
|
|
1303
|
+
);
|
|
969
1304
|
F(
|
|
970
1305
|
environment,
|
|
971
1306
|
"arrowFunction",
|
|
@@ -1004,6 +1339,13 @@ const applyOutputDefaults = (
|
|
|
1004
1339
|
/** @type {boolean | undefined} */ (tp.nodePrefixForCoreModules)
|
|
1005
1340
|
)
|
|
1006
1341
|
);
|
|
1342
|
+
F(
|
|
1343
|
+
environment,
|
|
1344
|
+
"importMetaDirnameAndFilename",
|
|
1345
|
+
() =>
|
|
1346
|
+
// No optimistic, because it is new
|
|
1347
|
+
tp && /** @type {boolean | undefined} */ (tp.importMetaDirnameAndFilename)
|
|
1348
|
+
);
|
|
1007
1349
|
F(
|
|
1008
1350
|
environment,
|
|
1009
1351
|
"templateLiteral",
|
|
@@ -1072,10 +1414,10 @@ const applyOutputDefaults = (
|
|
|
1072
1414
|
}
|
|
1073
1415
|
return "[id].css";
|
|
1074
1416
|
});
|
|
1075
|
-
D(output, "assetModuleFilename", "[hash][ext][query]");
|
|
1417
|
+
D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
|
|
1076
1418
|
D(output, "webassemblyModuleFilename", "[hash].module.wasm");
|
|
1077
1419
|
D(output, "compareBeforeEmit", true);
|
|
1078
|
-
D(output, "charset",
|
|
1420
|
+
D(output, "charset", !futureDefaults);
|
|
1079
1421
|
const uniqueNameId = Template.toIdentifier(
|
|
1080
1422
|
/** @type {NonNullable<Output["uniqueName"]>} */ (output.uniqueName)
|
|
1081
1423
|
);
|
|
@@ -1085,6 +1427,8 @@ const applyOutputDefaults = (
|
|
|
1085
1427
|
if (tp) {
|
|
1086
1428
|
if (tp.global) return "global";
|
|
1087
1429
|
if (tp.globalThis) return "globalThis";
|
|
1430
|
+
// For universal target (i.e. code can be run in browser/node/worker etc.)
|
|
1431
|
+
if (tp.web === null && tp.node === null && tp.module) return "globalThis";
|
|
1088
1432
|
}
|
|
1089
1433
|
return "self";
|
|
1090
1434
|
});
|
|
@@ -1110,8 +1454,13 @@ const applyOutputDefaults = (
|
|
|
1110
1454
|
if (tp.importScripts) return "array-push";
|
|
1111
1455
|
throw new Error(
|
|
1112
1456
|
"For the selected environment is no default script chunk format available:\n" +
|
|
1113
|
-
|
|
1114
|
-
|
|
1457
|
+
`${
|
|
1458
|
+
tp.module
|
|
1459
|
+
? "Module ('module') can be chosen when ES modules are available (please set 'experiments.outputModule' and 'output.module' to `true`)"
|
|
1460
|
+
: ""
|
|
1461
|
+
}\n` +
|
|
1462
|
+
"JSONP Array push ('array-push') can be chosen when 'document' or 'importScripts' is available.\n" +
|
|
1463
|
+
`CommonJs exports ('commonjs') can be chosen when 'require' or node builtins are available.\n${
|
|
1115
1464
|
helpMessage
|
|
1116
1465
|
}`
|
|
1117
1466
|
);
|
|
@@ -1169,7 +1518,7 @@ const applyOutputDefaults = (
|
|
|
1169
1518
|
tp.nodeBuiltins === null ||
|
|
1170
1519
|
tp.importScriptsInWorker === null) &&
|
|
1171
1520
|
output.module &&
|
|
1172
|
-
environment.
|
|
1521
|
+
environment.dynamicImportInWorker
|
|
1173
1522
|
) {
|
|
1174
1523
|
return "universal";
|
|
1175
1524
|
}
|
|
@@ -1182,7 +1531,6 @@ const applyOutputDefaults = (
|
|
|
1182
1531
|
if (tp.nodeBuiltins) return "async-node";
|
|
1183
1532
|
if (
|
|
1184
1533
|
(tp.nodeBuiltins === null || tp.fetchWasm === null) &&
|
|
1185
|
-
asyncWebAssembly &&
|
|
1186
1534
|
output.module &&
|
|
1187
1535
|
environment.dynamicImport
|
|
1188
1536
|
) {
|
|
@@ -1204,7 +1552,11 @@ const applyOutputDefaults = (
|
|
|
1204
1552
|
"hotUpdateChunkFilename",
|
|
1205
1553
|
`[id].[fullhash].hot-update.${output.module ? "mjs" : "js"}`
|
|
1206
1554
|
);
|
|
1207
|
-
D(
|
|
1555
|
+
D(
|
|
1556
|
+
output,
|
|
1557
|
+
"hotUpdateMainFilename",
|
|
1558
|
+
`[runtime].[fullhash].hot-update.${output.module ? "json.mjs" : "json"}`
|
|
1559
|
+
);
|
|
1208
1560
|
D(output, "crossOriginLoading", false);
|
|
1209
1561
|
F(output, "scriptType", () => (output.module ? "module" : false));
|
|
1210
1562
|
D(
|
|
@@ -1216,7 +1568,14 @@ const applyOutputDefaults = (
|
|
|
1216
1568
|
);
|
|
1217
1569
|
D(output, "workerPublicPath", "");
|
|
1218
1570
|
D(output, "chunkLoadTimeout", 120000);
|
|
1219
|
-
|
|
1571
|
+
F(output, "hashFunction", () => {
|
|
1572
|
+
if (futureDefaults) {
|
|
1573
|
+
DEFAULTS.HASH_FUNCTION = "xxhash64";
|
|
1574
|
+
return "xxhash64";
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
return "md4";
|
|
1578
|
+
});
|
|
1220
1579
|
D(output, "hashDigest", "hex");
|
|
1221
1580
|
D(output, "hashDigestLength", futureDefaults ? 16 : 20);
|
|
1222
1581
|
D(output, "strictModuleErrorHandling", false);
|
|
@@ -1235,12 +1594,12 @@ const applyOutputDefaults = (
|
|
|
1235
1594
|
}
|
|
1236
1595
|
|
|
1237
1596
|
/**
|
|
1238
|
-
* @param {
|
|
1597
|
+
* @param {(entryDescription: EntryDescription) => void} fn iterator
|
|
1239
1598
|
* @returns {void}
|
|
1240
1599
|
*/
|
|
1241
|
-
const forEachEntry = fn => {
|
|
1600
|
+
const forEachEntry = (fn) => {
|
|
1242
1601
|
for (const name of Object.keys(entry)) {
|
|
1243
|
-
fn(/** @type {{[k: string]
|
|
1602
|
+
fn(/** @type {{ [k: string]: EntryDescription }} */ (entry)[name]);
|
|
1244
1603
|
}
|
|
1245
1604
|
};
|
|
1246
1605
|
A(output, "enabledLibraryTypes", () => {
|
|
@@ -1249,7 +1608,7 @@ const applyOutputDefaults = (
|
|
|
1249
1608
|
if (output.library) {
|
|
1250
1609
|
enabledLibraryTypes.push(output.library.type);
|
|
1251
1610
|
}
|
|
1252
|
-
forEachEntry(desc => {
|
|
1611
|
+
forEachEntry((desc) => {
|
|
1253
1612
|
if (desc.library) {
|
|
1254
1613
|
enabledLibraryTypes.push(desc.library.type);
|
|
1255
1614
|
}
|
|
@@ -1265,12 +1624,12 @@ const applyOutputDefaults = (
|
|
|
1265
1624
|
if (output.workerChunkLoading) {
|
|
1266
1625
|
enabledChunkLoadingTypes.add(output.workerChunkLoading);
|
|
1267
1626
|
}
|
|
1268
|
-
forEachEntry(desc => {
|
|
1627
|
+
forEachEntry((desc) => {
|
|
1269
1628
|
if (desc.chunkLoading) {
|
|
1270
1629
|
enabledChunkLoadingTypes.add(desc.chunkLoading);
|
|
1271
1630
|
}
|
|
1272
1631
|
});
|
|
1273
|
-
return
|
|
1632
|
+
return [...enabledChunkLoadingTypes];
|
|
1274
1633
|
});
|
|
1275
1634
|
|
|
1276
1635
|
A(output, "enabledWasmLoadingTypes", () => {
|
|
@@ -1281,12 +1640,12 @@ const applyOutputDefaults = (
|
|
|
1281
1640
|
if (output.workerWasmLoading) {
|
|
1282
1641
|
enabledWasmLoadingTypes.add(output.workerWasmLoading);
|
|
1283
1642
|
}
|
|
1284
|
-
forEachEntry(desc => {
|
|
1643
|
+
forEachEntry((desc) => {
|
|
1285
1644
|
if (desc.wasmLoading) {
|
|
1286
1645
|
enabledWasmLoadingTypes.add(desc.wasmLoading);
|
|
1287
1646
|
}
|
|
1288
1647
|
});
|
|
1289
|
-
return
|
|
1648
|
+
return [...enabledWasmLoadingTypes];
|
|
1290
1649
|
});
|
|
1291
1650
|
};
|
|
1292
1651
|
|
|
@@ -1295,35 +1654,47 @@ const applyOutputDefaults = (
|
|
|
1295
1654
|
* @param {object} options options
|
|
1296
1655
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
1297
1656
|
* @param {boolean} options.buildHttp buildHttp experiment enabled
|
|
1657
|
+
* @param {boolean} options.outputModule is output type is module
|
|
1298
1658
|
* @returns {void}
|
|
1299
1659
|
*/
|
|
1300
1660
|
const applyExternalsPresetsDefaults = (
|
|
1301
1661
|
externalsPresets,
|
|
1302
|
-
{ targetProperties, buildHttp }
|
|
1662
|
+
{ targetProperties, buildHttp, outputModule }
|
|
1303
1663
|
) => {
|
|
1664
|
+
/**
|
|
1665
|
+
* @param {keyof TargetProperties} key a key
|
|
1666
|
+
* @returns {boolean} true when target is universal, otherwise false
|
|
1667
|
+
*/
|
|
1668
|
+
const isUniversal = (key) =>
|
|
1669
|
+
Boolean(outputModule && targetProperties && targetProperties[key] === null);
|
|
1670
|
+
|
|
1304
1671
|
D(
|
|
1305
1672
|
externalsPresets,
|
|
1306
1673
|
"web",
|
|
1307
1674
|
/** @type {boolean | undefined} */
|
|
1308
|
-
(
|
|
1675
|
+
(
|
|
1676
|
+
!buildHttp &&
|
|
1677
|
+
targetProperties &&
|
|
1678
|
+
(targetProperties.web || isUniversal("node"))
|
|
1679
|
+
)
|
|
1309
1680
|
);
|
|
1310
1681
|
D(
|
|
1311
1682
|
externalsPresets,
|
|
1312
1683
|
"node",
|
|
1313
1684
|
/** @type {boolean | undefined} */
|
|
1314
|
-
(targetProperties && targetProperties.node)
|
|
1685
|
+
(targetProperties && (targetProperties.node || isUniversal("node")))
|
|
1315
1686
|
);
|
|
1316
1687
|
D(
|
|
1317
1688
|
externalsPresets,
|
|
1318
1689
|
"nwjs",
|
|
1319
1690
|
/** @type {boolean | undefined} */
|
|
1320
|
-
(targetProperties && targetProperties.nwjs)
|
|
1691
|
+
(targetProperties && (targetProperties.nwjs || isUniversal("nwjs")))
|
|
1321
1692
|
);
|
|
1322
1693
|
D(
|
|
1323
1694
|
externalsPresets,
|
|
1324
1695
|
"electron",
|
|
1325
1696
|
/** @type {boolean | undefined} */
|
|
1326
|
-
(targetProperties && targetProperties.electron)
|
|
1697
|
+
((targetProperties && targetProperties.electron) || isUniversal("electron"))
|
|
1327
1698
|
);
|
|
1328
1699
|
D(
|
|
1329
1700
|
externalsPresets,
|
|
@@ -1332,7 +1703,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1332
1703
|
(
|
|
1333
1704
|
targetProperties &&
|
|
1334
1705
|
targetProperties.electron &&
|
|
1335
|
-
targetProperties.electronMain
|
|
1706
|
+
(targetProperties.electronMain || isUniversal("electronMain"))
|
|
1336
1707
|
)
|
|
1337
1708
|
);
|
|
1338
1709
|
D(
|
|
@@ -1342,7 +1713,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1342
1713
|
(
|
|
1343
1714
|
targetProperties &&
|
|
1344
1715
|
targetProperties.electron &&
|
|
1345
|
-
targetProperties.electronPreload
|
|
1716
|
+
(targetProperties.electronPreload || isUniversal("electronPreload"))
|
|
1346
1717
|
)
|
|
1347
1718
|
);
|
|
1348
1719
|
D(
|
|
@@ -1352,7 +1723,7 @@ const applyExternalsPresetsDefaults = (
|
|
|
1352
1723
|
(
|
|
1353
1724
|
targetProperties &&
|
|
1354
1725
|
targetProperties.electron &&
|
|
1355
|
-
targetProperties.electronRenderer
|
|
1726
|
+
(targetProperties.electronRenderer || isUniversal("electronRenderer"))
|
|
1356
1727
|
)
|
|
1357
1728
|
);
|
|
1358
1729
|
};
|
|
@@ -1397,14 +1768,28 @@ const applyNodeDefaults = (
|
|
|
1397
1768
|
|
|
1398
1769
|
F(node, "global", () => {
|
|
1399
1770
|
if (targetProperties && targetProperties.global) return false;
|
|
1400
|
-
//
|
|
1771
|
+
// We use `warm` because overriding `global` with `globalThis` (or a polyfill) is sometimes safe (global.URL), sometimes unsafe (global.process), but we need to warn about it
|
|
1401
1772
|
return futureDefaults ? "warn" : true;
|
|
1402
1773
|
});
|
|
1403
1774
|
|
|
1404
1775
|
const handlerForNames = () => {
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1776
|
+
// TODO webpack@6 remove `node-module` in favor of `eval-only`
|
|
1777
|
+
if (targetProperties) {
|
|
1778
|
+
if (targetProperties.node) {
|
|
1779
|
+
return "eval-only";
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
// For the "universal" target we only evaluate these values
|
|
1783
|
+
if (
|
|
1784
|
+
outputModule &&
|
|
1785
|
+
targetProperties.node === null &&
|
|
1786
|
+
targetProperties.web === null
|
|
1787
|
+
) {
|
|
1788
|
+
return "eval-only";
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
// TODO webpack@6 should we use `warn-even-only`?
|
|
1408
1793
|
return futureDefaults ? "warn-mock" : "mock";
|
|
1409
1794
|
};
|
|
1410
1795
|
|
|
@@ -1468,16 +1853,17 @@ const applyOptimizationDefaults = (
|
|
|
1468
1853
|
D(optimization, "minimize", production);
|
|
1469
1854
|
A(optimization, "minimizer", () => [
|
|
1470
1855
|
{
|
|
1471
|
-
apply: compiler => {
|
|
1856
|
+
apply: (compiler) => {
|
|
1472
1857
|
// Lazy load the Terser plugin
|
|
1473
1858
|
const TerserPlugin = require("terser-webpack-plugin");
|
|
1859
|
+
|
|
1474
1860
|
new TerserPlugin({
|
|
1475
1861
|
terserOptions: {
|
|
1476
1862
|
compress: {
|
|
1477
1863
|
passes: 2
|
|
1478
1864
|
}
|
|
1479
1865
|
}
|
|
1480
|
-
}).apply(compiler);
|
|
1866
|
+
}).apply(/** @type {EXPECTED_ANY} */ (compiler));
|
|
1481
1867
|
}
|
|
1482
1868
|
}
|
|
1483
1869
|
]);
|
|
@@ -1489,7 +1875,9 @@ const applyOptimizationDefaults = (
|
|
|
1489
1875
|
const { splitChunks } = optimization;
|
|
1490
1876
|
if (splitChunks) {
|
|
1491
1877
|
A(splitChunks, "defaultSizeTypes", () =>
|
|
1492
|
-
css
|
|
1878
|
+
css
|
|
1879
|
+
? [JAVASCRIPT_TYPE, CSS_TYPE, UNKNOWN_TYPE]
|
|
1880
|
+
: [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
|
|
1493
1881
|
);
|
|
1494
1882
|
D(splitChunks, "hidePathInfo", production);
|
|
1495
1883
|
D(splitChunks, "chunks", "async");
|
|
@@ -1554,14 +1942,14 @@ const getResolveDefaults = ({
|
|
|
1554
1942
|
const browserField =
|
|
1555
1943
|
tp && tp.web && (!tp.node || (tp.electron && tp.electronRenderer));
|
|
1556
1944
|
|
|
1557
|
-
/** @type {
|
|
1945
|
+
/** @type {() => ResolveOptions} */
|
|
1558
1946
|
const cjsDeps = () => ({
|
|
1559
1947
|
aliasFields: browserField ? ["browser"] : [],
|
|
1560
1948
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
1561
1949
|
conditionNames: ["require", "module", "..."],
|
|
1562
1950
|
extensions: [...jsExtensions]
|
|
1563
1951
|
});
|
|
1564
|
-
/** @type {
|
|
1952
|
+
/** @type {() => ResolveOptions} */
|
|
1565
1953
|
const esmDeps = () => ({
|
|
1566
1954
|
aliasFields: browserField ? ["browser"] : [],
|
|
1567
1955
|
mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
|
|
@@ -1610,7 +1998,8 @@ const getResolveDefaults = ({
|
|
|
1610
1998
|
styleConditions.push(mode === "development" ? "development" : "production");
|
|
1611
1999
|
styleConditions.push("style");
|
|
1612
2000
|
|
|
1613
|
-
|
|
2001
|
+
/** @type {ResolveOptions} */
|
|
2002
|
+
const cssResolveOptions = {
|
|
1614
2003
|
// We avoid using any main files because we have to be consistent with CSS `@import`
|
|
1615
2004
|
// and CSS `@import` does not handle `main` files in directories,
|
|
1616
2005
|
// you should always specify the full URL for styles
|
|
@@ -1620,6 +2009,17 @@ const getResolveDefaults = ({
|
|
|
1620
2009
|
extensions: [".css"],
|
|
1621
2010
|
preferRelative: true
|
|
1622
2011
|
};
|
|
2012
|
+
|
|
2013
|
+
/** @type {NonNullable<ResolveOptions["byDependency"]>} */
|
|
2014
|
+
(resolveOptions.byDependency)["css-import"] = cssResolveOptions;
|
|
2015
|
+
// For CSS modules, i.e. `.class { composes: className from "./style.css" }`
|
|
2016
|
+
// We inherit for such constructions
|
|
2017
|
+
/** @type {NonNullable<ResolveOptions["byDependency"]>} */
|
|
2018
|
+
(resolveOptions.byDependency)["css-import-local-module"] =
|
|
2019
|
+
cssResolveOptions;
|
|
2020
|
+
/** @type {NonNullable<ResolveOptions["byDependency"]>} */
|
|
2021
|
+
(resolveOptions.byDependency)["css-import-global-module"] =
|
|
2022
|
+
cssResolveOptions;
|
|
1623
2023
|
}
|
|
1624
2024
|
|
|
1625
2025
|
return resolveOptions;
|
|
@@ -1648,17 +2048,18 @@ const getResolveLoaderDefaults = ({ cache }) => {
|
|
|
1648
2048
|
* @param {InfrastructureLogging} infrastructureLogging options
|
|
1649
2049
|
* @returns {void}
|
|
1650
2050
|
*/
|
|
1651
|
-
const applyInfrastructureLoggingDefaults = infrastructureLogging => {
|
|
2051
|
+
const applyInfrastructureLoggingDefaults = (infrastructureLogging) => {
|
|
1652
2052
|
F(infrastructureLogging, "stream", () => process.stderr);
|
|
1653
2053
|
const tty =
|
|
1654
|
-
/** @type {
|
|
1655
|
-
process.env.TERM !== "dumb";
|
|
2054
|
+
/** @type {NonNullable<InfrastructureLogging["stream"]>} */
|
|
2055
|
+
(infrastructureLogging.stream).isTTY && process.env.TERM !== "dumb";
|
|
1656
2056
|
D(infrastructureLogging, "level", "info");
|
|
1657
2057
|
D(infrastructureLogging, "debug", false);
|
|
1658
2058
|
D(infrastructureLogging, "colors", tty);
|
|
1659
2059
|
D(infrastructureLogging, "appendOnly", !tty);
|
|
1660
2060
|
};
|
|
1661
2061
|
|
|
2062
|
+
module.exports.DEFAULTS = DEFAULTS;
|
|
1662
2063
|
module.exports.applyWebpackOptionsBaseDefaults =
|
|
1663
2064
|
applyWebpackOptionsBaseDefaults;
|
|
1664
2065
|
module.exports.applyWebpackOptionsDefaults = applyWebpackOptionsDefaults;
|