@depup/webpack 5.109.0-depup.0 → 5.110.1-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 +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- 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 +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -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 +168 -57
- 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 +50 -13
- 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 +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- 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 +28 -36
- 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 +22 -6
- 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 +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- 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 +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- 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 +55 -25
- 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 +2 -2
- 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 +289 -28
- 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 +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -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 +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- 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 +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- 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 +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- 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 +156 -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 +4 -4
- 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 +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- 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 +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- 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 +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- 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 +49 -35
- 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 +51 -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 +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- 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/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/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 +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- 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 +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- 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 +7819 -3331
- 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 +31 -18
- 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 +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- 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 +3403 -300
- 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 +14 -1
- 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 +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -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 +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- 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 +232 -68
- 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 +377 -136
- 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 +1 -1
- 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 +23 -6
- 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 +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- 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 +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- 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 +1050 -24
- package/lib/util/StringXor.js +1 -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 +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- 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 +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -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/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 +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -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 +34 -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 +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -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 +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- 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 +4013 -738
- 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,7 +132,7 @@ 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
|
|
|
126
138
|
// for "dynamic-reexport":
|
|
@@ -163,7 +175,7 @@ const RETURNS_TRUE = () => true;
|
|
|
163
175
|
* unrelated cycles in the graph that would otherwise loop forever inside
|
|
164
176
|
* `_findTarget`.
|
|
165
177
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
166
|
-
* @param {ExportInfo} exportInfo export info on the imported module
|
|
178
|
+
* @param {InstanceType<ExportInfo>} exportInfo export info on the imported module
|
|
167
179
|
* @param {Module} parentModule the module that contains the star reexport
|
|
168
180
|
* @returns {boolean} true when this export reexports back to the parent module under the same name
|
|
169
181
|
*/
|
|
@@ -191,8 +203,11 @@ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
|
|
|
191
203
|
let current = moduleGraph
|
|
192
204
|
.getExportsInfo(firstTarget.module)
|
|
193
205
|
.getReadOnlyExportInfo(firstTarget.export[0]);
|
|
194
|
-
|
|
195
|
-
|
|
206
|
+
// Allocated lazily: a single-extra-hop chain that terminates (the common
|
|
207
|
+
// `barrel -> leaf local binding` case) returns before `next` is ever
|
|
208
|
+
// computed, so the visited set is pure waste there.
|
|
209
|
+
/** @type {Set<InstanceType<ExportInfo>> | undefined} */
|
|
210
|
+
let visited;
|
|
196
211
|
for (;;) {
|
|
197
212
|
const target = current.findTarget(moduleGraph, RETURNS_TRUE);
|
|
198
213
|
if (!target || typeof target !== "object") return false;
|
|
@@ -210,6 +225,7 @@ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
|
|
|
210
225
|
const next = moduleGraph
|
|
211
226
|
.getExportsInfo(target.module)
|
|
212
227
|
.getReadOnlyExportInfo(target.export[0]);
|
|
228
|
+
if (visited === undefined) visited = new Set([exportInfo, current]);
|
|
213
229
|
if (visited.has(next)) return false;
|
|
214
230
|
visited.add(next);
|
|
215
231
|
current = next;
|
|
@@ -635,7 +651,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
635
651
|
exportsInfo.otherExportsInfo.getUsed(runtime) === UsageState.Unused;
|
|
636
652
|
|
|
637
653
|
/** @type {IgnoredExports} */
|
|
638
|
-
const ignoredExports = new Set(
|
|
654
|
+
const ignoredExports = new Set(this.activeExports);
|
|
655
|
+
ignoredExports.add("default");
|
|
639
656
|
|
|
640
657
|
/** @type {Hidden | undefined} */
|
|
641
658
|
let hiddenExports;
|
|
@@ -793,7 +810,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
793
810
|
runtime,
|
|
794
811
|
referencedExports,
|
|
795
812
|
[],
|
|
796
|
-
/** @type {ExportInfo} */ (
|
|
813
|
+
/** @type {InstanceType<ExportInfo>} */ (
|
|
814
|
+
mode.partialNamespaceExportInfo
|
|
815
|
+
)
|
|
797
816
|
);
|
|
798
817
|
return referencedExports;
|
|
799
818
|
}
|
|
@@ -809,7 +828,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
809
828
|
runtime,
|
|
810
829
|
referencedExports,
|
|
811
830
|
[],
|
|
812
|
-
/** @type {ExportInfo} */ (
|
|
831
|
+
/** @type {InstanceType<ExportInfo>} */ (
|
|
832
|
+
mode.partialNamespaceExportInfo
|
|
833
|
+
),
|
|
813
834
|
mode.type === "reexport-fake-namespace-object"
|
|
814
835
|
);
|
|
815
836
|
return referencedExports;
|
|
@@ -1207,7 +1228,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1207
1228
|
|
|
1208
1229
|
const mode = dep.getMode(moduleGraph, runtime);
|
|
1209
1230
|
|
|
1210
|
-
|
|
1231
|
+
// a wrapped module has no shared-scope symbols to redirect reexports to
|
|
1232
|
+
if (concatenationScope && !concatenationScope.isWrapped()) {
|
|
1211
1233
|
switch (mode.type) {
|
|
1212
1234
|
case "reexport-undefined":
|
|
1213
1235
|
concatenationScope.registerRawExport(
|
|
@@ -1219,7 +1241,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1219
1241
|
}
|
|
1220
1242
|
|
|
1221
1243
|
if (mode.type !== "unused" && mode.type !== "empty-star") {
|
|
1222
|
-
|
|
1244
|
+
const importedModule = moduleGraph.getModule(dep);
|
|
1245
|
+
// an in-scope target has no standalone module left to import from
|
|
1246
|
+
if (
|
|
1247
|
+
concatenationScope === undefined ||
|
|
1248
|
+
importedModule === null ||
|
|
1249
|
+
!concatenationScope.isModuleInScope(importedModule)
|
|
1250
|
+
) {
|
|
1251
|
+
super.apply(dependency, source, templateContext);
|
|
1252
|
+
}
|
|
1223
1253
|
|
|
1224
1254
|
this._addExportFragments(
|
|
1225
1255
|
templateContext.initFragments,
|
|
@@ -1230,7 +1260,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1230
1260
|
templateContext.chunkGraph,
|
|
1231
1261
|
runtime,
|
|
1232
1262
|
templateContext.runtimeTemplate,
|
|
1233
|
-
templateContext.runtimeRequirements
|
|
1263
|
+
templateContext.runtimeRequirements,
|
|
1264
|
+
concatenationScope
|
|
1234
1265
|
);
|
|
1235
1266
|
}
|
|
1236
1267
|
}
|
|
@@ -1246,6 +1277,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1246
1277
|
* @param {RuntimeSpec} runtime the runtime
|
|
1247
1278
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
1248
1279
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
1280
|
+
* @param {ConcatenationScope=} concatenationScope concatenation scope of a wrapped module
|
|
1249
1281
|
* @returns {void}
|
|
1250
1282
|
*/
|
|
1251
1283
|
_addExportFragments(
|
|
@@ -1257,10 +1289,28 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1257
1289
|
chunkGraph,
|
|
1258
1290
|
runtime,
|
|
1259
1291
|
runtimeTemplate,
|
|
1260
|
-
runtimeRequirements
|
|
1292
|
+
runtimeRequirements,
|
|
1293
|
+
concatenationScope
|
|
1261
1294
|
) {
|
|
1262
1295
|
const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
|
|
1263
|
-
|
|
1296
|
+
// an in-scope target has no import statement, read it through a reference
|
|
1297
|
+
const inScope =
|
|
1298
|
+
concatenationScope !== undefined &&
|
|
1299
|
+
concatenationScope.isModuleInScope(importedModule);
|
|
1300
|
+
const importVar = inScope
|
|
1301
|
+
? /** @type {ConcatenationScope} */ (
|
|
1302
|
+
concatenationScope
|
|
1303
|
+
).createModuleReference(importedModule, { asiSafe: true })
|
|
1304
|
+
: dep.getImportVar(moduleGraph);
|
|
1305
|
+
// whole-namespace modes need the original export names, not mangled ones
|
|
1306
|
+
const namespaceImportVar = inScope
|
|
1307
|
+
? /** @type {ConcatenationScope} */ (
|
|
1308
|
+
concatenationScope
|
|
1309
|
+
).createModuleReference(importedModule, {
|
|
1310
|
+
asiSafe: true,
|
|
1311
|
+
mangleableNamespace: true
|
|
1312
|
+
})
|
|
1313
|
+
: importVar;
|
|
1264
1314
|
const isDeferred =
|
|
1265
1315
|
ImportPhaseUtils.isDefer(dep.phase) &&
|
|
1266
1316
|
!(/** @type {BuildMeta} */ (importedModule.buildMeta).async);
|
|
@@ -1277,7 +1327,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1277
1327
|
moduleGraph
|
|
1278
1328
|
.getExportsInfo(module)
|
|
1279
1329
|
.getUsedName(mode.name ? mode.name : [], runtime),
|
|
1280
|
-
|
|
1330
|
+
namespaceImportVar,
|
|
1281
1331
|
importedModule.getExportsType(
|
|
1282
1332
|
moduleGraph,
|
|
1283
1333
|
module.buildMeta &&
|
|
@@ -1313,7 +1363,18 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1313
1363
|
);
|
|
1314
1364
|
break;
|
|
1315
1365
|
|
|
1316
|
-
case "reexport-dynamic-default":
|
|
1366
|
+
case "reexport-dynamic-default": {
|
|
1367
|
+
// `${importVar}_default` names the interop variable that the import
|
|
1368
|
+
// statement declares. An in-scope target has no import statement, so
|
|
1369
|
+
// reference its default export and let the concatenation resolve it.
|
|
1370
|
+
const defaultAccess = inScope
|
|
1371
|
+
? /** @type {ConcatenationScope} */ (
|
|
1372
|
+
concatenationScope
|
|
1373
|
+
).createModuleReference(importedModule, {
|
|
1374
|
+
ids: ["default"],
|
|
1375
|
+
asiSafe: true
|
|
1376
|
+
})
|
|
1377
|
+
: importVar;
|
|
1317
1378
|
initFragments.push(
|
|
1318
1379
|
this.getReexportFragment(
|
|
1319
1380
|
module,
|
|
@@ -1321,25 +1382,47 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1321
1382
|
moduleGraph
|
|
1322
1383
|
.getExportsInfo(module)
|
|
1323
1384
|
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1324
|
-
|
|
1325
|
-
null,
|
|
1385
|
+
defaultAccess,
|
|
1386
|
+
inScope ? "" : null,
|
|
1326
1387
|
runtimeRequirements
|
|
1327
1388
|
)
|
|
1328
1389
|
);
|
|
1329
1390
|
break;
|
|
1391
|
+
}
|
|
1330
1392
|
|
|
1331
1393
|
case "reexport-fake-namespace-object":
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1394
|
+
// `${name}_namespace_cache` needs an identifier to suffix, but an
|
|
1395
|
+
// in-scope target is an expression. The concatenation already builds
|
|
1396
|
+
// the same object, memoized: its interop namespace picks the mode from
|
|
1397
|
+
// the exports type, which is what `fakeType` mirrors.
|
|
1398
|
+
if (inScope) {
|
|
1399
|
+
initFragments.push(
|
|
1400
|
+
this.getReexportFragment(
|
|
1401
|
+
module,
|
|
1402
|
+
"reexport fake namespace object from non-harmony",
|
|
1403
|
+
moduleGraph
|
|
1404
|
+
.getExportsInfo(module)
|
|
1405
|
+
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1406
|
+
/** @type {ConcatenationScope} */ (
|
|
1407
|
+
concatenationScope
|
|
1408
|
+
).createModuleReference(importedModule, { asiSafe: true }),
|
|
1409
|
+
"",
|
|
1410
|
+
runtimeRequirements
|
|
1411
|
+
)
|
|
1412
|
+
);
|
|
1413
|
+
} else {
|
|
1414
|
+
initFragments.push(
|
|
1415
|
+
...this.getReexportFakeNamespaceObjectFragments(
|
|
1416
|
+
module,
|
|
1417
|
+
moduleGraph
|
|
1418
|
+
.getExportsInfo(module)
|
|
1419
|
+
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1420
|
+
namespaceImportVar,
|
|
1421
|
+
mode.fakeType,
|
|
1422
|
+
runtimeRequirements
|
|
1423
|
+
)
|
|
1424
|
+
);
|
|
1425
|
+
}
|
|
1343
1426
|
break;
|
|
1344
1427
|
|
|
1345
1428
|
case "reexport-undefined":
|
|
@@ -1380,14 +1463,19 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1380
1463
|
moduleGraph
|
|
1381
1464
|
.getExportsInfo(module)
|
|
1382
1465
|
.getUsedName(/** @type {string} */ (mode.name), runtime),
|
|
1383
|
-
|
|
1466
|
+
namespaceImportVar,
|
|
1384
1467
|
"",
|
|
1385
1468
|
runtimeRequirements
|
|
1386
1469
|
)
|
|
1387
1470
|
);
|
|
1388
1471
|
break;
|
|
1389
1472
|
|
|
1390
|
-
case "normal-reexport":
|
|
1473
|
+
case "normal-reexport": {
|
|
1474
|
+
// loop-invariants hoisted out of the per-item loop below (a barrel
|
|
1475
|
+
// re-exporting N names otherwise repeats these lookups N times)
|
|
1476
|
+
const connection = moduleGraph.getConnection(dep);
|
|
1477
|
+
const selfExportsInfo = moduleGraph.getExportsInfo(module);
|
|
1478
|
+
const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
1391
1479
|
for (const {
|
|
1392
1480
|
name,
|
|
1393
1481
|
ids,
|
|
@@ -1396,7 +1484,6 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1396
1484
|
} of /** @type {NormalReexportItem[]} */ (mode.items)) {
|
|
1397
1485
|
if (hidden) continue;
|
|
1398
1486
|
if (checked) {
|
|
1399
|
-
const connection = moduleGraph.getConnection(dep);
|
|
1400
1487
|
const key = `harmony reexport (checked) ${importVar} ${name}`;
|
|
1401
1488
|
const runtimeCondition = dep.weak
|
|
1402
1489
|
? false
|
|
@@ -1425,11 +1512,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1425
1512
|
this.getReexportFragment(
|
|
1426
1513
|
module,
|
|
1427
1514
|
"reexport safe",
|
|
1428
|
-
|
|
1515
|
+
selfExportsInfo.getUsedName(name, runtime),
|
|
1429
1516
|
importVar,
|
|
1430
|
-
|
|
1431
|
-
.getExportsInfo(importedModule)
|
|
1432
|
-
.getUsedName(ids, runtime),
|
|
1517
|
+
importedExportsInfo.getUsedName(ids, runtime),
|
|
1433
1518
|
runtimeRequirements,
|
|
1434
1519
|
ids
|
|
1435
1520
|
)
|
|
@@ -1437,6 +1522,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1437
1522
|
}
|
|
1438
1523
|
}
|
|
1439
1524
|
break;
|
|
1525
|
+
}
|
|
1440
1526
|
|
|
1441
1527
|
case "dynamic-reexport": {
|
|
1442
1528
|
const ignored = mode.hidden
|
|
@@ -1448,7 +1534,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1448
1534
|
: /** @type {ExportModeIgnored} */ (mode.ignored);
|
|
1449
1535
|
let content =
|
|
1450
1536
|
"/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
|
|
1451
|
-
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${
|
|
1537
|
+
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${namespaceImportVar}) `;
|
|
1452
1538
|
|
|
1453
1539
|
// Filter out exports which are defined by other exports
|
|
1454
1540
|
// and filter out default export because it cannot be reexported with *
|
|
@@ -1466,8 +1552,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1466
1552
|
content +=
|
|
1467
1553
|
runtimeTemplate.supportsArrowFunction() &&
|
|
1468
1554
|
runtimeTemplate.supportsConst()
|
|
1469
|
-
? `() => ${
|
|
1470
|
-
: `function(key) { return ${
|
|
1555
|
+
? `() => ${namespaceImportVar}[__WEBPACK_IMPORT_KEY__]`
|
|
1556
|
+
: `function(key) { return ${namespaceImportVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
|
1471
1557
|
|
|
1472
1558
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
1473
1559
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
@@ -1715,6 +1801,8 @@ makeSerializable(
|
|
|
1715
1801
|
"HarmonyStarExportsList"
|
|
1716
1802
|
);
|
|
1717
1803
|
|
|
1804
|
+
HarmonyExportImportedSpecifierDependency.HarmonyStarExportsList =
|
|
1805
|
+
HarmonyStarExportsList;
|
|
1806
|
+
HarmonyExportImportedSpecifierDependency.idsSymbol = idsSymbol;
|
|
1807
|
+
|
|
1718
1808
|
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
1719
|
-
module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
|
|
1720
|
-
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
|
}
|
|
@@ -8,22 +8,30 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
|
+
const memoize = require("../util/memoize");
|
|
11
12
|
const ExportBindingInitFragment = require("./ExportBindingInitFragment");
|
|
12
13
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
|
13
14
|
const NullDependency = require("./NullDependency");
|
|
14
15
|
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @typedef {import("../optimize/InlineExports").InlinedValue} InlinedValue */
|
|
16
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
17
|
+
/** @import { ExportsSpec, LazyUntil } from "../Dependency" */
|
|
18
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
19
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
20
|
+
/** @import { ConnectionState } from "../ModuleGraphConnection" */
|
|
21
|
+
/** @import { InlinedValue } from "../optimize/InlineExports" */
|
|
22
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, InlinedValue | null | undefined]>} ObjectDeserializerContext */
|
|
23
23
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, InlinedValue | null | undefined]>} ObjectSerializerContext */
|
|
24
|
-
/** @
|
|
25
|
-
/**
|
|
26
|
-
|
|
24
|
+
/** @import { UnusedExports, ExportMap } from "./HarmonyExportInitFragment" */
|
|
25
|
+
/**
|
|
26
|
+
* @import {
|
|
27
|
+
* JavascriptModuleBuildInfo
|
|
28
|
+
* } from "../javascript/JavascriptModule"
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
// Required here rather than at the top: the plugin reaches back into the dependencies.
|
|
32
|
+
const getJavascriptModulesPlugin = memoize(() =>
|
|
33
|
+
require("../javascript/JavascriptModulesPlugin")
|
|
34
|
+
);
|
|
27
35
|
|
|
28
36
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
|
29
37
|
/**
|
|
@@ -139,10 +147,18 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
139
147
|
apply(
|
|
140
148
|
dependency,
|
|
141
149
|
source,
|
|
142
|
-
{
|
|
150
|
+
{
|
|
151
|
+
module,
|
|
152
|
+
moduleGraph,
|
|
153
|
+
initFragments,
|
|
154
|
+
runtime,
|
|
155
|
+
runtimeTemplate,
|
|
156
|
+
concatenationScope
|
|
157
|
+
}
|
|
143
158
|
) {
|
|
144
159
|
const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
|
|
145
|
-
|
|
160
|
+
// a wrapped module's bindings stay inside the wrapper, not in the shared scope
|
|
161
|
+
if (concatenationScope && !concatenationScope.isWrapped()) {
|
|
146
162
|
concatenationScope.registerExport(dep.name, dep.id);
|
|
147
163
|
return;
|
|
148
164
|
}
|
|
@@ -169,6 +185,21 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
169
185
|
/** @type {import("../Module").BuildInfo} */ (module.buildInfo)
|
|
170
186
|
.isCircular === false;
|
|
171
187
|
|
|
188
|
+
// A library exporting the same bindings natively reads none of them back off the
|
|
189
|
+
// exports object, so it takes the call over and emits it only where wrapped.
|
|
190
|
+
const hooks = getJavascriptModulesPlugin().getCompilationHooks(
|
|
191
|
+
runtimeTemplate.compilation
|
|
192
|
+
);
|
|
193
|
+
const onDemand = hooks.onDemandExportsGeneration.isUsed()
|
|
194
|
+
? (/** @type {string} */ definition, /** @type {boolean} */ placeAtEnd) =>
|
|
195
|
+
hooks.onDemandExportsGeneration.call(
|
|
196
|
+
module,
|
|
197
|
+
runtime,
|
|
198
|
+
definition,
|
|
199
|
+
placeAtEnd
|
|
200
|
+
) === true
|
|
201
|
+
: undefined;
|
|
202
|
+
|
|
172
203
|
if (canUseValueBinding) {
|
|
173
204
|
initFragments.push(
|
|
174
205
|
new ExportBindingInitFragment(
|
|
@@ -180,7 +211,8 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
180
211
|
bindingType: "value"
|
|
181
212
|
}
|
|
182
213
|
],
|
|
183
|
-
true
|
|
214
|
+
true,
|
|
215
|
+
onDemand
|
|
184
216
|
)
|
|
185
217
|
);
|
|
186
218
|
} else {
|
|
@@ -188,7 +220,12 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
188
220
|
const map = new Map();
|
|
189
221
|
map.set(used, `/* binding */ ${dep.id}`);
|
|
190
222
|
initFragments.push(
|
|
191
|
-
new HarmonyExportInitFragment(
|
|
223
|
+
new HarmonyExportInitFragment(
|
|
224
|
+
module.exportsArgument,
|
|
225
|
+
map,
|
|
226
|
+
undefined,
|
|
227
|
+
onDemand
|
|
228
|
+
)
|
|
192
229
|
);
|
|
193
230
|
}
|
|
194
231
|
}
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/** @import { BuildInfo } from "../Module" */
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* JavascriptModuleBuildMeta
|
|
14
|
+
* } from "../javascript/JavascriptModule"
|
|
15
|
+
*/
|
|
16
|
+
/** @import { JavascriptParserState } from "../javascript/JavascriptParser" */
|
|
14
17
|
|
|
15
18
|
/** @type {WeakMap<JavascriptParserState, boolean>} */
|
|
16
19
|
const parserStateExportsState = new WeakMap();
|