webpack 5.76.1 → 5.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +4 -0
- 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 +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- 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/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 +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- 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/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/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/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- 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 +15 -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 +194 -194
- 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 +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- 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 +6 -0
- package/lib/util/StringXor.js +51 -0
- 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 +14 -1
- package/lib/util/semver.js +1 -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 +132 -5
- 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 +1608 -667
@@ -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) {
|
@@ -5,6 +5,12 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
ASSET_MODULE_TYPE_RESOURCE,
|
10
|
+
ASSET_MODULE_TYPE_INLINE,
|
11
|
+
ASSET_MODULE_TYPE,
|
12
|
+
ASSET_MODULE_TYPE_SOURCE
|
13
|
+
} = require("../ModuleTypeConstants");
|
8
14
|
const { cleverMerge } = require("../util/cleverMerge");
|
9
15
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
10
16
|
const createSchemaValidation = require("../util/create-schema-validation");
|
@@ -15,6 +21,10 @@ const memoize = require("../util/memoize");
|
|
15
21
|
/** @typedef {import("../Compiler")} Compiler */
|
16
22
|
/** @typedef {import("../Module")} Module */
|
17
23
|
|
24
|
+
/**
|
25
|
+
* @param {string} name name of definitions
|
26
|
+
* @returns {TODO} definition
|
27
|
+
*/
|
18
28
|
const getSchema = name => {
|
19
29
|
const { definitions } = require("../../schemas/WebpackOptions.json");
|
20
30
|
return {
|
@@ -61,7 +71,7 @@ const getAssetSourceGenerator = memoize(() =>
|
|
61
71
|
require("./AssetSourceGenerator")
|
62
72
|
);
|
63
73
|
|
64
|
-
const type =
|
74
|
+
const type = ASSET_MODULE_TYPE;
|
65
75
|
const plugin = "AssetModulesPlugin";
|
66
76
|
|
67
77
|
class AssetModulesPlugin {
|
@@ -75,7 +85,7 @@ class AssetModulesPlugin {
|
|
75
85
|
plugin,
|
76
86
|
(compilation, { normalModuleFactory }) => {
|
77
87
|
normalModuleFactory.hooks.createParser
|
78
|
-
.for(
|
88
|
+
.for(ASSET_MODULE_TYPE)
|
79
89
|
.tap(plugin, parserOptions => {
|
80
90
|
validateParserOptions(parserOptions);
|
81
91
|
parserOptions = cleverMerge(
|
@@ -96,35 +106,39 @@ class AssetModulesPlugin {
|
|
96
106
|
return new AssetParser(dataUrlCondition);
|
97
107
|
});
|
98
108
|
normalModuleFactory.hooks.createParser
|
99
|
-
.for(
|
109
|
+
.for(ASSET_MODULE_TYPE_INLINE)
|
100
110
|
.tap(plugin, parserOptions => {
|
101
111
|
const AssetParser = getAssetParser();
|
102
112
|
|
103
113
|
return new AssetParser(true);
|
104
114
|
});
|
105
115
|
normalModuleFactory.hooks.createParser
|
106
|
-
.for(
|
116
|
+
.for(ASSET_MODULE_TYPE_RESOURCE)
|
107
117
|
.tap(plugin, parserOptions => {
|
108
118
|
const AssetParser = getAssetParser();
|
109
119
|
|
110
120
|
return new AssetParser(false);
|
111
121
|
});
|
112
122
|
normalModuleFactory.hooks.createParser
|
113
|
-
.for(
|
123
|
+
.for(ASSET_MODULE_TYPE_SOURCE)
|
114
124
|
.tap(plugin, parserOptions => {
|
115
125
|
const AssetSourceParser = getAssetSourceParser();
|
116
126
|
|
117
127
|
return new AssetSourceParser();
|
118
128
|
});
|
119
129
|
|
120
|
-
for (const type of [
|
130
|
+
for (const type of [
|
131
|
+
ASSET_MODULE_TYPE,
|
132
|
+
ASSET_MODULE_TYPE_INLINE,
|
133
|
+
ASSET_MODULE_TYPE_RESOURCE
|
134
|
+
]) {
|
121
135
|
normalModuleFactory.hooks.createGenerator
|
122
136
|
.for(type)
|
123
137
|
.tap(plugin, generatorOptions => {
|
124
138
|
validateGeneratorOptions[type](generatorOptions);
|
125
139
|
|
126
140
|
let dataUrl = undefined;
|
127
|
-
if (type !==
|
141
|
+
if (type !== ASSET_MODULE_TYPE_RESOURCE) {
|
128
142
|
dataUrl = generatorOptions.dataUrl;
|
129
143
|
if (!dataUrl || typeof dataUrl === "object") {
|
130
144
|
dataUrl = {
|
@@ -138,7 +152,7 @@ class AssetModulesPlugin {
|
|
138
152
|
let filename = undefined;
|
139
153
|
let publicPath = undefined;
|
140
154
|
let outputPath = undefined;
|
141
|
-
if (type !==
|
155
|
+
if (type !== ASSET_MODULE_TYPE_INLINE) {
|
142
156
|
filename = generatorOptions.filename;
|
143
157
|
publicPath = generatorOptions.publicPath;
|
144
158
|
outputPath = generatorOptions.outputPath;
|
@@ -156,7 +170,7 @@ class AssetModulesPlugin {
|
|
156
170
|
});
|
157
171
|
}
|
158
172
|
normalModuleFactory.hooks.createGenerator
|
159
|
-
.for(
|
173
|
+
.for(ASSET_MODULE_TYPE_SOURCE)
|
160
174
|
.tap(plugin, () => {
|
161
175
|
const AssetSourceGenerator = getAssetSourceGenerator();
|
162
176
|
|
@@ -169,7 +183,7 @@ class AssetModulesPlugin {
|
|
169
183
|
|
170
184
|
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
171
185
|
chunk,
|
172
|
-
|
186
|
+
ASSET_MODULE_TYPE,
|
173
187
|
compareModulesByIdentifier
|
174
188
|
);
|
175
189
|
if (modules) {
|
@@ -194,7 +208,9 @@ class AssetModulesPlugin {
|
|
194
208
|
codeGenResult.data.get("fullContentHash")
|
195
209
|
});
|
196
210
|
} catch (e) {
|
197
|
-
|
211
|
+
/** @type {Error} */ (
|
212
|
+
e
|
213
|
+
).message += `\nduring rendering of asset ${module.identifier()}`;
|
198
214
|
throw e;
|
199
215
|
}
|
200
216
|
}
|
@@ -207,7 +223,7 @@ class AssetModulesPlugin {
|
|
207
223
|
"AssetModulesPlugin",
|
208
224
|
(options, context) => {
|
209
225
|
const { codeGenerationResult } = options;
|
210
|
-
const source = codeGenerationResult.sources.get(
|
226
|
+
const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
|
211
227
|
if (source === undefined) return;
|
212
228
|
context.assets.set(codeGenerationResult.data.get("filename"), {
|
213
229
|
source,
|
package/lib/asset/AssetParser.js
CHANGED
@@ -7,7 +7,10 @@
|
|
7
7
|
|
8
8
|
const Parser = require("../Parser");
|
9
9
|
|
10
|
+
/** @typedef {import("../../declarations/WebpackOptions").AssetParserDataUrlOptions} AssetParserDataUrlOptions */
|
10
11
|
/** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
|
12
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
13
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
11
14
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
12
15
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
13
16
|
|
@@ -29,23 +32,28 @@ class AssetParser extends Parser {
|
|
29
32
|
if (typeof source === "object" && !Buffer.isBuffer(source)) {
|
30
33
|
throw new Error("AssetParser doesn't accept preparsed AST");
|
31
34
|
}
|
32
|
-
|
33
|
-
state.module.
|
34
|
-
|
35
|
+
|
36
|
+
const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo);
|
37
|
+
buildInfo.strict = true;
|
38
|
+
const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
|
39
|
+
buildMeta.exportsType = "default";
|
40
|
+
buildMeta.defaultObject = false;
|
35
41
|
|
36
42
|
if (typeof this.dataUrlCondition === "function") {
|
37
|
-
|
43
|
+
buildInfo.dataUrl = this.dataUrlCondition(source, {
|
38
44
|
filename: state.module.matchResource || state.module.resource,
|
39
45
|
module: state.module
|
40
46
|
});
|
41
47
|
} else if (typeof this.dataUrlCondition === "boolean") {
|
42
|
-
|
48
|
+
buildInfo.dataUrl = this.dataUrlCondition;
|
43
49
|
} else if (
|
44
50
|
this.dataUrlCondition &&
|
45
51
|
typeof this.dataUrlCondition === "object"
|
46
52
|
) {
|
47
|
-
|
48
|
-
Buffer.byteLength(source) <=
|
53
|
+
buildInfo.dataUrl =
|
54
|
+
Buffer.byteLength(source) <=
|
55
|
+
/** @type {NonNullable<AssetParserDataUrlOptions["maxSize"]>} */
|
56
|
+
(this.dataUrlCondition.maxSize);
|
49
57
|
} else {
|
50
58
|
throw new Error("Unexpected dataUrlCondition type");
|
51
59
|
}
|
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
const Parser = require("../Parser");
|
9
9
|
|
10
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
11
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
10
12
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
11
13
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
12
14
|
|
@@ -21,9 +23,12 @@ class AssetSourceParser extends Parser {
|
|
21
23
|
throw new Error("AssetSourceParser doesn't accept preparsed AST");
|
22
24
|
}
|
23
25
|
const { module } = state;
|
24
|
-
|
25
|
-
module.
|
26
|
-
|
26
|
+
/** @type {BuildInfo} */
|
27
|
+
(module.buildInfo).strict = true;
|
28
|
+
/** @type {BuildMeta} */
|
29
|
+
(module.buildMeta).exportsType = "default";
|
30
|
+
/** @type {BuildMeta} */
|
31
|
+
(state.module.buildMeta).defaultObject = false;
|
27
32
|
|
28
33
|
return state;
|
29
34
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
9
9
|
const Module = require("../Module");
|
10
|
+
const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
|
10
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
12
13
|
|
@@ -19,6 +20,8 @@ const makeSerializable = require("../util/makeSerializable");
|
|
19
20
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
20
21
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
21
22
|
/** @typedef {import("../WebpackError")} WebpackError */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
24
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
22
25
|
/** @typedef {import("../util/Hash")} Hash */
|
23
26
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
24
27
|
|
@@ -31,7 +34,7 @@ class RawDataUrlModule extends Module {
|
|
31
34
|
* @param {string=} readableIdentifier readable identifier
|
32
35
|
*/
|
33
36
|
constructor(url, identifier, readableIdentifier) {
|
34
|
-
super(
|
37
|
+
super(ASSET_MODULE_TYPE_RAW_DATA_URL, null);
|
35
38
|
this.url = url;
|
36
39
|
this.urlBuffer = url ? Buffer.from(url) : undefined;
|
37
40
|
this.identifierStr = identifier || this.url;
|
@@ -57,7 +60,8 @@ class RawDataUrlModule extends Module {
|
|
57
60
|
* @returns {number} the estimated size of the module (must be non-zero)
|
58
61
|
*/
|
59
62
|
size(type) {
|
60
|
-
if (this.url === undefined)
|
63
|
+
if (this.url === undefined)
|
64
|
+
this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
|
61
65
|
return Math.max(1, this.url.length);
|
62
66
|
}
|
63
67
|
|
@@ -99,7 +103,8 @@ class RawDataUrlModule extends Module {
|
|
99
103
|
* @returns {CodeGenerationResult} result
|
100
104
|
*/
|
101
105
|
codeGeneration(context) {
|
102
|
-
if (this.url === undefined)
|
106
|
+
if (this.url === undefined)
|
107
|
+
this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
|
103
108
|
const sources = new Map();
|
104
109
|
sources.set(
|
105
110
|
"javascript",
|
@@ -118,10 +123,13 @@ class RawDataUrlModule extends Module {
|
|
118
123
|
* @returns {void}
|
119
124
|
*/
|
120
125
|
updateHash(hash, context) {
|
121
|
-
hash.update(this.urlBuffer);
|
126
|
+
hash.update(/** @type {Buffer} */ (this.urlBuffer));
|
122
127
|
super.updateHash(hash, context);
|
123
128
|
}
|
124
129
|
|
130
|
+
/**
|
131
|
+
* @param {ObjectSerializerContext} context context
|
132
|
+
*/
|
125
133
|
serialize(context) {
|
126
134
|
const { write } = context;
|
127
135
|
|
@@ -132,6 +140,9 @@ class RawDataUrlModule extends Module {
|
|
132
140
|
super.serialize(context);
|
133
141
|
}
|
134
142
|
|
143
|
+
/**
|
144
|
+
* @param {ObjectDeserializerContext} context context
|
145
|
+
*/
|
135
146
|
deserialize(context) {
|
136
147
|
const { read } = context;
|
137
148
|
|
@@ -29,6 +29,10 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
29
29
|
this.promises = promises;
|
30
30
|
}
|
31
31
|
|
32
|
+
/**
|
33
|
+
* @param {AwaitDependenciesInitFragment} other other AwaitDependenciesInitFragment
|
34
|
+
* @returns {AwaitDependenciesInitFragment} AwaitDependenciesInitFragment
|
35
|
+
*/
|
32
36
|
merge(other) {
|
33
37
|
const promises = new Set(other.promises);
|
34
38
|
for (const p of this.promises) {
|
@@ -50,7 +50,7 @@ class IdleFileCachePlugin {
|
|
50
50
|
let timeSpendInStore = 0;
|
51
51
|
let avgTimeSpendInStore = 0;
|
52
52
|
|
53
|
-
/** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise
|
53
|
+
/** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void>>} */
|
54
54
|
const pendingIdleTasks = new Map();
|
55
55
|
|
56
56
|
compiler.cache.hooks.store.tap(
|
@@ -171,6 +171,7 @@ class IdleFileCachePlugin {
|
|
171
171
|
isInitialStore = false;
|
172
172
|
}
|
173
173
|
};
|
174
|
+
/** @type {ReturnType<typeof setTimeout> | undefined} */
|
174
175
|
let idleTimer = undefined;
|
175
176
|
compiler.cache.hooks.beginIdle.tap(
|
176
177
|
{ name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
|
@@ -34,6 +34,8 @@ class MemoryWithGcCachePlugin {
|
|
34
34
|
generation++;
|
35
35
|
let clearedEntries = 0;
|
36
36
|
let lastClearedIdentifier;
|
37
|
+
// Avoid coverage problems due indirect changes
|
38
|
+
/* istanbul ignore next */
|
37
39
|
for (const [identifier, entry] of oldCache) {
|
38
40
|
if (entry.until > generation) break;
|
39
41
|
|