Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://kubo-47e69177.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

defineAction

defineAction valide input/output a l’execution tout en conservant le typage TypeScript.

Signature

packages/core/src/defineAction.ts
export function defineAction<TInput, TOutput, TContext = unknown>(
  options: DefineActionOptions<TInput, TOutput, TContext>
): DefinedAction<TInput, TOutput>

Options

OptionTypeObligatoireNotes
inputZodType<TInput>OuiValidation runtime de l’input
outputZodType<TOutput>NonValidation runtime de l’output
namestringNonUtilise par le logger
tagsreadonly string[]NonPasse a revalidateTags
beforeAction(args) => void | Promise<void>NonExecute avant handler
afterAction(args) => TOutput | void | Promise<TOutput | void>NonExecute apres handler
handler({ input, ctx }) => Promise<TOutput>OuiImplementation principale

Exemple

app/actions.ts
import { defineAction } from "@zapaction/core";
import { z } from "zod";

export const updateTodo = defineAction({
  name: "updateTodo",
  input: z.object({ id: z.string(), done: z.boolean() }),
  output: z.object({ id: z.string(), done: z.boolean() }),
  tags: ["todos"],
  handler: async ({ input }) => ({
    id: input.id,
    done: input.done
  })
});