restate-for-dummies
Version:
Type-safe Restate SDK wrapper with simplified API
27 lines • 1.67 kB
TypeScript
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