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
@@ -18,6 +18,7 @@ const ChunkGraph = require("./ChunkGraph");
|
|
18
18
|
const Module = require("./Module");
|
19
19
|
const ModuleFactory = require("./ModuleFactory");
|
20
20
|
const ModuleGraph = require("./ModuleGraph");
|
21
|
+
const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
|
21
22
|
const NormalModule = require("./NormalModule");
|
22
23
|
const BasicEffectRulePlugin = require("./rules/BasicEffectRulePlugin");
|
23
24
|
const BasicMatcherRulePlugin = require("./rules/BasicMatcherRulePlugin");
|
@@ -85,6 +86,7 @@ const EMPTY_GENERATOR_OPTIONS = {};
|
|
85
86
|
const EMPTY_ELEMENTS = [];
|
86
87
|
|
87
88
|
const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
|
89
|
+
const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
|
88
90
|
|
89
91
|
const loaderToIdent = data => {
|
90
92
|
if (!data.options) {
|
@@ -231,6 +233,9 @@ class NormalModuleFactory extends ModuleFactory {
|
|
231
233
|
),
|
232
234
|
generator: new HookMap(
|
233
235
|
() => new SyncHook(["generator", "generatorOptions"])
|
236
|
+
),
|
237
|
+
createModuleClass: new HookMap(
|
238
|
+
() => new SyncBailHook(["createData", "resolveData"])
|
234
239
|
)
|
235
240
|
});
|
236
241
|
this.resolverFactory = resolverFactory;
|
@@ -306,9 +311,18 @@ class NormalModuleFactory extends ModuleFactory {
|
|
306
311
|
return callback(new Error("Empty dependency (no request)"));
|
307
312
|
}
|
308
313
|
|
309
|
-
|
310
|
-
|
311
|
-
|
314
|
+
// TODO webpack 6 make it required and move javascript/wasm/asset properties to own module
|
315
|
+
createdModule = this.hooks.createModuleClass
|
316
|
+
.for(createData.settings.type)
|
317
|
+
.call(createData, resolveData);
|
318
|
+
|
319
|
+
if (!createdModule) {
|
320
|
+
createdModule = /** @type {Module} */ (
|
321
|
+
new NormalModule(
|
322
|
+
/** @type {NormalModuleCreateData} */ (createData)
|
323
|
+
)
|
324
|
+
);
|
325
|
+
}
|
312
326
|
}
|
313
327
|
|
314
328
|
createdModule = this.hooks.module.call(
|
@@ -488,7 +502,7 @@ class NormalModuleFactory extends ModuleFactory {
|
|
488
502
|
-settings.type.length - 10
|
489
503
|
);
|
490
504
|
} else {
|
491
|
-
settings.type =
|
505
|
+
settings.type = JAVASCRIPT_MODULE_TYPE_AUTO;
|
492
506
|
const resourceDataForRules = matchResourceData || resourceData;
|
493
507
|
const result = this.ruleSet.exec({
|
494
508
|
resource: resourceDataForRules.path,
|
@@ -509,6 +523,11 @@ class NormalModuleFactory extends ModuleFactory {
|
|
509
523
|
issuerLayer: contextInfo.issuerLayer || ""
|
510
524
|
});
|
511
525
|
for (const r of result) {
|
526
|
+
// https://github.com/webpack/webpack/issues/16466
|
527
|
+
// if a request exists PrePostAutoLoaders, should disable modifying Rule.type
|
528
|
+
if (r.type === "type" && noPrePostAutoLoaders) {
|
529
|
+
continue;
|
530
|
+
}
|
512
531
|
if (r.type === "use") {
|
513
532
|
if (!noAutoLoaders && !noPrePostAutoLoaders) {
|
514
533
|
useLoaders.push(r.value);
|
@@ -734,7 +753,7 @@ class NormalModuleFactory extends ModuleFactory {
|
|
734
753
|
|
735
754
|
/**
|
736
755
|
* @param {ModuleFactoryCreateData} data data object
|
737
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
756
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
738
757
|
* @returns {void}
|
739
758
|
*/
|
740
759
|
create(data, callback) {
|
@@ -841,10 +860,10 @@ class NormalModuleFactory extends ModuleFactory {
|
|
841
860
|
(err2, hints) => {
|
842
861
|
if (err2) {
|
843
862
|
err.message += `
|
844
|
-
|
863
|
+
A fatal error happened during resolving additional hints for this error: ${err2.message}`;
|
845
864
|
err.stack += `
|
846
865
|
|
847
|
-
|
866
|
+
A fatal error happened during resolving additional hints for this error:
|
848
867
|
${err2.stack}`;
|
849
868
|
return callback(err);
|
850
869
|
}
|
@@ -852,6 +871,25 @@ ${err2.stack}`;
|
|
852
871
|
err.message += `
|
853
872
|
${hints.join("\n\n")}`;
|
854
873
|
}
|
874
|
+
|
875
|
+
// Check if the extension is missing a leading dot (e.g. "js" instead of ".js")
|
876
|
+
let appendResolveExtensionsHint = false;
|
877
|
+
const specifiedExtensions = Array.from(
|
878
|
+
resolver.options.extensions
|
879
|
+
);
|
880
|
+
const expectedExtensions = specifiedExtensions.map(extension => {
|
881
|
+
if (LEADING_DOT_EXTENSION_REGEX.test(extension)) {
|
882
|
+
appendResolveExtensionsHint = true;
|
883
|
+
return `.${extension}`;
|
884
|
+
}
|
885
|
+
return extension;
|
886
|
+
});
|
887
|
+
if (appendResolveExtensionsHint) {
|
888
|
+
err.message += `\nDid you miss the leading dot in 'resolve.extensions'? Did you mean '${JSON.stringify(
|
889
|
+
expectedExtensions
|
890
|
+
)}' instead of '${JSON.stringify(specifiedExtensions)}'?`;
|
891
|
+
}
|
892
|
+
|
855
893
|
callback(err);
|
856
894
|
}
|
857
895
|
);
|
@@ -994,7 +1032,7 @@ If changing the source code is not an option there is also a resolve options cal
|
|
994
1032
|
context,
|
995
1033
|
item.loader,
|
996
1034
|
resolveContext,
|
997
|
-
(err, result) => {
|
1035
|
+
(err, result, resolveRequest) => {
|
998
1036
|
if (
|
999
1037
|
err &&
|
1000
1038
|
/^[^/]*$/.test(item.loader) &&
|
@@ -1021,8 +1059,18 @@ If changing the source code is not an option there is also a resolve options cal
|
|
1021
1059
|
if (err) return callback(err);
|
1022
1060
|
|
1023
1061
|
const parsedResult = this._parseResourceWithoutFragment(result);
|
1062
|
+
|
1063
|
+
const type = /\.mjs$/i.test(parsedResult.path)
|
1064
|
+
? "module"
|
1065
|
+
: /\.cjs$/i.test(parsedResult.path)
|
1066
|
+
? "commonjs"
|
1067
|
+
: resolveRequest.descriptionFileData === undefined
|
1068
|
+
? undefined
|
1069
|
+
: resolveRequest.descriptionFileData.type;
|
1070
|
+
|
1024
1071
|
const resolved = {
|
1025
1072
|
loader: parsedResult.path,
|
1073
|
+
type,
|
1026
1074
|
options:
|
1027
1075
|
item.options === undefined
|
1028
1076
|
? parsedResult.query
|
@@ -8,7 +8,7 @@
|
|
8
8
|
const { join, dirname } = require("./util/fs");
|
9
9
|
|
10
10
|
/** @typedef {import("./Compiler")} Compiler */
|
11
|
-
/** @typedef {function(
|
11
|
+
/** @typedef {function(import("./NormalModuleFactory").ResolveData): void} ModuleReplacer */
|
12
12
|
|
13
13
|
class NormalModuleReplacementPlugin {
|
14
14
|
/**
|
@@ -43,7 +43,9 @@ class NormalModuleReplacementPlugin {
|
|
43
43
|
});
|
44
44
|
nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
|
45
45
|
const createData = result.createData;
|
46
|
-
if (
|
46
|
+
if (
|
47
|
+
resourceRegExp.test(/** @type {string} */ (createData.resource))
|
48
|
+
) {
|
47
49
|
if (typeof newResource === "function") {
|
48
50
|
newResource(result);
|
49
51
|
} else {
|
@@ -56,7 +58,7 @@ class NormalModuleReplacementPlugin {
|
|
56
58
|
} else {
|
57
59
|
createData.resource = join(
|
58
60
|
fs,
|
59
|
-
dirname(fs, createData.resource),
|
61
|
+
dirname(fs, /** @type {string} */ (createData.resource)),
|
60
62
|
newResource
|
61
63
|
);
|
62
64
|
}
|
package/lib/NullFactory.js
CHANGED
@@ -13,7 +13,7 @@ const ModuleFactory = require("./ModuleFactory");
|
|
13
13
|
class NullFactory extends ModuleFactory {
|
14
14
|
/**
|
15
15
|
* @param {ModuleFactoryCreateData} data data object
|
16
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
16
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
17
17
|
* @returns {void}
|
18
18
|
*/
|
19
19
|
create(data, callback) {
|
package/lib/PrefetchPlugin.js
CHANGED
@@ -10,6 +10,10 @@ const PrefetchDependency = require("./dependencies/PrefetchDependency");
|
|
10
10
|
/** @typedef {import("./Compiler")} Compiler */
|
11
11
|
|
12
12
|
class PrefetchPlugin {
|
13
|
+
/**
|
14
|
+
* @param {string} context context or request if context is not set
|
15
|
+
* @param {string} [request] request
|
16
|
+
*/
|
13
17
|
constructor(context, request) {
|
14
18
|
if (request) {
|
15
19
|
this.context = context;
|
package/lib/ProgressPlugin.js
CHANGED
@@ -11,9 +11,20 @@ const NormalModule = require("./NormalModule");
|
|
11
11
|
const createSchemaValidation = require("./util/create-schema-validation");
|
12
12
|
const { contextify } = require("./util/identifier");
|
13
13
|
|
14
|
+
/** @typedef {import("tapable").Tap} Tap */
|
14
15
|
/** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
|
15
16
|
/** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
|
16
17
|
/** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
|
18
|
+
/** @typedef {import("./Dependency")} Dependency */
|
19
|
+
/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
|
20
|
+
/** @typedef {import("./Module")} Module */
|
21
|
+
/** @typedef {import("./logging/Logger").Logger} Logger */
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @typedef {Object} CountsData
|
25
|
+
* @property {number} modulesCount modules count
|
26
|
+
* @property {number} dependenciesCount dependencies count
|
27
|
+
*/
|
17
28
|
|
18
29
|
const validate = createSchemaValidation(
|
19
30
|
require("../schemas/plugins/ProgressPlugin.check.js"),
|
@@ -23,14 +34,31 @@ const validate = createSchemaValidation(
|
|
23
34
|
baseDataPath: "options"
|
24
35
|
}
|
25
36
|
);
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @param {number} a a
|
40
|
+
* @param {number} b b
|
41
|
+
* @param {number} c c
|
42
|
+
* @returns {number} median
|
43
|
+
*/
|
26
44
|
const median3 = (a, b, c) => {
|
27
45
|
return a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
|
28
46
|
};
|
29
47
|
|
48
|
+
/**
|
49
|
+
* @param {boolean | null | undefined} profile need profile
|
50
|
+
* @param {Logger} logger logger
|
51
|
+
* @returns {defaultHandler} default handler
|
52
|
+
*/
|
30
53
|
const createDefaultHandler = (profile, logger) => {
|
31
|
-
/** @type {{ value: string, time: number }[]} */
|
54
|
+
/** @type {{ value: string | undefined, time: number }[]} */
|
32
55
|
const lastStateInfo = [];
|
33
56
|
|
57
|
+
/**
|
58
|
+
* @param {number} percentage percentage
|
59
|
+
* @param {string} msg message
|
60
|
+
* @param {...string} args additional arguments
|
61
|
+
*/
|
34
62
|
const defaultHandler = (percentage, msg, ...args) => {
|
35
63
|
if (profile) {
|
36
64
|
if (percentage === 0) {
|
@@ -95,18 +123,18 @@ const createDefaultHandler = (profile, logger) => {
|
|
95
123
|
|
96
124
|
/**
|
97
125
|
* @callback ReportProgress
|
98
|
-
* @param {number} p
|
99
|
-
* @param {...string}
|
126
|
+
* @param {number} p percentage
|
127
|
+
* @param {...string} args additional arguments
|
100
128
|
* @returns {void}
|
101
129
|
*/
|
102
130
|
|
103
|
-
/** @type {WeakMap<Compiler,ReportProgress>} */
|
131
|
+
/** @type {WeakMap<Compiler, ReportProgress | undefined>} */
|
104
132
|
const progressReporters = new WeakMap();
|
105
133
|
|
106
134
|
class ProgressPlugin {
|
107
135
|
/**
|
108
136
|
* @param {Compiler} compiler the current compiler
|
109
|
-
* @returns {ReportProgress} a progress reporter, if any
|
137
|
+
* @returns {ReportProgress | undefined} a progress reporter, if any
|
110
138
|
*/
|
111
139
|
static getReporter(compiler) {
|
112
140
|
return progressReporters.get(compiler);
|
@@ -288,6 +316,9 @@ class ProgressPlugin {
|
|
288
316
|
};
|
289
317
|
|
290
318
|
// only used when showActiveModules is set
|
319
|
+
/**
|
320
|
+
* @param {Module} module the module
|
321
|
+
*/
|
291
322
|
const moduleBuild = module => {
|
292
323
|
const ident = module.identifier();
|
293
324
|
if (ident) {
|
@@ -297,11 +328,18 @@ class ProgressPlugin {
|
|
297
328
|
}
|
298
329
|
};
|
299
330
|
|
331
|
+
/**
|
332
|
+
* @param {Dependency} entry entry dependency
|
333
|
+
* @param {EntryOptions} options options object
|
334
|
+
*/
|
300
335
|
const entryAdd = (entry, options) => {
|
301
336
|
entriesCount++;
|
302
337
|
if (entriesCount < 5 || entriesCount % 10 === 0) updateThrottled();
|
303
338
|
};
|
304
339
|
|
340
|
+
/**
|
341
|
+
* @param {Module} module the module
|
342
|
+
*/
|
305
343
|
const moduleDone = module => {
|
306
344
|
doneModules++;
|
307
345
|
if (showActiveModules) {
|
@@ -321,6 +359,10 @@ class ProgressPlugin {
|
|
321
359
|
if (doneModules < 50 || doneModules % 100 === 0) updateThrottled();
|
322
360
|
};
|
323
361
|
|
362
|
+
/**
|
363
|
+
* @param {Dependency} entry entry dependency
|
364
|
+
* @param {EntryOptions} options options object
|
365
|
+
*/
|
324
366
|
const entryDone = (entry, options) => {
|
325
367
|
doneEntries++;
|
326
368
|
update();
|
@@ -330,6 +372,7 @@ class ProgressPlugin {
|
|
330
372
|
.getCache("ProgressPlugin")
|
331
373
|
.getItemCache("counts", null);
|
332
374
|
|
375
|
+
/** @type {Promise<CountsData> | undefined} */
|
333
376
|
let cacheGetPromise;
|
334
377
|
|
335
378
|
compiler.hooks.beforeCompile.tap("ProgressPlugin", () => {
|
@@ -352,15 +395,17 @@ class ProgressPlugin {
|
|
352
395
|
|
353
396
|
compiler.hooks.afterCompile.tapPromise("ProgressPlugin", compilation => {
|
354
397
|
if (compilation.compiler.isChild()) return Promise.resolve();
|
355
|
-
return cacheGetPromise.then(
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
398
|
+
return /** @type {Promise<CountsData>} */ (cacheGetPromise).then(
|
399
|
+
async oldData => {
|
400
|
+
if (
|
401
|
+
!oldData ||
|
402
|
+
oldData.modulesCount !== modulesCount ||
|
403
|
+
oldData.dependenciesCount !== dependenciesCount
|
404
|
+
) {
|
405
|
+
await cache.storePromise({ modulesCount, dependenciesCount });
|
406
|
+
}
|
362
407
|
}
|
363
|
-
|
408
|
+
);
|
364
409
|
});
|
365
410
|
|
366
411
|
compiler.hooks.compilation.tap("ProgressPlugin", compilation => {
|
@@ -463,9 +508,9 @@ class ProgressPlugin {
|
|
463
508
|
};
|
464
509
|
const numberOfHooks = Object.keys(hooks).length;
|
465
510
|
Object.keys(hooks).forEach((name, idx) => {
|
466
|
-
const title = hooks[name];
|
511
|
+
const title = hooks[/** @type {keyof typeof hooks} */ (name)];
|
467
512
|
const percentage = (idx / numberOfHooks) * 0.25 + 0.7;
|
468
|
-
compilation.hooks[name].intercept({
|
513
|
+
compilation.hooks[/** @type {keyof typeof hooks} */ (name)].intercept({
|
469
514
|
name: "ProgressPlugin",
|
470
515
|
call() {
|
471
516
|
handler(percentage, "sealing", title);
|
@@ -500,6 +545,12 @@ class ProgressPlugin {
|
|
500
545
|
handler(0.65, "building");
|
501
546
|
}
|
502
547
|
});
|
548
|
+
/**
|
549
|
+
* @param {TODO} hook hook
|
550
|
+
* @param {number} progress progress from 0 to 1
|
551
|
+
* @param {string} category category
|
552
|
+
* @param {string} name name
|
553
|
+
*/
|
503
554
|
const interceptHook = (hook, progress, category, name) => {
|
504
555
|
hook.intercept({
|
505
556
|
name: "ProgressPlugin",
|
@@ -516,6 +567,9 @@ class ProgressPlugin {
|
|
516
567
|
error() {
|
517
568
|
handler(progress, category, name);
|
518
569
|
},
|
570
|
+
/**
|
571
|
+
* @param {Tap} tap tap
|
572
|
+
*/
|
519
573
|
tap(tap) {
|
520
574
|
progressReporters.set(compiler, (p, ...args) => {
|
521
575
|
handler(progress, category, name, tap.name, ...args);
|
@@ -610,4 +664,6 @@ ProgressPlugin.defaultOptions = {
|
|
610
664
|
entries: true
|
611
665
|
};
|
612
666
|
|
667
|
+
ProgressPlugin.createDefaultHandler = createDefaultHandler;
|
668
|
+
|
613
669
|
module.exports = ProgressPlugin;
|
package/lib/ProvidePlugin.js
CHANGED
@@ -5,11 +5,22 @@
|
|
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
|
const ProvidedDependency = require("./dependencies/ProvidedDependency");
|
10
15
|
const { approve } = require("./javascript/JavascriptParserHelpers");
|
11
16
|
|
17
|
+
/** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
12
18
|
/** @typedef {import("./Compiler")} Compiler */
|
19
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
20
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
21
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
22
|
+
|
23
|
+
const PLUGIN_NAME = "ProvidePlugin";
|
13
24
|
|
14
25
|
class ProvidePlugin {
|
15
26
|
/**
|
@@ -27,7 +38,7 @@ class ProvidePlugin {
|
|
27
38
|
apply(compiler) {
|
28
39
|
const definitions = this.definitions;
|
29
40
|
compiler.hooks.compilation.tap(
|
30
|
-
|
41
|
+
PLUGIN_NAME,
|
31
42
|
(compilation, { normalModuleFactory }) => {
|
32
43
|
compilation.dependencyTemplates.set(
|
33
44
|
ConstDependency,
|
@@ -41,6 +52,11 @@ class ProvidePlugin {
|
|
41
52
|
ProvidedDependency,
|
42
53
|
new ProvidedDependency.Template()
|
43
54
|
);
|
55
|
+
/**
|
56
|
+
* @param {JavascriptParser} parser the parser
|
57
|
+
* @param {JavascriptParserOptions} parserOptions options
|
58
|
+
* @returns {void}
|
59
|
+
*/
|
44
60
|
const handler = (parser, parserOptions) => {
|
45
61
|
Object.keys(definitions).forEach(name => {
|
46
62
|
const request = [].concat(definitions[name]);
|
@@ -48,11 +64,11 @@ class ProvidePlugin {
|
|
48
64
|
if (splittedName.length > 0) {
|
49
65
|
splittedName.slice(1).forEach((_, i) => {
|
50
66
|
const name = splittedName.slice(0, i + 1).join(".");
|
51
|
-
parser.hooks.canRename.for(name).tap(
|
67
|
+
parser.hooks.canRename.for(name).tap(PLUGIN_NAME, approve);
|
52
68
|
});
|
53
69
|
}
|
54
70
|
|
55
|
-
parser.hooks.expression.for(name).tap(
|
71
|
+
parser.hooks.expression.for(name).tap(PLUGIN_NAME, expr => {
|
56
72
|
const nameIdentifier = name.includes(".")
|
57
73
|
? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
|
58
74
|
: name;
|
@@ -60,14 +76,14 @@ class ProvidePlugin {
|
|
60
76
|
request[0],
|
61
77
|
nameIdentifier,
|
62
78
|
request.slice(1),
|
63
|
-
expr.range
|
79
|
+
/** @type {Range} */ (expr.range)
|
64
80
|
);
|
65
|
-
dep.loc = expr.loc;
|
81
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
66
82
|
parser.state.module.addDependency(dep);
|
67
83
|
return true;
|
68
84
|
});
|
69
85
|
|
70
|
-
parser.hooks.call.for(name).tap(
|
86
|
+
parser.hooks.call.for(name).tap(PLUGIN_NAME, expr => {
|
71
87
|
const nameIdentifier = name.includes(".")
|
72
88
|
? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
|
73
89
|
: name;
|
@@ -75,9 +91,9 @@ class ProvidePlugin {
|
|
75
91
|
request[0],
|
76
92
|
nameIdentifier,
|
77
93
|
request.slice(1),
|
78
|
-
expr.callee.range
|
94
|
+
/** @type {Range} */ (expr.callee.range)
|
79
95
|
);
|
80
|
-
dep.loc = expr.callee.loc;
|
96
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
|
81
97
|
parser.state.module.addDependency(dep);
|
82
98
|
parser.walkExpressions(expr.arguments);
|
83
99
|
return true;
|
@@ -85,14 +101,14 @@ class ProvidePlugin {
|
|
85
101
|
});
|
86
102
|
};
|
87
103
|
normalModuleFactory.hooks.parser
|
88
|
-
.for(
|
89
|
-
.tap(
|
104
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
105
|
+
.tap(PLUGIN_NAME, handler);
|
90
106
|
normalModuleFactory.hooks.parser
|
91
|
-
.for(
|
92
|
-
.tap(
|
107
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
108
|
+
.tap(PLUGIN_NAME, handler);
|
93
109
|
normalModuleFactory.hooks.parser
|
94
|
-
.for(
|
95
|
-
.tap(
|
110
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
111
|
+
.tap(PLUGIN_NAME, handler);
|
96
112
|
}
|
97
113
|
);
|
98
114
|
}
|
package/lib/RawModule.js
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { OriginalSource, RawSource } = require("webpack-sources");
|
9
9
|
const Module = require("./Module");
|
10
|
+
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
|
10
11
|
const makeSerializable = require("./util/makeSerializable");
|
11
12
|
|
12
13
|
/** @typedef {import("webpack-sources").Source} Source */
|
@@ -22,6 +23,8 @@ const makeSerializable = require("./util/makeSerializable");
|
|
22
23
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
23
24
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
24
25
|
/** @typedef {import("./WebpackError")} WebpackError */
|
26
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
25
28
|
/** @typedef {import("./util/Hash")} Hash */
|
26
29
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
27
30
|
|
@@ -35,7 +38,7 @@ class RawModule extends Module {
|
|
35
38
|
* @param {ReadonlySet<string>=} runtimeRequirements runtime requirements needed for the source code
|
36
39
|
*/
|
37
40
|
constructor(source, identifier, readableIdentifier, runtimeRequirements) {
|
38
|
-
super(
|
41
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
39
42
|
this.sourceStr = source;
|
40
43
|
this.identifierStr = identifier || this.sourceStr;
|
41
44
|
this.readableIdentifierStr = readableIdentifier || this.identifierStr;
|
@@ -69,7 +72,9 @@ class RawModule extends Module {
|
|
69
72
|
* @returns {string} a user readable identifier of the module
|
70
73
|
*/
|
71
74
|
readableIdentifier(requestShortener) {
|
72
|
-
return
|
75
|
+
return /** @type {string} */ (
|
76
|
+
requestShortener.shorten(this.readableIdentifierStr)
|
77
|
+
);
|
73
78
|
}
|
74
79
|
|
75
80
|
/**
|
@@ -124,6 +129,9 @@ class RawModule extends Module {
|
|
124
129
|
super.updateHash(hash, context);
|
125
130
|
}
|
126
131
|
|
132
|
+
/**
|
133
|
+
* @param {ObjectSerializerContext} context context
|
134
|
+
*/
|
127
135
|
serialize(context) {
|
128
136
|
const { write } = context;
|
129
137
|
|
@@ -135,6 +143,9 @@ class RawModule extends Module {
|
|
135
143
|
super.serialize(context);
|
136
144
|
}
|
137
145
|
|
146
|
+
/**
|
147
|
+
* @param {ObjectDeserializerContext} context context
|
148
|
+
*/
|
138
149
|
deserialize(context) {
|
139
150
|
const { read } = context;
|
140
151
|
|
package/lib/RecordIdsPlugin.js
CHANGED
@@ -69,7 +69,7 @@ class RecordIdsPlugin {
|
|
69
69
|
compilation.hooks.recordModules.tap(
|
70
70
|
"RecordIdsPlugin",
|
71
71
|
/**
|
72
|
-
* @param {Module
|
72
|
+
* @param {Iterable<Module>} modules the modules array
|
73
73
|
* @param {Records} records the records object
|
74
74
|
* @returns {void}
|
75
75
|
*/
|
@@ -92,7 +92,7 @@ class RecordIdsPlugin {
|
|
92
92
|
compilation.hooks.reviveModules.tap(
|
93
93
|
"RecordIdsPlugin",
|
94
94
|
/**
|
95
|
-
* @param {Module
|
95
|
+
* @param {Iterable<Module>} modules the modules array
|
96
96
|
* @param {Records} records the records object
|
97
97
|
* @returns {void}
|
98
98
|
*/
|
@@ -166,7 +166,7 @@ class RecordIdsPlugin {
|
|
166
166
|
compilation.hooks.recordChunks.tap(
|
167
167
|
"RecordIdsPlugin",
|
168
168
|
/**
|
169
|
-
* @param {Chunk
|
169
|
+
* @param {Iterable<Chunk>} chunks the chunks array
|
170
170
|
* @param {Records} records the records object
|
171
171
|
* @returns {void}
|
172
172
|
*/
|
@@ -192,7 +192,7 @@ class RecordIdsPlugin {
|
|
192
192
|
compilation.hooks.reviveChunks.tap(
|
193
193
|
"RecordIdsPlugin",
|
194
194
|
/**
|
195
|
-
* @param {Chunk
|
195
|
+
* @param {Iterable<Chunk>} chunks the chunks array
|
196
196
|
* @param {Records} records the records object
|
197
197
|
* @returns {void}
|
198
198
|
*/
|
@@ -5,13 +5,21 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
11
|
+
} = require("./ModuleTypeConstants");
|
8
12
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
9
13
|
const ConstDependency = require("./dependencies/ConstDependency");
|
10
14
|
const {
|
11
15
|
toConstantDependency
|
12
16
|
} = require("./javascript/JavascriptParserHelpers");
|
13
17
|
|
18
|
+
/** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
14
19
|
/** @typedef {import("./Compiler")} Compiler */
|
20
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
21
|
+
|
22
|
+
const PLUGIN_NAME = "RequireJsStuffPlugin";
|
15
23
|
|
16
24
|
module.exports = class RequireJsStuffPlugin {
|
17
25
|
/**
|
@@ -21,12 +29,17 @@ module.exports = class RequireJsStuffPlugin {
|
|
21
29
|
*/
|
22
30
|
apply(compiler) {
|
23
31
|
compiler.hooks.compilation.tap(
|
24
|
-
|
32
|
+
PLUGIN_NAME,
|
25
33
|
(compilation, { normalModuleFactory }) => {
|
26
34
|
compilation.dependencyTemplates.set(
|
27
35
|
ConstDependency,
|
28
36
|
new ConstDependency.Template()
|
29
37
|
);
|
38
|
+
/**
|
39
|
+
* @param {JavascriptParser} parser the parser
|
40
|
+
* @param {JavascriptParserOptions} parserOptions options
|
41
|
+
* @returns {void}
|
42
|
+
*/
|
30
43
|
const handler = (parser, parserOptions) => {
|
31
44
|
if (
|
32
45
|
parserOptions.requireJs === undefined ||
|
@@ -37,27 +50,21 @@ module.exports = class RequireJsStuffPlugin {
|
|
37
50
|
|
38
51
|
parser.hooks.call
|
39
52
|
.for("require.config")
|
40
|
-
.tap(
|
41
|
-
"RequireJsStuffPlugin",
|
42
|
-
toConstantDependency(parser, "undefined")
|
43
|
-
);
|
53
|
+
.tap(PLUGIN_NAME, toConstantDependency(parser, "undefined"));
|
44
54
|
parser.hooks.call
|
45
55
|
.for("requirejs.config")
|
46
|
-
.tap(
|
47
|
-
"RequireJsStuffPlugin",
|
48
|
-
toConstantDependency(parser, "undefined")
|
49
|
-
);
|
56
|
+
.tap(PLUGIN_NAME, toConstantDependency(parser, "undefined"));
|
50
57
|
|
51
58
|
parser.hooks.expression
|
52
59
|
.for("require.version")
|
53
60
|
.tap(
|
54
|
-
|
61
|
+
PLUGIN_NAME,
|
55
62
|
toConstantDependency(parser, JSON.stringify("0.0.0"))
|
56
63
|
);
|
57
64
|
parser.hooks.expression
|
58
65
|
.for("requirejs.onError")
|
59
66
|
.tap(
|
60
|
-
|
67
|
+
PLUGIN_NAME,
|
61
68
|
toConstantDependency(
|
62
69
|
parser,
|
63
70
|
RuntimeGlobals.uncaughtErrorHandler,
|
@@ -66,11 +73,11 @@ module.exports = class RequireJsStuffPlugin {
|
|
66
73
|
);
|
67
74
|
};
|
68
75
|
normalModuleFactory.hooks.parser
|
69
|
-
.for(
|
70
|
-
.tap(
|
76
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
77
|
+
.tap(PLUGIN_NAME, handler);
|
71
78
|
normalModuleFactory.hooks.parser
|
72
|
-
.for(
|
73
|
-
.tap(
|
79
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
80
|
+
.tap(PLUGIN_NAME, handler);
|
74
81
|
}
|
75
82
|
);
|
76
83
|
}
|
package/lib/RuntimeGlobals.js
CHANGED
@@ -188,6 +188,11 @@ exports.createScriptUrl = "__webpack_require__.tu";
|
|
188
188
|
*/
|
189
189
|
exports.getTrustedTypesPolicy = "__webpack_require__.tt";
|
190
190
|
|
191
|
+
/**
|
192
|
+
* a flag when a chunk has a fetch priority
|
193
|
+
*/
|
194
|
+
exports.hasFetchPriority = "has fetch priority";
|
195
|
+
|
191
196
|
/**
|
192
197
|
* the chunk name of the chunk with the runtime
|
193
198
|
*/
|