webpack 5.76.1 → 5.88.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
@@ -14,12 +14,15 @@ const CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency");
|
|
14
14
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
15
15
|
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
|
+
/** @typedef {import("../css/CssParser").Range} Range */
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
17
20
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
21
|
|
19
22
|
class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
|
20
23
|
/**
|
21
24
|
* @param {string} name name
|
22
|
-
* @param {
|
25
|
+
* @param {Range} range range
|
23
26
|
* @param {string=} prefix prefix
|
24
27
|
* @param {Set<string>=} declaredSet set of declared names (will only be active when in declared set)
|
25
28
|
*/
|
@@ -64,12 +67,18 @@ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
|
|
64
67
|
return [[this.name]];
|
65
68
|
}
|
66
69
|
|
70
|
+
/**
|
71
|
+
* @param {ObjectSerializerContext} context context
|
72
|
+
*/
|
67
73
|
serialize(context) {
|
68
74
|
const { write } = context;
|
69
75
|
write(this.declaredSet);
|
70
76
|
super.serialize(context);
|
71
77
|
}
|
72
78
|
|
79
|
+
/**
|
80
|
+
* @param {ObjectDeserializerContext} context context
|
81
|
+
*/
|
73
82
|
deserialize(context) {
|
74
83
|
const { read } = context;
|
75
84
|
this.declaredSet = read();
|
@@ -18,6 +18,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
19
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
20
20
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
21
24
|
/** @typedef {import("../util/Hash")} Hash */
|
22
25
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
23
26
|
|
@@ -26,13 +29,13 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
|
|
26
29
|
class CssUrlDependency extends ModuleDependency {
|
27
30
|
/**
|
28
31
|
* @param {string} request request
|
29
|
-
* @param {
|
30
|
-
* @param {string
|
32
|
+
* @param {Range} range range of the argument
|
33
|
+
* @param {"string" | "url"} urlType dependency type e.g. url() or string
|
31
34
|
*/
|
32
|
-
constructor(request, range,
|
35
|
+
constructor(request, range, urlType) {
|
33
36
|
super(request);
|
34
37
|
this.range = range;
|
35
|
-
this.
|
38
|
+
this.urlType = urlType;
|
36
39
|
}
|
37
40
|
|
38
41
|
get type() {
|
@@ -45,26 +48,36 @@ class CssUrlDependency extends ModuleDependency {
|
|
45
48
|
|
46
49
|
/**
|
47
50
|
* @param {string} context context directory
|
48
|
-
* @returns {Module} a module
|
51
|
+
* @returns {Module | null} a module
|
49
52
|
*/
|
50
53
|
createIgnoredModule(context) {
|
51
54
|
const RawDataUrlModule = getRawDataUrlModule();
|
52
55
|
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
53
56
|
}
|
54
57
|
|
58
|
+
/**
|
59
|
+
* @param {ObjectSerializerContext} context context
|
60
|
+
*/
|
55
61
|
serialize(context) {
|
56
62
|
const { write } = context;
|
57
|
-
write(this.
|
63
|
+
write(this.urlType);
|
58
64
|
super.serialize(context);
|
59
65
|
}
|
60
66
|
|
67
|
+
/**
|
68
|
+
* @param {ObjectDeserializerContext} context context
|
69
|
+
*/
|
61
70
|
deserialize(context) {
|
62
71
|
const { read } = context;
|
63
|
-
this.
|
72
|
+
this.urlType = read();
|
64
73
|
super.deserialize(context);
|
65
74
|
}
|
66
75
|
}
|
67
76
|
|
77
|
+
/**
|
78
|
+
* @param {string} str string
|
79
|
+
* @returns {string} string in quotes if needed
|
80
|
+
*/
|
68
81
|
const cssEscapeString = str => {
|
69
82
|
let countWhiteOrBracket = 0;
|
70
83
|
let countQuotation = 0;
|
@@ -108,21 +121,38 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
|
108
121
|
apply(
|
109
122
|
dependency,
|
110
123
|
source,
|
111
|
-
{
|
124
|
+
{ moduleGraph, runtimeTemplate, codeGenerationResults }
|
112
125
|
) {
|
113
126
|
const dep = /** @type {CssUrlDependency} */ (dependency);
|
114
127
|
|
128
|
+
/** @type {string | undefined} */
|
129
|
+
let newValue;
|
130
|
+
|
131
|
+
switch (dep.urlType) {
|
132
|
+
case "string":
|
133
|
+
newValue = cssEscapeString(
|
134
|
+
runtimeTemplate.assetUrl({
|
135
|
+
publicPath: "",
|
136
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
137
|
+
codeGenerationResults
|
138
|
+
})
|
139
|
+
);
|
140
|
+
break;
|
141
|
+
case "url":
|
142
|
+
newValue = `url(${cssEscapeString(
|
143
|
+
runtimeTemplate.assetUrl({
|
144
|
+
publicPath: "",
|
145
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
146
|
+
codeGenerationResults
|
147
|
+
})
|
148
|
+
)})`;
|
149
|
+
break;
|
150
|
+
}
|
151
|
+
|
115
152
|
source.replace(
|
116
153
|
dep.range[0],
|
117
154
|
dep.range[1] - 1,
|
118
|
-
|
119
|
-
runtimeTemplate.assetUrl({
|
120
|
-
publicPath: "",
|
121
|
-
runtime,
|
122
|
-
module: moduleGraph.getModule(dep),
|
123
|
-
codeGenerationResults
|
124
|
-
})
|
125
|
-
)})`
|
155
|
+
/** @type {string} */ (newValue)
|
126
156
|
);
|
127
157
|
}
|
128
158
|
};
|
@@ -9,6 +9,9 @@ const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const ModuleDependency = require("./ModuleDependency");
|
10
10
|
|
11
11
|
class DelegatedSourceDependency extends ModuleDependency {
|
12
|
+
/**
|
13
|
+
* @param {string} request the request string
|
14
|
+
*/
|
12
15
|
constructor(request) {
|
13
16
|
super(request);
|
14
17
|
}
|
@@ -8,7 +8,15 @@
|
|
8
8
|
const Dependency = require("../Dependency");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
/** @typedef {import("./EntryDependency")} EntryDependency */
|
14
|
+
|
11
15
|
class DllEntryDependency extends Dependency {
|
16
|
+
/**
|
17
|
+
* @param {EntryDependency[]} dependencies dependencies
|
18
|
+
* @param {string} name name
|
19
|
+
*/
|
12
20
|
constructor(dependencies, name) {
|
13
21
|
super();
|
14
22
|
|
@@ -20,6 +28,9 @@ class DllEntryDependency extends Dependency {
|
|
20
28
|
return "dll entry";
|
21
29
|
}
|
22
30
|
|
31
|
+
/**
|
32
|
+
* @param {ObjectSerializerContext} context context
|
33
|
+
*/
|
23
34
|
serialize(context) {
|
24
35
|
const { write } = context;
|
25
36
|
|
@@ -29,6 +40,9 @@ class DllEntryDependency extends Dependency {
|
|
29
40
|
super.serialize(context);
|
30
41
|
}
|
31
42
|
|
43
|
+
/**
|
44
|
+
* @param {ObjectDeserializerContext} context context
|
45
|
+
*/
|
32
46
|
deserialize(context) {
|
33
47
|
const { read } = context;
|
34
48
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
8
9
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
9
10
|
|
10
11
|
/** @type {WeakMap<ParserState, boolean>} */
|
@@ -18,8 +19,9 @@ exports.bailout = parserState => {
|
|
18
19
|
const value = parserStateExportsState.get(parserState);
|
19
20
|
parserStateExportsState.set(parserState, false);
|
20
21
|
if (value === true) {
|
21
|
-
parserState.module.buildMeta
|
22
|
-
|
22
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
23
|
+
buildMeta.exportsType = undefined;
|
24
|
+
buildMeta.defaultObject = false;
|
23
25
|
}
|
24
26
|
};
|
25
27
|
|
@@ -32,8 +34,9 @@ exports.enable = parserState => {
|
|
32
34
|
if (value === false) return;
|
33
35
|
parserStateExportsState.set(parserState, true);
|
34
36
|
if (value !== true) {
|
35
|
-
parserState.module.buildMeta
|
36
|
-
|
37
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
38
|
+
buildMeta.exportsType = "default";
|
39
|
+
buildMeta.defaultObject = "redirect";
|
37
40
|
}
|
38
41
|
};
|
39
42
|
|
@@ -44,7 +47,7 @@ exports.enable = parserState => {
|
|
44
47
|
exports.setFlagged = parserState => {
|
45
48
|
const value = parserStateExportsState.get(parserState);
|
46
49
|
if (value !== true) return;
|
47
|
-
const buildMeta = parserState.module.buildMeta;
|
50
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
48
51
|
if (buildMeta.exportsType === "dynamic") return;
|
49
52
|
buildMeta.exportsType = "flagged";
|
50
53
|
};
|
@@ -56,7 +59,8 @@ exports.setFlagged = parserState => {
|
|
56
59
|
exports.setDynamic = parserState => {
|
57
60
|
const value = parserStateExportsState.get(parserState);
|
58
61
|
if (value !== true) return;
|
59
|
-
|
62
|
+
/** @type {BuildMeta} */
|
63
|
+
(parserState.module.buildMeta).exportsType = "dynamic";
|
60
64
|
};
|
61
65
|
|
62
66
|
/**
|
@@ -16,6 +16,9 @@ const NullDependency = require("./NullDependency");
|
|
16
16
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
17
17
|
/** @typedef {import("../Module")} Module */
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
19
22
|
/** @typedef {import("../util/Hash")} Hash */
|
20
23
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
21
24
|
|
@@ -48,19 +51,23 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
48
51
|
switch (property) {
|
49
52
|
case "canMangle": {
|
50
53
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
51
|
-
const exportInfo = exportsInfo.getExportInfo(
|
54
|
+
const exportInfo = exportsInfo.getExportInfo(
|
55
|
+
/** @type {string} */ (exportName)
|
56
|
+
);
|
52
57
|
if (exportInfo) return exportInfo.canMangle;
|
53
58
|
return exportsInfo.otherExportsInfo.canMangle;
|
54
59
|
}
|
55
60
|
case "used":
|
56
61
|
return (
|
57
|
-
moduleGraph
|
62
|
+
moduleGraph
|
63
|
+
.getExportsInfo(module)
|
64
|
+
.getUsed(/** @type {string} */ (exportName), runtime) !==
|
58
65
|
UsageState.Unused
|
59
66
|
);
|
60
67
|
case "useInfo": {
|
61
68
|
const state = moduleGraph
|
62
69
|
.getExportsInfo(module)
|
63
|
-
.getUsed(exportName, runtime);
|
70
|
+
.getUsed(/** @type {string} */ (exportName), runtime);
|
64
71
|
switch (state) {
|
65
72
|
case UsageState.Used:
|
66
73
|
case UsageState.OnlyPropertiesUsed:
|
@@ -76,12 +83,19 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
76
83
|
}
|
77
84
|
}
|
78
85
|
case "provideInfo":
|
79
|
-
return moduleGraph
|
86
|
+
return moduleGraph
|
87
|
+
.getExportsInfo(module)
|
88
|
+
.isExportProvided(/** @type {string} */ (exportName));
|
80
89
|
}
|
81
90
|
return undefined;
|
82
91
|
};
|
83
92
|
|
84
93
|
class ExportsInfoDependency extends NullDependency {
|
94
|
+
/**
|
95
|
+
* @param {Range} range range
|
96
|
+
* @param {TODO} exportName export name
|
97
|
+
* @param {string | null} property property
|
98
|
+
*/
|
85
99
|
constructor(range, exportName, property) {
|
86
100
|
super();
|
87
101
|
this.range = range;
|
@@ -89,6 +103,9 @@ class ExportsInfoDependency extends NullDependency {
|
|
89
103
|
this.property = property;
|
90
104
|
}
|
91
105
|
|
106
|
+
/**
|
107
|
+
* @param {ObjectSerializerContext} context context
|
108
|
+
*/
|
92
109
|
serialize(context) {
|
93
110
|
const { write } = context;
|
94
111
|
write(this.range);
|
@@ -97,6 +114,10 @@ class ExportsInfoDependency extends NullDependency {
|
|
97
114
|
super.serialize(context);
|
98
115
|
}
|
99
116
|
|
117
|
+
/**
|
118
|
+
* @param {ObjectDeserializerContext} context context
|
119
|
+
* @returns {ExportsInfoDependency} ExportsInfoDependency
|
120
|
+
*/
|
100
121
|
static deserialize(context) {
|
101
122
|
const obj = new ExportsInfoDependency(
|
102
123
|
context.read(),
|
@@ -13,11 +13,14 @@ const NullDependency = require("./NullDependency");
|
|
13
13
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
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
|
/** @typedef {import("./HarmonyAcceptImportDependency")} HarmonyAcceptImportDependency */
|
17
20
|
|
18
21
|
class HarmonyAcceptDependency extends NullDependency {
|
19
22
|
/**
|
20
|
-
* @param {
|
23
|
+
* @param {Range} range expression range
|
21
24
|
* @param {HarmonyAcceptImportDependency[]} dependencies import dependencies
|
22
25
|
* @param {boolean} hasCallback true, if the range wraps an existing callback
|
23
26
|
*/
|
@@ -32,6 +35,9 @@ class HarmonyAcceptDependency extends NullDependency {
|
|
32
35
|
return "accepted harmony modules";
|
33
36
|
}
|
34
37
|
|
38
|
+
/**
|
39
|
+
* @param {ObjectSerializerContext} context context
|
40
|
+
*/
|
35
41
|
serialize(context) {
|
36
42
|
const { write } = context;
|
37
43
|
write(this.range);
|
@@ -40,6 +46,9 @@ class HarmonyAcceptDependency extends NullDependency {
|
|
40
46
|
super.serialize(context);
|
41
47
|
}
|
42
48
|
|
49
|
+
/**
|
50
|
+
* @param {ObjectDeserializerContext} context context
|
51
|
+
*/
|
43
52
|
deserialize(context) {
|
44
53
|
const { read } = context;
|
45
54
|
this.range = read();
|
@@ -14,6 +14,9 @@ const NullDependency = require("./NullDependency");
|
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
15
|
|
16
16
|
class HarmonyAcceptImportDependency extends HarmonyImportDependency {
|
17
|
+
/**
|
18
|
+
* @param {string} request the request string
|
19
|
+
*/
|
17
20
|
constructor(request) {
|
18
21
|
super(request, NaN);
|
19
22
|
this.weak = true;
|
@@ -15,6 +15,7 @@ const NullDependency = require("./NullDependency");
|
|
15
15
|
/** @typedef {import("../Dependency")} Dependency */
|
16
16
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
17
17
|
/** @typedef {import("../Module")} Module */
|
18
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
18
19
|
|
19
20
|
class HarmonyCompatibilityDependency extends NullDependency {
|
20
21
|
get type() {
|
@@ -80,7 +81,7 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
80
81
|
0,
|
81
82
|
undefined,
|
82
83
|
`\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }${
|
83
|
-
module.buildMeta.async ? ", 1" : ""
|
84
|
+
/** @type {BuildMeta} */ (module.buildMeta).async ? ", 1" : ""
|
84
85
|
});`
|
85
86
|
)
|
86
87
|
);
|
@@ -5,19 +5,32 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
|
8
9
|
const DynamicExports = require("./DynamicExports");
|
9
10
|
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
|
10
11
|
const HarmonyExports = require("./HarmonyExports");
|
11
12
|
|
13
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
14
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
15
|
+
/** @typedef {import("./HarmonyModulesPlugin").HarmonyModulesPluginOptions} HarmonyModulesPluginOptions */
|
16
|
+
|
12
17
|
module.exports = class HarmonyDetectionParserPlugin {
|
18
|
+
/**
|
19
|
+
* @param {HarmonyModulesPluginOptions} options options
|
20
|
+
*/
|
13
21
|
constructor(options) {
|
14
22
|
const { topLevelAwait = false } = options || {};
|
15
23
|
this.topLevelAwait = topLevelAwait;
|
16
24
|
}
|
17
25
|
|
26
|
+
/**
|
27
|
+
* @param {JavascriptParser} parser the parser
|
28
|
+
* @returns {void}
|
29
|
+
*/
|
18
30
|
apply(parser) {
|
19
31
|
parser.hooks.program.tap("HarmonyDetectionParserPlugin", ast => {
|
20
|
-
const isStrictHarmony =
|
32
|
+
const isStrictHarmony =
|
33
|
+
parser.state.module.type === JAVASCRIPT_MODULE_TYPE_ESM;
|
21
34
|
const isHarmony =
|
22
35
|
isStrictHarmony ||
|
23
36
|
ast.body.some(
|
@@ -60,15 +73,22 @@ module.exports = class HarmonyDetectionParserPlugin {
|
|
60
73
|
"Top-level-await is only supported in EcmaScript Modules"
|
61
74
|
);
|
62
75
|
}
|
63
|
-
|
76
|
+
/** @type {BuildMeta} */
|
77
|
+
(module.buildMeta).async = true;
|
64
78
|
});
|
65
79
|
|
80
|
+
/**
|
81
|
+
* @returns {boolean | undefined} true if in harmony
|
82
|
+
*/
|
66
83
|
const skipInHarmony = () => {
|
67
84
|
if (HarmonyExports.isEnabled(parser.state)) {
|
68
85
|
return true;
|
69
86
|
}
|
70
87
|
};
|
71
88
|
|
89
|
+
/**
|
90
|
+
* @returns {null | undefined} null if in harmony
|
91
|
+
*/
|
72
92
|
const nullInHarmony = () => {
|
73
93
|
if (HarmonyExports.isEnabled(parser.state)) {
|
74
94
|
return null;
|
@@ -12,6 +12,12 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
12
12
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
13
13
|
/** @typedef {import("../Dependency")} Dependency */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
16
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
|
18
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
15
21
|
|
16
22
|
/**
|
17
23
|
* Dependency for static evaluating import specifier. e.g.
|
@@ -21,8 +27,17 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
21
27
|
* a.x !== undefined; // if x value statically analyzable
|
22
28
|
*/
|
23
29
|
class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDependency {
|
30
|
+
/**
|
31
|
+
* @param {string} request the request string
|
32
|
+
* @param {number} sourceOrder source order
|
33
|
+
* @param {TODO} ids ids
|
34
|
+
* @param {TODO} name name
|
35
|
+
* @param {Range} range location in source code
|
36
|
+
* @param {Assertions} assertions assertions
|
37
|
+
* @param {string} operator operator
|
38
|
+
*/
|
24
39
|
constructor(request, sourceOrder, ids, name, range, assertions, operator) {
|
25
|
-
super(request, sourceOrder, ids, name, range, false, assertions);
|
40
|
+
super(request, sourceOrder, ids, name, range, false, assertions, []);
|
26
41
|
this.operator = operator;
|
27
42
|
}
|
28
43
|
|
@@ -30,12 +45,18 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
|
|
30
45
|
return `evaluated X ${this.operator} harmony import specifier`;
|
31
46
|
}
|
32
47
|
|
48
|
+
/**
|
49
|
+
* @param {ObjectSerializerContext} context context
|
50
|
+
*/
|
33
51
|
serialize(context) {
|
34
52
|
super.serialize(context);
|
35
53
|
const { write } = context;
|
36
54
|
write(this.operator);
|
37
55
|
}
|
38
56
|
|
57
|
+
/**
|
58
|
+
* @param {ObjectDeserializerContext} context context
|
59
|
+
*/
|
39
60
|
deserialize(context) {
|
40
61
|
super.deserialize(context);
|
41
62
|
const { read } = context;
|
@@ -66,15 +87,20 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
|
|
66
87
|
// Skip rendering depending when dependency is conditional
|
67
88
|
if (connection && !connection.isTargetActive(runtime)) return;
|
68
89
|
|
69
|
-
const exportsInfo = moduleGraph.getExportsInfo(
|
90
|
+
const exportsInfo = moduleGraph.getExportsInfo(
|
91
|
+
/** @type {ModuleGraphConnection} */ (connection).module
|
92
|
+
);
|
70
93
|
const ids = dep.getIds(moduleGraph);
|
71
94
|
|
72
95
|
let value;
|
73
96
|
|
74
|
-
const exportsType =
|
75
|
-
|
76
|
-
module.
|
77
|
-
|
97
|
+
const exportsType =
|
98
|
+
/** @type {ModuleGraphConnection} */
|
99
|
+
(connection).module.getExportsType(
|
100
|
+
moduleGraph,
|
101
|
+
/** @type {BuildMeta} */
|
102
|
+
(module.buildMeta).strictHarmonyModule
|
103
|
+
);
|
78
104
|
switch (exportsType) {
|
79
105
|
case "default-with-named": {
|
80
106
|
if (ids[0] === "default") {
|
@@ -18,9 +18,14 @@ const {
|
|
18
18
|
} = require("./HarmonyImportDependencyParserPlugin");
|
19
19
|
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
20
20
|
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
22
|
+
|
21
23
|
const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
|
22
24
|
|
23
25
|
module.exports = class HarmonyExportDependencyParserPlugin {
|
26
|
+
/**
|
27
|
+
* @param {import("../../declarations/WebpackOptions").JavascriptParserOptions} options options
|
28
|
+
*/
|
24
29
|
constructor(options) {
|
25
30
|
this.exportPresenceMode =
|
26
31
|
options.reexportExportsPresence !== undefined
|
@@ -8,6 +8,7 @@
|
|
8
8
|
const ConcatenationScope = require("../ConcatenationScope");
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
11
|
+
const propertyAccess = require("../util/propertyAccess");
|
11
12
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
12
13
|
const NullDependency = require("./NullDependency");
|
13
14
|
|
@@ -17,8 +18,17 @@ const NullDependency = require("./NullDependency");
|
|
17
18
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
20
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
20
24
|
|
21
25
|
class HarmonyExportExpressionDependency extends NullDependency {
|
26
|
+
/**
|
27
|
+
* @param {Range} range range
|
28
|
+
* @param {Range} rangeStatement range statement
|
29
|
+
* @param {string} prefix prefix
|
30
|
+
* @param {string | { range: Range, prefix: string, suffix: string }} [declarationId] declaration id
|
31
|
+
*/
|
22
32
|
constructor(range, rangeStatement, prefix, declarationId) {
|
23
33
|
super();
|
24
34
|
this.range = range;
|
@@ -54,6 +64,9 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
54
64
|
return false;
|
55
65
|
}
|
56
66
|
|
67
|
+
/**
|
68
|
+
* @param {ObjectSerializerContext} context context
|
69
|
+
*/
|
57
70
|
serialize(context) {
|
58
71
|
const { write } = context;
|
59
72
|
write(this.range);
|
@@ -63,6 +76,9 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
63
76
|
super.serialize(context);
|
64
77
|
}
|
65
78
|
|
79
|
+
/**
|
80
|
+
* @param {ObjectDeserializerContext} context context
|
81
|
+
*/
|
66
82
|
deserialize(context) {
|
67
83
|
const { read } = context;
|
68
84
|
this.range = read();
|
@@ -135,6 +151,7 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
135
151
|
`/* harmony default export */ ${dep.prefix}`
|
136
152
|
);
|
137
153
|
} else {
|
154
|
+
/** @type {string} */
|
138
155
|
let content;
|
139
156
|
const name = ConcatenationScope.DEFAULT_EXPORT;
|
140
157
|
if (runtimeTemplate.supportsConst()) {
|
@@ -164,9 +181,9 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
164
181
|
if (used) {
|
165
182
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
166
183
|
// This is a little bit incorrect as TDZ is not correct, but we can't use const.
|
167
|
-
content = `/* harmony default export */ ${exportsName}
|
168
|
-
used
|
169
|
-
)}
|
184
|
+
content = `/* harmony default export */ ${exportsName}${propertyAccess(
|
185
|
+
typeof used === "string" ? [used] : used
|
186
|
+
)} = `;
|
170
187
|
} else {
|
171
188
|
content = `/* unused harmony default export */ var ${name} = `;
|
172
189
|
}
|
@@ -11,8 +11,15 @@ 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 HarmonyExportHeaderDependency extends NullDependency {
|
19
|
+
/**
|
20
|
+
* @param {Range} range range
|
21
|
+
* @param {Range} rangeStatement range statement
|
22
|
+
*/
|
16
23
|
constructor(range, rangeStatement) {
|
17
24
|
super();
|
18
25
|
this.range = range;
|
@@ -23,6 +30,9 @@ class HarmonyExportHeaderDependency extends NullDependency {
|
|
23
30
|
return "harmony export header";
|
24
31
|
}
|
25
32
|
|
33
|
+
/**
|
34
|
+
* @param {ObjectSerializerContext} context context
|
35
|
+
*/
|
26
36
|
serialize(context) {
|
27
37
|
const { write } = context;
|
28
38
|
write(this.range);
|
@@ -30,6 +40,9 @@ class HarmonyExportHeaderDependency extends NullDependency {
|
|
30
40
|
super.serialize(context);
|
31
41
|
}
|
32
42
|
|
43
|
+
/**
|
44
|
+
* @param {ObjectDeserializerContext} context context
|
45
|
+
*/
|
33
46
|
deserialize(context) {
|
34
47
|
const { read } = context;
|
35
48
|
this.range = read();
|