UNPKG

@grouparoo/core

Version:
31 lines (30 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StateMachine = void 0; const modelName_1 = require("./modelName"); var StateMachine; (function (StateMachine) { async function transition(instance, transitions) { const klass = (0, modelName_1.modelName)(instance); const newState = instance["state"]; const oldState = instance["_previousDataValues"]["state"] ? instance["_previousDataValues"]["state"] : instance.constructor["defaultState"] ? instance.constructor["defaultState"] : "draft"; if (!newState || newState === oldState) return; const transition = findTransition(oldState, newState, transitions); if (!transition) { throw new Error(`cannot transition ${klass} state from ${oldState} to ${newState}`); } for (const i in transition.checks) { const check = transition.checks[i]; await check(instance); } } StateMachine.transition = transition; function findTransition(from, to, transitions) { return transitions.find((t) => t.from === from && t.to === to); } })(StateMachine = exports.StateMachine || (exports.StateMachine = {}));