@vsirotin/ts-stop 1.13.0 → 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.
Files changed (123) hide show
  1. package/ai/skills/sfsm-compare-json-uml-diagram/SKILL.md +62 -0
  2. package/ai/skills/sfsm-json-to-uml-diagram/SKILL.md +50 -0
  3. package/ai/skills/sfsm-uml-diagram-to-json/SKILL.md +49 -0
  4. package/lib/esm/sfsm/CommandReceiver.js +17 -0
  5. package/lib/esm/sfsm/ControllerHub.js +82 -0
  6. package/lib/esm/sfsm/FaResolver.js +24 -3
  7. package/lib/esm/sfsm/Sfsm.js +48 -7
  8. package/lib/esm/sfsm/SignalSender.js +27 -0
  9. package/lib/esm/sfsm/index.js +3 -1
  10. package/lib/sfsm/CommandReceiver.d.ts +23 -0
  11. package/lib/sfsm/CommandReceiver.d.ts.map +1 -0
  12. package/lib/sfsm/CommandReceiver.js +22 -0
  13. package/lib/sfsm/CommandReceiver.js.map +1 -0
  14. package/lib/sfsm/ControllerHub.d.ts +56 -0
  15. package/lib/sfsm/ControllerHub.d.ts.map +1 -0
  16. package/lib/sfsm/ControllerHub.js +87 -0
  17. package/lib/sfsm/ControllerHub.js.map +1 -0
  18. package/lib/sfsm/FaResolver.d.ts +14 -0
  19. package/lib/sfsm/FaResolver.d.ts.map +1 -1
  20. package/lib/sfsm/FaResolver.js +24 -3
  21. package/lib/sfsm/FaResolver.js.map +1 -1
  22. package/lib/sfsm/Sfsm.d.ts +26 -0
  23. package/lib/sfsm/Sfsm.d.ts.map +1 -1
  24. package/lib/sfsm/Sfsm.js +48 -7
  25. package/lib/sfsm/Sfsm.js.map +1 -1
  26. package/lib/sfsm/SignalSender.d.ts +24 -0
  27. package/lib/sfsm/SignalSender.d.ts.map +1 -0
  28. package/lib/sfsm/SignalSender.js +32 -0
  29. package/lib/sfsm/SignalSender.js.map +1 -0
  30. package/lib/sfsm/index.d.ts +3 -1
  31. package/lib/sfsm/index.d.ts.map +1 -1
  32. package/lib/sfsm/index.js +7 -3
  33. package/lib/sfsm/index.js.map +1 -1
  34. package/lib/sfsm/interfaces.d.ts +1 -1
  35. package/lib/sfsm/types.d.ts +21 -0
  36. package/lib/sfsm/types.d.ts.map +1 -1
  37. package/package.json +8 -5
  38. package/scripts/compare-compact-jsons.js +146 -0
  39. package/scripts/drawio-to-json.js +149 -0
  40. package/scripts/json-to-drawio-old.js +311 -0
  41. package/scripts/json-to-drawio.js +309 -0
  42. package/tutorial/01-finite-state-machine.md +223 -0
  43. package/tutorial/02-stacked-finite-state-machine.md +32 -0
  44. package/tutorial/03-advanced-themes.md +110 -0
  45. package/tutorial/04-tools.md +164 -0
  46. package/tutorial/images/Turnstile-img.png +0 -0
  47. package/tutorial/images/TurnstileBaseFA.png +0 -0
  48. package/LICENSE +0 -201
  49. package/LICENSE-COMMERCIAL.md +0 -41
  50. package/README.md +0 -19
  51. package/lib/DefaultState.d.ts +0 -9
  52. package/lib/DefaultState.d.ts.map +0 -1
  53. package/lib/DefaultState.js +0 -15
  54. package/lib/DefaultState.js.map +0 -1
  55. package/lib/FiniteStateMachine.d.ts +0 -227
  56. package/lib/FiniteStateMachine.d.ts.map +0 -1
  57. package/lib/FiniteStateMachine.js +0 -410
  58. package/lib/FiniteStateMachine.js.map +0 -1
  59. package/lib/IStateWithActions.d.ts +0 -18
  60. package/lib/IStateWithActions.d.ts.map +0 -1
  61. package/lib/IStateWithActions.js +0 -3
  62. package/lib/IStateWithActions.js.map +0 -1
  63. package/lib/IStateWithOutputSignal.d.ts +0 -4
  64. package/lib/IStateWithOutputSignal.d.ts.map +0 -1
  65. package/lib/IStateWithOutputSignal.js +0 -3
  66. package/lib/IStateWithOutputSignal.js.map +0 -1
  67. package/lib/MatrixBasedStateMachine.d.ts +0 -108
  68. package/lib/MatrixBasedStateMachine.d.ts.map +0 -1
  69. package/lib/MatrixBasedStateMachine.js +0 -132
  70. package/lib/MatrixBasedStateMachine.js.map +0 -1
  71. package/lib/TransitionMatrix.d.ts +0 -61
  72. package/lib/TransitionMatrix.d.ts.map +0 -1
  73. package/lib/TransitionMatrix.js +0 -104
  74. package/lib/TransitionMatrix.js.map +0 -1
  75. package/lib/esm/DefaultState.js +0 -10
  76. package/lib/esm/FiniteStateMachine.js +0 -405
  77. package/lib/esm/IStateWithActions.js +0 -1
  78. package/lib/esm/IStateWithOutputSignal.js +0 -1
  79. package/lib/esm/MatrixBasedStateMachine.js +0 -127
  80. package/lib/esm/TransitionMatrix.js +0 -98
  81. package/lib/esm/fa/DefaultState.js +0 -10
  82. package/lib/esm/fa/FiniteStateMachine.js +0 -405
  83. package/lib/esm/fa/IStateWithActions.js +0 -1
  84. package/lib/esm/fa/IStateWithOutputSignal.js +0 -1
  85. package/lib/esm/fa/MatrixBasedStateMachine.js +0 -127
  86. package/lib/esm/fa/TransitionMatrix.js +0 -98
  87. package/lib/esm/index.js +0 -9
  88. package/lib/esm/sfsm/ExternalWorldHub.js +0 -80
  89. package/lib/esm/sfsm/index.browser.js +0 -5
  90. package/lib/fa/DefaultState.d.ts +0 -9
  91. package/lib/fa/DefaultState.d.ts.map +0 -1
  92. package/lib/fa/DefaultState.js +0 -15
  93. package/lib/fa/DefaultState.js.map +0 -1
  94. package/lib/fa/FiniteStateMachine.d.ts +0 -227
  95. package/lib/fa/FiniteStateMachine.d.ts.map +0 -1
  96. package/lib/fa/FiniteStateMachine.js +0 -410
  97. package/lib/fa/FiniteStateMachine.js.map +0 -1
  98. package/lib/fa/IStateWithActions.d.ts +0 -18
  99. package/lib/fa/IStateWithActions.d.ts.map +0 -1
  100. package/lib/fa/IStateWithActions.js +0 -3
  101. package/lib/fa/IStateWithActions.js.map +0 -1
  102. package/lib/fa/IStateWithOutputSignal.d.ts +0 -4
  103. package/lib/fa/IStateWithOutputSignal.d.ts.map +0 -1
  104. package/lib/fa/IStateWithOutputSignal.js +0 -3
  105. package/lib/fa/IStateWithOutputSignal.js.map +0 -1
  106. package/lib/fa/MatrixBasedStateMachine.d.ts +0 -108
  107. package/lib/fa/MatrixBasedStateMachine.d.ts.map +0 -1
  108. package/lib/fa/MatrixBasedStateMachine.js +0 -132
  109. package/lib/fa/MatrixBasedStateMachine.js.map +0 -1
  110. package/lib/fa/TransitionMatrix.d.ts +0 -61
  111. package/lib/fa/TransitionMatrix.d.ts.map +0 -1
  112. package/lib/fa/TransitionMatrix.js +0 -104
  113. package/lib/fa/TransitionMatrix.js.map +0 -1
  114. package/lib/index.d.ts +0 -10
  115. package/lib/index.d.ts.map +0 -1
  116. package/lib/index.js +0 -26
  117. package/lib/index.js.map +0 -1
  118. package/lib/sfsm/ExternalWorldHub.d.ts +0 -52
  119. package/lib/sfsm/ExternalWorldHub.d.ts.map +0 -1
  120. package/lib/sfsm/ExternalWorldHub.js +0 -85
  121. package/lib/sfsm/ExternalWorldHub.js.map +0 -1
  122. package/lib/sfsm/index.browser.d.ts +0 -7
  123. package/scripts/publish-local.sh +0 -15
