UNPKG

restate-for-dummies

Version:

Type-safe Restate SDK wrapper with simplified API

27 lines 1.67 kB
import type { WorkflowDefinition } from "@restatedev/restate-sdk"; import * as restate from "@restatedev/restate-sdk"; import type { BaseClientMethods, TransformWorkflowHandler, TransformWorkflowSharedHandler, TypedClear, TypedGet, TypedRun, TypedSet } from "./common-types"; export type WorkflowHandlerContext<TState> = { clearState: TypedClear<TState>; ctx: restate.WorkflowContext; getState: TypedGet<TState>; runStep: TypedRun; setState: TypedSet<TState>; } & BaseClientMethods; export type WorkflowSharedHandlerContext<TState> = { ctx: restate.WorkflowSharedContext; getState: TypedGet<TState>; runStep: TypedRun; } & BaseClientMethods; type TransformRunHandler<TState, THandler> = TransformWorkflowHandler<WorkflowHandlerContext<TState>, THandler>; type TransformSharedHandlers<TState, THandlers> = { [K in keyof THandlers]: TransformWorkflowSharedHandler<WorkflowSharedHandlerContext<TState>, THandlers[K]>; }; type CombineHandlers<TRunHandler, TSharedHandlers> = { run: TRunHandler; } & TSharedHandlers; export declare function createRestateWorkflow<TState>(name: string, SerdeClass: new <T>() => restate.Serde<T>): <THandlers extends { [K in Exclude<keyof THandlers, "run">]: (context: WorkflowSharedHandlerContext<TState>, ...args: any[]) => Promise<any>; } & { run: (context: WorkflowHandlerContext<TState>, ...args: any[]) => Promise<any>; }>(inputHandlers: THandlers) => WorkflowDefinition<string, CombineHandlers<TransformRunHandler<TState, THandlers["run"]>, TransformSharedHandlers<TState, Omit<THandlers, "run">>>>; export { createRestateWorkflow as typedWorkflow }; //# sourceMappingURL=typed-workflow.d.ts.map