zod-server-actions
Version:
Simple utility library to create server actions in Next.js
39 lines (38 loc) • 1.27 kB
TypeScript
import { z, ZodTypeAny } from "zod";
import { ActionHandler, Config } from "../core";
import type { Context } from "../core/context";
import { ZodValidator } from "../core/validators";
export type HandlerFn<T extends ZodTypeAny, C extends object, R> = (input: z.infer<T>, context: ContextObject<C>) => Promise<R>;
export type RetryProps = {
maximumAttempts: number;
delay: number;
};
export type ResponseSuccess<T> = {
data: T;
error: null;
success: true;
};
export type ResponseError<T = any> = {
data: null;
error: T;
success: false;
};
type ContextObject<C extends object> = Omit<Context<C>, "executeContextFn">;
export type QueryFn<R, C extends object> = (ctx: ContextObject<C>) => Promise<R>;
export type ActionResponse<T> = Promise<ResponseSuccess<T> | ResponseError>;
export type CallbackFn<S> = (state: S, newItem: S) => S;
export type Handler = ReturnType<ActionHandler<any>["handler"]>;
export type ActionRoutes = {
[x: string]: Handler;
};
export type CreateHandlerProps<H, C extends object> = {
cb: H;
config?: Config<C>;
validator: ZodValidator;
};
export type MakeRetries<C extends object, I extends ZodTypeAny, R> = {
config: Config<C>;
cb: HandlerFn<I, C, R>;
input: z.infer<I>;
};
export {};