@@ -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"}
@@ -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;CAChB;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;IA2BlB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,SAAS;IAoBjB,iEAAiE;IACjE,OAAO,CAAC,OAAO;CAQlB"}
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"}
@@ -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, { name, transitions, subFaNames, node });
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":"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"}
1
+ {"version":3,"file":"FaResolver.js","sourceRoot":"","sources":["../../src/sfsm/FaResolver.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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;;;;;;;;;;;;;GAaG;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;IAOrC,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;;;OAGG;IACH,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,WAAW;IAqFnB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,iBAAiB;CAM5B"}
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: 'I' }];
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
- const match = fa.transitions.find(t => t[0] === frame.currentState && t[1] === signal);
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: 'I' });
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 (toState.startsWith('E_')) {
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 = 'I';
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);
@@ -1 +1 @@
1
- {"version":3,"file":"Sfsm.js","sourceRoot":"","sources":["../../src/sfsm/Sfsm.ts"],"names":[],"mappings":";;;AAEA,6CAA0C;AAO1C;;;;;;;;;;;;;GAaG;AACH,MAAa,IAAI;IAUb,YAAY,UAAuB,EAAE;;QAR7B,aAAQ,GAAsB,IAAI,CAAC;QACnC,UAAK,GAAiB,EAAE,CAAC;QACzB,oBAAe,GAA4B,IAAI,CAAC;QAEhD,QAAG,GAAe,EAAE,CAAC;QACrB,eAAU,GAAG,KAAK,CAAC;QACnB,gBAAW,GAA8C,EAAE,CAAC;QAGhE,IAAI,CAAC,OAAO,GAAG;YACX,aAAa,EAAE,MAAA,OAAO,CAAC,aAAa,mCAAI,OAAO;YAC/C,mBAAmB,EAAE,MAAA,OAAO,CAAC,mBAAmB,mCAAI,OAAO;SAC9D,CAAC;IACN,CAAC;IAED,mEAAmE;IACnE,kBAAkB,CAAC,QAA0B;QACzC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAwB;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,MAAc,EAAE,IAAc;QACxC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,cAAc;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAG,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,MAAM;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,yEAAyE;IACzE,eAAe;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,+CAA+C;IAC/C,YAAY;QACR,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;IAC1D,CAAC;IAED,2EAA2E;IAEnE,aAAa,CAAC,MAAc,EAAE,IAAc;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,MAAc;QACjC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CACtD,CAAC;YACF,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,IAAc;;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,4CAA4C;YAC5C,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO;QACX,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAEhD,oDAAoD;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;QACxD,gEAAgE;QAChE,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAErD,iDAAiD;QACjD,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,eAAe;QACf,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC;QAE9C,uFAAuF;QACvF,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;QAE3C,uCAAuC;QACvC,IAAI,WAA+B,CAAC;QACpC,IAAI,WAA+B,CAAC;QACpC,IAAI,QAA4B,CAAC;QAEjC,IAAI,OAAO,EAAE,CAAC;YACV,WAAW,GAAG,OAAO,CAAC;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,WAAW,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;YACzB,QAAQ,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC;YAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;YACD,MAAA,IAAI,CAAC,eAAe,0CAAE,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAa;YACvB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YACzB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,MAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,0CAAE,IAAI;YAC/D,MAAM;YACN,UAAU,EAAE,MAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,0CAAE,IAAI;YAC5D,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,MAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,0CAAE,IAAI;YAC9D,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,QAAQ;SACX,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExB,iDAAiD;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAE,2BAA2B;YAC5D,OAAO;QACX,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,iCAAiC;gBACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,wDAAwD;gBACxD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED,4EAA4E;IAEpE,gBAAgB,CAAC,UAAkB,EAAE,KAAa;;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,MAAA,EAAE,CAAC,IAAI,CAAC,MAAM,0CAAG,KAAK,CAAkC,CAAC;IACpE,CAAC;IAEO,iBAAiB,CAAC,UAAkB,EAAE,MAAc;;QACxD,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,MAAA,EAAE,CAAC,IAAI,CAAC,OAAO,0CAAG,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,kBAAkB,CAAC,UAAkB,EAAE,OAAe;;QAC1D,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,MAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,0CAAG,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,4EAA4E;IAEpE,uBAAuB,CAAC,MAAc;;QAC1C,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,mCAAI,OAAO,CAAC;QAC3D,MAAM,GAAG,GAAG,mCAAmC,MAAM,eAAe,IAAI,CAAC,YAAY,EAAE,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACrI,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,uBAAuB;IAC3B,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,OAAe;;QACrD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,aAAa,mCAAI,OAAO,CAAC;QACrD,MAAM,GAAG,GAAG,kBAAkB,OAAO,8BAA8B,MAAM,gBAAgB,CAAC;QAC1F,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,MAAM,KAAK,aAAa;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;CACJ;AAnOD,oBAmOC"}
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"}
@@ -1,5 +1,7 @@
1
1
  export { ICommandReceiver, ISignalReceiver, ISignalSender } from './interfaces';
