@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -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();
|
|
@@ -11,25 +11,35 @@ const InitFragment = require("../InitFragment");
|
|
|
11
11
|
const Template = require("../Template");
|
|
12
12
|
const AwaitDependenciesInitFragment = require("../async-modules/AwaitDependenciesInitFragment");
|
|
13
13
|
const isGeneratorLowered = require("../async-modules/isGeneratorLowered");
|
|
14
|
+
const memoize = require("../util/memoize");
|
|
14
15
|
const { filterRuntime, mergeRuntime } = require("../util/runtime");
|
|
15
16
|
const HarmonyLinkingError = require("./HarmonyLinkingError");
|
|
16
17
|
const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
|
|
17
18
|
const ModuleDependency = require("./ModuleDependency");
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/** @
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/** @
|
|
20
|
+
const getExternalModule = memoize(() => require("../ExternalModule"));
|
|
21
|
+
|
|
22
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
23
|
+
/**
|
|
24
|
+
* @import {
|
|
25
|
+
* JavascriptParserOptions
|
|
26
|
+
* } from "../../declarations/WebpackOptions"
|
|
27
|
+
*/
|
|
28
|
+
/** @import { ReferencedExports } from "../Dependency" */
|
|
29
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
30
|
+
/** @import ExportsInfo from "../ExportsInfo" */
|
|
31
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
32
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
33
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
34
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
35
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
36
|
+
/**
|
|
37
|
+
* @import {
|
|
38
|
+
* ObjectDeserializerContext,
|
|
39
|
+
* ObjectSerializerContext
|
|
40
|
+
* } from "../serialization/ObjectMiddleware"
|
|
41
|
+
*/
|
|
42
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
33
43
|
|
|
34
44
|
/** @typedef {0 | 1 | 2 | 3} ExportPresenceMode */
|
|
35
45
|
|
|
@@ -90,6 +100,31 @@ const getNonOptionalPart = (members, membersOptionals) => {
|
|
|
90
100
|
|
|
91
101
|
/** @typedef {string[]} Ids */
|
|
92
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Export names a lazy barrel still defers, so they are missing from its provided
|
|
105
|
+
* exports without being absent from the module.
|
|
106
|
+
* @param {Module} module the imported module
|
|
107
|
+
* @returns {Set<string> | true | undefined} deferred names, true when a deferred star re-export may provide any name, undefined when none
|
|
108
|
+
*/
|
|
109
|
+
const getDeferredExports = (module) => {
|
|
110
|
+
const factoryMeta = module.factoryMeta;
|
|
111
|
+
if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
|
|
112
|
+
/** @type {Set<string> | undefined} */
|
|
113
|
+
let names;
|
|
114
|
+
for (const dep of module.dependencies) {
|
|
115
|
+
// TODO remove in webpack 6
|
|
116
|
+
// These may be missing on custom dependency types not extending the base Dependency
|
|
117
|
+
if (!("getLazyUntil" in dep) || !("isLazy" in dep)) continue;
|
|
118
|
+
if (!dep.isLazy()) continue;
|
|
119
|
+
const until = dep.getLazyUntil();
|
|
120
|
+
if (until === Dependency.LAZY_UNTIL_FALLBACK) return true;
|
|
121
|
+
if (until !== Dependency.LAZY_UNTIL_ID) continue;
|
|
122
|
+
if (names === undefined) names = new Set();
|
|
123
|
+
names.add(/** @type {string} */ (dep.getLazyName()));
|
|
124
|
+
}
|
|
125
|
+
return names;
|
|
126
|
+
};
|
|
127
|
+
|
|
93
128
|
class HarmonyImportDependency extends ModuleDependency {
|
|
94
129
|
/**
|
|
95
130
|
* Creates an instance of HarmonyImportDependency.
|
|
@@ -135,9 +170,10 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
135
170
|
|
|
136
171
|
/**
|
|
137
172
|
* Returns true if this dependency can be concatenated
|
|
173
|
+
* @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
|
|
138
174
|
* @returns {boolean} true if this dependency can be concatenated
|
|
139
175
|
*/
|
|
140
|
-
canConcatenate() {
|
|
176
|
+
canConcatenate(concatenateCommonJsModules) {
|
|
141
177
|
return true;
|
|
142
178
|
}
|
|
143
179
|
|
|
@@ -177,9 +213,14 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
177
213
|
const importedModule = /** @type {Module} */ (moduleGraph.getModule(this));
|
|
178
214
|
const meta = moduleGraph.getMeta(module);
|
|
179
215
|
|
|
216
|
+
// An async external is a promise webpack awaits, not a module record with
|
|
217
|
+
// an evaluating state, so deferring its namespace would never throw.
|
|
180
218
|
const isDeferred =
|
|
181
219
|
ImportPhaseUtils.isDefer(this.phase) &&
|
|
182
|
-
!(
|
|
220
|
+
!(
|
|
221
|
+
/** @type {BuildMeta} */ (importedModule.buildMeta).async &&
|
|
222
|
+
importedModule instanceof getExternalModule()
|
|
223
|
+
);
|
|
183
224
|
|
|
184
225
|
const metaKey = isDeferred ? "deferredImportVarMap" : "importVarMap";
|
|
185
226
|
let importVarMap = meta[metaKey];
|
|
@@ -275,48 +316,63 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
275
316
|
(exportsType !== "default-with-named" || ids[0] !== "default") &&
|
|
276
317
|
moduleGraph.isExportProvided(importedModule, ids) === false
|
|
277
318
|
) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
319
|
+
const deferredExports = getDeferredExports(importedModule);
|
|
320
|
+
|
|
321
|
+
if (
|
|
322
|
+
deferredExports !== true &&
|
|
323
|
+
(deferredExports === undefined || !deferredExports.has(ids[0]))
|
|
324
|
+
) {
|
|
325
|
+
// We are sure that it's not provided
|
|
326
|
+
|
|
327
|
+
// Try to provide detailed info in the error message
|
|
328
|
+
let pos = 0;
|
|
329
|
+
let exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
330
|
+
while (pos < ids.length && exportsInfo) {
|
|
331
|
+
const id = ids[pos++];
|
|
332
|
+
const exportInfo = exportsInfo.getReadOnlyExportInfo(id);
|
|
333
|
+
if (exportInfo.provided === false) {
|
|
334
|
+
// We are sure that it's not provided
|
|
335
|
+
let providedExports = exportsInfo.getProvidedExports();
|
|
336
|
+
// only the first level names the imported module itself
|
|
337
|
+
if (
|
|
338
|
+
pos === 1 &&
|
|
339
|
+
deferredExports !== undefined &&
|
|
340
|
+
Array.isArray(providedExports)
|
|
341
|
+
) {
|
|
342
|
+
providedExports = [...providedExports, ...deferredExports];
|
|
343
|
+
}
|
|
344
|
+
const moreInfo = !Array.isArray(providedExports)
|
|
345
|
+
? " (possible exports unknown)"
|
|
346
|
+
: providedExports.length === 0
|
|
347
|
+
? " (module has no exports)"
|
|
348
|
+
: ` (possible exports: ${providedExports.join(", ")})`;
|
|
349
|
+
return [
|
|
350
|
+
new HarmonyLinkingError(
|
|
351
|
+
`export ${ids
|
|
352
|
+
.slice(0, pos)
|
|
353
|
+
.map((id) => `'${id}'`)
|
|
354
|
+
.join(".")} ${additionalMessage} was not found in '${
|
|
355
|
+
this.userRequest
|
|
356
|
+
}'${moreInfo}`
|
|
357
|
+
)
|
|
358
|
+
];
|
|
359
|
+
}
|
|
360
|
+
exportsInfo =
|
|
361
|
+
/** @type {ExportsInfo} */
|
|
362
|
+
(exportInfo.getNestedExportsInfo());
|
|
304
363
|
}
|
|
305
|
-
exportsInfo =
|
|
306
|
-
/** @type {ExportsInfo} */
|
|
307
|
-
(exportInfo.getNestedExportsInfo());
|
|
308
|
-
}
|
|
309
364
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
365
|
+
// General error message
|
|
366
|
+
return [
|
|
367
|
+
new HarmonyLinkingError(
|
|
368
|
+
`export ${ids
|
|
369
|
+
.map((id) => `'${id}'`)
|
|
370
|
+
.join(".")} ${additionalMessage} was not found in '${
|
|
371
|
+
this.userRequest
|
|
372
|
+
}'`
|
|
373
|
+
)
|
|
374
|
+
];
|
|
375
|
+
}
|
|
320
376
|
}
|
|
321
377
|
}
|
|
322
378
|
switch (exportsType) {
|
|
@@ -384,8 +440,6 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
384
440
|
}
|
|
385
441
|
}
|
|
386
442
|
|
|
387
|
-
module.exports = HarmonyImportDependency;
|
|
388
|
-
|
|
389
443
|
/** @type {WeakMap<Module, WeakMap<Module, RuntimeSpec | boolean>>} */
|
|
390
444
|
const importEmittedMap = new WeakMap();
|
|
391
445
|
|
|
@@ -462,8 +516,13 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
462
516
|
}
|
|
463
517
|
|
|
464
518
|
const importStatement = dep.getImportStatement(false, templateContext);
|
|
519
|
+
// A module deferring itself is already evaluating: awaiting it would probe
|
|
520
|
+
// the deferred namespace and force the evaluation it must not trigger.
|
|
521
|
+
const isSelfDeferred =
|
|
522
|
+
ImportPhaseUtils.isDefer(dep.phase) && referencedModule === module;
|
|
465
523
|
if (
|
|
466
524
|
referencedModule &&
|
|
525
|
+
!isSelfDeferred &&
|
|
467
526
|
templateContext.moduleGraph.isAsync(referencedModule)
|
|
468
527
|
) {
|
|
469
528
|
templateContext.initFragments.push(
|
|
@@ -524,5 +583,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
524
583
|
}
|
|
525
584
|
};
|
|
526
585
|
|
|
527
|
-
|
|
528
|
-
|
|
586
|
+
HarmonyImportDependency.ExportPresenceModes = ExportPresenceModes;
|
|
587
|
+
HarmonyImportDependency.getNonOptionalPart = getNonOptionalPart;
|
|
588
|
+
|
|
589
|
+
module.exports = HarmonyImportDependency;
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const ImportedBindingAssignmentError = require("../errors/ImportedBindingAssignmentError");
|
|
9
9
|
const WebpackError = require("../errors/WebpackError");
|
|
10
|
+
const getParserHooks = require("../hmr/parserHooks");
|
|
10
11
|
const {
|
|
11
12
|
VariableInfo,
|
|
12
13
|
getImportAttributes
|
|
@@ -29,25 +30,31 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
|
|
|
29
30
|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
30
31
|
const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
|
|
31
32
|
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/** @
|
|
46
|
-
/** @
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @import {
|
|
35
|
+
* Expression,
|
|
36
|
+
* PrivateIdentifier,
|
|
37
|
+
* Identifier,
|
|
38
|
+
* MemberExpression
|
|
39
|
+
* } from "estree"
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* @import {
|
|
43
|
+
* JavascriptParserOptions
|
|
44
|
+
* } from "../../declarations/WebpackOptions"
|
|
45
|
+
*/
|
|
46
|
+
/** @import Module from "../Module" */
|
|
47
|
+
/** @import { JavascriptModuleBuildInfo } from "../javascript/JavascriptModule" */
|
|
48
|
+
/**
|
|
49
|
+
* @import JavascriptParser, {
|
|
50
|
+
* ImportAttributes,
|
|
51
|
+
* Range,
|
|
52
|
+
* Members
|
|
53
|
+
* } from "../javascript/JavascriptParser"
|
|
54
|
+
*/
|
|
55
|
+
/** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
56
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
57
|
+
/** @import { GuardFrame } from "./HarmonyImportGuard" */
|
|
51
58
|
|
|
52
59
|
const harmonySpecifierTag = Symbol("harmony import");
|
|
53
60
|
|
|
@@ -66,10 +73,24 @@ const EMPTY_ID_RANGES = [];
|
|
|
66
73
|
* @property {boolean} await
|
|
67
74
|
* @property {ImportAttributes=} attributes
|
|
68
75
|
* @property {ImportPhaseType} phase
|
|
76
|
+
* @property {boolean} used whether the binding is referenced anywhere
|
|
77
|
+
* @property {HarmonyImportSideEffectDependency | undefined} dependency the statement's own dependency
|
|
69
78
|
*/
|
|
70
79
|
|
|
71
80
|
const PLUGIN_NAME = "HarmonyImportDependencyParserPlugin";
|
|
72
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Records that an import binding is referenced, so it is not reported as an
|
|
84
|
+
* unused specifier naming a missing export.
|
|
85
|
+
* @param {HarmonySettings | undefined} settings settings of the referenced tag
|
|
86
|
+
* @returns {boolean} true when the reference was a harmony import specifier
|
|
87
|
+
*/
|
|
88
|
+
const markUsed = (settings) => {
|
|
89
|
+
if (!settings) return false;
|
|
90
|
+
settings.used = true;
|
|
91
|
+
return true;
|
|
92
|
+
};
|
|
93
|
+
|
|
73
94
|
/**
|
|
74
95
|
* Gets in operator harmony import info.
|
|
75
96
|
* @param {JavascriptParser} parser the parser
|
|
@@ -102,6 +123,7 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
|
102
123
|
if (!settings) {
|
|
103
124
|
return;
|
|
104
125
|
}
|
|
126
|
+
settings.used = true;
|
|
105
127
|
|
|
106
128
|
return {
|
|
107
129
|
leftPart,
|
|
@@ -120,7 +142,10 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
|
120
142
|
const findImportSpecifier = (parser, node) => {
|
|
121
143
|
switch (node.type) {
|
|
122
144
|
case "Identifier":
|
|
123
|
-
return
|
|
145
|
+
return markUsed(
|
|
146
|
+
/** @type {HarmonySettings | undefined} */
|
|
147
|
+
(parser.getTagData(node.name, harmonySpecifierTag))
|
|
148
|
+
);
|
|
124
149
|
case "UnaryExpression":
|
|
125
150
|
return findImportSpecifier(
|
|
126
151
|
parser,
|
|
@@ -147,7 +172,7 @@ const findImportSpecifier = (parser, node) => {
|
|
|
147
172
|
}
|
|
148
173
|
};
|
|
149
174
|
|
|
150
|
-
|
|
175
|
+
class HarmonyImportDependencyParserPlugin {
|
|
151
176
|
/**
|
|
152
177
|
* Creates an instance of HarmonyImportDependencyParserPlugin.
|
|
153
178
|
* @param {JavascriptParserOptions} options options
|
|
@@ -208,6 +233,35 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
208
233
|
this.options.sourceImport
|
|
209
234
|
);
|
|
210
235
|
|
|
236
|
+
// Parsers are reused across modules, so both are reset per program.
|
|
237
|
+
/** @type {HarmonySettings[]} */
|
|
238
|
+
const declaredSpecifiers = [];
|
|
239
|
+
/** @type {HarmonyImportSideEffectDependency | undefined} */
|
|
240
|
+
let lastSideEffectDependency;
|
|
241
|
+
|
|
242
|
+
parser.hooks.program.tap(PLUGIN_NAME, () => {
|
|
243
|
+
declaredSpecifiers.length = 0;
|
|
244
|
+
lastSideEffectDependency = undefined;
|
|
245
|
+
});
|
|
246
|
+
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|
|
247
|
+
for (const settings of declaredSpecifiers) {
|
|
248
|
+
const dependency = settings.dependency;
|
|
249
|
+
if (dependency === undefined || settings.used) continue;
|
|
250
|
+
if (dependency.unusedSpecifiers === undefined) {
|
|
251
|
+
dependency.unusedSpecifiers = {
|
|
252
|
+
exportPresenceMode: this.exportPresenceMode,
|
|
253
|
+
specifiers: []
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
dependency.unusedSpecifiers.specifiers.push([
|
|
257
|
+
settings.ids,
|
|
258
|
+
settings.name
|
|
259
|
+
]);
|
|
260
|
+
}
|
|
261
|
+
declaredSpecifiers.length = 0;
|
|
262
|
+
lastSideEffectDependency = undefined;
|
|
263
|
+
});
|
|
264
|
+
|
|
211
265
|
/**
|
|
212
266
|
* Gets non optional member chain.
|
|
213
267
|
* @param {MemberExpression} node member expression
|
|
@@ -223,7 +277,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
223
277
|
const expr = /** @type {Identifier} */ (expression);
|
|
224
278
|
if (
|
|
225
279
|
parser.isVariableDefined(expr.name) ||
|
|
226
|
-
|
|
280
|
+
markUsed(
|
|
281
|
+
/** @type {HarmonySettings | undefined} */
|
|
282
|
+
(parser.getTagData(expr.name, harmonySpecifierTag))
|
|
283
|
+
)
|
|
227
284
|
) {
|
|
228
285
|
return true;
|
|
229
286
|
}
|
|
@@ -262,6 +319,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
262
319
|
);
|
|
263
320
|
sideEffectDep.loc = parser.getLocation(statement);
|
|
264
321
|
parser.state.module.addDependency(sideEffectDep);
|
|
322
|
+
lastSideEffectDependency = sideEffectDep;
|
|
265
323
|
return true;
|
|
266
324
|
});
|
|
267
325
|
parser.hooks.importSpecifier.tap(
|
|
@@ -269,18 +327,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
269
327
|
(statement, source, id, name) => {
|
|
270
328
|
const ids = id === null ? [] : [id];
|
|
271
329
|
const phase = getImportPhase(parser, statement);
|
|
272
|
-
|
|
330
|
+
const settings = /** @type {HarmonySettings} */ ({
|
|
273
331
|
name,
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
332
|
+
source,
|
|
333
|
+
ids,
|
|
334
|
+
sourceOrder: parser.state.lastHarmonyImportOrder,
|
|
335
|
+
attributes: getImportAttributes(statement),
|
|
336
|
+
phase,
|
|
337
|
+
used: false,
|
|
338
|
+
dependency: lastSideEffectDependency
|
|
339
|
+
});
|
|
340
|
+
parser.tagVariable(name, harmonySpecifierTag, settings);
|
|
341
|
+
// The statement's dependency carries them, so a never-referenced
|
|
342
|
+
// one still resolves; a namespace import names no export.
|
|
343
|
+
if (ids.length !== 0) declaredSpecifiers.push(settings);
|
|
284
344
|
return true;
|
|
285
345
|
}
|
|
286
346
|
);
|
|
@@ -323,16 +383,37 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
323
383
|
nameInfo &&
|
|
324
384
|
nameInfo.rootInfo instanceof VariableInfo &&
|
|
325
385
|
nameInfo.rootInfo.name &&
|
|
326
|
-
|
|
386
|
+
markUsed(
|
|
387
|
+
/** @type {HarmonySettings | undefined} */
|
|
388
|
+
(parser.getTagData(nameInfo.rootInfo.name, harmonySpecifierTag))
|
|
389
|
+
)
|
|
327
390
|
) {
|
|
328
391
|
return true;
|
|
329
392
|
}
|
|
330
393
|
}
|
|
331
394
|
);
|
|
395
|
+
// Concatenation would turn the binding into a plain local, losing the
|
|
396
|
+
// getter-only property whose write throws.
|
|
397
|
+
parser.hooks.assign.for(harmonySpecifierTag).tap(PLUGIN_NAME, (expr) => {
|
|
398
|
+
const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
|
|
399
|
+
markUsed(settings);
|
|
400
|
+
/** @type {JavascriptModuleBuildInfo} */
|
|
401
|
+
(parser.state.module.buildInfo).moduleConcatenationBailout =
|
|
402
|
+
"assignment to an imported binding";
|
|
403
|
+
// A named import is written through the namespace's getter-only
|
|
404
|
+
// property, which throws on its own. A namespace one is the binding
|
|
405
|
+
// itself, and nothing webpack can emit for it throws, so report it.
|
|
406
|
+
if (settings.ids.length === 0) {
|
|
407
|
+
const error = new ImportedBindingAssignmentError(settings.name);
|
|
408
|
+
error.loc = parser.getLocation(expr);
|
|
409
|
+
parser.state.module.addError(error);
|
|
410
|
+
}
|
|
411
|
+
});
|
|
332
412
|
parser.hooks.expression
|
|
333
413
|
.for(harmonySpecifierTag)
|
|
334
414
|
.tap(PLUGIN_NAME, (expr) => {
|
|
335
415
|
const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
|
|
416
|
+
settings.used = true;
|
|
336
417
|
|
|
337
418
|
const dep = new HarmonyImportSpecifierDependency(
|
|
338
419
|
settings.source,
|
|
@@ -371,6 +452,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
371
452
|
const settings =
|
|
372
453
|
/** @type {HarmonySettings} */
|
|
373
454
|
(parser.currentTagData);
|
|
455
|
+
settings.used = true;
|
|
374
456
|
const nonOptionalMembers = getNonOptionalPart(
|
|
375
457
|
members,
|
|
376
458
|
membersOptionals
|
|
@@ -426,6 +508,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
426
508
|
const settings = /** @type {HarmonySettings} */ (
|
|
427
509
|
parser.currentTagData
|
|
428
510
|
);
|
|
511
|
+
settings.used = true;
|
|
429
512
|
const nonOptionalMembers = getNonOptionalPart(
|
|
430
513
|
members,
|
|
431
514
|
membersOptionals
|
|
@@ -486,6 +569,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
486
569
|
.for(harmonySpecifierTag)
|
|
487
570
|
.tap(PLUGIN_NAME, (expression, members) => {
|
|
488
571
|
const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
|
|
572
|
+
settings.used = true;
|
|
489
573
|
if (!ImportPhaseUtils.isDefer(settings.phase)) return;
|
|
490
574
|
if (expression.operator !== "=") return;
|
|
491
575
|
if (members.length !== 1) return;
|
|
@@ -496,7 +580,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
496
580
|
return true;
|
|
497
581
|
});
|
|
498
582
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
499
|
-
|
|
583
|
+
getParserHooks(parser);
|
|
500
584
|
hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
501
585
|
if (!HarmonyExports.isEnabled(parser.state)) {
|
|
502
586
|
// This is not a harmony module, skip it
|
|
@@ -567,6 +651,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
567
651
|
return { consequent, alternate };
|
|
568
652
|
});
|
|
569
653
|
}
|
|
570
|
-
}
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
HarmonyImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
|
|
571
657
|
|
|
572
|
-
module.exports
|
|
658
|
+
module.exports = HarmonyImportDependencyParserPlugin;
|