@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
9
|
-
const { concatComparators, keepOriginalOrder } = require("../util/comparators");
|
|
10
9
|
const smartGrouping = require("../util/smartGrouping");
|
|
11
10
|
|
|
12
11
|
/** @typedef {import("../Chunk")} Chunk */
|
|
@@ -18,10 +17,11 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
18
17
|
/** @typedef {import("../Module")} Module */
|
|
19
18
|
/** @typedef {import("../ModuleGraph").ModuleProfile} ModuleProfile */
|
|
20
19
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
21
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
20
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
22
21
|
/** @typedef {import("../util/comparators").Comparator<EXPECTED_ANY>} Comparator */
|
|
23
22
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
24
23
|
/**
|
|
24
|
+
* Defines the group config type used by this module.
|
|
25
25
|
* @template T, R
|
|
26
26
|
* @typedef {import("../util/smartGrouping").GroupConfig<T, R>} GroupConfig
|
|
27
27
|
*/
|
|
@@ -42,6 +42,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
42
42
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
+
* Defines the known stats factory context type used by this module.
|
|
45
46
|
* @typedef {object} KnownStatsFactoryContext
|
|
46
47
|
* @property {string} type
|
|
47
48
|
* @property {Compilation} compilation
|
|
@@ -59,12 +60,14 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
59
60
|
// StatsLogging StatsLoggingEntry
|
|
60
61
|
|
|
61
62
|
/**
|
|
63
|
+
* Defines the stats object type used by this module.
|
|
62
64
|
* @template T
|
|
63
65
|
* @template F
|
|
64
66
|
* @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
67
|
*/
|
|
66
68
|
|
|
67
69
|
/**
|
|
70
|
+
* Defines the created object type used by this module.
|
|
68
71
|
* @template T
|
|
69
72
|
* @template F
|
|
70
73
|
* @typedef {T extends ChunkGroupInfoWithName[] ? Record<string, StatsObject<ChunkGroupInfoWithName, F>> : T extends (infer V)[] ? StatsObject<V, F>[] : StatsObject<T, F>} CreatedObject
|
|
@@ -76,6 +79,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
76
79
|
/** @typedef {EXPECTED_ANY} Result */
|
|
77
80
|
|
|
78
81
|
/**
|
|
82
|
+
* Defines the stats factory hooks type used by this module.
|
|
79
83
|
* @typedef {object} StatsFactoryHooks
|
|
80
84
|
* @property {HookMap<SyncBailHook<[ObjectForExtract, FactoryData, StatsFactoryContext], void>>} extract
|
|
81
85
|
* @property {HookMap<SyncBailHook<[FactoryDataItem, StatsFactoryContext, number, number], boolean | void>>} filter
|
|
@@ -91,6 +95,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
91
95
|
*/
|
|
92
96
|
|
|
93
97
|
/**
|
|
98
|
+
* Represents the stats factory runtime component.
|
|
94
99
|
* @template T
|
|
95
100
|
* @typedef {Map<string, T[]>} Caches
|
|
96
101
|
*/
|
|
@@ -125,14 +130,16 @@ class StatsFactory {
|
|
|
125
130
|
});
|
|
126
131
|
const hooks = this.hooks;
|
|
127
132
|
this._caches =
|
|
128
|
-
/** @type {{ [Key in keyof StatsFactoryHooks]: Map<string,
|
|
133
|
+
/** @type {{ [Key in keyof StatsFactoryHooks]: StatsFactoryHooks[Key] extends HookMap<infer H> ? Map<string, H[]> : never }} */ ({});
|
|
129
134
|
for (const key of Object.keys(hooks)) {
|
|
130
135
|
this._caches[/** @type {keyof StatsFactoryHooks} */ (key)] = new Map();
|
|
131
136
|
}
|
|
137
|
+
/** @type {boolean} */
|
|
132
138
|
this._inCreate = false;
|
|
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,9 +166,10 @@ 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
|
-
* @template {H extends import("tapable").Hook<
|
|
172
|
+
* @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
|
|
165
173
|
* @param {HM} hookMap hook map
|
|
166
174
|
* @param {Caches<H>} cache cache
|
|
167
175
|
* @param {string} type type
|
|
@@ -177,14 +185,16 @@ 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
|
|
191
|
+
* @template [D=EXPECTED_ANY]
|
|
182
192
|
* @param {HM} hookMap hook map
|
|
183
193
|
* @param {Caches<H>} cache cache
|
|
184
194
|
* @param {string} type type
|
|
185
|
-
* @param {
|
|
186
|
-
* @param {(hook: H,
|
|
187
|
-
* @returns {
|
|
195
|
+
* @param {D} data data
|
|
196
|
+
* @param {(hook: H, data: D) => D} fn fn
|
|
197
|
+
* @returns {D} data
|
|
188
198
|
* @private
|
|
189
199
|
*/
|
|
190
200
|
_forEachLevelWaterfall(hookMap, cache, type, data, fn) {
|
|
@@ -195,16 +205,17 @@ class StatsFactory {
|
|
|
195
205
|
}
|
|
196
206
|
|
|
197
207
|
/**
|
|
208
|
+
* For each level filter.
|
|
198
209
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} T
|
|
199
210
|
* @template {T extends HookMap<infer H> ? H : never} H
|
|
200
|
-
* @template
|
|
211
|
+
* @template [D=EXPECTED_ANY]
|
|
201
212
|
* @param {T} hookMap hook map
|
|
202
213
|
* @param {Caches<H>} cache cache
|
|
203
214
|
* @param {string} type type
|
|
204
|
-
* @param {
|
|
205
|
-
* @param {(hook: H, item:
|
|
215
|
+
* @param {D[]} items items
|
|
216
|
+
* @param {(hook: H, item: D, idx: number, i: number) => boolean | void} fn fn
|
|
206
217
|
* @param {boolean} forceClone force clone
|
|
207
|
-
* @returns {
|
|
218
|
+
* @returns {D[]} result for each level
|
|
208
219
|
* @private
|
|
209
220
|
*/
|
|
210
221
|
_forEachLevelFilter(hookMap, cache, type, items, fn, forceClone) {
|
|
@@ -225,6 +236,7 @@ class StatsFactory {
|
|
|
225
236
|
}
|
|
226
237
|
|
|
227
238
|
/**
|
|
239
|
+
* Returns created object.
|
|
228
240
|
* @template FactoryData
|
|
229
241
|
* @template FallbackCreatedObject
|
|
230
242
|
* @param {string} type type
|
|
@@ -248,6 +260,7 @@ class StatsFactory {
|
|
|
248
260
|
}
|
|
249
261
|
|
|
250
262
|
/**
|
|
263
|
+
* Returns created object.
|
|
251
264
|
* @private
|
|
252
265
|
* @template FactoryData
|
|
253
266
|
* @template FallbackCreatedObject
|
|
@@ -280,10 +293,7 @@ class StatsFactory {
|
|
|
280
293
|
h.call(comparators, context)
|
|
281
294
|
);
|
|
282
295
|
if (comparators.length > 0) {
|
|
283
|
-
items
|
|
284
|
-
// @ts-expect-error number of arguments is correct
|
|
285
|
-
concatComparators(...comparators, keepOriginalOrder(items))
|
|
286
|
-
);
|
|
296
|
+
sortWithOriginalOrder(items, comparators);
|
|
287
297
|
}
|
|
288
298
|
|
|
289
299
|
// run filter on sorted items
|
|
@@ -296,23 +306,30 @@ class StatsFactory {
|
|
|
296
306
|
false
|
|
297
307
|
);
|
|
298
308
|
|
|
299
|
-
//
|
|
309
|
+
// reuse one item context; create() spreads it synchronously, so mutating
|
|
310
|
+
// `_index`/the name key between items is safe and skips a per-item spread
|
|
311
|
+
/** @type {StatsFactoryContext} */
|
|
312
|
+
const itemContext = { ...context };
|
|
313
|
+
const itemNameType = `${type}[]`;
|
|
314
|
+
/** @type {string | void} */
|
|
315
|
+
let prevItemName;
|
|
300
316
|
let resultItems = items2.map((item, i) => {
|
|
301
|
-
|
|
302
|
-
const itemContext = {
|
|
303
|
-
...context,
|
|
304
|
-
_index: i
|
|
305
|
-
};
|
|
317
|
+
itemContext._index = i;
|
|
306
318
|
|
|
307
319
|
// run getItemName
|
|
308
320
|
const itemName = this._forEachLevel(
|
|
309
321
|
this.hooks.getItemName,
|
|
310
322
|
this._caches.getItemName,
|
|
311
|
-
|
|
323
|
+
itemNameType,
|
|
312
324
|
(h) => h.call(item, itemContext)
|
|
313
325
|
);
|
|
326
|
+
// drop a previous item's name key before adding this one's
|
|
327
|
+
if (prevItemName !== undefined && prevItemName !== itemName) {
|
|
328
|
+
delete itemContext[prevItemName];
|
|
329
|
+
}
|
|
314
330
|
if (itemName) itemContext[itemName] = item;
|
|
315
|
-
|
|
331
|
+
prevItemName = itemName;
|
|
332
|
+
const innerType = itemName ? `${type}[].${itemName}` : itemNameType;
|
|
316
333
|
|
|
317
334
|
// run getItemFactory
|
|
318
335
|
const itemFactory =
|
|
@@ -337,10 +354,7 @@ class StatsFactory {
|
|
|
337
354
|
(h) => h.call(comparators2, context)
|
|
338
355
|
);
|
|
339
356
|
if (comparators2.length > 0) {
|
|
340
|
-
resultItems
|
|
341
|
-
// @ts-expect-error number of arguments is correct
|
|
342
|
-
concatComparators(...comparators2, keepOriginalOrder(resultItems))
|
|
343
|
-
);
|
|
357
|
+
sortWithOriginalOrder(resultItems, comparators2);
|
|
344
358
|
}
|
|
345
359
|
|
|
346
360
|
// group result items
|
|
@@ -403,4 +417,33 @@ class StatsFactory {
|
|
|
403
417
|
}
|
|
404
418
|
}
|
|
405
419
|
|
|
420
|
+
/**
|
|
421
|
+
* Stable in-place sort applying comparators in order, keeping the original order
|
|
422
|
+
* for equal items. Inlined instead of `concatComparators(...c, keepOriginalOrder())`
|
|
423
|
+
* because that combination is single-use per sort and only thrashes the comparator
|
|
424
|
+
* caches (a fresh tiebreaker closure every call allocates a new cache entry).
|
|
425
|
+
* @param {EXPECTED_ANY[]} items items to sort in place
|
|
426
|
+
* @param {Comparator[]} comparators comparators applied in order
|
|
427
|
+
* @returns {void}
|
|
428
|
+
*/
|
|
429
|
+
const sortWithOriginalOrder = (items, comparators) => {
|
|
430
|
+
// original-index tiebreaker keeps the sort stable on engines without a stable Array.sort
|
|
431
|
+
/** @type {Map<EXPECTED_ANY, number>} */
|
|
432
|
+
const originalOrder = new Map();
|
|
433
|
+
for (let i = 0; i < items.length; i++) {
|
|
434
|
+
originalOrder.set(items[i], i);
|
|
435
|
+
}
|
|
436
|
+
const count = comparators.length;
|
|
437
|
+
items.sort((a, b) => {
|
|
438
|
+
for (let i = 0; i < count; i++) {
|
|
439
|
+
const res = comparators[i](a, b);
|
|
440
|
+
if (res !== 0) return res;
|
|
441
|
+
}
|
|
442
|
+
return (
|
|
443
|
+
/** @type {number} */ (originalOrder.get(a)) -
|
|
444
|
+
/** @type {number} */ (originalOrder.get(b))
|
|
445
|
+
);
|
|
446
|
+
});
|
|
447
|
+
};
|
|
448
|
+
|
|
406
449
|
module.exports = StatsFactory;
|
|
@@ -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
|
|
@@ -69,11 +73,18 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
69
73
|
* @property {(message: string) => string=} formatError
|
|
70
74
|
*/
|
|
71
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Extracts the inner hook type held by a `HookMap`.
|
|
78
|
+
* @template T
|
|
79
|
+
* @typedef {T extends HookMap<infer H> ? H : never} HookMapHook
|
|
80
|
+
*/
|
|
81
|
+
|
|
72
82
|
/** @typedef {KnownStatsPrinterColorFunctions & KnownStatsPrinterFormatters & KnownStatsPrinterContext & Record<string, EXPECTED_ANY>} StatsPrinterContext */
|
|
73
83
|
/** @typedef {StatsPrinterContext & Required<KnownStatsPrinterColorFunctions> & Required<KnownStatsPrinterFormatters> & { type: string }} StatsPrinterContextWithExtra */
|
|
74
84
|
/** @typedef {EXPECTED_ANY} PrintObject */
|
|
75
85
|
|
|
76
86
|
/**
|
|
87
|
+
* Represents the stats printer runtime component.
|
|
77
88
|
* @typedef {object} StatsPrintHooks
|
|
78
89
|
* @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], void>>} sortElements
|
|
79
90
|
* @property {HookMap<SyncBailHook<[PrintedElement[], StatsPrinterContext], string | undefined | void>>} printElements
|
|
@@ -102,8 +113,9 @@ class StatsPrinter {
|
|
|
102
113
|
print: new HookMap(() => new SyncBailHook(["object", "context"])),
|
|
103
114
|
result: new HookMap(() => new SyncWaterfallHook(["result", "context"]))
|
|
104
115
|
});
|
|
105
|
-
/** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string,
|
|
116
|
+
/** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string, HookMapHook<StatsPrintHooks[keyof StatsPrintHooks]>[]>>} */
|
|
106
117
|
this._levelHookCache = new Map();
|
|
118
|
+
/** @type {boolean} */
|
|
107
119
|
this._inPrint = false;
|
|
108
120
|
}
|
|
109
121
|
|
|
@@ -144,7 +156,7 @@ class StatsPrinter {
|
|
|
144
156
|
* @private
|
|
145
157
|
* @template {StatsPrintHooks[keyof StatsPrintHooks]} HM
|
|
146
158
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
147
|
-
* @template {H extends import("tapable").Hook<
|
|
159
|
+
* @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
|
|
148
160
|
* @param {HM} hookMap hook map
|
|
149
161
|
* @param {string} type type
|
|
150
162
|
* @param {(hooK: H) => R | undefined | void} fn fn
|
|
@@ -176,6 +188,7 @@ class StatsPrinter {
|
|
|
176
188
|
}
|
|
177
189
|
|
|
178
190
|
/**
|
|
191
|
+
* Returns printed result.
|
|
179
192
|
* @param {string} type The type
|
|
180
193
|
* @param {PrintObject} object Object to print
|
|
181
194
|
* @param {StatsPrinterContext=} baseContext The base context
|
|
@@ -195,6 +208,7 @@ class StatsPrinter {
|
|
|
195
208
|
}
|
|
196
209
|
|
|
197
210
|
/**
|
|
211
|
+
* Returns printed result.
|
|
198
212
|
* @private
|
|
199
213
|
* @param {string} type type
|
|
200
214
|
* @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;
|