MetaFor - v0.3.1
    Preparing search index...

    Type Alias ActionsDeclaration<C, S>

    ActionsDeclaration: (
        process: (
            config?: { title?: string; description?: string },
        ) => ProcessChain<C>,
    ) => Partial<Record<S, ActionChain<C, any>>>

    Тип билдера для декларации набора процессов автомата.

    Позволяет создавать типизированные процессы с удобным API.

    import { test, expect } from "bun:test"
    import { createActionsConfig } from "../index.ts"
    import { types } from "../../context"
    import type { ExtractValues } from "../../context"

    test("Базовый chain API для действий", () => {
    const ctxSchema = {
    name: types.string.required("anon"),
    age: types.number.required(18),
    }
    type CtxSchema = typeof ctxSchema

    const actions = createActionsConfig<CtxSchema, "guest" | "user">((process) => ({
    guest: process()
    .action(({ context }) => ({ name: context.name, age: context.age + 1 }))
    .success(({ update, data }) => {
    expect(data.name, "data.name должен быть строкой").toBeTypeOf("string")
    expect(data.age, "data.age должен быть числом").toBeTypeOf("number")
    update({ name: data.name, age: data.age })
    })
    .error(({ update, error }) => {
    expect(error, "error должен быть определён").toBeDefined()
    update({ name: "error" })
    }),
    user: process().action(({ context }) => ({ name: context.name, age: context.age })),
    }))

    expect(typeof actions.guest?.success, "Метод success должен быть функцией").toBe("function")
    expect(typeof actions.guest?.error, "Метод error должен быть функцией").toBe("function")
    expect(typeof actions.user?.action, "Метод action должен быть функцией").toBe("function")
    })

    Type Parameters

    • C extends ContextSchema

      схема контекста автомата

    • S extends string

      строковые ключи состояний/процессов

    Type declaration

      • (
            process: (
                config?: { title?: string; description?: string },
            ) => ProcessChain<C>,
        ): Partial<Record<S, ActionChain<C, any>>>
      • Parameters

        • process: (config?: { title?: string; description?: string }) => ProcessChain<C>

          фабрика для создания цепочки ProcessChain

        Returns Partial<Record<S, ActionChain<C, any>>>

        объект, где ключи — имена процессов, а значения — цепочки ActionChain