@depup/webpack 5.106.1-depup.0 → 5.109.2-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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Natsu @xiaoxiaojx
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const InitFragment = require("../InitFragment");
|
|
9
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
+
|
|
11
|
+
/** @typedef {import("webpack-sources").Source} Source */
|
|
12
|
+
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
13
|
+
/** @typedef {import("../ExportsInfo").UsedName} UsedName */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @typedef {object} ExportBinding
|
|
17
|
+
* @property {UsedName} name the used export name
|
|
18
|
+
* @property {string} value the variable expression
|
|
19
|
+
* @property {"getter" | "value"=} bindingType "value" for value binding, defaults to "getter"
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Init fragment for const export bindings.
|
|
24
|
+
* Generates a flat-array __webpack_require__.d() call.
|
|
25
|
+
* Getter bindings: "key", () => expr (2 items).
|
|
26
|
+
* Value bindings: "key", 0, expr (3 items, 0 is sentinel).
|
|
27
|
+
*
|
|
28
|
+
* Uses a separate key ("harmony-export-bindings") from HarmonyExportInitFragment
|
|
29
|
+
* so the two fragment types do not merge and cannot interfere with each
|
|
30
|
+
* other's placement (top vs bottom).
|
|
31
|
+
* @extends {InitFragment<GenerateContext>} Context
|
|
32
|
+
*/
|
|
33
|
+
class ExportBindingInitFragment extends InitFragment {
|
|
34
|
+
/**
|
|
35
|
+
* @param {string} exportsArgument the exports identifier
|
|
36
|
+
* @param {ExportBinding[]} bindings list of export bindings
|
|
37
|
+
* @param {boolean=} placeAtEnd when true, place the d() call at the end of the module
|
|
38
|
+
*/
|
|
39
|
+
constructor(exportsArgument, bindings, placeAtEnd = false) {
|
|
40
|
+
super(
|
|
41
|
+
undefined,
|
|
42
|
+
InitFragment.STAGE_HARMONY_EXPORTS,
|
|
43
|
+
1,
|
|
44
|
+
"harmony-export-bindings"
|
|
45
|
+
);
|
|
46
|
+
/** @type {string} */
|
|
47
|
+
this.exportsArgument = exportsArgument;
|
|
48
|
+
/** @type {ExportBinding[]} */
|
|
49
|
+
this.bindings = bindings;
|
|
50
|
+
/** @type {boolean} */
|
|
51
|
+
this.placeAtEnd = placeAtEnd;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @param {ExportBindingInitFragment[]} fragments all fragments to merge
|
|
56
|
+
* @returns {ExportBindingInitFragment} merged fragment
|
|
57
|
+
*/
|
|
58
|
+
mergeAll(fragments) {
|
|
59
|
+
/** @type {ExportBinding[]} */
|
|
60
|
+
const bindings = [];
|
|
61
|
+
/** @type {Set<string>} */
|
|
62
|
+
const seenNames = new Set();
|
|
63
|
+
let placeAtEnd = false;
|
|
64
|
+
|
|
65
|
+
for (const fragment of fragments) {
|
|
66
|
+
for (const binding of fragment.bindings) {
|
|
67
|
+
const key = /** @type {string} */ (binding.name);
|
|
68
|
+
if (!seenNames.has(key)) {
|
|
69
|
+
seenNames.add(key);
|
|
70
|
+
bindings.push(binding);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (fragment.placeAtEnd) placeAtEnd = true;
|
|
74
|
+
}
|
|
75
|
+
return new ExportBindingInitFragment(
|
|
76
|
+
this.exportsArgument,
|
|
77
|
+
bindings,
|
|
78
|
+
placeAtEnd
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @param {ExportBindingInitFragment} other other
|
|
84
|
+
* @returns {ExportBindingInitFragment} merged result
|
|
85
|
+
*/
|
|
86
|
+
merge(other) {
|
|
87
|
+
/** @type {ExportBinding[]} */
|
|
88
|
+
const bindings = [];
|
|
89
|
+
/** @type {Set<string>} */
|
|
90
|
+
const seenNames = new Set();
|
|
91
|
+
for (const binding of other.bindings) {
|
|
92
|
+
const key = /** @type {string} */ (binding.name);
|
|
93
|
+
seenNames.add(key);
|
|
94
|
+
bindings.push(binding);
|
|
95
|
+
}
|
|
96
|
+
for (const binding of this.bindings) {
|
|
97
|
+
const key = /** @type {string} */ (binding.name);
|
|
98
|
+
if (!seenNames.has(key)) {
|
|
99
|
+
seenNames.add(key);
|
|
100
|
+
bindings.push(binding);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return new ExportBindingInitFragment(
|
|
104
|
+
this.exportsArgument,
|
|
105
|
+
bindings,
|
|
106
|
+
this.placeAtEnd || other.placeAtEnd
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @param {GenerateContext} context context
|
|
112
|
+
* @returns {string} the d() call or empty string
|
|
113
|
+
*/
|
|
114
|
+
_generateDefinition({ runtimeTemplate, runtimeRequirements }) {
|
|
115
|
+
if (this.bindings.length === 0) return "";
|
|
116
|
+
|
|
117
|
+
const sorted = [...this.bindings].sort((a, b) =>
|
|
118
|
+
/** @type {string} */ (a.name) < /** @type {string} */ (b.name) ? -1 : 1
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
/** @type {string[]} */
|
|
122
|
+
const items = [];
|
|
123
|
+
for (const binding of sorted) {
|
|
124
|
+
const key = JSON.stringify(/** @type {string} */ (binding.name));
|
|
125
|
+
if (binding.bindingType === "value") {
|
|
126
|
+
items.push(`\n/* harmony export */ ${key}, 0, ${binding.value}`);
|
|
127
|
+
} else {
|
|
128
|
+
items.push(
|
|
129
|
+
`\n/* harmony export */ ${key}, ${runtimeTemplate.returningFunction(binding.value)}`
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
135
|
+
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
136
|
+
return `/* harmony export */ ${RuntimeGlobals.definePropertyGetters}(${
|
|
137
|
+
this.exportsArgument
|
|
138
|
+
}, [${items.join(",")}\n/* harmony export */ ]);\n`;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Returns the source code that will be included as initialization code.
|
|
143
|
+
* @param {GenerateContext} context context
|
|
144
|
+
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
145
|
+
*/
|
|
146
|
+
getContent(context) {
|
|
147
|
+
if (this.placeAtEnd) return undefined;
|
|
148
|
+
return this._generateDefinition(context);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Returns the source code that will be included at the end of the module.
|
|
153
|
+
* @param {GenerateContext} context context
|
|
154
|
+
* @returns {string | Source | undefined} the source code that will be included at the end of the module
|
|
155
|
+
*/
|
|
156
|
+
getEndContent(context) {
|
|
157
|
+
if (!this.placeAtEnd) return undefined;
|
|
158
|
+
const definePart = this._generateDefinition(context);
|
|
159
|
+
if (!definePart) return undefined;
|
|
160
|
+
return `\n${definePart}`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
module.exports = ExportBindingInitFragment;
|
|
@@ -16,16 +16,18 @@ const NullDependency = require("./NullDependency");
|
|
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
17
17
|
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
18
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
19
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
20
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
21
19
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectDeserializerContext */
|
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectSerializerContext */
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
+
* Defines the sortable set type used by this module.
|
|
24
25
|
* @template T
|
|
25
26
|
* @typedef {import("../util/SortableSet")<T>} SortableSet
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
29
|
/**
|
|
30
|
+
* Returns value of the property.
|
|
29
31
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
30
32
|
* @param {Module} module the module
|
|
31
33
|
* @param {ExportInfoName[] | null} exportName_ name of the export if any
|
|
@@ -89,6 +91,7 @@ const getProperty = (moduleGraph, module, exportName_, property, runtime) => {
|
|
|
89
91
|
|
|
90
92
|
class ExportsInfoDependency extends NullDependency {
|
|
91
93
|
/**
|
|
94
|
+
* Creates an instance of ExportsInfoDependency.
|
|
92
95
|
* @param {Range} range range
|
|
93
96
|
* @param {ExportInfoName[] | null} exportName export name
|
|
94
97
|
* @param {string | null} property property
|
|
@@ -96,32 +99,34 @@ class ExportsInfoDependency extends NullDependency {
|
|
|
96
99
|
constructor(range, exportName, property) {
|
|
97
100
|
super();
|
|
98
101
|
this.range = range;
|
|
102
|
+
/** @type {string[] | null} */
|
|
99
103
|
this.exportName = exportName;
|
|
104
|
+
/** @type {string | null} */
|
|
100
105
|
this.property = property;
|
|
101
106
|
}
|
|
102
107
|
|
|
103
108
|
/**
|
|
109
|
+
* Serializes this instance into the provided serializer context.
|
|
104
110
|
* @param {ObjectSerializerContext} context context
|
|
105
111
|
*/
|
|
106
112
|
serialize(context) {
|
|
107
|
-
|
|
108
|
-
write(this.range);
|
|
109
|
-
write(this.exportName);
|
|
110
|
-
write(this.property);
|
|
113
|
+
context.write(this.range).write(this.exportName).write(this.property);
|
|
111
114
|
super.serialize(context);
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
/**
|
|
118
|
+
* Restores this instance from the provided deserializer context.
|
|
115
119
|
* @param {ObjectDeserializerContext} context context
|
|
116
120
|
* @returns {ExportsInfoDependency} ExportsInfoDependency
|
|
117
121
|
*/
|
|
118
122
|
static deserialize(context) {
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
);
|
|
124
|
-
obj
|
|
123
|
+
const range = context.read();
|
|
124
|
+
const c1 = context.rest;
|
|
125
|
+
const exportName = c1.read();
|
|
126
|
+
const c2 = c1.rest;
|
|
127
|
+
const property = c2.read();
|
|
128
|
+
const obj = new ExportsInfoDependency(range, exportName, property);
|
|
129
|
+
obj.deserialize(c2.rest);
|
|
125
130
|
return obj;
|
|
126
131
|
}
|
|
127
132
|
}
|
|
@@ -135,6 +140,7 @@ ExportsInfoDependency.Template = class ExportsInfoDependencyTemplate extends (
|
|
|
135
140
|
NullDependency.Template
|
|
136
141
|
) {
|
|
137
142
|
/**
|
|
143
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
138
144
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
139
145
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
140
146
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -14,11 +14,12 @@ const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
|
|
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
15
15
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
16
16
|
/** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectSerializerContext */
|
|
19
19
|
|
|
20
20
|
class ExternalModuleDependency extends CachedConstDependency {
|
|
21
21
|
/**
|
|
22
|
+
* Creates an instance of ExternalModuleDependency.
|
|
22
23
|
* @param {string} module module
|
|
23
24
|
* @param {ArrayImportSpecifiers} importSpecifiers import specifiers
|
|
24
25
|
* @param {string | undefined} defaultImport default import
|
|
@@ -38,12 +39,16 @@ class ExternalModuleDependency extends CachedConstDependency {
|
|
|
38
39
|
) {
|
|
39
40
|
super(expression, range, identifier, place);
|
|
40
41
|
|
|
42
|
+
/** @type {string} */
|
|
41
43
|
this.importedModule = module;
|
|
44
|
+
/** @type {ArrayImportSpecifiers} */
|
|
42
45
|
this.specifiers = importSpecifiers;
|
|
46
|
+
/** @type {string | undefined} */
|
|
43
47
|
this.default = defaultImport;
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
/**
|
|
51
|
+
* Create hash update.
|
|
47
52
|
* @returns {string} hash update
|
|
48
53
|
*/
|
|
49
54
|
_createHashUpdate() {
|
|
@@ -53,6 +58,7 @@ class ExternalModuleDependency extends CachedConstDependency {
|
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
/**
|
|
61
|
+
* Serializes this instance into the provided serializer context.
|
|
56
62
|
* @param {ObjectSerializerContext} context context
|
|
57
63
|
*/
|
|
58
64
|
serialize(context) {
|
|
@@ -64,14 +70,15 @@ class ExternalModuleDependency extends CachedConstDependency {
|
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
/**
|
|
73
|
+
* Restores this instance from the provided deserializer context.
|
|
67
74
|
* @param {ObjectDeserializerContext} context context
|
|
68
75
|
*/
|
|
69
76
|
deserialize(context) {
|
|
70
77
|
super.deserialize(context);
|
|
71
78
|
const { read } = context;
|
|
72
|
-
this.importedModule = read();
|
|
73
|
-
this.specifiers = read();
|
|
74
|
-
this.default = read();
|
|
79
|
+
this.importedModule = /** @type {string} */ (read());
|
|
80
|
+
this.specifiers = /** @type {ArrayImportSpecifiers} */ (read());
|
|
81
|
+
this.default = /** @type {string | undefined} */ (read());
|
|
75
82
|
}
|
|
76
83
|
}
|
|
77
84
|
|
|
@@ -84,6 +91,7 @@ ExternalModuleDependency.Template = class ExternalModuleDependencyTemplate exten
|
|
|
84
91
|
CachedConstDependency.Template
|
|
85
92
|
) {
|
|
86
93
|
/**
|
|
94
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
87
95
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
88
96
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
89
97
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -10,11 +10,11 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
12
12
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
13
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
14
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
15
13
|
/** @typedef {{ name: string, value?: string }[]} ArrayImportSpecifiers */
|
|
16
14
|
/** @typedef {Set<string>} ImportSpecifier */
|
|
17
15
|
/** @typedef {Map<string, ImportSpecifier>} ImportSpecifiers */
|
|
16
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(string | ArrayImportSpecifiers | ImportSpecifiers | undefined)[]>} ObjectDeserializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(string | ArrayImportSpecifiers | ImportSpecifiers | undefined)[]>} ObjectSerializerContext */
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* @extends {InitFragment<GenerateContext>}
|
|
@@ -32,6 +32,7 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
|
32
32
|
0,
|
|
33
33
|
`external module imports|${importedModule}|${defaultImport || "null"}`
|
|
34
34
|
);
|
|
35
|
+
/** @type {string} */
|
|
35
36
|
this.importedModule = importedModule;
|
|
36
37
|
if (Array.isArray(specifiers)) {
|
|
37
38
|
/** @type {ImportSpecifiers} */
|
|
@@ -48,6 +49,7 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
|
48
49
|
} else {
|
|
49
50
|
this.specifiers = specifiers;
|
|
50
51
|
}
|
|
52
|
+
/** @type {string | undefined} */
|
|
51
53
|
this.defaultImport = defaultImport;
|
|
52
54
|
}
|
|
53
55
|
|
|
@@ -75,6 +77,7 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
/**
|
|
80
|
+
* Returns the source code that will be included as initialization code.
|
|
78
81
|
* @param {GenerateContext} context context
|
|
79
82
|
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
80
83
|
*/
|
|
@@ -107,6 +110,7 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
|
107
110
|
}
|
|
108
111
|
|
|
109
112
|
/**
|
|
113
|
+
* Serializes this instance into the provided serializer context.
|
|
110
114
|
* @param {ObjectSerializerContext} context context
|
|
111
115
|
*/
|
|
112
116
|
serialize(context) {
|
|
@@ -118,14 +122,15 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
|
118
122
|
}
|
|
119
123
|
|
|
120
124
|
/**
|
|
125
|
+
* Restores this instance from the provided deserializer context.
|
|
121
126
|
* @param {ObjectDeserializerContext} context context
|
|
122
127
|
*/
|
|
123
128
|
deserialize(context) {
|
|
124
129
|
super.deserialize(context);
|
|
125
130
|
const { read } = context;
|
|
126
|
-
this.importedModule = read();
|
|
127
|
-
this.specifiers = read();
|
|
128
|
-
this.defaultImport = read();
|
|
131
|
+
this.importedModule = /** @type {string} */ (read());
|
|
132
|
+
this.specifiers = /** @type {ImportSpecifiers} */ (read());
|
|
133
|
+
this.defaultImport = /** @type {string | undefined} */ (read());
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
|
|
@@ -15,52 +15,59 @@ const NullDependency = require("./NullDependency");
|
|
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
17
|
/** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
19
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectDeserializerContext */
|
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectSerializerContext */
|
|
20
20
|
|
|
21
21
|
class ExternalModuleInitFragmentDependency extends NullDependency {
|
|
22
22
|
/**
|
|
23
|
+
* Creates an instance of ExternalModuleInitFragmentDependency.
|
|
23
24
|
* @param {string} module module
|
|
24
25
|
* @param {ArrayImportSpecifiers} importSpecifiers import specifiers
|
|
25
26
|
* @param {string | undefined} defaultImport default import
|
|
26
27
|
*/
|
|
27
28
|
constructor(module, importSpecifiers, defaultImport) {
|
|
28
29
|
super();
|
|
30
|
+
/** @type {string} */
|
|
29
31
|
this.importedModule = module;
|
|
32
|
+
/** @type {ArrayImportSpecifiers} */
|
|
30
33
|
this.specifiers = importSpecifiers;
|
|
34
|
+
/** @type {string | undefined} */
|
|
31
35
|
this.default = defaultImport;
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
/**
|
|
39
|
+
* Serializes this instance into the provided serializer context.
|
|
35
40
|
* @param {ObjectSerializerContext} context context
|
|
36
41
|
*/
|
|
37
42
|
serialize(context) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
context
|
|
44
|
+
.write(this.importedModule)
|
|
45
|
+
.write(this.specifiers)
|
|
46
|
+
.write(this.default);
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
/**
|
|
50
|
+
* Restores this instance from the provided deserializer context.
|
|
45
51
|
* @param {ObjectDeserializerContext} context context
|
|
46
52
|
*/
|
|
47
53
|
deserialize(context) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.specifiers = read();
|
|
51
|
-
this.default = read();
|
|
54
|
+
this.importedModule = context.read();
|
|
55
|
+
const c1 = context.rest;
|
|
56
|
+
this.specifiers = c1.read();
|
|
57
|
+
this.default = c1.rest.read();
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
makeSerializable(
|
|
56
62
|
ExternalModuleInitFragmentDependency,
|
|
57
|
-
"webpack/lib/dependencies/
|
|
63
|
+
"webpack/lib/dependencies/ExternalModuleInitFragmentDependency"
|
|
58
64
|
);
|
|
59
65
|
|
|
60
|
-
ExternalModuleInitFragmentDependency.Template = class
|
|
66
|
+
ExternalModuleInitFragmentDependency.Template = class ExternalModuleInitFragmentDependencyTemplate extends (
|
|
61
67
|
DependencyTemplate
|
|
62
68
|
) {
|
|
63
69
|
/**
|
|
70
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
64
71
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
65
72
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
66
73
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -16,14 +16,13 @@ const NullDependency = require("./NullDependency");
|
|
|
16
16
|
/** @typedef {import("../Dependency")} Dependency */
|
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
18
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
19
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
20
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
21
19
|
/** @typedef {import("./HarmonyAcceptImportDependency")} HarmonyAcceptImportDependency */
|
|
22
|
-
/** @typedef {import("../
|
|
23
|
-
/** @typedef {import("../
|
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, HarmonyAcceptImportDependency[], boolean]>} ObjectDeserializerContext */
|
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, HarmonyAcceptImportDependency[], boolean]>} ObjectSerializerContext */
|
|
24
22
|
|
|
25
23
|
class HarmonyAcceptDependency extends NullDependency {
|
|
26
24
|
/**
|
|
25
|
+
* Creates an instance of HarmonyAcceptDependency.
|
|
27
26
|
* @param {Range} range expression range
|
|
28
27
|
* @param {HarmonyAcceptImportDependency[]} dependencies import dependencies
|
|
29
28
|
* @param {boolean} hasCallback true, if the range wraps an existing callback
|
|
@@ -31,7 +30,9 @@ class HarmonyAcceptDependency extends NullDependency {
|
|
|
31
30
|
constructor(range, dependencies, hasCallback) {
|
|
32
31
|
super();
|
|
33
32
|
this.range = range;
|
|
33
|
+
/** @type {HarmonyAcceptImportDependency[]} */
|
|
34
34
|
this.dependencies = dependencies;
|
|
35
|
+
/** @type {boolean} */
|
|
35
36
|
this.hasCallback = hasCallback;
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -40,25 +41,25 @@ class HarmonyAcceptDependency extends NullDependency {
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
/**
|
|
44
|
+
* Serializes this instance into the provided serializer context.
|
|
43
45
|
* @param {ObjectSerializerContext} context context
|
|
44
46
|
*/
|
|
45
47
|
serialize(context) {
|
|
46
|
-
|
|
47
|
-
write(this.range);
|
|
48
|
-
write(this.dependencies);
|
|
49
|
-
write(this.hasCallback);
|
|
48
|
+
context.write(this.range).write(this.dependencies).write(this.hasCallback);
|
|
50
49
|
super.serialize(context);
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
/**
|
|
53
|
+
* Restores this instance from the provided deserializer context.
|
|
54
54
|
* @param {ObjectDeserializerContext} context context
|
|
55
55
|
*/
|
|
56
56
|
deserialize(context) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
this.dependencies = read();
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
this.range = context.read();
|
|
58
|
+
const c1 = context.rest;
|
|
59
|
+
this.dependencies = c1.read();
|
|
60
|
+
const c2 = c1.rest;
|
|
61
|
+
this.hasCallback = c2.read();
|
|
62
|
+
super.deserialize(c2.rest);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
@@ -71,6 +72,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
|
|
|
71
72
|
NullDependency.Template
|
|
72
73
|
) {
|
|
73
74
|
/**
|
|
75
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
74
76
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
75
77
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
76
78
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -88,23 +90,19 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
|
|
|
88
90
|
} = templateContext;
|
|
89
91
|
|
|
90
92
|
/**
|
|
91
|
-
*
|
|
92
|
-
* @returns {ModuleId | null} the module id or null if not found
|
|
93
|
-
*/
|
|
94
|
-
const getDependencyModuleId = (dependency) =>
|
|
95
|
-
chunkGraph.getModuleId(
|
|
96
|
-
/** @type {Module} */ (moduleGraph.getModule(dependency))
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
/**
|
|
93
|
+
* Checks whether this harmony accept dependency is related harmony import dependency.
|
|
100
94
|
* @param {Dependency} a the first dependency
|
|
101
95
|
* @param {Dependency} b the second dependency
|
|
102
96
|
* @returns {boolean} true if the dependencies are related
|
|
103
97
|
*/
|
|
104
|
-
const isRelatedHarmonyImportDependency = (a, b) =>
|
|
105
|
-
a
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
const isRelatedHarmonyImportDependency = (a, b) => {
|
|
99
|
+
if (a === b || !(b instanceof HarmonyImportDependency)) return false;
|
|
100
|
+
// Compare modules by reference: an unresolved import (ignored/failed, or a
|
|
101
|
+
// deferred lazy-barrel re-export) has no module, and a module not in any
|
|
102
|
+
// chunk has a null id — so comparing ids would crash or miss real matches.
|
|
103
|
+
const moduleA = moduleGraph.getModule(a);
|
|
104
|
+
return moduleA !== null && moduleA === moduleGraph.getModule(b);
|
|
105
|
+
};
|
|
108
106
|
|
|
109
107
|
/**
|
|
110
108
|
* HarmonyAcceptImportDependency lacks a lot of information, such as the defer property.
|
|
@@ -12,10 +12,12 @@ const NullDependency = require("./NullDependency");
|
|
|
12
12
|
|
|
13
13
|
class HarmonyAcceptImportDependency extends HarmonyImportDependency {
|
|
14
14
|
/**
|
|
15
|
+
* Creates an instance of HarmonyAcceptImportDependency.
|
|
15
16
|
* @param {string} request the request string
|
|
16
17
|
*/
|
|
17
18
|
constructor(request) {
|
|
18
19
|
super(request, Infinity, ImportPhase.Evaluation);
|
|
20
|
+
/** @type {boolean} */
|
|
19
21
|
this.weak = true;
|
|
20
22
|
}
|
|
21
23
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
const { UsageState } = require("../ExportsInfo");
|
|
9
9
|
const InitFragment = require("../InitFragment");
|
|
10
10
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
11
|
+
const isGeneratorLowered = require("../async-modules/isGeneratorLowered");
|
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
|
12
13
|
const NullDependency = require("./NullDependency");
|
|
13
14
|
|
|
@@ -31,6 +32,7 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
|
31
32
|
NullDependency.Template
|
|
32
33
|
) {
|
|
33
34
|
/**
|
|
35
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
34
36
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
35
37
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
36
38
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -70,20 +72,37 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
|
70
72
|
}
|
|
71
73
|
if (moduleGraph.isAsync(module)) {
|
|
72
74
|
runtimeRequirements.add(RuntimeGlobals.module);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
75
|
+
const hasAwait = /** @type {BuildMeta} */ (module.buildMeta).async
|
|
76
|
+
? ", 1"
|
|
77
|
+
: "";
|
|
78
|
+
// Target has no `async`/`await` but has generators: drive the body as a
|
|
79
|
+
// generator so `await` becomes `yield`, keeping the module in a single
|
|
80
|
+
// scope (unlike a `.then` callback) without transpiling to a state machine.
|
|
81
|
+
if (isGeneratorLowered(module, moduleGraph, runtimeTemplate)) {
|
|
82
|
+
runtimeRequirements.add(RuntimeGlobals.asyncModuleGenerator);
|
|
83
|
+
initFragments.push(
|
|
84
|
+
new InitFragment(
|
|
85
|
+
`${RuntimeGlobals.asyncModule}(${module.moduleArgument}, ${RuntimeGlobals.asyncModuleGenerator}(function* (__webpack_handle_async_dependencies__, __webpack_async_result__) { try {\n`,
|
|
86
|
+
InitFragment.STAGE_ASYNC_BOUNDARY,
|
|
87
|
+
0,
|
|
88
|
+
undefined,
|
|
89
|
+
`\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } })${hasAwait});`
|
|
90
|
+
)
|
|
91
|
+
);
|
|
92
|
+
} else {
|
|
93
|
+
runtimeRequirements.add(RuntimeGlobals.asyncModule);
|
|
94
|
+
initFragments.push(
|
|
95
|
+
new InitFragment(
|
|
96
|
+
runtimeTemplate.supportsArrowFunction()
|
|
97
|
+
? `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n`
|
|
98
|
+
: `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async function (__webpack_handle_async_dependencies__, __webpack_async_result__) { try {\n`,
|
|
99
|
+
InitFragment.STAGE_ASYNC_BOUNDARY,
|
|
100
|
+
0,
|
|
101
|
+
undefined,
|
|
102
|
+
`\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }${hasAwait});`
|
|
103
|
+
)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
87
106
|
}
|
|
88
107
|
}
|
|
89
108
|
};
|