diff --git a/.changeset/fifty-badgers-punch.md b/.changeset/fifty-badgers-punch.md new file mode 100644 index 0000000000..5d6c6a8d14 --- /dev/null +++ b/.changeset/fifty-badgers-punch.md @@ -0,0 +1,5 @@ +--- +"@medusajs/workflows-sdk": patch +--- + +fix: hooks auto-generated types to have precise input options diff --git a/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts b/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts index bf50b8a8a9..fc61ab85d0 100644 --- a/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts +++ b/packages/core/workflows-sdk/src/utils/composer/helpers/workflow-response.ts @@ -4,7 +4,10 @@ import { WorkflowData, WorkflowDataProperties } from "../type" /** * Workflow response class encapsulates the return value of a workflow */ -export class WorkflowResponse { +export class WorkflowResponse< + TResult, + const THooks extends readonly unknown[] = [] +> { __type: typeof OrchestrationUtils.SymbolMedusaWorkflowResponse = OrchestrationUtils.SymbolMedusaWorkflowResponse diff --git a/packages/core/workflows-sdk/src/utils/composer/type.ts b/packages/core/workflows-sdk/src/utils/composer/type.ts index 6e2027de09..89c238841f 100644 --- a/packages/core/workflows-sdk/src/utils/composer/type.ts +++ b/packages/core/workflows-sdk/src/utils/composer/type.ts @@ -27,19 +27,24 @@ export type StepFunctionReturnConfig = { type KeysOfUnion = T extends T ? keyof T : never export type HookHandler = (...args: any[]) => void | Promise +type ConvertHookToObject = THook extends Hook + ? { + [K in Name]: ( + invoke: InvokeFn, + compensate?: CompensateFn + ) => void + } + : never + /** * Helper to convert an array of hooks to functions */ -type ConvertHooksToFunctions = { - [K in keyof THooks]: THooks[K] extends Hook - ? { - [Fn in Name]: ( - invoke: InvokeFn, - compensate?: CompensateFn - ) => void - } - : never -}[number] +type ConvertHooksToFunctions = THooks extends [ + infer A, + ...infer R +] + ? ConvertHookToObject & ConvertHooksToFunctions + : {} /** * A step function to be used in a workflow.