remix-conform-rpc
Version:
Supercharge your remix/react-router actions and loaders with typesafe param and query parsing using conform and zod
17 lines (16 loc) • 1.21 kB
TypeScript
import { ZodSchema } from "zod";
import type { WithParams } from "../utils/with-params.js";
import type { AppLoadContext, LoaderFunctionArgs } from "react-router";
type LoaderArguments<TParamSchema extends ZodSchema | undefined, TQuerySchema extends ZodSchema | undefined> = WithParams<TParamSchema, TQuerySchema, {
request: LoaderFunctionArgs["request"];
context: AppLoadContext;
}>;
interface SetupLoaderArgs<TParamSchema extends ZodSchema | undefined, TQuerySchema extends ZodSchema | undefined, TResult, TMiddlewareResult> {
loaderArgs: LoaderFunctionArgs;
paramSchema?: TParamSchema;
querySchema?: TQuerySchema;
load: (args: LoaderArguments<TParamSchema, TQuerySchema> & (TMiddlewareResult extends undefined ? {} : TMiddlewareResult)) => Promise<TResult>;
middleware?: (args: LoaderArguments<TParamSchema, TQuerySchema>) => Promise<TMiddlewareResult>;
}
declare function setupLoader<TParamSchema extends ZodSchema | undefined, TQuerySchema extends ZodSchema | undefined, TResult, TMiddlewareResult>({ loaderArgs, querySchema, load, paramSchema, middleware }: SetupLoaderArgs<TParamSchema, TQuerySchema, TResult, TMiddlewareResult>): Promise<TResult>;
export { setupLoader };