Skip to Content
👋 Добро пожаловать в документацию lite-fsm!
Пакеты@lite-fsm/core

@lite-fsm/core

@lite-fsm/core содержит runtime для описания машин, MachineManager, effects, actor templates, snapshot/hydration и публичные типы. Пакет не зависит от React и подходит для браузера, Node.js, worker-ов и тестов.

Установка

npm install @lite-fsm/core

Для reducer-ов в стиле Immer обычно добавляют middleware-пакет:

npm install @lite-fsm/core @lite-fsm/middleware immer

Entry point

import { MachineManager, createEffect, createMachine, defineMachine } from "@lite-fsm/core";

Основной импорт @lite-fsm/core экспортирует:

ЭкспортНазначение
createMachineТипизированная фабрика полного machine config
createConfigТипизированная фабрика графа переходов
createReducerТипизированная фабрика reducer-а
createEffectОбёртка effect с every или latest семантикой
createActorMetaЗамороженный ActorMeta для replacement/time-travel сценариев
MachineManagerRuntime-store для нескольких машин
MachineStandalone pure machine
defineMachineStandalone-фабрика с зависимостями
LiteFsmErrorОшибка runtime с кодом
typesFSMEvent, MachineConfig, MachinesState, MachineEvents, snapshot/actor/middleware types

Минимальный пример

Reducer в примере написан в стиле Immer: он мутирует draft state и предполагает, что MachineManager создан с immerMiddleware. Без middleware reducer должен вернуть новый объект { state, context }.

import { MachineManager, createMachine } from "@lite-fsm/core"; import { immerMiddleware } from "@lite-fsm/middleware/immer"; const toggle = createMachine({ config: { OFF: { TOGGLE: "ON" }, ON: { TOGGLE: "OFF" }, }, initialState: "OFF", initialContext: { count: 0 }, reducer: (slice, action, { nextState }) => { slice.state = nextState; if (action.type === "TOGGLE") { slice.context.count += 1; } }, }); const manager = MachineManager({ toggle }, { middleware: [immerMiddleware] }); manager.transition({ type: "TOGGLE" }); manager.getState().toggle.state; // "ON"

Что входит в core

  • Граф переходов config с явными targets и wildcard "*".
  • Reducer pipeline: default merge, custom reducer, replaceReducer.
  • Effects: state effects, wildcard effects, condition, nested transition.
  • Actor templates: spawn, routing через meta, groups, terminal states.
  • Snapshot: dehydrate, hydrate, предварительный расчёт состояния и обработчики версий схемы.
  • Middleware API: getState, transition, replaceReducer, onTransition, condition.

Связанные разделы

Last updated on