restate-for-dummies
Version:
Type-safe Restate SDK wrapper with simplified API
39 lines • 3.61 kB
TypeScript
import type { Serde, ServiceDefinition, VirtualObjectDefinition, WorkflowDefinition } from "@restatedev/restate-sdk";
import type { IngressClient, IngressSendClient, IngressWorkflowClient } from "@restatedev/restate-sdk-clients";
import type { EventSourcedState } from "./typed-event-object";
export declare class RestateClient {
private SerdeClass;
private url;
constructor({ SerdeClass, restateUrl, }?: {
SerdeClass?: new <T>() => Serde<T>;
restateUrl?: string;
});
createObject: <T>(name: string) => <THandlers extends {
[key: string]: (context: import("./typed-object").ObjectHandlerContext<T>, ...args: any[]) => Promise<any>;
}>(handlers: THandlers) => VirtualObjectDefinition<string, { [K in keyof THandlers]: import("./common-types").TransformObjectHandler<import("./typed-object").ObjectHandlerContext<T>, THandlers[K]>; }>;
createService: (name: string) => <THandlers extends {
[key: string]: (context: import("./typed-service").ServiceHandlerContext, ...args: any[]) => Promise<any>;
}>(handlers: THandlers) => ServiceDefinition<string, { [K in keyof THandlers]: import("./common-types").TransformServiceHandler<import("./typed-service").ServiceHandlerContext, THandlers[K]>; }>;
createWorkflow: <T>(name: string) => <THandlers extends { [K in Exclude<keyof THandlers, "run">]: (context: import("./typed-workflow").WorkflowSharedHandlerContext<T>, ...args: any[]) => Promise<any>; } & {
run: (context: import("./typed-workflow").WorkflowHandlerContext<T>, ...args: any[]) => Promise<any>;
}>(inputHandlers: THandlers) => WorkflowDefinition<string, {
run: import("./common-types").TransformWorkflowHandler<import("./typed-workflow").WorkflowHandlerContext<T>, THandlers["run"]>;
} & (Omit<THandlers, "run"> extends infer T_1 ? { [K_1 in keyof T_1]: import("./common-types").TransformWorkflowSharedHandler<import("./typed-workflow").WorkflowSharedHandlerContext<T>, Omit<THandlers, "run">[K_1]>; } : never)>;
createEventHandler: <T extends Record<string, any>, U extends Record<string, any> = {}>(name: string) => <THandlers extends { [K in keyof T]: (context: {
clearState: import("./common-types").TypedClear<EventSourcedState<T> & Omit<U, "events">>;
ctx: import("@restatedev/restate-sdk").ObjectContext;
getState: import("./common-types").TypedGet<EventSourcedState<T> & Omit<U, "events">>;
runStep: import("./common-types").TypedRun;
setState: import("./common-types").TypedSet<EventSourcedState<T> & Omit<U, "events">>;
} & import("./common-types").BaseClientMethods & {
eventUuid: string;
eventTimestamp: number;
}, data: T[K]) => Promise<any>; }>(handlers: THandlers) => VirtualObjectDefinition<string, { [K_1 in keyof THandlers]: THandlers[K_1] extends (context: any, data: infer D) => Promise<infer R> ? (ctx: import("@restatedev/restate-sdk").ObjectContext, data: D) => Promise<R> : never; }>;
serviceClient: <T>(service: ServiceDefinition<string, T>) => IngressClient<T>;
serviceSendClient: <T>(service: ServiceDefinition<string, T>) => IngressSendClient<T>;
objectClient: <T>(object: VirtualObjectDefinition<string, T>, key: string) => IngressClient<T>;
objectSendClient: <T>(object: VirtualObjectDefinition<string, T>, key: string) => IngressSendClient<T>;
workflowClient: <T>(workflow: WorkflowDefinition<string, T>, key: string) => IngressWorkflowClient<T>;
workflowSendClient: <T>(workflow: WorkflowDefinition<string, T>, key: string) => IngressWorkflowClient<T>;
}
//# sourceMappingURL=factory.d.ts.map