@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
|
@@ -16,20 +16,27 @@ const HarmonyLinkingError = require("./HarmonyLinkingError");
|
|
|
16
16
|
const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
|
|
17
17
|
const ModuleDependency = require("./ModuleDependency");
|
|
18
18
|
|
|
19
|
-
/** @
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/** @
|
|
19
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* JavascriptParserOptions
|
|
23
|
+
* } from "../../declarations/WebpackOptions"
|
|
24
|
+
*/
|
|
25
|
+
/** @import { ReferencedExports } from "../Dependency" */
|
|
26
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
27
|
+
/** @import ExportsInfo from "../ExportsInfo" */
|
|
28
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
29
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
30
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
31
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
32
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
33
|
+
/**
|
|
34
|
+
* @import {
|
|
35
|
+
* ObjectDeserializerContext,
|
|
36
|
+
* ObjectSerializerContext
|
|
37
|
+
* } from "../serialization/ObjectMiddleware"
|
|
38
|
+
*/
|
|
39
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
33
40
|
|
|
34
41
|
/** @typedef {0 | 1 | 2 | 3} ExportPresenceMode */
|
|
35
42
|
|
|
@@ -135,9 +142,10 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
135
142
|
|
|
136
143
|
/**
|
|
137
144
|
* Returns true if this dependency can be concatenated
|
|
145
|
+
* @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
|
|
138
146
|
* @returns {boolean} true if this dependency can be concatenated
|
|
139
147
|
*/
|
|
140
|
-
canConcatenate() {
|
|
148
|
+
canConcatenate(concatenateCommonJsModules) {
|
|
141
149
|
return true;
|
|
142
150
|
}
|
|
143
151
|
|
|
@@ -191,7 +199,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
191
199
|
|
|
192
200
|
let importVar = importVarMap.get(importedModule);
|
|
193
201
|
if (importVar) return importVar;
|
|
194
|
-
importVar = `${Template.toIdentifier(
|
|
202
|
+
importVar = `${Template.toIdentifier(this.userRequest)}__WEBPACK_${
|
|
195
203
|
isDeferred ? "DEFERRED_" : ""
|
|
196
204
|
}IMPORTED_MODULE_${importVarMap.size}__`;
|
|
197
205
|
importVarMap.set(importedModule, importVar);
|
|
@@ -384,8 +392,6 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
384
392
|
}
|
|
385
393
|
}
|
|
386
394
|
|
|
387
|
-
module.exports = HarmonyImportDependency;
|
|
388
|
-
|
|
389
395
|
/** @type {WeakMap<Module, WeakMap<Module, RuntimeSpec | boolean>>} */
|
|
390
396
|
const importEmittedMap = new WeakMap();
|
|
391
397
|
|
|
@@ -524,5 +530,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
524
530
|
}
|
|
525
531
|
};
|
|
526
532
|
|
|
527
|
-
|
|
528
|
-
|
|
533
|
+
HarmonyImportDependency.ExportPresenceModes = ExportPresenceModes;
|
|
534
|
+
HarmonyImportDependency.getNonOptionalPart = getNonOptionalPart;
|
|
535
|
+
|
|
536
|
+
module.exports = HarmonyImportDependency;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
|
|
9
8
|
const WebpackError = require("../errors/WebpackError");
|
|
9
|
+
const getParserHooks = require("../hmr/parserHooks");
|
|
10
10
|
const {
|
|
11
11
|
VariableInfo,
|
|
12
12
|
getImportAttributes
|
|
@@ -29,25 +29,30 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
|
|
|
29
29
|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
30
30
|
const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
|
|
31
31
|
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/** @
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
32
|
+
/**
|
|
33
|
+
* @import {
|
|
34
|
+
* Expression,
|
|
35
|
+
* PrivateIdentifier,
|
|
36
|
+
* Identifier,
|
|
37
|
+
* MemberExpression
|
|
38
|
+
* } from "estree"
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* @import {
|
|
42
|
+
* JavascriptParserOptions
|
|
43
|
+
* } from "../../declarations/WebpackOptions"
|
|
44
|
+
*/
|
|
45
|
+
/** @import Module from "../Module" */
|
|
46
|
+
/**
|
|
47
|
+
* @import JavascriptParser, {
|
|
48
|
+
* ImportAttributes,
|
|
49
|
+
* Range,
|
|
50
|
+
* Members
|
|
51
|
+
* } from "../javascript/JavascriptParser"
|
|
52
|
+
*/
|
|
53
|
+
/** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
54
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
55
|
+
/** @import { GuardFrame } from "./HarmonyImportGuard" */
|
|
51
56
|
|
|
52
57
|
const harmonySpecifierTag = Symbol("harmony import");
|
|
53
58
|
|
|
@@ -147,7 +152,7 @@ const findImportSpecifier = (parser, node) => {
|
|
|
147
152
|
}
|
|
148
153
|
};
|
|
149
154
|
|
|
150
|
-
|
|
155
|
+
class HarmonyImportDependencyParserPlugin {
|
|
151
156
|
/**
|
|
152
157
|
* Creates an instance of HarmonyImportDependencyParserPlugin.
|
|
153
158
|
* @param {JavascriptParserOptions} options options
|
|
@@ -496,7 +501,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
496
501
|
return true;
|
|
497
502
|
});
|
|
498
503
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
499
|
-
|
|
504
|
+
getParserHooks(parser);
|
|
500
505
|
hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
501
506
|
if (!HarmonyExports.isEnabled(parser.state)) {
|
|
502
507
|
// This is not a harmony module, skip it
|
|
@@ -567,6 +572,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
567
572
|
return { consequent, alternate };
|
|
568
573
|
});
|
|
569
574
|
}
|
|
570
|
-
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
HarmonyImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
|
|
571
578
|
|
|
572
|
-
module.exports
|
|
579
|
+
module.exports = HarmonyImportDependencyParserPlugin;
|
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
9
|
-
const memoize = require("../util/memoize");
|
|
10
9
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
10
|
+
/** @import { Expression } from "estree" */
|
|
11
|
+
/** @import Dependency from "../Dependency" */
|
|
12
|
+
/** @import Module from "../Module" */
|
|
13
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
14
|
+
/** @import JavascriptParser from "../javascript/JavascriptParser" */
|
|
15
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
16
|
+
/** @import CommonJsFullRequireDependency from "./CommonJsFullRequireDependency" */
|
|
17
|
+
/** @import CommonJsRequireDependency from "./CommonJsRequireDependency" */
|
|
18
|
+
/** @import HarmonyEvaluatedImportSpecifierDependency from "./HarmonyEvaluatedImportSpecifierDependency" */
|
|
19
|
+
/** @import HarmonyImportSpecifierDependency from "./HarmonyImportSpecifierDependency" */
|
|
20
|
+
/** @import ImportDependency from "./ImportDependency" */
|
|
21
21
|
|
|
22
22
|
// Tuple-encoded boolean formula over guard dependencies. Split into per-shape
|
|
23
23
|
// aliases so the recursive references resolve through array/object types.
|
|
@@ -29,7 +29,7 @@ const memoize = require("../util/memoize");
|
|
|
29
29
|
/** @typedef {["&&" | "||" | "??", GuardFormula, GuardFormula]} GuardLogical */
|
|
30
30
|
/** @typedef {GuardAtom | GuardPresenceAtom | GuardUnknown | GuardNot | GuardLogical} GuardFormula */
|
|
31
31
|
/** @typedef {{ formula: GuardFormula, value: boolean }} DependencyGuard branch guard: the dependency is live only when the formula evaluates to `value` */
|
|
32
|
-
/** @typedef {HarmonyImportSpecifierDependency | CommonJsRequireDependency | ImportDependency} GuardableDependency */
|
|
32
|
+
/** @typedef {HarmonyImportSpecifierDependency | CommonJsRequireDependency | CommonJsFullRequireDependency | ImportDependency} GuardableDependency */
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* A guard frame pushed onto `parser.state.guardStack` for the duration of one
|
|
@@ -43,13 +43,6 @@ const memoize = require("../util/memoize");
|
|
|
43
43
|
* @property {GuardFormula | null=} presenceFormula memoized presence formula (null = no presence atom)
|
|
44
44
|
*/
|
|
45
45
|
|
|
46
|
-
const getHarmonyImportSpecifierDependency = memoize(() =>
|
|
47
|
-
require("./HarmonyImportSpecifierDependency")
|
|
48
|
-
);
|
|
49
|
-
const getHarmonyEvaluatedImportSpecifierDependency = memoize(() =>
|
|
50
|
-
require("./HarmonyEvaluatedImportSpecifierDependency")
|
|
51
|
-
);
|
|
52
|
-
|
|
53
46
|
// Tri-state truthiness: UNKNOWN means not statically known.
|
|
54
47
|
const UNKNOWN = 0;
|
|
55
48
|
const FALSE = 1;
|
|
@@ -213,19 +206,17 @@ const isDeadByGuards = (guards, moduleGraph, runtime) => {
|
|
|
213
206
|
* @returns {GuardFormula | null} formula, or null when it has no knowable atom
|
|
214
207
|
*/
|
|
215
208
|
const buildFrameLivenessFormula = (parser, frame) => {
|
|
216
|
-
const HarmonyImportSpecifierDependency =
|
|
217
|
-
getHarmonyImportSpecifierDependency();
|
|
218
|
-
const HarmonyEvaluatedImportSpecifierDependency =
|
|
219
|
-
getHarmonyEvaluatedImportSpecifierDependency();
|
|
220
209
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
221
210
|
/** @type {Map<number, HarmonyImportSpecifierDependency>} */
|
|
222
211
|
const depByRangeStart = new Map();
|
|
223
212
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
224
|
-
const dep =
|
|
213
|
+
const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
|
|
214
|
+
deps[i]
|
|
215
|
+
);
|
|
225
216
|
// Exclude `"x" in ns` evaluated deps; those feed the presence formula only.
|
|
226
217
|
if (
|
|
227
|
-
dep
|
|
228
|
-
|
|
218
|
+
dep.isHarmonyImportSpecifier === true &&
|
|
219
|
+
dep.isHarmonyEvaluatedImportSpecifier !== true &&
|
|
229
220
|
dep.range
|
|
230
221
|
) {
|
|
231
222
|
depByRangeStart.set(dep.range[0], dep);
|
|
@@ -340,14 +331,14 @@ const evalPresenceFormula = (formula, name, member, needTruthy) => {
|
|
|
340
331
|
* @returns {GuardFormula | null} formula, or null when it has no presence atom
|
|
341
332
|
*/
|
|
342
333
|
const buildFramePresenceFormula = (parser, frame) => {
|
|
343
|
-
const HarmonyEvaluatedImportSpecifierDependency =
|
|
344
|
-
getHarmonyEvaluatedImportSpecifierDependency();
|
|
345
334
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
346
335
|
/** @type {Map<number, HarmonyEvaluatedImportSpecifierDependency>} */
|
|
347
336
|
const depByRangeStart = new Map();
|
|
348
337
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
349
|
-
const dep =
|
|
350
|
-
|
|
338
|
+
const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
|
|
339
|
+
deps[i]
|
|
340
|
+
);
|
|
341
|
+
if (dep.isHarmonyEvaluatedImportSpecifier === true && dep.range) {
|
|
351
342
|
depByRangeStart.set(dep.range[0], dep);
|
|
352
343
|
}
|
|
353
344
|
}
|
|
@@ -6,19 +6,20 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
|
+
const InitFragment = require("../InitFragment");
|
|
9
10
|
const Module = require("../Module");
|
|
10
11
|
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
|
12
13
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
14
|
+
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
13
15
|
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
16
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
17
|
+
/** @import { GetConditionFn, LazyUntil } from "../Dependency" */
|
|
18
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
19
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
20
|
+
/** @import { ConnectionState } from "../ModuleGraphConnection" */
|
|
21
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
22
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
22
23
|
|
|
23
24
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
24
25
|
/**
|
|
@@ -93,7 +94,8 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
|
93
94
|
* @returns {void}
|
|
94
95
|
*/
|
|
95
96
|
apply(dependency, source, templateContext) {
|
|
96
|
-
const { moduleGraph, concatenationScope } =
|
|
97
|
+
const { moduleGraph, concatenationScope, runtime, initFragments } =
|
|
98
|
+
templateContext;
|
|
97
99
|
|
|
98
100
|
const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
|
|
99
101
|
|
|
@@ -103,6 +105,33 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
if (concatenationScope && concatenationScope.isModuleInScope(module)) {
|
|
108
|
+
if (concatenationScope.isModuleWrapped(module)) {
|
|
109
|
+
const dep = /** @type {HarmonyImportSideEffectDependency} */ (
|
|
110
|
+
dependency
|
|
111
|
+
);
|
|
112
|
+
if (ImportPhaseUtils.isDefer(dep.phase)) return;
|
|
113
|
+
const connection = moduleGraph.getConnection(dep);
|
|
114
|
+
if (!connection || !connection.isTargetActive(runtime)) return;
|
|
115
|
+
// A hoisted body cannot be deferred, so its imports evaluate at their
|
|
116
|
+
// own slots; calling from here would run them after everything hoisted
|
|
117
|
+
// in between. Eagerness stops at one level: a module is generated
|
|
118
|
+
// before its importers, so it never learns whether it is itself eager.
|
|
119
|
+
if (concatenationScope.isWrapped()) {
|
|
120
|
+
initFragments.push(
|
|
121
|
+
new InitFragment(
|
|
122
|
+
`${concatenationScope.createModuleReference(module, {
|
|
123
|
+
moduleExportsAccess: true,
|
|
124
|
+
asiSafe: true
|
|
125
|
+
})};\n`,
|
|
126
|
+
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
127
|
+
/** @type {number} */ (dep.sourceOrder),
|
|
128
|
+
`cjs eager init ${module.identifier()}`
|
|
129
|
+
)
|
|
130
|
+
);
|
|
131
|
+
} else {
|
|
132
|
+
concatenationScope.registerEagerModule(module);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
106
135
|
return;
|
|
107
136
|
}
|
|
108
137
|
super.apply(dependency, source, templateContext);
|
|
@@ -11,6 +11,7 @@ const Template = require("../Template");
|
|
|
11
11
|
const {
|
|
12
12
|
InlinedUsedName,
|
|
13
13
|
isExportInlined,
|
|
14
|
+
isInlineEnabled,
|
|
14
15
|
isInlineExportsEnabled
|
|
15
16
|
} = require("../optimize/InlineExports");
|
|
16
17
|
const {
|
|
@@ -18,37 +19,48 @@ const {
|
|
|
18
19
|
} = require("../optimize/InnerGraph");
|
|
19
20
|
const { getTrimmedIdsAndRange } = require("../util/chainedImports");
|
|
20
21
|
const makeSerializable = require("../util/makeSerializable");
|
|
21
|
-
const memoize = require("../util/memoize");
|
|
22
22
|
const { propertyAccess } = require("../util/property");
|
|
23
23
|
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
24
24
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
25
|
+
const HarmonyImportGuard = require("./HarmonyImportGuard");
|
|
25
26
|
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
26
27
|
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** @
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/** @
|
|
28
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
29
|
+
/** @import { GetConditionFn, ReferencedExports } from "../Dependency" */
|
|
30
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
31
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
32
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
33
|
+
/**
|
|
34
|
+
* @import ModuleGraphConnection, {
|
|
35
|
+
* ConnectionState
|
|
36
|
+
* } from "../ModuleGraphConnection"
|
|
37
|
+
*/
|
|
38
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
39
|
+
/**
|
|
40
|
+
* @import {
|
|
41
|
+
* DestructuringAssignmentProperties,
|
|
42
|
+
* ImportAttributes,
|
|
43
|
+
* Range
|
|
44
|
+
* } from "../javascript/JavascriptParser"
|
|
45
|
+
*/
|
|
46
|
+
/** @import { UsedByExports } from "../optimize/InnerGraph" */
|
|
47
|
+
/**
|
|
48
|
+
* @import {
|
|
49
|
+
* ObjectDeserializerContext,
|
|
50
|
+
* ObjectSerializerContext
|
|
51
|
+
* } from "../serialization/ObjectMiddleware"
|
|
52
|
+
*/
|
|
53
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
54
|
+
/** @import { IdRanges } from "../util/chainedImports" */
|
|
55
|
+
/** @import { ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
46
56
|
/** @typedef {HarmonyImportDependency.Ids} Ids */
|
|
47
|
-
/** @
|
|
48
|
-
/** @
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
58
|
+
/** @import { DependencyGuard } from "./HarmonyImportGuard" */
|
|
59
|
+
/**
|
|
60
|
+
* @import {
|
|
61
|
+
* JavascriptModuleBuildMeta
|
|
62
|
+
* } from "../javascript/JavascriptModule"
|
|
63
|
+
*/
|
|
52
64
|
|
|
53
65
|
const idsSymbol = /** @type {symbol} */ (
|
|
54
66
|
Symbol("HarmonyImportSpecifierDependency.ids")
|
|
@@ -56,7 +68,22 @@ const idsSymbol = /** @type {symbol} */ (
|
|
|
56
68
|
|
|
57
69
|
const { ExportPresenceModes } = HarmonyImportDependency;
|
|
58
70
|
|
|
71
|
+
/**
|
|
72
|
+
* One condition closure per module graph and variant rather than per dependency.
|
|
73
|
+
* The dependency the condition was built for is always the one on the connection
|
|
74
|
+
* it is called with, since `ModuleGraph#setResolvedModule` is the only caller of
|
|
75
|
+
* `getCondition` and pairs the two. Indexed by
|
|
76
|
+
* `(usedByExports ? 1 : 0) | (inlineEnabled ? 2 : 0)`.
|
|
77
|
+
* @type {WeakMap<ModuleGraph, (GetConditionFn | undefined)[]>}
|
|
78
|
+
*/
|
|
79
|
+
const conditionsByModuleGraph = new WeakMap();
|
|
80
|
+
|
|
59
81
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
82
|
+
// read by `HarmonyImportGuard` in place of `instanceof`, which would cycle
|
|
83
|
+
get isHarmonyImportSpecifier() {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
60
87
|
/**
|
|
61
88
|
* Creates an instance of HarmonyImportSpecifierDependency.
|
|
62
89
|
* @param {string} request request
|
|
@@ -180,36 +207,59 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
180
207
|
moduleGraph
|
|
181
208
|
);
|
|
182
209
|
if (usedByExportsCondition === false) return false;
|
|
210
|
+
const inlineEnabled = isInlineExportsEnabled(moduleGraph);
|
|
183
211
|
// Keep the connection unconditional (fast path) when nothing can deactivate it
|
|
184
212
|
if (
|
|
185
213
|
usedByExportsCondition === null &&
|
|
186
214
|
this.branchGuards === undefined &&
|
|
187
|
-
!
|
|
215
|
+
!inlineEnabled
|
|
188
216
|
) {
|
|
189
217
|
return null;
|
|
190
218
|
}
|
|
191
|
-
|
|
192
|
-
|
|
219
|
+
// Everything the condition still needs is either per module graph or on
|
|
220
|
+
// the connection it is called with, so one closure per variant serves the
|
|
221
|
+
// whole graph instead of one per dependency.
|
|
222
|
+
const slot =
|
|
223
|
+
(usedByExportsCondition === null ? 0 : 1) | (inlineEnabled ? 2 : 0);
|
|
224
|
+
let variants = conditionsByModuleGraph.get(moduleGraph);
|
|
225
|
+
if (variants === undefined) {
|
|
226
|
+
variants = [undefined, undefined, undefined, undefined];
|
|
227
|
+
conditionsByModuleGraph.set(moduleGraph, variants);
|
|
228
|
+
}
|
|
229
|
+
const cached = variants[slot];
|
|
230
|
+
if (cached !== undefined) return cached;
|
|
231
|
+
/** @type {GetConditionFn} */
|
|
232
|
+
const condition = (connection, runtime) => {
|
|
233
|
+
const dep = /** @type {HarmonyImportSpecifierDependency} */ (
|
|
234
|
+
connection.dependency
|
|
235
|
+
);
|
|
193
236
|
if (usedByExportsCondition !== null) {
|
|
194
237
|
const result = usedByExportsCondition(connection, runtime);
|
|
195
238
|
if (result === false) return false;
|
|
196
239
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
240
|
+
// `isInlineEnabled` is the cheap module-level precondition of
|
|
241
|
+
// `isExportInlined`; checking it here keeps the id lookup off the hot
|
|
242
|
+
// path for the common target module that has no inlined exports
|
|
243
|
+
if (inlineEnabled && isInlineEnabled(connection.module)) {
|
|
244
|
+
const ids = dep.getIds(moduleGraph);
|
|
245
|
+
if (
|
|
246
|
+
ids.length > 0 &&
|
|
247
|
+
isExportInlined(moduleGraph, connection.module, ids, runtime)
|
|
248
|
+
) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
203
251
|
}
|
|
204
252
|
const guards = dep.branchGuards;
|
|
205
253
|
if (
|
|
206
254
|
guards !== undefined &&
|
|
207
|
-
|
|
255
|
+
HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
|
|
208
256
|
) {
|
|
209
257
|
return false;
|
|
210
258
|
}
|
|
211
259
|
return true;
|
|
212
260
|
};
|
|
261
|
+
variants[slot] = condition;
|
|
262
|
+
return condition;
|
|
213
263
|
}
|
|
214
264
|
|
|
215
265
|
/**
|
|
@@ -286,21 +336,19 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
286
336
|
*/
|
|
287
337
|
_getReferencedExportsInDestructuring(ids) {
|
|
288
338
|
if (this.referencedPropertiesInDestructuring) {
|
|
289
|
-
/** @type {
|
|
290
|
-
const
|
|
339
|
+
/** @type {ReferencedExports} */
|
|
340
|
+
const refs = [];
|
|
291
341
|
traverseDestructuringAssignmentProperties(
|
|
292
342
|
this.referencedPropertiesInDestructuring,
|
|
293
|
-
(stack) =>
|
|
343
|
+
(stack) => {
|
|
344
|
+
const idsInDestructuring = stack.map((p) => p.id);
|
|
345
|
+
// Destructuring consumer can't accept an inlined literal
|
|
346
|
+
refs.push({
|
|
347
|
+
name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
|
|
348
|
+
canInline: false
|
|
349
|
+
});
|
|
350
|
+
}
|
|
294
351
|
);
|
|
295
|
-
/** @type {ReferencedExports} */
|
|
296
|
-
const refs = [];
|
|
297
|
-
for (const idsInDestructuring of refsInDestructuring) {
|
|
298
|
-
// Destructuring consumer can't accept an inlined literal
|
|
299
|
-
refs.push({
|
|
300
|
-
name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
|
|
301
|
-
canInline: false
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
352
|
return refs;
|
|
305
353
|
}
|
|
306
354
|
return ids
|
|
@@ -475,7 +523,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
475
523
|
dep,
|
|
476
524
|
source,
|
|
477
525
|
templateContext,
|
|
478
|
-
trimmedIds
|
|
526
|
+
trimmedIds,
|
|
527
|
+
connection
|
|
479
528
|
);
|
|
480
529
|
if (dep.shorthand) {
|
|
481
530
|
source.insert(trimmedRangeEnd, `: ${exportExpr}`);
|
|
@@ -521,13 +570,14 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
521
570
|
});
|
|
522
571
|
}
|
|
523
572
|
);
|
|
573
|
+
// loop-invariant: resolve the imported module's exports info once
|
|
574
|
+
const destructuredExportsInfo = moduleGraph.getExportsInfo(
|
|
575
|
+
/** @type {Module} */ (moduleGraph.getModule(dep))
|
|
576
|
+
);
|
|
524
577
|
for (const { ids, shorthand, range } of replacementsInDestructuring) {
|
|
525
578
|
/** @type {Ids} */
|
|
526
579
|
const concatedIds = [...prefixedIds, ...ids];
|
|
527
|
-
const
|
|
528
|
-
const used = moduleGraph
|
|
529
|
-
.getExportsInfo(module)
|
|
530
|
-
.getUsedName(concatedIds, runtime);
|
|
580
|
+
const used = destructuredExportsInfo.getUsedName(concatedIds, runtime);
|
|
531
581
|
if (!used) {
|
|
532
582
|
return;
|
|
533
583
|
} else if (used instanceof InlinedUsedName) {
|
|
@@ -559,12 +609,12 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
559
609
|
* @param {ReplaceSource} source source
|
|
560
610
|
* @param {DependencyTemplateContext} templateContext context
|
|
561
611
|
* @param {Ids} ids ids
|
|
612
|
+
* @param {ModuleGraphConnection | undefined} connection the resolved connection for dep
|
|
562
613
|
* @returns {string} generated code
|
|
563
614
|
*/
|
|
564
|
-
_getCodeForIds(dep, source, templateContext, ids) {
|
|
615
|
+
_getCodeForIds(dep, source, templateContext, ids, connection) {
|
|
565
616
|
const { moduleGraph, module, runtime, concatenationScope } =
|
|
566
617
|
templateContext;
|
|
567
|
-
const connection = moduleGraph.getConnection(dep);
|
|
568
618
|
/** @type {string} */
|
|
569
619
|
let exportExpr;
|
|
570
620
|
|
|
@@ -640,5 +690,6 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
640
690
|
}
|
|
641
691
|
};
|
|
642
692
|
|
|
693
|
+
HarmonyImportSpecifierDependency.idsSymbol = idsSymbol;
|
|
694
|
+
|
|
643
695
|
module.exports = HarmonyImportSpecifierDependency;
|
|
644
|
-
module.exports.idsSymbol = idsSymbol;
|
|
@@ -27,9 +27,13 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
|
27
27
|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
|
28
28
|
const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* JavascriptParserOptions
|
|
33
|
+
* } from "../../declarations/WebpackOptions"
|
|
34
|
+
*/
|
|
35
|
+
/** @import Compiler from "../Compiler" */
|
|
36
|
+
/** @import Parser from "../javascript/JavascriptParser" */
|
|
33
37
|
|
|
34
38
|
/**
|
|
35
39
|
* Defines the harmony modules plugin options type used by this module.
|
|
@@ -8,9 +8,7 @@
|
|
|
8
8
|
const ConstDependency = require("./ConstDependency");
|
|
9
9
|
const HarmonyExports = require("./HarmonyExports");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
13
|
-
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
11
|
+
/** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
|
|
14
12
|
|
|
15
13
|
const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
|
|
16
14
|
|