MetaFor - v0.3.1
    Preparing search index...

    Type Alias ProcessChain<C>

    Chain API для создания процесса с опциональными параметрами title и description. Позволяет удобно и строго типизировано описывать обработчики процессов автомата.

    возвращаемый тип результата action

    const chain = process({
    title: "my_process",
    description: "Описание процесса"
    })
    .action(({ context }) => ({ name: context.name }))
    .success(({ update, data }) => update({ name: data.name }))
    .error(({ update, error }) => update({ name: error.message }))

    chain.getResult() // { action, success, error, title?, description? }
    type ProcessChain<C extends ContextSchema> = {
        action: <Res>(
            fn: (params: { context: ExtractValues<C> }) => Res | Promise<Res>,
        ) => ActionChain<C, Res>;
    }

    Type Parameters

    • C extends ContextSchema

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

    Index

    Properties

    Properties

    action: <Res>(
        fn: (params: { context: ExtractValues<C> }) => Res | Promise<Res>,
    ) => ActionChain<C, Res>

    Добавляет основную функцию процесса.

    Функция может быть как синхронной, так и асинхронной. При выбросе исключения вызывается обработчик error. При успешном выполнении вызывается обработчик success.

    Type declaration

      • <Res>(
            fn: (params: { context: ExtractValues<C> }) => Res | Promise<Res>,
        ): ActionChain<C, Res>
      • Type Parameters

        • Res

        Parameters

        • fn: (params: { context: ExtractValues<C> }) => Res | Promise<Res>

          функция процесса, вызываемая автоматом

        Returns ActionChain<C, Res>

        цепочку для дальнейшего конфигурирования

    // Синхронная функция
    .action(({ context }) => {
    if (!context.email) {
    throw new Error('Email обязателен')
    }
    return { isValid: true }
    })

    // Асинхронная функция
    .action(async ({ context }) => {
    const response = await fetch('/api/data', {
    method: 'POST',
    body: JSON.stringify(context)
    })
    return await response.json()
    })