@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -10,27 +10,35 @@ const { RawSource } = require("webpack-sources");
|
|
|
10
10
|
const ConcatenationScope = require("../ConcatenationScope");
|
|
11
11
|
const Generator = require("../Generator");
|
|
12
12
|
const {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
ASSET_AND_ASSET_URL_TYPES,
|
|
14
|
+
ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES,
|
|
15
15
|
ASSET_AND_JAVASCRIPT_TYPES,
|
|
16
16
|
ASSET_TYPES,
|
|
17
|
+
ASSET_URL_TYPE,
|
|
18
|
+
ASSET_URL_TYPES,
|
|
17
19
|
CSS_TYPE,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
JAVASCRIPT_AND_CSS_URL_TYPES,
|
|
20
|
+
HTML_TYPE,
|
|
21
|
+
JAVASCRIPT_AND_ASSET_URL_TYPES,
|
|
21
22
|
JAVASCRIPT_TYPE,
|
|
22
23
|
JAVASCRIPT_TYPES,
|
|
23
24
|
NO_TYPES
|
|
24
25
|
} = require("../ModuleSourceTypeConstants");
|
|
25
|
-
const {
|
|
26
|
+
const {
|
|
27
|
+
ASSET_MODULE_TYPE,
|
|
28
|
+
ASSET_MODULE_TYPE_WEBMANIFEST
|
|
29
|
+
} = require("../ModuleTypeConstants");
|
|
26
30
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
27
|
-
const CssUrlDependency = require("../dependencies/CssUrlDependency");
|
|
28
31
|
const createHash = require("../util/createHash");
|
|
29
32
|
const { makePathsRelative } = require("../util/identifier");
|
|
30
33
|
const memoize = require("../util/memoize");
|
|
31
34
|
const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
|
|
35
|
+
const {
|
|
36
|
+
PUBLIC_PATH_AUTO,
|
|
37
|
+
PUBLIC_PATH_FULL_HASH
|
|
38
|
+
} = require("../util/publicPathPlaceholder");
|
|
39
|
+
const { updateHashFromSource } = require("../util/source");
|
|
32
40
|
|
|
33
|
-
const getMimeTypes = memoize(() => require("
|
|
41
|
+
const getMimeTypes = memoize(() => require("../util/mimeTypes"));
|
|
34
42
|
|
|
35
43
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
36
44
|
/** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorDataUrlOptions} AssetGeneratorDataUrlOptions */
|
|
@@ -40,24 +48,42 @@ const getMimeTypes = memoize(() => require("mime-types"));
|
|
|
40
48
|
/** @typedef {import("../../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
|
|
41
49
|
/** @typedef {import("../../declarations/WebpackOptions").RawPublicPath} RawPublicPath */
|
|
42
50
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
51
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
43
52
|
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
|
44
53
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
45
54
|
/** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
|
|
46
55
|
/** @typedef {import("../Module")} Module */
|
|
47
56
|
/** @typedef {import("../Module").NameForCondition} NameForCondition */
|
|
48
|
-
/** @typedef {import("
|
|
57
|
+
/** @typedef {import("./AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
|
|
49
58
|
/** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
|
50
59
|
/** @typedef {import("../Module").SourceType} SourceType */
|
|
51
60
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
52
61
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
53
62
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
63
|
+
/** @typedef {import("../dependencies/URLDependency")} URLDependency */
|
|
54
64
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
55
65
|
/** @typedef {import("../util/Hash")} Hash */
|
|
56
66
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
57
67
|
|
|
58
68
|
/** @typedef {(source: string | Buffer, context: { filename: string, module: Module }) => string} DataUrlFunction */
|
|
59
69
|
|
|
70
|
+
// slash separating a module type from its subtype (`css/auto` -> `css`)
|
|
71
|
+
const TYPE_SEPARATOR_CHAR_CODE = 47;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Whether a module type's prefix (the part before `/`) equals `prefix`, without
|
|
75
|
+
* allocating the substring `type.split("/")[0]` would produce.
|
|
76
|
+
* @param {string} type module type (e.g. `javascript/auto`)
|
|
77
|
+
* @param {string} prefix expected prefix (e.g. `javascript`)
|
|
78
|
+
* @returns {boolean} whether the type's prefix equals `prefix`
|
|
79
|
+
*/
|
|
80
|
+
const typePrefixEquals = (type, prefix) =>
|
|
81
|
+
type.startsWith(prefix) &&
|
|
82
|
+
(type.length === prefix.length ||
|
|
83
|
+
type.charCodeAt(prefix.length) === TYPE_SEPARATOR_CHAR_CODE);
|
|
84
|
+
|
|
60
85
|
/**
|
|
86
|
+
* Merges maybe arrays.
|
|
61
87
|
* @template T
|
|
62
88
|
* @template U
|
|
63
89
|
* @param {null | string | T[] | Set<T> | undefined} a a
|
|
@@ -75,6 +101,7 @@ const mergeMaybeArrays = (a, b) => {
|
|
|
75
101
|
};
|
|
76
102
|
|
|
77
103
|
/**
|
|
104
|
+
* Merges the provided values into a single result.
|
|
78
105
|
* @param {AssetInfo} a a
|
|
79
106
|
* @param {AssetInfo} b b
|
|
80
107
|
* @returns {AssetInfo} object
|
|
@@ -115,6 +142,7 @@ const mergeAssetInfo = (a, b) => {
|
|
|
115
142
|
};
|
|
116
143
|
|
|
117
144
|
/**
|
|
145
|
+
* Merges related info.
|
|
118
146
|
* @param {NonNullable<AssetInfo["related"]>} a a
|
|
119
147
|
* @param {NonNullable<AssetInfo["related"]>} b b
|
|
120
148
|
* @returns {NonNullable<AssetInfo["related"]>} object
|
|
@@ -131,6 +159,7 @@ const mergeRelatedInfo = (a, b) => {
|
|
|
131
159
|
};
|
|
132
160
|
|
|
133
161
|
/**
|
|
162
|
+
* Encodes the provided encoding.
|
|
134
163
|
* @param {"base64" | false} encoding encoding
|
|
135
164
|
* @param {Source} source source
|
|
136
165
|
* @returns {string} encoded data
|
|
@@ -147,14 +176,10 @@ const encodeDataUri = (encoding, source) => {
|
|
|
147
176
|
case false: {
|
|
148
177
|
const content = source.source();
|
|
149
178
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
179
|
+
encodedContent =
|
|
180
|
+
typeof content === "string" ? content : content.toString("utf8");
|
|
153
181
|
|
|
154
|
-
encodedContent = encodeURIComponent(
|
|
155
|
-
/** @type {string} */
|
|
156
|
-
(encodedContent)
|
|
157
|
-
).replace(
|
|
182
|
+
encodedContent = encodeURIComponent(encodedContent).replace(
|
|
158
183
|
/[!'()*]/g,
|
|
159
184
|
(character) =>
|
|
160
185
|
`%${/** @type {number} */ (character.codePointAt(0)).toString(16)}`
|
|
@@ -169,6 +194,7 @@ const encodeDataUri = (encoding, source) => {
|
|
|
169
194
|
};
|
|
170
195
|
|
|
171
196
|
/**
|
|
197
|
+
* Decodes data uri content.
|
|
172
198
|
* @param {"base64" | false} encoding encoding
|
|
173
199
|
* @param {string} content content
|
|
174
200
|
* @returns {Buffer} decoded content
|
|
@@ -182,9 +208,9 @@ const decodeDataUriContent = (encoding, content) => {
|
|
|
182
208
|
|
|
183
209
|
// If we can't decode return the original body
|
|
184
210
|
try {
|
|
185
|
-
return Buffer.from(decodeURIComponent(content), "
|
|
211
|
+
return Buffer.from(decodeURIComponent(content), "utf8");
|
|
186
212
|
} catch (_) {
|
|
187
|
-
return Buffer.from(content, "
|
|
213
|
+
return Buffer.from(content, "utf8");
|
|
188
214
|
}
|
|
189
215
|
};
|
|
190
216
|
|
|
@@ -192,12 +218,14 @@ const DEFAULT_ENCODING = "base64";
|
|
|
192
218
|
|
|
193
219
|
class AssetGenerator extends Generator {
|
|
194
220
|
/**
|
|
221
|
+
* Creates an instance of AssetGenerator.
|
|
195
222
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
196
223
|
* @param {AssetGeneratorOptions["dataUrl"]=} dataUrlOptions the options for the data url
|
|
197
224
|
* @param {AssetModuleFilename=} filename override for output.assetModuleFilename
|
|
198
225
|
* @param {RawPublicPath=} publicPath override for output.assetModulePublicPath
|
|
199
226
|
* @param {AssetModuleOutputPath=} outputPath the output path for the emitted file which is not included in the runtime import
|
|
200
227
|
* @param {boolean=} emit generate output asset
|
|
228
|
+
* @param {Compilation=} compilation the compilation (`getTypes` has no generate context, so the analyzable-output decision reads `output.module`/`output.publicPath` from here)
|
|
201
229
|
*/
|
|
202
230
|
constructor(
|
|
203
231
|
moduleGraph,
|
|
@@ -205,7 +233,8 @@ class AssetGenerator extends Generator {
|
|
|
205
233
|
filename,
|
|
206
234
|
publicPath,
|
|
207
235
|
outputPath,
|
|
208
|
-
emit
|
|
236
|
+
emit,
|
|
237
|
+
compilation
|
|
209
238
|
) {
|
|
210
239
|
super();
|
|
211
240
|
/** @type {AssetGeneratorOptions["dataUrl"] | undefined} */
|
|
@@ -218,11 +247,14 @@ class AssetGenerator extends Generator {
|
|
|
218
247
|
this.outputPath = outputPath;
|
|
219
248
|
/** @type {boolean | undefined} */
|
|
220
249
|
this.emit = emit;
|
|
250
|
+
/** @type {Compilation | undefined} */
|
|
251
|
+
this._compilation = compilation;
|
|
221
252
|
/** @type {ModuleGraph} */
|
|
222
253
|
this._moduleGraph = moduleGraph;
|
|
223
254
|
}
|
|
224
255
|
|
|
225
256
|
/**
|
|
257
|
+
* Gets source file name.
|
|
226
258
|
* @param {NormalModule} module module
|
|
227
259
|
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
|
228
260
|
* @returns {string} source file name
|
|
@@ -237,6 +269,7 @@ class AssetGenerator extends Generator {
|
|
|
237
269
|
}
|
|
238
270
|
|
|
239
271
|
/**
|
|
272
|
+
* Gets full content hash.
|
|
240
273
|
* @param {NormalModule} module module
|
|
241
274
|
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
|
242
275
|
* @returns {[string, string]} return full hash and non-numeric full hash
|
|
@@ -251,7 +284,7 @@ class AssetGenerator extends Generator {
|
|
|
251
284
|
const source = module.originalSource();
|
|
252
285
|
|
|
253
286
|
if (source) {
|
|
254
|
-
hash
|
|
287
|
+
updateHashFromSource(hash, source);
|
|
255
288
|
}
|
|
256
289
|
|
|
257
290
|
if (module.error) {
|
|
@@ -271,17 +304,20 @@ class AssetGenerator extends Generator {
|
|
|
271
304
|
}
|
|
272
305
|
|
|
273
306
|
/**
|
|
307
|
+
* Gets filename with info.
|
|
274
308
|
* @param {NormalModule} module module for which the code should be generated
|
|
275
309
|
* @param {Pick<AssetResourceGeneratorOptions, "filename" | "outputPath">} generatorOptions generator options
|
|
276
310
|
* @param {{ runtime: RuntimeSpec, runtimeTemplate: RuntimeTemplate, chunkGraph: ChunkGraph }} generateContext context for generate
|
|
277
311
|
* @param {string} contentHash the content hash
|
|
312
|
+
* @param {string=} fullContentHash untruncated content hash, so `[contenthash:<digest>]` re-encodes from full entropy
|
|
278
313
|
* @returns {{ filename: string, originalFilename: string, assetInfo: AssetInfo }} info
|
|
279
314
|
*/
|
|
280
315
|
static getFilenameWithInfo(
|
|
281
316
|
module,
|
|
282
317
|
generatorOptions,
|
|
283
318
|
{ runtime, runtimeTemplate, chunkGraph },
|
|
284
|
-
contentHash
|
|
319
|
+
contentHash,
|
|
320
|
+
fullContentHash
|
|
285
321
|
) {
|
|
286
322
|
const assetModuleFilename =
|
|
287
323
|
generatorOptions.filename ||
|
|
@@ -297,7 +333,8 @@ class AssetGenerator extends Generator {
|
|
|
297
333
|
runtime,
|
|
298
334
|
filename: sourceFilename,
|
|
299
335
|
chunkGraph,
|
|
300
|
-
contentHash
|
|
336
|
+
contentHash,
|
|
337
|
+
contentHashFull: fullContentHash
|
|
301
338
|
});
|
|
302
339
|
|
|
303
340
|
const originalFilename = filename;
|
|
@@ -311,7 +348,8 @@ class AssetGenerator extends Generator {
|
|
|
311
348
|
runtime,
|
|
312
349
|
filename: sourceFilename,
|
|
313
350
|
chunkGraph,
|
|
314
|
-
contentHash
|
|
351
|
+
contentHash,
|
|
352
|
+
contentHashFull: fullContentHash
|
|
315
353
|
}
|
|
316
354
|
);
|
|
317
355
|
filename = path.posix.join(outputPath, filename);
|
|
@@ -322,12 +360,14 @@ class AssetGenerator extends Generator {
|
|
|
322
360
|
}
|
|
323
361
|
|
|
324
362
|
/**
|
|
363
|
+
* Gets asset path with info.
|
|
325
364
|
* @param {NormalModule} module module for which the code should be generated
|
|
326
365
|
* @param {Pick<AssetResourceGeneratorOptions, "publicPath">} generatorOptions generator options
|
|
327
366
|
* @param {GenerateContext} generateContext context for generate
|
|
328
367
|
* @param {string} filename the filename
|
|
329
368
|
* @param {AssetInfo} assetInfo the asset info
|
|
330
369
|
* @param {string} contentHash the content hash
|
|
370
|
+
* @param {string=} fullContentHash untruncated content hash, so `[contenthash:<digest>]` re-encodes from full entropy
|
|
331
371
|
* @returns {{ assetPath: string, assetInfo: AssetInfo }} asset path and info
|
|
332
372
|
*/
|
|
333
373
|
static getAssetPathWithInfo(
|
|
@@ -336,7 +376,8 @@ class AssetGenerator extends Generator {
|
|
|
336
376
|
{ runtime, runtimeTemplate, type, chunkGraph, runtimeRequirements },
|
|
337
377
|
filename,
|
|
338
378
|
assetInfo,
|
|
339
|
-
contentHash
|
|
379
|
+
contentHash,
|
|
380
|
+
fullContentHash
|
|
340
381
|
) {
|
|
341
382
|
const sourceFilename = AssetGenerator.getSourceFileName(
|
|
342
383
|
module,
|
|
@@ -354,14 +395,15 @@ class AssetGenerator extends Generator {
|
|
|
354
395
|
runtime,
|
|
355
396
|
filename: sourceFilename,
|
|
356
397
|
chunkGraph,
|
|
357
|
-
contentHash
|
|
398
|
+
contentHash,
|
|
399
|
+
contentHashFull: fullContentHash
|
|
358
400
|
}
|
|
359
401
|
);
|
|
360
402
|
assetInfo = mergeAssetInfo(assetInfo, info);
|
|
361
403
|
assetPath = JSON.stringify(path + filename);
|
|
362
404
|
} else if (
|
|
363
405
|
generatorOptions.publicPath !== undefined &&
|
|
364
|
-
type ===
|
|
406
|
+
type === ASSET_URL_TYPE
|
|
365
407
|
) {
|
|
366
408
|
const { path, info } = runtimeTemplate.compilation.getAssetPathWithInfo(
|
|
367
409
|
generatorOptions.publicPath,
|
|
@@ -370,7 +412,8 @@ class AssetGenerator extends Generator {
|
|
|
370
412
|
runtime,
|
|
371
413
|
filename: sourceFilename,
|
|
372
414
|
chunkGraph,
|
|
373
|
-
contentHash
|
|
415
|
+
contentHash,
|
|
416
|
+
contentHashFull: fullContentHash
|
|
374
417
|
}
|
|
375
418
|
);
|
|
376
419
|
assetInfo = mergeAssetInfo(assetInfo, info);
|
|
@@ -382,13 +425,17 @@ class AssetGenerator extends Generator {
|
|
|
382
425
|
{ expr: RuntimeGlobals.publicPath },
|
|
383
426
|
filename
|
|
384
427
|
);
|
|
385
|
-
} else if (type ===
|
|
428
|
+
} else if (type === ASSET_URL_TYPE) {
|
|
386
429
|
const compilation = runtimeTemplate.compilation;
|
|
387
430
|
const path =
|
|
388
431
|
compilation.outputOptions.publicPath === "auto"
|
|
389
|
-
?
|
|
432
|
+
? PUBLIC_PATH_AUTO
|
|
390
433
|
: compilation.getAssetPath(compilation.outputOptions.publicPath, {
|
|
391
|
-
hash: compilation.hash
|
|
434
|
+
hash: compilation.hash || `${PUBLIC_PATH_FULL_HASH}0__`,
|
|
435
|
+
hashWithLength: (length) =>
|
|
436
|
+
compilation.hash
|
|
437
|
+
? compilation.hash.slice(0, length)
|
|
438
|
+
: `${PUBLIC_PATH_FULL_HASH}${length}__`
|
|
392
439
|
});
|
|
393
440
|
|
|
394
441
|
assetPath = path + filename;
|
|
@@ -401,6 +448,7 @@ class AssetGenerator extends Generator {
|
|
|
401
448
|
}
|
|
402
449
|
|
|
403
450
|
/**
|
|
451
|
+
* Returns the reason this module cannot be concatenated, when one exists.
|
|
404
452
|
* @param {NormalModule} module module for which the bailout reason should be determined
|
|
405
453
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
406
454
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
@@ -410,6 +458,7 @@ class AssetGenerator extends Generator {
|
|
|
410
458
|
}
|
|
411
459
|
|
|
412
460
|
/**
|
|
461
|
+
* Returns mime type.
|
|
413
462
|
* @param {NormalModule} module module
|
|
414
463
|
* @returns {string} mime type
|
|
415
464
|
*/
|
|
@@ -420,7 +469,7 @@ class AssetGenerator extends Generator {
|
|
|
420
469
|
);
|
|
421
470
|
}
|
|
422
471
|
|
|
423
|
-
/** @type {string |
|
|
472
|
+
/** @type {string | undefined} */
|
|
424
473
|
let mimeType =
|
|
425
474
|
/** @type {AssetGeneratorDataUrlOptions} */
|
|
426
475
|
(this.dataUrlOptions).mimetype;
|
|
@@ -462,6 +511,7 @@ class AssetGenerator extends Generator {
|
|
|
462
511
|
}
|
|
463
512
|
|
|
464
513
|
/**
|
|
514
|
+
* Generates data uri.
|
|
465
515
|
* @param {NormalModule} module module for which the code should be generated
|
|
466
516
|
* @returns {string} DataURI
|
|
467
517
|
*/
|
|
@@ -522,6 +572,7 @@ class AssetGenerator extends Generator {
|
|
|
522
572
|
}
|
|
523
573
|
|
|
524
574
|
/**
|
|
575
|
+
* Generates generated code for this runtime module.
|
|
525
576
|
* @param {NormalModule} module module for which the code should be generated
|
|
526
577
|
* @param {GenerateContext} generateContext context for generate
|
|
527
578
|
* @returns {Source | null} generated code
|
|
@@ -538,11 +589,11 @@ class AssetGenerator extends Generator {
|
|
|
538
589
|
/** @type {string} */
|
|
539
590
|
let content;
|
|
540
591
|
|
|
541
|
-
const needContent = type === JAVASCRIPT_TYPE || type ===
|
|
592
|
+
const needContent = type === JAVASCRIPT_TYPE || type === ASSET_URL_TYPE;
|
|
542
593
|
const data = getData ? getData() : undefined;
|
|
543
594
|
|
|
544
595
|
if (
|
|
545
|
-
/** @type {
|
|
596
|
+
/** @type {AssetModuleBuildInfo} */
|
|
546
597
|
(module.buildInfo).dataUrl &&
|
|
547
598
|
needContent
|
|
548
599
|
) {
|
|
@@ -553,7 +604,7 @@ class AssetGenerator extends Generator {
|
|
|
553
604
|
: encodedSource;
|
|
554
605
|
|
|
555
606
|
if (data) {
|
|
556
|
-
data.set("url", {
|
|
607
|
+
data.set("url", { ...data.get("url"), [type]: content });
|
|
557
608
|
}
|
|
558
609
|
} else {
|
|
559
610
|
const [fullContentHash, contentHash] = AssetGenerator.getFullContentHash(
|
|
@@ -566,7 +617,7 @@ class AssetGenerator extends Generator {
|
|
|
566
617
|
data.set("contentHash", contentHash);
|
|
567
618
|
}
|
|
568
619
|
|
|
569
|
-
/** @type {
|
|
620
|
+
/** @type {AssetModuleBuildInfo} */
|
|
570
621
|
(module.buildInfo).fullContentHash = fullContentHash;
|
|
571
622
|
|
|
572
623
|
const { originalFilename, filename, assetInfo } =
|
|
@@ -574,7 +625,8 @@ class AssetGenerator extends Generator {
|
|
|
574
625
|
module,
|
|
575
626
|
{ filename: this.filename, outputPath: this.outputPath },
|
|
576
627
|
generateContext,
|
|
577
|
-
contentHash
|
|
628
|
+
contentHash,
|
|
629
|
+
fullContentHash
|
|
578
630
|
);
|
|
579
631
|
|
|
580
632
|
if (data) {
|
|
@@ -588,11 +640,12 @@ class AssetGenerator extends Generator {
|
|
|
588
640
|
generateContext,
|
|
589
641
|
originalFilename,
|
|
590
642
|
assetInfo,
|
|
591
|
-
contentHash
|
|
643
|
+
contentHash,
|
|
644
|
+
fullContentHash
|
|
592
645
|
);
|
|
593
646
|
|
|
594
|
-
if (data && (type === JAVASCRIPT_TYPE || type ===
|
|
595
|
-
data.set("url", {
|
|
647
|
+
if (data && (type === JAVASCRIPT_TYPE || type === ASSET_URL_TYPE)) {
|
|
648
|
+
data.set("url", { ...data.get("url"), [type]: assetPath });
|
|
596
649
|
}
|
|
597
650
|
|
|
598
651
|
if (data) {
|
|
@@ -610,10 +663,10 @@ class AssetGenerator extends Generator {
|
|
|
610
663
|
// Due to code generation caching module.buildInfo.XXX can't used to store such information
|
|
611
664
|
// It need to be stored in the code generation results instead, where it's cached too
|
|
612
665
|
// TODO webpack 6 For back-compat reasons we also store in on module.buildInfo
|
|
613
|
-
/** @type {
|
|
666
|
+
/** @type {AssetModuleBuildInfo} */
|
|
614
667
|
(module.buildInfo).filename = filename;
|
|
615
668
|
|
|
616
|
-
/** @type {
|
|
669
|
+
/** @type {AssetModuleBuildInfo} */
|
|
617
670
|
(module.buildInfo).assetInfo = newAssetInfo;
|
|
618
671
|
|
|
619
672
|
content = assetPath;
|
|
@@ -635,7 +688,7 @@ class AssetGenerator extends Generator {
|
|
|
635
688
|
runtimeRequirements.add(RuntimeGlobals.module);
|
|
636
689
|
|
|
637
690
|
return new RawSource(`${module.moduleArgument}.exports = ${content};`);
|
|
638
|
-
} else if (type ===
|
|
691
|
+
} else if (type === ASSET_URL_TYPE) {
|
|
639
692
|
return null;
|
|
640
693
|
}
|
|
641
694
|
|
|
@@ -643,6 +696,7 @@ class AssetGenerator extends Generator {
|
|
|
643
696
|
}
|
|
644
697
|
|
|
645
698
|
/**
|
|
699
|
+
* Generates fallback output for the provided error condition.
|
|
646
700
|
* @param {Error} error the error
|
|
647
701
|
* @param {NormalModule} module module for which the code should be generated
|
|
648
702
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -664,28 +718,101 @@ class AssetGenerator extends Generator {
|
|
|
664
718
|
}
|
|
665
719
|
|
|
666
720
|
/**
|
|
721
|
+
* Returns whether the effective publicPath yields a chunk-independent absolute
|
|
722
|
+
* url (scheme-relative, protocol-absolute, or root-absolute) with no hash tokens.
|
|
723
|
+
* Only then is a `new URL` literal correct for every chunk the asset is shared by,
|
|
724
|
+
* so the `module.exports` wrapper can be dropped in favor of the `asset-url` type.
|
|
725
|
+
* @returns {boolean} true when the publicPath is a token-free absolute string
|
|
726
|
+
*/
|
|
727
|
+
_hasAbsolutePublicPath() {
|
|
728
|
+
const publicPath =
|
|
729
|
+
this.publicPath !== undefined
|
|
730
|
+
? this.publicPath
|
|
731
|
+
: this._compilation && this._compilation.outputOptions.publicPath;
|
|
732
|
+
return (
|
|
733
|
+
typeof publicPath === "string" &&
|
|
734
|
+
!publicPath.includes("[") &&
|
|
735
|
+
(publicPath.startsWith("/") ||
|
|
736
|
+
/^[a-z][a-z\d+\-.]*:\/\//i.test(publicPath))
|
|
737
|
+
);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Returns the source types available for this module.
|
|
667
742
|
* @param {NormalModule} module fresh module
|
|
668
743
|
* @returns {SourceTypes} available types (do not mutate)
|
|
669
744
|
*/
|
|
670
745
|
getTypes(module) {
|
|
671
|
-
/** @type {Set<string>} */
|
|
672
|
-
const sourceTypes = new Set();
|
|
673
746
|
const connections = this._moduleGraph.getIncomingConnections(module);
|
|
674
747
|
|
|
748
|
+
// Only ESM output can drop a bare `new URL()` to an analyzable asset-url; without
|
|
749
|
+
// it every JS consumer needs the wrapper, so skip the per-connection dependency
|
|
750
|
+
// probe entirely and keep the pre-existing cheap path.
|
|
751
|
+
const isModule = Boolean(
|
|
752
|
+
this._compilation && this._compilation.outputOptions.module
|
|
753
|
+
);
|
|
754
|
+
|
|
755
|
+
// Collapse the incoming origin types into flags instead of a Set of prefixes:
|
|
756
|
+
// on assets shared by many modules this loop runs millions of times, so avoid
|
|
757
|
+
// the per-connection `split("/")` allocation and stop early when the result is fixed.
|
|
758
|
+
let hasOrigin = false;
|
|
759
|
+
// JS origin that needs the `module.exports = …` wrapper (not a `new URL` ref).
|
|
760
|
+
let hasOtherJs = false;
|
|
761
|
+
// JS origin via `new URL(…, import.meta.url)` — droppable to `asset-url` in ESM.
|
|
762
|
+
let hasUrlJs = false;
|
|
763
|
+
// A manifest embeds a bare URL string (like css/html), so its icons must
|
|
764
|
+
// resolve to `ASSET_URL_TYPE` rather than the JS runtime form.
|
|
765
|
+
let hasUrl = false;
|
|
675
766
|
for (const connection of connections) {
|
|
676
|
-
|
|
767
|
+
const originModule = connection.originModule;
|
|
768
|
+
if (!originModule) {
|
|
677
769
|
continue;
|
|
678
770
|
}
|
|
679
|
-
|
|
680
|
-
|
|
771
|
+
hasOrigin = true;
|
|
772
|
+
const originType = originModule.type;
|
|
773
|
+
if (originType === ASSET_MODULE_TYPE_WEBMANIFEST) {
|
|
774
|
+
hasUrl = true;
|
|
775
|
+
} else if (typePrefixEquals(originType, JAVASCRIPT_TYPE)) {
|
|
776
|
+
// Only a bare `new URL()` becomes the analyzable literal; relative and
|
|
777
|
+
// prefetch/preload refs keep the runtime form and still need the wrapper.
|
|
778
|
+
const dependency = isModule && connection.dependency;
|
|
779
|
+
if (
|
|
780
|
+
dependency &&
|
|
781
|
+
dependency.type === "new URL()" &&
|
|
782
|
+
!(/** @type {URLDependency} */ (dependency).relative) &&
|
|
783
|
+
!(/** @type {URLDependency} */ (dependency).prefetch) &&
|
|
784
|
+
!(/** @type {URLDependency} */ (dependency).preload)
|
|
785
|
+
) {
|
|
786
|
+
hasUrlJs = true;
|
|
787
|
+
} else {
|
|
788
|
+
hasOtherJs = true;
|
|
789
|
+
}
|
|
790
|
+
} else if (
|
|
791
|
+
typePrefixEquals(originType, CSS_TYPE) ||
|
|
792
|
+
typePrefixEquals(originType, HTML_TYPE)
|
|
793
|
+
) {
|
|
794
|
+
hasUrl = true;
|
|
795
|
+
}
|
|
796
|
+
// Once a non-URL JS consumer and a url consumer coexist the result is fixed.
|
|
797
|
+
if (hasOtherJs && hasUrl) break;
|
|
681
798
|
}
|
|
682
799
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
800
|
+
const jsAsAssetUrl =
|
|
801
|
+
isModule && hasUrlJs && !hasOtherJs && this._hasAbsolutePublicPath();
|
|
802
|
+
// JS wrapper is needed for non-URL JS consumers, or URL consumers not dropped to asset-url.
|
|
803
|
+
const wantJs = hasOtherJs || (hasUrlJs && !jsAsAssetUrl);
|
|
804
|
+
const wantUrl = hasUrl || jsAsAssetUrl;
|
|
805
|
+
|
|
806
|
+
if (
|
|
807
|
+
(module.buildInfo &&
|
|
808
|
+
/** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl) ||
|
|
809
|
+
this.emit === false
|
|
810
|
+
) {
|
|
811
|
+
if (hasOrigin) {
|
|
812
|
+
if (wantJs && wantUrl) {
|
|
813
|
+
return JAVASCRIPT_AND_ASSET_URL_TYPES;
|
|
814
|
+
} else if (wantUrl) {
|
|
815
|
+
return ASSET_URL_TYPES;
|
|
689
816
|
}
|
|
690
817
|
return JAVASCRIPT_TYPES;
|
|
691
818
|
}
|
|
@@ -693,11 +820,11 @@ class AssetGenerator extends Generator {
|
|
|
693
820
|
return NO_TYPES;
|
|
694
821
|
}
|
|
695
822
|
|
|
696
|
-
if (
|
|
697
|
-
if (
|
|
698
|
-
return
|
|
699
|
-
} else if (
|
|
700
|
-
return
|
|
823
|
+
if (hasOrigin) {
|
|
824
|
+
if (wantJs && wantUrl) {
|
|
825
|
+
return ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES;
|
|
826
|
+
} else if (wantUrl) {
|
|
827
|
+
return ASSET_AND_ASSET_URL_TYPES;
|
|
701
828
|
}
|
|
702
829
|
return ASSET_AND_JAVASCRIPT_TYPES;
|
|
703
830
|
}
|
|
@@ -706,6 +833,14 @@ class AssetGenerator extends Generator {
|
|
|
706
833
|
}
|
|
707
834
|
|
|
708
835
|
/**
|
|
836
|
+
* @returns {boolean} whether getTypes() depends on the module's incoming connections
|
|
837
|
+
*/
|
|
838
|
+
getTypesDependOnIncomingConnections() {
|
|
839
|
+
return true;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
/**
|
|
843
|
+
* Returns the estimated size for the requested source type.
|
|
709
844
|
* @param {NormalModule} module the module
|
|
710
845
|
* @param {SourceType=} type source type
|
|
711
846
|
* @returns {number} estimate size of the module
|
|
@@ -722,7 +857,10 @@ class AssetGenerator extends Generator {
|
|
|
722
857
|
return originalSource.size();
|
|
723
858
|
}
|
|
724
859
|
default:
|
|
725
|
-
if (
|
|
860
|
+
if (
|
|
861
|
+
module.buildInfo &&
|
|
862
|
+
/** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl
|
|
863
|
+
) {
|
|
726
864
|
const originalSource = module.originalSource();
|
|
727
865
|
|
|
728
866
|
if (!originalSource) {
|
|
@@ -742,6 +880,7 @@ class AssetGenerator extends Generator {
|
|
|
742
880
|
}
|
|
743
881
|
|
|
744
882
|
/**
|
|
883
|
+
* Updates the hash with the data contributed by this instance.
|
|
745
884
|
* @param {Hash} hash hash that will be modified
|
|
746
885
|
* @param {UpdateHashContext} updateHashContext context for updating hash
|
|
747
886
|
*/
|
|
@@ -749,7 +888,7 @@ class AssetGenerator extends Generator {
|
|
|
749
888
|
const { module } = updateHashContext;
|
|
750
889
|
|
|
751
890
|
if (
|
|
752
|
-
/** @type {
|
|
891
|
+
/** @type {AssetModuleBuildInfo} */
|
|
753
892
|
(module.buildInfo).dataUrl
|
|
754
893
|
) {
|
|
755
894
|
hash.update("data-url");
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const NormalModule = require("../NormalModule");
|
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
9
|
+
|
|
10
|
+
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
|
11
|
+
/** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
|
|
12
|
+
/** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Defines the build info properties specific to asset modules.
|
|
16
|
+
* @typedef {object} KnownAssetModuleBuildInfo
|
|
17
|
+
* @property {boolean=} dataUrl whether the asset is inlined as a data url
|
|
18
|
+
* @property {string=} filename
|
|
19
|
+
* @property {AssetInfo=} assetInfo
|
|
20
|
+
* @property {string=} fullContentHash
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/** @typedef {NormalModuleBuildInfo & KnownAssetModuleBuildInfo} AssetModuleBuildInfo */
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Module class for all `asset/*` modules. Asset-specific properties should live here instead of `NormalModule`.
|
|
27
|
+
*/
|
|
28
|
+
class AssetModule extends NormalModule {
|
|
29
|
+
/**
|
|
30
|
+
* @param {NormalModuleCreateData} options options object
|
|
31
|
+
* @param {boolean=} sideEffectFree whether asset modules are side-effect-free (`AssetModulesPluginOptions`)
|
|
32
|
+
*/
|
|
33
|
+
constructor(options, sideEffectFree) {
|
|
34
|
+
super(options);
|
|
35
|
+
|
|
36
|
+
// Redeclared with the asset specific shape
|
|
37
|
+
/** @type {AssetModuleBuildInfo | undefined} */
|
|
38
|
+
this.buildInfo = undefined;
|
|
39
|
+
if (sideEffectFree) {
|
|
40
|
+
this.factoryMeta = { sideEffectFree: true };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
makeSerializable(AssetModule, "webpack/lib/asset/AssetModule");
|
|
46
|
+
|
|
47
|
+
module.exports = AssetModule;
|