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
@@ -12,13 +12,16 @@ const ImportDependency = require("./ImportDependency");
|
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../Module")} Module */
|
16
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
15
17
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
18
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
16
19
|
|
17
20
|
class ImportWeakDependency extends ImportDependency {
|
18
21
|
/**
|
19
22
|
* @param {string} request the request
|
20
|
-
* @param {
|
21
|
-
* @param {string[][]=} referencedExports list of referenced exports
|
23
|
+
* @param {Range} range expression range
|
24
|
+
* @param {(string[][] | null)=} referencedExports list of referenced exports
|
22
25
|
*/
|
23
26
|
constructor(request, range, referencedExports) {
|
24
27
|
super(request, range, referencedExports);
|
@@ -52,9 +55,9 @@ ImportWeakDependency.Template = class ImportDependencyTemplate extends (
|
|
52
55
|
const dep = /** @type {ImportWeakDependency} */ (dependency);
|
53
56
|
const content = runtimeTemplate.moduleNamespacePromise({
|
54
57
|
chunkGraph,
|
55
|
-
module: moduleGraph.getModule(dep),
|
58
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
56
59
|
request: dep.request,
|
57
|
-
strict: module.buildMeta.strictHarmonyModule,
|
60
|
+
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
58
61
|
message: "import() weak",
|
59
62
|
weak: true,
|
60
63
|
runtimeRequirements
|
@@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
15
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
16
|
/** @typedef {import("../json/JsonData")} JsonData */
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
17
19
|
/** @typedef {import("../util/Hash")} Hash */
|
18
20
|
|
19
21
|
const getExportsFromData = data => {
|
@@ -45,7 +47,7 @@ const getExportsFromData = data => {
|
|
45
47
|
|
46
48
|
class JsonExportsDependency extends NullDependency {
|
47
49
|
/**
|
48
|
-
* @param {JsonData
|
50
|
+
* @param {JsonData} data json data
|
49
51
|
*/
|
50
52
|
constructor(data) {
|
51
53
|
super();
|
@@ -78,12 +80,18 @@ class JsonExportsDependency extends NullDependency {
|
|
78
80
|
this.data.updateHash(hash);
|
79
81
|
}
|
80
82
|
|
83
|
+
/**
|
84
|
+
* @param {ObjectSerializerContext} context context
|
85
|
+
*/
|
81
86
|
serialize(context) {
|
82
87
|
const { write } = context;
|
83
88
|
write(this.data);
|
84
89
|
super.serialize(context);
|
85
90
|
}
|
86
91
|
|
92
|
+
/**
|
93
|
+
* @param {ObjectDeserializerContext} context context
|
94
|
+
*/
|
87
95
|
deserialize(context) {
|
88
96
|
const { read } = context;
|
89
97
|
this.data = read();
|
@@ -7,7 +7,14 @@
|
|
7
7
|
|
8
8
|
const makeSerializable = require("../util/makeSerializable");
|
9
9
|
|
10
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
12
|
+
|
10
13
|
class LocalModule {
|
14
|
+
/**
|
15
|
+
* @param {string} name name
|
16
|
+
* @param {number} idx index
|
17
|
+
*/
|
11
18
|
constructor(name, idx) {
|
12
19
|
this.name = name;
|
13
20
|
this.idx = idx;
|
@@ -18,10 +25,16 @@ class LocalModule {
|
|
18
25
|
this.used = true;
|
19
26
|
}
|
20
27
|
|
28
|
+
/**
|
29
|
+
* @returns {string} variable name
|
30
|
+
*/
|
21
31
|
variableName() {
|
22
32
|
return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
|
23
33
|
}
|
24
34
|
|
35
|
+
/**
|
36
|
+
* @param {ObjectSerializerContext} context context
|
37
|
+
*/
|
25
38
|
serialize(context) {
|
26
39
|
const { write } = context;
|
27
40
|
|
@@ -30,6 +43,9 @@ class LocalModule {
|
|
30
43
|
write(this.used);
|
31
44
|
}
|
32
45
|
|
46
|
+
/**
|
47
|
+
* @param {ObjectDeserializerContext} context context
|
48
|
+
*/
|
33
49
|
deserialize(context) {
|
34
50
|
const { read } = context;
|
35
51
|
|
@@ -11,8 +11,17 @@ const NullDependency = require("./NullDependency");
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
14
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
15
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
16
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
17
|
+
/** @typedef {import("./LocalModule")} LocalModule */
|
14
18
|
|
15
19
|
class LocalModuleDependency extends NullDependency {
|
20
|
+
/**
|
21
|
+
* @param {LocalModule} localModule local module
|
22
|
+
* @param {Range} range range
|
23
|
+
* @param {boolean} callNew true, when the local module should be called with new
|
24
|
+
*/
|
16
25
|
constructor(localModule, range, callNew) {
|
17
26
|
super();
|
18
27
|
|
@@ -21,6 +30,9 @@ class LocalModuleDependency extends NullDependency {
|
|
21
30
|
this.callNew = callNew;
|
22
31
|
}
|
23
32
|
|
33
|
+
/**
|
34
|
+
* @param {ObjectSerializerContext} context context
|
35
|
+
*/
|
24
36
|
serialize(context) {
|
25
37
|
const { write } = context;
|
26
38
|
|
@@ -31,6 +43,9 @@ class LocalModuleDependency extends NullDependency {
|
|
31
43
|
super.serialize(context);
|
32
44
|
}
|
33
45
|
|
46
|
+
/**
|
47
|
+
* @param {ObjectDeserializerContext} context context
|
48
|
+
*/
|
34
49
|
deserialize(context) {
|
35
50
|
const { read } = context;
|
36
51
|
|
@@ -7,6 +7,13 @@
|
|
7
7
|
|
8
8
|
const LocalModule = require("./LocalModule");
|
9
9
|
|
10
|
+
/** @typedef {import("../javascript/JavascriptParser").ParserState} ParserState */
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @param {string} parent parent module
|
14
|
+
* @param {string} mod module to resolve
|
15
|
+
* @returns {string} resolved module
|
16
|
+
*/
|
10
17
|
const lookup = (parent, mod) => {
|
11
18
|
if (mod.charAt(0) !== ".") return mod;
|
12
19
|
|
@@ -26,6 +33,11 @@ const lookup = (parent, mod) => {
|
|
26
33
|
return path.join("/");
|
27
34
|
};
|
28
35
|
|
36
|
+
/**
|
37
|
+
* @param {ParserState} state parser state
|
38
|
+
* @param {string} name name
|
39
|
+
* @returns {LocalModule} local module
|
40
|
+
*/
|
29
41
|
exports.addLocalModule = (state, name) => {
|
30
42
|
if (!state.localModules) {
|
31
43
|
state.localModules = [];
|
@@ -35,6 +47,12 @@ exports.addLocalModule = (state, name) => {
|
|
35
47
|
return m;
|
36
48
|
};
|
37
49
|
|
50
|
+
/**
|
51
|
+
* @param {ParserState} state parser state
|
52
|
+
* @param {string} name name
|
53
|
+
* @param {string} [namedModule] named module
|
54
|
+
* @returns {LocalModule | null} local module or null
|
55
|
+
*/
|
38
56
|
exports.getLocalModule = (state, name, namedModule) => {
|
39
57
|
if (!state.localModules) return null;
|
40
58
|
if (namedModule) {
|
@@ -18,6 +18,8 @@ const NullDependency = require("./NullDependency");
|
|
18
18
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
19
19
|
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
20
20
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
21
23
|
/** @typedef {import("../util/Hash")} Hash */
|
22
24
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
23
25
|
|
@@ -76,6 +78,9 @@ class ModuleDecoratorDependency extends NullDependency {
|
|
76
78
|
hash.update(this._hashUpdate);
|
77
79
|
}
|
78
80
|
|
81
|
+
/**
|
82
|
+
* @param {ObjectSerializerContext} context context
|
83
|
+
*/
|
79
84
|
serialize(context) {
|
80
85
|
const { write } = context;
|
81
86
|
write(this.decorator);
|
@@ -83,6 +88,9 @@ class ModuleDecoratorDependency extends NullDependency {
|
|
83
88
|
super.serialize(context);
|
84
89
|
}
|
85
90
|
|
91
|
+
/**
|
92
|
+
* @param {ObjectDeserializerContext} context context
|
93
|
+
*/
|
86
94
|
deserialize(context) {
|
87
95
|
const { read } = context;
|
88
96
|
this.decorator = read();
|
@@ -11,6 +11,8 @@ const memoize = require("../util/memoize");
|
|
11
11
|
|
12
12
|
/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
|
13
13
|
/** @typedef {import("../Module")} Module */
|
14
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
15
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
14
16
|
|
15
17
|
const getRawModule = memoize(() => require("../RawModule"));
|
16
18
|
|
@@ -56,7 +58,7 @@ class ModuleDependency extends Dependency {
|
|
56
58
|
|
57
59
|
/**
|
58
60
|
* @param {string} context context directory
|
59
|
-
* @returns {Module} a module
|
61
|
+
* @returns {Module | null} a module
|
60
62
|
*/
|
61
63
|
createIgnoredModule(context) {
|
62
64
|
const RawModule = getRawModule();
|
@@ -67,6 +69,9 @@ class ModuleDependency extends Dependency {
|
|
67
69
|
);
|
68
70
|
}
|
69
71
|
|
72
|
+
/**
|
73
|
+
* @param {ObjectSerializerContext} context context
|
74
|
+
*/
|
70
75
|
serialize(context) {
|
71
76
|
const { write } = context;
|
72
77
|
write(this.request);
|
@@ -76,6 +81,9 @@ class ModuleDependency extends Dependency {
|
|
76
81
|
super.serialize(context);
|
77
82
|
}
|
78
83
|
|
84
|
+
/**
|
85
|
+
* @param {ObjectDeserializerContext} context context
|
86
|
+
*/
|
79
87
|
deserialize(context) {
|
80
88
|
const { read } = context;
|
81
89
|
this.request = read();
|
@@ -10,6 +10,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
10
10
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
11
11
|
/** @typedef {import("../Dependency")} Dependency */
|
12
12
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
13
|
+
/** @typedef {import("../Module")} Module */
|
13
14
|
|
14
15
|
class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
|
15
16
|
/**
|
@@ -22,7 +23,7 @@ class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
|
|
22
23
|
const dep = /** @type {ModuleDependency} */ (dependency);
|
23
24
|
if (!dep.range) return;
|
24
25
|
const content = runtimeTemplate.moduleId({
|
25
|
-
module: moduleGraph.getModule(dep),
|
26
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
26
27
|
chunkGraph,
|
27
28
|
request: dep.request,
|
28
29
|
weak: dep.weak
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ModuleHotAcceptDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
this.range = range;
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class ModuleHotDeclineDependency extends ModuleDependency {
|
15
|
+
/**
|
16
|
+
* @param {string} request the request string
|
17
|
+
* @param {Range} range location in source code
|
18
|
+
*/
|
13
19
|
constructor(request, range) {
|
14
20
|
super(request);
|
15
21
|
|
@@ -17,7 +17,11 @@ const ModuleDependency = require("./ModuleDependency");
|
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
18
|
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
19
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
20
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
20
21
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
22
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
24
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
21
25
|
/** @typedef {import("../util/Hash")} Hash */
|
22
26
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
23
27
|
|
@@ -35,7 +39,7 @@ class ProvidedDependency extends ModuleDependency {
|
|
35
39
|
* @param {string} request request
|
36
40
|
* @param {string} identifier identifier
|
37
41
|
* @param {string[]} ids ids
|
38
|
-
* @param {
|
42
|
+
* @param {Range} range range
|
39
43
|
*/
|
40
44
|
constructor(request, identifier, ids, range) {
|
41
45
|
super(request);
|
@@ -78,6 +82,9 @@ class ProvidedDependency extends ModuleDependency {
|
|
78
82
|
hash.update(this._hashUpdate);
|
79
83
|
}
|
80
84
|
|
85
|
+
/**
|
86
|
+
* @param {ObjectSerializerContext} context context
|
87
|
+
*/
|
81
88
|
serialize(context) {
|
82
89
|
const { write } = context;
|
83
90
|
write(this.identifier);
|
@@ -85,6 +92,9 @@ class ProvidedDependency extends ModuleDependency {
|
|
85
92
|
super.serialize(context);
|
86
93
|
}
|
87
94
|
|
95
|
+
/**
|
96
|
+
* @param {ObjectDeserializerContext} context context
|
97
|
+
*/
|
88
98
|
deserialize(context) {
|
89
99
|
const { read } = context;
|
90
100
|
this.identifier = read();
|
@@ -118,7 +128,9 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template {
|
|
118
128
|
}
|
119
129
|
) {
|
120
130
|
const dep = /** @type {ProvidedDependency} */ (dependency);
|
121
|
-
const connection =
|
131
|
+
const connection =
|
132
|
+
/** @type {ModuleGraphConnection} */
|
133
|
+
(moduleGraph.getConnection(dep));
|
122
134
|
const exportsInfo = moduleGraph.getExportsInfo(connection.module);
|
123
135
|
const usedName = exportsInfo.getUsedName(dep.ids, runtime);
|
124
136
|
initFragments.push(
|
@@ -17,11 +17,14 @@ const NullDependency = require("./NullDependency");
|
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
19
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
20
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
20
23
|
/** @typedef {import("../util/Hash")} Hash */
|
21
24
|
|
22
25
|
class PureExpressionDependency extends NullDependency {
|
23
26
|
/**
|
24
|
-
* @param {
|
27
|
+
* @param {Range} range the source range
|
25
28
|
*/
|
26
29
|
constructor(range) {
|
27
30
|
super();
|
@@ -52,6 +55,9 @@ class PureExpressionDependency extends NullDependency {
|
|
52
55
|
return false;
|
53
56
|
}
|
54
57
|
|
58
|
+
/**
|
59
|
+
* @param {ObjectSerializerContext} context context
|
60
|
+
*/
|
55
61
|
serialize(context) {
|
56
62
|
const { write } = context;
|
57
63
|
write(this.range);
|
@@ -59,6 +65,9 @@ class PureExpressionDependency extends NullDependency {
|
|
59
65
|
super.serialize(context);
|
60
66
|
}
|
61
67
|
|
68
|
+
/**
|
69
|
+
* @param {ObjectDeserializerContext} context context
|
70
|
+
*/
|
62
71
|
deserialize(context) {
|
63
72
|
const { read } = context;
|
64
73
|
this.range = read();
|
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
10
10
|
const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
12
14
|
class RequireContextDependency extends ContextDependency {
|
15
|
+
/**
|
16
|
+
* @param {TODO} options options
|
17
|
+
* @param {Range} range range
|
18
|
+
*/
|
13
19
|
constructor(options, range) {
|
14
20
|
super(options);
|
15
21
|
|
@@ -7,7 +7,15 @@
|
|
7
7
|
|
8
8
|
const RequireContextDependency = require("./RequireContextDependency");
|
9
9
|
|
10
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
11
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
|
10
14
|
module.exports = class RequireContextDependencyParserPlugin {
|
15
|
+
/**
|
16
|
+
* @param {JavascriptParser} parser the parser
|
17
|
+
* @returns {void}
|
18
|
+
*/
|
11
19
|
apply(parser) {
|
12
20
|
parser.hooks.call
|
13
21
|
.for("require.context")
|
@@ -19,19 +27,19 @@ module.exports = class RequireContextDependencyParserPlugin {
|
|
19
27
|
case 4: {
|
20
28
|
const modeExpr = parser.evaluateExpression(expr.arguments[3]);
|
21
29
|
if (!modeExpr.isString()) return;
|
22
|
-
mode = modeExpr.string;
|
30
|
+
mode = /** @type {string} */ (modeExpr.string);
|
23
31
|
}
|
24
32
|
// falls through
|
25
33
|
case 3: {
|
26
34
|
const regExpExpr = parser.evaluateExpression(expr.arguments[2]);
|
27
35
|
if (!regExpExpr.isRegExp()) return;
|
28
|
-
regExp = regExpExpr.regExp;
|
36
|
+
regExp = /** @type {RegExp} */ (regExpExpr.regExp);
|
29
37
|
}
|
30
38
|
// falls through
|
31
39
|
case 2: {
|
32
40
|
const recursiveExpr = parser.evaluateExpression(expr.arguments[1]);
|
33
41
|
if (!recursiveExpr.isBoolean()) return;
|
34
|
-
recursive = recursiveExpr.bool;
|
42
|
+
recursive = /** @type {boolean} */ (recursiveExpr.bool);
|
35
43
|
}
|
36
44
|
// falls through
|
37
45
|
case 1: {
|
@@ -45,9 +53,9 @@ module.exports = class RequireContextDependencyParserPlugin {
|
|
45
53
|
mode,
|
46
54
|
category: "commonjs"
|
47
55
|
},
|
48
|
-
expr.range
|
56
|
+
/** @type {Range} */ (expr.range)
|
49
57
|
);
|
50
|
-
dep.loc = expr.loc;
|
58
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
51
59
|
dep.optional = !!parser.scope.inTry;
|
52
60
|
parser.state.current.addDependency(dep);
|
53
61
|
return true;
|
@@ -5,17 +5,25 @@
|
|
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 { cachedSetProperty } = require("../util/cleverMerge");
|
9
13
|
const ContextElementDependency = require("./ContextElementDependency");
|
10
14
|
const RequireContextDependency = require("./RequireContextDependency");
|
11
15
|
const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
|
12
16
|
|
17
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
13
18
|
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
14
19
|
/** @typedef {import("../Compiler")} Compiler */
|
20
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
15
21
|
|
16
22
|
/** @type {ResolveOptions} */
|
17
23
|
const EMPTY_RESOLVE_OPTIONS = {};
|
18
24
|
|
25
|
+
const PLUGIN_NAME = "RequireContextPlugin";
|
26
|
+
|
19
27
|
class RequireContextPlugin {
|
20
28
|
/**
|
21
29
|
* Apply the plugin
|
@@ -24,7 +32,7 @@ class RequireContextPlugin {
|
|
24
32
|
*/
|
25
33
|
apply(compiler) {
|
26
34
|
compiler.hooks.compilation.tap(
|
27
|
-
|
35
|
+
PLUGIN_NAME,
|
28
36
|
(compilation, { contextModuleFactory, normalModuleFactory }) => {
|
29
37
|
compilation.dependencyFactories.set(
|
30
38
|
RequireContextDependency,
|
@@ -40,6 +48,11 @@ class RequireContextPlugin {
|
|
40
48
|
normalModuleFactory
|
41
49
|
);
|
42
50
|
|
51
|
+
/**
|
52
|
+
* @param {Parser} parser parser parser
|
53
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
54
|
+
* @returns {void}
|
55
|
+
*/
|
43
56
|
const handler = (parser, parserOptions) => {
|
44
57
|
if (
|
45
58
|
parserOptions.requireContext !== undefined &&
|
@@ -51,14 +64,14 @@ class RequireContextPlugin {
|
|
51
64
|
};
|
52
65
|
|
53
66
|
normalModuleFactory.hooks.parser
|
54
|
-
.for(
|
55
|
-
.tap(
|
67
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
68
|
+
.tap(PLUGIN_NAME, handler);
|
56
69
|
normalModuleFactory.hooks.parser
|
57
|
-
.for(
|
58
|
-
.tap(
|
70
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
71
|
+
.tap(PLUGIN_NAME, handler);
|
59
72
|
|
60
73
|
contextModuleFactory.hooks.alternativeRequests.tap(
|
61
|
-
|
74
|
+
PLUGIN_NAME,
|
62
75
|
(items, options) => {
|
63
76
|
if (items.length === 0) return items;
|
64
77
|
|
@@ -8,7 +8,14 @@
|
|
8
8
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
|
12
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
13
|
+
|
11
14
|
class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock {
|
15
|
+
/**
|
16
|
+
* @param {ChunkGroupOptions & { entryOptions?: TODO }} chunkName chunk name
|
17
|
+
* @param {DependencyLocation} loc location info
|
18
|
+
*/
|
12
19
|
constructor(chunkName, loc) {
|
13
20
|
super(chunkName, loc, null);
|
14
21
|
}
|
@@ -10,6 +10,9 @@ const RequireEnsureDependency = require("./RequireEnsureDependency");
|
|
10
10
|
const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
|
11
11
|
const getFunctionExpression = require("./getFunctionExpression");
|
12
12
|
|
13
|
+
/** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
|
14
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
15
|
+
|
13
16
|
module.exports = class RequireEnsureDependenciesBlockParserPlugin {
|
14
17
|
apply(parser) {
|
15
18
|
parser.hooks.call
|
@@ -57,7 +60,9 @@ module.exports = class RequireEnsureDependenciesBlockParserPlugin {
|
|
57
60
|
}
|
58
61
|
|
59
62
|
const depBlock = new RequireEnsureDependenciesBlock(
|
60
|
-
|
63
|
+
/** @type {ChunkGroupOptions & { entryOptions?: TODO }} */ (
|
64
|
+
chunkName
|
65
|
+
),
|
61
66
|
expr.loc
|
62
67
|
);
|
63
68
|
const errorCallbackExists =
|
@@ -13,8 +13,16 @@ const NullDependency = require("./NullDependency");
|
|
13
13
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
14
14
|
/** @typedef {import("../Dependency")} Dependency */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
16
19
|
|
17
20
|
class RequireEnsureDependency extends NullDependency {
|
21
|
+
/**
|
22
|
+
* @param {Range} range range
|
23
|
+
* @param {Range} contentRange content range
|
24
|
+
* @param {Range} errorHandlerRange error handler range
|
25
|
+
*/
|
18
26
|
constructor(range, contentRange, errorHandlerRange) {
|
19
27
|
super();
|
20
28
|
|
@@ -27,6 +35,9 @@ class RequireEnsureDependency extends NullDependency {
|
|
27
35
|
return "require.ensure";
|
28
36
|
}
|
29
37
|
|
38
|
+
/**
|
39
|
+
* @param {ObjectSerializerContext} context context
|
40
|
+
*/
|
30
41
|
serialize(context) {
|
31
42
|
const { write } = context;
|
32
43
|
|
@@ -37,6 +48,9 @@ class RequireEnsureDependency extends NullDependency {
|
|
37
48
|
super.serialize(context);
|
38
49
|
}
|
39
50
|
|
51
|
+
/**
|
52
|
+
* @param {ObjectDeserializerContext} context context
|
53
|
+
*/
|
40
54
|
deserialize(context) {
|
41
55
|
const { read } = context;
|
42
56
|
|
@@ -85,14 +99,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
|
|
85
99
|
source.replace(
|
86
100
|
contentRange[1],
|
87
101
|
errorHandlerRange[0] - 1,
|
88
|
-
|
102
|
+
`).bind(null, ${RuntimeGlobals.require}))['catch'](`
|
89
103
|
);
|
90
104
|
source.replace(errorHandlerRange[1], range[1] - 1, ")");
|
91
105
|
} else {
|
92
106
|
source.replace(
|
93
107
|
contentRange[1],
|
94
108
|
range[1] - 1,
|
95
|
-
`).bind(null,
|
109
|
+
`).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
|
96
110
|
);
|
97
111
|
}
|
98
112
|
}
|
@@ -10,6 +10,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
10
10
|
const NullDependency = require("./NullDependency");
|
11
11
|
|
12
12
|
class RequireEnsureItemDependency extends ModuleDependency {
|
13
|
+
/**
|
14
|
+
* @param {string} request the request string
|
15
|
+
*/
|
13
16
|
constructor(request) {
|
14
17
|
super(request);
|
15
18
|
}
|