diff --git a/packages/next-safe-action/src/action-builder.ts b/packages/next-safe-action/src/action-builder.ts index df4881d..fc55bbd 100644 --- a/packages/next-safe-action/src/action-builder.ts +++ b/packages/next-safe-action/src/action-builder.ts @@ -21,7 +21,6 @@ import { isRedirectError, winningBoolean, } from "./utils"; -import type { MaybePromise } from "./utils.types"; import { ActionMetadataValidationError, ActionOutputDataValidationError, @@ -295,11 +294,11 @@ export function actionBuilder< // Execute middleware chain + action function. await executeMiddlewareStack(); - const callbacksToExecute: MaybePromise[] = []; + const callbackPromises: (Promise | undefined)[] = []; // If an internal framework error occurred, throw it, so it will be processed by Next.js. if (frameworkError) { - callbacksToExecute.push( + callbackPromises.push( utils?.onSuccess?.({ data: undefined, metadata: args.metadata, @@ -314,7 +313,7 @@ export function actionBuilder< }) ); - callbacksToExecute.push( + callbackPromises.push( utils?.onSettled?.({ metadata: args.metadata, ctx: currentCtx as Ctx, @@ -327,7 +326,7 @@ export function actionBuilder< }) ); - await Promise.all(callbacksToExecute); + await Promise.all(callbackPromises); throw frameworkError; } @@ -361,7 +360,7 @@ export function actionBuilder< actionResult.data = middlewareResult.data as Data; } - callbacksToExecute.push( + callbackPromises.push( utils?.onSuccess?.({ metadata: args.metadata, ctx: currentCtx as Ctx, @@ -376,7 +375,7 @@ export function actionBuilder< }) ); } else { - callbacksToExecute.push( + callbackPromises.push( utils?.onError?.({ metadata: args.metadata, ctx: currentCtx as Ctx, @@ -388,7 +387,7 @@ export function actionBuilder< } // onSettled, if provided, is always executed. - callbacksToExecute.push( + callbackPromises.push( utils?.onSettled?.({ metadata: args.metadata, ctx: currentCtx as Ctx, @@ -401,7 +400,7 @@ export function actionBuilder< }) ); - await Promise.all(callbacksToExecute); + await Promise.all(callbackPromises); return actionResult; }; diff --git a/packages/next-safe-action/src/index.ts b/packages/next-safe-action/src/index.ts index bfd181b..0ff1a1a 100644 --- a/packages/next-safe-action/src/index.ts +++ b/packages/next-safe-action/src/index.ts @@ -60,11 +60,13 @@ export const createSafeActionClient = < metadata: undefined as MetadataSchema extends Schema ? Infer : undefined, defaultValidationErrorsShape: (createOpts?.defaultValidationErrorsShape ?? "formatted") as ODVES, throwValidationErrors: Boolean(createOpts?.throwValidationErrors), - handleValidationErrorsShape: - createOpts?.defaultValidationErrorsShape === "flattened" ? flattenValidationErrors : formatValidationErrors, - handleBindArgsValidationErrorsShape: + handleValidationErrorsShape: async (ve) => createOpts?.defaultValidationErrorsShape === "flattened" - ? flattenBindArgsValidationErrors - : formatBindArgsValidationErrors, + ? flattenValidationErrors(ve) + : formatValidationErrors(ve), + handleBindArgsValidationErrorsShape: async (ve) => + createOpts?.defaultValidationErrorsShape === "flattened" + ? flattenBindArgsValidationErrors(ve) + : formatBindArgsValidationErrors(ve), }); }; diff --git a/packages/next-safe-action/src/index.types.ts b/packages/next-safe-action/src/index.types.ts index 2c14927..99d8eda 100644 --- a/packages/next-safe-action/src/index.types.ts +++ b/packages/next-safe-action/src/index.types.ts @@ -176,14 +176,14 @@ export type SafeActionUtils< hasRedirected: boolean; hasNotFound: boolean; hasForbidden: boolean; - }) => MaybePromise; + }) => Promise; onError?: (args: { error: Prettify, "data">>; metadata: MD; ctx?: Prettify; clientInput: S extends Schema ? InferIn : undefined; bindArgsClientInputs: InferInArray; - }) => MaybePromise; + }) => Promise; onSettled?: (args: { result: Prettify>; metadata: MD; @@ -193,7 +193,7 @@ export type SafeActionUtils< hasRedirected: boolean; hasNotFound: boolean; hasForbidden: boolean; - }) => MaybePromise; + }) => Promise; }; /** diff --git a/packages/next-safe-action/src/validation-errors.types.ts b/packages/next-safe-action/src/validation-errors.types.ts index 06c7505..5463c0b 100644 --- a/packages/next-safe-action/src/validation-errors.types.ts +++ b/packages/next-safe-action/src/validation-errors.types.ts @@ -63,7 +63,7 @@ export type HandleValidationErrorsShapeFn< metadata: MD; ctx: Prettify; } -) => CVE | Promise; +) => Promise; /** * Type of the function used to format bind arguments validation errors. @@ -82,4 +82,4 @@ export type HandleBindArgsValidationErrorsShapeFn< metadata: MD; ctx: Prettify; } -) => CBAVE | Promise; +) => Promise;