@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -16,19 +16,18 @@ const {
|
|
|
16
16
|
ASSET_TYPES,
|
|
17
17
|
ASSET_URL_TYPE,
|
|
18
18
|
ASSET_URL_TYPES,
|
|
19
|
-
CSS_TYPE,
|
|
20
|
-
HTML_TYPE,
|
|
21
19
|
JAVASCRIPT_AND_ASSET_URL_TYPES,
|
|
22
20
|
JAVASCRIPT_TYPE,
|
|
23
21
|
JAVASCRIPT_TYPES,
|
|
24
22
|
NO_TYPES
|
|
25
23
|
} = require("../ModuleSourceTypeConstants");
|
|
26
|
-
const {
|
|
27
|
-
ASSET_MODULE_TYPE,
|
|
28
|
-
ASSET_MODULE_TYPE_WEBMANIFEST
|
|
29
|
-
} = require("../ModuleTypeConstants");
|
|
24
|
+
const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
|
|
30
25
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
26
|
+
const { toTemplateSourceFileName } = require("../TemplatedPathPlugin");
|
|
27
|
+
const URLDependency = require("../dependencies/URLDependency");
|
|
28
|
+
const { getScheme } = require("../util/URLAbsoluteSpecifier");
|
|
31
29
|
const createHash = require("../util/createHash");
|
|
30
|
+
const { languageOfMediaType } = require("../util/dataURL");
|
|
32
31
|
const { makePathsRelative } = require("../util/identifier");
|
|
33
32
|
const memoize = require("../util/memoize");
|
|
34
33
|
const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
|
|
@@ -40,47 +39,36 @@ const { updateHashFromSource } = require("../util/source");
|
|
|
40
39
|
|
|
41
40
|
const getMimeTypes = memoize(() => require("../util/mimeTypes"));
|
|
42
41
|
|
|
43
|
-
/** @
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/** @
|
|
55
|
-
/** @
|
|
56
|
-
/** @
|
|
57
|
-
/** @typedef {import("./AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
|
|
58
|
-
/** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
|
59
|
-
/** @typedef {import("../Module").SourceType} SourceType */
|
|
60
|
-
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
61
|
-
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
62
|
-
/** @typedef {import("../NormalModule")} NormalModule */
|
|
63
|
-
/** @typedef {import("../dependencies/URLDependency")} URLDependency */
|
|
64
|
-
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
65
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
66
|
-
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
67
|
-
|
|
68
|
-
/** @typedef {(source: string | Buffer, context: { filename: string, module: Module }) => string} DataUrlFunction */
|
|
69
|
-
|
|
70
|
-
// slash separating a module type from its subtype (`css/auto` -> `css`)
|
|
71
|
-
const TYPE_SEPARATOR_CHAR_CODE = 47;
|
|
72
|
-
|
|
42
|
+
/** @import { Source } from "webpack-sources" */
|
|
43
|
+
/**
|
|
44
|
+
* @import {
|
|
45
|
+
* AssetGeneratorDataUrlOptions,
|
|
46
|
+
* AssetGeneratorOptions,
|
|
47
|
+
* AssetModuleFilename,
|
|
48
|
+
* AssetModuleOutputPath,
|
|
49
|
+
* AssetResourceGeneratorOptions,
|
|
50
|
+
* RawPublicPath
|
|
51
|
+
* } from "../../declarations/WebpackOptions"
|
|
52
|
+
*/
|
|
53
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
54
|
+
/** @import Compilation, { AssetInfo } from "../Compilation" */
|
|
55
|
+
/** @import { GenerateContext, UpdateHashContext } from "../Generator" */
|
|
73
56
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
57
|
+
* @import Module, {
|
|
58
|
+
* NameForCondition,
|
|
59
|
+
* ConcatenationBailoutReasonContext,
|
|
60
|
+
* SourceType,
|
|
61
|
+
* SourceTypes
|
|
62
|
+
* } from "../Module"
|
|
79
63
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
64
|
+
/** @import { AssetModuleBuildInfo } from "./AssetModule" */
|
|
65
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
66
|
+
/** @import NormalModule from "../NormalModule" */
|
|
67
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
68
|
+
/** @import Hash from "../util/Hash" */
|
|
69
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
70
|
+
|
|
71
|
+
/** @typedef {(source: string | Buffer, context: { filename: string, module: Module }) => string} DataUrlFunction */
|
|
84
72
|
|
|
85
73
|
/**
|
|
86
74
|
* Merges maybe arrays.
|
|
@@ -268,6 +256,22 @@ class AssetGenerator extends Generator {
|
|
|
268
256
|
).replace(/^\.\//, "");
|
|
269
257
|
}
|
|
270
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Gets the source file name as seen by a filename template. With
|
|
261
|
+
* `experiments.futureDefaults` (webpack 6 default) `[path]` and `[file]` of a
|
|
262
|
+
* module outside of `context` behave like `[containedpath]`/`[containedfile]`,
|
|
263
|
+
* so they can't emit the asset outside of `output.path`.
|
|
264
|
+
* @param {NormalModule} module module
|
|
265
|
+
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
|
266
|
+
* @returns {string} source file name for the filename template
|
|
267
|
+
*/
|
|
268
|
+
static getTemplateSourceFileName(module, runtimeTemplate) {
|
|
269
|
+
return toTemplateSourceFileName(
|
|
270
|
+
AssetGenerator.getSourceFileName(module, runtimeTemplate),
|
|
271
|
+
runtimeTemplate.compilation
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
|
|
271
275
|
/**
|
|
272
276
|
* Gets full content hash.
|
|
273
277
|
* @param {NormalModule} module module
|
|
@@ -323,7 +327,9 @@ class AssetGenerator extends Generator {
|
|
|
323
327
|
generatorOptions.filename ||
|
|
324
328
|
runtimeTemplate.outputOptions.assetModuleFilename;
|
|
325
329
|
|
|
326
|
-
|
|
330
|
+
// Both templates decide where the asset is written, so they see the
|
|
331
|
+
// contained path.
|
|
332
|
+
const templateSourceFilename = AssetGenerator.getTemplateSourceFileName(
|
|
327
333
|
module,
|
|
328
334
|
runtimeTemplate
|
|
329
335
|
);
|
|
@@ -331,7 +337,7 @@ class AssetGenerator extends Generator {
|
|
|
331
337
|
runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
|
|
332
338
|
module,
|
|
333
339
|
runtime,
|
|
334
|
-
filename:
|
|
340
|
+
filename: templateSourceFilename,
|
|
335
341
|
chunkGraph,
|
|
336
342
|
contentHash,
|
|
337
343
|
contentHashFull: fullContentHash
|
|
@@ -346,7 +352,7 @@ class AssetGenerator extends Generator {
|
|
|
346
352
|
{
|
|
347
353
|
module,
|
|
348
354
|
runtime,
|
|
349
|
-
filename:
|
|
355
|
+
filename: templateSourceFilename,
|
|
350
356
|
chunkGraph,
|
|
351
357
|
contentHash,
|
|
352
358
|
contentHashFull: fullContentHash
|
|
@@ -379,6 +385,8 @@ class AssetGenerator extends Generator {
|
|
|
379
385
|
contentHash,
|
|
380
386
|
fullContentHash
|
|
381
387
|
) {
|
|
388
|
+
// A public path is a url prefix, it doesn't decide where the asset is
|
|
389
|
+
// written, so `[path]` stays the real path of the source file here.
|
|
382
390
|
const sourceFilename = AssetGenerator.getSourceFileName(
|
|
383
391
|
module,
|
|
384
392
|
runtimeTemplate
|
|
@@ -419,12 +427,34 @@ class AssetGenerator extends Generator {
|
|
|
419
427
|
assetInfo = mergeAssetInfo(assetInfo, info);
|
|
420
428
|
assetPath = path + filename;
|
|
421
429
|
} else if (type === JAVASCRIPT_TYPE) {
|
|
422
|
-
//
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
430
|
+
// `auto` reads `.p` as this asset's own directory url, which the absolute
|
|
431
|
+
// `href` spells too; a complete url of its own is already the whole string.
|
|
432
|
+
const constant = runtimeTemplate.constantPublicPath();
|
|
433
|
+
const whole =
|
|
434
|
+
constant !== undefined &&
|
|
435
|
+
(constant.startsWith("//") || getScheme(constant) !== undefined);
|
|
436
|
+
const analyzable =
|
|
437
|
+
(runtimeTemplate.outputOptions.publicPath === "auto" || whole) &&
|
|
438
|
+
runtimeTemplate.supportsAnalyzable("url", chunkGraph, module)
|
|
439
|
+
? runtimeTemplate.getAnalyzableAssetUrl(
|
|
440
|
+
module,
|
|
441
|
+
chunkGraph,
|
|
442
|
+
filename,
|
|
443
|
+
runtime
|
|
444
|
+
)
|
|
445
|
+
: null;
|
|
446
|
+
if (analyzable !== null) {
|
|
447
|
+
assetPath = whole
|
|
448
|
+
? analyzable
|
|
449
|
+
: `${runtimeTemplate.importMetaUrl(analyzable)}.href`;
|
|
450
|
+
} else {
|
|
451
|
+
// add __webpack_require__.p
|
|
452
|
+
runtimeRequirements.add(RuntimeGlobals.publicPath);
|
|
453
|
+
assetPath = runtimeTemplate.concatenation(
|
|
454
|
+
{ expr: RuntimeGlobals.publicPath },
|
|
455
|
+
filename
|
|
456
|
+
);
|
|
457
|
+
}
|
|
428
458
|
} else if (type === ASSET_URL_TYPE) {
|
|
429
459
|
const compilation = runtimeTemplate.compilation;
|
|
430
460
|
const path =
|
|
@@ -510,13 +540,45 @@ class AssetGenerator extends Generator {
|
|
|
510
540
|
return /** @type {string} */ (mimeType);
|
|
511
541
|
}
|
|
512
542
|
|
|
543
|
+
/**
|
|
544
|
+
* Offer the payload to `renderEmbeddedSource` before it is encoded, so the
|
|
545
|
+
* encoding covers what came back. Declines what names no language, and a
|
|
546
|
+
* `dataUrl` function, which is handed the source itself.
|
|
547
|
+
* @param {NormalModule} module the module holding the payload
|
|
548
|
+
* @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
|
|
549
|
+
* @returns {Source | undefined} the rendered payload, when one came back
|
|
550
|
+
*/
|
|
551
|
+
_renderEmbedded(module, runtimeTemplate) {
|
|
552
|
+
if (!runtimeTemplate || typeof this.dataUrlOptions === "function") {
|
|
553
|
+
return undefined;
|
|
554
|
+
}
|
|
555
|
+
// Untapped, nothing can change: no mime lookup and no copy of the payload.
|
|
556
|
+
const { compilation } = runtimeTemplate;
|
|
557
|
+
if (compilation.hooks.renderEmbeddedSource.taps.length === 0) {
|
|
558
|
+
return undefined;
|
|
559
|
+
}
|
|
560
|
+
const type = languageOfMediaType(this.getMimeType(module));
|
|
561
|
+
if (type === undefined) return undefined;
|
|
562
|
+
// An asset's source holds bytes; the hook is offered text, and the language
|
|
563
|
+
// above is only ever one written as text.
|
|
564
|
+
const content = /** @type {Source} */ (module.originalSource()).source();
|
|
565
|
+
return compilation._resolveEmbeddedSource(
|
|
566
|
+
new RawSource(
|
|
567
|
+
typeof content === "string" ? content : content.toString("utf8")
|
|
568
|
+
),
|
|
569
|
+
{ type, hostType: JAVASCRIPT_TYPE, module }
|
|
570
|
+
);
|
|
571
|
+
}
|
|
572
|
+
|
|
513
573
|
/**
|
|
514
574
|
* Generates data uri.
|
|
515
575
|
* @param {NormalModule} module module for which the code should be generated
|
|
576
|
+
* @param {Source=} renderedSource the payload to encode, when a hook rendered it
|
|
516
577
|
* @returns {string} DataURI
|
|
517
578
|
*/
|
|
518
|
-
generateDataUri(module) {
|
|
519
|
-
const source =
|
|
579
|
+
generateDataUri(module, renderedSource) {
|
|
580
|
+
const source =
|
|
581
|
+
renderedSource || /** @type {Source} */ (module.originalSource());
|
|
520
582
|
|
|
521
583
|
/** @type {string} */
|
|
522
584
|
let encodedSource;
|
|
@@ -597,7 +659,14 @@ class AssetGenerator extends Generator {
|
|
|
597
659
|
(module.buildInfo).dataUrl &&
|
|
598
660
|
needContent
|
|
599
661
|
) {
|
|
600
|
-
|
|
662
|
+
// A payload bound for CSS or HTML is offered by their serializers, which
|
|
663
|
+
// see the `url()` it ends up in; only the JavaScript one is ours.
|
|
664
|
+
const encodedSource = this.generateDataUri(
|
|
665
|
+
module,
|
|
666
|
+
type === JAVASCRIPT_TYPE
|
|
667
|
+
? this._renderEmbedded(module, runtimeTemplate)
|
|
668
|
+
: undefined
|
|
669
|
+
);
|
|
601
670
|
content =
|
|
602
671
|
type === JAVASCRIPT_TYPE
|
|
603
672
|
? JSON.stringify(encodedSource)
|
|
@@ -708,9 +777,7 @@ class AssetGenerator extends Generator {
|
|
|
708
777
|
return new RawSource(error.message);
|
|
709
778
|
}
|
|
710
779
|
case JAVASCRIPT_TYPE: {
|
|
711
|
-
return new RawSource(
|
|
712
|
-
`throw new Error(${JSON.stringify(error.message)});`
|
|
713
|
-
);
|
|
780
|
+
return new RawSource(Generator.throwBuildErrorCode(error));
|
|
714
781
|
}
|
|
715
782
|
default:
|
|
716
783
|
return null;
|
|
@@ -745,11 +812,25 @@ class AssetGenerator extends Generator {
|
|
|
745
812
|
getTypes(module) {
|
|
746
813
|
const connections = this._moduleGraph.getIncomingConnections(module);
|
|
747
814
|
|
|
748
|
-
//
|
|
815
|
+
// One that emits nothing has no name to build a literal from, so expose its url.
|
|
816
|
+
const emits =
|
|
817
|
+
!(
|
|
818
|
+
module.buildInfo &&
|
|
819
|
+
/** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl
|
|
820
|
+
) && this.emit !== false;
|
|
821
|
+
|
|
822
|
+
// Only analyzable ESM output can drop a bare `new URL()` to an asset-url; without
|
|
749
823
|
// it every JS consumer needs the wrapper, so skip the per-connection dependency
|
|
750
|
-
// probe entirely and keep the pre-existing cheap path.
|
|
824
|
+
// probe entirely and keep the pre-existing cheap path. Must match the condition
|
|
825
|
+
// `URLDependency` uses to emit the literal, or the wrapper is dropped while the
|
|
826
|
+
// call site still requires the module — except where the fallback spells the name
|
|
827
|
+
// itself (`.p + <file>`), which needs no wrapper to read it out of.
|
|
828
|
+
// Build-time execution instead emulates the wrapper (`AssetModulesPlugin`).
|
|
751
829
|
const isModule = Boolean(
|
|
752
|
-
this._compilation &&
|
|
830
|
+
this._compilation &&
|
|
831
|
+
this._compilation.runtimeTemplate.supportsAnalyzable(
|
|
832
|
+
emits ? "url-inline" : "url"
|
|
833
|
+
)
|
|
753
834
|
);
|
|
754
835
|
|
|
755
836
|
// Collapse the incoming origin types into flags instead of a Set of prefixes:
|
|
@@ -769,45 +850,38 @@ class AssetGenerator extends Generator {
|
|
|
769
850
|
continue;
|
|
770
851
|
}
|
|
771
852
|
hasOrigin = true;
|
|
772
|
-
|
|
773
|
-
|
|
853
|
+
// The dependency says how the asset is read, so a reference added later answers
|
|
854
|
+
// for itself; concatenation re-points the origin module, so it cannot.
|
|
855
|
+
const dependency = connection.dependency;
|
|
856
|
+
if (dependency && dependency.referencedSourceType === ASSET_URL_TYPE) {
|
|
774
857
|
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
858
|
} else if (
|
|
791
|
-
|
|
792
|
-
|
|
859
|
+
// Only a bare `new URL()` becomes the analyzable literal; a relative ref
|
|
860
|
+
// keeps the runtime form and still needs the wrapper. Prefetch/preload
|
|
861
|
+
// refs don't: their `<link>` is emitted at chunk startup, which resolves
|
|
862
|
+
// the href from the asset filename when there is no wrapper.
|
|
863
|
+
isModule &&
|
|
864
|
+
dependency instanceof URLDependency &&
|
|
865
|
+
!dependency.relative
|
|
793
866
|
) {
|
|
794
|
-
|
|
867
|
+
hasUrlJs = true;
|
|
868
|
+
} else {
|
|
869
|
+
hasOtherJs = true;
|
|
795
870
|
}
|
|
796
871
|
// Once a non-URL JS consumer and a url consumer coexist the result is fixed.
|
|
797
872
|
if (hasOtherJs && hasUrl) break;
|
|
798
873
|
}
|
|
799
874
|
|
|
875
|
+
// Every javascript consumer names the file itself, so nothing reads the wrapper.
|
|
876
|
+
// Only an absolute public path settles one url for all of them to share.
|
|
877
|
+
const jsWrapperUnused = isModule && hasUrlJs && !hasOtherJs;
|
|
800
878
|
const jsAsAssetUrl =
|
|
801
|
-
|
|
802
|
-
// JS wrapper is needed for non-URL JS consumers, or URL consumers
|
|
803
|
-
const wantJs = hasOtherJs || (hasUrlJs && !
|
|
879
|
+
jsWrapperUnused && (!emits || this._hasAbsolutePublicPath());
|
|
880
|
+
// JS wrapper is needed for non-URL JS consumers, or URL consumers still reading it.
|
|
881
|
+
const wantJs = hasOtherJs || (hasUrlJs && !jsWrapperUnused);
|
|
804
882
|
const wantUrl = hasUrl || jsAsAssetUrl;
|
|
805
883
|
|
|
806
|
-
if (
|
|
807
|
-
(module.buildInfo &&
|
|
808
|
-
/** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl) ||
|
|
809
|
-
this.emit === false
|
|
810
|
-
) {
|
|
884
|
+
if (!emits) {
|
|
811
885
|
if (hasOrigin) {
|
|
812
886
|
if (wantJs && wantUrl) {
|
|
813
887
|
return JAVASCRIPT_AND_ASSET_URL_TYPES;
|
|
@@ -825,6 +899,9 @@ class AssetGenerator extends Generator {
|
|
|
825
899
|
return ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES;
|
|
826
900
|
} else if (wantUrl) {
|
|
827
901
|
return ASSET_AND_ASSET_URL_TYPES;
|
|
902
|
+
} else if (jsWrapperUnused) {
|
|
903
|
+
// Every javascript consumer names the file itself, so nothing reads it.
|
|
904
|
+
return ASSET_TYPES;
|
|
828
905
|
}
|
|
829
906
|
return ASSET_AND_JAVASCRIPT_TYPES;
|
|
830
907
|
}
|
|
@@ -892,6 +969,14 @@ class AssetGenerator extends Generator {
|
|
|
892
969
|
(module.buildInfo).dataUrl
|
|
893
970
|
) {
|
|
894
971
|
hash.update("data-url");
|
|
972
|
+
// What a tap varies on has to reach the key, or a changed option replays.
|
|
973
|
+
const { runtimeTemplate } = updateHashContext;
|
|
974
|
+
if (
|
|
975
|
+
runtimeTemplate &&
|
|
976
|
+
runtimeTemplate.compilation.hooks.renderEmbeddedSource.taps.length > 0
|
|
977
|
+
) {
|
|
978
|
+
runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
|
|
979
|
+
}
|
|
895
980
|
// this.dataUrlOptions as function should be pure and only depend on input source and filename
|
|
896
981
|
// therefore it doesn't need to be hashed
|
|
897
982
|
if (typeof this.dataUrlOptions === "function") {
|
|
@@ -941,11 +1026,19 @@ class AssetGenerator extends Generator {
|
|
|
941
1026
|
|
|
942
1027
|
const assetModuleFilename =
|
|
943
1028
|
this.filename || runtimeTemplate.outputOptions.assetModuleFilename;
|
|
1029
|
+
// Hash what generation emits: the filename template sees the contained
|
|
1030
|
+
// path, unlike the public path above.
|
|
944
1031
|
const { path: filename, info } =
|
|
945
|
-
runtimeTemplate.compilation.getAssetPathWithInfo(
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
1032
|
+
runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
|
|
1033
|
+
module,
|
|
1034
|
+
runtime,
|
|
1035
|
+
filename: AssetGenerator.getTemplateSourceFileName(
|
|
1036
|
+
module,
|
|
1037
|
+
runtimeTemplate
|
|
1038
|
+
),
|
|
1039
|
+
chunkGraph,
|
|
1040
|
+
contentHash: runtimeTemplate.contentHashReplacement
|
|
1041
|
+
});
|
|
949
1042
|
hash.update(filename);
|
|
950
1043
|
hash.update(JSON.stringify(info));
|
|
951
1044
|
}
|
package/lib/asset/AssetModule.js
CHANGED
|
@@ -7,9 +7,13 @@
|
|
|
7
7
|
const NormalModule = require("../NormalModule");
|
|
8
8
|
const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/**
|
|
12
|
-
|
|
10
|
+
/** @import { AssetInfo } from "../Compilation" */
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* NormalModuleBuildInfo,
|
|
14
|
+
* NormalModuleCreateData
|
|
15
|
+
* } from "../NormalModule"
|
|
16
|
+
*/
|
|
13
17
|
|
|
14
18
|
/**
|
|
15
19
|
* Defines the build info properties specific to asset modules.
|