next-safe-action
Version:
Type safe and validated Server Actions in your Next.js project.
212 lines (206 loc) • 7.06 kB
text/typescript
import { Schema, Infer } from "./adapters/types.mjs";
import {
M as MiddlewareFn,
V as ValidationErrors,
F as FlattenedBindArgsValidationErrors,
D as DVES,
S as SafeActionClientOpts,
a as SafeActionClient,
} from "./index.types-Cct3QIs2.mjs";
export {
B as BindArgsValidationErrors,
o as FlattenedValidationErrors,
p as HandleBindArgsValidationErrorsShapeFn,
H as HandleValidationErrorsShapeFn,
l as InferCtx,
m as InferMetadata,
k as InferMiddlewareFnNextCtx,
I as InferSafeActionFnInput,
j as InferSafeActionFnResult,
n as InferServerError,
f as MiddlewareResult,
d as SafeActionFn,
c as SafeActionResult,
i as SafeActionUtils,
e as SafeStateActionFn,
g as ServerCodeFn,
b as ServerErrorFunctionUtils,
h as StateServerCodeFn,
} from "./index.types-Cct3QIs2.mjs";
import "@sinclair/typebox";
import "valibot";
import "yup";
import "zod";
/**
* Creates a standalone middleware function. It accepts a generic object with optional `serverError`, `ctx` and `metadata`
* properties, if you need one or all of them to be typed. The type for each property that is passed as generic is the
* **minimum** shape required to define the middleware function, but it can also be larger than that.
*
* {@link https://next-safe-action.dev/docs/define-actions/middleware#create-standalone-middleware-with-createmiddleware See docs for more information}
*/
declare const createMiddleware: <
BaseData extends {
serverError?: any;
ctx?: object;
metadata?: any;
},
>() => {
define: <NextCtx extends object>(
middlewareFn: MiddlewareFn<
BaseData extends {
serverError: infer SE;
}
? SE
: any,
BaseData extends {
metadata: infer MD;
}
? MD
: any,
BaseData extends {
ctx: infer Ctx extends object;
}
? Ctx
: object,
NextCtx
>
) => MiddlewareFn<
BaseData extends {
serverError: infer SE;
}
? SE
: any,
BaseData extends {
metadata: infer MD;
}
? MD
: any,
BaseData extends {
ctx: infer Ctx extends object;
}
? Ctx
: object,
NextCtx
>;
};
declare const DEFAULT_SERVER_ERROR_MESSAGE = "Something went wrong while executing the operation.";
declare class ActionValidationError<CVE> extends Error {
validationErrors: CVE;
constructor(validationErrors: CVE);
}
/**
* Return custom validation errors to the client from the action's server code function.
* Code declared after this function invocation will not be executed.
* @param schema Input schema
* @param validationErrors Validation errors object
*
* {@link https://next-safe-action.dev/docs/define-actions/validation-errors#returnvalidationerrors See docs for more information}
*/
declare function returnValidationErrors<
S extends Schema | (() => Promise<Schema>),
AS extends Schema = S extends () => Promise<Schema> ? Awaited<ReturnType<S>> : S,
>(schema: S, validationErrors: ValidationErrors<AS>): never;
/**
* Default validation errors format.
* Emulation of `zod`'s [`format`](https://zod.dev/ERROR_HANDLING?id=formatting-errors) function.
*/
declare function formatValidationErrors<VE extends ValidationErrors<any>>(validationErrors: VE): VE;
/**
* Default bind args validation errors format.
* Emulation of `zod`'s [`format`](https://zod.dev/ERROR_HANDLING?id=formatting-errors) function.
*/
declare function formatBindArgsValidationErrors<BAVE extends readonly ValidationErrors<any>[]>(
bindArgsValidationErrors: BAVE
): BAVE;
/**
* Transform default formatted validation errors into flattened structure.
* `formErrors` contains global errors, and `fieldErrors` contains errors for each field,
* one level deep. It discards errors for nested fields.
* Emulation of `zod`'s [`flatten`](https://zod.dev/ERROR_HANDLING?id=flattening-errors) function.
* @param {ValidationErrors} [validationErrors] Validation errors object
*
* {@link https://next-safe-action.dev/docs/define-actions/validation-errors#flattenvalidationerrors-and-flattenbindargsvalidationerrors-utility-functions See docs for more information}
*/
declare function flattenValidationErrors<VE extends ValidationErrors<any>>(
validationErrors: VE
): {
formErrors: string[];
fieldErrors: { [K in keyof Omit<VE, "_errors">]?: string[] | undefined };
};
/**
* Transform default formatted bind arguments validation errors into flattened structure.
* `formErrors` contains global errors, and `fieldErrors` contains errors for each field,
* one level deep. It discards errors for nested fields.
* Emulation of `zod`'s [`flatten`](https://zod.dev/ERROR_HANDLING?id=flattening-errors) function.
* @param {ValidationErrors[]} [bindArgsValidationErrors] Bind arguments validation errors object
*
* {@link https://next-safe-action.dev/docs/define-actions/validation-errors#flattenvalidationerrors-and-flattenbindargsvalidationerrors-utility-functions See docs for more information}
*/
declare function flattenBindArgsValidationErrors<BAVE extends readonly ValidationErrors<any>[]>(
bindArgsValidationErrors: BAVE
): FlattenedBindArgsValidationErrors<BAVE>;
/**
* This error is thrown when an action metadata is invalid, i.e. when there's a mismatch between the
* type of the metadata schema returned from `defineMetadataSchema` and the actual data passed.
*/
declare class ActionMetadataValidationError<MDS extends Schema | undefined> extends Error {
validationErrors: ValidationErrors<MDS>;
constructor(validationErrors: ValidationErrors<MDS>);
}
/**
* This error is thrown when an action's data (output) is invalid, i.e. when there's a mismatch between the
* type of the data schema passed to `dataSchema` method and the actual return of the action.
*/
declare class ActionOutputDataValidationError<DS extends Schema | undefined> extends Error {
validationErrors: ValidationErrors<DS>;
constructor(validationErrors: ValidationErrors<DS>);
}
/**
* Create a new safe action client.
* Note: this client only works with Zod as the validation library.
* @param createOpts Initialization options
*
* {@link https://next-safe-action.dev/docs/define-actions/create-the-client#initialization-options See docs for more information}
*/
declare const createSafeActionClient: <
ODVES extends DVES | undefined = undefined,
ServerError = string,
MetadataSchema extends Schema | undefined = undefined,
>(
createOpts?: SafeActionClientOpts<ServerError, MetadataSchema, ODVES>
) => SafeActionClient<
ServerError,
ODVES,
MetadataSchema,
MetadataSchema extends Schema ? Infer<MetadataSchema> : undefined,
{},
undefined,
undefined,
undefined,
readonly [],
| {
formErrors: string[];
fieldErrors: {};
}
| undefined,
readonly []
>;
export {
ActionMetadataValidationError,
ActionOutputDataValidationError,
ActionValidationError,
DEFAULT_SERVER_ERROR_MESSAGE,
DVES,
FlattenedBindArgsValidationErrors,
MiddlewareFn,
SafeActionClient,
SafeActionClientOpts,
ValidationErrors,
createMiddleware,
createSafeActionClient,
flattenBindArgsValidationErrors,
flattenValidationErrors,
formatBindArgsValidationErrors,
formatValidationErrors,
returnValidationErrors,
};