@vsirotin/ts-stop 1.13.1 → 2.4.1
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/ai/skills/sfsm-compare-json-uml-diagram/SKILL.md +62 -0
- package/ai/skills/sfsm-json-to-uml-diagram/SKILL.md +50 -0
- package/ai/skills/sfsm-uml-diagram-to-json/SKILL.md +49 -0
- package/lib/esm/sfsm/CommandReceiver.js +17 -0
- package/lib/esm/sfsm/ControllerHub.js +82 -0
- package/lib/esm/sfsm/FaResolver.js +24 -3
- package/lib/esm/sfsm/Sfsm.js +48 -7
- package/lib/esm/sfsm/SignalSender.js +27 -0
- package/lib/esm/sfsm/index.js +3 -1
- package/lib/sfsm/CommandReceiver.d.ts +23 -0
- package/lib/sfsm/CommandReceiver.d.ts.map +1 -0
- package/lib/sfsm/CommandReceiver.js +22 -0
- package/lib/sfsm/CommandReceiver.js.map +1 -0
- package/lib/sfsm/ControllerHub.d.ts +56 -0
- package/lib/sfsm/ControllerHub.d.ts.map +1 -0
- package/lib/sfsm/ControllerHub.js +87 -0
- package/lib/sfsm/ControllerHub.js.map +1 -0
- package/lib/sfsm/FaResolver.d.ts +14 -0
- package/lib/sfsm/FaResolver.d.ts.map +1 -1
- package/lib/sfsm/FaResolver.js +24 -3
- package/lib/sfsm/FaResolver.js.map +1 -1
- package/lib/sfsm/Sfsm.d.ts +26 -0
- package/lib/sfsm/Sfsm.d.ts.map +1 -1
- package/lib/sfsm/Sfsm.js +48 -7
- package/lib/sfsm/Sfsm.js.map +1 -1
- package/lib/sfsm/SignalSender.d.ts +24 -0
- package/lib/sfsm/SignalSender.d.ts.map +1 -0
- package/lib/sfsm/SignalSender.js +32 -0
- package/lib/sfsm/SignalSender.js.map +1 -0
- package/lib/sfsm/index.d.ts +3 -1
- package/lib/sfsm/index.d.ts.map +1 -1
- package/lib/sfsm/index.js +7 -3
- package/lib/sfsm/index.js.map +1 -1
- package/lib/sfsm/interfaces.d.ts +1 -1
- package/lib/sfsm/types.d.ts +21 -0
- package/lib/sfsm/types.d.ts.map +1 -1
- package/package.json +9 -8
- package/scripts/compare-compact-jsons.js +146 -0
- package/scripts/drawio-to-json.js +149 -0
- package/scripts/json-to-drawio-old.js +311 -0
- package/scripts/json-to-drawio.js +309 -0
- package/tutorial/01-finite-state-machine.md +223 -0
- package/tutorial/02-stacked-finite-state-machine.md +32 -0
- package/tutorial/03-advanced-themes.md +110 -0
- package/tutorial/04-tools.md +164 -0
- package/tutorial/images/Turnstile-img.png +0 -0
- package/tutorial/images/TurnstileBaseFA.png +0 -0
- package/LICENSE +0 -201
- package/LICENSE-COMMERCIAL.md +0 -41
- package/README.md +0 -19
- package/lib/DefaultState.d.ts +0 -9
- package/lib/DefaultState.d.ts.map +0 -1
- package/lib/DefaultState.js +0 -15
- package/lib/DefaultState.js.map +0 -1
- package/lib/FiniteStateMachine.d.ts +0 -227
- package/lib/FiniteStateMachine.d.ts.map +0 -1
- package/lib/FiniteStateMachine.js +0 -410
- package/lib/FiniteStateMachine.js.map +0 -1
- package/lib/IStateWithActions.d.ts +0 -18
- package/lib/IStateWithActions.d.ts.map +0 -1
- package/lib/IStateWithActions.js +0 -3
- package/lib/IStateWithActions.js.map +0 -1
- package/lib/IStateWithOutputSignal.d.ts +0 -4
- package/lib/IStateWithOutputSignal.d.ts.map +0 -1
- package/lib/IStateWithOutputSignal.js +0 -3
- package/lib/IStateWithOutputSignal.js.map +0 -1
- package/lib/MatrixBasedStateMachine.d.ts +0 -108
- package/lib/MatrixBasedStateMachine.d.ts.map +0 -1
- package/lib/MatrixBasedStateMachine.js +0 -132
- package/lib/MatrixBasedStateMachine.js.map +0 -1
- package/lib/TransitionMatrix.d.ts +0 -61
- package/lib/TransitionMatrix.d.ts.map +0 -1
- package/lib/TransitionMatrix.js +0 -104
- package/lib/TransitionMatrix.js.map +0 -1
- package/lib/esm/DefaultState.js +0 -10
- package/lib/esm/FiniteStateMachine.js +0 -405
- package/lib/esm/IStateWithActions.js +0 -1
- package/lib/esm/IStateWithOutputSignal.js +0 -1
- package/lib/esm/MatrixBasedStateMachine.js +0 -127
- package/lib/esm/TransitionMatrix.js +0 -98
- package/lib/esm/fa/DefaultState.js +0 -10
- package/lib/esm/fa/FiniteStateMachine.js +0 -405
- package/lib/esm/fa/IStateWithActions.js +0 -1
- package/lib/esm/fa/IStateWithOutputSignal.js +0 -1
- package/lib/esm/fa/MatrixBasedStateMachine.js +0 -127
- package/lib/esm/fa/TransitionMatrix.js +0 -98
- package/lib/esm/index.js +0 -9
- package/lib/esm/sfsm/ExternalWorldHub.js +0 -80
- package/lib/esm/sfsm/index.browser.js +0 -5
- package/lib/fa/DefaultState.d.ts +0 -9
- package/lib/fa/DefaultState.d.ts.map +0 -1
- package/lib/fa/DefaultState.js +0 -15
- package/lib/fa/DefaultState.js.map +0 -1
- package/lib/fa/FiniteStateMachine.d.ts +0 -227
- package/lib/fa/FiniteStateMachine.d.ts.map +0 -1
- package/lib/fa/FiniteStateMachine.js +0 -410
- package/lib/fa/FiniteStateMachine.js.map +0 -1
- package/lib/fa/IStateWithActions.d.ts +0 -18
- package/lib/fa/IStateWithActions.d.ts.map +0 -1
- package/lib/fa/IStateWithActions.js +0 -3
- package/lib/fa/IStateWithActions.js.map +0 -1
- package/lib/fa/IStateWithOutputSignal.d.ts +0 -4
- package/lib/fa/IStateWithOutputSignal.d.ts.map +0 -1
- package/lib/fa/IStateWithOutputSignal.js +0 -3
- package/lib/fa/IStateWithOutputSignal.js.map +0 -1
- package/lib/fa/MatrixBasedStateMachine.d.ts +0 -108
- package/lib/fa/MatrixBasedStateMachine.d.ts.map +0 -1
- package/lib/fa/MatrixBasedStateMachine.js +0 -132
- package/lib/fa/MatrixBasedStateMachine.js.map +0 -1
- package/lib/fa/TransitionMatrix.d.ts +0 -61
- package/lib/fa/TransitionMatrix.d.ts.map +0 -1
- package/lib/fa/TransitionMatrix.js +0 -104
- package/lib/fa/TransitionMatrix.js.map +0 -1
- package/lib/index.d.ts +0 -10
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -26
- package/lib/index.js.map +0 -1
- package/lib/sfsm/ExternalWorldHub.d.ts +0 -52
- package/lib/sfsm/ExternalWorldHub.d.ts.map +0 -1
- package/lib/sfsm/ExternalWorldHub.js +0 -85
- package/lib/sfsm/ExternalWorldHub.js.map +0 -1
- package/lib/sfsm/index.browser.d.ts +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControllerHub.js","sourceRoot":"","sources":["../../src/sfsm/ControllerHub.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,aAAa;IAA1B;QAEY,kBAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;QACnD,kBAAa,GAAmB,EAAE,CAAC;IA+D/C,CAAC;IA7DG;;;;OAIG;IACH,oBAAoB,CAAC,MAAoB;QACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,uBAAuB,CAAC,QAAyB;QAC7C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,yBAAyB,CAAC,CAAC;YAC7E,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAU;QAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,uFAAuF;IACvF,cAAc,CAAC,OAAe,EAAE,IAAc;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,KAAK,CACX,sDAAsD,OAAO,KAAK;gBAClE,yBAAyB,UAAU,GAAG,CACzC,CAAC;QACN,CAAC;QACD,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,gGAAgG;IAChG,qBAAqB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,6FAA6F;IAC7F,oBAAoB;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;CACJ;AAlED,sCAkEC"}
|
package/lib/sfsm/FaResolver.d.ts
CHANGED
|
@@ -8,6 +8,14 @@ export interface ResolvedFa {
|
|
|
8
8
|
/** Keys of states that are themselves sub-FAs (have their own ts list). */
|
|
9
9
|
subFaNames: Set<string>;
|
|
10
10
|
node: FaNode;
|
|
11
|
+
/**
|
|
12
|
+
* The literal entry-state name actually used by this FA's own transitions:
|
|
13
|
+
* either the bare `"I"` (default convention), or a namespaced `"<FaName>.I"`
|
|
14
|
+
* (recommended for large stacked SFSMs — see Tutorial.md §8.1). Auto-detected
|
|
15
|
+
* by scanning this FA's transitions for a from-state equal to `"I"` or ending
|
|
16
|
+
* in `".I"`; falls back to `"I"` if none is found.
|
|
17
|
+
*/
|
|
18
|
+
entryState: string;
|
|
11
19
|
}
|
|
12
20
|
/**
|
|
13
21
|
* Parses a raw FaDefinition and builds a flat index of all FAs by name.
|
|
@@ -33,5 +41,11 @@ export declare class FaResolver {
|
|
|
33
41
|
private indexNode;
|
|
34
42
|
/** A state value is a sub-FA if it has a "ts" array property. */
|
|
35
43
|
private isSubFa;
|
|
44
|
+
/**
|
|
45
|
+
* Auto-detects the literal entry-state name used by a FA's own transitions:
|
|
46
|
+
* the bare `"I"`, or a namespaced `"<FaName>.I"` (e.g. `"TS.I"`). Falls back
|
|
47
|
+
* to `"I"` if the FA has no transition whose from-state matches either form.
|
|
48
|
+
*/
|
|
49
|
+
private resolveEntryState;
|
|
36
50
|
}
|
|
37
51
|
//# sourceMappingURL=FaResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FaResolver.d.ts","sourceRoot":"","sources":["../../src/sfsm/FaResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"FaResolver.d.ts","sourceRoot":"","sources":["../../src/sfsm/FaResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IAIP,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,KAAK,CAAiC;gBAE1B,UAAU,EAAE,YAAY;IAI5C,0EAA0E;IAC1E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAQ7B;;;;;OAKG;IACH,WAAW,IAAI,MAAM;IAiCrB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,SAAS;IAqBjB,iEAAiE;IACjE,OAAO,CAAC,OAAO;IASf;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAQ5B"}
|
package/lib/sfsm/FaResolver.js
CHANGED
|
@@ -70,7 +70,8 @@ class FaResolver {
|
|
|
70
70
|
name: rootName,
|
|
71
71
|
transitions: rootValue,
|
|
72
72
|
subFaNames: new Set(),
|
|
73
|
-
node
|
|
73
|
+
node,
|
|
74
|
+
entryState: this.resolveEntryState(rootValue)
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
else {
|
|
@@ -88,7 +89,13 @@ class FaResolver {
|
|
|
88
89
|
.map(t => t[2])
|
|
89
90
|
.filter(target => definedFaNames.has(target)));
|
|
90
91
|
const node = { ts: transitions };
|
|
91
|
-
this.index.set(name, {
|
|
92
|
+
this.index.set(name, {
|
|
93
|
+
name,
|
|
94
|
+
transitions,
|
|
95
|
+
subFaNames,
|
|
96
|
+
node,
|
|
97
|
+
entryState: this.resolveEntryState(transitions)
|
|
98
|
+
});
|
|
92
99
|
}
|
|
93
100
|
}
|
|
94
101
|
indexNode(name, node) {
|
|
@@ -105,7 +112,8 @@ class FaResolver {
|
|
|
105
112
|
name,
|
|
106
113
|
transitions: node.ts,
|
|
107
114
|
subFaNames,
|
|
108
|
-
node
|
|
115
|
+
node,
|
|
116
|
+
entryState: this.resolveEntryState(node.ts)
|
|
109
117
|
});
|
|
110
118
|
}
|
|
111
119
|
/** A state value is a sub-FA if it has a "ts" array property. */
|
|
@@ -115,6 +123,19 @@ class FaResolver {
|
|
|
115
123
|
'ts' in value &&
|
|
116
124
|
Array.isArray(value.ts));
|
|
117
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Auto-detects the literal entry-state name used by a FA's own transitions:
|
|
128
|
+
* the bare `"I"`, or a namespaced `"<FaName>.I"` (e.g. `"TS.I"`). Falls back
|
|
129
|
+
* to `"I"` if the FA has no transition whose from-state matches either form.
|
|
130
|
+
*/
|
|
131
|
+
resolveEntryState(transitions) {
|
|
132
|
+
for (const t of transitions) {
|
|
133
|
+
if (t[0] === 'I' || t[0].endsWith('.I')) {
|
|
134
|
+
return t[0];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return 'I';
|
|
138
|
+
}
|
|
118
139
|
}
|
|
119
140
|
exports.FaResolver = FaResolver;
|
|
120
141
|
//# sourceMappingURL=FaResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FaResolver.js","sourceRoot":"","sources":["../../src/sfsm/FaResolver.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"FaResolver.js","sourceRoot":"","sources":["../../src/sfsm/FaResolver.ts"],"names":[],"mappings":"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"}
|
package/lib/sfsm/Sfsm.d.ts
CHANGED
|
@@ -13,6 +13,20 @@ import { ICommandReceiver, ISignalReceiver } from './interfaces';
|
|
|
13
13
|
* processing a signal (e.g. from within a command receiver callback), the
|
|
14
14
|
* incoming signal is queued and processed after the current step completes.
|
|
15
15
|
* This prevents stack corruption and ensures deterministic ordering.
|
|
16
|
+
*
|
|
17
|
+
* Jokers: a transition may use a reserved "joker" string (default '*',
|
|
18
|
+
* configurable via SfsmOptions.jokerSignal / jokerState) in its signal or
|
|
19
|
+
* from-state slot to act as a fallback. A joker-signal transition matches
|
|
20
|
+
* any signal for its from-state; a joker-state transition matches any
|
|
21
|
+
* from-state for its signal. Exact, literal transitions always take
|
|
22
|
+
* priority over joker matches. See docs/Tutorial/Tutorial.md for examples.
|
|
23
|
+
*
|
|
24
|
+
* Entry/exit naming convention: every FA's entry state is either the bare
|
|
25
|
+
* "I", or a namespaced "<FaName>.I" (e.g. "TS.I") — auto-detected per FA from
|
|
26
|
+
* its own transitions. Every exit state either starts with "E_", or contains
|
|
27
|
+
* ".E_" (e.g. "TS.E_ok"). Both forms are recognised everywhere and may be
|
|
28
|
+
* freely mixed across FAs; see Tutorial.md §8.1 for when to use the
|
|
29
|
+
* namespaced form.
|
|
16
30
|
*/
|
|
17
31
|
export declare class Sfsm implements ISignalReceiver {
|
|
18
32
|
private resolver;
|
|
@@ -48,9 +62,21 @@ export declare class Sfsm implements ISignalReceiver {
|
|
|
48
62
|
/**
|
|
49
63
|
* Rule 2: find a matching transition, searching from head down the stack.
|
|
50
64
|
* Returns { frameIndex, transition } or null if not found anywhere.
|
|
65
|
+
*
|
|
66
|
+
* Within each frame, matches are tried in priority order so that exact,
|
|
67
|
+
* literal transitions always win over joker (wildcard) ones:
|
|
68
|
+
* 1. exact from-state + exact signal
|
|
69
|
+
* 2. exact from-state + joker signal
|
|
70
|
+
* 3. joker from-state + exact signal
|
|
71
|
+
* 4. joker from-state + joker signal
|
|
51
72
|
*/
|
|
52
73
|
private findTransition;
|
|
53
74
|
private applySignal;
|
|
75
|
+
/**
|
|
76
|
+
* A state is an exit/final state if it starts with "E_" (default
|
|
77
|
+
* convention) or contains ".E_" (namespaced convention, e.g. "TS.E_ok").
|
|
78
|
+
*/
|
|
79
|
+
private isExitState;
|
|
54
80
|
private resolveStateMeta;
|
|
55
81
|
private resolveSignalMeta;
|
|
56
82
|
private resolveCommandMeta;
|
package/lib/sfsm/Sfsm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sfsm.d.ts","sourceRoot":"","sources":["../../src/sfsm/Sfsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQjE
|
|
1
|
+
{"version":3,"file":"Sfsm.d.ts","sourceRoot":"","sources":["../../src/sfsm/Sfsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQjE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,IAAK,YAAW,eAAe;IAExC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAiD;gBAExD,OAAO,GAAE,WAAgB;IASrC,mEAAmE;IACnE,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAStC;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAanD,2CAA2C;IAC3C,MAAM,IAAI,QAAQ,EAAE;IAIpB,yEAAyE;IACzE,eAAe,IAAI,MAAM,EAAE;IAI3B,+CAA+C;IAC/C,YAAY,IAAI,MAAM;IAOtB,OAAO,CAAC,aAAa;IAarB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,WAAW;IAqFnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,iBAAiB;CAM5B"}
|
package/lib/sfsm/Sfsm.js
CHANGED
|
@@ -15,10 +15,24 @@ const FaResolver_1 = require("./FaResolver");
|
|
|
15
15
|
* processing a signal (e.g. from within a command receiver callback), the
|
|
16
16
|
* incoming signal is queued and processed after the current step completes.
|
|
17
17
|
* This prevents stack corruption and ensures deterministic ordering.
|
|
18
|
+
*
|
|
19
|
+
* Jokers: a transition may use a reserved "joker" string (default '*',
|
|
20
|
+
* configurable via SfsmOptions.jokerSignal / jokerState) in its signal or
|
|
21
|
+
* from-state slot to act as a fallback. A joker-signal transition matches
|
|
22
|
+
* any signal for its from-state; a joker-state transition matches any
|
|
23
|
+
* from-state for its signal. Exact, literal transitions always take
|
|
24
|
+
* priority over joker matches. See docs/Tutorial/Tutorial.md for examples.
|
|
25
|
+
*
|
|
26
|
+
* Entry/exit naming convention: every FA's entry state is either the bare
|
|
27
|
+
* "I", or a namespaced "<FaName>.I" (e.g. "TS.I") — auto-detected per FA from
|
|
28
|
+
* its own transitions. Every exit state either starts with "E_", or contains
|
|
29
|
+
* ".E_" (e.g. "TS.E_ok"). Both forms are recognised everywhere and may be
|
|
30
|
+
* freely mixed across FAs; see Tutorial.md §8.1 for when to use the
|
|
31
|
+
* namespaced form.
|
|
18
32
|
*/
|
|
19
33
|
class Sfsm {
|
|
20
34
|
constructor(options = {}) {
|
|
21
|
-
var _a, _b;
|
|
35
|
+
var _a, _b, _c, _d;
|
|
22
36
|
this.resolver = null;
|
|
23
37
|
this.stack = [];
|
|
24
38
|
this.commandReceiver = null;
|
|
@@ -27,7 +41,9 @@ class Sfsm {
|
|
|
27
41
|
this.signalQueue = [];
|
|
28
42
|
this.options = {
|
|
29
43
|
byMissingData: (_a = options.byMissingData) !== null && _a !== void 0 ? _a : 'error',
|
|
30
|
-
byMissingTransition: (_b = options.byMissingTransition) !== null && _b !== void 0 ? _b : 'error'
|
|
44
|
+
byMissingTransition: (_b = options.byMissingTransition) !== null && _b !== void 0 ? _b : 'error',
|
|
45
|
+
jokerSignal: (_c = options.jokerSignal) !== null && _c !== void 0 ? _c : '*',
|
|
46
|
+
jokerState: (_d = options.jokerState) !== null && _d !== void 0 ? _d : '*'
|
|
31
47
|
};
|
|
32
48
|
}
|
|
33
49
|
/** Register the single command receiver for this SFSM instance. */
|
|
@@ -43,7 +59,7 @@ class Sfsm {
|
|
|
43
59
|
loadFA(definition) {
|
|
44
60
|
this.resolver = new FaResolver_1.FaResolver(definition);
|
|
45
61
|
const rootName = this.resolver.getRootName();
|
|
46
|
-
this.stack = [{ faName: rootName, currentState:
|
|
62
|
+
this.stack = [{ faName: rootName, currentState: this.resolver.get(rootName).entryState }];
|
|
47
63
|
this.log = [];
|
|
48
64
|
this.processing = false;
|
|
49
65
|
this.signalQueue = [];
|
|
@@ -95,12 +111,30 @@ class Sfsm {
|
|
|
95
111
|
/**
|
|
96
112
|
* Rule 2: find a matching transition, searching from head down the stack.
|
|
97
113
|
* Returns { frameIndex, transition } or null if not found anywhere.
|
|
114
|
+
*
|
|
115
|
+
* Within each frame, matches are tried in priority order so that exact,
|
|
116
|
+
* literal transitions always win over joker (wildcard) ones:
|
|
117
|
+
* 1. exact from-state + exact signal
|
|
118
|
+
* 2. exact from-state + joker signal
|
|
119
|
+
* 3. joker from-state + exact signal
|
|
120
|
+
* 4. joker from-state + joker signal
|
|
98
121
|
*/
|
|
99
122
|
findTransition(signal) {
|
|
123
|
+
const jokerSignal = this.options.jokerSignal;
|
|
124
|
+
const jokerState = this.options.jokerState;
|
|
100
125
|
for (let i = this.stack.length - 1; i >= 0; i--) {
|
|
101
126
|
const frame = this.stack[i];
|
|
102
127
|
const fa = this.resolver.get(frame.faName);
|
|
103
|
-
|
|
128
|
+
let match = fa.transitions.find(t => t[0] === frame.currentState && t[1] === signal);
|
|
129
|
+
if (!match && jokerSignal !== undefined) {
|
|
130
|
+
match = fa.transitions.find(t => t[0] === frame.currentState && t[1] === jokerSignal);
|
|
131
|
+
}
|
|
132
|
+
if (!match && jokerState !== undefined) {
|
|
133
|
+
match = fa.transitions.find(t => t[0] === jokerState && t[1] === signal);
|
|
134
|
+
}
|
|
135
|
+
if (!match && jokerState !== undefined && jokerSignal !== undefined) {
|
|
136
|
+
match = fa.transitions.find(t => t[0] === jokerState && t[1] === jokerSignal);
|
|
137
|
+
}
|
|
104
138
|
if (match) {
|
|
105
139
|
return { frameIndex: i, toState: match[2], command: match[3] };
|
|
106
140
|
}
|
|
@@ -163,15 +197,15 @@ class Sfsm {
|
|
|
163
197
|
// Rule 3: new state is itself a sub-FA — push it
|
|
164
198
|
const headFa = this.resolver.get(this.stack[frameIndex].faName);
|
|
165
199
|
if (headFa.subFaNames.has(toState)) {
|
|
166
|
-
this.stack.push({ faName: toState, currentState:
|
|
200
|
+
this.stack.push({ faName: toState, currentState: this.resolver.get(toState).entryState });
|
|
167
201
|
this.applySignal(signal, data); // forward signal to sub-FA
|
|
168
202
|
return;
|
|
169
203
|
}
|
|
170
204
|
// Rule 4: new state is an exit state
|
|
171
|
-
if (
|
|
205
|
+
if (this.isExitState(toState)) {
|
|
172
206
|
if (this.stack.length === 1) {
|
|
173
207
|
// Rule 4.1 — root FA resets to I
|
|
174
|
-
this.stack[0].currentState =
|
|
208
|
+
this.stack[0].currentState = this.resolver.get(this.stack[0].faName).entryState;
|
|
175
209
|
}
|
|
176
210
|
else {
|
|
177
211
|
// Rule 4.2 — pop current FA, forward signal to new head
|
|
@@ -181,6 +215,13 @@ class Sfsm {
|
|
|
181
215
|
}
|
|
182
216
|
}
|
|
183
217
|
// ── Meta resolution helpers ──────────────────────────────────────────────
|
|
218
|
+
/**
|
|
219
|
+
* A state is an exit/final state if it starts with "E_" (default
|
|
220
|
+
* convention) or contains ".E_" (namespaced convention, e.g. "TS.E_ok").
|
|
221
|
+
*/
|
|
222
|
+
isExitState(state) {
|
|
223
|
+
return state.startsWith('E_') || state.includes('.E_');
|
|
224
|
+
}
|
|
184
225
|
resolveStateMeta(frameIndex, state) {
|
|
185
226
|
var _a;
|
|
186
227
|
const fa = this.resolver.get(this.stack[frameIndex].faName);
|
package/lib/sfsm/Sfsm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sfsm.js","sourceRoot":"","sources":["../../src/sfsm/Sfsm.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAO1C
|
|
1
|
+
{"version":3,"file":"Sfsm.js","sourceRoot":"","sources":["../../src/sfsm/Sfsm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ISignalReceiver, ISignalSender } from './interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for the signal-sending role of an external-world component
|
|
4
|
+
* (a "Controller" in ControllerHub terminology).
|
|
5
|
+
*
|
|
6
|
+
* Concrete subclasses:
|
|
7
|
+
* - declare the signal names they may emit via getSignalNames()
|
|
8
|
+
* (read by ControllerHub for wiring and diagnostics — no need to repeat the
|
|
9
|
+
* list again at the registration call site);
|
|
10
|
+
* - call the protected sendSignal() to push a signal to the connected target
|
|
11
|
+
* (normally the SFSM).
|
|
12
|
+
*
|
|
13
|
+
* ControllerHub calls connectSignalTarget() automatically during connectTo().
|
|
14
|
+
*/
|
|
15
|
+
export declare abstract class SignalSender implements ISignalSender {
|
|
16
|
+
private signalTarget;
|
|
17
|
+
/** Returns all signal names this sender may emit. */
|
|
18
|
+
abstract getSignalNames(): readonly string[];
|
|
19
|
+
/** Called by ControllerHub to connect the SFSM (or any receiver) as the signal target. */
|
|
20
|
+
connectSignalTarget(target: ISignalReceiver): void;
|
|
21
|
+
/** Sends a signal to the connected target (normally the SFSM). */
|
|
22
|
+
protected sendSignal(name: string, data?: unknown): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SignalSender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignalSender.d.ts","sourceRoot":"","sources":["../../src/sfsm/SignalSender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,8BAAsB,YAAa,YAAW,aAAa;IAEvD,OAAO,CAAC,YAAY,CAAgC;IAEpD,qDAAqD;IACrD,QAAQ,CAAC,cAAc,IAAI,SAAS,MAAM,EAAE;IAE5C,0FAA0F;IAC1F,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIlD,kEAAkE;IAClE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAG3D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SignalSender = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for the signal-sending role of an external-world component
|
|
6
|
+
* (a "Controller" in ControllerHub terminology).
|
|
7
|
+
*
|
|
8
|
+
* Concrete subclasses:
|
|
9
|
+
* - declare the signal names they may emit via getSignalNames()
|
|
10
|
+
* (read by ControllerHub for wiring and diagnostics — no need to repeat the
|
|
11
|
+
* list again at the registration call site);
|
|
12
|
+
* - call the protected sendSignal() to push a signal to the connected target
|
|
13
|
+
* (normally the SFSM).
|
|
14
|
+
*
|
|
15
|
+
* ControllerHub calls connectSignalTarget() automatically during connectTo().
|
|
16
|
+
*/
|
|
17
|
+
class SignalSender {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.signalTarget = null;
|
|
20
|
+
}
|
|
21
|
+
/** Called by ControllerHub to connect the SFSM (or any receiver) as the signal target. */
|
|
22
|
+
connectSignalTarget(target) {
|
|
23
|
+
this.signalTarget = target;
|
|
24
|
+
}
|
|
25
|
+
/** Sends a signal to the connected target (normally the SFSM). */
|
|
26
|
+
sendSignal(name, data) {
|
|
27
|
+
var _a;
|
|
28
|
+
(_a = this.signalTarget) === null || _a === void 0 ? void 0 : _a.receiveSignal(name, data);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.SignalSender = SignalSender;
|
|
32
|
+
//# sourceMappingURL=SignalSender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignalSender.js","sourceRoot":"","sources":["../../src/sfsm/SignalSender.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;GAYG;AACH,MAAsB,YAAY;IAAlC;QAEY,iBAAY,GAA2B,IAAI,CAAC;IAcxD,CAAC;IATG,0FAA0F;IAC1F,mBAAmB,CAAC,MAAuB;QACvC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,kEAAkE;IACxD,UAAU,CAAC,IAAY,EAAE,IAAc;;QAC7C,MAAA,IAAI,CAAC,YAAY,0CAAE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;CACJ;AAhBD,oCAgBC"}
|
package/lib/sfsm/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { ICommandReceiver, ISignalReceiver, ISignalSender } from './interfaces';
|
|
2
|
-
export {
|
|
2
|
+
export { ControllerHub } from './ControllerHub';
|
|
3
|
+
export { SignalSender } from './SignalSender';
|
|
4
|
+
export { CommandReceiver } from './CommandReceiver';
|
|
3
5
|
export { FaDefinition, FaNode, FaUpdate, Transition, SfsmOptions, LogEntry, MissingDataPolicy, MissingTransitionPolicy } from './types';
|
|
4
6
|
export { FaResolver, ResolvedFa } from './FaResolver';
|
|
5
7
|
export { Sfsm } from './Sfsm';
|
package/lib/sfsm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxI,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/lib/sfsm/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadFAFromURL = exports.loadFAFromFile = exports.updateFullFA = exports.updateCompactFA = exports.mergeFAs = exports.reduceFA = exports.Sfsm = exports.FaResolver = exports.
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "
|
|
3
|
+
exports.loadFAFromURL = exports.loadFAFromFile = exports.updateFullFA = exports.updateCompactFA = exports.mergeFAs = exports.reduceFA = exports.Sfsm = exports.FaResolver = exports.CommandReceiver = exports.SignalSender = exports.ControllerHub = void 0;
|
|
4
|
+
var ControllerHub_1 = require("./ControllerHub");
|
|
5
|
+
Object.defineProperty(exports, "ControllerHub", { enumerable: true, get: function () { return ControllerHub_1.ControllerHub; } });
|
|
6
|
+
var SignalSender_1 = require("./SignalSender");
|
|
7
|
+
Object.defineProperty(exports, "SignalSender", { enumerable: true, get: function () { return SignalSender_1.SignalSender; } });
|
|
8
|
+
var CommandReceiver_1 = require("./CommandReceiver");
|
|
9
|
+
Object.defineProperty(exports, "CommandReceiver", { enumerable: true, get: function () { return CommandReceiver_1.CommandReceiver; } });
|
|
6
10
|
var FaResolver_1 = require("./FaResolver");
|
|
7
11
|
Object.defineProperty(exports, "FaResolver", { enumerable: true, get: function () { return FaResolver_1.FaResolver; } });
|
|
8
12
|
var Sfsm_1 = require("./Sfsm");
|
package/lib/sfsm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":";;;AACA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAExB,2CAAsD;AAA7C,wGAAA,UAAU,OAAA;AACnB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,uCAAqD;AAA5C,oGAAA,QAAQ,OAAA;AACjB,yCAA4D;AAAnD,4GAAA,eAAe,OAAA;AAAE,yGAAA,YAAY,OAAA;AACtC,uCAA2D;AAAlD,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA"}
|
package/lib/sfsm/interfaces.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface ISignalReceiver {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Interface for external objects that send signals to the SFSM.
|
|
17
|
-
*
|
|
17
|
+
* ControllerHub calls connectSignalTarget() on every registered sender during connectTo().
|
|
18
18
|
*/
|
|
19
19
|
export interface ISignalSender {
|
|
20
20
|
connectSignalTarget(target: ISignalReceiver): void;
|
package/lib/sfsm/types.d.ts
CHANGED
|
@@ -55,6 +55,27 @@ export type MissingTransitionPolicy = 'ignore' | 'log_warning' | 'error';
|
|
|
55
55
|
export interface SfsmOptions {
|
|
56
56
|
byMissingData?: MissingDataPolicy;
|
|
57
57
|
byMissingTransition?: MissingTransitionPolicy;
|
|
58
|
+
/**
|
|
59
|
+
* Joker signal: a transition whose signal slot equals this value matches
|
|
60
|
+
* any signal received while its FA is in that transition's from-state —
|
|
61
|
+
* but only if no transition with the exact, literal signal exists for
|
|
62
|
+
* that state. Useful as a catch-all fallback (e.g. "any unrecognised
|
|
63
|
+
* signal while running ⇒ go to a safe/off state").
|
|
64
|
+
* Default: '*'. Has no effect unless a transition actually uses this
|
|
65
|
+
* value as its signal, so it is safe to leave at the default.
|
|
66
|
+
*/
|
|
67
|
+
jokerSignal?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Joker state: a transition whose from-state slot equals this value
|
|
70
|
+
* matches any current state of its FA for that transition's exact
|
|
71
|
+
* signal — but only if no transition with the exact, literal from-state
|
|
72
|
+
* exists for that signal. Useful for a signal that must be handled the
|
|
73
|
+
* same way no matter what state the device is currently in (e.g. a
|
|
74
|
+
* "service" signal that always jumps to a maintenance state).
|
|
75
|
+
* Default: '*'. Has no effect unless a transition actually uses this
|
|
76
|
+
* value as its from-state, so it is safe to leave at the default.
|
|
77
|
+
*/
|
|
78
|
+
jokerState?: string;
|
|
58
79
|
}
|
|
59
80
|
/**
|
|
60
81
|
* A single entry in the processing log.
|
package/lib/sfsm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sfsm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,MAAM;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,EAAE,EAAE,UAAU,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sfsm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,MAAM;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,EAAE,EAAE,UAAU,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vsirotin/ts-stop",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"description": "State Oriented Programming library for TypeScript",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -20,13 +20,9 @@
|
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
22
|
"lib",
|
|
23
|
-
"scripts
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"scripts/update-fa.js",
|
|
27
|
-
"README.md",
|
|
28
|
-
"LICENSE",
|
|
29
|
-
"LICENSE-COMMERCIAL.md"
|
|
23
|
+
"scripts",
|
|
24
|
+
"ai/skills",
|
|
25
|
+
"tutorial"
|
|
30
26
|
],
|
|
31
27
|
"bin": {
|
|
32
28
|
"reduce-fa": "./scripts/reduce-fa.js",
|
|
@@ -60,6 +56,7 @@
|
|
|
60
56
|
"@types/jest": "^29.5.14",
|
|
61
57
|
"@types/js-yaml": "^4.0.9",
|
|
62
58
|
"@types/mocha": "^10.0.10",
|
|
59
|
+
"@types/node": "^26.1.1",
|
|
63
60
|
"jest": "^29.5.0",
|
|
64
61
|
"js-yaml": "^4.1.1",
|
|
65
62
|
"ts-jest": "^29.1.0",
|
|
@@ -67,5 +64,9 @@
|
|
|
67
64
|
},
|
|
68
65
|
"publishConfig": {
|
|
69
66
|
"access": "public"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"elkjs": "^0.12.0",
|
|
70
|
+
"xml2js": "^0.6.2"
|
|
70
71
|
}
|
|
71
72
|
}
|