feat(workflows): Improve typings (#4689)
Just improve some typings for simpler usage
This commit is contained in:
committed by
GitHub
parent
ce3326c5fb
commit
43f34866c8
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user