@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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
package/lib/ExternalModule.js
CHANGED
|
@@ -8,22 +8,27 @@
|
|
|
8
8
|
const { SyncBailHook } = require("tapable");
|
|
9
9
|
const { OriginalSource, RawSource } = require("webpack-sources");
|
|
10
10
|
const ConcatenationScope = require("./ConcatenationScope");
|
|
11
|
-
const EnvironmentNotSupportAsyncWarning = require("./EnvironmentNotSupportAsyncWarning");
|
|
12
11
|
const { UsageState } = require("./ExportsInfo");
|
|
13
12
|
const InitFragment = require("./InitFragment");
|
|
14
13
|
const Module = require("./Module");
|
|
15
14
|
const {
|
|
15
|
+
ASSET_URL_TYPE,
|
|
16
|
+
ASSET_URL_TYPES,
|
|
16
17
|
CSS_IMPORT_TYPES,
|
|
17
|
-
CSS_URL_TYPES,
|
|
18
18
|
JAVASCRIPT_TYPE,
|
|
19
19
|
JAVASCRIPT_TYPES
|
|
20
20
|
} = require("./ModuleSourceTypeConstants");
|
|
21
21
|
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
|
|
22
22
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
23
23
|
const Template = require("./Template");
|
|
24
|
+
const WebpackError = require("./WebpackError");
|
|
24
25
|
const { DEFAULTS } = require("./config/defaults");
|
|
26
|
+
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
25
27
|
const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
|
|
28
|
+
const EnvironmentNotSupportAsyncWarning = require("./errors/EnvironmentNotSupportAsyncWarning");
|
|
29
|
+
const { coreModules } = require("./node/nodeBuiltins");
|
|
26
30
|
const createHash = require("./util/createHash");
|
|
31
|
+
const createHooksRegistry = require("./util/createHooksRegistry");
|
|
27
32
|
const extractUrlAndGlobal = require("./util/extractUrlAndGlobal");
|
|
28
33
|
const makeSerializable = require("./util/makeSerializable");
|
|
29
34
|
const { propertyAccess } = require("./util/property");
|
|
@@ -62,19 +67,22 @@ const { register } = require("./util/serialization");
|
|
|
62
67
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
|
63
68
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
|
|
64
69
|
/** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
65
|
-
/** @typedef {import("./
|
|
66
|
-
/** @typedef {import("
|
|
70
|
+
/** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
71
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalItemInterop} ExternalInterop */
|
|
72
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined]>} ObjectDeserializerContext */
|
|
73
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined]>} ObjectSerializerContext */
|
|
67
74
|
/** @typedef {import("./util/Hash")} Hash */
|
|
68
75
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
|
69
76
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
70
77
|
|
|
71
|
-
/** @typedef {{ attributes?: ImportAttributes, externalType: "import" | "module" | undefined }} ImportDependencyMeta */
|
|
78
|
+
/** @typedef {{ attributes?: ImportAttributes, phase?: ImportPhaseType, externalType: "import" | "module" | undefined }} ImportDependencyMeta */
|
|
72
79
|
/** @typedef {{ layer?: string, supports?: string, media?: string }} CssImportDependencyMeta */
|
|
73
|
-
/** @typedef {{ sourceType: "css-url" }} AssetDependencyMeta */
|
|
80
|
+
/** @typedef {{ sourceType: "asset-url" | "css-url" }} AssetDependencyMeta */
|
|
74
81
|
|
|
75
82
|
/** @typedef {ImportDependencyMeta | CssImportDependencyMeta | AssetDependencyMeta} DependencyMeta */
|
|
76
83
|
|
|
77
84
|
/**
|
|
85
|
+
* Defines the source data type used by this module.
|
|
78
86
|
* @typedef {object} SourceData
|
|
79
87
|
* @property {boolean=} iife
|
|
80
88
|
* @property {string=} init
|
|
@@ -97,7 +105,68 @@ const RUNTIME_REQUIREMENTS_FOR_MODULE = new Set([
|
|
|
97
105
|
/** @type {RuntimeRequirements} */
|
|
98
106
|
const EMPTY_RUNTIME_REQUIREMENTS = new Set();
|
|
99
107
|
|
|
108
|
+
const NODE_PREFIX = "node:";
|
|
109
|
+
|
|
110
|
+
// externals of these types are wired by the library wrapper, which does its own per-key lookup on object externals
|
|
111
|
+
const LIBRARY_WIRED_EXTERNAL_TYPES = new Set([
|
|
112
|
+
"amd",
|
|
113
|
+
"amd-require",
|
|
114
|
+
"umd",
|
|
115
|
+
"umd2",
|
|
116
|
+
"system",
|
|
117
|
+
"jsonp"
|
|
118
|
+
]);
|
|
119
|
+
// External types that emit a node.js-resolvable specifier (`require`/`import`).
|
|
120
|
+
const NODE_RESOLVING_EXTERNAL_TYPES = new Set([
|
|
121
|
+
"commonjs",
|
|
122
|
+
"commonjs2",
|
|
123
|
+
"commonjs-module",
|
|
124
|
+
"commonjs-static",
|
|
125
|
+
"node-commonjs",
|
|
126
|
+
"import",
|
|
127
|
+
"module"
|
|
128
|
+
]);
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Normalizes a node.js core module specifier for the target. Strips `node:`
|
|
132
|
+
* when the target can't resolve a prefixed request, adds `node:` for a universal
|
|
133
|
+
* bundle (which may run on deno/bun where the prefix is required), and otherwise
|
|
134
|
+
* keeps the author's original notation.
|
|
135
|
+
* @param {string | string[]} request the external request
|
|
136
|
+
* @param {ExternalsType} externalType the resolved external type
|
|
137
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
138
|
+
* @returns {string | string[]} the normalized request
|
|
139
|
+
*/
|
|
140
|
+
const normalizeNodeCoreModuleRequest = (
|
|
141
|
+
request,
|
|
142
|
+
externalType,
|
|
143
|
+
runtimeTemplate
|
|
144
|
+
) => {
|
|
145
|
+
if (!NODE_RESOLVING_EXTERNAL_TYPES.has(externalType)) return request;
|
|
146
|
+
const name = Array.isArray(request) ? request[0] : request;
|
|
147
|
+
if (typeof name !== "string") return request;
|
|
148
|
+
/**
|
|
149
|
+
* @param {string} next replacement specifier
|
|
150
|
+
* @returns {string | string[]} request with the specifier swapped
|
|
151
|
+
*/
|
|
152
|
+
const withName = (next) =>
|
|
153
|
+
Array.isArray(request) ? [next, ...request.slice(1)] : next;
|
|
154
|
+
|
|
155
|
+
if (
|
|
156
|
+
runtimeTemplate.outputOptions.environment.nodePrefixForCoreModules === false
|
|
157
|
+
) {
|
|
158
|
+
if (!name.startsWith(NODE_PREFIX)) return request;
|
|
159
|
+
const stripped = name.slice(NODE_PREFIX.length);
|
|
160
|
+
return coreModules.has(stripped) ? withName(stripped) : request;
|
|
161
|
+
}
|
|
162
|
+
if (runtimeTemplate.isUniversalTarget() && !name.startsWith(NODE_PREFIX)) {
|
|
163
|
+
return coreModules.has(name) ? withName(NODE_PREFIX + name) : request;
|
|
164
|
+
}
|
|
165
|
+
return request;
|
|
166
|
+
};
|
|
167
|
+
|
|
100
168
|
/**
|
|
169
|
+
* Gets source for global variable external.
|
|
101
170
|
* @param {string | string[]} variableName the variable name or path
|
|
102
171
|
* @param {string} type the module system
|
|
103
172
|
* @returns {SourceData} the generated source
|
|
@@ -121,6 +190,7 @@ const getSourceForGlobalVariableExternal = (variableName, type) => {
|
|
|
121
190
|
/** @typedef {string | string[]} ModuleAndSpecifiers */
|
|
122
191
|
|
|
123
192
|
/**
|
|
193
|
+
* Gets source for common js external.
|
|
124
194
|
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
125
195
|
* @returns {SourceData} the generated source
|
|
126
196
|
*/
|
|
@@ -140,33 +210,55 @@ const getSourceForCommonJsExternal = (moduleAndSpecifiers) => {
|
|
|
140
210
|
};
|
|
141
211
|
|
|
142
212
|
/**
|
|
213
|
+
* Gets external module node commonjs init fragment.
|
|
143
214
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
215
|
+
* @param {boolean=} universal target may also run outside node (e.g. `["node", "web"]`)
|
|
144
216
|
* @returns {InitFragment<ChunkRenderContext>} code
|
|
145
217
|
*/
|
|
146
|
-
const getExternalModuleNodeCommonjsInitFragment = (
|
|
218
|
+
const getExternalModuleNodeCommonjsInitFragment = (
|
|
219
|
+
runtimeTemplate,
|
|
220
|
+
universal = false
|
|
221
|
+
) => {
|
|
147
222
|
const importMetaName = runtimeTemplate.outputOptions.importMetaName;
|
|
223
|
+
const moduleId = runtimeTemplate.renderNodePrefixForCoreModule("module");
|
|
224
|
+
|
|
225
|
+
if (!universal) {
|
|
226
|
+
return new InitFragment(
|
|
227
|
+
`import { createRequire as __WEBPACK_EXTERNAL_createRequire } from ${moduleId};\n${runtimeTemplate.renderConst()} __WEBPACK_EXTERNAL_createRequire_require = __WEBPACK_EXTERNAL_createRequire(${importMetaName}.url);\n`,
|
|
228
|
+
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
229
|
+
0,
|
|
230
|
+
"external module node-commonjs"
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// defensively obtain `createRequire` so the universal bundle still loads off node
|
|
235
|
+
const content = `${runtimeTemplate.renderConst()} __WEBPACK_EXTERNAL_createRequire_require = ${runtimeTemplate.getBuiltinModule(
|
|
236
|
+
moduleId,
|
|
237
|
+
`.createRequire(${importMetaName}.url)`
|
|
238
|
+
)};\n`;
|
|
148
239
|
|
|
149
240
|
return new InitFragment(
|
|
150
|
-
|
|
151
|
-
"module"
|
|
152
|
-
)};\n${runtimeTemplate.renderConst()} __WEBPACK_EXTERNAL_createRequire_require = __WEBPACK_EXTERNAL_createRequire(${importMetaName}.url);\n`,
|
|
241
|
+
content,
|
|
153
242
|
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
154
243
|
0,
|
|
155
|
-
"external module node-commonjs"
|
|
244
|
+
"external module node-commonjs universal"
|
|
156
245
|
);
|
|
157
246
|
};
|
|
158
247
|
|
|
159
248
|
/**
|
|
249
|
+
* Gets source for common js external in node module.
|
|
160
250
|
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
161
251
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
252
|
+
* @param {boolean=} universal target may also run outside node (e.g. `["node", "web"]`)
|
|
162
253
|
* @returns {SourceData} the generated source
|
|
163
254
|
*/
|
|
164
255
|
const getSourceForCommonJsExternalInNodeModule = (
|
|
165
256
|
moduleAndSpecifiers,
|
|
166
|
-
runtimeTemplate
|
|
257
|
+
runtimeTemplate,
|
|
258
|
+
universal = false
|
|
167
259
|
) => {
|
|
168
260
|
const chunkInitFragments = [
|
|
169
|
-
getExternalModuleNodeCommonjsInitFragment(runtimeTemplate)
|
|
261
|
+
getExternalModuleNodeCommonjsInitFragment(runtimeTemplate, universal)
|
|
170
262
|
];
|
|
171
263
|
if (!Array.isArray(moduleAndSpecifiers)) {
|
|
172
264
|
return {
|
|
@@ -186,6 +278,7 @@ const getSourceForCommonJsExternalInNodeModule = (
|
|
|
186
278
|
};
|
|
187
279
|
|
|
188
280
|
/**
|
|
281
|
+
* Gets source for import external.
|
|
189
282
|
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
190
283
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
191
284
|
* @param {ImportDependencyMeta=} dependencyMeta the dependency meta
|
|
@@ -196,15 +289,25 @@ const getSourceForImportExternal = (
|
|
|
196
289
|
runtimeTemplate,
|
|
197
290
|
dependencyMeta
|
|
198
291
|
) => {
|
|
199
|
-
const
|
|
292
|
+
const baseImportName = runtimeTemplate.outputOptions.importFunctionName;
|
|
200
293
|
if (
|
|
201
294
|
!runtimeTemplate.supportsDynamicImport() &&
|
|
202
|
-
(
|
|
295
|
+
(baseImportName === "import" || baseImportName === "module-import")
|
|
203
296
|
) {
|
|
204
297
|
throw new Error(
|
|
205
298
|
"The target environment doesn't support 'import()' so it's not possible to use external type 'import'"
|
|
206
299
|
);
|
|
207
300
|
}
|
|
301
|
+
const phase = dependencyMeta && dependencyMeta.phase;
|
|
302
|
+
// `import.defer(…)` and `import.source(…)` are only valid forms of the
|
|
303
|
+
// native `import(…)` function, so we only emit the phase suffix when the
|
|
304
|
+
// importFunctionName is the default `"import"`.
|
|
305
|
+
const importName =
|
|
306
|
+
baseImportName === "import" && ImportPhaseUtils.isDefer(phase)
|
|
307
|
+
? "import.defer"
|
|
308
|
+
: baseImportName === "import" && ImportPhaseUtils.isSource(phase)
|
|
309
|
+
? "import.source"
|
|
310
|
+
: baseImportName;
|
|
208
311
|
const attributes =
|
|
209
312
|
dependencyMeta && dependencyMeta.attributes
|
|
210
313
|
? dependencyMeta.attributes._isLegacyAssert
|
|
@@ -240,6 +343,7 @@ const getSourceForImportExternal = (
|
|
|
240
343
|
};
|
|
241
344
|
|
|
242
345
|
/**
|
|
346
|
+
* Import assertion replacer.
|
|
243
347
|
* @param {string} key key
|
|
244
348
|
* @param {ImportAttributes | string | boolean | undefined} value value
|
|
245
349
|
* @returns {ImportAttributes | string | boolean | undefined} replaced value
|
|
@@ -253,10 +357,12 @@ const importAssertionReplacer = (key, value) => {
|
|
|
253
357
|
};
|
|
254
358
|
|
|
255
359
|
/**
|
|
360
|
+
* Represents ModuleExternalInitFragment.
|
|
256
361
|
* @extends {InitFragment<GenerateContext>}
|
|
257
362
|
*/
|
|
258
363
|
class ModuleExternalInitFragment extends InitFragment {
|
|
259
364
|
/**
|
|
365
|
+
* Creates an instance of ModuleExternalInitFragment.
|
|
260
366
|
* @param {string} request import source
|
|
261
367
|
* @param {Imported} imported the imported specifiers
|
|
262
368
|
* @param {string=} ident recomputed ident
|
|
@@ -284,16 +390,24 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
284
390
|
"",
|
|
285
391
|
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
286
392
|
0,
|
|
287
|
-
`external module import ${ident} ${
|
|
393
|
+
`external module import ${ident} ${
|
|
394
|
+
imported === true ? imported : imported.join(" ")
|
|
395
|
+
}`
|
|
288
396
|
);
|
|
397
|
+
/** @type {string} */
|
|
289
398
|
this._ident = ident;
|
|
399
|
+
/** @type {string} */
|
|
290
400
|
this._request = request;
|
|
401
|
+
/** @type {ImportDependencyMeta | undefined} */
|
|
291
402
|
this._dependencyMeta = dependencyMeta;
|
|
403
|
+
/** @type {string} */
|
|
292
404
|
this._identifier = this.buildIdentifier(ident);
|
|
405
|
+
/** @type {Imported} */
|
|
293
406
|
this._imported = this.buildImported(imported);
|
|
294
407
|
}
|
|
295
408
|
|
|
296
409
|
/**
|
|
410
|
+
* Returns imported.
|
|
297
411
|
* @returns {Imported} imported
|
|
298
412
|
*/
|
|
299
413
|
getImported() {
|
|
@@ -301,6 +415,7 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
301
415
|
}
|
|
302
416
|
|
|
303
417
|
/**
|
|
418
|
+
* Updates imported using the provided imported.
|
|
304
419
|
* @param {Imported} imported imported
|
|
305
420
|
*/
|
|
306
421
|
setImported(imported) {
|
|
@@ -308,6 +423,7 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
308
423
|
}
|
|
309
424
|
|
|
310
425
|
/**
|
|
426
|
+
* Returns the source code that will be included as initialization code.
|
|
311
427
|
* @param {GenerateContext} context context
|
|
312
428
|
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
313
429
|
*/
|
|
@@ -320,23 +436,34 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
320
436
|
} = this;
|
|
321
437
|
const attributes =
|
|
322
438
|
dependencyMeta && dependencyMeta.attributes
|
|
323
|
-
? dependencyMeta.attributes._isLegacyAssert
|
|
324
|
-
dependencyMeta.attributes._isLegacyAssert
|
|
439
|
+
? dependencyMeta.attributes._isLegacyAssert
|
|
325
440
|
? ` assert ${JSON.stringify(
|
|
326
441
|
dependencyMeta.attributes,
|
|
327
442
|
importAssertionReplacer
|
|
328
443
|
)}`
|
|
329
444
|
: ` with ${JSON.stringify(dependencyMeta.attributes)}`
|
|
330
445
|
: "";
|
|
446
|
+
const phase = dependencyMeta && dependencyMeta.phase;
|
|
331
447
|
let content = "";
|
|
332
448
|
if (imported === true) {
|
|
333
449
|
// namespace
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
450
|
+
const phaseKeyword = ImportPhaseUtils.isDefer(phase) ? "defer " : "";
|
|
451
|
+
content = `import ${phaseKeyword}* as ${identifier} from ${JSON.stringify(
|
|
452
|
+
request
|
|
453
|
+
)}${attributes};\n`;
|
|
337
454
|
} else if (imported.length === 0) {
|
|
338
455
|
// just import, no use
|
|
339
456
|
content = `import ${JSON.stringify(request)}${attributes};\n`;
|
|
457
|
+
} else if (
|
|
458
|
+
ImportPhaseUtils.isSource(phase) &&
|
|
459
|
+
imported.length === 1 &&
|
|
460
|
+
imported[0][0] === "default"
|
|
461
|
+
) {
|
|
462
|
+
// `import source x from "…"` — the source-phase form binds the source
|
|
463
|
+
// object directly to a single identifier (no namespace, no destructuring).
|
|
464
|
+
content = `import source ${imported[0][1]} from ${JSON.stringify(
|
|
465
|
+
request
|
|
466
|
+
)}${attributes};\n`;
|
|
340
467
|
} else {
|
|
341
468
|
content = `import { ${imported
|
|
342
469
|
.map(([name, finalName]) => {
|
|
@@ -355,6 +482,7 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
355
482
|
}
|
|
356
483
|
|
|
357
484
|
/**
|
|
485
|
+
* Returns identifier.
|
|
358
486
|
* @param {string} ident ident
|
|
359
487
|
* @returns {string} identifier
|
|
360
488
|
*/
|
|
@@ -363,6 +491,7 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
363
491
|
}
|
|
364
492
|
|
|
365
493
|
/**
|
|
494
|
+
* Returns normalized imported.
|
|
366
495
|
* @param {Imported} imported imported
|
|
367
496
|
* @returns {Imported} normalized imported
|
|
368
497
|
*/
|
|
@@ -395,6 +524,7 @@ register(
|
|
|
395
524
|
);
|
|
396
525
|
|
|
397
526
|
/**
|
|
527
|
+
* Generates module remapping.
|
|
398
528
|
* @param {string} input input
|
|
399
529
|
* @param {ExportsInfo} exportsInfo the exports info
|
|
400
530
|
* @param {RuntimeSpec=} runtime the runtime
|
|
@@ -437,6 +567,7 @@ const generateModuleRemapping = (
|
|
|
437
567
|
};
|
|
438
568
|
|
|
439
569
|
/**
|
|
570
|
+
* Gets source for module external.
|
|
440
571
|
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
441
572
|
* @param {ExportsInfo} exportsInfo exports info of this module
|
|
442
573
|
* @param {RuntimeSpec} runtime the runtime
|
|
@@ -453,6 +584,7 @@ const getSourceForModuleExternal = (
|
|
|
453
584
|
dependencyMeta,
|
|
454
585
|
concatenationScope
|
|
455
586
|
) => {
|
|
587
|
+
const phase = dependencyMeta && dependencyMeta.phase;
|
|
456
588
|
/** @type {Imported} */
|
|
457
589
|
let imported = true;
|
|
458
590
|
if (concatenationScope) {
|
|
@@ -481,6 +613,14 @@ const getSourceForModuleExternal = (
|
|
|
481
613
|
imported = true;
|
|
482
614
|
}
|
|
483
615
|
|
|
616
|
+
// `import defer …` is only valid as `import defer * as ns from "…"`, so
|
|
617
|
+
// keep the namespace form even if usage analysis would otherwise narrow
|
|
618
|
+
// the import down to specific names. Defer + concatenation is semantically
|
|
619
|
+
// at odds (lazy vs. eager), so we preserve the user-written shape here.
|
|
620
|
+
if (ImportPhaseUtils.isDefer(phase)) {
|
|
621
|
+
imported = true;
|
|
622
|
+
}
|
|
623
|
+
|
|
484
624
|
const initFragment = new ModuleExternalInitFragment(
|
|
485
625
|
moduleAndSpecifiers[0],
|
|
486
626
|
imported,
|
|
@@ -511,10 +651,10 @@ const getSourceForModuleExternal = (
|
|
|
511
651
|
return {
|
|
512
652
|
expression,
|
|
513
653
|
init: moduleRemapping
|
|
514
|
-
?
|
|
654
|
+
? `${runtimeTemplate.renderConst()} x = ${runtimeTemplate.basicFunction(
|
|
515
655
|
"y",
|
|
516
|
-
|
|
517
|
-
)} \
|
|
656
|
+
`${runtimeTemplate.renderConst()} x = {}; ${RuntimeGlobals.definePropertyGetters}(x, y); return x`
|
|
657
|
+
)} \n${runtimeTemplate.renderConst()} y = ${runtimeTemplate.returningFunction(
|
|
518
658
|
runtimeTemplate.returningFunction("x"),
|
|
519
659
|
"x"
|
|
520
660
|
)}`
|
|
@@ -530,6 +670,7 @@ const getSourceForModuleExternal = (
|
|
|
530
670
|
};
|
|
531
671
|
|
|
532
672
|
/**
|
|
673
|
+
* Gets source for script external.
|
|
533
674
|
* @param {string | string[]} urlAndGlobal the script request
|
|
534
675
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
535
676
|
* @returns {SourceData} the generated source
|
|
@@ -541,7 +682,7 @@ const getSourceForScriptExternal = (urlAndGlobal, runtimeTemplate) => {
|
|
|
541
682
|
const url = urlAndGlobal[0];
|
|
542
683
|
const globalName = urlAndGlobal[1];
|
|
543
684
|
return {
|
|
544
|
-
init:
|
|
685
|
+
init: `${runtimeTemplate.renderConst()} __webpack_error__ = new Error();`,
|
|
545
686
|
expression: `new Promise(${runtimeTemplate.basicFunction(
|
|
546
687
|
"resolve, reject",
|
|
547
688
|
[
|
|
@@ -550,12 +691,13 @@ const getSourceForScriptExternal = (urlAndGlobal, runtimeTemplate) => {
|
|
|
550
691
|
url
|
|
551
692
|
)}, ${runtimeTemplate.basicFunction("event", [
|
|
552
693
|
`if(typeof ${globalName} !== "undefined") return resolve();`,
|
|
553
|
-
|
|
554
|
-
|
|
694
|
+
`${runtimeTemplate.renderConst()} errorType = event && (event.type === 'load' ? 'missing' : event.type);`,
|
|
695
|
+
`${runtimeTemplate.renderConst()} realSrc = event && event.target && event.target.src;`,
|
|
555
696
|
"__webpack_error__.message = 'Loading script failed.\\n(' + errorType + ': ' + realSrc + ')';",
|
|
556
697
|
"__webpack_error__.name = 'ScriptExternalLoadError';",
|
|
557
698
|
"__webpack_error__.type = errorType;",
|
|
558
699
|
"__webpack_error__.request = realSrc;",
|
|
700
|
+
"__webpack_error__.event = event;",
|
|
559
701
|
"reject(__webpack_error__);"
|
|
560
702
|
])}, ${JSON.stringify(globalName)});`
|
|
561
703
|
]
|
|
@@ -567,6 +709,42 @@ const getSourceForScriptExternal = (urlAndGlobal, runtimeTemplate) => {
|
|
|
567
709
|
};
|
|
568
710
|
|
|
569
711
|
/**
|
|
712
|
+
* Gets source for amd-async external. Loads the module at runtime via the
|
|
713
|
+
* asynchronous AMD `require([...])` API and exposes it as an async module,
|
|
714
|
+
* so no AMD library wrapper around the chunk is needed.
|
|
715
|
+
* @param {string | string[]} request the request path
|
|
716
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
717
|
+
* @returns {SourceData} the generated source
|
|
718
|
+
*/
|
|
719
|
+
const getSourceForAmdAsyncExternal = (request, runtimeTemplate) => {
|
|
720
|
+
if (!Array.isArray(request)) {
|
|
721
|
+
request = [request];
|
|
722
|
+
}
|
|
723
|
+
const { library } = runtimeTemplate.outputOptions;
|
|
724
|
+
const amdRequire =
|
|
725
|
+
library && library.amdContainer
|
|
726
|
+
? `${library.amdContainer}.require`
|
|
727
|
+
: "require";
|
|
728
|
+
return {
|
|
729
|
+
expression: `new Promise(${runtimeTemplate.basicFunction(
|
|
730
|
+
"resolve, reject",
|
|
731
|
+
[
|
|
732
|
+
`if (typeof ${amdRequire} !== "function") return reject(new Error(${JSON.stringify(
|
|
733
|
+
`AMD 'require' is not available to load external module ${request[0]}`
|
|
734
|
+
)}));`,
|
|
735
|
+
`${amdRequire}(${JSON.stringify([
|
|
736
|
+
request[0]
|
|
737
|
+
])}, ${runtimeTemplate.basicFunction(
|
|
738
|
+
"module",
|
|
739
|
+
`resolve(module${propertyAccess(request, 1)});`
|
|
740
|
+
)}, reject);`
|
|
741
|
+
]
|
|
742
|
+
)})`
|
|
743
|
+
};
|
|
744
|
+
};
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Checks external variable.
|
|
570
748
|
* @param {string} variableName the variable name to check
|
|
571
749
|
* @param {string} request the request path
|
|
572
750
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
@@ -578,6 +756,7 @@ const checkExternalVariable = (variableName, request, runtimeTemplate) =>
|
|
|
578
756
|
)} }\n`;
|
|
579
757
|
|
|
580
758
|
/**
|
|
759
|
+
* Gets source for amd or umd external.
|
|
581
760
|
* @param {ModuleId | string} id the module id
|
|
582
761
|
* @param {boolean} optional true, if the module is optional
|
|
583
762
|
* @param {string | string[]} request the request path
|
|
@@ -606,6 +785,7 @@ const getSourceForAmdOrUmdExternal = (
|
|
|
606
785
|
};
|
|
607
786
|
|
|
608
787
|
/**
|
|
788
|
+
* Gets source for default case.
|
|
609
789
|
* @param {boolean} optional true, if the module is optional
|
|
610
790
|
* @param {string | string[]} request the request path
|
|
611
791
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
@@ -631,23 +811,35 @@ const getSourceForDefaultCase = (optional, request, runtimeTemplate) => {
|
|
|
631
811
|
/** @typedef {string | string[] | RequestRecord} ExternalModuleRequest */
|
|
632
812
|
|
|
633
813
|
/**
|
|
814
|
+
* Defines the external module hooks type used by this module.
|
|
634
815
|
* @typedef {object} ExternalModuleHooks
|
|
635
816
|
* @property {SyncBailHook<[Chunk, Compilation], boolean>} chunkCondition
|
|
636
817
|
*/
|
|
637
818
|
|
|
638
|
-
/**
|
|
639
|
-
|
|
819
|
+
/**
|
|
820
|
+
* Defines the build info properties specific to external modules.
|
|
821
|
+
* @typedef {object} KnownExternalModuleBuildInfo
|
|
822
|
+
* @property {boolean=} javascriptModule true when emitting an ESM external (`output.module`)
|
|
823
|
+
*/
|
|
824
|
+
|
|
825
|
+
/** @typedef {BuildInfo & KnownExternalModuleBuildInfo} ExternalModuleBuildInfo */
|
|
640
826
|
|
|
641
827
|
class ExternalModule extends Module {
|
|
642
828
|
/**
|
|
829
|
+
* Creates an instance of ExternalModule.
|
|
643
830
|
* @param {ExternalModuleRequest} request request
|
|
644
831
|
* @param {ExternalsType} type type
|
|
645
832
|
* @param {string} userRequest user request
|
|
646
833
|
* @param {DependencyMeta=} dependencyMeta dependency meta
|
|
834
|
+
* @param {ExternalInterop=} interop how the external's exports interoperate with ES module imports
|
|
647
835
|
*/
|
|
648
|
-
constructor(request, type, userRequest, dependencyMeta) {
|
|
836
|
+
constructor(request, type, userRequest, dependencyMeta, interop) {
|
|
649
837
|
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
|
650
838
|
|
|
839
|
+
// Redeclared with the external module specific shape
|
|
840
|
+
/** @type {ExternalModuleBuildInfo | undefined} */
|
|
841
|
+
this.buildInfo = undefined;
|
|
842
|
+
|
|
651
843
|
// Info from Factory
|
|
652
844
|
/** @type {ExternalModuleRequest} */
|
|
653
845
|
this.request = request;
|
|
@@ -657,34 +849,23 @@ class ExternalModule extends Module {
|
|
|
657
849
|
this.userRequest = userRequest;
|
|
658
850
|
/** @type {DependencyMeta=} */
|
|
659
851
|
this.dependencyMeta = dependencyMeta;
|
|
852
|
+
/** @type {ExternalInterop | undefined} interop shape of the external's exports (undefined = importer-driven default) */
|
|
853
|
+
this.interop = interop;
|
|
660
854
|
}
|
|
661
855
|
|
|
662
856
|
/**
|
|
663
|
-
*
|
|
664
|
-
* @returns {ExternalModuleHooks} the attached hooks
|
|
665
|
-
*/
|
|
666
|
-
static getCompilationHooks(compilation) {
|
|
667
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
668
|
-
if (hooks === undefined) {
|
|
669
|
-
hooks = {
|
|
670
|
-
chunkCondition: new SyncBailHook(["chunk", "compilation"])
|
|
671
|
-
};
|
|
672
|
-
compilationHooksMap.set(compilation, hooks);
|
|
673
|
-
}
|
|
674
|
-
return hooks;
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
/**
|
|
857
|
+
* Returns the source types this module can generate.
|
|
678
858
|
* @returns {SourceTypes} types available (do not mutate)
|
|
679
859
|
*/
|
|
680
860
|
getSourceTypes() {
|
|
681
|
-
if (
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
861
|
+
if (this.externalType === "asset" && this.dependencyMeta) {
|
|
862
|
+
const sourceType =
|
|
863
|
+
/** @type {AssetDependencyMeta} */
|
|
864
|
+
(this.dependencyMeta).sourceType;
|
|
865
|
+
// TODO webpack 6 drop "css-url" once the alias is removed
|
|
866
|
+
if (sourceType === ASSET_URL_TYPE || sourceType === "css-url") {
|
|
867
|
+
return ASSET_URL_TYPES;
|
|
868
|
+
}
|
|
688
869
|
} else if (this.externalType === "css-import") {
|
|
689
870
|
return CSS_IMPORT_TYPES;
|
|
690
871
|
}
|
|
@@ -693,6 +874,7 @@ class ExternalModule extends Module {
|
|
|
693
874
|
}
|
|
694
875
|
|
|
695
876
|
/**
|
|
877
|
+
* Gets the library identifier.
|
|
696
878
|
* @param {LibIdentOptions} options options
|
|
697
879
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
698
880
|
*/
|
|
@@ -701,6 +883,7 @@ class ExternalModule extends Module {
|
|
|
701
883
|
}
|
|
702
884
|
|
|
703
885
|
/**
|
|
886
|
+
* Returns true if the module can be placed in the chunk.
|
|
704
887
|
* @param {Chunk} chunk the chunk which condition should be checked
|
|
705
888
|
* @param {Compilation} compilation the compilation
|
|
706
889
|
* @returns {boolean} true if the module can be placed in the chunk
|
|
@@ -721,13 +904,30 @@ class ExternalModule extends Module {
|
|
|
721
904
|
}
|
|
722
905
|
|
|
723
906
|
/**
|
|
907
|
+
* Returns the unique identifier used to reference this module.
|
|
724
908
|
* @returns {string} a unique identifier of the module
|
|
725
909
|
*/
|
|
726
910
|
identifier() {
|
|
727
|
-
|
|
911
|
+
let id = `external ${this._resolveExternalType(
|
|
912
|
+
this.externalType
|
|
913
|
+
)} ${JSON.stringify(this.request)}`;
|
|
914
|
+
const meta = /** @type {ImportDependencyMeta | undefined} */ (
|
|
915
|
+
this.dependencyMeta
|
|
916
|
+
);
|
|
917
|
+
if (meta) {
|
|
918
|
+
if (meta.phase) {
|
|
919
|
+
id += `|phase=${ImportPhaseUtils.stringify(meta.phase)}`;
|
|
920
|
+
}
|
|
921
|
+
if (meta.attributes) {
|
|
922
|
+
id += `|attributes=${JSON.stringify(meta.attributes)}`;
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
if (this.interop) id += `|interop=${this.interop}`;
|
|
926
|
+
return id;
|
|
728
927
|
}
|
|
729
928
|
|
|
730
929
|
/**
|
|
930
|
+
* Returns a human-readable identifier for this module.
|
|
731
931
|
* @param {RequestShortener} requestShortener the request shortener
|
|
732
932
|
* @returns {string} a user readable identifier of the module
|
|
733
933
|
*/
|
|
@@ -736,6 +936,7 @@ class ExternalModule extends Module {
|
|
|
736
936
|
}
|
|
737
937
|
|
|
738
938
|
/**
|
|
939
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
739
940
|
* @param {NeedBuildContext} context context info
|
|
740
941
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
741
942
|
* @returns {void}
|
|
@@ -745,6 +946,7 @@ class ExternalModule extends Module {
|
|
|
745
946
|
}
|
|
746
947
|
|
|
747
948
|
/**
|
|
949
|
+
* Builds the module using the provided compilation context.
|
|
748
950
|
* @param {WebpackOptions} options webpack options
|
|
749
951
|
* @param {Compilation} compilation the compilation
|
|
750
952
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -763,6 +965,28 @@ class ExternalModule extends Module {
|
|
|
763
965
|
javascriptModule: compilation.outputOptions.module
|
|
764
966
|
};
|
|
765
967
|
const { request, externalType } = this._getRequestAndExternalType();
|
|
968
|
+
if (
|
|
969
|
+
request === undefined &&
|
|
970
|
+
typeof this.request === "object" &&
|
|
971
|
+
!Array.isArray(this.request) &&
|
|
972
|
+
!LIBRARY_WIRED_EXTERNAL_TYPES.has(this.externalType)
|
|
973
|
+
) {
|
|
974
|
+
this.addError(
|
|
975
|
+
new WebpackError(
|
|
976
|
+
`Missing external configuration for type "${
|
|
977
|
+
this.externalType
|
|
978
|
+
}" in external ${JSON.stringify(
|
|
979
|
+
this.request
|
|
980
|
+
)}. Add a ${JSON.stringify(
|
|
981
|
+
this.externalType
|
|
982
|
+
)} entry to it or set 'output.externalsType'/'output.library.type' to one of: ${Object.keys(
|
|
983
|
+
this.request
|
|
984
|
+
)
|
|
985
|
+
.map((key) => JSON.stringify(key))
|
|
986
|
+
.join(", ")}`
|
|
987
|
+
)
|
|
988
|
+
);
|
|
989
|
+
}
|
|
766
990
|
this.buildMeta.exportsType = "dynamic";
|
|
767
991
|
let canMangle = false;
|
|
768
992
|
this.clearDependenciesAndBlocks();
|
|
@@ -811,6 +1035,14 @@ class ExternalModule extends Module {
|
|
|
811
1035
|
"external promise"
|
|
812
1036
|
);
|
|
813
1037
|
break;
|
|
1038
|
+
case "amd-async":
|
|
1039
|
+
this.buildMeta.async = true;
|
|
1040
|
+
EnvironmentNotSupportAsyncWarning.check(
|
|
1041
|
+
this,
|
|
1042
|
+
compilation.runtimeTemplate,
|
|
1043
|
+
"external amd-async"
|
|
1044
|
+
);
|
|
1045
|
+
break;
|
|
814
1046
|
case "import":
|
|
815
1047
|
this.buildMeta.async = true;
|
|
816
1048
|
EnvironmentNotSupportAsyncWarning.check(
|
|
@@ -824,6 +1056,20 @@ class ExternalModule extends Module {
|
|
|
824
1056
|
}
|
|
825
1057
|
break;
|
|
826
1058
|
}
|
|
1059
|
+
// Opt-in override for how the external's exports interoperate with ESM
|
|
1060
|
+
// imports, independent of the importer's strictness (see Rollup's
|
|
1061
|
+
// `output.interop`). Only meaningful for a single-request external.
|
|
1062
|
+
if (this.interop && (!Array.isArray(request) || request.length === 1)) {
|
|
1063
|
+
if (this.interop === "esModule") {
|
|
1064
|
+
// external already is an ES module namespace: `default` unboxes to `.default`
|
|
1065
|
+
this.buildMeta.exportsType = "namespace";
|
|
1066
|
+
} else {
|
|
1067
|
+
// "default": treat as CommonJS, `default` is the whole exports (Node.js semantics)
|
|
1068
|
+
this.buildMeta.exportsType = "default";
|
|
1069
|
+
this.buildMeta.defaultObject = "redirect";
|
|
1070
|
+
}
|
|
1071
|
+
canMangle = false;
|
|
1072
|
+
}
|
|
827
1073
|
this.addDependency(new StaticExportsDependency(true, canMangle));
|
|
828
1074
|
callback();
|
|
829
1075
|
}
|
|
@@ -838,6 +1084,7 @@ class ExternalModule extends Module {
|
|
|
838
1084
|
}
|
|
839
1085
|
|
|
840
1086
|
/**
|
|
1087
|
+
* Returns the reason this module cannot be concatenated, when one exists.
|
|
841
1088
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
842
1089
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
843
1090
|
*/
|
|
@@ -855,6 +1102,7 @@ class ExternalModule extends Module {
|
|
|
855
1102
|
}
|
|
856
1103
|
|
|
857
1104
|
/**
|
|
1105
|
+
* Get request and external type.
|
|
858
1106
|
* @private
|
|
859
1107
|
* @returns {{ request: string | string[], externalType: ExternalsType }} the request and external type
|
|
860
1108
|
*/
|
|
@@ -901,6 +1149,7 @@ class ExternalModule extends Module {
|
|
|
901
1149
|
}
|
|
902
1150
|
|
|
903
1151
|
/**
|
|
1152
|
+
* Returns the source data.
|
|
904
1153
|
* @private
|
|
905
1154
|
* @param {string | string[]} request request
|
|
906
1155
|
* @param {ExternalsType} externalType the external type
|
|
@@ -922,6 +1171,11 @@ class ExternalModule extends Module {
|
|
|
922
1171
|
dependencyMeta,
|
|
923
1172
|
concatenationScope
|
|
924
1173
|
) {
|
|
1174
|
+
request = normalizeNodeCoreModuleRequest(
|
|
1175
|
+
request,
|
|
1176
|
+
externalType,
|
|
1177
|
+
runtimeTemplate
|
|
1178
|
+
);
|
|
925
1179
|
switch (externalType) {
|
|
926
1180
|
case "this":
|
|
927
1181
|
case "window":
|
|
@@ -936,11 +1190,24 @@ class ExternalModule extends Module {
|
|
|
936
1190
|
case "commonjs2":
|
|
937
1191
|
case "commonjs-module":
|
|
938
1192
|
case "commonjs-static":
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1193
|
+
case "node-commonjs": {
|
|
1194
|
+
const { node } = runtimeTemplate.compilation.options.externalsPresets;
|
|
1195
|
+
// ESM has no `require`; load via `createRequire` when the target is node
|
|
1196
|
+
const createRequireInModule =
|
|
1197
|
+
/** @type {BuildInfo} */ (this.buildInfo).javascriptModule &&
|
|
1198
|
+
(externalType === "node-commonjs" || Boolean(node));
|
|
1199
|
+
if (!createRequireInModule) {
|
|
1200
|
+
return getSourceForCommonJsExternal(request);
|
|
1201
|
+
}
|
|
1202
|
+
// for a universal target (e.g. `["node", "web"]`) load defensively so the browser doesn't crash
|
|
1203
|
+
return getSourceForCommonJsExternalInNodeModule(
|
|
1204
|
+
request,
|
|
1205
|
+
runtimeTemplate,
|
|
1206
|
+
runtimeTemplate.isUniversalTarget()
|
|
1207
|
+
);
|
|
1208
|
+
}
|
|
1209
|
+
case "amd-async":
|
|
1210
|
+
return getSourceForAmdAsyncExternal(request, runtimeTemplate);
|
|
944
1211
|
case "amd":
|
|
945
1212
|
case "amd-require":
|
|
946
1213
|
case "umd":
|
|
@@ -1007,6 +1274,7 @@ class ExternalModule extends Module {
|
|
|
1007
1274
|
}
|
|
1008
1275
|
|
|
1009
1276
|
/**
|
|
1277
|
+
* Generates code and runtime requirements for this module.
|
|
1010
1278
|
* @param {CodeGenerationContext} context context for code generation
|
|
1011
1279
|
* @returns {CodeGenerationResult} result
|
|
1012
1280
|
*/
|
|
@@ -1031,12 +1299,14 @@ class ExternalModule extends Module {
|
|
|
1031
1299
|
data.set("url", { javascript: /** @type {string} */ (request) });
|
|
1032
1300
|
return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS, data };
|
|
1033
1301
|
}
|
|
1034
|
-
|
|
1302
|
+
// TODO webpack 6 remove "css-url" alias
|
|
1303
|
+
case "css-url":
|
|
1304
|
+
case "asset-url": {
|
|
1035
1305
|
/** @type {Sources} */
|
|
1036
1306
|
const sources = new Map();
|
|
1037
1307
|
/** @type {CodeGenerationResultData} */
|
|
1038
1308
|
const data = new Map();
|
|
1039
|
-
data.set("url", {
|
|
1309
|
+
data.set("url", { [ASSET_URL_TYPE]: /** @type {string} */ (request) });
|
|
1040
1310
|
return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS, data };
|
|
1041
1311
|
}
|
|
1042
1312
|
case "css-import": {
|
|
@@ -1092,7 +1362,9 @@ class ExternalModule extends Module {
|
|
|
1092
1362
|
scope.registerRawExport(specifier, finalName);
|
|
1093
1363
|
}
|
|
1094
1364
|
} else if (concatenationScope) {
|
|
1095
|
-
sourceString = `${runtimeTemplate.renderConst()} ${
|
|
1365
|
+
sourceString = `${runtimeTemplate.renderConst()} ${
|
|
1366
|
+
ConcatenationScope.NAMESPACE_OBJECT_EXPORT
|
|
1367
|
+
} = ${sourceString};`;
|
|
1096
1368
|
concatenationScope.registerNamespaceExport(
|
|
1097
1369
|
ConcatenationScope.NAMESPACE_OBJECT_EXPORT
|
|
1098
1370
|
);
|
|
@@ -1143,6 +1415,7 @@ class ExternalModule extends Module {
|
|
|
1143
1415
|
}
|
|
1144
1416
|
|
|
1145
1417
|
/**
|
|
1418
|
+
* Returns the estimated size for the requested source type.
|
|
1146
1419
|
* @param {string=} type the source type for which the size should be estimated
|
|
1147
1420
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
1148
1421
|
*/
|
|
@@ -1151,6 +1424,7 @@ class ExternalModule extends Module {
|
|
|
1151
1424
|
}
|
|
1152
1425
|
|
|
1153
1426
|
/**
|
|
1427
|
+
* Updates the hash with the data contributed by this instance.
|
|
1154
1428
|
* @param {Hash} hash the hash used to track dependencies
|
|
1155
1429
|
* @param {UpdateHashContext} context context
|
|
1156
1430
|
* @returns {void}
|
|
@@ -1158,42 +1432,66 @@ class ExternalModule extends Module {
|
|
|
1158
1432
|
updateHash(hash, context) {
|
|
1159
1433
|
const { chunkGraph } = context;
|
|
1160
1434
|
hash.update(
|
|
1161
|
-
`${this._resolveExternalType(this.externalType)}${JSON.stringify(
|
|
1162
|
-
|
|
1163
|
-
)}`
|
|
1435
|
+
`${this._resolveExternalType(this.externalType)}${JSON.stringify(
|
|
1436
|
+
this.request
|
|
1437
|
+
)}${this.isOptional(chunkGraph.moduleGraph)}`
|
|
1164
1438
|
);
|
|
1439
|
+
const meta = /** @type {ImportDependencyMeta | undefined} */ (
|
|
1440
|
+
this.dependencyMeta
|
|
1441
|
+
);
|
|
1442
|
+
if (meta) {
|
|
1443
|
+
if (meta.phase) {
|
|
1444
|
+
hash.update(`|phase=${ImportPhaseUtils.stringify(meta.phase)}`);
|
|
1445
|
+
}
|
|
1446
|
+
if (meta.attributes) {
|
|
1447
|
+
hash.update(`|attributes=${JSON.stringify(meta.attributes)}`);
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
if (this.interop) hash.update(`|interop=${this.interop}`);
|
|
1165
1451
|
super.updateHash(hash, context);
|
|
1166
1452
|
}
|
|
1167
1453
|
|
|
1168
1454
|
/**
|
|
1455
|
+
* Serializes this instance into the provided serializer context.
|
|
1169
1456
|
* @param {ObjectSerializerContext} context context
|
|
1170
1457
|
*/
|
|
1171
1458
|
serialize(context) {
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1459
|
+
context
|
|
1460
|
+
.write(this.request)
|
|
1461
|
+
.write(this.externalType)
|
|
1462
|
+
.write(this.userRequest)
|
|
1463
|
+
.write(this.dependencyMeta)
|
|
1464
|
+
.write(this.interop);
|
|
1178
1465
|
|
|
1179
1466
|
super.serialize(context);
|
|
1180
1467
|
}
|
|
1181
1468
|
|
|
1182
1469
|
/**
|
|
1470
|
+
* Restores this instance from the provided deserializer context.
|
|
1183
1471
|
* @param {ObjectDeserializerContext} context context
|
|
1184
1472
|
*/
|
|
1185
1473
|
deserialize(context) {
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
this.
|
|
1189
|
-
|
|
1190
|
-
this.userRequest = read();
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1474
|
+
this.request = context.read();
|
|
1475
|
+
const c1 = context.rest;
|
|
1476
|
+
this.externalType = c1.read();
|
|
1477
|
+
const c2 = c1.rest;
|
|
1478
|
+
this.userRequest = c2.read();
|
|
1479
|
+
const c3 = c2.rest;
|
|
1480
|
+
this.dependencyMeta = c3.read();
|
|
1481
|
+
const c4 = c3.rest;
|
|
1482
|
+
this.interop = c4.read();
|
|
1483
|
+
|
|
1484
|
+
super.deserialize(c4.rest);
|
|
1194
1485
|
}
|
|
1195
1486
|
}
|
|
1196
1487
|
|
|
1488
|
+
ExternalModule.getCompilationHooks = createHooksRegistry(
|
|
1489
|
+
() =>
|
|
1490
|
+
/** @type {ExternalModuleHooks} */ ({
|
|
1491
|
+
chunkCondition: new SyncBailHook(["chunk", "compilation"])
|
|
1492
|
+
})
|
|
1493
|
+
);
|
|
1494
|
+
|
|
1197
1495
|
makeSerializable(ExternalModule, "webpack/lib/ExternalModule");
|
|
1198
1496
|
|
|
1199
1497
|
module.exports = ExternalModule;
|