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
@@ -15,6 +15,7 @@ const { countIterable } = require("../util/IterableHelpers");
|
|
15
15
|
const { first, combine } = require("../util/SetHelpers");
|
16
16
|
const makeSerializable = require("../util/makeSerializable");
|
17
17
|
const propertyAccess = require("../util/propertyAccess");
|
18
|
+
const { propertyName } = require("../util/propertyName");
|
18
19
|
const { getRuntimeKey, keyToRuntime } = require("../util/runtime");
|
19
20
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
20
21
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
@@ -35,6 +36,9 @@ const processExportInfo = require("./processExportInfo");
|
|
35
36
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
36
37
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
37
38
|
/** @typedef {import("../WebpackError")} WebpackError */
|
39
|
+
/** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
|
40
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
41
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
38
42
|
/** @typedef {import("../util/Hash")} Hash */
|
39
43
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
40
44
|
|
@@ -326,10 +330,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
326
330
|
* @param {string[]} ids the requested export name of the imported module
|
327
331
|
* @param {string | null} name the export name of for this module
|
328
332
|
* @param {Set<string>} activeExports other named exports in the module
|
329
|
-
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency>} otherStarExports other star exports in the module before this import
|
333
|
+
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
|
330
334
|
* @param {number} exportPresenceMode mode of checking export names
|
331
|
-
* @param {HarmonyStarExportsList} allStarExports all star exports in the module
|
332
|
-
* @param {
|
335
|
+
* @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
|
336
|
+
* @param {Assertions=} assertions import assertions
|
333
337
|
*/
|
334
338
|
constructor(
|
335
339
|
request,
|
@@ -752,7 +756,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
752
756
|
/**
|
753
757
|
* Returns warnings
|
754
758
|
* @param {ModuleGraph} moduleGraph module graph
|
755
|
-
* @returns {WebpackError[]} warnings
|
759
|
+
* @returns {WebpackError[] | null | undefined} warnings
|
756
760
|
*/
|
757
761
|
getWarnings(moduleGraph) {
|
758
762
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -765,7 +769,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
765
769
|
/**
|
766
770
|
* Returns errors
|
767
771
|
* @param {ModuleGraph} moduleGraph module graph
|
768
|
-
* @returns {WebpackError[]} errors
|
772
|
+
* @returns {WebpackError[] | null | undefined} errors
|
769
773
|
*/
|
770
774
|
getErrors(moduleGraph) {
|
771
775
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -856,6 +860,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
856
860
|
return errors;
|
857
861
|
}
|
858
862
|
|
863
|
+
/**
|
864
|
+
* @param {ObjectSerializerContext} context context
|
865
|
+
*/
|
859
866
|
serialize(context) {
|
860
867
|
const { write, setCircularReference } = context;
|
861
868
|
|
@@ -870,6 +877,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
870
877
|
super.serialize(context);
|
871
878
|
}
|
872
879
|
|
880
|
+
/**
|
881
|
+
* @param {ObjectDeserializerContext} context context
|
882
|
+
*/
|
873
883
|
deserialize(context) {
|
874
884
|
const { read, setCircularReference } = context;
|
875
885
|
|
@@ -1211,7 +1221,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
1211
1221
|
valueKey[0]
|
1212
1222
|
)})) ${
|
1213
1223
|
RuntimeGlobals.definePropertyGetters
|
1214
|
-
}(${exportsName}, { ${
|
1224
|
+
}(${exportsName}, { ${propertyName(
|
1215
1225
|
key
|
1216
1226
|
)}: function() { return ${returnValue}; } });\n`;
|
1217
1227
|
}
|
@@ -1251,11 +1261,17 @@ class HarmonyStarExportsList {
|
|
1251
1261
|
return this.dependencies.slice();
|
1252
1262
|
}
|
1253
1263
|
|
1264
|
+
/**
|
1265
|
+
* @param {ObjectSerializerContext} context context
|
1266
|
+
*/
|
1254
1267
|
serialize({ write, setCircularReference }) {
|
1255
1268
|
setCircularReference(this);
|
1256
1269
|
write(this.dependencies);
|
1257
1270
|
}
|
1258
1271
|
|
1272
|
+
/**
|
1273
|
+
* @param {ObjectDeserializerContext} context context
|
1274
|
+
*/
|
1259
1275
|
deserialize({ read, setCircularReference }) {
|
1260
1276
|
setCircularReference(this);
|
1261
1277
|
this.dependencies = read();
|
@@ -8,6 +8,7 @@
|
|
8
8
|
const InitFragment = require("../InitFragment");
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
10
|
const { first } = require("../util/SetHelpers");
|
11
|
+
const { propertyName } = require("../util/propertyName");
|
11
12
|
|
12
13
|
/** @typedef {import("webpack-sources").Source} Source */
|
13
14
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
@@ -150,7 +151,7 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
150
151
|
);
|
151
152
|
for (const [key, value] of orderedExportMap) {
|
152
153
|
definitions.push(
|
153
|
-
`\n/* harmony export */ ${
|
154
|
+
`\n/* harmony export */ ${propertyName(
|
154
155
|
key
|
155
156
|
)}: ${runtimeTemplate.returningFunction(value)}`
|
156
157
|
);
|
@@ -15,8 +15,14 @@ const NullDependency = require("./NullDependency");
|
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
17
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
18
20
|
|
19
21
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
22
|
+
/**
|
23
|
+
* @param {TODO} id id
|
24
|
+
* @param {TODO} name name
|
25
|
+
*/
|
20
26
|
constructor(id, name) {
|
21
27
|
super();
|
22
28
|
this.id = id;
|
@@ -49,6 +55,9 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
49
55
|
return false;
|
50
56
|
}
|
51
57
|
|
58
|
+
/**
|
59
|
+
* @param {ObjectSerializerContext} context context
|
60
|
+
*/
|
52
61
|
serialize(context) {
|
53
62
|
const { write } = context;
|
54
63
|
write(this.id);
|
@@ -56,6 +65,9 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
56
65
|
super.serialize(context);
|
57
66
|
}
|
58
67
|
|
68
|
+
/**
|
69
|
+
* @param {ObjectDeserializerContext} context context
|
70
|
+
*/
|
59
71
|
deserialize(context) {
|
60
72
|
const { read } = context;
|
61
73
|
this.id = read();
|
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
|
+
|
10
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
11
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
8
12
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
9
13
|
|
10
14
|
/** @type {WeakMap<ParserState, boolean>} */
|
@@ -20,12 +24,14 @@ exports.enable = (parserState, isStrictHarmony) => {
|
|
20
24
|
if (value === false) return;
|
21
25
|
parserStateExportsState.set(parserState, true);
|
22
26
|
if (value !== true) {
|
23
|
-
parserState.module.buildMeta
|
24
|
-
|
25
|
-
parserState.module.buildInfo
|
27
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
28
|
+
buildMeta.exportsType = "namespace";
|
29
|
+
const buildInfo = /** @type {BuildInfo} */ (parserState.module.buildInfo);
|
30
|
+
buildInfo.strict = true;
|
31
|
+
buildInfo.exportsArgument = RuntimeGlobals.exports;
|
26
32
|
if (isStrictHarmony) {
|
27
|
-
|
28
|
-
|
33
|
+
buildMeta.strictHarmonyModule = true;
|
34
|
+
buildInfo.moduleArgument = "__webpack_module__";
|
29
35
|
}
|
30
36
|
}
|
31
37
|
};
|
@@ -24,6 +24,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
24
24
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
25
25
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
26
26
|
/** @typedef {import("../WebpackError")} WebpackError */
|
27
|
+
/** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
|
28
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
29
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
27
30
|
/** @typedef {import("../util/Hash")} Hash */
|
28
31
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
29
32
|
|
@@ -53,7 +56,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
53
56
|
*
|
54
57
|
* @param {string} request request string
|
55
58
|
* @param {number} sourceOrder source order
|
56
|
-
* @param {
|
59
|
+
* @param {Assertions=} assertions import assertions
|
57
60
|
*/
|
58
61
|
constructor(request, sourceOrder, assertions) {
|
59
62
|
super(request);
|
@@ -221,6 +224,9 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
221
224
|
}
|
222
225
|
}
|
223
226
|
|
227
|
+
/**
|
228
|
+
* @param {ObjectSerializerContext} context context
|
229
|
+
*/
|
224
230
|
serialize(context) {
|
225
231
|
const { write } = context;
|
226
232
|
write(this.sourceOrder);
|
@@ -228,6 +234,9 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
228
234
|
super.serialize(context);
|
229
235
|
}
|
230
236
|
|
237
|
+
/**
|
238
|
+
* @param {ObjectDeserializerContext} context context
|
239
|
+
*/
|
231
240
|
deserialize(context) {
|
232
241
|
const { read } = context;
|
233
242
|
this.sourceOrder = read();
|
@@ -21,8 +21,12 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
21
21
|
/** @typedef {import("estree").Identifier} Identifier */
|
22
22
|
/** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
|
23
23
|
/** @typedef {import("estree").ImportExpression} ImportExpression */
|
24
|
+
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
24
25
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
26
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
27
|
+
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
25
28
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
29
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
26
30
|
/** @typedef {import("../optimize/InnerGraph").InnerGraph} InnerGraph */
|
27
31
|
/** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
|
28
32
|
/** @typedef {import("./HarmonyImportDependency")} HarmonyImportDependency */
|
@@ -113,19 +117,21 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
113
117
|
parser.state.lastHarmonyImportOrder =
|
114
118
|
(parser.state.lastHarmonyImportOrder || 0) + 1;
|
115
119
|
const clearDep = new ConstDependency(
|
116
|
-
parser.isAsiPosition(statement.range[0])
|
117
|
-
|
120
|
+
parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
|
121
|
+
? ";"
|
122
|
+
: "",
|
123
|
+
/** @type {Range} */ (statement.range)
|
118
124
|
);
|
119
|
-
clearDep.loc = statement.loc;
|
125
|
+
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
120
126
|
parser.state.module.addPresentationalDependency(clearDep);
|
121
|
-
parser.unsetAsiPosition(statement.range[1]);
|
127
|
+
parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
122
128
|
const assertions = getAssertions(statement);
|
123
129
|
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
124
130
|
source,
|
125
131
|
parser.state.lastHarmonyImportOrder,
|
126
132
|
assertions
|
127
133
|
);
|
128
|
-
sideEffectDep.loc = statement.loc;
|
134
|
+
sideEffectDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
129
135
|
parser.state.module.addDependency(sideEffectDep);
|
130
136
|
return true;
|
131
137
|
}
|
@@ -159,6 +165,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
159
165
|
|
160
166
|
const rootInfo = rightPart.rootInfo;
|
161
167
|
if (
|
168
|
+
typeof rootInfo === "string" ||
|
162
169
|
!rootInfo ||
|
163
170
|
!rootInfo.tagInfo ||
|
164
171
|
rootInfo.tagInfo.tag !== harmonySpecifierTag
|
@@ -171,13 +178,15 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
171
178
|
settings.sourceOrder,
|
172
179
|
settings.ids.concat(members).concat([leftPart]),
|
173
180
|
settings.name,
|
174
|
-
expression.range,
|
181
|
+
/** @type {Range} */ (expression.range),
|
175
182
|
settings.assertions,
|
176
183
|
"in"
|
177
184
|
);
|
178
185
|
dep.directImport = members.length === 0;
|
179
|
-
dep.asiSafe = !parser.isAsiPosition(
|
180
|
-
|
186
|
+
dep.asiSafe = !parser.isAsiPosition(
|
187
|
+
/** @type {Range} */ (expression.range)[0]
|
188
|
+
);
|
189
|
+
dep.loc = /** @type {DependencyLocation} */ (expression.loc);
|
181
190
|
parser.state.module.addDependency(dep);
|
182
191
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
183
192
|
return true;
|
@@ -192,14 +201,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
192
201
|
settings.sourceOrder,
|
193
202
|
settings.ids,
|
194
203
|
settings.name,
|
195
|
-
expr.range,
|
204
|
+
/** @type {Range} */ (expr.range),
|
196
205
|
exportPresenceMode,
|
197
|
-
settings.assertions
|
206
|
+
settings.assertions,
|
207
|
+
[]
|
198
208
|
);
|
209
|
+
dep.referencedPropertiesInDestructuring =
|
210
|
+
parser.destructuringAssignmentPropertiesFor(expr);
|
199
211
|
dep.shorthand = parser.scope.inShorthand;
|
200
212
|
dep.directImport = true;
|
201
|
-
dep.asiSafe = !parser.isAsiPosition(
|
202
|
-
|
213
|
+
dep.asiSafe = !parser.isAsiPosition(
|
214
|
+
/** @type {Range} */ (expr.range)[0]
|
215
|
+
);
|
216
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
217
|
+
dep.call = parser.scope.inTaggedTemplateTag;
|
203
218
|
parser.state.module.addDependency(dep);
|
204
219
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
205
220
|
return true;
|
@@ -208,7 +223,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
208
223
|
.for(harmonySpecifierTag)
|
209
224
|
.tap(
|
210
225
|
"HarmonyImportDependencyParserPlugin",
|
211
|
-
(expression, members, membersOptionals) => {
|
226
|
+
(expression, members, membersOptionals, memberRanges) => {
|
212
227
|
const settings = /** @type {HarmonySettings} */ (
|
213
228
|
parser.currentTagData
|
214
229
|
);
|
@@ -216,6 +231,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
216
231
|
members,
|
217
232
|
membersOptionals
|
218
233
|
);
|
234
|
+
const ranges = memberRanges.slice(
|
235
|
+
0,
|
236
|
+
memberRanges.length - (members.length - nonOptionalMembers.length)
|
237
|
+
);
|
219
238
|
const expr =
|
220
239
|
nonOptionalMembers !== members
|
221
240
|
? getNonOptionalMemberChain(
|
@@ -229,12 +248,17 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
229
248
|
settings.sourceOrder,
|
230
249
|
ids,
|
231
250
|
settings.name,
|
232
|
-
expr.range,
|
251
|
+
/** @type {Range} */ (expr.range),
|
233
252
|
exportPresenceMode,
|
234
|
-
settings.assertions
|
253
|
+
settings.assertions,
|
254
|
+
ranges
|
235
255
|
);
|
236
|
-
dep.
|
237
|
-
|
256
|
+
dep.referencedPropertiesInDestructuring =
|
257
|
+
parser.destructuringAssignmentPropertiesFor(expr);
|
258
|
+
dep.asiSafe = !parser.isAsiPosition(
|
259
|
+
/** @type {Range} */ (expr.range)[0]
|
260
|
+
);
|
261
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
238
262
|
parser.state.module.addDependency(dep);
|
239
263
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
240
264
|
return true;
|
@@ -244,7 +268,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
244
268
|
.for(harmonySpecifierTag)
|
245
269
|
.tap(
|
246
270
|
"HarmonyImportDependencyParserPlugin",
|
247
|
-
(expression, members, membersOptionals) => {
|
271
|
+
(expression, members, membersOptionals, memberRanges) => {
|
248
272
|
const { arguments: args, callee } = expression;
|
249
273
|
const settings = /** @type {HarmonySettings} */ (
|
250
274
|
parser.currentTagData
|
@@ -253,6 +277,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
253
277
|
members,
|
254
278
|
membersOptionals
|
255
279
|
);
|
280
|
+
const ranges = memberRanges.slice(
|
281
|
+
0,
|
282
|
+
memberRanges.length - (members.length - nonOptionalMembers.length)
|
283
|
+
);
|
256
284
|
const expr =
|
257
285
|
nonOptionalMembers !== members
|
258
286
|
? getNonOptionalMemberChain(
|
@@ -266,17 +294,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
266
294
|
settings.sourceOrder,
|
267
295
|
ids,
|
268
296
|
settings.name,
|
269
|
-
expr.range,
|
297
|
+
/** @type {Range} */ (expr.range),
|
270
298
|
exportPresenceMode,
|
271
|
-
settings.assertions
|
299
|
+
settings.assertions,
|
300
|
+
ranges
|
272
301
|
);
|
273
302
|
dep.directImport = members.length === 0;
|
274
303
|
dep.call = true;
|
275
|
-
dep.asiSafe = !parser.isAsiPosition(
|
304
|
+
dep.asiSafe = !parser.isAsiPosition(
|
305
|
+
/** @type {Range} */ (expr.range)[0]
|
306
|
+
);
|
276
307
|
// only in case when we strictly follow the spec we need a special case here
|
277
308
|
dep.namespaceObjectAsContext =
|
278
309
|
members.length > 0 && this.strictThisContextOnImports;
|
279
|
-
dep.loc = expr.loc;
|
310
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
280
311
|
parser.state.module.addDependency(dep);
|
281
312
|
if (args) parser.walkExpressions(args);
|
282
313
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
@@ -11,15 +11,20 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
14
|
-
/** @typedef {import("../InitFragment")} InitFragment */
|
15
14
|
/** @typedef {import("../Module")} Module */
|
16
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
16
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
18
17
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
18
|
+
/** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
|
19
19
|
/** @typedef {import("../util/Hash")} Hash */
|
20
20
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
21
21
|
|
22
22
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
23
|
+
/**
|
24
|
+
* @param {TODO} request the request string
|
25
|
+
* @param {number} sourceOrder source order
|
26
|
+
* @param {Assertions=} assertions assertions
|
27
|
+
*/
|
23
28
|
constructor(request, sourceOrder, assertions) {
|
24
29
|
super(request, sourceOrder, assertions);
|
25
30
|
}
|
@@ -68,7 +73,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
68
73
|
apply(dependency, source, templateContext) {
|
69
74
|
const { moduleGraph, concatenationScope } = templateContext;
|
70
75
|
if (concatenationScope) {
|
71
|
-
const module = moduleGraph.getModule(dependency);
|
76
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
|
72
77
|
if (concatenationScope.isModuleInScope(module)) {
|
73
78
|
return;
|
74
79
|
}
|