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/Watching.js
CHANGED
@@ -11,6 +11,8 @@ const Stats = require("./Stats");
|
|
11
11
|
/** @typedef {import("./Compilation")} Compilation */
|
12
12
|
/** @typedef {import("./Compiler")} Compiler */
|
13
13
|
/** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
|
14
|
+
/** @typedef {import("./WebpackError")} WebpackError */
|
15
|
+
/** @typedef {import("./logging/Logger").Logger} Logger */
|
14
16
|
|
15
17
|
/**
|
16
18
|
* @template T
|
@@ -58,9 +60,9 @@ class Watching {
|
|
58
60
|
this._needRecords = true;
|
59
61
|
this.watcher = undefined;
|
60
62
|
this.pausedWatcher = undefined;
|
61
|
-
/** @type {Set<string>} */
|
63
|
+
/** @type {Set<string> | undefined} */
|
62
64
|
this._collectedChangedFiles = undefined;
|
63
|
-
/** @type {Set<string>} */
|
65
|
+
/** @type {Set<string> | undefined} */
|
64
66
|
this._collectedRemovedFiles = undefined;
|
65
67
|
this._done = this._done.bind(this);
|
66
68
|
process.nextTick(() => {
|
@@ -69,8 +71,8 @@ class Watching {
|
|
69
71
|
}
|
70
72
|
|
71
73
|
/**
|
72
|
-
* @param {ReadonlySet<string
|
73
|
-
* @param {ReadonlySet<string
|
74
|
+
* @param {ReadonlySet<string>=} changedFiles changed files
|
75
|
+
* @param {ReadonlySet<string>=} removedFiles removed files
|
74
76
|
*/
|
75
77
|
_mergeWithCollected(changedFiles, removedFiles) {
|
76
78
|
if (!changedFiles) return;
|
@@ -80,11 +82,13 @@ class Watching {
|
|
80
82
|
} else {
|
81
83
|
for (const file of changedFiles) {
|
82
84
|
this._collectedChangedFiles.add(file);
|
83
|
-
|
85
|
+
/** @type {Set<string>} */
|
86
|
+
(this._collectedRemovedFiles).delete(file);
|
84
87
|
}
|
85
|
-
for (const file of removedFiles) {
|
88
|
+
for (const file of /** @type {ReadonlySet<string>} */ (removedFiles)) {
|
86
89
|
this._collectedChangedFiles.delete(file);
|
87
|
-
|
90
|
+
/** @type {Set<string>} */
|
91
|
+
(this._collectedRemovedFiles).add(file);
|
88
92
|
}
|
89
93
|
}
|
90
94
|
}
|
@@ -228,7 +232,7 @@ class Watching {
|
|
228
232
|
}
|
229
233
|
|
230
234
|
/**
|
231
|
-
* @param {Error=} err an optional error
|
235
|
+
* @param {(Error | null)=} err an optional error
|
232
236
|
* @param {Compilation=} compilation the compilation
|
233
237
|
* @returns {void}
|
234
238
|
*/
|
@@ -237,13 +241,18 @@ class Watching {
|
|
237
241
|
|
238
242
|
const logger = compilation && compilation.getLogger("webpack.Watching");
|
239
243
|
|
244
|
+
/** @type {Stats | null} */
|
240
245
|
let stats = null;
|
241
246
|
|
247
|
+
/**
|
248
|
+
* @param {Error} err error
|
249
|
+
* @param {Callback<void>[]=} cbs callbacks
|
250
|
+
*/
|
242
251
|
const handleError = (err, cbs) => {
|
243
252
|
this.compiler.hooks.failed.call(err);
|
244
253
|
this.compiler.cache.beginIdle();
|
245
254
|
this.compiler.idle = true;
|
246
|
-
this.handler(err, stats);
|
255
|
+
this.handler(err, /** @type {Stats} */ (stats));
|
247
256
|
if (!cbs) {
|
248
257
|
cbs = this.callbacks;
|
249
258
|
this.callbacks = [];
|
@@ -258,11 +267,13 @@ class Watching {
|
|
258
267
|
!(this._isBlocked() && (this.blocked = true))
|
259
268
|
) {
|
260
269
|
if (compilation) {
|
261
|
-
|
270
|
+
/** @type {Logger} */
|
271
|
+
(logger).time("storeBuildDependencies");
|
262
272
|
this.compiler.cache.storeBuildDependencies(
|
263
273
|
compilation.buildDependencies,
|
264
274
|
err => {
|
265
|
-
|
275
|
+
/** @type {Logger} */
|
276
|
+
(logger).timeEnd("storeBuildDependencies");
|
266
277
|
if (err) return handleError(err);
|
267
278
|
this._go();
|
268
279
|
}
|
@@ -283,32 +294,42 @@ class Watching {
|
|
283
294
|
|
284
295
|
const cbs = this.callbacks;
|
285
296
|
this.callbacks = [];
|
286
|
-
|
287
|
-
|
288
|
-
|
297
|
+
/** @type {Logger} */
|
298
|
+
(logger).time("done hook");
|
299
|
+
this.compiler.hooks.done.callAsync(/** @type {Stats} */ (stats), err => {
|
300
|
+
/** @type {Logger} */
|
301
|
+
(logger).timeEnd("done hook");
|
289
302
|
if (err) return handleError(err, cbs);
|
290
|
-
this.handler(null, stats);
|
291
|
-
|
303
|
+
this.handler(null, /** @type {Stats} */ (stats));
|
304
|
+
/** @type {Logger} */
|
305
|
+
(logger).time("storeBuildDependencies");
|
292
306
|
this.compiler.cache.storeBuildDependencies(
|
293
|
-
|
307
|
+
/** @type {Compilation} */
|
308
|
+
(compilation).buildDependencies,
|
294
309
|
err => {
|
295
|
-
|
310
|
+
/** @type {Logger} */
|
311
|
+
(logger).timeEnd("storeBuildDependencies");
|
296
312
|
if (err) return handleError(err, cbs);
|
297
|
-
|
313
|
+
/** @type {Logger} */
|
314
|
+
(logger).time("beginIdle");
|
298
315
|
this.compiler.cache.beginIdle();
|
299
316
|
this.compiler.idle = true;
|
300
|
-
|
317
|
+
/** @type {Logger} */
|
318
|
+
(logger).timeEnd("beginIdle");
|
301
319
|
process.nextTick(() => {
|
302
320
|
if (!this.closed) {
|
303
321
|
this.watch(
|
304
|
-
|
305
|
-
compilation.
|
306
|
-
|
322
|
+
/** @type {Compilation} */
|
323
|
+
(compilation).fileDependencies,
|
324
|
+
/** @type {Compilation} */
|
325
|
+
(compilation).contextDependencies,
|
326
|
+
/** @type {Compilation} */
|
327
|
+
(compilation).missingDependencies
|
307
328
|
);
|
308
329
|
}
|
309
330
|
});
|
310
331
|
for (const cb of cbs) cb(null);
|
311
|
-
this.compiler.hooks.afterDone.call(stats);
|
332
|
+
this.compiler.hooks.afterDone.call(/** @type {Stats} */ (stats));
|
312
333
|
}
|
313
334
|
);
|
314
335
|
});
|
@@ -377,6 +398,13 @@ class Watching {
|
|
377
398
|
this._invalidate();
|
378
399
|
}
|
379
400
|
|
401
|
+
/**
|
402
|
+
* @param {ReadonlyMap<string, FileSystemInfoEntry | "ignore">=} fileTimeInfoEntries info for files
|
403
|
+
* @param {ReadonlyMap<string, FileSystemInfoEntry | "ignore">=} contextTimeInfoEntries info for directories
|
404
|
+
* @param {ReadonlySet<string>=} changedFiles changed files
|
405
|
+
* @param {ReadonlySet<string>=} removedFiles removed files
|
406
|
+
* @returns {void}
|
407
|
+
*/
|
380
408
|
_invalidate(
|
381
409
|
fileTimeInfoEntries,
|
382
410
|
contextTimeInfoEntries,
|
@@ -423,6 +451,10 @@ class Watching {
|
|
423
451
|
}
|
424
452
|
return;
|
425
453
|
}
|
454
|
+
/**
|
455
|
+
* @param {(WebpackError | null)=} err error if any
|
456
|
+
* @param {Compilation=} compilation compilation if any
|
457
|
+
*/
|
426
458
|
const finalCallback = (err, compilation) => {
|
427
459
|
this.running = false;
|
428
460
|
this.compiler.running = false;
|
@@ -433,9 +465,14 @@ class Watching {
|
|
433
465
|
this.compiler.fileTimestamps = undefined;
|
434
466
|
this.compiler.contextTimestamps = undefined;
|
435
467
|
this.compiler.fsStartTime = undefined;
|
468
|
+
/**
|
469
|
+
* @param {(WebpackError | null)=} err error if any
|
470
|
+
*/
|
436
471
|
const shutdown = err => {
|
437
472
|
this.compiler.hooks.watchClose.call();
|
438
|
-
const closeCallbacks =
|
473
|
+
const closeCallbacks =
|
474
|
+
/** @type {Callback<void>[]} */
|
475
|
+
(this._closeCallbacks);
|
439
476
|
this._closeCallbacks = undefined;
|
440
477
|
for (const cb of closeCallbacks) cb(err);
|
441
478
|
};
|
package/lib/WebpackError.js
CHANGED
@@ -11,6 +11,8 @@ const makeSerializable = require("./util/makeSerializable");
|
|
11
11
|
/** @typedef {import("./Chunk")} Chunk */
|
12
12
|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
13
13
|
/** @typedef {import("./Module")} Module */
|
14
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
15
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
14
16
|
|
15
17
|
class WebpackError extends Error {
|
16
18
|
/**
|
@@ -20,16 +22,17 @@ class WebpackError extends Error {
|
|
20
22
|
constructor(message) {
|
21
23
|
super(message);
|
22
24
|
|
25
|
+
/** @type {string | undefined} */
|
23
26
|
this.details = undefined;
|
24
|
-
/** @type {Module} */
|
27
|
+
/** @type {Module | undefined | null} */
|
25
28
|
this.module = undefined;
|
26
|
-
/** @type {DependencyLocation} */
|
29
|
+
/** @type {DependencyLocation | undefined} */
|
27
30
|
this.loc = undefined;
|
28
|
-
/** @type {boolean} */
|
31
|
+
/** @type {boolean | undefined} */
|
29
32
|
this.hideStack = undefined;
|
30
|
-
/** @type {Chunk} */
|
33
|
+
/** @type {Chunk | undefined} */
|
31
34
|
this.chunk = undefined;
|
32
|
-
/** @type {string} */
|
35
|
+
/** @type {string | undefined} */
|
33
36
|
this.file = undefined;
|
34
37
|
}
|
35
38
|
|
@@ -37,6 +40,9 @@ class WebpackError extends Error {
|
|
37
40
|
return this.stack + (this.details ? `\n${this.details}` : "");
|
38
41
|
}
|
39
42
|
|
43
|
+
/**
|
44
|
+
* @param {ObjectSerializerContext} context context
|
45
|
+
*/
|
40
46
|
serialize({ write }) {
|
41
47
|
write(this.name);
|
42
48
|
write(this.message);
|
@@ -46,6 +52,9 @@ class WebpackError extends Error {
|
|
46
52
|
write(this.hideStack);
|
47
53
|
}
|
48
54
|
|
55
|
+
/**
|
56
|
+
* @param {ObjectDeserializerContext} context context
|
57
|
+
*/
|
49
58
|
deserialize({ read }) {
|
50
59
|
this.name = read();
|
51
60
|
this.message = read();
|
@@ -6,15 +6,24 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const IgnoreErrorModuleFactory = require("./IgnoreErrorModuleFactory");
|
9
|
+
const {
|
10
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
11
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
12
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
13
|
+
} = require("./ModuleTypeConstants");
|
9
14
|
const WebpackIsIncludedDependency = require("./dependencies/WebpackIsIncludedDependency");
|
10
15
|
const {
|
11
16
|
toConstantDependency
|
12
17
|
} = require("./javascript/JavascriptParserHelpers");
|
13
18
|
|
14
|
-
/** @typedef {import("enhanced-resolve
|
19
|
+
/** @typedef {import("enhanced-resolve").Resolver} Resolver */
|
15
20
|
/** @typedef {import("./Compiler")} Compiler */
|
21
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
16
22
|
/** @typedef {import("./Module")} Module */
|
17
23
|
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
24
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
25
|
+
|
26
|
+
const PLUGIN_NAME = "WebpackIsIncludedPlugin";
|
18
27
|
|
19
28
|
class WebpackIsIncludedPlugin {
|
20
29
|
/**
|
@@ -23,7 +32,7 @@ class WebpackIsIncludedPlugin {
|
|
23
32
|
*/
|
24
33
|
apply(compiler) {
|
25
34
|
compiler.hooks.compilation.tap(
|
26
|
-
|
35
|
+
PLUGIN_NAME,
|
27
36
|
(compilation, { normalModuleFactory }) => {
|
28
37
|
compilation.dependencyFactories.set(
|
29
38
|
WebpackIsIncludedDependency,
|
@@ -41,7 +50,7 @@ class WebpackIsIncludedPlugin {
|
|
41
50
|
const handler = parser => {
|
42
51
|
parser.hooks.call
|
43
52
|
.for("__webpack_is_included__")
|
44
|
-
.tap(
|
53
|
+
.tap(PLUGIN_NAME, expr => {
|
45
54
|
if (
|
46
55
|
expr.type !== "CallExpression" ||
|
47
56
|
expr.arguments.length !== 1 ||
|
@@ -54,29 +63,29 @@ class WebpackIsIncludedPlugin {
|
|
54
63
|
if (!request.isString()) return;
|
55
64
|
|
56
65
|
const dep = new WebpackIsIncludedDependency(
|
57
|
-
request.string,
|
58
|
-
expr.range
|
66
|
+
/** @type {string} */ (request.string),
|
67
|
+
/** @type {Range} */ (expr.range)
|
59
68
|
);
|
60
|
-
dep.loc = expr.loc;
|
69
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
61
70
|
parser.state.module.addDependency(dep);
|
62
71
|
return true;
|
63
72
|
});
|
64
73
|
parser.hooks.typeof
|
65
74
|
.for("__webpack_is_included__")
|
66
75
|
.tap(
|
67
|
-
|
76
|
+
PLUGIN_NAME,
|
68
77
|
toConstantDependency(parser, JSON.stringify("function"))
|
69
78
|
);
|
70
79
|
};
|
71
80
|
normalModuleFactory.hooks.parser
|
72
|
-
.for(
|
73
|
-
.tap(
|
81
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
82
|
+
.tap(PLUGIN_NAME, handler);
|
74
83
|
normalModuleFactory.hooks.parser
|
75
|
-
.for(
|
76
|
-
.tap(
|
84
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
85
|
+
.tap(PLUGIN_NAME, handler);
|
77
86
|
normalModuleFactory.hooks.parser
|
78
|
-
.for(
|
79
|
-
.tap(
|
87
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
88
|
+
.tap(PLUGIN_NAME, handler);
|
80
89
|
}
|
81
90
|
);
|
82
91
|
}
|
@@ -119,47 +119,40 @@ class WebpackOptionsApply extends OptionsApply {
|
|
119
119
|
if (options.externalsPresets.webAsync) {
|
120
120
|
//@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
121
121
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
122
|
-
new ExternalsPlugin(
|
123
|
-
"
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
: /^(\/\/|https?:\/\/|std:)/
|
140
|
-
).apply(compiler);
|
122
|
+
new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
|
123
|
+
if (dependencyType === "url") {
|
124
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
125
|
+
return callback(null, `asset ${request}`);
|
126
|
+
} else if (options.experiments.css && dependencyType === "css-import") {
|
127
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
128
|
+
return callback(null, `css-import ${request}`);
|
129
|
+
} else if (
|
130
|
+
options.experiments.css &&
|
131
|
+
/^(\/\/|https?:\/\/|std:)/.test(request)
|
132
|
+
) {
|
133
|
+
if (/^\.css(\?|$)/.test(request))
|
134
|
+
return callback(null, `css-import ${request}`);
|
135
|
+
return callback(null, `import ${request}`);
|
136
|
+
}
|
137
|
+
callback();
|
138
|
+
}).apply(compiler);
|
141
139
|
} else if (options.externalsPresets.web) {
|
142
140
|
//@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
143
141
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
144
|
-
new ExternalsPlugin(
|
145
|
-
"
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
}
|
159
|
-
callback();
|
160
|
-
}
|
161
|
-
: /^(\/\/|https?:\/\/|std:)/
|
162
|
-
).apply(compiler);
|
142
|
+
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
143
|
+
if (dependencyType === "url") {
|
144
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
145
|
+
return callback(null, `asset ${request}`);
|
146
|
+
} else if (options.experiments.css && dependencyType === "css-import") {
|
147
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
148
|
+
return callback(null, `css-import ${request}`);
|
149
|
+
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
150
|
+
if (options.experiments.css && /^\.css((\?)|$)/.test(request))
|
151
|
+
return callback(null, `css-import ${request}`);
|
152
|
+
return callback(null, `module ${request}`);
|
153
|
+
}
|
154
|
+
callback();
|
155
|
+
}).apply(compiler);
|
163
156
|
} else if (options.externalsPresets.node) {
|
164
157
|
if (options.experiments.css) {
|
165
158
|
//@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
@@ -168,10 +161,10 @@ class WebpackOptionsApply extends OptionsApply {
|
|
168
161
|
"module",
|
169
162
|
({ request, dependencyType }, callback) => {
|
170
163
|
if (dependencyType === "url") {
|
171
|
-
if (/^(\/\/|https
|
164
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
172
165
|
return callback(null, `asset ${request}`);
|
173
166
|
} else if (dependencyType === "css-import") {
|
174
|
-
if (/^(\/\/|https
|
167
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
175
168
|
return callback(null, `css-import ${request}`);
|
176
169
|
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
177
170
|
if (/^\.css(\?|$)/.test(request))
|
@@ -375,7 +368,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
375
368
|
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
376
369
|
new NodeStuffPlugin(options.node).apply(compiler);
|
377
370
|
}
|
378
|
-
new APIPlugin(
|
371
|
+
new APIPlugin({
|
372
|
+
module: options.output.module
|
373
|
+
}).apply(compiler);
|
379
374
|
new ExportsInfoApiPlugin().apply(compiler);
|
380
375
|
new WebpackIsIncludedPlugin().apply(compiler);
|
381
376
|
new ConstPlugin().apply(compiler);
|
@@ -391,7 +386,8 @@ class WebpackOptionsApply extends OptionsApply {
|
|
391
386
|
new WorkerPlugin(
|
392
387
|
options.output.workerChunkLoading,
|
393
388
|
options.output.workerWasmLoading,
|
394
|
-
options.output.module
|
389
|
+
options.output.module,
|
390
|
+
options.output.workerPublicPath
|
395
391
|
).apply(compiler);
|
396
392
|
|
397
393
|
new DefaultStatsFactoryPlugin().apply(compiler);
|
@@ -570,7 +566,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
570
566
|
for (const minimizer of options.optimization.minimizer) {
|
571
567
|
if (typeof minimizer === "function") {
|
572
568
|
minimizer.call(compiler, compiler);
|
573
|
-
} else if (minimizer !== "...") {
|
569
|
+
} else if (minimizer !== "..." && minimizer) {
|
574
570
|
minimizer.apply(compiler);
|
575
571
|
}
|
576
572
|
}
|
@@ -663,7 +659,8 @@ class WebpackOptionsApply extends OptionsApply {
|
|
663
659
|
maxAge: cacheOptions.maxAge,
|
664
660
|
profile: cacheOptions.profile,
|
665
661
|
allowCollectingMemory: cacheOptions.allowCollectingMemory,
|
666
|
-
compression: cacheOptions.compression
|
662
|
+
compression: cacheOptions.compression,
|
663
|
+
readonly: cacheOptions.readonly
|
667
664
|
}),
|
668
665
|
cacheOptions.idleTimeout,
|
669
666
|
cacheOptions.idleTimeoutForInitialStore,
|
@@ -8,11 +8,18 @@
|
|
8
8
|
const { applyWebpackOptionsDefaults } = require("./config/defaults");
|
9
9
|
const { getNormalizedWebpackOptions } = require("./config/normalization");
|
10
10
|
|
11
|
+
/** @typedef {import("./config/normalization").WebpackOptions} WebpackOptions */
|
12
|
+
/** @typedef {import("./config/normalization").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
13
|
+
|
11
14
|
class WebpackOptionsDefaulter {
|
15
|
+
/**
|
16
|
+
* @param {WebpackOptions} options webpack options
|
17
|
+
* @returns {WebpackOptionsNormalized} normalized webpack options
|
18
|
+
*/
|
12
19
|
process(options) {
|
13
|
-
|
14
|
-
applyWebpackOptionsDefaults(
|
15
|
-
return
|
20
|
+
const normalizedOptions = getNormalizedWebpackOptions(options);
|
21
|
+
applyWebpackOptionsDefaults(normalizedOptions);
|
22
|
+
return normalizedOptions;
|
16
23
|
}
|
17
24
|
}
|
18
25
|
|
@@ -10,6 +10,7 @@ const path = require("path");
|
|
10
10
|
const { RawSource } = require("webpack-sources");
|
11
11
|
const ConcatenationScope = require("../ConcatenationScope");
|
12
12
|
const Generator = require("../Generator");
|
13
|
+
const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
|
13
14
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
14
15
|
const createHash = require("../util/createHash");
|
15
16
|
const { makePathsRelative } = require("../util/identifier");
|
@@ -106,15 +107,28 @@ const encodeDataUri = (encoding, source) => {
|
|
106
107
|
return encodedContent;
|
107
108
|
};
|
108
109
|
|
110
|
+
/**
|
111
|
+
* @param {string} encoding encoding
|
112
|
+
* @param {string} content content
|
113
|
+
* @returns {Buffer} decoded content
|
114
|
+
*/
|
109
115
|
const decodeDataUriContent = (encoding, content) => {
|
110
116
|
const isBase64 = encoding === "base64";
|
111
|
-
|
112
|
-
|
113
|
-
|
117
|
+
|
118
|
+
if (isBase64) {
|
119
|
+
return Buffer.from(content, "base64");
|
120
|
+
}
|
121
|
+
|
122
|
+
// If we can't decode return the original body
|
123
|
+
try {
|
124
|
+
return Buffer.from(decodeURIComponent(content), "ascii");
|
125
|
+
} catch (_) {
|
126
|
+
return Buffer.from(content, "ascii");
|
127
|
+
}
|
114
128
|
};
|
115
129
|
|
116
130
|
const JS_TYPES = new Set(["javascript"]);
|
117
|
-
const JS_AND_ASSET_TYPES = new Set(["javascript",
|
131
|
+
const JS_AND_ASSET_TYPES = new Set(["javascript", ASSET_MODULE_TYPE]);
|
118
132
|
const DEFAULT_ENCODING = "base64";
|
119
133
|
|
120
134
|
class AssetGenerator extends Generator {
|
@@ -167,6 +181,7 @@ class AssetGenerator extends Generator {
|
|
167
181
|
);
|
168
182
|
}
|
169
183
|
|
184
|
+
/** @type {string | boolean | undefined} */
|
170
185
|
let mimeType = this.dataUrlOptions.mimetype;
|
171
186
|
if (mimeType === undefined) {
|
172
187
|
const ext = path.extname(module.nameForCondition());
|
@@ -199,7 +214,7 @@ class AssetGenerator extends Generator {
|
|
199
214
|
);
|
200
215
|
}
|
201
216
|
|
202
|
-
return mimeType;
|
217
|
+
return /** @type {string} */ (mimeType);
|
203
218
|
}
|
204
219
|
|
205
220
|
/**
|
@@ -220,11 +235,11 @@ class AssetGenerator extends Generator {
|
|
220
235
|
}
|
221
236
|
) {
|
222
237
|
switch (type) {
|
223
|
-
case
|
224
|
-
return module.originalSource();
|
238
|
+
case ASSET_MODULE_TYPE:
|
239
|
+
return /** @type {Source} */ (module.originalSource());
|
225
240
|
default: {
|
226
241
|
let content;
|
227
|
-
const originalSource = module.originalSource();
|
242
|
+
const originalSource = /** @type {Source} */ (module.originalSource());
|
228
243
|
if (module.buildInfo.dataUrl) {
|
229
244
|
let encodedSource;
|
230
245
|
if (typeof this.dataUrlOptions === "function") {
|
@@ -398,7 +413,7 @@ class AssetGenerator extends Generator {
|
|
398
413
|
*/
|
399
414
|
getSize(module, type) {
|
400
415
|
switch (type) {
|
401
|
-
case
|
416
|
+
case ASSET_MODULE_TYPE: {
|
402
417
|
const originalSource = module.originalSource();
|
403
418
|
|
404
419
|
if (!originalSource) {
|