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
@@ -10,15 +10,30 @@ const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
|
|
10
10
|
|
11
11
|
const RequireEnsureDependenciesBlockParserPlugin = require("./RequireEnsureDependenciesBlockParserPlugin");
|
12
12
|
|
13
|
+
const {
|
14
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
15
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
16
|
+
} = require("../ModuleTypeConstants");
|
13
17
|
const {
|
14
18
|
evaluateToString,
|
15
19
|
toConstantDependency
|
16
20
|
} = require("../javascript/JavascriptParserHelpers");
|
17
21
|
|
22
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
23
|
+
/** @typedef {import("../Compiler")} Compiler */
|
24
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
25
|
+
|
26
|
+
const PLUGIN_NAME = "RequireEnsurePlugin";
|
27
|
+
|
18
28
|
class RequireEnsurePlugin {
|
29
|
+
/**
|
30
|
+
* Apply the plugin
|
31
|
+
* @param {Compiler} compiler the compiler instance
|
32
|
+
* @returns {void}
|
33
|
+
*/
|
19
34
|
apply(compiler) {
|
20
35
|
compiler.hooks.compilation.tap(
|
21
|
-
|
36
|
+
PLUGIN_NAME,
|
22
37
|
(compilation, { normalModuleFactory }) => {
|
23
38
|
compilation.dependencyFactories.set(
|
24
39
|
RequireEnsureItemDependency,
|
@@ -34,6 +49,11 @@ class RequireEnsurePlugin {
|
|
34
49
|
new RequireEnsureDependency.Template()
|
35
50
|
);
|
36
51
|
|
52
|
+
/**
|
53
|
+
* @param {Parser} parser parser parser
|
54
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
55
|
+
* @returns {void}
|
56
|
+
*/
|
37
57
|
const handler = (parser, parserOptions) => {
|
38
58
|
if (
|
39
59
|
parserOptions.requireEnsure !== undefined &&
|
@@ -44,21 +64,21 @@ class RequireEnsurePlugin {
|
|
44
64
|
new RequireEnsureDependenciesBlockParserPlugin().apply(parser);
|
45
65
|
parser.hooks.evaluateTypeof
|
46
66
|
.for("require.ensure")
|
47
|
-
.tap(
|
67
|
+
.tap(PLUGIN_NAME, evaluateToString("function"));
|
48
68
|
parser.hooks.typeof
|
49
69
|
.for("require.ensure")
|
50
70
|
.tap(
|
51
|
-
|
71
|
+
PLUGIN_NAME,
|
52
72
|
toConstantDependency(parser, JSON.stringify("function"))
|
53
73
|
);
|
54
74
|
};
|
55
75
|
|
56
76
|
normalModuleFactory.hooks.parser
|
57
|
-
.for(
|
58
|
-
.tap(
|
77
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
78
|
+
.tap(PLUGIN_NAME, handler);
|
59
79
|
normalModuleFactory.hooks.parser
|
60
|
-
.for(
|
61
|
-
.tap(
|
80
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
81
|
+
.tap(PLUGIN_NAME, handler);
|
62
82
|
}
|
63
83
|
);
|
64
84
|
}
|
@@ -12,20 +12,33 @@ const NullDependency = require("./NullDependency");
|
|
12
12
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
13
13
|
/** @typedef {import("../Dependency")} Dependency */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
16
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
15
18
|
|
16
19
|
class RequireHeaderDependency extends NullDependency {
|
20
|
+
/**
|
21
|
+
* @param {Range} range range
|
22
|
+
*/
|
17
23
|
constructor(range) {
|
18
24
|
super();
|
19
25
|
if (!Array.isArray(range)) throw new Error("range must be valid");
|
20
26
|
this.range = range;
|
21
27
|
}
|
22
28
|
|
29
|
+
/**
|
30
|
+
* @param {ObjectSerializerContext} context context
|
31
|
+
*/
|
23
32
|
serialize(context) {
|
24
33
|
const { write } = context;
|
25
34
|
write(this.range);
|
26
35
|
super.serialize(context);
|
27
36
|
}
|
28
37
|
|
38
|
+
/**
|
39
|
+
* @param {ObjectDeserializerContext} context context
|
40
|
+
* @returns {RequireHeaderDependency} RequireHeaderDependency
|
41
|
+
*/
|
29
42
|
static deserialize(context) {
|
30
43
|
const obj = new RequireHeaderDependency(context.read());
|
31
44
|
obj.deserialize(context);
|
@@ -50,7 +63,7 @@ RequireHeaderDependency.Template = class RequireHeaderDependencyTemplate extends
|
|
50
63
|
apply(dependency, source, { runtimeRequirements }) {
|
51
64
|
const dep = /** @type {RequireHeaderDependency} */ (dependency);
|
52
65
|
runtimeRequirements.add(RuntimeGlobals.require);
|
53
|
-
source.replace(dep.range[0], dep.range[1] - 1,
|
66
|
+
source.replace(dep.range[0], dep.range[1] - 1, RuntimeGlobals.require);
|
54
67
|
}
|
55
68
|
};
|
56
69
|
|
@@ -14,9 +14,14 @@ const ModuleDependency = require("./ModuleDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
17
18
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
19
|
|
19
20
|
class RequireIncludeDependency extends ModuleDependency {
|
21
|
+
/**
|
22
|
+
* @param {string} request the request string
|
23
|
+
* @param {Range} range location in source code
|
24
|
+
*/
|
20
25
|
constructor(request, range) {
|
21
26
|
super(request);
|
22
27
|
|
@@ -13,10 +13,22 @@ const {
|
|
13
13
|
const makeSerializable = require("../util/makeSerializable");
|
14
14
|
const RequireIncludeDependency = require("./RequireIncludeDependency");
|
15
15
|
|
16
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
18
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
19
|
+
|
16
20
|
module.exports = class RequireIncludeDependencyParserPlugin {
|
21
|
+
/**
|
22
|
+
* @param {boolean} warn true: warn about deprecation, false: don't warn
|
23
|
+
*/
|
17
24
|
constructor(warn) {
|
18
25
|
this.warn = warn;
|
19
26
|
}
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @param {JavascriptParser} parser the parser
|
30
|
+
* @returns {void}
|
31
|
+
*/
|
20
32
|
apply(parser) {
|
21
33
|
const { warn } = this;
|
22
34
|
parser.hooks.call
|
@@ -28,12 +40,17 @@ module.exports = class RequireIncludeDependencyParserPlugin {
|
|
28
40
|
|
29
41
|
if (warn) {
|
30
42
|
parser.state.module.addWarning(
|
31
|
-
new RequireIncludeDeprecationWarning(
|
43
|
+
new RequireIncludeDeprecationWarning(
|
44
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
45
|
+
)
|
32
46
|
);
|
33
47
|
}
|
34
48
|
|
35
|
-
const dep = new RequireIncludeDependency(
|
36
|
-
|
49
|
+
const dep = new RequireIncludeDependency(
|
50
|
+
/** @type {string} */ (param.string),
|
51
|
+
/** @type {Range} */ (expr.range)
|
52
|
+
);
|
53
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
37
54
|
parser.state.current.addDependency(dep);
|
38
55
|
return true;
|
39
56
|
});
|
@@ -42,7 +59,9 @@ module.exports = class RequireIncludeDependencyParserPlugin {
|
|
42
59
|
.tap("RequireIncludePlugin", expr => {
|
43
60
|
if (warn) {
|
44
61
|
parser.state.module.addWarning(
|
45
|
-
new RequireIncludeDeprecationWarning(
|
62
|
+
new RequireIncludeDeprecationWarning(
|
63
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
64
|
+
)
|
46
65
|
);
|
47
66
|
}
|
48
67
|
return evaluateToString("function")(expr);
|
@@ -52,7 +71,9 @@ module.exports = class RequireIncludeDependencyParserPlugin {
|
|
52
71
|
.tap("RequireIncludePlugin", expr => {
|
53
72
|
if (warn) {
|
54
73
|
parser.state.module.addWarning(
|
55
|
-
new RequireIncludeDeprecationWarning(
|
74
|
+
new RequireIncludeDeprecationWarning(
|
75
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
76
|
+
)
|
56
77
|
);
|
57
78
|
}
|
58
79
|
return toConstantDependency(parser, JSON.stringify("function"))(expr);
|
@@ -61,6 +82,9 @@ module.exports = class RequireIncludeDependencyParserPlugin {
|
|
61
82
|
};
|
62
83
|
|
63
84
|
class RequireIncludeDeprecationWarning extends WebpackError {
|
85
|
+
/**
|
86
|
+
* @param {DependencyLocation} loc location
|
87
|
+
*/
|
64
88
|
constructor(loc) {
|
65
89
|
super("require.include() is deprecated and will be removed soon.");
|
66
90
|
|
@@ -5,13 +5,28 @@
|
|
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 RequireIncludeDependency = require("./RequireIncludeDependency");
|
9
13
|
const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
|
10
14
|
|
15
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
16
|
+
/** @typedef {import("../Compiler")} Compiler */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
18
|
+
|
19
|
+
const PLUGIN_NAME = "RequireIncludePlugin";
|
20
|
+
|
11
21
|
class RequireIncludePlugin {
|
22
|
+
/**
|
23
|
+
* Apply the plugin
|
24
|
+
* @param {Compiler} compiler the compiler instance
|
25
|
+
* @returns {void}
|
26
|
+
*/
|
12
27
|
apply(compiler) {
|
13
28
|
compiler.hooks.compilation.tap(
|
14
|
-
|
29
|
+
PLUGIN_NAME,
|
15
30
|
(compilation, { normalModuleFactory }) => {
|
16
31
|
compilation.dependencyFactories.set(
|
17
32
|
RequireIncludeDependency,
|
@@ -22,6 +37,11 @@ class RequireIncludePlugin {
|
|
22
37
|
new RequireIncludeDependency.Template()
|
23
38
|
);
|
24
39
|
|
40
|
+
/**
|
41
|
+
* @param {Parser} parser parser parser
|
42
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
43
|
+
* @returns {void}
|
44
|
+
*/
|
25
45
|
const handler = (parser, parserOptions) => {
|
26
46
|
if (parserOptions.requireInclude === false) return;
|
27
47
|
const warn = parserOptions.requireInclude === undefined;
|
@@ -30,11 +50,11 @@ class RequireIncludePlugin {
|
|
30
50
|
};
|
31
51
|
|
32
52
|
normalModuleFactory.hooks.parser
|
33
|
-
.for(
|
34
|
-
.tap(
|
53
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
54
|
+
.tap(PLUGIN_NAME, handler);
|
35
55
|
normalModuleFactory.hooks.parser
|
36
|
-
.for(
|
37
|
-
.tap(
|
56
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
57
|
+
.tap(PLUGIN_NAME, handler);
|
38
58
|
}
|
39
59
|
);
|
40
60
|
}
|
@@ -9,7 +9,18 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
10
10
|
const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
|
11
11
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
13
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
14
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
15
|
+
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
16
|
+
|
12
17
|
class RequireResolveContextDependency extends ContextDependency {
|
18
|
+
/**
|
19
|
+
* @param {ContextDependencyOptions} options options
|
20
|
+
* @param {Range} range range
|
21
|
+
* @param {Range} valueRange value range
|
22
|
+
* @param {TODO} context context
|
23
|
+
*/
|
13
24
|
constructor(options, range, valueRange, context) {
|
14
25
|
super(options, context);
|
15
26
|
|
@@ -21,6 +32,9 @@ class RequireResolveContextDependency extends ContextDependency {
|
|
21
32
|
return "amd require context";
|
22
33
|
}
|
23
34
|
|
35
|
+
/**
|
36
|
+
* @param {ObjectSerializerContext} context context
|
37
|
+
*/
|
24
38
|
serialize(context) {
|
25
39
|
const { write } = context;
|
26
40
|
|
@@ -30,6 +44,9 @@ class RequireResolveContextDependency extends ContextDependency {
|
|
30
44
|
super.serialize(context);
|
31
45
|
}
|
32
46
|
|
47
|
+
/**
|
48
|
+
* @param {ObjectDeserializerContext} context context
|
49
|
+
*/
|
33
50
|
deserialize(context) {
|
34
51
|
const { read } = context;
|
35
52
|
|
@@ -12,9 +12,15 @@ const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
|
|
12
12
|
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
15
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
15
16
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
16
17
|
|
17
18
|
class RequireResolveDependency extends ModuleDependency {
|
19
|
+
/**
|
20
|
+
* @param {string} request the request string
|
21
|
+
* @param {Range} range location in source code
|
22
|
+
* @param {string} [context] context
|
23
|
+
*/
|
18
24
|
constructor(request, range, context) {
|
19
25
|
super(request);
|
20
26
|
|
@@ -11,8 +11,14 @@ 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 */
|
14
17
|
|
15
18
|
class RequireResolveHeaderDependency extends NullDependency {
|
19
|
+
/**
|
20
|
+
* @param {Range} range range
|
21
|
+
*/
|
16
22
|
constructor(range) {
|
17
23
|
super();
|
18
24
|
|
@@ -21,6 +27,9 @@ class RequireResolveHeaderDependency extends NullDependency {
|
|
21
27
|
this.range = range;
|
22
28
|
}
|
23
29
|
|
30
|
+
/**
|
31
|
+
* @param {ObjectSerializerContext} context context
|
32
|
+
*/
|
24
33
|
serialize(context) {
|
25
34
|
const { write } = context;
|
26
35
|
|
@@ -29,6 +38,10 @@ class RequireResolveHeaderDependency extends NullDependency {
|
|
29
38
|
super.serialize(context);
|
30
39
|
}
|
31
40
|
|
41
|
+
/**
|
42
|
+
* @param {ObjectDeserializerContext} context context
|
43
|
+
* @returns {RequireResolveHeaderDependency} RequireResolveHeaderDependency
|
44
|
+
*/
|
32
45
|
static deserialize(context) {
|
33
46
|
const obj = new RequireResolveHeaderDependency(context.read());
|
34
47
|
obj.deserialize(context);
|
@@ -55,6 +68,11 @@ RequireResolveHeaderDependency.Template = class RequireResolveHeaderDependencyTe
|
|
55
68
|
source.replace(dep.range[0], dep.range[1] - 1, "/*require.resolve*/");
|
56
69
|
}
|
57
70
|
|
71
|
+
/**
|
72
|
+
* @param {string} name name
|
73
|
+
* @param {RequireResolveHeaderDependency} dep dependency
|
74
|
+
* @param {ReplaceSource} source source
|
75
|
+
*/
|
58
76
|
applyAsTemplateArgument(name, dep, source) {
|
59
77
|
source.replace(dep.range[0], dep.range[1] - 1, "/*require.resolve*/");
|
60
78
|
}
|
@@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
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
|
class RuntimeRequirementsDependency extends NullDependency {
|
@@ -39,12 +41,18 @@ class RuntimeRequirementsDependency extends NullDependency {
|
|
39
41
|
hash.update(this._hashUpdate);
|
40
42
|
}
|
41
43
|
|
44
|
+
/**
|
45
|
+
* @param {ObjectSerializerContext} context context
|
46
|
+
*/
|
42
47
|
serialize(context) {
|
43
48
|
const { write } = context;
|
44
49
|
write(this.runtimeRequirements);
|
45
50
|
super.serialize(context);
|
46
51
|
}
|
47
52
|
|
53
|
+
/**
|
54
|
+
* @param {ObjectDeserializerContext} context context
|
55
|
+
*/
|
48
56
|
deserialize(context) {
|
49
57
|
const { read } = context;
|
50
58
|
this.runtimeRequirements = read();
|
@@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency");
|
|
13
13
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
14
14
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
15
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
16
18
|
/** @typedef {import("../util/Hash")} Hash */
|
17
19
|
|
18
20
|
class StaticExportsDependency extends NullDependency {
|
@@ -43,6 +45,9 @@ class StaticExportsDependency extends NullDependency {
|
|
43
45
|
};
|
44
46
|
}
|
45
47
|
|
48
|
+
/**
|
49
|
+
* @param {ObjectSerializerContext} context context
|
50
|
+
*/
|
46
51
|
serialize(context) {
|
47
52
|
const { write } = context;
|
48
53
|
write(this.exports);
|
@@ -50,6 +55,9 @@ class StaticExportsDependency extends NullDependency {
|
|
50
55
|
super.serialize(context);
|
51
56
|
}
|
52
57
|
|
58
|
+
/**
|
59
|
+
* @param {ObjectDeserializerContext} context context
|
60
|
+
*/
|
53
61
|
deserialize(context) {
|
54
62
|
const { read } = context;
|
55
63
|
this.exports = read();
|
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
11
|
+
} = require("../ModuleTypeConstants");
|
8
12
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
13
|
const WebpackError = require("../WebpackError");
|
10
14
|
const {
|
@@ -16,7 +20,13 @@ const makeSerializable = require("../util/makeSerializable");
|
|
16
20
|
const ConstDependency = require("./ConstDependency");
|
17
21
|
const SystemRuntimeModule = require("./SystemRuntimeModule");
|
18
22
|
|
23
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
19
24
|
/** @typedef {import("../Compiler")} Compiler */
|
25
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
26
|
+
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
27
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
28
|
+
|
29
|
+
const PLUGIN_NAME = "SystemPlugin";
|
20
30
|
|
21
31
|
class SystemPlugin {
|
22
32
|
/**
|
@@ -26,33 +36,41 @@ class SystemPlugin {
|
|
26
36
|
*/
|
27
37
|
apply(compiler) {
|
28
38
|
compiler.hooks.compilation.tap(
|
29
|
-
|
39
|
+
PLUGIN_NAME,
|
30
40
|
(compilation, { normalModuleFactory }) => {
|
31
41
|
compilation.hooks.runtimeRequirementInModule
|
32
42
|
.for(RuntimeGlobals.system)
|
33
|
-
.tap(
|
43
|
+
.tap(PLUGIN_NAME, (module, set) => {
|
34
44
|
set.add(RuntimeGlobals.requireScope);
|
35
45
|
});
|
36
46
|
|
37
47
|
compilation.hooks.runtimeRequirementInTree
|
38
48
|
.for(RuntimeGlobals.system)
|
39
|
-
.tap(
|
49
|
+
.tap(PLUGIN_NAME, (chunk, set) => {
|
40
50
|
compilation.addRuntimeModule(chunk, new SystemRuntimeModule());
|
41
51
|
});
|
42
52
|
|
53
|
+
/**
|
54
|
+
* @param {Parser} parser parser parser
|
55
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
56
|
+
* @returns {void}
|
57
|
+
*/
|
43
58
|
const handler = (parser, parserOptions) => {
|
44
59
|
if (parserOptions.system === undefined || !parserOptions.system) {
|
45
60
|
return;
|
46
61
|
}
|
47
62
|
|
63
|
+
/**
|
64
|
+
* @param {string} name name
|
65
|
+
*/
|
48
66
|
const setNotSupported = name => {
|
49
67
|
parser.hooks.evaluateTypeof
|
50
68
|
.for(name)
|
51
|
-
.tap(
|
69
|
+
.tap(PLUGIN_NAME, evaluateToString("undefined"));
|
52
70
|
parser.hooks.expression
|
53
71
|
.for(name)
|
54
72
|
.tap(
|
55
|
-
|
73
|
+
PLUGIN_NAME,
|
56
74
|
expressionIsUnsupported(
|
57
75
|
parser,
|
58
76
|
name + " is not supported by webpack."
|
@@ -63,43 +81,49 @@ class SystemPlugin {
|
|
63
81
|
parser.hooks.typeof
|
64
82
|
.for("System.import")
|
65
83
|
.tap(
|
66
|
-
|
84
|
+
PLUGIN_NAME,
|
67
85
|
toConstantDependency(parser, JSON.stringify("function"))
|
68
86
|
);
|
69
87
|
parser.hooks.evaluateTypeof
|
70
88
|
.for("System.import")
|
71
|
-
.tap(
|
89
|
+
.tap(PLUGIN_NAME, evaluateToString("function"));
|
72
90
|
parser.hooks.typeof
|
73
91
|
.for("System")
|
74
92
|
.tap(
|
75
|
-
|
93
|
+
PLUGIN_NAME,
|
76
94
|
toConstantDependency(parser, JSON.stringify("object"))
|
77
95
|
);
|
78
96
|
parser.hooks.evaluateTypeof
|
79
97
|
.for("System")
|
80
|
-
.tap(
|
98
|
+
.tap(PLUGIN_NAME, evaluateToString("object"));
|
81
99
|
|
82
100
|
setNotSupported("System.set");
|
83
101
|
setNotSupported("System.get");
|
84
102
|
setNotSupported("System.register");
|
85
103
|
|
86
|
-
parser.hooks.expression.for("System").tap(
|
87
|
-
const dep = new ConstDependency(
|
88
|
-
RuntimeGlobals.system
|
89
|
-
|
90
|
-
|
104
|
+
parser.hooks.expression.for("System").tap(PLUGIN_NAME, expr => {
|
105
|
+
const dep = new ConstDependency(
|
106
|
+
RuntimeGlobals.system,
|
107
|
+
/** @type {Range} */ (expr.range),
|
108
|
+
[RuntimeGlobals.system]
|
109
|
+
);
|
110
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
91
111
|
parser.state.module.addPresentationalDependency(dep);
|
92
112
|
return true;
|
93
113
|
});
|
94
114
|
|
95
|
-
parser.hooks.call.for("System.import").tap(
|
115
|
+
parser.hooks.call.for("System.import").tap(PLUGIN_NAME, expr => {
|
96
116
|
parser.state.module.addWarning(
|
97
|
-
new SystemImportDeprecationWarning(
|
117
|
+
new SystemImportDeprecationWarning(
|
118
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
119
|
+
)
|
98
120
|
);
|
99
121
|
|
100
122
|
return parser.hooks.importCall.call({
|
101
123
|
type: "ImportExpression",
|
102
|
-
source:
|
124
|
+
source:
|
125
|
+
/** @type {import("estree").Literal} */
|
126
|
+
(expr.arguments[0]),
|
103
127
|
loc: expr.loc,
|
104
128
|
range: expr.range
|
105
129
|
});
|
@@ -107,17 +131,20 @@ class SystemPlugin {
|
|
107
131
|
};
|
108
132
|
|
109
133
|
normalModuleFactory.hooks.parser
|
110
|
-
.for(
|
111
|
-
.tap(
|
134
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
135
|
+
.tap(PLUGIN_NAME, handler);
|
112
136
|
normalModuleFactory.hooks.parser
|
113
|
-
.for(
|
114
|
-
.tap(
|
137
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
138
|
+
.tap(PLUGIN_NAME, handler);
|
115
139
|
}
|
116
140
|
);
|
117
141
|
}
|
118
142
|
}
|
119
143
|
|
120
144
|
class SystemImportDeprecationWarning extends WebpackError {
|
145
|
+
/**
|
146
|
+
* @param {DependencyLocation} loc location
|
147
|
+
*/
|
121
148
|
constructor(loc) {
|
122
149
|
super(
|
123
150
|
"System.import() is deprecated and will be removed soon. Use import() instead.\n" +
|
@@ -22,6 +22,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
22
22
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
23
23
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
24
24
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
25
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
26
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
25
28
|
/** @typedef {import("../util/Hash")} Hash */
|
26
29
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
27
30
|
|
@@ -30,8 +33,8 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
|
|
30
33
|
class URLDependency extends ModuleDependency {
|
31
34
|
/**
|
32
35
|
* @param {string} request request
|
33
|
-
* @param {
|
34
|
-
* @param {
|
36
|
+
* @param {Range} range range of the arguments of new URL( |> ... <| )
|
37
|
+
* @param {Range} outerRange range of the full |> new URL(...) <|
|
35
38
|
* @param {boolean=} relative use relative urls instead of absolute with base uri
|
36
39
|
*/
|
37
40
|
constructor(request, range, outerRange, relative) {
|
@@ -39,7 +42,7 @@ class URLDependency extends ModuleDependency {
|
|
39
42
|
this.range = range;
|
40
43
|
this.outerRange = outerRange;
|
41
44
|
this.relative = relative || false;
|
42
|
-
/** @type {Set<string> | boolean} */
|
45
|
+
/** @type {Set<string> | boolean | undefined} */
|
43
46
|
this.usedByExports = undefined;
|
44
47
|
}
|
45
48
|
|
@@ -65,13 +68,16 @@ class URLDependency extends ModuleDependency {
|
|
65
68
|
|
66
69
|
/**
|
67
70
|
* @param {string} context context directory
|
68
|
-
* @returns {Module} a module
|
71
|
+
* @returns {Module | null} a module
|
69
72
|
*/
|
70
73
|
createIgnoredModule(context) {
|
71
74
|
const RawDataUrlModule = getRawDataUrlModule();
|
72
75
|
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
73
76
|
}
|
74
77
|
|
78
|
+
/**
|
79
|
+
* @param {ObjectSerializerContext} context context
|
80
|
+
*/
|
75
81
|
serialize(context) {
|
76
82
|
const { write } = context;
|
77
83
|
write(this.outerRange);
|
@@ -80,6 +86,9 @@ class URLDependency extends ModuleDependency {
|
|
80
86
|
super.serialize(context);
|
81
87
|
}
|
82
88
|
|
89
|
+
/**
|
90
|
+
* @param {ObjectDeserializerContext} context context
|
91
|
+
*/
|
83
92
|
deserialize(context) {
|
84
93
|
const { read } = context;
|
85
94
|
this.outerRange = read();
|