@futdevpro/fsm-dynamo 1.15.11 → 1.15.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_specifications/BACKLOG.md +43 -0
- package/build/_modules/state-machine/_models/state-machine-config.interface.d.ts +19 -0
- package/build/_modules/state-machine/_models/state-machine-config.interface.d.ts.map +1 -0
- package/build/_modules/state-machine/_models/state-machine-config.interface.js +3 -0
- package/build/_modules/state-machine/_models/state-machine-config.interface.js.map +1 -0
- package/build/_modules/state-machine/_models/state-machine-event.interface.d.ts +26 -0
- package/build/_modules/state-machine/_models/state-machine-event.interface.d.ts.map +1 -0
- package/build/_modules/state-machine/_models/state-machine-event.interface.js +3 -0
- package/build/_modules/state-machine/_models/state-machine-event.interface.js.map +1 -0
- package/build/_modules/state-machine/_models/state-machine.control-model.d.ts +113 -0
- package/build/_modules/state-machine/_models/state-machine.control-model.d.ts.map +1 -0
- package/build/_modules/state-machine/_models/state-machine.control-model.js +264 -0
- package/build/_modules/state-machine/_models/state-machine.control-model.js.map +1 -0
- package/build/_modules/state-machine/_models/state-transition-result.interface.d.ts +40 -0
- package/build/_modules/state-machine/_models/state-transition-result.interface.d.ts.map +1 -0
- package/build/_modules/state-machine/_models/state-transition-result.interface.js +3 -0
- package/build/_modules/state-machine/_models/state-transition-result.interface.js.map +1 -0
- package/build/_modules/state-machine/_models/state-transition.interface.d.ts +31 -0
- package/build/_modules/state-machine/_models/state-transition.interface.d.ts.map +1 -0
- package/build/_modules/state-machine/_models/state-transition.interface.js +3 -0
- package/build/_modules/state-machine/_models/state-transition.interface.js.map +1 -0
- package/build/_modules/state-machine/index.d.ts +6 -0
- package/build/_modules/state-machine/index.d.ts.map +1 -0
- package/build/_modules/state-machine/index.js +10 -0
- package/build/_modules/state-machine/index.js.map +1 -0
- package/package.json +10 -1
- package/src/_modules/state-machine/_models/state-machine-config.interface.ts +19 -0
- package/src/_modules/state-machine/_models/state-machine-event.interface.ts +25 -0
- package/src/_modules/state-machine/_models/state-machine.control-model.spec.ts +314 -0
- package/src/_modules/state-machine/_models/state-machine.control-model.ts +298 -0
- package/src/_modules/state-machine/_models/state-transition-result.interface.ts +53 -0
- package/src/_modules/state-machine/_models/state-transition.interface.ts +30 -0
- package/src/_modules/state-machine/index.ts +6 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { DyFM_Error } from '../../../_models/control-models/error.control-model';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Failure reason-ok a `DyFM_StateMachineTransition_Result.reason` mezohoz.
|
|
5
|
+
*
|
|
6
|
+
* - `invalid-transition`: nincs olyan transition a config-ban ami a jelenlegi
|
|
7
|
+
* state-bol a kert `to`-ba vezet.
|
|
8
|
+
* - `guard-rejected`: a transition `guard` callback-je `false`-t adott.
|
|
9
|
+
* - `on-leave-failed`: a transition `onLeave` callback-je throw-olt; state NEM valtozott.
|
|
10
|
+
* - `on-enter-failed`: az `onEnter` callback throw-olt az uj state beallitasa utan; state revert-elve a from-ra.
|
|
11
|
+
* - `persist-failed`: a `persist` callback throw-olt; state revert-elve a from-ra.
|
|
12
|
+
*/
|
|
13
|
+
export type DyFM_StateMachineTransition_FailureReason =
|
|
14
|
+
| 'invalid-transition'
|
|
15
|
+
| 'guard-rejected'
|
|
16
|
+
| 'on-leave-failed'
|
|
17
|
+
| 'on-enter-failed'
|
|
18
|
+
| 'persist-failed';
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Sikeres atmenet eredmenye.
|
|
23
|
+
*/
|
|
24
|
+
export interface DyFM_StateMachineTransition_SuccessResult<TState extends string> {
|
|
25
|
+
ok: true;
|
|
26
|
+
from: TState;
|
|
27
|
+
to: TState;
|
|
28
|
+
/** A frissitett state-version szam (>= 1). */
|
|
29
|
+
stateVersion: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Sikertelen atmenet eredmenye.
|
|
35
|
+
*/
|
|
36
|
+
export interface DyFM_StateMachineTransition_FailureResult<TState extends string> {
|
|
37
|
+
ok: false;
|
|
38
|
+
reason: DyFM_StateMachineTransition_FailureReason;
|
|
39
|
+
/** A jelenlegi state amikor a sikertelenseg torent. */
|
|
40
|
+
currentState: TState;
|
|
41
|
+
/** A megkiserelt cel-state. */
|
|
42
|
+
attemptedTo: TState;
|
|
43
|
+
/** Opcionalis hiba ha az atmenet error-ral bukott (pl. on-enter throw, persist throw). */
|
|
44
|
+
error?: DyFM_Error | Error;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Discriminated union — `ok` flag-gel branchol.
|
|
50
|
+
*/
|
|
51
|
+
export type DyFM_StateMachineTransition_Result<TState extends string> =
|
|
52
|
+
| DyFM_StateMachineTransition_SuccessResult<TState>
|
|
53
|
+
| DyFM_StateMachineTransition_FailureResult<TState>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Egyetlen atmenet (transition) leiras a `DyFM_StateMachine` transitionMap-jeben.
|
|
3
|
+
*
|
|
4
|
+
* `from` lehet:
|
|
5
|
+
* - egy konkret state (TState)
|
|
6
|
+
* - tobb state array-je
|
|
7
|
+
* - `'*'` wildcard (barmely jelenlegi state)
|
|
8
|
+
*
|
|
9
|
+
* `guard` opcionalis pre-check: ha visszater `false` (vagy resolved-`false` Promise),
|
|
10
|
+
* az atmenet visszautasitva `'guard-rejected'` reason-nel.
|
|
11
|
+
*
|
|
12
|
+
* `onLeave` opcionalis side-effect ami a state-valtas ELOTT fut. Throw-ja
|
|
13
|
+
* `'on-leave-failed'` reason-t valt ki.
|
|
14
|
+
*
|
|
15
|
+
* `onEnter` opcionalis side-effect ami az uj state beallitasa UTAN, de a
|
|
16
|
+
* `persist` callback elott fut. Throw-ja `'on-enter-failed'` reason-t valt ki
|
|
17
|
+
* — ilyenkor a state visszaall (revert).
|
|
18
|
+
*/
|
|
19
|
+
export interface DyFM_StateTransition<TState extends string, TContext = unknown> {
|
|
20
|
+
/** Forras state(ek). Wildcard `'*'` = barmilyen jelenlegi state. */
|
|
21
|
+
from: TState | TState[] | '*';
|
|
22
|
+
/** Cel state. */
|
|
23
|
+
to: TState;
|
|
24
|
+
/** Optional pre-check; ha `false`-t ad, az atmenet elutasitva. */
|
|
25
|
+
guard?: (ctx?: TContext) => boolean | Promise<boolean>;
|
|
26
|
+
/** Optional side-effect a state-valtas ELOTT. */
|
|
27
|
+
onLeave?: (ctx?: TContext) => Promise<void>;
|
|
28
|
+
/** Optional side-effect a state-valtas UTAN, a `persist` elott. */
|
|
29
|
+
onEnter?: (ctx?: TContext) => Promise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// MODELS
|
|
2
|
+
export * from './_models/state-machine.control-model';
|
|
3
|
+
export * from './_models/state-machine-config.interface';
|
|
4
|
+
export * from './_models/state-machine-event.interface';
|
|
5
|
+
export * from './_models/state-transition.interface';
|
|
6
|
+
export * from './_models/state-transition-result.interface';
|