@hexworks/cobalt-state
Version:
State machine utility for Cobalt.
27 lines • 1.04 kB
JavaScript
import { EventType } from "..";
import { WaitingForInputData } from "./schema";
import { executeWithContext, newState, state } from "../..";
import { FillingForm } from "./FillingForm";
import { Reporting } from "./Reporting";
export const WaitingForInput = state("WaitingForInput")
.withSchema(WaitingForInputData)
.onEntry(executeWithContext(({ userId, id }, { scheduler }) => scheduler.schedule({
type: "Bump",
data: { userId: userId },
name: `Bump user ${userId}`,
scheduledAt: new Date(),
correlationId: id,
})))
.onEvent(EventType.BumpSent, (transition) => transition
.withCondition(({ bumpCount }) => bumpCount < 3)
.doTransition((state) => newState(WaitingForInput, {
...state,
bumpCount: state.bumpCount + 1,
}))
.otherwise((state) => newState(Reporting, {
...state,
data: "no data",
})))
.onEvent(EventType.UserInitiatedForm, (transition) => transition.transitionTo((state) => newState(FillingForm, state)))
.build();
//# sourceMappingURL=WaitingForInput.js.map