@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.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.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -34,41 +34,53 @@ const HarmonyLinkingError = require("./HarmonyLinkingError");
|
|
|
34
34
|
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
35
35
|
const processExportInfo = require("./processExportInfo");
|
|
36
36
|
|
|
37
|
-
/** @
|
|
38
|
-
/** @
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
/** @
|
|
51
|
-
/** @
|
|
52
|
-
/** @
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
/** @
|
|
37
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
38
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
39
|
+
/**
|
|
40
|
+
* @import {
|
|
41
|
+
* ExportsSpec,
|
|
42
|
+
* GetConditionFn,
|
|
43
|
+
* LazyUntil,
|
|
44
|
+
* RawReferencedExports,
|
|
45
|
+
* ReferencedExports,
|
|
46
|
+
* TRANSITIVE,
|
|
47
|
+
* ExportInfoName
|
|
48
|
+
* } from "../Dependency"
|
|
49
|
+
*/
|
|
50
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
51
|
+
/** @import ExportsInfo, { ExportInfo, UsedName } from "../ExportsInfo" */
|
|
52
|
+
/** @import { GenerateContext } from "../Generator" */
|
|
53
|
+
/**
|
|
54
|
+
* @import Module, {
|
|
55
|
+
* BuildMeta,
|
|
56
|
+
* RuntimeRequirements,
|
|
57
|
+
* ExportsType
|
|
58
|
+
* } from "../Module"
|
|
59
|
+
*/
|
|
60
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
61
|
+
/**
|
|
62
|
+
* @import ModuleGraphConnection, {
|
|
63
|
+
* ConnectionState
|
|
64
|
+
* } from "../ModuleGraphConnection"
|
|
65
|
+
*/
|
|
66
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
67
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
68
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
61
69
|
/** @typedef {[Ids, string | null, Set<string>, ReadonlyArray<HarmonyExportImportedSpecifierDependency> | null, ExportPresenceMode, HarmonyStarExportsList | null]} SerializedData */
|
|
62
70
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<SerializedData>} ObjectDeserializerContext */
|
|
63
71
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<SerializedData>} ObjectSerializerContext */
|
|
64
72
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListDeserializerContext */
|
|
65
73
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListSerializerContext */
|
|
66
|
-
/** @
|
|
67
|
-
/** @
|
|
68
|
-
/** @
|
|
69
|
-
/** @
|
|
70
|
-
/**
|
|
71
|
-
|
|
74
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
75
|
+
/** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
76
|
+
/** @import { ExportMap } from "./HarmonyExportInitFragment" */
|
|
77
|
+
/** @import { ImportPhaseType } from "../dependencies/ImportPhase" */
|
|
78
|
+
/**
|
|
79
|
+
* @import {
|
|
80
|
+
* JavascriptModuleBuildMeta
|
|
81
|
+
* } from "../javascript/JavascriptModule"
|
|
82
|
+
*/
|
|
83
|
+
/** @import ConcatenationScope from "../ConcatenationScope" */
|
|
72
84
|
|
|
73
85
|
/** @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 */
|
|
74
86
|
|
|
@@ -83,7 +95,7 @@ class NormalReexportItem {
|
|
|
83
95
|
* Creates an instance of NormalReexportItem.
|
|
84
96
|
* @param {string} name export name
|
|
85
97
|
* @param {Ids} ids reexported ids from other module
|
|
86
|
-
* @param {ExportInfo} exportInfo export info from other module
|
|
98
|
+
* @param {InstanceType<ExportInfo>} exportInfo export info from other module
|
|
87
99
|
* @param {boolean} checked true, if it should be checked at runtime if this export exists
|
|
88
100
|
* @param {boolean} hidden true, if it is hidden behind another active export in the same module
|
|
89
101
|
*/
|
|
@@ -92,7 +104,7 @@ class NormalReexportItem {
|
|
|
92
104
|
this.name = name;
|
|
93
105
|
/** @type {Ids} */
|
|
94
106
|
this.ids = ids;
|
|
95
|
-
/** @type {ExportInfo} */
|
|
107
|
+
/** @type {InstanceType<ExportInfo>} */
|
|
96
108
|
this.exportInfo = exportInfo;
|
|
97
109
|
/** @type {boolean} */
|
|
98
110
|
this.checked = checked;
|
|
@@ -120,9 +132,14 @@ class ExportMode {
|
|
|
120
132
|
// for "reexport-named-default" | "reexport-fake-namespace-object" | "reexport-namespace-object"
|
|
121
133
|
/** @type {string | null} */
|
|
122
134
|
this.name = null;
|
|
123
|
-
/** @type {ExportInfo | null} */
|
|
135
|
+
/** @type {InstanceType<ExportInfo> | null} */
|
|
124
136
|
this.partialNamespaceExportInfo = null;
|
|
125
137
|
|
|
138
|
+
// for "reexport-undefined": the name resolves through a circular
|
|
139
|
+
// reexport chain rather than being absent from a non-harmony module
|
|
140
|
+
/** @type {boolean} */
|
|
141
|
+
this.circular = false;
|
|
142
|
+
|
|
126
143
|
// for "dynamic-reexport":
|
|
127
144
|
/** @type {ExportModeIgnored | null} */
|
|
128
145
|
this.ignored = null;
|
|
@@ -163,7 +180,7 @@ const RETURNS_TRUE = () => true;
|
|
|
163
180
|
* unrelated cycles in the graph that would otherwise loop forever inside
|
|
164
181
|
* `_findTarget`.
|
|
165
182
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
166
|
-
* @param {ExportInfo} exportInfo export info on the imported module
|
|
183
|
+
* @param {InstanceType<ExportInfo>} exportInfo export info on the imported module
|
|
167
184
|
* @param {Module} parentModule the module that contains the star reexport
|
|
168
185
|
* @returns {boolean} true when this export reexports back to the parent module under the same name
|
|
169
186
|
*/
|
|
@@ -194,7 +211,7 @@ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
|
|
|
194
211
|
// Allocated lazily: a single-extra-hop chain that terminates (the common
|
|
195
212
|
// `barrel -> leaf local binding` case) returns before `next` is ever
|
|
196
213
|
// computed, so the visited set is pure waste there.
|
|
197
|
-
/** @type {Set<ExportInfo
|
|
214
|
+
/** @type {Set<InstanceType<ExportInfo>> | undefined} */
|
|
198
215
|
let visited;
|
|
199
216
|
for (;;) {
|
|
200
217
|
const target = current.findTarget(moduleGraph, RETURNS_TRUE);
|
|
@@ -220,12 +237,28 @@ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
|
|
|
220
237
|
}
|
|
221
238
|
};
|
|
222
239
|
|
|
240
|
+
/**
|
|
241
|
+
* Two `export *` sources are ambiguous for a name when they resolve to
|
|
242
|
+
* different bindings; a diamond re-export of the same binding is not.
|
|
243
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
244
|
+
* @param {InstanceType<ExportInfo>} previous export info of the star source that first provided the name
|
|
245
|
+
* @param {InstanceType<ExportInfo>} exportInfo export info of a later star source providing the same name
|
|
246
|
+
* @returns {boolean} true when the two sources provide different bindings
|
|
247
|
+
*/
|
|
248
|
+
const isAmbiguousWith = (moduleGraph, previous, exportInfo) => {
|
|
249
|
+
const previousBinding = previous.getTerminalBinding(moduleGraph);
|
|
250
|
+
if (!previousBinding) return false;
|
|
251
|
+
const binding = exportInfo.getTerminalBinding(moduleGraph);
|
|
252
|
+
if (!binding) return false;
|
|
253
|
+
return previousBinding !== binding;
|
|
254
|
+
};
|
|
255
|
+
|
|
223
256
|
/**
|
|
224
257
|
* Determine export assignments.
|
|
225
258
|
* @param {ModuleGraph} moduleGraph module graph
|
|
226
259
|
* @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
|
|
227
260
|
* @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
|
|
228
|
-
* @returns {{ names: ExportInfoName[], dependencyIndices: DependencyIndices }} result
|
|
261
|
+
* @returns {{ names: ExportInfoName[], dependencyIndices: DependencyIndices, conflicting: Set<ExportInfoName> | undefined }} result
|
|
229
262
|
*/
|
|
230
263
|
const determineExportAssignments = (
|
|
231
264
|
moduleGraph,
|
|
@@ -236,6 +269,10 @@ const determineExportAssignments = (
|
|
|
236
269
|
const names = new Set();
|
|
237
270
|
/** @type {DependencyIndices} */
|
|
238
271
|
const dependencyIndices = [];
|
|
272
|
+
/** @type {Map<ExportInfoName, InstanceType<ExportInfo>>} */
|
|
273
|
+
const firstProvider = new Map();
|
|
274
|
+
/** @type {Set<ExportInfoName> | undefined} */
|
|
275
|
+
let conflicting;
|
|
239
276
|
|
|
240
277
|
if (additionalDependency) {
|
|
241
278
|
dependencies = [...dependencies, additionalDependency];
|
|
@@ -253,24 +290,42 @@ const determineExportAssignments = (
|
|
|
253
290
|
if (otherImportedModule) {
|
|
254
291
|
const exportsInfo = moduleGraph.getExportsInfo(otherImportedModule);
|
|
255
292
|
for (const exportInfo of exportsInfo.exports) {
|
|
293
|
+
if (exportInfo.provided !== true || exportInfo.name === "default") {
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (names.has(exportInfo.name)) {
|
|
297
|
+
const previous =
|
|
298
|
+
/** @type {InstanceType<ExportInfo>} */
|
|
299
|
+
(firstProvider.get(exportInfo.name));
|
|
300
|
+
if (
|
|
301
|
+
isAmbiguousWith(moduleGraph, previous, exportInfo) &&
|
|
302
|
+
// A cyclic contribution resolves to nothing, so it never competes
|
|
303
|
+
// with the binding a sibling `export *` provides.
|
|
304
|
+
!(
|
|
305
|
+
parentModule &&
|
|
306
|
+
isStarReexportBackToParent(moduleGraph, exportInfo, parentModule)
|
|
307
|
+
)
|
|
308
|
+
) {
|
|
309
|
+
if (conflicting === undefined) conflicting = new Set();
|
|
310
|
+
conflicting.add(exportInfo.name);
|
|
311
|
+
}
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
256
314
|
if (
|
|
257
|
-
|
|
258
|
-
exportInfo
|
|
259
|
-
!names.has(exportInfo.name) &&
|
|
260
|
-
!(
|
|
261
|
-
parentModule &&
|
|
262
|
-
isStarReexportBackToParent(moduleGraph, exportInfo, parentModule)
|
|
263
|
-
)
|
|
315
|
+
parentModule &&
|
|
316
|
+
isStarReexportBackToParent(moduleGraph, exportInfo, parentModule)
|
|
264
317
|
) {
|
|
265
|
-
|
|
266
|
-
dependencyIndices[i] = names.size;
|
|
318
|
+
continue;
|
|
267
319
|
}
|
|
320
|
+
names.add(exportInfo.name);
|
|
321
|
+
firstProvider.set(exportInfo.name, exportInfo);
|
|
322
|
+
dependencyIndices[i] = names.size;
|
|
268
323
|
}
|
|
269
324
|
}
|
|
270
325
|
}
|
|
271
326
|
dependencyIndices.push(names.size);
|
|
272
327
|
|
|
273
|
-
return { names: [...names], dependencyIndices };
|
|
328
|
+
return { names: [...names], dependencyIndices, conflicting };
|
|
274
329
|
};
|
|
275
330
|
|
|
276
331
|
/**
|
|
@@ -384,6 +439,14 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
384
439
|
mode.name = name;
|
|
385
440
|
break;
|
|
386
441
|
default:
|
|
442
|
+
// forwarding to a circular chain would recurse until the stack
|
|
443
|
+
// blows, so the name resolves to undefined like a missing one
|
|
444
|
+
if (exportInfo.hasCircularTarget(moduleGraph)) {
|
|
445
|
+
mode = new ExportMode("reexport-undefined");
|
|
446
|
+
mode.name = name;
|
|
447
|
+
mode.circular = true;
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
387
450
|
mode = new ExportMode("normal-reexport");
|
|
388
451
|
mode.items = [
|
|
389
452
|
new NormalReexportItem(name, ids, exportInfo, false, false)
|
|
@@ -641,6 +704,12 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
641
704
|
/** @type {IgnoredExports} */
|
|
642
705
|
const ignoredExports = new Set(this.activeExports);
|
|
643
706
|
ignoredExports.add("default");
|
|
707
|
+
// An ambiguous name resolves to no binding at all, so no `export *` in this
|
|
708
|
+
// module may contribute it — not even the first one.
|
|
709
|
+
const conflicting = this._getConflictingStarExportNames(moduleGraph);
|
|
710
|
+
if (conflicting !== undefined) {
|
|
711
|
+
for (const name of conflicting) ignoredExports.add(name);
|
|
712
|
+
}
|
|
644
713
|
|
|
645
714
|
/** @type {Hidden | undefined} */
|
|
646
715
|
let hiddenExports;
|
|
@@ -798,7 +867,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
798
867
|
runtime,
|
|
799
868
|
referencedExports,
|
|
800
869
|
[],
|
|
801
|
-
/** @type {ExportInfo} */ (
|
|
870
|
+
/** @type {InstanceType<ExportInfo>} */ (
|
|
871
|
+
mode.partialNamespaceExportInfo
|
|
872
|
+
)
|
|
802
873
|
);
|
|
803
874
|
return referencedExports;
|
|
804
875
|
}
|
|
@@ -814,7 +885,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
814
885
|
runtime,
|
|
815
886
|
referencedExports,
|
|
816
887
|
[],
|
|
817
|
-
/** @type {ExportInfo} */ (
|
|
888
|
+
/** @type {InstanceType<ExportInfo>} */ (
|
|
889
|
+
mode.partialNamespaceExportInfo
|
|
890
|
+
),
|
|
818
891
|
mode.type === "reexport-fake-namespace-object"
|
|
819
892
|
);
|
|
820
893
|
return referencedExports;
|
|
@@ -842,6 +915,21 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
842
915
|
}
|
|
843
916
|
}
|
|
844
917
|
|
|
918
|
+
/**
|
|
919
|
+
* Names this module's `export *` sources provide with conflicting bindings.
|
|
920
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
921
|
+
* @returns {Set<ExportInfoName> | undefined} ambiguous names, or nothing when there are none
|
|
922
|
+
*/
|
|
923
|
+
_getConflictingStarExportNames(moduleGraph) {
|
|
924
|
+
// Every `export *` carries the module's full star list; a lone one has
|
|
925
|
+
// nothing to be ambiguous with, so skip the walk.
|
|
926
|
+
if (!this.allStarExports) return;
|
|
927
|
+
const { dependencies } = this.allStarExports;
|
|
928
|
+
if (dependencies.length < 2) return;
|
|
929
|
+
return moduleGraph.cached(determineExportAssignments, dependencies)
|
|
930
|
+
.conflicting;
|
|
931
|
+
}
|
|
932
|
+
|
|
845
933
|
/**
|
|
846
934
|
* Discover active exports from other star exports.
|
|
847
935
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
@@ -1043,10 +1131,54 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
1043
1131
|
*/
|
|
1044
1132
|
getWarnings(moduleGraph) {
|
|
1045
1133
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
|
1134
|
+
const circular =
|
|
1135
|
+
this._getCircularReexportPresenceLevel() === ExportPresenceModes.WARN
|
|
1136
|
+
? this._getCircularReexportErrors(moduleGraph)
|
|
1137
|
+
: undefined;
|
|
1046
1138
|
if (exportsPresence === ExportPresenceModes.WARN) {
|
|
1047
|
-
|
|
1139
|
+
const errors = this._getErrors(moduleGraph);
|
|
1140
|
+
if (!circular) return errors;
|
|
1141
|
+
return errors ? [...errors, ...circular] : circular;
|
|
1048
1142
|
}
|
|
1049
|
-
return
|
|
1143
|
+
return circular;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/**
|
|
1147
|
+
* Reporting level for a circular reexport chain. It skips the promotion to
|
|
1148
|
+
* an error that AUTO gives a strict harmony module — a cycle warns by
|
|
1149
|
+
* default — but an explicit setting still says whether and how to report.
|
|
1150
|
+
* @returns {ExportPresenceMode} effective mode
|
|
1151
|
+
*/
|
|
1152
|
+
_getCircularReexportPresenceLevel() {
|
|
1153
|
+
return this.exportPresenceMode === ExportPresenceModes.AUTO
|
|
1154
|
+
? ExportPresenceModes.WARN
|
|
1155
|
+
: this.exportPresenceMode;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
/**
|
|
1159
|
+
* Returns errors for a name resolving through a circular reexport chain.
|
|
1160
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
1161
|
+
* @returns {WebpackError[] | undefined} errors
|
|
1162
|
+
*/
|
|
1163
|
+
_getCircularReexportErrors(moduleGraph) {
|
|
1164
|
+
const ids = this.getIds(moduleGraph);
|
|
1165
|
+
if (ids.length === 0 || !this.name) return;
|
|
1166
|
+
const parentModule = /** @type {Module} */ (
|
|
1167
|
+
moduleGraph.getParentModule(this)
|
|
1168
|
+
);
|
|
1169
|
+
const exportInfo = moduleGraph
|
|
1170
|
+
.getExportsInfo(parentModule)
|
|
1171
|
+
.getReadOnlyExportInfo(this.name);
|
|
1172
|
+
if (!exportInfo.hasCircularTarget(moduleGraph)) return;
|
|
1173
|
+
return [
|
|
1174
|
+
new HarmonyLinkingError(
|
|
1175
|
+
`export '${ids.join(".")}' (reexported as '${
|
|
1176
|
+
this.name
|
|
1177
|
+
}') is part of a circular reexport chain in '${
|
|
1178
|
+
this.userRequest
|
|
1179
|
+
}' and is undefined`
|
|
1180
|
+
)
|
|
1181
|
+
];
|
|
1050
1182
|
}
|
|
1051
1183
|
|
|
1052
1184
|
/**
|
|
@@ -1056,10 +1188,18 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
1056
1188
|
*/
|
|
1057
1189
|
getErrors(moduleGraph) {
|
|
1058
1190
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
|
1059
|
-
|
|
1060
|
-
|
|
1191
|
+
const errors =
|
|
1192
|
+
exportsPresence === ExportPresenceModes.ERROR
|
|
1193
|
+
? this._getErrors(moduleGraph)
|
|
1194
|
+
: null;
|
|
1195
|
+
if (
|
|
1196
|
+
this._getCircularReexportPresenceLevel() !== ExportPresenceModes.ERROR
|
|
1197
|
+
) {
|
|
1198
|
+
return errors;
|
|
1061
1199
|
}
|
|
1062
|
-
|
|
1200
|
+
const circular = this._getCircularReexportErrors(moduleGraph);
|
|
1201
|
+
if (!circular) return errors;
|
|
1202
|
+
return errors ? [...errors, ...circular] : circular;
|
|
1063
1203
|
}
|
|
1064
1204
|
|
|
1065
1205
|
/**
|
|
@@ -1212,7 +1352,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1212
1352
|
|
|
1213
1353
|
const mode = dep.getMode(moduleGraph, runtime);
|
|
1214
1354
|
|
|
1215
|
-
|
|
1355
|
+
// a wrapped module has no shared-scope symbols to redirect reexports to
|
|
1356
|
+
if (concatenationScope && !concatenationScope.isWrapped()) {
|
|
1216
1357
|
switch (mode.type) {
|
|
1217
1358
|
case "reexport-undefined":
|
|
1218
1359
|
concatenationScope.registerRawExport(
|
|
@@ -1224,7 +1365,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1224
1365
|
}
|
|
1225
1366
|
|
|
1226
1367
|
if (mode.type !== "unused" && mode.type !== "empty-star") {
|
|
1227
|
-
|
|
1368
|
+
const importedModule = moduleGraph.getModule(dep);
|
|
1369
|
+
// an in-scope target has no standalone module left to import from
|
|
1370
|
+
if (
|
|
1371
|
+
concatenationScope === undefined ||
|
|
1372
|
+
importedModule === null ||
|
|
1373
|
+
!concatenationScope.isModuleInScope(importedModule)
|
|
1374
|
+
) {
|
|
1375
|
+
super.apply(dependency, source, templateContext);
|
|
1376
|
+
}
|
|
1228
1377
|
|
|
1229
1378
|
this._addExportFragments(
|
|
1230
1379
|
templateContext.initFragments,
|
|
@@ -1235,7 +1384,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1235
1384
|
templateContext.chunkGraph,
|
|
1236
1385
|
runtime,
|
|
1237
1386
|
templateContext.runtimeTemplate,
|
|
1238
|
-
templateContext.runtimeRequirements
|
|
1387
|
+
templateContext.runtimeRequirements,
|
|
1388
|
+
concatenationScope
|
|
1239
1389
|
);
|
|
1240
1390
|
}
|
|
1241
1391
|
}
|
|
@@ -1251,6 +1401,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1251
1401
|
* @param {RuntimeSpec} runtime the runtime
|
|
1252
1402
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
1253
1403
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
1404
|
+
* @param {ConcatenationScope=} concatenationScope concatenation scope of a wrapped module
|
|
1254
1405
|
* @returns {void}
|
|
1255
1406
|
*/
|
|
1256
1407
|
_addExportFragments(
|
|
@@ -1262,10 +1413,28 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1262
1413
|
chunkGraph,
|
|
1263
1414
|
runtime,
|
|
1264
1415
|
runtimeTemplate,
|
|
1265
|
-
runtimeRequirements
|
|
1416
|
+
runtimeRequirements,
|
|
1417
|
+
concatenationScope
|
|
1266
1418
|
) {
|
|
1267
1419
|
const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
|
|
1268
|
-
|
|
1420
|
+
// an in-scope target has no import statement, read it through a reference
|
|
1421
|
+
const inScope =
|
|
1422
|
+
concatenationScope !== undefined &&
|
|
1423
|
+
concatenationScope.isModuleInScope(importedModule);
|
|
1424
|
+
const importVar = inScope
|
|
1425
|
+
? /** @type {ConcatenationScope} */ (
|
|
1426
|
+
concatenationScope
|
|
1427
|
+
).createModuleReference(importedModule, { asiSafe: true })
|
|
1428
|
+
: dep.getImportVar(moduleGraph);
|
|
1429
|
+
// whole-namespace modes need the original export names, not mangled ones
|
|
1430
|
+
const namespaceImportVar = inScope
|
|
1431
|
+
? /** @type {ConcatenationScope} */ (
|
|
1432
|
+
concatenationScope
|
|
1433
|
+
).createModuleReference(importedModule, {
|
|
1434
|
+
asiSafe: true,
|
|
1435
|
+
mangleableNamespace: true
|
|
1436
|
+
})
|
|
1437
|
+
: importVar;
|
|
1269
1438
|
const isDeferred =
|
|
1270
1439
|
ImportPhaseUtils.isDefer(dep.phase) &&
|
|
1271
1440
|
!(/** @type {BuildMeta} */ (importedModule.buildMeta).async);
|
|
@@ -1282,7 +1451,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1282
1451
|
moduleGraph
|
|
1283
1452
|
.getExportsInfo(module)
|
|
1284
1453
|
.getUsedName(mode.name ? mode.name : [], runtime),
|
|
1285
|
-
|
|
1454
|
+
namespaceImportVar,
|
|
1286
1455
|
importedModule.getExportsType(
|
|
1287
1456
|
moduleGraph,
|
|
1288
1457
|
module.buildMeta &&
|
|
@@ -1318,7 +1487,18 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1318
1487
|
);
|
|
1319
1488
|
break;
|
|
1320
1489
|
|
|
1321
|
-
case "reexport-dynamic-default":
|
|
1490
|
+
case "reexport-dynamic-default": {
|
|
1491
|
+
// `${importVar}_default` names the interop variable that the import
|
|
1492
|
+
// statement declares. An in-scope target has no import statement, so
|
|
1493
|
+
// reference its default export and let the concatenation resolve it.
|
|
1494
|
+
const defaultAccess = inScope
|
|
1495
|
+
? /** @type {ConcatenationScope} */ (
|
|
1496
|
+
concatenationScope
|
|
1497
|
+
).createModuleReference(importedModule, {
|
|
1498
|
+
ids: ["default"],
|
|
1499
|
+
asiSafe: true
|
|
1500
|
+
})
|
|
1501
|
+
: importVar;
|
|
1322
1502
|
initFragments.push(
|
|
1323
1503
|
this.getReexportFragment(
|
|
1324
1504
|
module,
|
|
@@ -1326,32 +1506,56 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1326
1506
|
moduleGraph
|
|
1327
1507
|
.getExportsInfo(module)
|
|
1328
1508
|
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1329
|
-
|
|
1330
|
-
null,
|
|
1509
|
+
defaultAccess,
|
|
1510
|
+
inScope ? "" : null,
|
|
1331
1511
|
runtimeRequirements
|
|
1332
1512
|
)
|
|
1333
1513
|
);
|
|
1334
1514
|
break;
|
|
1515
|
+
}
|
|
1335
1516
|
|
|
1336
1517
|
case "reexport-fake-namespace-object":
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1518
|
+
// `${name}_namespace_cache` needs an identifier to suffix, but an
|
|
1519
|
+
// in-scope target is an expression. The concatenation already builds
|
|
1520
|
+
// the same object, memoized: its interop namespace picks the mode from
|
|
1521
|
+
// the exports type, which is what `fakeType` mirrors.
|
|
1522
|
+
if (inScope) {
|
|
1523
|
+
initFragments.push(
|
|
1524
|
+
this.getReexportFragment(
|
|
1525
|
+
module,
|
|
1526
|
+
"reexport fake namespace object from non-harmony",
|
|
1527
|
+
moduleGraph
|
|
1528
|
+
.getExportsInfo(module)
|
|
1529
|
+
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1530
|
+
/** @type {ConcatenationScope} */ (
|
|
1531
|
+
concatenationScope
|
|
1532
|
+
).createModuleReference(importedModule, { asiSafe: true }),
|
|
1533
|
+
"",
|
|
1534
|
+
runtimeRequirements
|
|
1535
|
+
)
|
|
1536
|
+
);
|
|
1537
|
+
} else {
|
|
1538
|
+
initFragments.push(
|
|
1539
|
+
...this.getReexportFakeNamespaceObjectFragments(
|
|
1540
|
+
module,
|
|
1541
|
+
moduleGraph
|
|
1542
|
+
.getExportsInfo(module)
|
|
1543
|
+
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1544
|
+
namespaceImportVar,
|
|
1545
|
+
mode.fakeType,
|
|
1546
|
+
runtimeRequirements
|
|
1547
|
+
)
|
|
1548
|
+
);
|
|
1549
|
+
}
|
|
1348
1550
|
break;
|
|
1349
1551
|
|
|
1350
1552
|
case "reexport-undefined":
|
|
1351
1553
|
initFragments.push(
|
|
1352
1554
|
this.getReexportFragment(
|
|
1353
1555
|
module,
|
|
1354
|
-
|
|
1556
|
+
mode.circular
|
|
1557
|
+
? "reexport circular"
|
|
1558
|
+
: "reexport non-default export from non-harmony",
|
|
1355
1559
|
moduleGraph
|
|
1356
1560
|
.getExportsInfo(module)
|
|
1357
1561
|
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
@@ -1385,7 +1589,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1385
1589
|
moduleGraph
|
|
1386
1590
|
.getExportsInfo(module)
|
|
1387
1591
|
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1388
|
-
|
|
1592
|
+
namespaceImportVar,
|
|
1389
1593
|
"",
|
|
1390
1594
|
runtimeRequirements
|
|
1391
1595
|
)
|
|
@@ -1456,7 +1660,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1456
1660
|
: /** @type {ExportModeIgnored} */ (mode.ignored);
|
|
1457
1661
|
let content =
|
|
1458
1662
|
"/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
|
|
1459
|
-
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${
|
|
1663
|
+
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${namespaceImportVar}) `;
|
|
1460
1664
|
|
|
1461
1665
|
// Filter out exports which are defined by other exports
|
|
1462
1666
|
// and filter out default export because it cannot be reexported with *
|
|
@@ -1474,8 +1678,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1474
1678
|
content +=
|
|
1475
1679
|
runtimeTemplate.supportsArrowFunction() &&
|
|
1476
1680
|
runtimeTemplate.supportsConst()
|
|
1477
|
-
? `() => ${
|
|
1478
|
-
: `function(key) { return ${
|
|
1681
|
+
? `() => ${namespaceImportVar}[__WEBPACK_IMPORT_KEY__]`
|
|
1682
|
+
: `function(key) { return ${namespaceImportVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
|
1479
1683
|
|
|
1480
1684
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
1481
1685
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
@@ -1723,6 +1927,8 @@ makeSerializable(
|
|
|
1723
1927
|
"HarmonyStarExportsList"
|
|
1724
1928
|
);
|
|
1725
1929
|
|
|
1930
|
+
HarmonyExportImportedSpecifierDependency.HarmonyStarExportsList =
|
|
1931
|
+
HarmonyStarExportsList;
|
|
1932
|
+
HarmonyExportImportedSpecifierDependency.idsSymbol = idsSymbol;
|
|
1933
|
+
|
|
1726
1934
|
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
1727
|
-
module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
|
|
1728
|
-
module.exports.idsSymbol = idsSymbol;
|
|
@@ -10,9 +10,9 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
10
10
|
const { first } = require("../util/SetHelpers");
|
|
11
11
|
const { propertyName } = require("../util/property");
|
|
12
12
|
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
13
|
+
/** @import { Source } from "webpack-sources" */
|
|
14
|
+
/** @import { GenerateContext } from "../Generator" */
|
|
15
|
+
/** @import { UsedName } from "../ExportsInfo" */
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Join iterable with comma.
|
|
@@ -37,6 +37,7 @@ const joinIterableWithComma = (iterable) => {
|
|
|
37
37
|
|
|
38
38
|
/** @typedef {Map<UsedName, string>} ExportMap */
|
|
39
39
|
/** @typedef {Set<string>} UnusedExports */
|
|
40
|
+
/** @import { OnDemandGeneration } from "./ExportBindingInitFragment" */
|
|
40
41
|
|
|
41
42
|
/** @type {ExportMap} */
|
|
42
43
|
const EMPTY_MAP = new Map();
|
|
@@ -53,11 +54,13 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
53
54
|
* @param {string} exportsArgument the exports identifier
|
|
54
55
|
* @param {ExportMap} exportMap mapping from used name to exposed variable name
|
|
55
56
|
* @param {UnusedExports} unusedExports list of unused export names
|
|
57
|
+
* @param {OnDemandGeneration=} onDemand offered the call instead of emitting it
|
|
56
58
|
*/
|
|
57
59
|
constructor(
|
|
58
60
|
exportsArgument,
|
|
59
61
|
exportMap = EMPTY_MAP,
|
|
60
|
-
unusedExports = EMPTY_SET
|
|
62
|
+
unusedExports = EMPTY_SET,
|
|
63
|
+
onDemand = undefined
|
|
61
64
|
) {
|
|
62
65
|
super(undefined, InitFragment.STAGE_HARMONY_EXPORTS, 1, "harmony-exports");
|
|
63
66
|
/** @type {string} */
|
|
@@ -66,6 +69,8 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
66
69
|
this.exportMap = exportMap;
|
|
67
70
|
/** @type {UnusedExports} */
|
|
68
71
|
this.unusedExports = unusedExports;
|
|
72
|
+
/** @type {OnDemandGeneration | undefined} */
|
|
73
|
+
this.onDemand = onDemand;
|
|
69
74
|
}
|
|
70
75
|
|
|
71
76
|
/**
|
|
@@ -114,7 +119,8 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
114
119
|
return new HarmonyExportInitFragment(
|
|
115
120
|
this.exportsArgument,
|
|
116
121
|
exportMap,
|
|
117
|
-
unusedExports
|
|
122
|
+
unusedExports,
|
|
123
|
+
this.onDemand
|
|
118
124
|
);
|
|
119
125
|
}
|
|
120
126
|
|
|
@@ -151,7 +157,8 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
151
157
|
return new HarmonyExportInitFragment(
|
|
152
158
|
this.exportsArgument,
|
|
153
159
|
exportMap,
|
|
154
|
-
unusedExports
|
|
160
|
+
unusedExports,
|
|
161
|
+
this.onDemand || other.onDemand
|
|
155
162
|
);
|
|
156
163
|
}
|
|
157
164
|
|
|
@@ -184,6 +191,8 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
184
191
|
)}: ${runtimeTemplate.returningFunction(value)}`
|
|
185
192
|
);
|
|
186
193
|
}
|
|
194
|
+
// Requested even when the call is taken over below: whoever took it may still
|
|
195
|
+
// emit it, and by then the requirement set is closed.
|
|
187
196
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
188
197
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
189
198
|
definePart = `/* harmony export */ ${
|
|
@@ -191,6 +200,9 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
191
200
|
}(${this.exportsArgument}, {${definitions.join(
|
|
192
201
|
","
|
|
193
202
|
)}\n/* harmony export */ });\n`;
|
|
203
|
+
if (this.onDemand !== undefined && this.onDemand(definePart, false)) {
|
|
204
|
+
definePart = "";
|
|
205
|
+
}
|
|
194
206
|
}
|
|
195
207
|
return `${definePart}${unusedPart}`;
|
|
196
208
|
}
|