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/RuntimeModule.js
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
9
9
|
const OriginalSource = require("webpack-sources").OriginalSource;
|
10
10
|
const Module = require("./Module");
|
11
|
+
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
11
12
|
|
12
13
|
/** @typedef {import("webpack-sources").Source} Source */
|
13
14
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
@@ -24,7 +25,7 @@ const Module = require("./Module");
|
|
24
25
|
/** @typedef {import("./util/Hash")} Hash */
|
25
26
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
26
27
|
|
27
|
-
const TYPES = new Set([
|
28
|
+
const TYPES = new Set([WEBPACK_MODULE_TYPE_RUNTIME]);
|
28
29
|
|
29
30
|
class RuntimeModule extends Module {
|
30
31
|
/**
|
@@ -32,20 +33,20 @@ class RuntimeModule extends Module {
|
|
32
33
|
* @param {number=} stage an optional stage
|
33
34
|
*/
|
34
35
|
constructor(name, stage = 0) {
|
35
|
-
super(
|
36
|
+
super(WEBPACK_MODULE_TYPE_RUNTIME);
|
36
37
|
this.name = name;
|
37
38
|
this.stage = stage;
|
38
39
|
this.buildMeta = {};
|
39
40
|
this.buildInfo = {};
|
40
|
-
/** @type {Compilation} */
|
41
|
+
/** @type {Compilation | undefined} */
|
41
42
|
this.compilation = undefined;
|
42
|
-
/** @type {Chunk} */
|
43
|
+
/** @type {Chunk | undefined} */
|
43
44
|
this.chunk = undefined;
|
44
|
-
/** @type {ChunkGraph} */
|
45
|
+
/** @type {ChunkGraph | undefined} */
|
45
46
|
this.chunkGraph = undefined;
|
46
47
|
this.fullHash = false;
|
47
48
|
this.dependentHash = false;
|
48
|
-
/** @type {string} */
|
49
|
+
/** @type {string | undefined} */
|
49
50
|
this._cachedGeneratedCode = undefined;
|
50
51
|
}
|
51
52
|
|
@@ -116,7 +117,7 @@ class RuntimeModule extends Module {
|
|
116
117
|
hash.update(this.getGeneratedCode());
|
117
118
|
}
|
118
119
|
} catch (err) {
|
119
|
-
hash.update(err.message);
|
120
|
+
hash.update(/** @type {Error} */ (err).message);
|
120
121
|
}
|
121
122
|
super.updateHash(hash, context);
|
122
123
|
}
|
@@ -137,7 +138,7 @@ class RuntimeModule extends Module {
|
|
137
138
|
const generatedCode = this.getGeneratedCode();
|
138
139
|
if (generatedCode) {
|
139
140
|
sources.set(
|
140
|
-
|
141
|
+
WEBPACK_MODULE_TYPE_RUNTIME,
|
141
142
|
this.useSourceMap || this.useSimpleSourceMap
|
142
143
|
? new OriginalSource(generatedCode, this.identifier())
|
143
144
|
: new RawSource(generatedCode)
|
@@ -165,7 +166,7 @@ class RuntimeModule extends Module {
|
|
165
166
|
/* istanbul ignore next */
|
166
167
|
/**
|
167
168
|
* @abstract
|
168
|
-
* @returns {string} runtime code
|
169
|
+
* @returns {string | null} runtime code
|
169
170
|
*/
|
170
171
|
generate() {
|
171
172
|
const AbstractMethodError = require("./AbstractMethodError");
|
@@ -173,11 +174,11 @@ class RuntimeModule extends Module {
|
|
173
174
|
}
|
174
175
|
|
175
176
|
/**
|
176
|
-
* @returns {string} runtime code
|
177
|
+
* @returns {string | null} runtime code
|
177
178
|
*/
|
178
179
|
getGeneratedCode() {
|
179
180
|
if (this._cachedGeneratedCode) {
|
180
|
-
return this._cachedGeneratedCode;
|
181
|
+
return /** @type {string | null} */ (this._cachedGeneratedCode);
|
181
182
|
}
|
182
183
|
return (this._cachedGeneratedCode = this.generate());
|
183
184
|
}
|
package/lib/RuntimePlugin.js
CHANGED
@@ -99,6 +99,10 @@ class RuntimePlugin {
|
|
99
99
|
apply(compiler) {
|
100
100
|
compiler.hooks.compilation.tap("RuntimePlugin", compilation => {
|
101
101
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
102
|
+
/**
|
103
|
+
* @param {Chunk} chunk chunk
|
104
|
+
* @returns {boolean} true, when chunk loading is disabled for the chunk
|
105
|
+
*/
|
102
106
|
const isChunkLoadingDisabledForChunk = chunk => {
|
103
107
|
const options = chunk.getEntryOptions();
|
104
108
|
const chunkLoading =
|
@@ -124,7 +128,8 @@ class RuntimePlugin {
|
|
124
128
|
});
|
125
129
|
}
|
126
130
|
for (const req of Object.keys(TREE_DEPENDENCIES)) {
|
127
|
-
const deps =
|
131
|
+
const deps =
|
132
|
+
TREE_DEPENDENCIES[/** @type {keyof TREE_DEPENDENCIES} */ (req)];
|
128
133
|
compilation.hooks.runtimeRequirementInTree
|
129
134
|
.for(req)
|
130
135
|
.tap("RuntimePlugin", (chunk, set) => {
|
@@ -132,7 +137,8 @@ class RuntimePlugin {
|
|
132
137
|
});
|
133
138
|
}
|
134
139
|
for (const req of Object.keys(MODULE_DEPENDENCIES)) {
|
135
|
-
const deps =
|
140
|
+
const deps =
|
141
|
+
MODULE_DEPENDENCIES[/** @type {keyof MODULE_DEPENDENCIES} */ (req)];
|
136
142
|
compilation.hooks.runtimeRequirementInModule
|
137
143
|
.for(req)
|
138
144
|
.tap("RuntimePlugin", (chunk, set) => {
|
@@ -373,9 +379,10 @@ class RuntimePlugin {
|
|
373
379
|
if (withCreateScriptUrl) {
|
374
380
|
set.add(RuntimeGlobals.createScriptUrl);
|
375
381
|
}
|
382
|
+
const withFetchPriority = set.has(RuntimeGlobals.hasFetchPriority);
|
376
383
|
compilation.addRuntimeModule(
|
377
384
|
chunk,
|
378
|
-
new LoadScriptRuntimeModule(withCreateScriptUrl)
|
385
|
+
new LoadScriptRuntimeModule(withCreateScriptUrl, withFetchPriority)
|
379
386
|
);
|
380
387
|
return true;
|
381
388
|
});
|
package/lib/RuntimeTemplate.js
CHANGED
@@ -396,7 +396,7 @@ class RuntimeTemplate {
|
|
396
396
|
|
397
397
|
/**
|
398
398
|
* @param {Object} options options object
|
399
|
-
* @param {Module} options.module the module
|
399
|
+
* @param {Module | null} options.module the module
|
400
400
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
401
401
|
* @param {string} options.request the request that should be printed as comment
|
402
402
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
@@ -429,7 +429,7 @@ class RuntimeTemplate {
|
|
429
429
|
);
|
430
430
|
}
|
431
431
|
runtimeRequirements.add(RuntimeGlobals.require);
|
432
|
-
return
|
432
|
+
return `${RuntimeGlobals.require}(${this.moduleId({
|
433
433
|
module,
|
434
434
|
chunkGraph,
|
435
435
|
request,
|
@@ -439,7 +439,7 @@ class RuntimeTemplate {
|
|
439
439
|
|
440
440
|
/**
|
441
441
|
* @param {Object} options options object
|
442
|
-
* @param {Module} options.module the module
|
442
|
+
* @param {Module | null} options.module the module
|
443
443
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
444
444
|
* @param {string} options.request the request that should be printed as comment
|
445
445
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
@@ -625,7 +625,7 @@ class RuntimeTemplate {
|
|
625
625
|
)})`;
|
626
626
|
} else {
|
627
627
|
runtimeRequirements.add(RuntimeGlobals.require);
|
628
|
-
appending = `.then(
|
628
|
+
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
629
629
|
}
|
630
630
|
break;
|
631
631
|
case "dynamic":
|
@@ -651,7 +651,7 @@ class RuntimeTemplate {
|
|
651
651
|
)})`;
|
652
652
|
} else {
|
653
653
|
runtimeRequirements.add(RuntimeGlobals.require);
|
654
|
-
appending = `.then(
|
654
|
+
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
655
655
|
}
|
656
656
|
appending += `.then(${this.returningFunction(
|
657
657
|
`${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
|
@@ -666,7 +666,7 @@ class RuntimeTemplate {
|
|
666
666
|
`${header}return ${returnExpression};`
|
667
667
|
)})`;
|
668
668
|
} else {
|
669
|
-
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(
|
669
|
+
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
|
670
670
|
}
|
671
671
|
}
|
672
672
|
break;
|
@@ -773,7 +773,7 @@ class RuntimeTemplate {
|
|
773
773
|
originModule.buildMeta.strictHarmonyModule
|
774
774
|
);
|
775
775
|
runtimeRequirements.add(RuntimeGlobals.require);
|
776
|
-
const importContent = `/* harmony import */ ${optDeclaration}${importVar} =
|
776
|
+
const importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
|
777
777
|
|
778
778
|
if (exportsType === "dynamic") {
|
779
779
|
runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
|
@@ -794,10 +794,10 @@ class RuntimeTemplate {
|
|
794
794
|
* @param {Module} options.originModule the origin module
|
795
795
|
* @param {boolean|undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
|
796
796
|
* @param {boolean} options.isCall true, if expression will be called
|
797
|
-
* @param {boolean} options.callContext when false, call context will not be preserved
|
797
|
+
* @param {boolean | null} options.callContext when false, call context will not be preserved
|
798
798
|
* @param {boolean} options.defaultInterop when true and accessing the default exports, interop code will be generated
|
799
799
|
* @param {string} options.importVar the identifier name of the import variable
|
800
|
-
* @param {InitFragment[]} options.initFragments init fragments will be added here
|
800
|
+
* @param {InitFragment<TODO>[]} options.initFragments init fragments will be added here
|
801
801
|
* @param {RuntimeSpec} options.runtime runtime for which this code will be generated
|
802
802
|
* @param {Set<string>} options.runtimeRequirements if set, will be filled with runtime requirements
|
803
803
|
* @returns {string} expression
|
@@ -939,11 +939,29 @@ class RuntimeTemplate {
|
|
939
939
|
if (chunks.length === 1) {
|
940
940
|
const chunkId = JSON.stringify(chunks[0].id);
|
941
941
|
runtimeRequirements.add(RuntimeGlobals.ensureChunk);
|
942
|
-
|
942
|
+
|
943
|
+
const fetchPriority = chunkGroup.options.fetchPriority;
|
944
|
+
|
945
|
+
if (fetchPriority) {
|
946
|
+
runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
|
947
|
+
}
|
948
|
+
|
949
|
+
return `${RuntimeGlobals.ensureChunk}(${comment}${chunkId}${
|
950
|
+
fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
|
951
|
+
})`;
|
943
952
|
} else if (chunks.length > 0) {
|
944
953
|
runtimeRequirements.add(RuntimeGlobals.ensureChunk);
|
954
|
+
|
955
|
+
const fetchPriority = chunkGroup.options.fetchPriority;
|
956
|
+
|
957
|
+
if (fetchPriority) {
|
958
|
+
runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
|
959
|
+
}
|
960
|
+
|
945
961
|
const requireChunkId = chunk =>
|
946
|
-
`${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}
|
962
|
+
`${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}${
|
963
|
+
fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
|
964
|
+
})`;
|
947
965
|
return `Promise.all(${comment.trim()}[${chunks
|
948
966
|
.map(requireChunkId)
|
949
967
|
.join(", ")}])`;
|
package/lib/SelfModuleFactory.js
CHANGED
@@ -5,11 +5,23 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
|
9
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
|
10
|
+
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
11
|
+
|
8
12
|
class SelfModuleFactory {
|
13
|
+
/**
|
14
|
+
* @param {ModuleGraph} moduleGraph module graph
|
15
|
+
*/
|
9
16
|
constructor(moduleGraph) {
|
10
17
|
this.moduleGraph = moduleGraph;
|
11
18
|
}
|
12
19
|
|
20
|
+
/**
|
21
|
+
* @param {ModuleFactoryCreateData} data data object
|
22
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
23
|
+
* @returns {void}
|
24
|
+
*/
|
13
25
|
create(data, callback) {
|
14
26
|
const module = this.moduleGraph.getParentModule(data.dependencies[0]);
|
15
27
|
callback(null, {
|
@@ -7,9 +7,13 @@
|
|
7
7
|
|
8
8
|
const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
9
9
|
|
10
|
+
/** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
|
10
11
|
/** @typedef {import("./Compilation")} Compilation */
|
11
12
|
|
12
13
|
class SourceMapDevToolModuleOptionsPlugin {
|
14
|
+
/**
|
15
|
+
* @param {SourceMapDevToolPluginOptions} options options
|
16
|
+
*/
|
13
17
|
constructor(options) {
|
14
18
|
this.options = options;
|
15
19
|
}
|
@@ -22,7 +22,9 @@ const { makePathsAbsolute } = require("./util/identifier");
|
|
22
22
|
/** @typedef {import("./Cache").Etag} Etag */
|
23
23
|
/** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */
|
24
24
|
/** @typedef {import("./Chunk")} Chunk */
|
25
|
+
/** @typedef {import("./Compilation").Asset} Asset */
|
25
26
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
27
|
+
/** @typedef {import("./Compilation").PathData} PathData */
|
26
28
|
/** @typedef {import("./Compiler")} Compiler */
|
27
29
|
/** @typedef {import("./Module")} Module */
|
28
30
|
/** @typedef {import("./NormalModule").SourceMap} SourceMap */
|
@@ -47,13 +49,32 @@ const validate = createSchemaValidation(
|
|
47
49
|
* @property {ItemCacheFacade} cacheItem cache item
|
48
50
|
*/
|
49
51
|
|
52
|
+
const METACHARACTERS_REGEXP = /[-[\]\\/{}()*+?.^$|]/g;
|
53
|
+
const CONTENT_HASH_DETECT_REGEXP = /\[contenthash(:\w+)?\]/;
|
54
|
+
const CSS_AND_JS_MODULE_EXTENSIONS_REGEXP = /\.((c|m)?js|css)($|\?)/i;
|
55
|
+
const CSS_EXTENSION_DETECT_REGEXP = /\.css($|\?)/i;
|
56
|
+
const MAP_URL_COMMENT_REGEXP = /\[map\]/g;
|
57
|
+
const URL_COMMENT_REGEXP = /\[url\]/g;
|
58
|
+
const URL_FORMATTING_REGEXP = /^\n\/\/(.*)$/;
|
59
|
+
|
60
|
+
/**
|
61
|
+
* Reset's .lastIndex of stateful Regular Expressions
|
62
|
+
* For when `test` or `exec` is called on them
|
63
|
+
* @param {RegExp} regexp Stateful Regular Expression to be reset
|
64
|
+
* @returns {void}
|
65
|
+
*
|
66
|
+
*/
|
67
|
+
const resetRegexpState = regexp => {
|
68
|
+
regexp.lastIndex = -1;
|
69
|
+
};
|
70
|
+
|
50
71
|
/**
|
51
72
|
* Escapes regular expression metacharacters
|
52
73
|
* @param {string} str String to quote
|
53
74
|
* @returns {string} Escaped string
|
54
75
|
*/
|
55
76
|
const quoteMeta = str => {
|
56
|
-
return str.replace(
|
77
|
+
return str.replace(METACHARACTERS_REGEXP, "\\$&");
|
57
78
|
};
|
58
79
|
|
59
80
|
/**
|
@@ -120,7 +141,7 @@ class SourceMapDevToolPlugin {
|
|
120
141
|
|
121
142
|
/** @type {string | false} */
|
122
143
|
this.sourceMapFilename = options.filename;
|
123
|
-
/** @type {string | false} */
|
144
|
+
/** @type {string | false | (function(PathData, AssetInfo=): string)}} */
|
124
145
|
this.sourceMappingURLComment =
|
125
146
|
options.append === false
|
126
147
|
? false
|
@@ -152,7 +173,7 @@ class SourceMapDevToolPlugin {
|
|
152
173
|
const fallbackModuleFilenameTemplate = this.fallbackModuleFilenameTemplate;
|
153
174
|
const requestShortener = compiler.requestShortener;
|
154
175
|
const options = this.options;
|
155
|
-
options.test = options.test ||
|
176
|
+
options.test = options.test || CSS_AND_JS_MODULE_EXTENSIONS_REGEXP;
|
156
177
|
|
157
178
|
const matchObject = ModuleFilenameHelpers.matchObject.bind(
|
158
179
|
undefined,
|
@@ -207,7 +228,9 @@ class SourceMapDevToolPlugin {
|
|
207
228
|
asyncLib.each(
|
208
229
|
files,
|
209
230
|
(file, callback) => {
|
210
|
-
const asset =
|
231
|
+
const asset =
|
232
|
+
/** @type {Readonly<Asset>} */
|
233
|
+
(compilation.getAsset(file));
|
211
234
|
if (asset.info.related && asset.info.related.sourceMap) {
|
212
235
|
fileIndex++;
|
213
236
|
return callback();
|
@@ -343,7 +366,9 @@ class SourceMapDevToolPlugin {
|
|
343
366
|
// find modules with conflicting source names
|
344
367
|
for (let idx = 0; idx < allModules.length; idx++) {
|
345
368
|
const module = allModules[idx];
|
346
|
-
let sourceName =
|
369
|
+
let sourceName =
|
370
|
+
/** @type {string} */
|
371
|
+
(moduleToSourceNameMapping.get(module));
|
347
372
|
let hasName = conflictDetectionSet.has(sourceName);
|
348
373
|
if (!hasName) {
|
349
374
|
conflictDetectionSet.add(sourceName);
|
@@ -409,7 +434,9 @@ class SourceMapDevToolPlugin {
|
|
409
434
|
sourceMap.file = file;
|
410
435
|
const usesContentHash =
|
411
436
|
sourceMapFilename &&
|
412
|
-
|
437
|
+
CONTENT_HASH_DETECT_REGEXP.test(sourceMapFilename);
|
438
|
+
|
439
|
+
resetRegexpState(CONTENT_HASH_DETECT_REGEXP);
|
413
440
|
|
414
441
|
// If SourceMap and asset uses contenthash, avoid a circular dependency by hiding hash in `file`
|
415
442
|
if (usesContentHash && task.assetInfo.contenthash) {
|
@@ -426,15 +453,19 @@ class SourceMapDevToolPlugin {
|
|
426
453
|
);
|
427
454
|
}
|
428
455
|
|
429
|
-
/** @type {string | false} */
|
456
|
+
/** @type {string | false | (function(PathData, AssetInfo=): string)} */
|
430
457
|
let currentSourceMappingURLComment = sourceMappingURLComment;
|
458
|
+
let cssExtensionDetected =
|
459
|
+
CSS_EXTENSION_DETECT_REGEXP.test(file);
|
460
|
+
resetRegexpState(CSS_EXTENSION_DETECT_REGEXP);
|
431
461
|
if (
|
432
462
|
currentSourceMappingURLComment !== false &&
|
433
|
-
|
463
|
+
typeof currentSourceMappingURLComment !== "function" &&
|
464
|
+
cssExtensionDetected
|
434
465
|
) {
|
435
466
|
currentSourceMappingURLComment =
|
436
467
|
currentSourceMappingURLComment.replace(
|
437
|
-
|
468
|
+
URL_FORMATTING_REGEXP,
|
438
469
|
"\n/*$1*/"
|
439
470
|
);
|
440
471
|
}
|
@@ -510,15 +541,20 @@ class SourceMapDevToolPlugin {
|
|
510
541
|
"SourceMapDevToolPlugin: append can't be false when no filename is provided"
|
511
542
|
);
|
512
543
|
}
|
544
|
+
if (typeof currentSourceMappingURLComment === "function") {
|
545
|
+
throw new Error(
|
546
|
+
"SourceMapDevToolPlugin: append can't be a function when no filename is provided"
|
547
|
+
);
|
548
|
+
}
|
513
549
|
/**
|
514
550
|
* Add source map as data url to asset
|
515
551
|
*/
|
516
552
|
const asset = new ConcatSource(
|
517
553
|
new RawSource(source),
|
518
554
|
currentSourceMappingURLComment
|
519
|
-
.replace(
|
555
|
+
.replace(MAP_URL_COMMENT_REGEXP, () => sourceMapString)
|
520
556
|
.replace(
|
521
|
-
|
557
|
+
URL_COMMENT_REGEXP,
|
522
558
|
() =>
|
523
559
|
`data:application/json;charset=utf-8;base64,${Buffer.from(
|
524
560
|
sourceMapString,
|
package/lib/Template.js
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const { ConcatSource, PrefixSource } = require("webpack-sources");
|
9
|
+
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
|
10
|
+
const RuntimeGlobals = require("./RuntimeGlobals");
|
9
11
|
|
10
12
|
/** @typedef {import("webpack-sources").Source} Source */
|
11
13
|
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
@@ -288,7 +290,7 @@ class Template {
|
|
288
290
|
* @param {Module[]} modules modules to render (should be ordered by identifier)
|
289
291
|
* @param {function(Module): Source} renderModule function to render a module
|
290
292
|
* @param {string=} prefix applying prefix strings
|
291
|
-
* @returns {Source} rendered chunk modules in a Source object
|
293
|
+
* @returns {Source | null} rendered chunk modules in a Source object or null if no modules
|
292
294
|
*/
|
293
295
|
static renderChunkModules(renderContext, modules, renderModule, prefix = "") {
|
294
296
|
const { chunkGraph } = renderContext;
|
@@ -362,7 +364,7 @@ class Template {
|
|
362
364
|
runtimeSource = codeGenerationResults.getSource(
|
363
365
|
module,
|
364
366
|
renderContext.chunk.runtime,
|
365
|
-
|
367
|
+
WEBPACK_MODULE_TYPE_RUNTIME
|
366
368
|
);
|
367
369
|
} else {
|
368
370
|
const codeGenResult = module.codeGeneration({
|
@@ -404,7 +406,7 @@ class Template {
|
|
404
406
|
return new PrefixSource(
|
405
407
|
"/******/ ",
|
406
408
|
new ConcatSource(
|
407
|
-
|
409
|
+
`function(${RuntimeGlobals.require}) { // webpackRuntimeModules\n`,
|
408
410
|
this.renderRuntimeModules(runtimeModules, renderContext),
|
409
411
|
"}\n"
|
410
412
|
)
|
package/lib/UseStrictPlugin.js
CHANGED
@@ -5,9 +5,20 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
11
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
12
|
+
} = require("./ModuleTypeConstants");
|
8
13
|
const ConstDependency = require("./dependencies/ConstDependency");
|
9
14
|
|
10
15
|
/** @typedef {import("./Compiler")} Compiler */
|
16
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
17
|
+
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
18
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
19
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
20
|
+
|
21
|
+
const PLUGIN_NAME = "UseStrictPlugin";
|
11
22
|
|
12
23
|
class UseStrictPlugin {
|
13
24
|
/**
|
@@ -17,10 +28,13 @@ class UseStrictPlugin {
|
|
17
28
|
*/
|
18
29
|
apply(compiler) {
|
19
30
|
compiler.hooks.compilation.tap(
|
20
|
-
|
31
|
+
PLUGIN_NAME,
|
21
32
|
(compilation, { normalModuleFactory }) => {
|
33
|
+
/**
|
34
|
+
* @param {JavascriptParser} parser the parser
|
35
|
+
*/
|
22
36
|
const handler = parser => {
|
23
|
-
parser.hooks.program.tap(
|
37
|
+
parser.hooks.program.tap(PLUGIN_NAME, ast => {
|
24
38
|
const firstNode = ast.body[0];
|
25
39
|
if (
|
26
40
|
firstNode &&
|
@@ -31,23 +45,27 @@ class UseStrictPlugin {
|
|
31
45
|
// Remove "use strict" expression. It will be added later by the renderer again.
|
32
46
|
// This is necessary in order to not break the strict mode when webpack prepends code.
|
33
47
|
// @see https://github.com/webpack/webpack/issues/1970
|
34
|
-
const dep = new ConstDependency(
|
35
|
-
|
48
|
+
const dep = new ConstDependency(
|
49
|
+
"",
|
50
|
+
/** @type {Range} */ (firstNode.range)
|
51
|
+
);
|
52
|
+
dep.loc = /** @type {DependencyLocation} */ (firstNode.loc);
|
36
53
|
parser.state.module.addPresentationalDependency(dep);
|
37
|
-
|
54
|
+
/** @type {BuildInfo} */
|
55
|
+
(parser.state.module.buildInfo).strict = true;
|
38
56
|
}
|
39
57
|
});
|
40
58
|
};
|
41
59
|
|
42
60
|
normalModuleFactory.hooks.parser
|
43
|
-
.for(
|
44
|
-
.tap(
|
61
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
62
|
+
.tap(PLUGIN_NAME, handler);
|
45
63
|
normalModuleFactory.hooks.parser
|
46
|
-
.for(
|
47
|
-
.tap(
|
64
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
65
|
+
.tap(PLUGIN_NAME, handler);
|
48
66
|
normalModuleFactory.hooks.parser
|
49
|
-
.for(
|
50
|
-
.tap(
|
67
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
68
|
+
.tap(PLUGIN_NAME, handler);
|
51
69
|
}
|
52
70
|
);
|
53
71
|
}
|
@@ -9,6 +9,7 @@ const CaseSensitiveModulesWarning = require("./CaseSensitiveModulesWarning");
|
|
9
9
|
|
10
10
|
/** @typedef {import("./Compiler")} Compiler */
|
11
11
|
/** @typedef {import("./Module")} Module */
|
12
|
+
/** @typedef {import("./NormalModule")} NormalModule */
|
12
13
|
|
13
14
|
class WarnCaseSensitiveModulesPlugin {
|
14
15
|
/**
|
@@ -25,6 +26,17 @@ class WarnCaseSensitiveModulesPlugin {
|
|
25
26
|
const moduleWithoutCase = new Map();
|
26
27
|
for (const module of compilation.modules) {
|
27
28
|
const identifier = module.identifier();
|
29
|
+
|
30
|
+
// Ignore `data:` URLs, because it's not a real path
|
31
|
+
if (
|
32
|
+
/** @type {NormalModule} */
|
33
|
+
(module).resourceResolveData !== undefined &&
|
34
|
+
/** @type {NormalModule} */
|
35
|
+
(module).resourceResolveData.encodedContent !== undefined
|
36
|
+
) {
|
37
|
+
continue;
|
38
|
+
}
|
39
|
+
|
28
40
|
const lowerIdentifier = identifier.toLowerCase();
|
29
41
|
let map = moduleWithoutCase.get(lowerIdentifier);
|
30
42
|
if (map === undefined) {
|
@@ -40,6 +40,13 @@ class WarnDeprecatedOptionPlugin {
|
|
40
40
|
}
|
41
41
|
|
42
42
|
class DeprecatedOptionWarning extends WebpackError {
|
43
|
+
/**
|
44
|
+
* Create an instance deprecated option warning
|
45
|
+
*
|
46
|
+
* @param {string} option the target option
|
47
|
+
* @param {string | number} value the deprecated option value
|
48
|
+
* @param {string} suggestion the suggestion replacement
|
49
|
+
*/
|
43
50
|
constructor(option, value, suggestion) {
|
44
51
|
super();
|
45
52
|
|
package/lib/WatchIgnorePlugin.js
CHANGED
@@ -36,6 +36,10 @@ class IgnoringWatchFileSystem {
|
|
36
36
|
watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
|
37
37
|
files = Array.from(files);
|
38
38
|
dirs = Array.from(dirs);
|
39
|
+
/**
|
40
|
+
* @param {string} path path to check
|
41
|
+
* @returns {boolean} true, if path is ignored
|
42
|
+
*/
|
39
43
|
const ignored = path =>
|
40
44
|
this.paths.some(p =>
|
41
45
|
p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0
|