webpack 5.106.1 → 5.107.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 +2 -2
- package/lib/APIPlugin.js +4 -2
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +26 -0
- package/lib/Chunk.js +46 -0
- package/lib/ChunkGraph.js +111 -0
- package/lib/ChunkGroup.js +57 -13
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CleanPlugin.js +14 -1
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +23 -8
- package/lib/Compilation.js +161 -27
- package/lib/Compiler.js +41 -17
- package/lib/ConcatenationScope.js +24 -1
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +4 -1
- package/lib/ContextExclusionPlugin.js +2 -1
- package/lib/ContextModule.js +14 -2
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/DefinePlugin.js +22 -9
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +48 -4
- 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 +3 -0
- package/lib/EntryPlugin.js +2 -1
- package/lib/Entrypoint.js +4 -0
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -10
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +114 -15
- package/lib/ExternalModuleFactoryPlugin.js +15 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +291 -71
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
- package/lib/FlagDependencyExportsPlugin.js +4 -1
- package/lib/FlagDependencyUsagePlugin.js +5 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
- package/lib/Generator.js +16 -3
- package/lib/HotModuleReplacementPlugin.js +35 -9
- package/lib/IgnorePlugin.js +4 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +2 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +101 -19
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +3 -0
- package/lib/ModuleGraph.js +66 -0
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleSourceTypeConstants.js +32 -1
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleTypeConstants.js +12 -3
- package/lib/MultiCompiler.js +30 -2
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +11 -2
- package/lib/NormalModule.js +43 -33
- package/lib/NormalModuleFactory.js +35 -2
- package/lib/NormalModuleReplacementPlugin.js +1 -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 +2 -1
- package/lib/ProgressPlugin.js +158 -68
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +12 -0
- package/lib/RecordIdsPlugin.js +8 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +6 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +13 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +3 -1
- package/lib/Stats.js +5 -0
- package/lib/Template.js +20 -0
- package/lib/TemplatedPathPlugin.js +10 -3
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
- package/lib/WarnDeprecatedOptionPlugin.js +2 -2
- package/lib/WarnNoModeSetPlugin.js +17 -2
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +16 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +3 -1
- package/lib/WebpackOptionsApply.js +14 -1
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +12 -2
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +42 -10
- package/lib/asset/AssetModulesPlugin.js +7 -2
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +12 -2
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +11 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +19 -6
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
- package/lib/cache/AddManagedPathsPlugin.js +2 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
- package/lib/cache/PackFileCacheStrategy.js +33 -4
- package/lib/cache/ResolverCachePlugin.js +10 -1
- package/lib/cache/getLazyHashedEtag.js +4 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +33 -1
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +232 -12
- package/lib/config/normalization.js +15 -1
- package/lib/config/target.js +11 -0
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +12 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +4 -0
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +2 -1
- package/lib/container/FallbackDependency.js +4 -0
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +12 -0
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +3 -1
- package/lib/container/RemoteModule.js +13 -0
- package/lib/container/RemoteRuntimeModule.js +1 -0
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +336 -100
- package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
- package/lib/css/CssLoadingRuntimeModule.js +23 -4
- package/lib/{CssModule.js → css/CssModule.js} +21 -15
- package/lib/css/CssModulesPlugin.js +235 -89
- package/lib/css/CssParser.js +616 -261
- package/lib/css/walkCssTokens.js +179 -2
- package/lib/debug/ProfilingPlugin.js +19 -1
- package/lib/dependencies/AMDDefineDependency.js +7 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
- package/lib/dependencies/AMDPlugin.js +4 -1
- package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
- package/lib/dependencies/AMDRequireContextDependency.js +3 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
- package/lib/dependencies/AMDRequireDependency.js +4 -0
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +6 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
- package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
- package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +70 -4
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +9 -2
- package/lib/dependencies/ContextDependencyHelpers.js +4 -1
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +4 -0
- package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +2 -1
- package/lib/dependencies/CssIcssExportDependency.js +339 -66
- package/lib/dependencies/CssIcssImportDependency.js +53 -8
- package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
- package/lib/dependencies/CssImportDependency.js +12 -0
- package/lib/dependencies/CssUrlDependency.js +32 -0
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +3 -0
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/ExternalModuleDependency.js +5 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
- package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
- package/lib/dependencies/HarmonyExports.js +2 -0
- package/lib/dependencies/HarmonyImportDependency.js +21 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
- package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
- package/lib/dependencies/HtmlSourceDependency.js +127 -0
- package/lib/dependencies/ImportContextDependency.js +4 -0
- package/lib/dependencies/ImportDependency.js +5 -0
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +9 -2
- package/lib/dependencies/ImportPhase.js +7 -3
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +2 -0
- package/lib/dependencies/JsonExportsDependency.js +6 -1
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +2 -0
- package/lib/dependencies/LoaderPlugin.js +4 -1
- package/lib/dependencies/LocalModule.js +4 -0
- package/lib/dependencies/LocalModuleDependency.js +4 -0
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +6 -1
- package/lib/dependencies/PureExpressionDependency.js +7 -1
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/RequireEnsureDependency.js +4 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +3 -0
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
- package/lib/dependencies/StaticExportsDependency.js +3 -0
- package/lib/dependencies/SystemPlugin.js +5 -2
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/URLContextDependency.js +3 -0
- package/lib/dependencies/URLDependency.js +6 -0
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +11 -3
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
- package/lib/{DllModule.js → dll/DllModule.js} +35 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- 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} +4 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
- package/lib/errors/JSONParseError.js +114 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
- package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
- package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
- package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
- package/lib/errors/NonErrorEmittedError.js +28 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -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 +5 -1
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +20 -1
- package/lib/hmr/lazyCompilationBackend.js +2 -0
- package/lib/html/HtmlGenerator.js +379 -0
- package/lib/html/HtmlModulesPlugin.js +433 -0
- package/lib/html/HtmlParser.js +1489 -0
- package/lib/html/walkHtmlTokens.js +2733 -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 +22 -1
- 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 +39 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
- package/lib/javascript/BasicEvaluatedExpression.js +4 -2
- 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 +5 -1
- package/lib/javascript/JavascriptGenerator.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +112 -9
- package/lib/javascript/JavascriptParser.js +360 -16
- package/lib/javascript/JavascriptParserHelpers.js +7 -1
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +14 -25
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +86 -1
- package/lib/library/SystemLibraryPlugin.js +8 -0
- package/lib/library/UmdLibraryPlugin.js +16 -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 +2 -1
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +2 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +62 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +16 -1
- package/lib/optimize/InnerGraphPlugin.js +14 -2
- 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 +36 -8
- package/lib/optimize/RealContentHashPlugin.js +104 -26
- 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 +118 -4
- package/lib/optimize/SplitChunksPlugin.js +50 -2
- 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 +6 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -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 +18 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +7 -2
- package/lib/serialization/AggregateErrorSerializer.js +2 -0
- package/lib/serialization/ArraySerializer.js +2 -0
- package/lib/serialization/BinaryMiddleware.js +20 -1
- package/lib/serialization/DateObjectSerializer.js +2 -0
- package/lib/serialization/ErrorObjectSerializer.js +3 -0
- package/lib/serialization/FileMiddleware.js +21 -0
- package/lib/serialization/MapObjectSerializer.js +2 -0
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +7 -0
- package/lib/serialization/RegExpObjectSerializer.js +2 -0
- package/lib/serialization/Serializer.js +5 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +2 -0
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +15 -0
- package/lib/sharing/ConsumeSharedPlugin.js +8 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +12 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +5 -2
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +4 -1
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
- package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
- package/lib/stats/StatsFactory.js +13 -1
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +8 -2
- package/lib/util/AppendOnlyStackedSet.js +15 -0
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +22 -2
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -0
- package/lib/util/LocConverter.js +53 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +14 -1
- package/lib/util/SetHelpers.js +3 -0
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +45 -0
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +13 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +33 -0
- package/lib/util/binarySearchBounds.js +1 -0
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +34 -3
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +9 -3
- package/lib/util/conventions.js +46 -1
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +1 -0
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +20 -0
- package/lib/util/extractSourceMap.js +1 -0
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +5 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
- package/lib/util/fs.js +71 -8
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/hash-digest.js +8 -0
- 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 +67 -0
- package/lib/util/internalSerializables.js +35 -19
- package/lib/util/magicComment.js +10 -6
- package/lib/util/makeSerializable.js +6 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +1 -0
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +1 -0
- package/lib/util/registerExternalSerializer.js +20 -0
- 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 +1 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
- package/lib/wasm-sync/WebAssemblyParser.js +2 -0
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
- package/lib/web/FetchCompileWasmPlugin.js +13 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +13 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +31 -31
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +161 -57
- 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/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +22 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +5325 -353
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- /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
|
@@ -36,6 +36,7 @@ const DATA_URI_CONTENT_LENGTH = 16;
|
|
|
36
36
|
const MAX_MODULE_IDENTIFIER_LENGTH = 80;
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
|
+
* Returns if n is 1, singular, else plural.
|
|
39
40
|
* @param {number} n a number
|
|
40
41
|
* @param {string} singular singular
|
|
41
42
|
* @param {string} plural plural
|
|
@@ -44,6 +45,7 @@ const MAX_MODULE_IDENTIFIER_LENGTH = 80;
|
|
|
44
45
|
const plural = (n, singular, plural) => (n === 1 ? singular : plural);
|
|
45
46
|
|
|
46
47
|
/**
|
|
48
|
+
* Returns text.
|
|
47
49
|
* @param {Record<string, number>} sizes sizes by source type
|
|
48
50
|
* @param {StatsPrinterContext} options options
|
|
49
51
|
* @returns {string | undefined} text
|
|
@@ -58,6 +60,7 @@ const printSizes = (sizes, { formatSize = (n) => `${n}` }) => {
|
|
|
58
60
|
};
|
|
59
61
|
|
|
60
62
|
/**
|
|
63
|
+
* Gets resource name.
|
|
61
64
|
* @param {string | null} resource resource
|
|
62
65
|
* @returns {string} resource name for display
|
|
63
66
|
*/
|
|
@@ -75,6 +78,7 @@ const getResourceName = (resource) => {
|
|
|
75
78
|
};
|
|
76
79
|
|
|
77
80
|
/**
|
|
81
|
+
* Returns prefix and module name.
|
|
78
82
|
* @param {string} name module name
|
|
79
83
|
* @returns {[string, string]} prefix and module name
|
|
80
84
|
*/
|
|
@@ -99,6 +103,7 @@ const getModuleName = (name) => {
|
|
|
99
103
|
};
|
|
100
104
|
|
|
101
105
|
/**
|
|
106
|
+
* Returns joined string.
|
|
102
107
|
* @param {string} str string
|
|
103
108
|
* @param {(item: string) => string} fn function to apply to each line
|
|
104
109
|
* @returns {string} joined string
|
|
@@ -106,12 +111,14 @@ const getModuleName = (name) => {
|
|
|
106
111
|
const mapLines = (str, fn) => str.split("\n").map(fn).join("\n");
|
|
107
112
|
|
|
108
113
|
/**
|
|
114
|
+
* Returns number as two digit string, leading 0.
|
|
109
115
|
* @param {number} n a number
|
|
110
116
|
* @returns {string} number as two digit string, leading 0
|
|
111
117
|
*/
|
|
112
118
|
const twoDigit = (n) => (n >= 10 ? `${n}` : `0${n}`);
|
|
113
119
|
|
|
114
120
|
/**
|
|
121
|
+
* Checks whether this object is valid id.
|
|
115
122
|
* @param {string | number | null} id an id
|
|
116
123
|
* @returns {id is string | number} is i
|
|
117
124
|
*/
|
|
@@ -124,6 +131,7 @@ const isValidId = (id) => {
|
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
/**
|
|
134
|
+
* Returns string representation of list.
|
|
127
135
|
* @template T
|
|
128
136
|
* @param {T[] | undefined} list of items
|
|
129
137
|
* @param {number} count number of items to show
|
|
@@ -133,28 +141,33 @@ const moreCount = (list, count) =>
|
|
|
133
141
|
list && list.length > 0 ? `+ ${count}` : `${count}`;
|
|
134
142
|
|
|
135
143
|
/**
|
|
144
|
+
* Defines the with required type used by this module.
|
|
136
145
|
* @template T
|
|
137
146
|
* @template {keyof T} K
|
|
138
147
|
* @typedef {{ [P in K]-?: T[P] }} WithRequired
|
|
139
148
|
*/
|
|
140
149
|
|
|
141
150
|
/**
|
|
151
|
+
* Defines the define stats printer context type used by this module.
|
|
142
152
|
* @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
|
|
143
153
|
* @typedef {StatsPrinterContextWithExtra & WithRequired<StatsPrinterContext, "compilation" | RequiredStatsPrinterContextKeys>} DefineStatsPrinterContext
|
|
144
154
|
*/
|
|
145
155
|
|
|
146
156
|
/**
|
|
157
|
+
* Defines the simple printer type used by this module.
|
|
147
158
|
* @template T
|
|
148
159
|
* @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
|
|
149
160
|
* @typedef {(thing: Exclude<T, undefined>, context: DefineStatsPrinterContext<RequiredStatsPrinterContextKeys>, printer: StatsPrinter) => string | undefined} SimplePrinter
|
|
150
161
|
*/
|
|
151
162
|
|
|
152
163
|
/**
|
|
164
|
+
* Defines the unpacked type used by this module.
|
|
153
165
|
* @template T
|
|
154
166
|
* @typedef {T extends (infer U)[] ? U : T} Unpacked
|
|
155
167
|
*/
|
|
156
168
|
|
|
157
169
|
/**
|
|
170
|
+
* Defines the property name type used by this module.
|
|
158
171
|
* @template {object} O
|
|
159
172
|
* @template {keyof O} K
|
|
160
173
|
* @template {string} B
|
|
@@ -162,6 +175,7 @@ const moreCount = (list, count) =>
|
|
|
162
175
|
*/
|
|
163
176
|
|
|
164
177
|
/**
|
|
178
|
+
* Defines the array property name type used by this module.
|
|
165
179
|
* @template {object} O
|
|
166
180
|
* @template {keyof O} K
|
|
167
181
|
* @template {string} B
|
|
@@ -169,6 +183,7 @@ const moreCount = (list, count) =>
|
|
|
169
183
|
*/
|
|
170
184
|
|
|
171
185
|
/**
|
|
186
|
+
* Defines the exclamation type used by this module.
|
|
172
187
|
* @template {object} O
|
|
173
188
|
* @template {string} K
|
|
174
189
|
* @template {string} E
|
|
@@ -176,6 +191,7 @@ const moreCount = (list, count) =>
|
|
|
176
191
|
*/
|
|
177
192
|
|
|
178
193
|
/**
|
|
194
|
+
* Defines the shared type used by this module.
|
|
179
195
|
* @template {object} O
|
|
180
196
|
* @template {string} B
|
|
181
197
|
* @template {string} [R=B]
|
|
@@ -184,6 +200,7 @@ const moreCount = (list, count) =>
|
|
|
184
200
|
*/
|
|
185
201
|
|
|
186
202
|
/**
|
|
203
|
+
* Defines the shared type used by this module.
|
|
187
204
|
* @typedef {Printers<KnownStatsCompilation, "compilation"> &
|
|
188
205
|
* { ["compilation.summary!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
|
|
189
206
|
* { ["compilation.errorsInChildren!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
|
|
@@ -406,6 +423,7 @@ const COMPILATION_SIMPLE_PRINTERS = {
|
|
|
406
423
|
};
|
|
407
424
|
|
|
408
425
|
/**
|
|
426
|
+
* Defines the shared type used by this module.
|
|
409
427
|
* @typedef {Printers<KnownStatsAsset, "asset"> &
|
|
410
428
|
* Printers<KnownStatsAsset["info"], "asset.info"> &
|
|
411
429
|
* Exclamation<KnownStatsAsset, "asset.separator", "asset"> &
|
|
@@ -467,6 +485,7 @@ const ASSET_SIMPLE_PRINTERS = {
|
|
|
467
485
|
};
|
|
468
486
|
|
|
469
487
|
/**
|
|
488
|
+
* Defines the shared type used by this module.
|
|
470
489
|
* @typedef {Printers<KnownStatsModule, "module"> &
|
|
471
490
|
* Exclamation<KnownStatsModule, "module.separator", "module"> &
|
|
472
491
|
* { ["module.filteredChildren"]?: SimplePrinter<number, "module"> } &
|
|
@@ -588,6 +607,7 @@ const MODULE_SIMPLE_PRINTERS = {
|
|
|
588
607
|
};
|
|
589
608
|
|
|
590
609
|
/**
|
|
610
|
+
* Defines the module issuer printers type used by this module.
|
|
591
611
|
* @typedef {Printers<KnownStatsModuleIssuer, "moduleIssuer"> & Printers<KnownStatsModuleIssuer["profile"], "moduleIssuer.profile", "moduleIssuer">} ModuleIssuerPrinters
|
|
592
612
|
*/
|
|
593
613
|
|
|
@@ -598,6 +618,7 @@ const MODULE_ISSUER_PRINTERS = {
|
|
|
598
618
|
};
|
|
599
619
|
|
|
600
620
|
/**
|
|
621
|
+
* Defines the module reasons printers type used by this module.
|
|
601
622
|
* @typedef {Printers<KnownStatsModuleReason, "moduleReason"> & { ["moduleReason.filteredChildren"]?: SimplePrinter<number, "moduleReason"> }} ModuleReasonsPrinters
|
|
602
623
|
*/
|
|
603
624
|
|
|
@@ -652,6 +673,7 @@ const MODULE_PROFILE_PRINTERS = {
|
|
|
652
673
|
};
|
|
653
674
|
|
|
654
675
|
/**
|
|
676
|
+
* Defines the shared type used by this module.
|
|
655
677
|
* @typedef {Exclamation<KnownStatsChunkGroup, "chunkGroup.kind", "chunkGroupKind"> &
|
|
656
678
|
* Exclamation<KnownStatsChunkGroup, "chunkGroup.separator", "chunkGroup"> &
|
|
657
679
|
* Printers<KnownStatsChunkGroup, "chunkGroup"> &
|
|
@@ -716,6 +738,7 @@ const CHUNK_GROUP_PRINTERS = {
|
|
|
716
738
|
};
|
|
717
739
|
|
|
718
740
|
/**
|
|
741
|
+
* Defines the shared type used by this module.
|
|
719
742
|
* @typedef {Printers<KnownStatsChunk, "chunk"> &
|
|
720
743
|
* { ["chunk.childrenByOrder[].type"]: SimplePrinter<string, "chunk"> } &
|
|
721
744
|
* { ["chunk.childrenByOrder[].children[]"]: SimplePrinter<ChunkId, "chunk"> } &
|
|
@@ -778,6 +801,7 @@ const CHUNK_PRINTERS = {
|
|
|
778
801
|
};
|
|
779
802
|
|
|
780
803
|
/**
|
|
804
|
+
* Defines the shared type used by this module.
|
|
781
805
|
* @typedef {Printers<KnownStatsError, "error"> &
|
|
782
806
|
* { ["error.filteredDetails"]?: SimplePrinter<number, "error"> } &
|
|
783
807
|
* Exclamation<KnownStatsError, "error.separator", "error">} ErrorPrinters
|
|
@@ -822,6 +846,7 @@ const ERROR_PRINTERS = {
|
|
|
822
846
|
};
|
|
823
847
|
|
|
824
848
|
/**
|
|
849
|
+
* Defines the shared type used by this module.
|
|
825
850
|
* @typedef {Printers<KnownStatsLoggingEntry, `loggingEntry(${LogTypeEnum}).loggingEntry`> &
|
|
826
851
|
* { ["loggingEntry(clear).loggingEntry"]?: SimplePrinter<KnownStatsLoggingEntry, "logging"> } &
|
|
827
852
|
* { ["loggingEntry.trace[]"]?: SimplePrinter<Exclude<KnownStatsLoggingEntry["trace"], undefined>[number], "logging"> } &
|
|
@@ -1178,6 +1203,7 @@ const SIMPLE_ITEMS_JOINER = {
|
|
|
1178
1203
|
};
|
|
1179
1204
|
|
|
1180
1205
|
/**
|
|
1206
|
+
* Returns result.
|
|
1181
1207
|
* @param {Item[]} items items
|
|
1182
1208
|
* @returns {string} result
|
|
1183
1209
|
*/
|
|
@@ -1188,6 +1214,7 @@ const joinOneLine = (items) =>
|
|
|
1188
1214
|
.join(" ");
|
|
1189
1215
|
|
|
1190
1216
|
/**
|
|
1217
|
+
* Returns result.
|
|
1191
1218
|
* @param {Item[]} items items
|
|
1192
1219
|
* @returns {string} result
|
|
1193
1220
|
*/
|
|
@@ -1235,6 +1262,7 @@ const joinInBrackets = (items) => {
|
|
|
1235
1262
|
};
|
|
1236
1263
|
|
|
1237
1264
|
/**
|
|
1265
|
+
* Returns result.
|
|
1238
1266
|
* @param {string} str a string
|
|
1239
1267
|
* @param {string} prefix prefix
|
|
1240
1268
|
* @param {boolean=} noPrefixInFirstLine need prefix in the first line?
|
|
@@ -1248,6 +1276,7 @@ const indent = (str, prefix, noPrefixInFirstLine) => {
|
|
|
1248
1276
|
};
|
|
1249
1277
|
|
|
1250
1278
|
/**
|
|
1279
|
+
* Join explicit new line.
|
|
1251
1280
|
* @param {(false | Item)[]} items items
|
|
1252
1281
|
* @param {string} indenter indenter
|
|
1253
1282
|
* @returns {string} result
|
|
@@ -1274,12 +1303,14 @@ const joinExplicitNewLine = (items, indenter) => {
|
|
|
1274
1303
|
};
|
|
1275
1304
|
|
|
1276
1305
|
/**
|
|
1306
|
+
* Returns joiner.
|
|
1277
1307
|
* @param {boolean} error is an error
|
|
1278
1308
|
* @returns {SimpleElementJoiner} joiner
|
|
1279
1309
|
*/
|
|
1280
1310
|
const joinError =
|
|
1281
1311
|
(error) =>
|
|
1282
1312
|
/**
|
|
1313
|
+
* Handles the callback logic for this hook.
|
|
1283
1314
|
* @param {Item[]} items items
|
|
1284
1315
|
* @param {StatsPrinterContextWithExtra} ctx context
|
|
1285
1316
|
* @returns {string} result
|
|
@@ -1447,11 +1478,13 @@ const AVAILABLE_COLORS = {
|
|
|
1447
1478
|
};
|
|
1448
1479
|
|
|
1449
1480
|
/**
|
|
1481
|
+
* Defines the tail type used by this module.
|
|
1450
1482
|
* @template T
|
|
1451
1483
|
* @typedef {T extends [infer Head, ...infer Tail] ? Tail : undefined} Tail
|
|
1452
1484
|
*/
|
|
1453
1485
|
|
|
1454
1486
|
/**
|
|
1487
|
+
* Defines the tail parameters type used by this module.
|
|
1455
1488
|
* @template {(...args: EXPECTED_ANY[]) => EXPECTED_ANY} T
|
|
1456
1489
|
* @typedef {T extends (firstArg: EXPECTED_ANY, ...rest: infer R) => EXPECTED_ANY ? R : never} TailParameters
|
|
1457
1490
|
*/
|
|
@@ -1477,7 +1510,7 @@ const AVAILABLE_FORMATS = {
|
|
|
1477
1510
|
(oversize ? yellow : green)(filename),
|
|
1478
1511
|
formatFlag: (flag) => `[${flag}]`,
|
|
1479
1512
|
formatLayer: (layer) => `(in ${layer})`,
|
|
1480
|
-
formatSize: require("../
|
|
1513
|
+
formatSize: require("../util/formatSize"),
|
|
1481
1514
|
formatDateTime: (dateTime, { bold }) => {
|
|
1482
1515
|
const d = new Date(dateTime);
|
|
1483
1516
|
const x = twoDigit;
|
|
@@ -1538,6 +1571,7 @@ const AVAILABLE_FORMATS = {
|
|
|
1538
1571
|
message = message.replace(
|
|
1539
1572
|
regExp,
|
|
1540
1573
|
/**
|
|
1574
|
+
* Handles the format callback for this hook.
|
|
1541
1575
|
* @param {string} match match
|
|
1542
1576
|
* @param {string} content content
|
|
1543
1577
|
* @returns {string} result
|
|
@@ -1556,6 +1590,7 @@ const RESULT_MODIFIER = {
|
|
|
1556
1590
|
};
|
|
1557
1591
|
|
|
1558
1592
|
/**
|
|
1593
|
+
* Creates an order from the provided array.
|
|
1559
1594
|
* @param {string[]} array array
|
|
1560
1595
|
* @param {string[]} preferredOrder preferred order
|
|
1561
1596
|
* @returns {string[]} result
|
|
@@ -1585,7 +1620,7 @@ const PLUGIN_NAME = "DefaultStatsPrinterPlugin";
|
|
|
1585
1620
|
|
|
1586
1621
|
class DefaultStatsPrinterPlugin {
|
|
1587
1622
|
/**
|
|
1588
|
-
*
|
|
1623
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
1589
1624
|
* @param {Compiler} compiler the compiler instance
|
|
1590
1625
|
* @returns {void}
|
|
1591
1626
|
*/
|
|
@@ -1626,6 +1661,7 @@ class DefaultStatsPrinterPlugin {
|
|
|
1626
1661
|
}\u001B[39m\u001B[22m`;
|
|
1627
1662
|
} else {
|
|
1628
1663
|
/**
|
|
1664
|
+
* Returns str string.
|
|
1629
1665
|
* @param {string} str string
|
|
1630
1666
|
* @returns {string} str string
|
|
1631
1667
|
*/
|
|
@@ -18,10 +18,11 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
18
18
|
/** @typedef {import("../Module")} Module */
|
|
19
19
|
/** @typedef {import("../ModuleGraph").ModuleProfile} ModuleProfile */
|
|
20
20
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
21
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
21
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
22
22
|
/** @typedef {import("../util/comparators").Comparator<EXPECTED_ANY>} Comparator */
|
|
23
23
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
24
24
|
/**
|
|
25
|
+
* Defines the group config type used by this module.
|
|
25
26
|
* @template T, R
|
|
26
27
|
* @typedef {import("../util/smartGrouping").GroupConfig<T, R>} GroupConfig
|
|
27
28
|
*/
|
|
@@ -42,6 +43,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
42
43
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
|
|
43
44
|
|
|
44
45
|
/**
|
|
46
|
+
* Defines the known stats factory context type used by this module.
|
|
45
47
|
* @typedef {object} KnownStatsFactoryContext
|
|
46
48
|
* @property {string} type
|
|
47
49
|
* @property {Compilation} compilation
|
|
@@ -59,12 +61,14 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
59
61
|
// StatsLogging StatsLoggingEntry
|
|
60
62
|
|
|
61
63
|
/**
|
|
64
|
+
* Defines the stats object type used by this module.
|
|
62
65
|
* @template T
|
|
63
66
|
* @template F
|
|
64
67
|
* @typedef {T extends Compilation ? StatsCompilation : T extends ChunkGroupInfoWithName ? StatsChunkGroup : T extends Chunk ? StatsChunk : T extends OriginRecord ? StatsChunkOrigin : T extends Module ? StatsModule : T extends ModuleGraphConnection ? StatsModuleReason : T extends Asset ? StatsAsset : T extends ModuleTrace ? StatsModuleTraceItem : T extends Dependency ? StatsModuleTraceDependency : T extends Error ? StatsError : T extends ModuleProfile ? StatsProfile : F} StatsObject
|
|
65
68
|
*/
|
|
66
69
|
|
|
67
70
|
/**
|
|
71
|
+
* Defines the created object type used by this module.
|
|
68
72
|
* @template T
|
|
69
73
|
* @template F
|
|
70
74
|
* @typedef {T extends ChunkGroupInfoWithName[] ? Record<string, StatsObject<ChunkGroupInfoWithName, F>> : T extends (infer V)[] ? StatsObject<V, F>[] : StatsObject<T, F>} CreatedObject
|
|
@@ -76,6 +80,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
76
80
|
/** @typedef {EXPECTED_ANY} Result */
|
|
77
81
|
|
|
78
82
|
/**
|
|
83
|
+
* Defines the stats factory hooks type used by this module.
|
|
79
84
|
* @typedef {object} StatsFactoryHooks
|
|
80
85
|
* @property {HookMap<SyncBailHook<[ObjectForExtract, FactoryData, StatsFactoryContext], void>>} extract
|
|
81
86
|
* @property {HookMap<SyncBailHook<[FactoryDataItem, StatsFactoryContext, number, number], boolean | void>>} filter
|
|
@@ -91,6 +96,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
91
96
|
*/
|
|
92
97
|
|
|
93
98
|
/**
|
|
99
|
+
* Represents the stats factory runtime component.
|
|
94
100
|
* @template T
|
|
95
101
|
* @typedef {Map<string, T[]>} Caches
|
|
96
102
|
*/
|
|
@@ -133,6 +139,7 @@ class StatsFactory {
|
|
|
133
139
|
}
|
|
134
140
|
|
|
135
141
|
/**
|
|
142
|
+
* Get all level hooks.
|
|
136
143
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
137
144
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
138
145
|
* @param {HM} hookMap hook map
|
|
@@ -159,6 +166,7 @@ class StatsFactory {
|
|
|
159
166
|
}
|
|
160
167
|
|
|
161
168
|
/**
|
|
169
|
+
* Returns hook.
|
|
162
170
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
163
171
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
164
172
|
* @template {H extends import("tapable").Hook<EXPECTED_ANY, infer R> ? R : never} R
|
|
@@ -177,6 +185,7 @@ class StatsFactory {
|
|
|
177
185
|
}
|
|
178
186
|
|
|
179
187
|
/**
|
|
188
|
+
* For each level waterfall.
|
|
180
189
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
181
190
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
182
191
|
* @param {HM} hookMap hook map
|
|
@@ -195,6 +204,7 @@ class StatsFactory {
|
|
|
195
204
|
}
|
|
196
205
|
|
|
197
206
|
/**
|
|
207
|
+
* For each level filter.
|
|
198
208
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} T
|
|
199
209
|
* @template {T extends HookMap<infer H> ? H : never} H
|
|
200
210
|
* @template {H extends import("tapable").Hook<EXPECTED_ANY, infer R> ? R : never} R
|
|
@@ -225,6 +235,7 @@ class StatsFactory {
|
|
|
225
235
|
}
|
|
226
236
|
|
|
227
237
|
/**
|
|
238
|
+
* Returns created object.
|
|
228
239
|
* @template FactoryData
|
|
229
240
|
* @template FallbackCreatedObject
|
|
230
241
|
* @param {string} type type
|
|
@@ -248,6 +259,7 @@ class StatsFactory {
|
|
|
248
259
|
}
|
|
249
260
|
|
|
250
261
|
/**
|
|
262
|
+
* Returns created object.
|
|
251
263
|
* @private
|
|
252
264
|
* @template FactoryData
|
|
253
265
|
* @template FallbackCreatedObject
|
|
@@ -21,12 +21,14 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
21
21
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
+
* Defines the printed element type used by this module.
|
|
24
25
|
* @typedef {object} PrintedElement
|
|
25
26
|
* @property {string} element
|
|
26
27
|
* @property {string | undefined} content
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
30
|
/**
|
|
31
|
+
* Defines the known stats printer context type used by this module.
|
|
30
32
|
* @typedef {object} KnownStatsPrinterContext
|
|
31
33
|
* @property {string=} type
|
|
32
34
|
* @property {StatsCompilation=} compilation
|
|
@@ -47,6 +49,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
47
49
|
/** @typedef {(value: string | number) => string} ColorFunction */
|
|
48
50
|
|
|
49
51
|
/**
|
|
52
|
+
* Defines the known stats printer color functions type used by this module.
|
|
50
53
|
* @typedef {object} KnownStatsPrinterColorFunctions
|
|
51
54
|
* @property {ColorFunction=} bold
|
|
52
55
|
* @property {ColorFunction=} yellow
|
|
@@ -57,6 +60,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
57
60
|
*/
|
|
58
61
|
|
|
59
62
|
/**
|
|
63
|
+
* Defines the known stats printer formatters type used by this module.
|
|
60
64
|
* @typedef {object} KnownStatsPrinterFormatters
|
|
61
65
|
* @property {(file: string, oversize?: boolean) => string=} formatFilename
|
|
62
66
|
* @property {(id: string | number) => string=} formatModuleId
|
|
@@ -74,6 +78,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
74
78
|
/** @typedef {EXPECTED_ANY} PrintObject */
|
|
75
79
|
|
|
76
80
|
/**
|
|
81
|
+
* Represents the stats printer runtime component.
|
|
77
82
|
* @typedef {object} StatsPrintHooks
|
|
78
83
|
* @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], void>>} sortElements
|
|
79
84
|
* @property {HookMap<SyncBailHook<[PrintedElement[], StatsPrinterContext], string | undefined | void>>} printElements
|
|
@@ -176,6 +181,7 @@ class StatsPrinter {
|
|
|
176
181
|
}
|
|
177
182
|
|
|
178
183
|
/**
|
|
184
|
+
* Returns printed result.
|
|
179
185
|
* @param {string} type The type
|
|
180
186
|
* @param {PrintObject} object Object to print
|
|
181
187
|
* @param {StatsPrinterContext=} baseContext The base context
|
|
@@ -195,6 +201,7 @@ class StatsPrinter {
|
|
|
195
201
|
}
|
|
196
202
|
|
|
197
203
|
/**
|
|
204
|
+
* Returns printed result.
|
|
198
205
|
* @private
|
|
199
206
|
* @param {string} type type
|
|
200
207
|
* @param {PrintObject} object object
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const mod = require("module");
|
|
9
|
+
const {
|
|
10
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
11
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
12
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
|
13
|
+
} = require("../ModuleTypeConstants");
|
|
14
|
+
const NormalModule = require("../NormalModule");
|
|
15
|
+
const ModuleBuildError = require("../errors/ModuleBuildError");
|
|
16
|
+
const memoize = require("../util/memoize");
|
|
17
|
+
const removeBOM = require("../util/removeBOM");
|
|
18
|
+
|
|
19
|
+
/** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
|
|
20
|
+
/** @typedef {import("../Compiler")} Compiler */
|
|
21
|
+
/** @typedef {import("../NormalModule")} NormalModuleType */
|
|
22
|
+
/** @typedef {import("../NormalModule").Result} Result */
|
|
23
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
24
|
+
|
|
25
|
+
const getSourceMapSource = memoize(
|
|
26
|
+
() => require("webpack-sources").SourceMapSource
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const PLUGIN_NAME = "TypeScriptPlugin";
|
|
30
|
+
|
|
31
|
+
/** @type {Set<string>} */
|
|
32
|
+
const JS_MODULE_TYPES = new Set([
|
|
33
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
34
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
35
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
|
36
|
+
]);
|
|
37
|
+
|
|
38
|
+
const TS_RESOURCE_RE = /\.(?:[mc]?tsx?)$/i;
|
|
39
|
+
const TSX_RESOURCE_RE = /\.[mc]?tsx$/i;
|
|
40
|
+
const TS_DATA_URI_RE = /^data:(?:text|application)\/typescript/i;
|
|
41
|
+
|
|
42
|
+
const TSX_NOT_SUPPORTED =
|
|
43
|
+
"experiments.typescript does not support .tsx/JSX. " +
|
|
44
|
+
"Use a TSX-capable loader (e.g. swc-loader, esbuild-loader, ts-loader) for .tsx files.";
|
|
45
|
+
|
|
46
|
+
const NODE_API_MISSING =
|
|
47
|
+
"experiments.typescript requires Node.js >= 22.6. " +
|
|
48
|
+
"`module.stripTypeScriptTypes` is not available on this Node.js version.";
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Whether the resource (path or `data:` URI) should go through the TypeScript
|
|
52
|
+
* transform. Returns true for `.ts`, `.cts`, `.mts`, and the JSX-flavoured
|
|
53
|
+
* variants (so the `.tsx` branch can throw a friendly error), as well as the
|
|
54
|
+
* `text/typescript` / `application/typescript` data URIs.
|
|
55
|
+
* @param {string} resource module resource (without query string)
|
|
56
|
+
* @returns {boolean} true if the resource should be transformed
|
|
57
|
+
*/
|
|
58
|
+
const isTypeScriptResource = (resource) =>
|
|
59
|
+
TS_RESOURCE_RE.test(resource) || TS_DATA_URI_RE.test(resource);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Build a line-granularity identity source map for a strip-types output.
|
|
63
|
+
* `mode: "strip"` replaces type annotations with whitespace, so the stripped
|
|
64
|
+
* output preserves the original line layout — an identity mapping is correct.
|
|
65
|
+
* Node's API does not emit a source map in strip mode (`sourceMap: true` is
|
|
66
|
+
* rejected on Node 22+ and Node 26+), so we construct one by hand.
|
|
67
|
+
* @param {string} resource module resource path
|
|
68
|
+
* @param {string} originalSource pre-strip source content
|
|
69
|
+
* @returns {RawSourceMap} identity source map
|
|
70
|
+
*/
|
|
71
|
+
const createIdentitySourceMap = (resource, originalSource) => {
|
|
72
|
+
const lineCount = (originalSource.match(/\n/g) || []).length + 1;
|
|
73
|
+
// Mappings: each line emits a single segment at column 0 mapping to
|
|
74
|
+
// column 0 of the same line in the source. `AAAA` for line 1, `;AACA`
|
|
75
|
+
// for each subsequent line (cumulative source-line delta of +1 per line).
|
|
76
|
+
const mappings = `AAAA${";AACA".repeat(lineCount - 1)}`;
|
|
77
|
+
|
|
78
|
+
return {
|
|
79
|
+
version: 3,
|
|
80
|
+
file: resource,
|
|
81
|
+
sources: [resource],
|
|
82
|
+
sourcesContent: [originalSource],
|
|
83
|
+
names: [],
|
|
84
|
+
mappings
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Compose the strip-types source map with an upstream loader source map so the
|
|
90
|
+
* final map points back to the loader's original input (e.g. a `.vue` /
|
|
91
|
+
* `.svelte` / custom loader that emits TS code).
|
|
92
|
+
* @param {string} resource module resource
|
|
93
|
+
* @param {string} strippedSource post-strip JS
|
|
94
|
+
* @param {RawSourceMap} stripMap identity map for the strip step
|
|
95
|
+
* @param {string} preStripSource pre-strip TS (loader output)
|
|
96
|
+
* @param {string | RawSourceMap} loaderSourceMap upstream loader source map
|
|
97
|
+
* @returns {RawSourceMap} composed map
|
|
98
|
+
*/
|
|
99
|
+
const composeWithLoaderSourceMap = (
|
|
100
|
+
resource,
|
|
101
|
+
strippedSource,
|
|
102
|
+
stripMap,
|
|
103
|
+
preStripSource,
|
|
104
|
+
loaderSourceMap
|
|
105
|
+
) => {
|
|
106
|
+
const SourceMapSource = getSourceMapSource();
|
|
107
|
+
const composed = new SourceMapSource(
|
|
108
|
+
strippedSource,
|
|
109
|
+
resource,
|
|
110
|
+
stripMap,
|
|
111
|
+
preStripSource,
|
|
112
|
+
loaderSourceMap,
|
|
113
|
+
true
|
|
114
|
+
);
|
|
115
|
+
return /** @type {RawSourceMap} */ (composed.sourceAndMap().map) || stripMap;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Run `module.stripTypeScriptTypes` on the input, wrapping any thrown
|
|
120
|
+
* `TypeScript ...` errors as `ModuleBuildError` so they surface as
|
|
121
|
+
* per-module build errors instead of uncaught exceptions.
|
|
122
|
+
* @param {string} input pre-strip TS source (BOM-free string)
|
|
123
|
+
* @returns {string} stripped JS
|
|
124
|
+
*/
|
|
125
|
+
const stripTypes = (input) => {
|
|
126
|
+
try {
|
|
127
|
+
// Pass only `mode`. `sourceUrl` would emit a `//# sourceURL=…` pragma
|
|
128
|
+
// into the output (V8 debugger hint), and `sourceMap: true` is
|
|
129
|
+
// rejected in strip mode — we build the source map by hand instead.
|
|
130
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
131
|
+
return mod.stripTypeScriptTypes(input, { mode: "strip" });
|
|
132
|
+
} catch (err) {
|
|
133
|
+
throw new ModuleBuildError(/** @type {Error} */ (err));
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Coerce a Buffer-or-string source to a UTF-8 string, dropping any BOM.
|
|
139
|
+
* @param {string | Buffer} source raw source from the loader pipeline
|
|
140
|
+
* @returns {string} UTF-8 string without BOM
|
|
141
|
+
*/
|
|
142
|
+
const toBomFreeString = (source) => {
|
|
143
|
+
const text = Buffer.isBuffer(source) ? source.toString("utf8") : source;
|
|
144
|
+
const stripped = removeBOM(text);
|
|
145
|
+
return typeof stripped === "string" ? stripped : stripped.toString("utf8");
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
class TypeScriptPlugin {
|
|
149
|
+
/**
|
|
150
|
+
* @param {Compiler} compiler webpack compiler
|
|
151
|
+
* @returns {void}
|
|
152
|
+
*/
|
|
153
|
+
apply(compiler) {
|
|
154
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
155
|
+
NormalModule.getCompilationHooks(compilation).processResult.tap(
|
|
156
|
+
PLUGIN_NAME,
|
|
157
|
+
(result, module) => this._processResult(result, module)
|
|
158
|
+
);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* processResult tap body. Returns the input untouched unless this is a
|
|
164
|
+
* TypeScript module that needs to be transformed.
|
|
165
|
+
* @param {Result} result loader result tuple
|
|
166
|
+
* @param {NormalModuleType} module the normal module
|
|
167
|
+
* @returns {Result} possibly transformed result
|
|
168
|
+
*/
|
|
169
|
+
_processResult(result, module) {
|
|
170
|
+
if (!JS_MODULE_TYPES.has(module.type)) return result;
|
|
171
|
+
|
|
172
|
+
const parser = /** @type {JavascriptParser} */ (module.parser);
|
|
173
|
+
if (!parser.options.typescript) return result;
|
|
174
|
+
|
|
175
|
+
const resource = module.nameForCondition();
|
|
176
|
+
if (!resource || !isTypeScriptResource(resource)) return result;
|
|
177
|
+
|
|
178
|
+
if (TSX_RESOURCE_RE.test(resource)) {
|
|
179
|
+
throw new ModuleBuildError(new Error(TSX_NOT_SUPPORTED));
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (!("stripTypeScriptTypes" in mod)) {
|
|
183
|
+
throw new ModuleBuildError(new Error(NODE_API_MISSING));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const [rawSource, loaderSourceMap, ...rest] = result;
|
|
187
|
+
const preStripSource = toBomFreeString(rawSource);
|
|
188
|
+
const strippedSource = stripTypes(preStripSource);
|
|
189
|
+
|
|
190
|
+
const needSourceMap = module.useSourceMap || module.useSimpleSourceMap;
|
|
191
|
+
const stripMap = needSourceMap
|
|
192
|
+
? createIdentitySourceMap(module.resource, preStripSource)
|
|
193
|
+
: undefined;
|
|
194
|
+
|
|
195
|
+
const outputSourceMap =
|
|
196
|
+
stripMap && loaderSourceMap
|
|
197
|
+
? composeWithLoaderSourceMap(
|
|
198
|
+
module.resource,
|
|
199
|
+
strippedSource,
|
|
200
|
+
stripMap,
|
|
201
|
+
preStripSource,
|
|
202
|
+
loaderSourceMap
|
|
203
|
+
)
|
|
204
|
+
: stripMap || loaderSourceMap;
|
|
205
|
+
|
|
206
|
+
return [strippedSource, outputSourceMap, ...rest];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
module.exports = TypeScriptPlugin;
|