webpack 5.59.0 → 5.94.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 +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- 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 +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
package/lib/RuntimeTemplate.js
CHANGED
@@ -13,12 +13,18 @@ const compileBooleanMatcher = require("./util/compileBooleanMatcher");
|
|
13
13
|
const propertyAccess = require("./util/propertyAccess");
|
14
14
|
const { forEachRuntime, subtractRuntime } = require("./util/runtime");
|
15
15
|
|
16
|
+
/** @typedef {import("../declarations/WebpackOptions").Environment} Environment */
|
16
17
|
/** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
|
17
18
|
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
19
|
+
/** @typedef {import("./Chunk")} Chunk */
|
18
20
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
21
|
+
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
|
22
|
+
/** @typedef {import("./CodeGenerationResults").CodeGenerationResult} CodeGenerationResult */
|
19
23
|
/** @typedef {import("./Compilation")} Compilation */
|
20
24
|
/** @typedef {import("./Dependency")} Dependency */
|
21
25
|
/** @typedef {import("./Module")} Module */
|
26
|
+
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
27
|
+
/** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
|
22
28
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
23
29
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
24
30
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
@@ -28,27 +34,49 @@ const { forEachRuntime, subtractRuntime } = require("./util/runtime");
|
|
28
34
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
29
35
|
* @returns {string} error message
|
30
36
|
*/
|
31
|
-
const noModuleIdErrorMessage = (
|
32
|
-
|
37
|
+
const noModuleIdErrorMessage = (
|
38
|
+
module,
|
39
|
+
chunkGraph
|
40
|
+
) => `Module ${module.identifier()} has no id assigned.
|
33
41
|
This should not happen.
|
34
42
|
It's in these chunks: ${
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
43
|
+
Array.from(
|
44
|
+
chunkGraph.getModuleChunksIterable(module),
|
45
|
+
c => c.name || c.id || c.debugId
|
46
|
+
).join(", ") || "none"
|
47
|
+
} (If module is in no chunk this indicates a bug in some chunk/module optimization logic)
|
40
48
|
Module has these incoming connections: ${Array.from(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
chunkGraph.moduleGraph.getIncomingConnections(module),
|
50
|
+
connection =>
|
51
|
+
`\n - ${
|
52
|
+
connection.originModule && connection.originModule.identifier()
|
53
|
+
} ${connection.dependency && connection.dependency.type} ${
|
54
|
+
(connection.explanations &&
|
55
|
+
Array.from(connection.explanations).join(", ")) ||
|
56
|
+
""
|
57
|
+
}`
|
58
|
+
).join("")}`;
|
59
|
+
|
60
|
+
/**
|
61
|
+
* @param {string | undefined} definition global object definition
|
62
|
+
* @returns {string | undefined} save to use global object
|
63
|
+
*/
|
64
|
+
function getGlobalObject(definition) {
|
65
|
+
if (!definition) return definition;
|
66
|
+
const trimmed = definition.trim();
|
67
|
+
|
68
|
+
if (
|
69
|
+
// identifier, we do not need real identifier regarding ECMAScript/Unicode
|
70
|
+
/^[_\p{L}][_0-9\p{L}]*$/iu.test(trimmed) ||
|
71
|
+
// iife
|
72
|
+
// call expression
|
73
|
+
// expression in parentheses
|
74
|
+
/^([_\p{L}][_0-9\p{L}]*)?\(.*\)$/iu.test(trimmed)
|
75
|
+
)
|
76
|
+
return trimmed;
|
77
|
+
|
78
|
+
return `Object(${trimmed})`;
|
79
|
+
}
|
52
80
|
|
53
81
|
class RuntimeTemplate {
|
54
82
|
/**
|
@@ -60,6 +88,13 @@ class RuntimeTemplate {
|
|
60
88
|
this.compilation = compilation;
|
61
89
|
this.outputOptions = outputOptions || {};
|
62
90
|
this.requestShortener = requestShortener;
|
91
|
+
this.globalObject =
|
92
|
+
/** @type {string} */
|
93
|
+
(getGlobalObject(outputOptions.globalObject));
|
94
|
+
this.contentHashReplacement = "X".repeat(
|
95
|
+
/** @type {NonNullable<OutputOptions["hashDigestLength"]>} */
|
96
|
+
(outputOptions.hashDigestLength)
|
97
|
+
);
|
63
98
|
}
|
64
99
|
|
65
100
|
isIIFE() {
|
@@ -71,86 +106,209 @@ class RuntimeTemplate {
|
|
71
106
|
}
|
72
107
|
|
73
108
|
supportsConst() {
|
74
|
-
return this.outputOptions.environment.const;
|
109
|
+
return /** @type {Environment} */ (this.outputOptions.environment).const;
|
75
110
|
}
|
76
111
|
|
77
112
|
supportsArrowFunction() {
|
78
|
-
return this.outputOptions.environment
|
113
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
114
|
+
.arrowFunction;
|
115
|
+
}
|
116
|
+
|
117
|
+
supportsAsyncFunction() {
|
118
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
119
|
+
.asyncFunction;
|
120
|
+
}
|
121
|
+
|
122
|
+
supportsOptionalChaining() {
|
123
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
124
|
+
.optionalChaining;
|
79
125
|
}
|
80
126
|
|
81
127
|
supportsForOf() {
|
82
|
-
return this.outputOptions.environment.forOf;
|
128
|
+
return /** @type {Environment} */ (this.outputOptions.environment).forOf;
|
83
129
|
}
|
84
130
|
|
85
131
|
supportsDestructuring() {
|
86
|
-
return this.outputOptions.environment
|
132
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
133
|
+
.destructuring;
|
87
134
|
}
|
88
135
|
|
89
136
|
supportsBigIntLiteral() {
|
90
|
-
return this.outputOptions.environment
|
137
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
138
|
+
.bigIntLiteral;
|
91
139
|
}
|
92
140
|
|
93
141
|
supportsDynamicImport() {
|
94
|
-
return this.outputOptions.environment
|
142
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
143
|
+
.dynamicImport;
|
95
144
|
}
|
96
145
|
|
97
146
|
supportsEcmaScriptModuleSyntax() {
|
98
|
-
return this.outputOptions.environment.module;
|
147
|
+
return /** @type {Environment} */ (this.outputOptions.environment).module;
|
99
148
|
}
|
100
149
|
|
101
150
|
supportTemplateLiteral() {
|
102
|
-
|
103
|
-
|
151
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
152
|
+
.templateLiteral;
|
104
153
|
}
|
105
154
|
|
155
|
+
supportNodePrefixForCoreModules() {
|
156
|
+
return /** @type {Environment} */ (this.outputOptions.environment)
|
157
|
+
.nodePrefixForCoreModules;
|
158
|
+
}
|
159
|
+
|
160
|
+
/**
|
161
|
+
* @param {string} returnValue return value
|
162
|
+
* @param {string} args arguments
|
163
|
+
* @returns {string} returning function
|
164
|
+
*/
|
106
165
|
returningFunction(returnValue, args = "") {
|
107
166
|
return this.supportsArrowFunction()
|
108
167
|
? `(${args}) => (${returnValue})`
|
109
168
|
: `function(${args}) { return ${returnValue}; }`;
|
110
169
|
}
|
111
170
|
|
171
|
+
/**
|
172
|
+
* @param {string} args arguments
|
173
|
+
* @param {string | string[]} body body
|
174
|
+
* @returns {string} basic function
|
175
|
+
*/
|
112
176
|
basicFunction(args, body) {
|
113
177
|
return this.supportsArrowFunction()
|
114
178
|
? `(${args}) => {\n${Template.indent(body)}\n}`
|
115
179
|
: `function(${args}) {\n${Template.indent(body)}\n}`;
|
116
180
|
}
|
117
181
|
|
182
|
+
/**
|
183
|
+
* @param {Array<string|{expr: string}>} args args
|
184
|
+
* @returns {string} result expression
|
185
|
+
*/
|
186
|
+
concatenation(...args) {
|
187
|
+
const len = args.length;
|
188
|
+
|
189
|
+
if (len === 2) return this._es5Concatenation(args);
|
190
|
+
if (len === 0) return '""';
|
191
|
+
if (len === 1) {
|
192
|
+
return typeof args[0] === "string"
|
193
|
+
? JSON.stringify(args[0])
|
194
|
+
: `"" + ${args[0].expr}`;
|
195
|
+
}
|
196
|
+
if (!this.supportTemplateLiteral()) return this._es5Concatenation(args);
|
197
|
+
|
198
|
+
// cost comparison between template literal and concatenation:
|
199
|
+
// both need equal surroundings: `xxx` vs "xxx"
|
200
|
+
// template literal has constant cost of 3 chars for each expression
|
201
|
+
// es5 concatenation has cost of 3 + n chars for n expressions in row
|
202
|
+
// when a es5 concatenation ends with an expression it reduces cost by 3
|
203
|
+
// when a es5 concatenation starts with an single expression it reduces cost by 3
|
204
|
+
// e. g. `${a}${b}${c}` (3*3 = 9) is longer than ""+a+b+c ((3+3)-3 = 3)
|
205
|
+
// e. g. `x${a}x${b}x${c}x` (3*3 = 9) is shorter than "x"+a+"x"+b+"x"+c+"x" (4+4+4 = 12)
|
206
|
+
|
207
|
+
let templateCost = 0;
|
208
|
+
let concatenationCost = 0;
|
209
|
+
|
210
|
+
let lastWasExpr = false;
|
211
|
+
for (const arg of args) {
|
212
|
+
const isExpr = typeof arg !== "string";
|
213
|
+
if (isExpr) {
|
214
|
+
templateCost += 3;
|
215
|
+
concatenationCost += lastWasExpr ? 1 : 4;
|
216
|
+
}
|
217
|
+
lastWasExpr = isExpr;
|
218
|
+
}
|
219
|
+
if (lastWasExpr) concatenationCost -= 3;
|
220
|
+
if (typeof args[0] !== "string" && typeof args[1] === "string")
|
221
|
+
concatenationCost -= 3;
|
222
|
+
|
223
|
+
if (concatenationCost <= templateCost) return this._es5Concatenation(args);
|
224
|
+
|
225
|
+
return `\`${args
|
226
|
+
.map(arg => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
|
227
|
+
.join("")}\``;
|
228
|
+
}
|
229
|
+
|
230
|
+
/**
|
231
|
+
* @param {Array<string|{expr: string}>} args args (len >= 2)
|
232
|
+
* @returns {string} result expression
|
233
|
+
* @private
|
234
|
+
*/
|
235
|
+
_es5Concatenation(args) {
|
236
|
+
const str = args
|
237
|
+
.map(arg => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
|
238
|
+
.join(" + ");
|
239
|
+
|
240
|
+
// when the first two args are expression, we need to prepend "" + to force string
|
241
|
+
// concatenation instead of number addition.
|
242
|
+
return typeof args[0] !== "string" && typeof args[1] !== "string"
|
243
|
+
? `"" + ${str}`
|
244
|
+
: str;
|
245
|
+
}
|
246
|
+
|
247
|
+
/**
|
248
|
+
* @param {string} expression expression
|
249
|
+
* @param {string} args arguments
|
250
|
+
* @returns {string} expression function code
|
251
|
+
*/
|
118
252
|
expressionFunction(expression, args = "") {
|
119
253
|
return this.supportsArrowFunction()
|
120
254
|
? `(${args}) => (${expression})`
|
121
255
|
: `function(${args}) { ${expression}; }`;
|
122
256
|
}
|
123
257
|
|
258
|
+
/**
|
259
|
+
* @returns {string} empty function code
|
260
|
+
*/
|
124
261
|
emptyFunction() {
|
125
262
|
return this.supportsArrowFunction() ? "x => {}" : "function() {}";
|
126
263
|
}
|
127
264
|
|
265
|
+
/**
|
266
|
+
* @param {string[]} items items
|
267
|
+
* @param {string} value value
|
268
|
+
* @returns {string} destructure array code
|
269
|
+
*/
|
128
270
|
destructureArray(items, value) {
|
129
271
|
return this.supportsDestructuring()
|
130
272
|
? `var [${items.join(", ")}] = ${value};`
|
131
273
|
: Template.asString(
|
132
274
|
items.map((item, i) => `var ${item} = ${value}[${i}];`)
|
133
|
-
|
275
|
+
);
|
134
276
|
}
|
135
277
|
|
278
|
+
/**
|
279
|
+
* @param {string[]} items items
|
280
|
+
* @param {string} value value
|
281
|
+
* @returns {string} destructure object code
|
282
|
+
*/
|
136
283
|
destructureObject(items, value) {
|
137
284
|
return this.supportsDestructuring()
|
138
285
|
? `var {${items.join(", ")}} = ${value};`
|
139
286
|
: Template.asString(
|
140
287
|
items.map(item => `var ${item} = ${value}${propertyAccess([item])};`)
|
141
|
-
|
288
|
+
);
|
142
289
|
}
|
143
290
|
|
291
|
+
/**
|
292
|
+
* @param {string} args arguments
|
293
|
+
* @param {string} body body
|
294
|
+
* @returns {string} IIFE code
|
295
|
+
*/
|
144
296
|
iife(args, body) {
|
145
297
|
return `(${this.basicFunction(args, body)})()`;
|
146
298
|
}
|
147
299
|
|
300
|
+
/**
|
301
|
+
* @param {string} variable variable
|
302
|
+
* @param {string} array array
|
303
|
+
* @param {string | string[]} body body
|
304
|
+
* @returns {string} for each code
|
305
|
+
*/
|
148
306
|
forEach(variable, array, body) {
|
149
307
|
return this.supportsForOf()
|
150
308
|
? `for(const ${variable} of ${array}) {\n${Template.indent(body)}\n}`
|
151
309
|
: `${array}.forEach(function(${variable}) {\n${Template.indent(
|
152
310
|
body
|
153
|
-
|
311
|
+
)}\n});`;
|
154
312
|
}
|
155
313
|
|
156
314
|
/**
|
@@ -178,10 +336,9 @@ class RuntimeTemplate {
|
|
178
336
|
}
|
179
337
|
if (!content) return "";
|
180
338
|
if (this.outputOptions.pathinfo) {
|
181
|
-
return Template.toComment(content)
|
182
|
-
} else {
|
183
|
-
return Template.toNormalComment(content) + " ";
|
339
|
+
return `${Template.toComment(content)} `;
|
184
340
|
}
|
341
|
+
return `${Template.toNormalComment(content)} `;
|
185
342
|
}
|
186
343
|
|
187
344
|
/**
|
@@ -237,10 +394,10 @@ class RuntimeTemplate {
|
|
237
394
|
}
|
238
395
|
|
239
396
|
/**
|
240
|
-
* @param {
|
397
|
+
* @param {object} options options object
|
241
398
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
242
399
|
* @param {Module} options.module the module
|
243
|
-
* @param {string} options.request the request that should be printed as comment
|
400
|
+
* @param {string=} options.request the request that should be printed as comment
|
244
401
|
* @param {string=} options.idExpr expression to use as id expression
|
245
402
|
* @param {"expression" | "promise" | "statements"} options.type which kind of code should be returned
|
246
403
|
* @returns {string} the code
|
@@ -251,15 +408,14 @@ class RuntimeTemplate {
|
|
251
408
|
moduleId === null
|
252
409
|
? JSON.stringify("Module is not available (weak dependency)")
|
253
410
|
: idExpr
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
const comment = request ? Template.toNormalComment(request)
|
259
|
-
const errorStatements =
|
260
|
-
|
261
|
-
|
262
|
-
"e.code = 'MODULE_NOT_FOUND'; throw e;";
|
411
|
+
? `"Module '" + ${idExpr} + "' is not available (weak dependency)"`
|
412
|
+
: JSON.stringify(
|
413
|
+
`Module '${moduleId}' is not available (weak dependency)`
|
414
|
+
);
|
415
|
+
const comment = request ? `${Template.toNormalComment(request)} ` : "";
|
416
|
+
const errorStatements = `var e = new Error(${errorMessage}); ${
|
417
|
+
comment
|
418
|
+
}e.code = 'MODULE_NOT_FOUND'; throw e;`;
|
263
419
|
switch (type) {
|
264
420
|
case "statements":
|
265
421
|
return errorStatements;
|
@@ -274,10 +430,10 @@ class RuntimeTemplate {
|
|
274
430
|
}
|
275
431
|
|
276
432
|
/**
|
277
|
-
* @param {
|
433
|
+
* @param {object} options options object
|
278
434
|
* @param {Module} options.module the module
|
279
435
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
280
|
-
* @param {string} options.request the request that should be printed as comment
|
436
|
+
* @param {string=} options.request the request that should be printed as comment
|
281
437
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
282
438
|
* @returns {string} the expression
|
283
439
|
*/
|
@@ -303,12 +459,12 @@ class RuntimeTemplate {
|
|
303
459
|
}
|
304
460
|
|
305
461
|
/**
|
306
|
-
* @param {
|
307
|
-
* @param {Module} options.module the module
|
462
|
+
* @param {object} options options object
|
463
|
+
* @param {Module | null} options.module the module
|
308
464
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
309
|
-
* @param {string} options.request the request that should be printed as comment
|
465
|
+
* @param {string=} options.request the request that should be printed as comment
|
310
466
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
311
|
-
* @param {
|
467
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
312
468
|
* @returns {string} the expression
|
313
469
|
*/
|
314
470
|
moduleRaw({ module, chunkGraph, request, weak, runtimeRequirements }) {
|
@@ -337,7 +493,7 @@ class RuntimeTemplate {
|
|
337
493
|
);
|
338
494
|
}
|
339
495
|
runtimeRequirements.add(RuntimeGlobals.require);
|
340
|
-
return
|
496
|
+
return `${RuntimeGlobals.require}(${this.moduleId({
|
341
497
|
module,
|
342
498
|
chunkGraph,
|
343
499
|
request,
|
@@ -346,12 +502,12 @@ class RuntimeTemplate {
|
|
346
502
|
}
|
347
503
|
|
348
504
|
/**
|
349
|
-
* @param {
|
350
|
-
* @param {Module} options.module the module
|
505
|
+
* @param {object} options options object
|
506
|
+
* @param {Module | null} options.module the module
|
351
507
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
352
508
|
* @param {string} options.request the request that should be printed as comment
|
353
509
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
354
|
-
* @param {
|
510
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
355
511
|
* @returns {string} the expression
|
356
512
|
*/
|
357
513
|
moduleExports({ module, chunkGraph, request, weak, runtimeRequirements }) {
|
@@ -365,13 +521,13 @@ class RuntimeTemplate {
|
|
365
521
|
}
|
366
522
|
|
367
523
|
/**
|
368
|
-
* @param {
|
524
|
+
* @param {object} options options object
|
369
525
|
* @param {Module} options.module the module
|
370
526
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
371
527
|
* @param {string} options.request the request that should be printed as comment
|
372
528
|
* @param {boolean=} options.strict if the current module is in strict esm mode
|
373
529
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
374
|
-
* @param {
|
530
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
375
531
|
* @returns {string} the expression
|
376
532
|
*/
|
377
533
|
moduleNamespace({
|
@@ -434,7 +590,7 @@ class RuntimeTemplate {
|
|
434
590
|
}
|
435
591
|
|
436
592
|
/**
|
437
|
-
* @param {
|
593
|
+
* @param {object} options options object
|
438
594
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
439
595
|
* @param {AsyncDependenciesBlock=} options.block the current dependencies block
|
440
596
|
* @param {Module} options.module the module
|
@@ -442,7 +598,7 @@ class RuntimeTemplate {
|
|
442
598
|
* @param {string} options.message a message for the comment
|
443
599
|
* @param {boolean=} options.strict if the current module is in strict esm mode
|
444
600
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
445
|
-
* @param {
|
601
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
446
602
|
* @returns {string} the promise expression
|
447
603
|
*/
|
448
604
|
moduleNamespacePromise({
|
@@ -533,7 +689,7 @@ class RuntimeTemplate {
|
|
533
689
|
)})`;
|
534
690
|
} else {
|
535
691
|
runtimeRequirements.add(RuntimeGlobals.require);
|
536
|
-
appending = `.then(
|
692
|
+
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
537
693
|
}
|
538
694
|
break;
|
539
695
|
case "dynamic":
|
@@ -559,7 +715,7 @@ class RuntimeTemplate {
|
|
559
715
|
)})`;
|
560
716
|
} else {
|
561
717
|
runtimeRequirements.add(RuntimeGlobals.require);
|
562
|
-
appending = `.then(
|
718
|
+
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
563
719
|
}
|
564
720
|
appending += `.then(${this.returningFunction(
|
565
721
|
`${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
|
@@ -574,7 +730,7 @@ class RuntimeTemplate {
|
|
574
730
|
`${header}return ${returnExpression};`
|
575
731
|
)})`;
|
576
732
|
} else {
|
577
|
-
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(
|
733
|
+
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
|
578
734
|
}
|
579
735
|
}
|
580
736
|
break;
|
@@ -584,11 +740,11 @@ class RuntimeTemplate {
|
|
584
740
|
}
|
585
741
|
|
586
742
|
/**
|
587
|
-
* @param {
|
743
|
+
* @param {object} options options object
|
588
744
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
589
745
|
* @param {RuntimeSpec=} options.runtime runtime for which this code will be generated
|
590
746
|
* @param {RuntimeSpec | boolean=} options.runtimeCondition only execute the statement in some runtimes
|
591
|
-
* @param {
|
747
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
592
748
|
* @returns {string} expression
|
593
749
|
*/
|
594
750
|
runtimeConditionExpression({
|
@@ -602,12 +758,16 @@ class RuntimeTemplate {
|
|
602
758
|
/** @type {Set<string>} */
|
603
759
|
const positiveRuntimeIds = new Set();
|
604
760
|
forEachRuntime(runtimeCondition, runtime =>
|
605
|
-
positiveRuntimeIds.add(
|
761
|
+
positiveRuntimeIds.add(
|
762
|
+
`${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
|
763
|
+
)
|
606
764
|
);
|
607
765
|
/** @type {Set<string>} */
|
608
766
|
const negativeRuntimeIds = new Set();
|
609
767
|
forEachRuntime(subtractRuntime(runtime, runtimeCondition), runtime =>
|
610
|
-
negativeRuntimeIds.add(
|
768
|
+
negativeRuntimeIds.add(
|
769
|
+
`${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
|
770
|
+
)
|
611
771
|
);
|
612
772
|
runtimeRequirements.add(RuntimeGlobals.runtimeId);
|
613
773
|
return compileBooleanMatcher.fromLists(
|
@@ -617,8 +777,7 @@ class RuntimeTemplate {
|
|
617
777
|
}
|
618
778
|
|
619
779
|
/**
|
620
|
-
*
|
621
|
-
* @param {Object} options options object
|
780
|
+
* @param {object} options options object
|
622
781
|
* @param {boolean=} options.update whether a new variable should be created or the existing one updated
|
623
782
|
* @param {Module} options.module the module
|
624
783
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
@@ -626,7 +785,7 @@ class RuntimeTemplate {
|
|
626
785
|
* @param {string} options.importVar name of the import variable
|
627
786
|
* @param {Module} options.originModule module in which the statement is emitted
|
628
787
|
* @param {boolean=} options.weak true, if this is a weak dependency
|
629
|
-
* @param {
|
788
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
630
789
|
* @returns {[string, string]} the import statement and the compat statement
|
631
790
|
*/
|
632
791
|
importStatement({
|
@@ -678,10 +837,11 @@ class RuntimeTemplate {
|
|
678
837
|
|
679
838
|
const exportsType = module.getExportsType(
|
680
839
|
chunkGraph.moduleGraph,
|
681
|
-
|
840
|
+
/** @type {BuildMeta} */
|
841
|
+
(originModule.buildMeta).strictHarmonyModule
|
682
842
|
);
|
683
843
|
runtimeRequirements.add(RuntimeGlobals.require);
|
684
|
-
const importContent = `/* harmony import */ ${optDeclaration}${importVar} =
|
844
|
+
const importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
|
685
845
|
|
686
846
|
if (exportsType === "dynamic") {
|
687
847
|
runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
|
@@ -694,7 +854,7 @@ class RuntimeTemplate {
|
|
694
854
|
}
|
695
855
|
|
696
856
|
/**
|
697
|
-
* @param {
|
857
|
+
* @param {object} options options
|
698
858
|
* @param {ModuleGraph} options.moduleGraph the module graph
|
699
859
|
* @param {Module} options.module the module
|
700
860
|
* @param {string} options.request the request
|
@@ -702,12 +862,12 @@ class RuntimeTemplate {
|
|
702
862
|
* @param {Module} options.originModule the origin module
|
703
863
|
* @param {boolean|undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
|
704
864
|
* @param {boolean} options.isCall true, if expression will be called
|
705
|
-
* @param {boolean} options.callContext when false, call context will not be preserved
|
865
|
+
* @param {boolean | null} options.callContext when false, call context will not be preserved
|
706
866
|
* @param {boolean} options.defaultInterop when true and accessing the default exports, interop code will be generated
|
707
867
|
* @param {string} options.importVar the identifier name of the import variable
|
708
|
-
* @param {InitFragment[]} options.initFragments init fragments will be added here
|
868
|
+
* @param {InitFragment<TODO>[]} options.initFragments init fragments will be added here
|
709
869
|
* @param {RuntimeSpec} options.runtime runtime for which this code will be generated
|
710
|
-
* @param {
|
870
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
711
871
|
* @returns {string} expression
|
712
872
|
*/
|
713
873
|
exportFromImport({
|
@@ -735,7 +895,8 @@ class RuntimeTemplate {
|
|
735
895
|
}
|
736
896
|
const exportsType = module.getExportsType(
|
737
897
|
moduleGraph,
|
738
|
-
|
898
|
+
/** @type {BuildMeta} */
|
899
|
+
(originModule.buildMeta).strictHarmonyModule
|
739
900
|
);
|
740
901
|
|
741
902
|
if (defaultInterop) {
|
@@ -744,13 +905,13 @@ class RuntimeTemplate {
|
|
744
905
|
case "dynamic":
|
745
906
|
if (isCall) {
|
746
907
|
return `${importVar}_default()${propertyAccess(exportName, 1)}`;
|
747
|
-
}
|
748
|
-
|
749
|
-
|
750
|
-
|
908
|
+
}
|
909
|
+
return asiSafe
|
910
|
+
? `(${importVar}_default()${propertyAccess(exportName, 1)})`
|
911
|
+
: asiSafe === false
|
751
912
|
? `;(${importVar}_default()${propertyAccess(exportName, 1)})`
|
752
913
|
: `${importVar}_default.a${propertyAccess(exportName, 1)}`;
|
753
|
-
|
914
|
+
|
754
915
|
case "default-only":
|
755
916
|
case "default-with-named":
|
756
917
|
exportName = exportName.slice(1);
|
@@ -758,10 +919,10 @@ class RuntimeTemplate {
|
|
758
919
|
}
|
759
920
|
} else if (exportName.length > 0) {
|
760
921
|
if (exportsType === "default-only") {
|
761
|
-
return (
|
762
|
-
|
763
|
-
|
764
|
-
)
|
922
|
+
return `/* non-default import from non-esm module */undefined${propertyAccess(
|
923
|
+
exportName,
|
924
|
+
1
|
925
|
+
)}`;
|
765
926
|
} else if (
|
766
927
|
exportsType !== "namespace" &&
|
767
928
|
exportName[0] === "__esModule"
|
@@ -800,27 +961,26 @@ class RuntimeTemplate {
|
|
800
961
|
}
|
801
962
|
const comment = equals(used, exportName)
|
802
963
|
? ""
|
803
|
-
: Template.toNormalComment(propertyAccess(exportName))
|
964
|
+
: `${Template.toNormalComment(propertyAccess(exportName))} `;
|
804
965
|
const access = `${importVar}${comment}${propertyAccess(used)}`;
|
805
966
|
if (isCall && callContext === false) {
|
806
967
|
return asiSafe
|
807
968
|
? `(0,${access})`
|
808
969
|
: asiSafe === false
|
809
|
-
|
810
|
-
|
970
|
+
? `;(0,${access})`
|
971
|
+
: `/*#__PURE__*/Object(${access})`;
|
811
972
|
}
|
812
973
|
return access;
|
813
|
-
} else {
|
814
|
-
return importVar;
|
815
974
|
}
|
975
|
+
return importVar;
|
816
976
|
}
|
817
977
|
|
818
978
|
/**
|
819
|
-
* @param {
|
820
|
-
* @param {AsyncDependenciesBlock} options.block the async block
|
979
|
+
* @param {object} options options
|
980
|
+
* @param {AsyncDependenciesBlock | undefined} options.block the async block
|
821
981
|
* @param {string} options.message the message
|
822
982
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
823
|
-
* @param {
|
983
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
824
984
|
* @returns {string} expression
|
825
985
|
*/
|
826
986
|
blockPromise({ block, message, chunkGraph, runtimeRequirements }) {
|
@@ -847,24 +1007,45 @@ class RuntimeTemplate {
|
|
847
1007
|
if (chunks.length === 1) {
|
848
1008
|
const chunkId = JSON.stringify(chunks[0].id);
|
849
1009
|
runtimeRequirements.add(RuntimeGlobals.ensureChunk);
|
850
|
-
|
1010
|
+
|
1011
|
+
const fetchPriority = chunkGroup.options.fetchPriority;
|
1012
|
+
|
1013
|
+
if (fetchPriority) {
|
1014
|
+
runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
return `${RuntimeGlobals.ensureChunk}(${comment}${chunkId}${
|
1018
|
+
fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
|
1019
|
+
})`;
|
851
1020
|
} else if (chunks.length > 0) {
|
852
1021
|
runtimeRequirements.add(RuntimeGlobals.ensureChunk);
|
1022
|
+
|
1023
|
+
const fetchPriority = chunkGroup.options.fetchPriority;
|
1024
|
+
|
1025
|
+
if (fetchPriority) {
|
1026
|
+
runtimeRequirements.add(RuntimeGlobals.hasFetchPriority);
|
1027
|
+
}
|
1028
|
+
|
1029
|
+
/**
|
1030
|
+
* @param {Chunk} chunk chunk
|
1031
|
+
* @returns {string} require chunk id code
|
1032
|
+
*/
|
853
1033
|
const requireChunkId = chunk =>
|
854
|
-
`${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}
|
1034
|
+
`${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}${
|
1035
|
+
fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
|
1036
|
+
})`;
|
855
1037
|
return `Promise.all(${comment.trim()}[${chunks
|
856
1038
|
.map(requireChunkId)
|
857
1039
|
.join(", ")}])`;
|
858
|
-
} else {
|
859
|
-
return `Promise.resolve(${comment.trim()})`;
|
860
1040
|
}
|
1041
|
+
return `Promise.resolve(${comment.trim()})`;
|
861
1042
|
}
|
862
1043
|
|
863
1044
|
/**
|
864
|
-
* @param {
|
1045
|
+
* @param {object} options options
|
865
1046
|
* @param {AsyncDependenciesBlock} options.block the async block
|
866
1047
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
867
|
-
* @param {
|
1048
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
868
1049
|
* @param {string=} options.request request string used originally
|
869
1050
|
* @returns {string} expression
|
870
1051
|
*/
|
@@ -893,10 +1074,10 @@ class RuntimeTemplate {
|
|
893
1074
|
}
|
894
1075
|
|
895
1076
|
/**
|
896
|
-
* @param {
|
1077
|
+
* @param {object} options options
|
897
1078
|
* @param {Dependency} options.dependency the dependency
|
898
1079
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
899
|
-
* @param {
|
1080
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
900
1081
|
* @param {string=} options.request request string used originally
|
901
1082
|
* @returns {string} expression
|
902
1083
|
*/
|
@@ -914,9 +1095,9 @@ class RuntimeTemplate {
|
|
914
1095
|
}
|
915
1096
|
|
916
1097
|
/**
|
917
|
-
* @param {
|
1098
|
+
* @param {object} options options
|
918
1099
|
* @param {string} options.exportsArgument the name of the exports object
|
919
|
-
* @param {
|
1100
|
+
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
920
1101
|
* @returns {string} statement
|
921
1102
|
*/
|
922
1103
|
defineEsModuleFlagStatement({ exportsArgument, runtimeRequirements }) {
|
@@ -924,6 +1105,27 @@ class RuntimeTemplate {
|
|
924
1105
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
925
1106
|
return `${RuntimeGlobals.makeNamespaceObject}(${exportsArgument});\n`;
|
926
1107
|
}
|
1108
|
+
|
1109
|
+
/**
|
1110
|
+
* @param {object} options options object
|
1111
|
+
* @param {Module} options.module the module
|
1112
|
+
* @param {RuntimeSpec=} options.runtime runtime
|
1113
|
+
* @param {CodeGenerationResults} options.codeGenerationResults the code generation results
|
1114
|
+
* @returns {string} the url of the asset
|
1115
|
+
*/
|
1116
|
+
assetUrl({ runtime, module, codeGenerationResults }) {
|
1117
|
+
if (!module) {
|
1118
|
+
return "data:,";
|
1119
|
+
}
|
1120
|
+
const codeGen = codeGenerationResults.get(module, runtime);
|
1121
|
+
const data = /** @type {NonNullable<CodeGenerationResult["data"]>} */ (
|
1122
|
+
codeGen.data
|
1123
|
+
);
|
1124
|
+
const url = data.get("url");
|
1125
|
+
if (url) return url.toString();
|
1126
|
+
const assetPath = data.get("assetPathForCss");
|
1127
|
+
return assetPath;
|
1128
|
+
}
|
927
1129
|
}
|
928
1130
|
|
929
1131
|
module.exports = RuntimeTemplate;
|