From d65bb957b6a0f3e83c72444cd7d1a4a8966757a8 Mon Sep 17 00:00:00 2001 From: neverland Date: Tue, 4 Nov 2025 22:10:02 +0800 Subject: [PATCH] feat: enhance `api.transform` typing with conditional types --- packages/core/src/initPlugins.ts | 2 +- packages/core/src/types/plugin.ts | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/core/src/initPlugins.ts b/packages/core/src/initPlugins.ts index 07ce4d2a24..27f3786a4e 100644 --- a/packages/core/src/initPlugins.ts +++ b/packages/core/src/initPlugins.ts @@ -149,7 +149,7 @@ export function initPluginAPI({ }; let transformId = 0; - const transformer: Record = {}; + const transformer: Record> = {}; const processAssetsFns: { environment?: string; descriptor: ProcessAssetsDescriptor; diff --git a/packages/core/src/types/plugin.ts b/packages/core/src/types/plugin.ts index 3b130e6164..88d78f185a 100644 --- a/packages/core/src/types/plugin.ts +++ b/packages/core/src/types/plugin.ts @@ -304,11 +304,12 @@ type TransformResult = map?: string | Rspack.RawSourceMap | null; }; -export type TransformContext = { +export type TransformContext = { /** * The code of the module. + * When `raw` is true, this will be a Buffer instead of a string. */ - code: string; + code: Raw extends true ? Buffer : string; /** * The directory path of the currently processed module, * which changes with the location of each processed module. @@ -370,8 +371,8 @@ export type TransformContext = { resolve: Rspack.LoaderContext['resolve']; }; -export type TransformHandler = ( - context: TransformContext, +export type TransformHandler = ( + context: TransformContext, ) => MaybePromise; export type TransformDescriptor = { @@ -449,9 +450,9 @@ export type TransformDescriptor = { order?: HookOrder; }; -export type TransformHook = ( - descriptor: TransformDescriptor, - handler: TransformHandler, +export type TransformHook = ( + descriptor: T, + handler: TransformHandler, ) => void; export type ProcessAssetsStage =