webpack 5.76.1 → 5.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +4 -0
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +194 -194
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +6 -0
- package/lib/util/StringXor.js +51 -0
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +14 -1
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +132 -5
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1608 -667
package/lib/DefinePlugin.js
CHANGED
@@ -5,10 +5,16 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_ESM,
|
11
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
12
|
+
} = require("./ModuleTypeConstants");
|
8
13
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
9
14
|
const WebpackError = require("./WebpackError");
|
10
15
|
const ConstDependency = require("./dependencies/ConstDependency");
|
11
16
|
const BasicEvaluatedExpression = require("./javascript/BasicEvaluatedExpression");
|
17
|
+
|
12
18
|
const {
|
13
19
|
evaluateToString,
|
14
20
|
toConstantDependency
|
@@ -20,6 +26,7 @@ const createHash = require("./util/createHash");
|
|
20
26
|
/** @typedef {import("./NormalModule")} NormalModule */
|
21
27
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
22
28
|
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
29
|
+
/** @typedef {import("./logging/Logger").Logger} Logger */
|
23
30
|
|
24
31
|
/** @typedef {null|undefined|RegExp|Function|string|number|boolean|bigint|undefined} CodeValuePrimitive */
|
25
32
|
/** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive|RuntimeValue>} CodeValue */
|
@@ -111,7 +118,9 @@ class RuntimeValue {
|
|
111
118
|
* @param {Map<string, string | Set<string>>} valueCacheVersions valueCacheVersions
|
112
119
|
* @param {string} key the defined key
|
113
120
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
121
|
+
* @param {Logger} logger the logger object
|
114
122
|
* @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded)
|
123
|
+
* @param {Set<string>|undefined=} objKeys used keys
|
115
124
|
* @returns {string} code converted to string that evaluates
|
116
125
|
*/
|
117
126
|
const stringifyObj = (
|
@@ -120,24 +129,47 @@ const stringifyObj = (
|
|
120
129
|
valueCacheVersions,
|
121
130
|
key,
|
122
131
|
runtimeTemplate,
|
123
|
-
|
132
|
+
logger,
|
133
|
+
asiSafe,
|
134
|
+
objKeys
|
124
135
|
) => {
|
125
136
|
let code;
|
126
137
|
let arr = Array.isArray(obj);
|
127
138
|
if (arr) {
|
128
139
|
code = `[${obj
|
129
140
|
.map(code =>
|
130
|
-
toCode(
|
141
|
+
toCode(
|
142
|
+
code,
|
143
|
+
parser,
|
144
|
+
valueCacheVersions,
|
145
|
+
key,
|
146
|
+
runtimeTemplate,
|
147
|
+
logger,
|
148
|
+
null
|
149
|
+
)
|
131
150
|
)
|
132
151
|
.join(",")}]`;
|
133
152
|
} else {
|
134
|
-
|
153
|
+
let keys = Object.keys(obj);
|
154
|
+
if (objKeys) {
|
155
|
+
if (objKeys.size === 0) keys = [];
|
156
|
+
else keys = keys.filter(k => objKeys.has(k));
|
157
|
+
}
|
158
|
+
code = `{${keys
|
135
159
|
.map(key => {
|
136
160
|
const code = obj[key];
|
137
161
|
return (
|
138
162
|
JSON.stringify(key) +
|
139
163
|
":" +
|
140
|
-
toCode(
|
164
|
+
toCode(
|
165
|
+
code,
|
166
|
+
parser,
|
167
|
+
valueCacheVersions,
|
168
|
+
key,
|
169
|
+
runtimeTemplate,
|
170
|
+
logger,
|
171
|
+
null
|
172
|
+
)
|
141
173
|
);
|
142
174
|
})
|
143
175
|
.join(",")}}`;
|
@@ -162,7 +194,9 @@ const stringifyObj = (
|
|
162
194
|
* @param {Map<string, string | Set<string>>} valueCacheVersions valueCacheVersions
|
163
195
|
* @param {string} key the defined key
|
164
196
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
197
|
+
* @param {Logger} logger the logger object
|
165
198
|
* @param {boolean|undefined|null=} asiSafe asi safe (undefined: unknown, null: unneeded)
|
199
|
+
* @param {Set<string>|undefined=} objKeys used keys
|
166
200
|
* @returns {string} code converted to string that evaluates
|
167
201
|
*/
|
168
202
|
const toCode = (
|
@@ -171,49 +205,62 @@ const toCode = (
|
|
171
205
|
valueCacheVersions,
|
172
206
|
key,
|
173
207
|
runtimeTemplate,
|
174
|
-
|
208
|
+
logger,
|
209
|
+
asiSafe,
|
210
|
+
objKeys
|
175
211
|
) => {
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
212
|
+
const transformToCode = () => {
|
213
|
+
if (code === null) {
|
214
|
+
return "null";
|
215
|
+
}
|
216
|
+
if (code === undefined) {
|
217
|
+
return "undefined";
|
218
|
+
}
|
219
|
+
if (Object.is(code, -0)) {
|
220
|
+
return "-0";
|
221
|
+
}
|
222
|
+
if (code instanceof RuntimeValue) {
|
223
|
+
return toCode(
|
224
|
+
code.exec(parser, valueCacheVersions, key),
|
225
|
+
parser,
|
226
|
+
valueCacheVersions,
|
227
|
+
key,
|
228
|
+
runtimeTemplate,
|
229
|
+
logger,
|
230
|
+
asiSafe
|
231
|
+
);
|
232
|
+
}
|
233
|
+
if (code instanceof RegExp && code.toString) {
|
234
|
+
return code.toString();
|
235
|
+
}
|
236
|
+
if (typeof code === "function" && code.toString) {
|
237
|
+
return "(" + code.toString() + ")";
|
238
|
+
}
|
239
|
+
if (typeof code === "object") {
|
240
|
+
return stringifyObj(
|
241
|
+
code,
|
242
|
+
parser,
|
243
|
+
valueCacheVersions,
|
244
|
+
key,
|
245
|
+
runtimeTemplate,
|
246
|
+
logger,
|
247
|
+
asiSafe,
|
248
|
+
objKeys
|
249
|
+
);
|
250
|
+
}
|
251
|
+
if (typeof code === "bigint") {
|
252
|
+
return runtimeTemplate.supportsBigIntLiteral()
|
253
|
+
? `${code}n`
|
254
|
+
: `BigInt("${code}")`;
|
255
|
+
}
|
256
|
+
return code + "";
|
257
|
+
};
|
258
|
+
|
259
|
+
const strCode = transformToCode();
|
260
|
+
|
261
|
+
logger.log(`Replaced "${key}" with "${strCode}"`);
|
262
|
+
|
263
|
+
return strCode;
|
217
264
|
};
|
218
265
|
|
219
266
|
const toCacheVersion = code => {
|
@@ -249,8 +296,12 @@ const toCacheVersion = code => {
|
|
249
296
|
return code + "";
|
250
297
|
};
|
251
298
|
|
252
|
-
const
|
253
|
-
const
|
299
|
+
const PLUGIN_NAME = "DefinePlugin";
|
300
|
+
const VALUE_DEP_PREFIX = `webpack/${PLUGIN_NAME} `;
|
301
|
+
const VALUE_DEP_MAIN = `webpack/${PLUGIN_NAME}_hash`;
|
302
|
+
const TYPEOF_OPERATOR_REGEXP = /^typeof\s+/;
|
303
|
+
const WEBPACK_REQUIRE_FUNCTION_REGEXP = /__webpack_require__\s*(!?\.)/;
|
304
|
+
const WEBPACK_REQUIRE_IDENTIFIER_REGEXP = /__webpack_require__/;
|
254
305
|
|
255
306
|
class DefinePlugin {
|
256
307
|
/**
|
@@ -278,8 +329,9 @@ class DefinePlugin {
|
|
278
329
|
apply(compiler) {
|
279
330
|
const definitions = this.definitions;
|
280
331
|
compiler.hooks.compilation.tap(
|
281
|
-
|
332
|
+
PLUGIN_NAME,
|
282
333
|
(compilation, { normalModuleFactory }) => {
|
334
|
+
const logger = compilation.getLogger("webpack.DefinePlugin");
|
283
335
|
compilation.dependencyTemplates.set(
|
284
336
|
ConstDependency,
|
285
337
|
new ConstDependency.Template()
|
@@ -300,7 +352,7 @@ class DefinePlugin {
|
|
300
352
|
*/
|
301
353
|
const handler = parser => {
|
302
354
|
const mainValue = compilation.valueCacheVersions.get(VALUE_DEP_MAIN);
|
303
|
-
parser.hooks.program.tap(
|
355
|
+
parser.hooks.program.tap(PLUGIN_NAME, () => {
|
304
356
|
const { buildInfo } = parser.state.module;
|
305
357
|
if (!buildInfo.valueDependencies)
|
306
358
|
buildInfo.valueDependencies = new Map();
|
@@ -356,7 +408,7 @@ class DefinePlugin {
|
|
356
408
|
const splittedKey = key.split(".");
|
357
409
|
splittedKey.slice(1).forEach((_, i) => {
|
358
410
|
const fullKey = prefix + splittedKey.slice(0, i + 1).join(".");
|
359
|
-
parser.hooks.canRename.for(fullKey).tap(
|
411
|
+
parser.hooks.canRename.for(fullKey).tap(PLUGIN_NAME, () => {
|
360
412
|
addValueDependency(key);
|
361
413
|
return true;
|
362
414
|
});
|
@@ -371,18 +423,18 @@ class DefinePlugin {
|
|
371
423
|
*/
|
372
424
|
const applyDefine = (key, code) => {
|
373
425
|
const originalKey = key;
|
374
|
-
const isTypeof =
|
375
|
-
if (isTypeof) key = key.replace(
|
426
|
+
const isTypeof = TYPEOF_OPERATOR_REGEXP.test(key);
|
427
|
+
if (isTypeof) key = key.replace(TYPEOF_OPERATOR_REGEXP, "");
|
376
428
|
let recurse = false;
|
377
429
|
let recurseTypeof = false;
|
378
430
|
if (!isTypeof) {
|
379
|
-
parser.hooks.canRename.for(key).tap(
|
431
|
+
parser.hooks.canRename.for(key).tap(PLUGIN_NAME, () => {
|
380
432
|
addValueDependency(originalKey);
|
381
433
|
return true;
|
382
434
|
});
|
383
435
|
parser.hooks.evaluateIdentifier
|
384
436
|
.for(key)
|
385
|
-
.tap(
|
437
|
+
.tap(PLUGIN_NAME, expr => {
|
386
438
|
/**
|
387
439
|
* this is needed in case there is a recursion in the DefinePlugin
|
388
440
|
* to prevent an endless recursion
|
@@ -401,6 +453,7 @@ class DefinePlugin {
|
|
401
453
|
compilation.valueCacheVersions,
|
402
454
|
key,
|
403
455
|
runtimeTemplate,
|
456
|
+
logger,
|
404
457
|
null
|
405
458
|
)
|
406
459
|
);
|
@@ -408,21 +461,28 @@ class DefinePlugin {
|
|
408
461
|
res.setRange(expr.range);
|
409
462
|
return res;
|
410
463
|
});
|
411
|
-
parser.hooks.expression.for(key).tap(
|
464
|
+
parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
|
412
465
|
addValueDependency(originalKey);
|
413
|
-
|
466
|
+
let strCode = toCode(
|
414
467
|
code,
|
415
468
|
parser,
|
416
469
|
compilation.valueCacheVersions,
|
417
470
|
originalKey,
|
418
471
|
runtimeTemplate,
|
419
|
-
|
472
|
+
logger,
|
473
|
+
!parser.isAsiPosition(expr.range[0]),
|
474
|
+
parser.destructuringAssignmentPropertiesFor(expr)
|
420
475
|
);
|
421
|
-
|
476
|
+
|
477
|
+
if (parser.scope.inShorthand) {
|
478
|
+
strCode = parser.scope.inShorthand + ":" + strCode;
|
479
|
+
}
|
480
|
+
|
481
|
+
if (WEBPACK_REQUIRE_FUNCTION_REGEXP.test(strCode)) {
|
422
482
|
return toConstantDependency(parser, strCode, [
|
423
483
|
RuntimeGlobals.require
|
424
484
|
])(expr);
|
425
|
-
} else if (
|
485
|
+
} else if (WEBPACK_REQUIRE_IDENTIFIER_REGEXP.test(strCode)) {
|
426
486
|
return toConstantDependency(parser, strCode, [
|
427
487
|
RuntimeGlobals.requireScope
|
428
488
|
])(expr);
|
@@ -431,7 +491,7 @@ class DefinePlugin {
|
|
431
491
|
}
|
432
492
|
});
|
433
493
|
}
|
434
|
-
parser.hooks.evaluateTypeof.for(key).tap(
|
494
|
+
parser.hooks.evaluateTypeof.for(key).tap(PLUGIN_NAME, expr => {
|
435
495
|
/**
|
436
496
|
* this is needed in case there is a recursion in the DefinePlugin
|
437
497
|
* to prevent an endless recursion
|
@@ -449,6 +509,7 @@ class DefinePlugin {
|
|
449
509
|
compilation.valueCacheVersions,
|
450
510
|
originalKey,
|
451
511
|
runtimeTemplate,
|
512
|
+
logger,
|
452
513
|
null
|
453
514
|
);
|
454
515
|
const typeofCode = isTypeof
|
@@ -459,7 +520,7 @@ class DefinePlugin {
|
|
459
520
|
res.setRange(expr.range);
|
460
521
|
return res;
|
461
522
|
});
|
462
|
-
parser.hooks.typeof.for(key).tap(
|
523
|
+
parser.hooks.typeof.for(key).tap(PLUGIN_NAME, expr => {
|
463
524
|
addValueDependency(originalKey);
|
464
525
|
const codeCode = toCode(
|
465
526
|
code,
|
@@ -467,6 +528,7 @@ class DefinePlugin {
|
|
467
528
|
compilation.valueCacheVersions,
|
468
529
|
originalKey,
|
469
530
|
runtimeTemplate,
|
531
|
+
logger,
|
470
532
|
null
|
471
533
|
);
|
472
534
|
const typeofCode = isTypeof
|
@@ -488,41 +550,45 @@ class DefinePlugin {
|
|
488
550
|
* @returns {void}
|
489
551
|
*/
|
490
552
|
const applyObjectDefine = (key, obj) => {
|
491
|
-
parser.hooks.canRename.for(key).tap(
|
553
|
+
parser.hooks.canRename.for(key).tap(PLUGIN_NAME, () => {
|
492
554
|
addValueDependency(key);
|
493
555
|
return true;
|
494
556
|
});
|
495
|
-
parser.hooks.evaluateIdentifier
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
.setRange(expr.range);
|
503
|
-
});
|
557
|
+
parser.hooks.evaluateIdentifier.for(key).tap(PLUGIN_NAME, expr => {
|
558
|
+
addValueDependency(key);
|
559
|
+
return new BasicEvaluatedExpression()
|
560
|
+
.setTruthy()
|
561
|
+
.setSideEffects(false)
|
562
|
+
.setRange(expr.range);
|
563
|
+
});
|
504
564
|
parser.hooks.evaluateTypeof
|
505
565
|
.for(key)
|
506
566
|
.tap(
|
507
|
-
|
567
|
+
PLUGIN_NAME,
|
508
568
|
withValueDependency(key, evaluateToString("object"))
|
509
569
|
);
|
510
|
-
parser.hooks.expression.for(key).tap(
|
570
|
+
parser.hooks.expression.for(key).tap(PLUGIN_NAME, expr => {
|
511
571
|
addValueDependency(key);
|
512
|
-
|
572
|
+
let strCode = stringifyObj(
|
513
573
|
obj,
|
514
574
|
parser,
|
515
575
|
compilation.valueCacheVersions,
|
516
576
|
key,
|
517
577
|
runtimeTemplate,
|
518
|
-
|
578
|
+
logger,
|
579
|
+
!parser.isAsiPosition(expr.range[0]),
|
580
|
+
parser.destructuringAssignmentPropertiesFor(expr)
|
519
581
|
);
|
520
582
|
|
521
|
-
if (
|
583
|
+
if (parser.scope.inShorthand) {
|
584
|
+
strCode = parser.scope.inShorthand + ":" + strCode;
|
585
|
+
}
|
586
|
+
|
587
|
+
if (WEBPACK_REQUIRE_FUNCTION_REGEXP.test(strCode)) {
|
522
588
|
return toConstantDependency(parser, strCode, [
|
523
589
|
RuntimeGlobals.require
|
524
590
|
])(expr);
|
525
|
-
} else if (
|
591
|
+
} else if (WEBPACK_REQUIRE_IDENTIFIER_REGEXP.test(strCode)) {
|
526
592
|
return toConstantDependency(parser, strCode, [
|
527
593
|
RuntimeGlobals.requireScope
|
528
594
|
])(expr);
|
@@ -533,7 +599,7 @@ class DefinePlugin {
|
|
533
599
|
parser.hooks.typeof
|
534
600
|
.for(key)
|
535
601
|
.tap(
|
536
|
-
|
602
|
+
PLUGIN_NAME,
|
537
603
|
withValueDependency(
|
538
604
|
key,
|
539
605
|
toConstantDependency(parser, JSON.stringify("object"))
|
@@ -545,14 +611,14 @@ class DefinePlugin {
|
|
545
611
|
};
|
546
612
|
|
547
613
|
normalModuleFactory.hooks.parser
|
548
|
-
.for(
|
549
|
-
.tap(
|
614
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
615
|
+
.tap(PLUGIN_NAME, handler);
|
550
616
|
normalModuleFactory.hooks.parser
|
551
|
-
.for(
|
552
|
-
.tap(
|
617
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
618
|
+
.tap(PLUGIN_NAME, handler);
|
553
619
|
normalModuleFactory.hooks.parser
|
554
|
-
.for(
|
555
|
-
.tap(
|
620
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
621
|
+
.tap(PLUGIN_NAME, handler);
|
556
622
|
|
557
623
|
/**
|
558
624
|
* Walk definitions
|
@@ -571,7 +637,7 @@ class DefinePlugin {
|
|
571
637
|
compilation.valueCacheVersions.set(name, version);
|
572
638
|
} else if (oldVersion !== version) {
|
573
639
|
const warning = new WebpackError(
|
574
|
-
|
640
|
+
`${PLUGIN_NAME}\nConflicting values for '${prefix + key}'`
|
575
641
|
);
|
576
642
|
warning.details = `'${oldVersion}' !== '${version}'`;
|
577
643
|
warning.hideStack = true;
|
package/lib/DelegatedModule.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 RuntimeGlobals = require("./RuntimeGlobals");
|
11
12
|
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
|
12
13
|
const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
|
@@ -29,6 +30,8 @@ const makeSerializable = require("./util/makeSerializable");
|
|
29
30
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
30
31
|
/** @typedef {import("./WebpackError")} WebpackError */
|
31
32
|
/** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
|
33
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
34
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
32
35
|
/** @typedef {import("./util/Hash")} Hash */
|
33
36
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
34
37
|
|
@@ -39,8 +42,15 @@ const RUNTIME_REQUIREMENTS = new Set([
|
|
39
42
|
]);
|
40
43
|
|
41
44
|
class DelegatedModule extends Module {
|
45
|
+
/**
|
46
|
+
* @param {string} sourceRequest source request
|
47
|
+
* @param {TODO} data data
|
48
|
+
* @param {"require" | "object"} type type
|
49
|
+
* @param {string} userRequest user request
|
50
|
+
* @param {string | Module} originalRequest original request
|
51
|
+
*/
|
42
52
|
constructor(sourceRequest, data, type, userRequest, originalRequest) {
|
43
|
-
super(
|
53
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
44
54
|
|
45
55
|
// Info from Factory
|
46
56
|
this.sourceRequest = sourceRequest;
|
@@ -48,7 +58,7 @@ class DelegatedModule extends Module {
|
|
48
58
|
this.delegationType = type;
|
49
59
|
this.userRequest = userRequest;
|
50
60
|
this.originalRequest = originalRequest;
|
51
|
-
/** @type {ManifestModuleData} */
|
61
|
+
/** @type {ManifestModuleData | undefined} */
|
52
62
|
this.delegateData = data;
|
53
63
|
|
54
64
|
// Build info
|
@@ -107,7 +117,8 @@ class DelegatedModule extends Module {
|
|
107
117
|
* @returns {void}
|
108
118
|
*/
|
109
119
|
build(options, compilation, resolver, fs, callback) {
|
110
|
-
|
120
|
+
const delegateData = /** @type {ManifestModuleData} */ (this.delegateData);
|
121
|
+
this.buildMeta = { ...delegateData.buildMeta };
|
111
122
|
this.buildInfo = {};
|
112
123
|
this.dependencies.length = 0;
|
113
124
|
this.delegatedSourceDependency = new DelegatedSourceDependency(
|
@@ -115,7 +126,7 @@ class DelegatedModule extends Module {
|
|
115
126
|
);
|
116
127
|
this.addDependency(this.delegatedSourceDependency);
|
117
128
|
this.addDependency(
|
118
|
-
new StaticExportsDependency(
|
129
|
+
new StaticExportsDependency(delegateData.exports || true, false)
|
119
130
|
);
|
120
131
|
callback();
|
121
132
|
}
|
@@ -185,6 +196,9 @@ class DelegatedModule extends Module {
|
|
185
196
|
super.updateHash(hash, context);
|
186
197
|
}
|
187
198
|
|
199
|
+
/**
|
200
|
+
* @param {ObjectSerializerContext} context context
|
201
|
+
*/
|
188
202
|
serialize(context) {
|
189
203
|
const { write } = context;
|
190
204
|
// constructor
|
@@ -196,6 +210,10 @@ class DelegatedModule extends Module {
|
|
196
210
|
super.serialize(context);
|
197
211
|
}
|
198
212
|
|
213
|
+
/**
|
214
|
+
* @param {ObjectDeserializerContext} context context\
|
215
|
+
* @returns {DelegatedModule} DelegatedModule
|
216
|
+
*/
|
199
217
|
static deserialize(context) {
|
200
218
|
const { read } = context;
|
201
219
|
const obj = new DelegatedModule(
|
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
const DelegatedModule = require("./DelegatedModule");
|
9
9
|
|
10
|
+
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
11
|
+
|
10
12
|
// options.source
|
11
13
|
// options.type
|
12
14
|
// options.context
|
@@ -20,6 +22,10 @@ class DelegatedModuleFactoryPlugin {
|
|
20
22
|
options.extensions = options.extensions || ["", ".js", ".json", ".wasm"];
|
21
23
|
}
|
22
24
|
|
25
|
+
/**
|
26
|
+
* @param {NormalModuleFactory} normalModuleFactory the normal module factory
|
27
|
+
* @returns {void}
|
28
|
+
*/
|
23
29
|
apply(normalModuleFactory) {
|
24
30
|
const scope = this.options.scope;
|
25
31
|
if (scope) {
|
package/lib/DependenciesBlock.js
CHANGED
@@ -12,17 +12,27 @@ const makeSerializable = require("./util/makeSerializable");
|
|
12
12
|
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
13
13
|
/** @typedef {import("./Dependency")} Dependency */
|
14
14
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
15
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
16
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
15
17
|
/** @typedef {import("./util/Hash")} Hash */
|
16
18
|
|
17
19
|
/** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
|
18
20
|
|
21
|
+
/**
|
22
|
+
* DependenciesBlock is the base class for all Module classes in webpack. It describes a
|
23
|
+
* "block" of dependencies which are pointers to other DependenciesBlock instances. For example
|
24
|
+
* when a Module has a CommonJs require statement, the DependencyBlock for the CommonJs module
|
25
|
+
* would be added as a dependency to the Module. DependenciesBlock is inherited by two types of classes:
|
26
|
+
* Module subclasses and AsyncDependenciesBlock subclasses. The only difference between the two is that
|
27
|
+
* AsyncDependenciesBlock subclasses are used for code-splitting (async boundary) and Module subclasses are not.
|
28
|
+
*/
|
19
29
|
class DependenciesBlock {
|
20
30
|
constructor() {
|
21
31
|
/** @type {Dependency[]} */
|
22
32
|
this.dependencies = [];
|
23
33
|
/** @type {AsyncDependenciesBlock[]} */
|
24
34
|
this.blocks = [];
|
25
|
-
/** @type {DependenciesBlock} */
|
35
|
+
/** @type {DependenciesBlock | undefined} */
|
26
36
|
this.parent = undefined;
|
27
37
|
}
|
28
38
|
|
@@ -88,11 +98,17 @@ class DependenciesBlock {
|
|
88
98
|
}
|
89
99
|
}
|
90
100
|
|
101
|
+
/**
|
102
|
+
* @param {ObjectSerializerContext} context context
|
103
|
+
*/
|
91
104
|
serialize({ write }) {
|
92
105
|
write(this.dependencies);
|
93
106
|
write(this.blocks);
|
94
107
|
}
|
95
108
|
|
109
|
+
/**
|
110
|
+
* @param {ObjectDeserializerContext} context context
|
111
|
+
*/
|
96
112
|
deserialize({ read }) {
|
97
113
|
this.dependencies = read();
|
98
114
|
this.blocks = read();
|
package/lib/Dependency.js
CHANGED
@@ -17,6 +17,8 @@ const memoize = require("./util/memoize");
|
|
17
17
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
18
18
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
19
19
|
/** @typedef {import("./WebpackError")} WebpackError */
|
20
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
21
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
20
22
|
/** @typedef {import("./util/Hash")} Hash */
|
21
23
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
22
24
|
|
@@ -87,9 +89,9 @@ const getIgnoredModule = memoize(() => {
|
|
87
89
|
|
88
90
|
class Dependency {
|
89
91
|
constructor() {
|
90
|
-
/** @type {Module} */
|
92
|
+
/** @type {Module | undefined} */
|
91
93
|
this._parentModule = undefined;
|
92
|
-
/** @type {DependenciesBlock} */
|
94
|
+
/** @type {DependenciesBlock | undefined} */
|
93
95
|
this._parentDependenciesBlock = undefined;
|
94
96
|
/** @type {number} */
|
95
97
|
this._parentDependenciesBlockIndex = -1;
|
@@ -172,6 +174,12 @@ class Dependency {
|
|
172
174
|
this._loc = loc;
|
173
175
|
}
|
174
176
|
|
177
|
+
/**
|
178
|
+
* @param {number} startLine start line
|
179
|
+
* @param {number} startColumn start column
|
180
|
+
* @param {number} endLine end line
|
181
|
+
* @param {number} endColumn end column
|
182
|
+
*/
|
175
183
|
setLoc(startLine, startColumn, endLine, endColumn) {
|
176
184
|
this._locSL = startLine;
|
177
185
|
this._locSC = startColumn;
|
@@ -245,7 +253,7 @@ class Dependency {
|
|
245
253
|
/**
|
246
254
|
* Returns warnings
|
247
255
|
* @param {ModuleGraph} moduleGraph module graph
|
248
|
-
* @returns {WebpackError[]} warnings
|
256
|
+
* @returns {WebpackError[] | null | undefined} warnings
|
249
257
|
*/
|
250
258
|
getWarnings(moduleGraph) {
|
251
259
|
return null;
|
@@ -254,7 +262,7 @@ class Dependency {
|
|
254
262
|
/**
|
255
263
|
* Returns errors
|
256
264
|
* @param {ModuleGraph} moduleGraph module graph
|
257
|
-
* @returns {WebpackError[]} errors
|
265
|
+
* @returns {WebpackError[] | null | undefined} errors
|
258
266
|
*/
|
259
267
|
getErrors(moduleGraph) {
|
260
268
|
return null;
|
@@ -286,12 +294,15 @@ class Dependency {
|
|
286
294
|
|
287
295
|
/**
|
288
296
|
* @param {string} context context directory
|
289
|
-
* @returns {Module} a module
|
297
|
+
* @returns {Module | null} a module
|
290
298
|
*/
|
291
299
|
createIgnoredModule(context) {
|
292
300
|
return getIgnoredModule();
|
293
301
|
}
|
294
302
|
|
303
|
+
/**
|
304
|
+
* @param {ObjectSerializerContext} context context
|
305
|
+
*/
|
295
306
|
serialize({ write }) {
|
296
307
|
write(this.weak);
|
297
308
|
write(this.optional);
|
@@ -303,6 +314,9 @@ class Dependency {
|
|
303
314
|
write(this._locN);
|
304
315
|
}
|
305
316
|
|
317
|
+
/**
|
318
|
+
* @param {ObjectDeserializerContext} context context
|
319
|
+
*/
|
306
320
|
deserialize({ read }) {
|
307
321
|
this.weak = read();
|
308
322
|
this.optional = read();
|