remix-conform-rpc
Version:
Supercharge your remix/react-router actions and loaders with typesafe param and query parsing using conform and zod
29 lines (28 loc) • 1.21 kB
TypeScript
import type { Submission } from "@conform-to/dom";
import type { ActionFunction } from "react-router";
import type { ZodSchema } from "zod";
import type { SuccessResponseData } from "../hooks/use-action.js";
type RespondWithErrorOptions = {
code?: number;
message?: string;
type?: "error" | "invalid_submission";
};
declare function respondWithError<TResponse>(responseData: TResponse, options?: RespondWithErrorOptions): ErrorResponse<TResponse> | InvalidSubmissionResponse<ReturnType<Submission<TResponse>["reply"]>>;
type ErrorResponse<TResult> = {
status: "error";
type: "error";
result: TResult;
code: number;
message?: string;
};
type InvalidSubmissionResponse<TResponse> = {
status: "error";
type: "invalid_submission";
result: TResponse;
code: number;
message?: string;
};
declare function isErrorResponse<TData>(response: any): response is ErrorResponse<TData>;
declare function isSuccessResponse<TAction extends ActionFunction, TSchema extends ZodSchema>(response: any): response is SuccessResponseData<TAction, TSchema>;
export { respondWithError, isErrorResponse, isSuccessResponse };
export type { ErrorResponse, InvalidSubmissionResponse };