webpack 5.76.1 → 5.88.2
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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
package/lib/config/defaults.js
CHANGED
@@ -7,6 +7,18 @@
|
|
7
7
|
|
8
8
|
const fs = require("fs");
|
9
9
|
const path = require("path");
|
10
|
+
const {
|
11
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
12
|
+
JSON_MODULE_TYPE,
|
13
|
+
WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
14
|
+
JAVASCRIPT_MODULE_TYPE_ESM,
|
15
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
16
|
+
WEBASSEMBLY_MODULE_TYPE_SYNC,
|
17
|
+
ASSET_MODULE_TYPE,
|
18
|
+
CSS_MODULE_TYPE_AUTO,
|
19
|
+
CSS_MODULE_TYPE,
|
20
|
+
CSS_MODULE_TYPE_MODULE
|
21
|
+
} = require("../ModuleTypeConstants");
|
10
22
|
const Template = require("../Template");
|
11
23
|
const { cleverMerge } = require("../util/cleverMerge");
|
12
24
|
const {
|
@@ -16,30 +28,39 @@ const {
|
|
16
28
|
} = require("./target");
|
17
29
|
|
18
30
|
/** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptions */
|
31
|
+
/** @typedef {import("../../declarations/WebpackOptions").Context} Context */
|
19
32
|
/** @typedef {import("../../declarations/WebpackOptions").CssExperimentOptions} CssExperimentOptions */
|
20
33
|
/** @typedef {import("../../declarations/WebpackOptions").EntryDescription} EntryDescription */
|
21
34
|
/** @typedef {import("../../declarations/WebpackOptions").EntryNormalized} Entry */
|
35
|
+
/** @typedef {import("../../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
|
36
|
+
/** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
|
22
37
|
/** @typedef {import("../../declarations/WebpackOptions").Experiments} Experiments */
|
23
38
|
/** @typedef {import("../../declarations/WebpackOptions").ExperimentsNormalized} ExperimentsNormalized */
|
24
39
|
/** @typedef {import("../../declarations/WebpackOptions").ExternalsPresets} ExternalsPresets */
|
25
40
|
/** @typedef {import("../../declarations/WebpackOptions").ExternalsType} ExternalsType */
|
41
|
+
/** @typedef {import("../../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
|
26
42
|
/** @typedef {import("../../declarations/WebpackOptions").InfrastructureLogging} InfrastructureLogging */
|
27
43
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
28
44
|
/** @typedef {import("../../declarations/WebpackOptions").Library} Library */
|
29
45
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
|
30
46
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
47
|
+
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
31
48
|
/** @typedef {import("../../declarations/WebpackOptions").Loader} Loader */
|
32
49
|
/** @typedef {import("../../declarations/WebpackOptions").Mode} Mode */
|
33
50
|
/** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
|
34
51
|
/** @typedef {import("../../declarations/WebpackOptions").Node} WebpackNode */
|
35
52
|
/** @typedef {import("../../declarations/WebpackOptions").Optimization} Optimization */
|
53
|
+
/** @typedef {import("../../declarations/WebpackOptions").OptimizationSplitChunksOptions} OptimizationSplitChunksOptions */
|
36
54
|
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
|
55
|
+
/** @typedef {import("../../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
|
37
56
|
/** @typedef {import("../../declarations/WebpackOptions").Performance} Performance */
|
38
57
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
39
58
|
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRules} RuleSetRules */
|
40
59
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
41
60
|
/** @typedef {import("../../declarations/WebpackOptions").Target} Target */
|
42
61
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
62
|
+
/** @typedef {import("../Compiler")} Compiler */
|
63
|
+
/** @typedef {import("../Module")} Module */
|
43
64
|
/** @typedef {import("./target").TargetProperties} TargetProperties */
|
44
65
|
|
45
66
|
const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
|
@@ -91,7 +112,7 @@ const A = (obj, prop, factory) => {
|
|
91
112
|
if (value === undefined) {
|
92
113
|
obj[prop] = factory();
|
93
114
|
} else if (Array.isArray(value)) {
|
94
|
-
/** @type {any[]} */
|
115
|
+
/** @type {any[] | undefined} */
|
95
116
|
let newArray = undefined;
|
96
117
|
for (let i = 0; i < value.length; i++) {
|
97
118
|
const item = value[i];
|
@@ -129,7 +150,7 @@ const applyWebpackOptionsBaseDefaults = options => {
|
|
129
150
|
const applyWebpackOptionsDefaults = options => {
|
130
151
|
F(options, "context", () => process.cwd());
|
131
152
|
F(options, "target", () => {
|
132
|
-
return getDefaultTarget(options.context);
|
153
|
+
return getDefaultTarget(/** @type {string} */ (options.context));
|
133
154
|
});
|
134
155
|
|
135
156
|
const { mode, name, target } = options;
|
@@ -138,8 +159,11 @@ const applyWebpackOptionsDefaults = options => {
|
|
138
159
|
target === false
|
139
160
|
? /** @type {false} */ (false)
|
140
161
|
: typeof target === "string"
|
141
|
-
? getTargetProperties(target, options.context)
|
142
|
-
: getTargetsProperties(
|
162
|
+
? getTargetProperties(target, /** @type {Context} */ (options.context))
|
163
|
+
: getTargetsProperties(
|
164
|
+
/** @type {string[]} */ (target),
|
165
|
+
/** @type {Context} */ (options.context)
|
166
|
+
);
|
143
167
|
|
144
168
|
const development = mode === "development";
|
145
169
|
const production = mode === "production" || !mode;
|
@@ -167,7 +191,9 @@ const applyWebpackOptionsDefaults = options => {
|
|
167
191
|
targetProperties
|
168
192
|
});
|
169
193
|
|
170
|
-
const futureDefaults =
|
194
|
+
const futureDefaults =
|
195
|
+
/** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
|
196
|
+
(options.experiments.futureDefaults);
|
171
197
|
|
172
198
|
F(options, "cache", () =>
|
173
199
|
development ? { type: /** @type {"memory"} */ ("memory") } : false
|
@@ -187,22 +213,30 @@ const applyWebpackOptionsDefaults = options => {
|
|
187
213
|
|
188
214
|
applyModuleDefaults(options.module, {
|
189
215
|
cache,
|
190
|
-
syncWebAssembly:
|
191
|
-
|
192
|
-
|
216
|
+
syncWebAssembly:
|
217
|
+
/** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
|
218
|
+
(options.experiments.syncWebAssembly),
|
219
|
+
asyncWebAssembly:
|
220
|
+
/** @type {NonNullable<ExperimentsNormalized["asyncWebAssembly"]>} */
|
221
|
+
(options.experiments.asyncWebAssembly),
|
222
|
+
css:
|
223
|
+
/** @type {NonNullable<ExperimentsNormalized["css"]>} */
|
224
|
+
(options.experiments.css),
|
193
225
|
futureDefaults,
|
194
226
|
isNode: targetProperties && targetProperties.node === true
|
195
227
|
});
|
196
228
|
|
197
229
|
applyOutputDefaults(options.output, {
|
198
|
-
context: options.context,
|
230
|
+
context: /** @type {Context} */ (options.context),
|
199
231
|
targetProperties,
|
200
232
|
isAffectedByBrowserslist:
|
201
233
|
target === undefined ||
|
202
234
|
(typeof target === "string" && target.startsWith("browserslist")) ||
|
203
235
|
(Array.isArray(target) &&
|
204
236
|
target.some(target => target.startsWith("browserslist"))),
|
205
|
-
outputModule:
|
237
|
+
outputModule:
|
238
|
+
/** @type {NonNullable<ExperimentsNormalized["outputModule"]>} */
|
239
|
+
(options.experiments.outputModule),
|
206
240
|
development,
|
207
241
|
entry: options.entry,
|
208
242
|
module: options.module,
|
@@ -214,7 +248,10 @@ const applyWebpackOptionsDefaults = options => {
|
|
214
248
|
buildHttp: !!options.experiments.buildHttp
|
215
249
|
});
|
216
250
|
|
217
|
-
applyLoaderDefaults(
|
251
|
+
applyLoaderDefaults(
|
252
|
+
/** @type {NonNullable<WebpackOptions["loader"]>} */ (options.loader),
|
253
|
+
{ targetProperties, environment: options.output.environment }
|
254
|
+
);
|
218
255
|
|
219
256
|
F(options, "externalsType", () => {
|
220
257
|
const validExternalTypes = require("../../schemas/WebpackOptions.json")
|
@@ -228,7 +265,9 @@ const applyWebpackOptionsDefaults = options => {
|
|
228
265
|
});
|
229
266
|
|
230
267
|
applyNodeDefaults(options.node, {
|
231
|
-
futureDefaults:
|
268
|
+
futureDefaults:
|
269
|
+
/** @type {NonNullable<WebpackOptions["experiments"]["futureDefaults"]>} */
|
270
|
+
(options.experiments.futureDefaults),
|
232
271
|
targetProperties
|
233
272
|
});
|
234
273
|
|
@@ -239,23 +278,32 @@ const applyWebpackOptionsDefaults = options => {
|
|
239
278
|
? {}
|
240
279
|
: false
|
241
280
|
);
|
242
|
-
applyPerformanceDefaults(
|
243
|
-
|
244
|
-
|
281
|
+
applyPerformanceDefaults(
|
282
|
+
/** @type {NonNullable<WebpackOptions["performance"]>} */
|
283
|
+
(options.performance),
|
284
|
+
{
|
285
|
+
production
|
286
|
+
}
|
287
|
+
);
|
245
288
|
|
246
289
|
applyOptimizationDefaults(options.optimization, {
|
247
290
|
development,
|
248
291
|
production,
|
249
|
-
css:
|
292
|
+
css:
|
293
|
+
/** @type {NonNullable<ExperimentsNormalized["css"]>} */
|
294
|
+
(options.experiments.css),
|
250
295
|
records: !!(options.recordsInputPath || options.recordsOutputPath)
|
251
296
|
});
|
252
297
|
|
253
298
|
options.resolve = cleverMerge(
|
254
299
|
getResolveDefaults({
|
255
300
|
cache,
|
256
|
-
context: options.context,
|
301
|
+
context: /** @type {Context} */ (options.context),
|
257
302
|
targetProperties,
|
258
|
-
mode: options.mode
|
303
|
+
mode: /** @type {Mode} */ (options.mode),
|
304
|
+
css:
|
305
|
+
/** @type {NonNullable<ExperimentsNormalized["css"]>} */
|
306
|
+
(options.experiments.css)
|
259
307
|
}),
|
260
308
|
options.resolve
|
261
309
|
);
|
@@ -280,7 +328,6 @@ const applyExperimentsDefaults = (
|
|
280
328
|
) => {
|
281
329
|
D(experiments, "futureDefaults", false);
|
282
330
|
D(experiments, "backCompat", !experiments.futureDefaults);
|
283
|
-
D(experiments, "topLevelAwait", experiments.futureDefaults);
|
284
331
|
D(experiments, "syncWebAssembly", false);
|
285
332
|
D(experiments, "asyncWebAssembly", experiments.futureDefaults);
|
286
333
|
D(experiments, "outputModule", false);
|
@@ -290,6 +337,13 @@ const applyExperimentsDefaults = (
|
|
290
337
|
D(experiments, "cacheUnaffected", experiments.futureDefaults);
|
291
338
|
F(experiments, "css", () => (experiments.futureDefaults ? {} : undefined));
|
292
339
|
|
340
|
+
// TODO webpack 6: remove this. topLevelAwait should be enabled by default
|
341
|
+
let shouldEnableTopLevelAwait = true;
|
342
|
+
if (typeof experiments.topLevelAwait === "boolean") {
|
343
|
+
shouldEnableTopLevelAwait = experiments.topLevelAwait;
|
344
|
+
}
|
345
|
+
D(experiments, "topLevelAwait", shouldEnableTopLevelAwait);
|
346
|
+
|
293
347
|
if (typeof experiments.buildHttp === "object") {
|
294
348
|
D(experiments.buildHttp, "frozen", production);
|
295
349
|
D(experiments.buildHttp, "upgrade", false);
|
@@ -308,9 +362,9 @@ const applyExperimentsDefaults = (
|
|
308
362
|
* @param {CacheOptions} cache options
|
309
363
|
* @param {Object} options options
|
310
364
|
* @param {string} options.name name
|
311
|
-
* @param {
|
365
|
+
* @param {Mode} options.mode mode
|
312
366
|
* @param {boolean} options.development is development mode
|
313
|
-
* @param {
|
367
|
+
* @param {Experiments["cacheUnaffected"]} options.cacheUnaffected the cacheUnaffected experiment is enabled
|
314
368
|
* @returns {void}
|
315
369
|
*/
|
316
370
|
const applyCacheDefaults = (
|
@@ -324,6 +378,7 @@ const applyCacheDefaults = (
|
|
324
378
|
D(cache, "version", "");
|
325
379
|
F(cache, "cacheDirectory", () => {
|
326
380
|
const cwd = process.cwd();
|
381
|
+
/** @type {string | undefined} */
|
327
382
|
let dir = cwd;
|
328
383
|
for (;;) {
|
329
384
|
try {
|
@@ -348,7 +403,11 @@ const applyCacheDefaults = (
|
|
348
403
|
}
|
349
404
|
});
|
350
405
|
F(cache, "cacheLocation", () =>
|
351
|
-
path.resolve(
|
406
|
+
path.resolve(
|
407
|
+
/** @type {NonNullable<FileCacheOptions["cacheDirectory"]>} */
|
408
|
+
(cache.cacheDirectory),
|
409
|
+
/** @type {NonNullable<FileCacheOptions["name"]>} */ (cache.name)
|
410
|
+
)
|
352
411
|
);
|
353
412
|
D(cache, "hashAlgorithm", "md4");
|
354
413
|
D(cache, "store", "pack");
|
@@ -361,9 +420,13 @@ const applyCacheDefaults = (
|
|
361
420
|
D(cache, "maxAge", 1000 * 60 * 60 * 24 * 60); // 1 month
|
362
421
|
D(cache, "allowCollectingMemory", development);
|
363
422
|
D(cache, "memoryCacheUnaffected", development && cacheUnaffected);
|
364
|
-
D(cache
|
365
|
-
|
366
|
-
|
423
|
+
D(cache, "readonly", false);
|
424
|
+
D(
|
425
|
+
/** @type {NonNullable<FileCacheOptions["buildDependencies"]>} */
|
426
|
+
(cache.buildDependencies),
|
427
|
+
"defaultWebpack",
|
428
|
+
[path.resolve(__dirname, "..") + path.sep]
|
429
|
+
);
|
367
430
|
break;
|
368
431
|
case "memory":
|
369
432
|
D(cache, "maxGenerations", Infinity);
|
@@ -475,6 +538,7 @@ const applyJavascriptParserOptionsDefaults = (
|
|
475
538
|
D(parserOptions, "dynamicImportMode", "lazy");
|
476
539
|
D(parserOptions, "dynamicImportPrefetch", false);
|
477
540
|
D(parserOptions, "dynamicImportPreload", false);
|
541
|
+
D(parserOptions, "dynamicImportFetchPriority", false);
|
478
542
|
D(parserOptions, "createRequire", isNode);
|
479
543
|
if (futureDefaults) D(parserOptions, "exportsPresence", "error");
|
480
544
|
};
|
@@ -495,29 +559,57 @@ const applyModuleDefaults = (
|
|
495
559
|
{ cache, syncWebAssembly, asyncWebAssembly, css, futureDefaults, isNode }
|
496
560
|
) => {
|
497
561
|
if (cache) {
|
498
|
-
D(
|
499
|
-
|
500
|
-
|
501
|
-
|
562
|
+
D(
|
563
|
+
module,
|
564
|
+
"unsafeCache",
|
565
|
+
/**
|
566
|
+
* @param {Module} module module
|
567
|
+
* @returns {boolean | null | string} true, if we want to cache the module
|
568
|
+
*/
|
569
|
+
module => {
|
570
|
+
const name = module.nameForCondition();
|
571
|
+
return name && NODE_MODULES_REGEXP.test(name);
|
572
|
+
}
|
573
|
+
);
|
502
574
|
} else {
|
503
575
|
D(module, "unsafeCache", false);
|
504
576
|
}
|
505
577
|
|
506
|
-
F(module.parser,
|
507
|
-
F(
|
508
|
-
|
509
|
-
|
578
|
+
F(module.parser, ASSET_MODULE_TYPE, () => ({}));
|
579
|
+
F(
|
580
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown["asset"]>} */
|
581
|
+
(module.parser.asset),
|
582
|
+
"dataUrlCondition",
|
583
|
+
() => ({})
|
584
|
+
);
|
585
|
+
if (
|
586
|
+
typeof (
|
587
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown["asset"]>} */
|
588
|
+
(module.parser.asset).dataUrlCondition
|
589
|
+
) === "object"
|
590
|
+
) {
|
591
|
+
D(
|
592
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown["asset"]>} */
|
593
|
+
(module.parser.asset).dataUrlCondition,
|
594
|
+
"maxSize",
|
595
|
+
8096
|
596
|
+
);
|
510
597
|
}
|
511
598
|
|
512
599
|
F(module.parser, "javascript", () => ({}));
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
600
|
+
|
601
|
+
applyJavascriptParserOptionsDefaults(
|
602
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown["javascript"]>} */
|
603
|
+
(module.parser.javascript),
|
604
|
+
{
|
605
|
+
futureDefaults,
|
606
|
+
isNode
|
607
|
+
}
|
608
|
+
);
|
517
609
|
|
518
610
|
A(module, "defaultRules", () => {
|
519
611
|
const esm = {
|
520
|
-
type:
|
612
|
+
type: JAVASCRIPT_MODULE_TYPE_ESM,
|
521
613
|
resolve: {
|
522
614
|
byDependency: {
|
523
615
|
esm: {
|
@@ -527,21 +619,21 @@ const applyModuleDefaults = (
|
|
527
619
|
}
|
528
620
|
};
|
529
621
|
const commonjs = {
|
530
|
-
type:
|
622
|
+
type: JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
531
623
|
};
|
532
624
|
/** @type {RuleSetRules} */
|
533
625
|
const rules = [
|
534
626
|
{
|
535
627
|
mimetype: "application/node",
|
536
|
-
type:
|
628
|
+
type: JAVASCRIPT_MODULE_TYPE_AUTO
|
537
629
|
},
|
538
630
|
{
|
539
631
|
test: /\.json$/i,
|
540
|
-
type:
|
632
|
+
type: JSON_MODULE_TYPE
|
541
633
|
},
|
542
634
|
{
|
543
635
|
mimetype: "application/json",
|
544
|
-
type:
|
636
|
+
type: JSON_MODULE_TYPE
|
545
637
|
},
|
546
638
|
{
|
547
639
|
test: /\.mjs$/i,
|
@@ -574,7 +666,7 @@ const applyModuleDefaults = (
|
|
574
666
|
];
|
575
667
|
if (asyncWebAssembly) {
|
576
668
|
const wasm = {
|
577
|
-
type:
|
669
|
+
type: WEBASSEMBLY_MODULE_TYPE_ASYNC,
|
578
670
|
rules: [
|
579
671
|
{
|
580
672
|
descriptionData: {
|
@@ -596,7 +688,7 @@ const applyModuleDefaults = (
|
|
596
688
|
});
|
597
689
|
} else if (syncWebAssembly) {
|
598
690
|
const wasm = {
|
599
|
-
type:
|
691
|
+
type: WEBASSEMBLY_MODULE_TYPE_SYNC,
|
600
692
|
rules: [
|
601
693
|
{
|
602
694
|
descriptionData: {
|
@@ -618,38 +710,24 @@ const applyModuleDefaults = (
|
|
618
710
|
});
|
619
711
|
}
|
620
712
|
if (css) {
|
621
|
-
const
|
622
|
-
|
623
|
-
|
624
|
-
fullySpecified: true,
|
625
|
-
preferRelative: true
|
626
|
-
}
|
627
|
-
};
|
628
|
-
const cssModulesRule = {
|
629
|
-
type: "css/module",
|
630
|
-
resolve: {
|
631
|
-
fullySpecified: true
|
632
|
-
}
|
713
|
+
const resolve = {
|
714
|
+
fullySpecified: true,
|
715
|
+
preferRelative: true
|
633
716
|
};
|
634
717
|
rules.push({
|
635
718
|
test: /\.css$/i,
|
636
|
-
|
637
|
-
|
638
|
-
test: /\.module\.css$/i,
|
639
|
-
...cssModulesRule
|
640
|
-
},
|
641
|
-
{
|
642
|
-
...cssRule
|
643
|
-
}
|
644
|
-
]
|
719
|
+
type: CSS_MODULE_TYPE_AUTO,
|
720
|
+
resolve
|
645
721
|
});
|
646
722
|
rules.push({
|
647
723
|
mimetype: "text/css+module",
|
648
|
-
|
724
|
+
type: CSS_MODULE_TYPE_MODULE,
|
725
|
+
resolve
|
649
726
|
});
|
650
727
|
rules.push({
|
651
728
|
mimetype: "text/css",
|
652
|
-
|
729
|
+
type: CSS_MODULE_TYPE,
|
730
|
+
resolve
|
653
731
|
});
|
654
732
|
}
|
655
733
|
rules.push(
|
@@ -667,7 +745,7 @@ const applyModuleDefaults = (
|
|
667
745
|
},
|
668
746
|
{
|
669
747
|
assert: { type: "json" },
|
670
|
-
type:
|
748
|
+
type: JSON_MODULE_TYPE
|
671
749
|
}
|
672
750
|
);
|
673
751
|
return rules;
|
@@ -711,7 +789,7 @@ const applyOutputDefaults = (
|
|
711
789
|
!Array.isArray(library) &&
|
712
790
|
"type" in library
|
713
791
|
? library.name
|
714
|
-
: /** @type {LibraryName
|
792
|
+
: /** @type {LibraryName} */ (library);
|
715
793
|
if (Array.isArray(libraryName)) {
|
716
794
|
return libraryName.join(".");
|
717
795
|
} else if (typeof libraryName === "object") {
|
@@ -738,8 +816,11 @@ const applyOutputDefaults = (
|
|
738
816
|
const packageInfo = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
739
817
|
return packageInfo.name || "";
|
740
818
|
} catch (e) {
|
741
|
-
if (e.code !== "ENOENT") {
|
742
|
-
|
819
|
+
if (/** @type {Error & { code: string }} */ (e).code !== "ENOENT") {
|
820
|
+
/** @type {Error & { code: string }} */
|
821
|
+
(
|
822
|
+
e
|
823
|
+
).message += `\nwhile determining default 'output.uniqueName' from 'name' in ${pkgPath}`;
|
743
824
|
throw e;
|
744
825
|
}
|
745
826
|
return "";
|
@@ -752,7 +833,9 @@ const applyOutputDefaults = (
|
|
752
833
|
D(output, "importFunctionName", "import");
|
753
834
|
D(output, "importMetaName", "import.meta");
|
754
835
|
F(output, "chunkFilename", () => {
|
755
|
-
const filename =
|
836
|
+
const filename =
|
837
|
+
/** @type {NonNullable<Output["chunkFilename"]>} */
|
838
|
+
(output.filename);
|
756
839
|
if (typeof filename !== "function") {
|
757
840
|
const hasName = filename.includes("[name]");
|
758
841
|
const hasId = filename.includes("[id]");
|
@@ -766,14 +849,18 @@ const applyOutputDefaults = (
|
|
766
849
|
return output.module ? "[id].mjs" : "[id].js";
|
767
850
|
});
|
768
851
|
F(output, "cssFilename", () => {
|
769
|
-
const filename =
|
852
|
+
const filename =
|
853
|
+
/** @type {NonNullable<Output["cssFilename"]>} */
|
854
|
+
(output.filename);
|
770
855
|
if (typeof filename !== "function") {
|
771
856
|
return filename.replace(/\.[mc]?js(\?|$)/, ".css$1");
|
772
857
|
}
|
773
858
|
return "[id].css";
|
774
859
|
});
|
775
860
|
F(output, "cssChunkFilename", () => {
|
776
|
-
const chunkFilename =
|
861
|
+
const chunkFilename =
|
862
|
+
/** @type {NonNullable<Output["cssChunkFilename"]>} */
|
863
|
+
(output.chunkFilename);
|
777
864
|
if (typeof chunkFilename !== "function") {
|
778
865
|
return chunkFilename.replace(/\.[mc]?js(\?|$)/, ".css$1");
|
779
866
|
}
|
@@ -785,12 +872,18 @@ const applyOutputDefaults = (
|
|
785
872
|
D(output, "charset", true);
|
786
873
|
F(output, "hotUpdateGlobal", () =>
|
787
874
|
Template.toIdentifier(
|
788
|
-
"webpackHotUpdate" +
|
875
|
+
"webpackHotUpdate" +
|
876
|
+
Template.toIdentifier(
|
877
|
+
/** @type {NonNullable<Output["uniqueName"]>} */ (output.uniqueName)
|
878
|
+
)
|
789
879
|
)
|
790
880
|
);
|
791
881
|
F(output, "chunkLoadingGlobal", () =>
|
792
882
|
Template.toIdentifier(
|
793
|
-
"webpackChunk" +
|
883
|
+
"webpackChunk" +
|
884
|
+
Template.toIdentifier(
|
885
|
+
/** @type {NonNullable<Output["uniqueName"]>} */ (output.uniqueName)
|
886
|
+
)
|
794
887
|
)
|
795
888
|
);
|
796
889
|
F(output, "globalObject", () => {
|
@@ -916,32 +1009,87 @@ const applyOutputDefaults = (
|
|
916
1009
|
? "auto"
|
917
1010
|
: ""
|
918
1011
|
);
|
1012
|
+
D(output, "workerPublicPath", "");
|
919
1013
|
D(output, "chunkLoadTimeout", 120000);
|
920
1014
|
D(output, "hashFunction", futureDefaults ? "xxhash64" : "md4");
|
921
1015
|
D(output, "hashDigest", "hex");
|
922
1016
|
D(output, "hashDigestLength", futureDefaults ? 16 : 20);
|
923
1017
|
D(output, "strictModuleExceptionHandling", false);
|
924
1018
|
|
1019
|
+
const environment = /** @type {Environment} */ (output.environment);
|
1020
|
+
/**
|
1021
|
+
* @param {boolean | undefined} v value
|
1022
|
+
* @returns {boolean} true, when v is truthy or undefined
|
1023
|
+
*/
|
925
1024
|
const optimistic = v => v || v === undefined;
|
1025
|
+
/**
|
1026
|
+
* @param {boolean | undefined} v value
|
1027
|
+
* @param {boolean | undefined} c condition
|
1028
|
+
* @returns {boolean | undefined} true, when v is truthy or undefined, or c is truthy
|
1029
|
+
*/
|
926
1030
|
const conditionallyOptimistic = (v, c) => (v === undefined && c) || v;
|
1031
|
+
|
1032
|
+
F(
|
1033
|
+
environment,
|
1034
|
+
"globalThis",
|
1035
|
+
() => /** @type {boolean | undefined} */ (tp && tp.globalThis)
|
1036
|
+
);
|
1037
|
+
F(
|
1038
|
+
environment,
|
1039
|
+
"bigIntLiteral",
|
1040
|
+
() => /** @type {boolean | undefined} */ (tp && tp.bigIntLiteral)
|
1041
|
+
);
|
1042
|
+
F(
|
1043
|
+
environment,
|
1044
|
+
"const",
|
1045
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
1046
|
+
);
|
927
1047
|
F(
|
928
|
-
|
1048
|
+
environment,
|
929
1049
|
"arrowFunction",
|
930
|
-
() =>
|
1050
|
+
() =>
|
1051
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.arrowFunction))
|
931
1052
|
);
|
932
|
-
F(output.environment, "const", () => tp && optimistic(tp.const));
|
933
1053
|
F(
|
934
|
-
|
1054
|
+
environment,
|
1055
|
+
"forOf",
|
1056
|
+
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.forOf))
|
1057
|
+
);
|
1058
|
+
F(
|
1059
|
+
environment,
|
935
1060
|
"destructuring",
|
936
|
-
() =>
|
1061
|
+
() =>
|
1062
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.destructuring))
|
937
1063
|
);
|
938
|
-
F(
|
939
|
-
|
940
|
-
|
941
|
-
|
1064
|
+
F(
|
1065
|
+
environment,
|
1066
|
+
"optionalChaining",
|
1067
|
+
() =>
|
1068
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.optionalChaining))
|
1069
|
+
);
|
1070
|
+
F(
|
1071
|
+
environment,
|
1072
|
+
"templateLiteral",
|
1073
|
+
() =>
|
1074
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.templateLiteral))
|
1075
|
+
);
|
1076
|
+
F(environment, "dynamicImport", () =>
|
1077
|
+
conditionallyOptimistic(
|
1078
|
+
/** @type {boolean | undefined} */ (tp && tp.dynamicImport),
|
1079
|
+
output.module
|
1080
|
+
)
|
1081
|
+
);
|
1082
|
+
F(environment, "dynamicImportInWorker", () =>
|
1083
|
+
conditionallyOptimistic(
|
1084
|
+
/** @type {boolean | undefined} */ (tp && tp.dynamicImportInWorker),
|
1085
|
+
output.module
|
1086
|
+
)
|
942
1087
|
);
|
943
|
-
F(
|
944
|
-
conditionallyOptimistic(
|
1088
|
+
F(environment, "module", () =>
|
1089
|
+
conditionallyOptimistic(
|
1090
|
+
/** @type {boolean | undefined} */ (tp && tp.module),
|
1091
|
+
output.module
|
1092
|
+
)
|
945
1093
|
);
|
946
1094
|
|
947
1095
|
const { trustedTypes } = output;
|
@@ -950,8 +1098,10 @@ const applyOutputDefaults = (
|
|
950
1098
|
trustedTypes,
|
951
1099
|
"policyName",
|
952
1100
|
() =>
|
953
|
-
|
1101
|
+
/** @type {NonNullable<Output["uniqueName"]>} */
|
1102
|
+
(output.uniqueName).replace(/[^a-zA-Z0-9\-#=_/@.%]+/g, "_") || "webpack"
|
954
1103
|
);
|
1104
|
+
D(trustedTypes, "onPolicyCreationFailure", "stop");
|
955
1105
|
}
|
956
1106
|
|
957
1107
|
/**
|
@@ -960,10 +1110,11 @@ const applyOutputDefaults = (
|
|
960
1110
|
*/
|
961
1111
|
const forEachEntry = fn => {
|
962
1112
|
for (const name of Object.keys(entry)) {
|
963
|
-
fn(entry[name]);
|
1113
|
+
fn(/** @type {{[k: string] : EntryDescription}} */ (entry)[name]);
|
964
1114
|
}
|
965
1115
|
};
|
966
1116
|
A(output, "enabledLibraryTypes", () => {
|
1117
|
+
/** @type {LibraryType[]} */
|
967
1118
|
const enabledLibraryTypes = [];
|
968
1119
|
if (output.library) {
|
969
1120
|
enabledLibraryTypes.push(output.library.type);
|
@@ -1023,35 +1174,56 @@ const applyExternalsPresetsDefaults = (
|
|
1023
1174
|
D(
|
1024
1175
|
externalsPresets,
|
1025
1176
|
"web",
|
1026
|
-
|
1177
|
+
/** @type {boolean | undefined} */
|
1178
|
+
(!buildHttp && targetProperties && targetProperties.web)
|
1179
|
+
);
|
1180
|
+
D(
|
1181
|
+
externalsPresets,
|
1182
|
+
"node",
|
1183
|
+
/** @type {boolean | undefined} */
|
1184
|
+
(targetProperties && targetProperties.node)
|
1185
|
+
);
|
1186
|
+
D(
|
1187
|
+
externalsPresets,
|
1188
|
+
"nwjs",
|
1189
|
+
/** @type {boolean | undefined} */
|
1190
|
+
(targetProperties && targetProperties.nwjs)
|
1027
1191
|
);
|
1028
|
-
D(externalsPresets, "node", targetProperties && targetProperties.node);
|
1029
|
-
D(externalsPresets, "nwjs", targetProperties && targetProperties.nwjs);
|
1030
1192
|
D(
|
1031
1193
|
externalsPresets,
|
1032
1194
|
"electron",
|
1033
|
-
|
1195
|
+
/** @type {boolean | undefined} */
|
1196
|
+
(targetProperties && targetProperties.electron)
|
1034
1197
|
);
|
1035
1198
|
D(
|
1036
1199
|
externalsPresets,
|
1037
1200
|
"electronMain",
|
1038
|
-
|
1039
|
-
|
1040
|
-
targetProperties
|
1201
|
+
/** @type {boolean | undefined} */
|
1202
|
+
(
|
1203
|
+
targetProperties &&
|
1204
|
+
targetProperties.electron &&
|
1205
|
+
targetProperties.electronMain
|
1206
|
+
)
|
1041
1207
|
);
|
1042
1208
|
D(
|
1043
1209
|
externalsPresets,
|
1044
1210
|
"electronPreload",
|
1045
|
-
|
1046
|
-
|
1047
|
-
targetProperties
|
1211
|
+
/** @type {boolean | undefined} */
|
1212
|
+
(
|
1213
|
+
targetProperties &&
|
1214
|
+
targetProperties.electron &&
|
1215
|
+
targetProperties.electronPreload
|
1216
|
+
)
|
1048
1217
|
);
|
1049
1218
|
D(
|
1050
1219
|
externalsPresets,
|
1051
1220
|
"electronRenderer",
|
1052
|
-
|
1053
|
-
|
1054
|
-
targetProperties
|
1221
|
+
/** @type {boolean | undefined} */
|
1222
|
+
(
|
1223
|
+
targetProperties &&
|
1224
|
+
targetProperties.electron &&
|
1225
|
+
targetProperties.electronRenderer
|
1226
|
+
)
|
1055
1227
|
);
|
1056
1228
|
};
|
1057
1229
|
|
@@ -1059,9 +1231,10 @@ const applyExternalsPresetsDefaults = (
|
|
1059
1231
|
* @param {Loader} loader options
|
1060
1232
|
* @param {Object} options options
|
1061
1233
|
* @param {TargetProperties | false} options.targetProperties target properties
|
1234
|
+
* @param {Environment} options.environment environment
|
1062
1235
|
* @returns {void}
|
1063
1236
|
*/
|
1064
|
-
const applyLoaderDefaults = (loader, { targetProperties }) => {
|
1237
|
+
const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
|
1065
1238
|
F(loader, "target", () => {
|
1066
1239
|
if (targetProperties) {
|
1067
1240
|
if (targetProperties.electron) {
|
@@ -1075,6 +1248,7 @@ const applyLoaderDefaults = (loader, { targetProperties }) => {
|
|
1075
1248
|
if (targetProperties.web) return "web";
|
1076
1249
|
}
|
1077
1250
|
});
|
1251
|
+
D(loader, "environment", environment);
|
1078
1252
|
};
|
1079
1253
|
|
1080
1254
|
/**
|
@@ -1192,7 +1366,9 @@ const applyOptimizationDefaults = (
|
|
1192
1366
|
F(splitChunks, "maxAsyncRequests", () => (production ? 30 : Infinity));
|
1193
1367
|
F(splitChunks, "maxInitialRequests", () => (production ? 30 : Infinity));
|
1194
1368
|
D(splitChunks, "automaticNameDelimiter", "-");
|
1195
|
-
const
|
1369
|
+
const cacheGroups =
|
1370
|
+
/** @type {NonNullable<OptimizationSplitChunksOptions["cacheGroups"]>} */
|
1371
|
+
(splitChunks.cacheGroups);
|
1196
1372
|
F(cacheGroups, "default", () => ({
|
1197
1373
|
idHint: "",
|
1198
1374
|
reuseExistingChunk: true,
|
@@ -1214,9 +1390,16 @@ const applyOptimizationDefaults = (
|
|
1214
1390
|
* @param {string} options.context build context
|
1215
1391
|
* @param {TargetProperties | false} options.targetProperties target properties
|
1216
1392
|
* @param {Mode} options.mode mode
|
1393
|
+
* @param {CssExperimentOptions|false} options.css is css enabled
|
1217
1394
|
* @returns {ResolveOptions} resolve options
|
1218
1395
|
*/
|
1219
|
-
const getResolveDefaults = ({
|
1396
|
+
const getResolveDefaults = ({
|
1397
|
+
cache,
|
1398
|
+
context,
|
1399
|
+
targetProperties,
|
1400
|
+
mode,
|
1401
|
+
css
|
1402
|
+
}) => {
|
1220
1403
|
/** @type {string[]} */
|
1221
1404
|
const conditions = ["webpack"];
|
1222
1405
|
|
@@ -1284,6 +1467,24 @@ const getResolveDefaults = ({ cache, context, targetProperties, mode }) => {
|
|
1284
1467
|
}
|
1285
1468
|
};
|
1286
1469
|
|
1470
|
+
if (css) {
|
1471
|
+
const styleConditions = [];
|
1472
|
+
|
1473
|
+
styleConditions.push("webpack");
|
1474
|
+
styleConditions.push(mode === "development" ? "development" : "production");
|
1475
|
+
styleConditions.push("style");
|
1476
|
+
|
1477
|
+
resolveOptions.byDependency["css-import"] = {
|
1478
|
+
// We avoid using any main files because we have to be consistent with CSS `@import`
|
1479
|
+
// and CSS `@import` does not handle `main` files in directories,
|
1480
|
+
// you should always specify the full URL for styles
|
1481
|
+
mainFiles: [],
|
1482
|
+
mainFields: ["style", "..."],
|
1483
|
+
conditionNames: styleConditions,
|
1484
|
+
extensions: [".css"]
|
1485
|
+
};
|
1486
|
+
}
|
1487
|
+
|
1287
1488
|
return resolveOptions;
|
1288
1489
|
};
|
1289
1490
|
|