feat(workflows): Improve typings (#4689)

Just improve some typings for simpler usage
This commit is contained in:
Adrien de Peretti
2023-08-04 10:11:44 +02:00
committed by GitHub
parent ce3326c5fb
commit 43f34866c8
9 changed files with 41 additions and 36 deletions
+11 -11
View File
@@ -22,25 +22,23 @@ interface PipelineInput {
compensate?: WorkflowStepMiddlewareInput | WorkflowStepMiddlewareInput[]
}
export type WorkflowArguments = {
export type WorkflowArguments<T = any> = {
container: MedusaContainer
payload: unknown
data: any
data: T
metadata: TransactionMetadata
context: Context | SharedContext
}
export type PipelineHandlerResult<T = undefined> = T extends undefined
? WorkflowStepMiddlewareReturn | WorkflowStepMiddlewareReturn[]
: T
export type PipelineHandler<T extends any = undefined> = (
args: WorkflowArguments
) => PipelineHandlerResult<T> | Promise<PipelineHandlerResult<T>>
) => T extends undefined
? Promise<WorkflowStepMiddlewareReturn | WorkflowStepMiddlewareReturn[]>
: T
export function pipe(
export function pipe<T = undefined>(
input: PipelineInput,
...functions: PipelineHandler[]
...functions: [...PipelineHandler[], PipelineHandler<T>]
): WorkflowStepHandler {
return async ({
container,
@@ -92,8 +90,10 @@ export function pipe(
data[action.alias] = action.value
}
}
} else if (result?.alias) {
data[result.alias] = result.value
} else if ((result as WorkflowStepMiddlewareReturn)?.alias) {
data[(result as WorkflowStepMiddlewareReturn).alias] = (
result as WorkflowStepMiddlewareReturn
).value
}
return result
@@ -56,6 +56,9 @@ export const exportWorkflow = <TData = unknown, TResult = unknown>(
resultFrom: defaultResult,
}
) => {
resultFrom ??= defaultResult
throwOnError ??= true
const transaction = await originalRun(
context?.transactionId ?? ulid(),
input,