UNPKG

next-safe-action-query

Version:

Type-safe server actions with built-in validation for Next.js

28 lines 2 kB
import { type QueryKey, type UseQueryOptions, useQuery } from "@tanstack/react-query"; import type { InferSafeActionFnInput, InferSafeActionFnResult, SafeActionFn } from "next-safe-action"; import type { HookSafeActionFn } from "next-safe-action/hooks"; export declare class SafeActionError extends Error { readonly type: "server" | "validation" | "network"; readonly details?: unknown | undefined; constructor(message: string, type: "server" | "validation" | "network", details?: unknown | undefined); } export interface UseSafeActionQueryOptions<TData, TInput> extends Omit<UseQueryOptions<TData, SafeActionError>, "queryKey" | "queryFn"> { actionInput: TInput; onServerError?: (error: Error) => void; onValidationErrors?: (errors: string[]) => void; onNetworkError?: (error: Error) => void; onSuccess?: (data: TData) => void; onError?: (error: Error) => void; } export type SafeActionQueryOptionsWithOutInput<TAction extends SafeActionFn<any, any, any, any, any>> = Omit<UseSafeActionQueryOptions<InferSafeActionFnResult<TAction>["data"], InferSafeActionFnInput<TAction>["clientInput"]>, "actionInput">; /** * Generic hook for using Next Safe Actions with TanStack Query * Properly infers types from the safe action function * Supports actions with or without bind arguments */ export declare function useSafeActionQuery<TAction extends HookSafeActionFn<any, any, any, TData>, TData = InferSafeActionFnResult<TAction>["data"], TInput = InferSafeActionFnInput<TAction>["clientInput"]>(queryKey: QueryKey, action: TAction, options: UseSafeActionQueryOptions<TData, TInput>): SafeActionQueryResult<TData>; export type SafeActionQueryResult<TData> = ReturnType<typeof useQuery<TData, SafeActionError>>; export type { QueryKey } from "@tanstack/react-query"; export type { InferSafeActionFnInput, InferSafeActionFnResult, SafeActionFn, } from "next-safe-action"; export type { HookSafeActionFn } from "next-safe-action/hooks"; //# sourceMappingURL=index.d.ts.map