MetaFor - v0.3.1
    Preparing search index...

    Type Alias ActionChain<C, Res>

    Цепочка для декларации action с типобезопасной поддержкой success и error. Позволяет удобно и строго типизировано описывать обработчики процессов автомата.

    const chain = action(({ context }) => ({ name: context.name }))
    .success(({ update, data }) => update({ name: data.name }))
    .error(({ update, error }) => update({ name: error.message }))

    chain.getResult() // { action, success, error }
    type ActionChain<C extends ContextSchema, Res> = {
        action: (params: { context: ExtractValues<C> }) => Res | Promise<Res>;
        success: (
            handler: (
                params: {
                    update: (values: Partial<ExtractValues<C>>) => void;
                    data: Res;
                },
            ) => void,
        ) => ActionChain<C, Res>;
        error: (
            handler: (
                params: {
                    update: (values: Partial<ExtractValues<C>>) => void;
                    error: Error;
                },
            ) => void,
        ) => ActionChain<C, Res>;
        getResult: () => Process<C, Res>;
    }

    Type Parameters

    • C extends ContextSchema

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

    • Res

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

    Index

    Properties

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

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

    Получает текущий контекст и должна вернуть результат или выбросить исключение.

    Type declaration

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

        • params: { context: ExtractValues<C> }

          объект с текущим контекстом

        Returns Res | Promise<Res>

        результат процесса (может быть промисом)

    action: ({ context }) => {
    // Доступ к контексту
    console.log(context.email, context.password)

    // Возврат результата
    return { userId: 123, token: "abc" }
    }
    success: (
        handler: (
            params: {
                update: (values: Partial<ExtractValues<C>>) => void;
                data: Res;
            },
        ) => void,
    ) => ActionChain<C, Res>

    Добавляет обработчик успешного завершения процесса.

    Вызывается когда action завершился успешно (не выбросил исключение). Получает функцию update для изменения контекста и данные от action.

    Type declaration

      • (
            handler: (
                params: {
                    update: (values: Partial<ExtractValues<C>>) => void;
                    data: Res;
                },
            ) => void,
        ): ActionChain<C, Res>
      • Parameters

        • handler: (
              params: {
                  update: (values: Partial<ExtractValues<C>>) => void;
                  data: Res;
              },
          ) => void

          функция, вызываемая при успехе (получает update и data)

        Returns ActionChain<C, Res>

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

    .success(({ update, data }) => {
    // Обновляем контекст данными от action
    update({
    userId: data.userId,
    token: data.token,
    isAuthenticated: true,
    error: ""
    })
    })
    error: (
        handler: (
            params: {
                update: (values: Partial<ExtractValues<C>>) => void;
                error: Error;
            },
        ) => void,
    ) => ActionChain<C, Res>

    Добавляет обработчик ошибки выполнения процесса.

    Вызывается когда action выбросил исключение. Получает функцию update для изменения контекста и объект ошибки.

    Type declaration

      • (
            handler: (
                params: {
                    update: (values: Partial<ExtractValues<C>>) => void;
                    error: Error;
                },
            ) => void,
        ): ActionChain<C, Res>
      • Parameters

        • handler: (
              params: {
                  update: (values: Partial<ExtractValues<C>>) => void;
                  error: Error;
              },
          ) => void

          функция, вызываемая при ошибке (получает update и error типа Error)

        Returns ActionChain<C, Res>

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

    .error(({ update, error }) => {
    // Обрабатываем ошибку
    update({
    error: error.message,
    isAuthenticated: false,
    isLoading: false
    })
    })
    getResult: () => Process<C, Res>

    Возвращает итоговый объект конфигурации процесса для автомата.

    Содержит все обработчики и метаданные процесса.

    Type declaration

      • (): Process<C, Res>
      • Returns Process<C, Res>

        объект с action, success, error, title и description (если заданы)

    const processConfig = chain.getResult()
    // {
    // action: Function,
    // success: Function,
    // error: Function,
    // title: "Авторизация",
    // description: "Процесс входа пользователя"
    // }