2
- export { ExternalWorldHub } from './ExternalWorldHub';
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';
@@ -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,oBAAoB,CAAC;AACtD,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"}
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.ExternalWorldHub = void 0;
4
- var ExternalWorldHub_1 = require("./ExternalWorldHub");
5
- Object.defineProperty(exports, "ExternalWorldHub", { enumerable: true, get: function () { return ExternalWorldHub_1.ExternalWorldHub; } });
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");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sfsm/index.ts"],"names":[],"mappings":";;;AACA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,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"}
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"}
@@ -14,7 +14,7 @@ export interface ISignalReceiver {
14
14
  }
15
15
  /**
16
16
  * Interface for external objects that send signals to the SFSM.
17
- * ExternalWorldHub calls connectSignalTarget() on every registered sender during connectTo().
17
+ * ControllerHub calls connectSignalTarget() on every registered sender during connectTo().
18
18
  */
19
19
  export interface ISignalSender {
20
20
  connectSignalTarget(target: ISignalReceiver): void;
@@ -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.
@@ -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;CACjD;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"}
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": "1.13.0",
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",
@@ -21,9 +21,8 @@
21
21
  "files": [
22
22
  "lib",
23
23
  "scripts",
24
- "README.md",
25
- "LICENSE",
26
- "LICENSE-COMMERCIAL.md"
24
+ "ai/skills",
25
+ "tutorial"
27
26
  ],
28
27
  "bin": {
29
28
  "reduce-fa": "./scripts/reduce-fa.js",
@@ -39,7 +38,6 @@
39
38
  "test": "jest",
40
39
  "test:coverage": "jest --coverage",
41
40
  "clean": "rm -rf lib coverage",
42
- "publish:local": "./scripts/publish-local.sh",
43
41
  "pack": "npm run build && npm pack",
44
42
  "reduce-fa": "node scripts/reduce-fa.js",
45
43
  "merge-fas": "node scripts/merge-fas.js",
@@ -58,6 +56,7 @@
58
56
  "@types/jest": "^29.5.14",
59
57
  "@types/js-yaml": "^4.0.9",
60
58
  "@types/mocha": "^10.0.10",
59
+ "@types/node": "^26.1.1",
61
60
  "jest": "^29.5.0",
62
61
  "js-yaml": "^4.1.1",
63
62
  "ts-jest": "^29.1.0",
@@ -65,5 +64,9 @@
65
64
  },
66
65
  "publishConfig": {
67
66
  "access": "public"
67
+ },
68
+ "dependencies": {
69
+ "elkjs": "^0.12.0",
70
+ "xml2js": "^0.6.2"
68
71
  }
69
72
  }