webpack 5.97.1 → 5.104.1
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.
- package/README.md +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -12,35 +12,41 @@ const HarmonyLinkingError = require("../HarmonyLinkingError");
|
|
|
12
12
|
const InitFragment = require("../InitFragment");
|
|
13
13
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
14
14
|
const Template = require("../Template");
|
|
15
|
+
const {
|
|
16
|
+
getMakeDeferredNamespaceModeFromExportsType
|
|
17
|
+
} = require("../runtime/MakeDeferredNamespaceObjectRuntime");
|
|
15
18
|
const { countIterable } = require("../util/IterableHelpers");
|
|
16
|
-
const {
|
|
19
|
+
const { combine, first } = require("../util/SetHelpers");
|
|
17
20
|
const makeSerializable = require("../util/makeSerializable");
|
|
18
21
|
const propertyAccess = require("../util/propertyAccess");
|
|
19
22
|
const { propertyName } = require("../util/propertyName");
|
|
20
23
|
const {
|
|
24
|
+
filterRuntime,
|
|
21
25
|
getRuntimeKey,
|
|
22
|
-
keyToRuntime
|
|
23
|
-
filterRuntime
|
|
26
|
+
keyToRuntime
|
|
24
27
|
} = require("../util/runtime");
|
|
25
28
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
|
26
29
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
30
|
+
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
27
31
|
const processExportInfo = require("./processExportInfo");
|
|
28
32
|
|
|
29
33
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
30
34
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
31
35
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
|
32
36
|
/** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
|
|
33
|
-
/** @typedef {import("../Dependency").
|
|
37
|
+
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
38
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
34
39
|
/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
|
|
35
|
-
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
|
36
40
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
37
41
|
/** @typedef {import("../ExportsInfo")} ExportsInfo */
|
|
38
42
|
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
|
43
|
+
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
39
44
|
/** @typedef {import("../ExportsInfo").UsedName} UsedName */
|
|
40
45
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
41
46
|
/** @typedef {import("../Module")} Module */
|
|
42
47
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
43
48
|
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
49
|
+
/** @typedef {import("../Module").ExportsType} ExportsType */
|
|
44
50
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
45
51
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
46
52
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
@@ -49,11 +55,12 @@ const processExportInfo = require("./processExportInfo");
|
|
|
49
55
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
50
56
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
51
57
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
52
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
53
58
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
54
|
-
/** @typedef {import("./
|
|
59
|
+
/** @typedef {import("./HarmonyImportDependency").Ids} Ids */
|
|
60
|
+
/** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
|
|
61
|
+
/** @typedef {import("../dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
55
62
|
|
|
56
|
-
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-dynamic-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-fake-namespace-object"|"reexport-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
|
|
63
|
+
/** @typedef {"missing" | "unused" | "empty-star" | "reexport-dynamic-default" | "reexport-named-default" | "reexport-namespace-object" | "reexport-fake-namespace-object" | "reexport-undefined" | "normal-reexport" | "dynamic-reexport"} ExportModeType */
|
|
57
64
|
|
|
58
65
|
const { ExportPresenceModes } = HarmonyImportDependency;
|
|
59
66
|
|
|
@@ -62,7 +69,7 @@ const idsSymbol = Symbol("HarmonyExportImportedSpecifierDependency.ids");
|
|
|
62
69
|
class NormalReexportItem {
|
|
63
70
|
/**
|
|
64
71
|
* @param {string} name export name
|
|
65
|
-
* @param {
|
|
72
|
+
* @param {Ids} ids reexported ids from other module
|
|
66
73
|
* @param {ExportInfo} exportInfo export info from other module
|
|
67
74
|
* @param {boolean} checked true, if it should be checked at runtime if this export exists
|
|
68
75
|
* @param {boolean} hidden true, if it is hidden behind another active export in the same module
|
|
@@ -115,23 +122,26 @@ class ExportMode {
|
|
|
115
122
|
}
|
|
116
123
|
}
|
|
117
124
|
|
|
125
|
+
/** @typedef {number[]} DependencyIndices */
|
|
126
|
+
|
|
118
127
|
/**
|
|
119
128
|
* @param {ModuleGraph} moduleGraph module graph
|
|
120
|
-
* @param {
|
|
121
|
-
* @param {
|
|
122
|
-
* @returns {
|
|
129
|
+
* @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
|
|
130
|
+
* @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
|
|
131
|
+
* @returns {{ names: ExportInfoName[], dependencyIndices: DependencyIndices }} result
|
|
123
132
|
*/
|
|
124
133
|
const determineExportAssignments = (
|
|
125
134
|
moduleGraph,
|
|
126
135
|
dependencies,
|
|
127
136
|
additionalDependency
|
|
128
137
|
) => {
|
|
138
|
+
/** @type {Set<ExportInfoName>} */
|
|
129
139
|
const names = new Set();
|
|
130
|
-
/** @type {
|
|
140
|
+
/** @type {DependencyIndices} */
|
|
131
141
|
const dependencyIndices = [];
|
|
132
142
|
|
|
133
143
|
if (additionalDependency) {
|
|
134
|
-
dependencies = dependencies
|
|
144
|
+
dependencies = [...dependencies, additionalDependency];
|
|
135
145
|
}
|
|
136
146
|
|
|
137
147
|
for (const dep of dependencies) {
|
|
@@ -154,9 +164,17 @@ const determineExportAssignments = (
|
|
|
154
164
|
}
|
|
155
165
|
dependencyIndices.push(names.size);
|
|
156
166
|
|
|
157
|
-
return { names:
|
|
167
|
+
return { names: [...names], dependencyIndices };
|
|
158
168
|
};
|
|
159
169
|
|
|
170
|
+
/**
|
|
171
|
+
* @param {object} options options
|
|
172
|
+
* @param {ExportInfoName[]} options.names names
|
|
173
|
+
* @param {DependencyIndices} options.dependencyIndices dependency indices
|
|
174
|
+
* @param {string} name name
|
|
175
|
+
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency>} dependencies dependencies
|
|
176
|
+
* @returns {HarmonyExportImportedSpecifierDependency | undefined} found dependency or nothing
|
|
177
|
+
*/
|
|
160
178
|
const findDependencyForName = (
|
|
161
179
|
{ names, dependencyIndices },
|
|
162
180
|
name,
|
|
@@ -214,7 +232,8 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
214
232
|
|
|
215
233
|
const importedExportsType = importedModule.getExportsType(
|
|
216
234
|
moduleGraph,
|
|
217
|
-
/** @type {BuildMeta} */
|
|
235
|
+
/** @type {BuildMeta} */
|
|
236
|
+
(parentModule.buildMeta).strictHarmonyModule
|
|
218
237
|
);
|
|
219
238
|
|
|
220
239
|
const ids = dep.getIds(moduleGraph);
|
|
@@ -289,7 +308,6 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
289
308
|
}
|
|
290
309
|
|
|
291
310
|
// Star reexporting
|
|
292
|
-
|
|
293
311
|
const { ignoredExports, exports, checked, hidden } = dep.getStarReexports(
|
|
294
312
|
moduleGraph,
|
|
295
313
|
runtime,
|
|
@@ -318,12 +336,12 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
318
336
|
|
|
319
337
|
mode.items = Array.from(
|
|
320
338
|
exports,
|
|
321
|
-
exportName =>
|
|
339
|
+
(exportName) =>
|
|
322
340
|
new NormalReexportItem(
|
|
323
341
|
exportName,
|
|
324
342
|
[exportName],
|
|
325
343
|
exportsInfo.getReadOnlyExportInfo(exportName),
|
|
326
|
-
/** @type {
|
|
344
|
+
/** @type {Checked} */
|
|
327
345
|
(checked).has(exportName),
|
|
328
346
|
false
|
|
329
347
|
)
|
|
@@ -345,7 +363,6 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
345
363
|
return mode;
|
|
346
364
|
};
|
|
347
365
|
|
|
348
|
-
/** @typedef {string[]} Ids */
|
|
349
366
|
/** @typedef {Set<string>} Exports */
|
|
350
367
|
/** @typedef {Set<string>} Checked */
|
|
351
368
|
/** @typedef {Set<string>} Hidden */
|
|
@@ -358,9 +375,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
358
375
|
* @param {Ids} ids the requested export name of the imported module
|
|
359
376
|
* @param {string | null} name the export name of for this module
|
|
360
377
|
* @param {Set<string>} activeExports other named exports in the module
|
|
361
|
-
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> |
|
|
362
|
-
* @param {
|
|
378
|
+
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
|
|
379
|
+
* @param {ExportPresenceMode} exportPresenceMode mode of checking export names
|
|
363
380
|
* @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
|
|
381
|
+
* @param {ImportPhaseType} phase import phase
|
|
364
382
|
* @param {ImportAttributes=} attributes import attributes
|
|
365
383
|
*/
|
|
366
384
|
constructor(
|
|
@@ -372,9 +390,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
372
390
|
otherStarExports,
|
|
373
391
|
exportPresenceMode,
|
|
374
392
|
allStarExports,
|
|
393
|
+
phase,
|
|
375
394
|
attributes
|
|
376
395
|
) {
|
|
377
|
-
super(request, sourceOrder, attributes);
|
|
396
|
+
super(request, sourceOrder, phase, attributes);
|
|
378
397
|
|
|
379
398
|
this.ids = ids;
|
|
380
399
|
this.name = name;
|
|
@@ -424,8 +443,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
424
443
|
* @returns {void}
|
|
425
444
|
*/
|
|
426
445
|
setIds(moduleGraph, ids) {
|
|
427
|
-
|
|
428
|
-
(moduleGraph.getMeta(this))[idsSymbol] = ids;
|
|
446
|
+
moduleGraph.getMeta(this)[idsSymbol] = ids;
|
|
429
447
|
}
|
|
430
448
|
|
|
431
449
|
/**
|
|
@@ -498,7 +516,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
498
516
|
importedExportsInfo.getReadOnlyExportInfo(name);
|
|
499
517
|
if (importedExportInfo.provided === false) continue;
|
|
500
518
|
if (hiddenExports !== undefined && hiddenExports.has(name)) {
|
|
501
|
-
/** @type {
|
|
519
|
+
/** @type {Hidden} */
|
|
502
520
|
(hidden).add(name);
|
|
503
521
|
continue;
|
|
504
522
|
}
|
|
@@ -550,7 +568,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
550
568
|
* Returns list of exports referenced by this dependency
|
|
551
569
|
* @param {ModuleGraph} moduleGraph module graph
|
|
552
570
|
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
553
|
-
* @returns {
|
|
571
|
+
* @returns {ReferencedExports} referenced exports
|
|
554
572
|
*/
|
|
555
573
|
getReferencedExports(moduleGraph, runtime) {
|
|
556
574
|
const mode = this.getMode(moduleGraph, runtime);
|
|
@@ -566,9 +584,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
566
584
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
567
585
|
|
|
568
586
|
case "reexport-named-default": {
|
|
569
|
-
if (!mode.partialNamespaceExportInfo)
|
|
587
|
+
if (!mode.partialNamespaceExportInfo) {
|
|
570
588
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
571
|
-
|
|
589
|
+
}
|
|
590
|
+
/** @type {RawReferencedExports} */
|
|
572
591
|
const referencedExports = [];
|
|
573
592
|
processExportInfo(
|
|
574
593
|
runtime,
|
|
@@ -581,9 +600,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
581
600
|
|
|
582
601
|
case "reexport-namespace-object":
|
|
583
602
|
case "reexport-fake-namespace-object": {
|
|
584
|
-
if (!mode.partialNamespaceExportInfo)
|
|
603
|
+
if (!mode.partialNamespaceExportInfo) {
|
|
585
604
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
586
|
-
|
|
605
|
+
}
|
|
606
|
+
/** @type {RawReferencedExports} */
|
|
587
607
|
const referencedExports = [];
|
|
588
608
|
processExportInfo(
|
|
589
609
|
runtime,
|
|
@@ -599,7 +619,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
599
619
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
600
620
|
|
|
601
621
|
case "normal-reexport": {
|
|
602
|
-
/** @type {
|
|
622
|
+
/** @type {RawReferencedExports} */
|
|
603
623
|
const referencedExports = [];
|
|
604
624
|
for (const {
|
|
605
625
|
ids,
|
|
@@ -619,7 +639,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
619
639
|
|
|
620
640
|
/**
|
|
621
641
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
622
|
-
* @returns {{ names:
|
|
642
|
+
* @returns {{ names: ExportInfoName[], namesSlice: number, dependencyIndices: DependencyIndices, dependencyIndex: number } | undefined} exported names and their origin dependency
|
|
623
643
|
*/
|
|
624
644
|
_discoverActiveExportsFromOtherStarExports(moduleGraph) {
|
|
625
645
|
if (!this.otherStarExports) return;
|
|
@@ -646,7 +666,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
646
666
|
|
|
647
667
|
const { names, dependencyIndices } = moduleGraph.cached(
|
|
648
668
|
determineExportAssignments,
|
|
649
|
-
|
|
669
|
+
/** @type {HarmonyExportImportedSpecifierDependency[]} */
|
|
670
|
+
(this.otherStarExports),
|
|
650
671
|
this
|
|
651
672
|
);
|
|
652
673
|
|
|
@@ -701,7 +722,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
701
722
|
return {
|
|
702
723
|
exports: Array.from(
|
|
703
724
|
/** @type {NormalReexportItem[]} */ (mode.items),
|
|
704
|
-
item => ({
|
|
725
|
+
(item) => ({
|
|
705
726
|
name: item.name,
|
|
706
727
|
from,
|
|
707
728
|
export: item.ids,
|
|
@@ -796,11 +817,12 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
796
817
|
|
|
797
818
|
/**
|
|
798
819
|
* @param {ModuleGraph} moduleGraph module graph
|
|
799
|
-
* @returns {
|
|
820
|
+
* @returns {ExportPresenceMode} effective mode
|
|
800
821
|
*/
|
|
801
822
|
_getEffectiveExportPresenceLevel(moduleGraph) {
|
|
802
|
-
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
|
|
823
|
+
if (this.exportPresenceMode !== ExportPresenceModes.AUTO) {
|
|
803
824
|
return this.exportPresenceMode;
|
|
825
|
+
}
|
|
804
826
|
const module = /** @type {Module} */ (moduleGraph.getParentModule(this));
|
|
805
827
|
return /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule
|
|
806
828
|
? ExportPresenceModes.ERROR
|
|
@@ -859,7 +881,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
859
881
|
const importedModule = moduleGraph.getModule(this);
|
|
860
882
|
if (importedModule) {
|
|
861
883
|
const exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
862
|
-
/** @type {Map<string,
|
|
884
|
+
/** @type {Map<string, ExportInfoName[]>} */
|
|
863
885
|
const conflicts = new Map();
|
|
864
886
|
for (const exportInfo of exportsInfo.orderedExports) {
|
|
865
887
|
if (exportInfo.provided !== true) continue;
|
|
@@ -871,7 +893,11 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
871
893
|
exportInfo.name,
|
|
872
894
|
this.allStarExports
|
|
873
895
|
? this.allStarExports.dependencies
|
|
874
|
-
: [
|
|
896
|
+
: [
|
|
897
|
+
.../** @type {ReadonlyArray<HarmonyExportImportedSpecifierDependency>} */
|
|
898
|
+
(this.otherStarExports),
|
|
899
|
+
this
|
|
900
|
+
]
|
|
875
901
|
);
|
|
876
902
|
if (!conflictingDependency) continue;
|
|
877
903
|
const target = exportInfo.getTerminalBinding(moduleGraph);
|
|
@@ -904,7 +930,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
904
930
|
}' contains conflicting star exports for the ${
|
|
905
931
|
exports.length > 1 ? "names" : "name"
|
|
906
932
|
} ${exports
|
|
907
|
-
.map(e => `'${e}'`)
|
|
933
|
+
.map((e) => `'${e}'`)
|
|
908
934
|
.join(", ")} with the previous requested module '${request}'`
|
|
909
935
|
)
|
|
910
936
|
);
|
|
@@ -955,8 +981,6 @@ makeSerializable(
|
|
|
955
981
|
"webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency"
|
|
956
982
|
);
|
|
957
983
|
|
|
958
|
-
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
959
|
-
|
|
960
984
|
HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedSpecifierDependencyTemplate extends (
|
|
961
985
|
HarmonyImportDependency.Template
|
|
962
986
|
) {
|
|
@@ -995,6 +1019,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
995
1019
|
mode,
|
|
996
1020
|
templateContext.module,
|
|
997
1021
|
moduleGraph,
|
|
1022
|
+
templateContext.chunkGraph,
|
|
998
1023
|
runtime,
|
|
999
1024
|
templateContext.runtimeTemplate,
|
|
1000
1025
|
templateContext.runtimeRequirements
|
|
@@ -1008,6 +1033,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1008
1033
|
* @param {ExportMode} mode the export mode
|
|
1009
1034
|
* @param {Module} module the current module
|
|
1010
1035
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1036
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
1011
1037
|
* @param {RuntimeSpec} runtime the runtime
|
|
1012
1038
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
1013
1039
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
@@ -1019,13 +1045,39 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1019
1045
|
mode,
|
|
1020
1046
|
module,
|
|
1021
1047
|
moduleGraph,
|
|
1048
|
+
chunkGraph,
|
|
1022
1049
|
runtime,
|
|
1023
1050
|
runtimeTemplate,
|
|
1024
1051
|
runtimeRequirements
|
|
1025
1052
|
) {
|
|
1026
1053
|
const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
|
|
1027
1054
|
const importVar = dep.getImportVar(moduleGraph);
|
|
1028
|
-
|
|
1055
|
+
const isDeferred =
|
|
1056
|
+
ImportPhaseUtils.isDefer(dep.phase) &&
|
|
1057
|
+
!(/** @type {BuildMeta} */ (importedModule.buildMeta).async);
|
|
1058
|
+
|
|
1059
|
+
if (
|
|
1060
|
+
(mode.type === "reexport-namespace-object" ||
|
|
1061
|
+
mode.type === "reexport-fake-namespace-object") &&
|
|
1062
|
+
isDeferred
|
|
1063
|
+
) {
|
|
1064
|
+
initFragments.push(
|
|
1065
|
+
...this.getReexportDeferredNamespaceObjectFragments(
|
|
1066
|
+
importedModule,
|
|
1067
|
+
chunkGraph,
|
|
1068
|
+
moduleGraph
|
|
1069
|
+
.getExportsInfo(module)
|
|
1070
|
+
.getUsedName(mode.name ? mode.name : [], runtime),
|
|
1071
|
+
importVar,
|
|
1072
|
+
importedModule.getExportsType(
|
|
1073
|
+
moduleGraph,
|
|
1074
|
+
module.buildMeta && module.buildMeta.strictHarmonyModule
|
|
1075
|
+
),
|
|
1076
|
+
runtimeRequirements
|
|
1077
|
+
)
|
|
1078
|
+
);
|
|
1079
|
+
return;
|
|
1080
|
+
}
|
|
1029
1081
|
switch (mode.type) {
|
|
1030
1082
|
case "missing":
|
|
1031
1083
|
case "empty-star":
|
|
@@ -1138,7 +1190,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1138
1190
|
const runtimeCondition = dep.weak
|
|
1139
1191
|
? false
|
|
1140
1192
|
: connection
|
|
1141
|
-
? filterRuntime(runtime, r => connection.isTargetActive(r))
|
|
1193
|
+
? filterRuntime(runtime, (r) => connection.isTargetActive(r))
|
|
1142
1194
|
: true;
|
|
1143
1195
|
initFragments.push(
|
|
1144
1196
|
new ConditionalInitFragment(
|
|
@@ -1152,7 +1204,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1152
1204
|
moduleGraph.isAsync(importedModule)
|
|
1153
1205
|
? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
|
|
1154
1206
|
: InitFragment.STAGE_HARMONY_IMPORTS,
|
|
1155
|
-
dep.sourceOrder,
|
|
1207
|
+
/** @type {number} */ (dep.sourceOrder),
|
|
1156
1208
|
key,
|
|
1157
1209
|
runtimeCondition
|
|
1158
1210
|
)
|
|
@@ -1182,21 +1234,16 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1182
1234
|
mode.hidden
|
|
1183
1235
|
)
|
|
1184
1236
|
: /** @type {ExportModeIgnored} */ (mode.ignored);
|
|
1185
|
-
const modern =
|
|
1186
|
-
runtimeTemplate.supportsConst() &&
|
|
1187
|
-
runtimeTemplate.supportsArrowFunction();
|
|
1188
1237
|
let content =
|
|
1189
1238
|
"/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
|
|
1190
|
-
`/* harmony reexport (unknown) */ for(${
|
|
1191
|
-
modern ? "const" : "var"
|
|
1192
|
-
} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
|
|
1239
|
+
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
|
|
1193
1240
|
|
|
1194
1241
|
// Filter out exports which are defined by other exports
|
|
1195
1242
|
// and filter out default export because it cannot be reexported with *
|
|
1196
1243
|
if (ignored.size > 1) {
|
|
1197
|
-
content += `if(${JSON.stringify(
|
|
1198
|
-
|
|
1199
|
-
)}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
|
|
1244
|
+
content += `if(${JSON.stringify([
|
|
1245
|
+
...ignored
|
|
1246
|
+
])}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
|
|
1200
1247
|
} else if (ignored.size === 1) {
|
|
1201
1248
|
content += `if(__WEBPACK_IMPORT_KEY__ !== ${JSON.stringify(
|
|
1202
1249
|
first(ignored)
|
|
@@ -1204,9 +1251,11 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1204
1251
|
}
|
|
1205
1252
|
|
|
1206
1253
|
content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
|
|
1207
|
-
content +=
|
|
1208
|
-
|
|
1209
|
-
|
|
1254
|
+
content +=
|
|
1255
|
+
runtimeTemplate.supportsArrowFunction() &&
|
|
1256
|
+
runtimeTemplate.supportsConst()
|
|
1257
|
+
? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
|
|
1258
|
+
: `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
|
1210
1259
|
|
|
1211
1260
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
1212
1261
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
@@ -1218,7 +1267,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1218
1267
|
moduleGraph.isAsync(importedModule)
|
|
1219
1268
|
? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
|
|
1220
1269
|
: InitFragment.STAGE_HARMONY_IMPORTS,
|
|
1221
|
-
dep.sourceOrder
|
|
1270
|
+
/** @type {number} */ (dep.sourceOrder)
|
|
1222
1271
|
)
|
|
1223
1272
|
);
|
|
1224
1273
|
break;
|
|
@@ -1234,7 +1283,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1234
1283
|
* @param {string} comment comment
|
|
1235
1284
|
* @param {UsedName} key key
|
|
1236
1285
|
* @param {string} name name
|
|
1237
|
-
* @param {
|
|
1286
|
+
* @param {UsedName | null} valueKey value key
|
|
1238
1287
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
1239
1288
|
* @returns {HarmonyExportInitFragment} harmony export init fragment
|
|
1240
1289
|
*/
|
|
@@ -1259,7 +1308,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1259
1308
|
|
|
1260
1309
|
/**
|
|
1261
1310
|
* @param {Module} module module
|
|
1262
|
-
* @param {
|
|
1311
|
+
* @param {UsedName} key key
|
|
1263
1312
|
* @param {string} name name
|
|
1264
1313
|
* @param {number} fakeType fake type
|
|
1265
1314
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
@@ -1295,6 +1344,46 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1295
1344
|
];
|
|
1296
1345
|
}
|
|
1297
1346
|
|
|
1347
|
+
/**
|
|
1348
|
+
* @param {Module} module module
|
|
1349
|
+
* @param {ChunkGraph} chunkGraph chunkGraph
|
|
1350
|
+
* @param {UsedName} key key
|
|
1351
|
+
* @param {string} name name
|
|
1352
|
+
* @param {ExportsType} exportsType exportsType
|
|
1353
|
+
* @param {RuntimeRequirements} runtimeRequirements runtimeRequirements
|
|
1354
|
+
* @returns {InitFragment<GenerateContext>[]} fragments
|
|
1355
|
+
*/
|
|
1356
|
+
getReexportDeferredNamespaceObjectFragments(
|
|
1357
|
+
module,
|
|
1358
|
+
chunkGraph,
|
|
1359
|
+
key,
|
|
1360
|
+
name,
|
|
1361
|
+
exportsType,
|
|
1362
|
+
runtimeRequirements
|
|
1363
|
+
) {
|
|
1364
|
+
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
1365
|
+
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
1366
|
+
runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
|
|
1367
|
+
|
|
1368
|
+
const map = new Map();
|
|
1369
|
+
const moduleId = JSON.stringify(chunkGraph.getModuleId(module));
|
|
1370
|
+
const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
|
|
1371
|
+
map.set(
|
|
1372
|
+
key,
|
|
1373
|
+
`/* reexport deferred namespace object */ ${name}_deferred_namespace_cache || (${name}_deferred_namespace_cache = ${RuntimeGlobals.makeDeferredNamespaceObject}(${moduleId}, ${mode}))`
|
|
1374
|
+
);
|
|
1375
|
+
|
|
1376
|
+
return [
|
|
1377
|
+
new InitFragment(
|
|
1378
|
+
`var ${name}_deferred_namespace_cache;\n`,
|
|
1379
|
+
InitFragment.STAGE_CONSTANTS,
|
|
1380
|
+
-1,
|
|
1381
|
+
`${name}_deferred_namespace_cache`
|
|
1382
|
+
),
|
|
1383
|
+
new HarmonyExportInitFragment(module.exportsArgument, map)
|
|
1384
|
+
];
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1298
1387
|
/**
|
|
1299
1388
|
* @param {Module} module module
|
|
1300
1389
|
* @param {string} key key
|
|
@@ -1367,7 +1456,7 @@ class HarmonyStarExportsList {
|
|
|
1367
1456
|
}
|
|
1368
1457
|
|
|
1369
1458
|
slice() {
|
|
1370
|
-
return this.dependencies
|
|
1459
|
+
return [...this.dependencies];
|
|
1371
1460
|
}
|
|
1372
1461
|
|
|
1373
1462
|
/**
|
|
@@ -1393,4 +1482,6 @@ makeSerializable(
|
|
|
1393
1482
|
"HarmonyStarExportsList"
|
|
1394
1483
|
);
|
|
1395
1484
|
|
|
1485
|
+
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
1396
1486
|
module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
|
|
1487
|
+
module.exports.idsSymbol = idsSymbol;
|
|
@@ -17,7 +17,7 @@ const { propertyName } = require("../util/propertyName");
|
|
|
17
17
|
* @param {Iterable<string>} iterable iterable strings
|
|
18
18
|
* @returns {string} result
|
|
19
19
|
*/
|
|
20
|
-
const joinIterableWithComma = iterable => {
|
|
20
|
+
const joinIterableWithComma = (iterable) => {
|
|
21
21
|
// This is more performant than Array.from().join(", ")
|
|
22
22
|
// as it doesn't create an array
|
|
23
23
|
let str = "";
|
|
@@ -154,7 +154,7 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
154
154
|
? `/* unused harmony export ${first(this.unusedExports)} */\n`
|
|
155
155
|
: "";
|
|
156
156
|
const definitions = [];
|
|
157
|
-
const orderedExportMap =
|
|
157
|
+
const orderedExportMap = [...this.exportMap].sort(([a], [b]) =>
|
|
158
158
|
a < b ? -1 : 1
|
|
159
159
|
);
|
|
160
160
|
for (const [key, value] of orderedExportMap) {
|
|
@@ -20,8 +20,8 @@ const NullDependency = require("./NullDependency");
|
|
|
20
20
|
|
|
21
21
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
|
22
22
|
/**
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
23
|
+
* @param {string} id the id
|
|
24
|
+
* @param {string} name the name
|
|
25
25
|
*/
|
|
26
26
|
constructor(id, name) {
|
|
27
27
|
super();
|
|
@@ -9,13 +9,13 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
|
|
10
10
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
11
11
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
12
|
-
/** @typedef {import("../
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
|
|
13
13
|
|
|
14
|
-
/** @type {WeakMap<
|
|
14
|
+
/** @type {WeakMap<JavascriptParserState, boolean>} */
|
|
15
15
|
const parserStateExportsState = new WeakMap();
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* @param {
|
|
18
|
+
* @param {JavascriptParserState} parserState parser state
|
|
19
19
|
* @param {boolean} isStrictHarmony strict harmony mode should be enabled
|
|
20
20
|
* @returns {void}
|
|
21
21
|
*/
|
|
@@ -37,10 +37,10 @@ module.exports.enable = (parserState, isStrictHarmony) => {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* @param {
|
|
40
|
+
* @param {JavascriptParserState} parserState parser state
|
|
41
41
|
* @returns {boolean} true, when enabled
|
|
42
42
|
*/
|
|
43
|
-
module.exports.isEnabled = parserState => {
|
|
43
|
+
module.exports.isEnabled = (parserState) => {
|
|
44
44
|
const value = parserStateExportsState.get(parserState);
|
|
45
45
|
return value === true;
|
|
46
46
|
};
|