@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
@@ -1,410 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FiniteStateMachine = void 0;
4
- const DefaultState_1 = require("./DefaultState");
5
- /**
6
- * Concrete implementation of a finite state machine with optional state actions.
7
- *
8
- * This class supports states that can optionally implement action interfaces:
9
- * - IStateWithAfterEntryAction: Execute action when entering the state
10
- * - IStateWithBeforeExitAction: Execute action when exiting the state
11
- * - Both interfaces: Execute both entry and exit actions
12
- * - Neither interface: Traditional state machine behavior (no actions)
13
- *
14
- * @template STATE - The type representing possible states
15
- * @template SIGNAL - The type representing signals/events
16
- *
17
- * @example
18
- * ```typescript
19
- * // Basic string-based turnstile (traditional approach)
20
- * class Turnstile extends FiniteStateMachine<string, string> {
21
- * constructor() {
22
- * super(
23
- * ['locked', 'unlocked'],
24
- * ['coin', 'push'],
25
- * [
26
- * { from: 'locked', signal: 'coin', to: 'unlocked' },
27
- * { from: 'unlocked', signal: 'push', to: 'locked' }
28
- * ],
29
- * 'locked'
30
- * );
31
- * }
32
- *
33
- * ...
34
- * }
35
- *
36
-
37
- *
38
- * class TurnstileWithActions extends FiniteStateMachine<ActionState, string> {
39
- * private locked = new ActionState('locked', 'Payment required');
40
- * private unlocked = new ActionState('unlocked', 'Please proceed');
41
- *
42
- * constructor() {
43
- * super(
44
- * [this.locked, this.unlocked],
45
- * ['coin', 'push'],
46
- * [
47
- * { from: this.locked, signal: 'coin', to: this.unlocked },
48
- * { from: this.unlocked, signal: 'push', to: this.locked }
49
- * ],
50
- * this.locked
51
- * );
52
- * }
53
- *
54
- * insertCoin(): ActionState { return this.sendSignal('coin'); }
55
- * pushThrough(): ActionState { return this.sendSignal('push'); }
56
- * }
57
- *
58
- * ```
59
- */
60
- class FiniteStateMachine {
61
- /**
62
- * Creates a new finite state machine.
63
- *
64
- * @param states - Array of all possible states
65
- * @param signals - Array of all possible signals/events
66
- * @param transitions - Array of transition rules defining how signals move between states
67
- * @param startState - The initial state of the machine
68
- * @param skipValidation - When true, all structural validations are skipped (default: false)
69
- */
70
- constructor(states, signals, transitions, startState, skipValidation = false) {
71
- this.states = states;
72
- this.signals = signals;
73
- this.transitions = transitions;
74
- this.startState = startState;
75
- /**
76
- * The default state that handles invalid signals.
77
- * Set to null if no state implements IDefaultState.
78
- */
79
- this.defaultState = null;
80
- // Find states that implement IDefaultState
81
- const defaultStates = states.filter(state => this.isDefaultState(state));
82
- if (!skipValidation) {
83
- // Validate default state count
84
- if (defaultStates.length > 1) {
85
- throw new Error(`ERROR-STOP-01: Multiple states implement IDefaultState interface. ` +
86
- `Only one state can handle invalid signals. ` +
87
- `Found ${defaultStates.length} states with IDefaultState.`);
88
- }
89
- // Validate that all transition and start-state references are defined
90
- this.validateDanglingReferences();
91
- // Validate that all output signal states have at least one outgoing transition
92
- this.validateOutputSignalStates();
93
- // Validate that output-signal states do not form cycles
94
- this.validateOutputSignalCycles();
95
- // Validate that all states are reachable from the start state
96
- this.validateUnreachableStates();
97
- }
98
- // Set default state if exactly one found
99
- if (defaultStates.length === 1) {
100
- this.defaultState = defaultStates[0];
101
- }
102
- // Initialize the machine to its starting state
103
- this.currentState = startState;
104
- // Check if a current state has output signal and process it
105
- this.tryProcessStateWithOutputSignal();
106
- // Execute initial state entry action if supported
107
- this.executeEntryAction(this.currentState);
108
- }
109
- /**
110
- * Gets the current state of the state machine.
111
- *
112
- * @returns The current state
113
- */
114
- getCurrentState() {
115
- return this.currentState;
116
- }
117
- /**
118
- * Processes a signal and potentially transitions to a new state with action execution.
119
- *
120
- * This method:
121
- * 1. Finds a matching transition for the current state and signal
122
- * 2. If found and the target state is different:
123
- * a. Executes beforeExitAction on current state (if implemented)
124
- * b. Changes to the new state
125
- * c. Executes afterEntryAction on new state (if implemented)
126
- * 3. Returns the resulting state
127
- *
128
- * @param signal - The signal/event to process
129
- * @returns The resulting state after processing the signal
130
- */
131
- sendSignal(signal) {
132
- // Find a transition that matches current state and signal
133
- const transition = this.transitions.find(t => t.from === this.currentState && t.signal === signal);
134
- // If valid transition found, handle state change with actions
135
- if (transition) {
136
- this.executeStateTransition(transition);
137
- }
138
- else if (this.defaultState) {
139
- // No valid transition found, but default state exists
140
- // Execute default state's actions (entry/exit if implemented)
141
- this.executeStateActions(this.defaultState);
142
- // Current state remains unchanged
143
- }
144
- this.tryProcessStateWithOutputSignal();
145
- return this.currentState;
146
- }
147
- tryProcessStateWithOutputSignal() {
148
- if (this.isStateWithOutputSignal(this.currentState)) {
149
- // Processing of behaviour for state with inside calculated output signal
150
- this.executeStateActions(this.currentState);
151
- const stateWithOutputSignal = this.currentState;
152
- const outputSignal = stateWithOutputSignal.getOutputSignal();
153
- // Add null/undefined check to prevent errors
154
- if (outputSignal !== null && outputSignal !== undefined) {
155
- this.sendSignal(outputSignal);
156
- }
157
- }
158
- }
159
- validateUnreachableStates() {
160
- const reachable = new Set();
161
- const queue = [this.startState];
162
- reachable.add(this.startState);
163
- while (queue.length > 0) {
164
- const current = queue.shift();
165
- for (const t of this.transitions) {
166
- if (t.from === current && !reachable.has(t.to)) {
167
- reachable.add(t.to);
168
- queue.push(t.to);
169
- }
170
- }
171
- }
172
- for (const state of this.states) {
173
- if (this.isDefaultState(state))
174
- continue; // DefaultState handles invalid signals — unreachable by design
175
- if (!reachable.has(state)) {
176
- throw new Error(`ERROR-STOP-08: State '${state}' is unreachable from start state '${this.startState}'. ` +
177
- `All non-default states must be reachable from the start state via the transition graph.`);
178
- }
179
- }
180
- }
181
- validateDanglingReferences() {
182
- const stateSet = new Set(this.states);
183
- const signalSet = new Set(this.signals);
184
- if (!stateSet.has(this.startState)) {
185
- throw new Error(`ERROR-STOP-03: Start state '${this.startState}' is not in the states array. ` +
186
- `The start state must be one of the provided states.`);
187
- }
188
- for (const t of this.transitions) {
189
- if (!stateSet.has(t.from)) {
190
- throw new Error(`ERROR-STOP-04: Transition references unknown state '${t.from}' as 'from'. ` +
191
- `All transition states must be in the states array.`);
192
- }
193
- if (!stateSet.has(t.to)) {
194
- throw new Error(`ERROR-STOP-05: Transition references unknown state '${t.to}' as 'to'. ` +
195
- `All transition states must be in the states array.`);
196
- }
197
- if (!signalSet.has(t.signal)) {
198
- throw new Error(`ERROR-STOP-06: Transition references unknown signal '${String(t.signal)}'. ` +
199
- `All transition signals must be in the signals array.`);
200
- }
201
- }
202
- }
203
- validateOutputSignalStates() {
204
- for (const state of this.states) {
205
- if (this.isStateWithOutputSignal(state)) {
206
- const hasOutgoing = this.transitions.some(t => t.from === state);
207
- if (!hasOutgoing) {
208
- throw new Error(`ERROR-STOP-02: Configuration error: State '${state}' implements IStateWithOutputSignal ` +
209
- `but has no outgoing transitions. States with output signals must have ` +
210
- `at least one outgoing transition.`);
211
- }
212
- }
213
- }
214
- }
215
- validateOutputSignalCycles() {
216
- const outputStateSet = new Set(this.states.filter(s => this.isStateWithOutputSignal(s)));
217
- if (outputStateSet.size < 2)
218
- return;
219
- // Build adjacency: output state → output states reachable via one transition
220
- const adj = new Map();
221
- for (const state of outputStateSet) {
222
- adj.set(state, this.transitions
223
- .filter(t => t.from === state && outputStateSet.has(t.to))
224
- .map(t => t.to));
225
- }
226
- // DFS-based cycle detection (colour: 0=unvisited, 1=in-stack, 2=done)
227
- const visited = new Set();
228
- const onStack = new Set();
229
- const stackPath = [];
230
- const dfs = (state) => {
231
- var _a;
232
- visited.add(state);
233
- onStack.add(state);
234
- stackPath.push(state);
235
- for (const neighbor of ((_a = adj.get(state)) !== null && _a !== void 0 ? _a : [])) {
236
- if (onStack.has(neighbor)) {
237
- const cycleStart = stackPath.indexOf(neighbor);
238
- const cyclePath = [...stackPath.slice(cycleStart), neighbor];
239
- throw new Error(`ERROR-STOP-07: Circular dependency detected in output signals: ` +
240
- `${cyclePath.map(s => String(s)).join(' -> ')}. ` +
241
- `States with output signals cannot form cycles as this creates infinite loops.`);
242
- }
243
- if (!visited.has(neighbor)) {
244
- dfs(neighbor);
245
- }
246
- }
247
- onStack.delete(state);
248
- stackPath.pop();
249
- };
250
- for (const state of outputStateSet) {
251
- if (!visited.has(state)) {
252
- dfs(state);
253
- }
254
- }
255
- }
256
- isStateWithOutputSignal(state) {
257
- const obj = state;
258
- return (typeof obj === 'object' &&
259
- obj !== null &&
260
- typeof obj.getOutputSignal === 'function');
261
- }
262
- executeStateTransition(transition) {
263
- const oldState = this.currentState;
264
- const newState = transition.to;
265
- // Only execute actions if there's an actual state change
266
- if (oldState !== newState) {
267
- // Execute before exit action on current state
268
- this.executeExitAction(oldState);
269
- // Change state
270
- this.currentState = newState;
271
- // Execute after entry action on new state
272
- this.executeEntryAction(newState);
273
- }
274
- }
275
- executeStateActions(state) {
276
- this.executeEntryAction(state);
277
- this.executeExitAction(state);
278
- }
279
- /**
280
- * Type guard to check if a state is an instance of DefaultState class.
281
- *
282
- * @param state - The state to check
283
- * @returns true if the state is an instance of DefaultState
284
- */
285
- isDefaultState(state) {
286
- return state instanceof DefaultState_1.DefaultState;
287
- }
288
- /**
289
- * Type guard to check if a state implements IStateWithAfterEntryAction.
290
- *
291
- * @param state - The state to check
292
- * @returns true if the state implements afterEntryAction method
293
- */
294
- hasAfterEntryAction(state) {
295
- return typeof state === 'object' &&
296
- state !== null &&
297
- 'afterEntryAction' in state &&
298
- typeof state.afterEntryAction === 'function';
299
- }
300
- /**
301
- * Type guard to check if a state implements IStateWithBeforeExitAction.
302
- *
303
- * @param state - The state to check
304
- * @returns true if the state implements beforeExitAction method
305
- */
306
- hasBeforeExitAction(state) {
307
- return typeof state === 'object' &&
308
- state !== null &&
309
- 'beforeExitAction' in state &&
310
- typeof state.beforeExitAction === 'function';
311
- }
312
- /**
313
- * Executes the afterEntryAction on a state if it implements IStateWithAfterEntryAction.
314
- *
315
- * @param state - The state to execute the entry action on
316
- */
317
- executeEntryAction(state) {
318
- if (this.hasAfterEntryAction(state)) {
319
- state.afterEntryAction();
320
- }
321
- }
322
- /**
323
- * Executes the beforeExitAction on a state if it implements IStateWithBeforeExitAction.
324
- *
325
- * @param state - The state to execute the exit action on
326
- */
327
- executeExitAction(state) {
328
- if (this.hasBeforeExitAction(state)) {
329
- state.beforeExitAction();
330
- }
331
- }
332
- /**
333
- * Gets all possible states.
334
- *
335
- * @returns Array of all states
336
- */
337
- getAllStates() {
338
- return [...this.states];
339
- }
340
- /**
341
- * Gets all possible signals.
342
- *
343
- * @returns Array of all signals
344
- */
345
- getAllSignals() {
346
- return [...this.signals];
347
- }
348
- /**
349
- * Checks if a given signal is valid from the current state.
350
- *
351
- * @param signal - The signal to check
352
- * @returns true if the signal can trigger a transition from the current state
353
- */
354
- isValidSignalFromCurrentState(signal) {
355
- return this.transitions.some(t => t.from === this.currentState && t.signal === signal);
356
- }
357
- /**
358
- * Gets all valid signals from the current state.
359
- *
360
- * @returns Array of signals that can trigger transitions from the current state
361
- */
362
- getValidSignalsFromCurrentState() {
363
- return this.transitions
364
- .filter(t => t.from === this.currentState)
365
- .map(t => t.signal);
366
- }
367
- /**
368
- * Gets all transitions.
369
- *
370
- * @returns Array of all transitions
371
- */
372
- getTransitions() {
373
- return [...this.transitions];
374
- }
375
- /**
376
- * Checks if a signal is valid in the state machine.
377
- * @param signal - The signal to check
378
- * @returns True if the signal is valid, false otherwise.
379
- */
380
- hasSignal(signal) {
381
- return this.getAllSignals().includes(signal);
382
- }
383
- /**
384
- * Checks if a given state exists in the state machine.
385
- *
386
- * @param state - The state to check
387
- * @returns true if the state exists, false otherwise
388
- */
389
- hasState(state) {
390
- return this.getAllStates().includes(state);
391
- }
392
- /**
393
- * Gets the default state that handles invalid signals.
394
- *
395
- * @returns The default state or null if none exists
396
- */
397
- getDefaultState() {
398
- return this.defaultState;
399
- }
400
- /**
401
- * Checks if the state machine has a default state.
402
- *
403
- * @returns true if a default state exists
404
- */
405
- hasDefaultState() {
406
- return this.defaultState !== null;
407
- }
408
- }
409
- exports.FiniteStateMachine = FiniteStateMachine;
410
- //# sourceMappingURL=FiniteStateMachine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FiniteStateMachine.js","sourceRoot":"","sources":["../../src/fa/FiniteStateMachine.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Interface for states that have an action after entry.
3
- */
4
- export interface IStateWithAfterEntryAction {
5
- afterEntryAction: () => void;
6
- }
7
- /**
8
- * Interface for states that have an action before exit.
9
- */
10
- export interface IStateWithBeforeExitAction {
11
- beforeExitAction: () => void;
12
- }
13
- /**
14
- * Interface combining both entry and exit actions.
15
- */
16
- export interface IStateWithActions extends IStateWithAfterEntryAction, IStateWithBeforeExitAction {
17
- }
18
- //# sourceMappingURL=IStateWithActions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStateWithActions.d.ts","sourceRoot":"","sources":["../../src/fa/IStateWithActions.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC;AACD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,0BAA0B,EAAE,0BAA0B;CAAI"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IStateWithActions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStateWithActions.js","sourceRoot":"","sources":["../../src/fa/IStateWithActions.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- export interface IStateWithOutputSignal<SIGNAL> {
2
- getOutputSignal(): SIGNAL;
3
- }
4
- //# sourceMappingURL=IStateWithOutputSignal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStateWithOutputSignal.d.ts","sourceRoot":"","sources":["../../src/fa/IStateWithOutputSignal.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB,CAAC,MAAM;IAC1C,eAAe,IAAI,MAAM,CAAC;CAC7B"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IStateWithOutputSignal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IStateWithOutputSignal.js","sourceRoot":"","sources":["../../src/fa/IStateWithOutputSignal.ts"],"names":[],"mappings":""}
@@ -1,108 +0,0 @@
1
- import { FiniteStateMachine } from './FiniteStateMachine';
2
- import { TransitionMatrix } from './TransitionMatrix';
3
- /**
4
- * Abstract base class for finite state machines that use transition matrices.
5
- *
6
- * This class extends FiniteStateMachine to provide a more intuitive way to define
7
- * state transitions using a 2D matrix representation instead of explicit transition arrays.
8
- *
9
- * The matrix format allows for visual representation of state transitions:
10
- * - Columns represent states
11
- * - Rows represent signals
12
- * - Cell values represent target states
13
- * - Empty cells represent invalid/ignored transitions
14
- *
15
- * @template STATE - The type representing possible states
16
- * @template SIGNAL - The type representing signals/events
17
- *
18
- * @example
19
- * ```typescript
20
- * // Example 1: Using explicit start state
21
- * class TurnstileMatrix extends MatrixBasedStateMachine<string, string> {
22
- * constructor() {
23
- * const matrix = transitionMatrix([
24
- * [ , "locked" , "unlocked" ],
25
- * [ "coin" , "unlocked" , ],
26
- * [ "push" , , "locked" ]
27
- * ]);
28
- * super(matrix, "locked"); // Explicit start state
29
- * }
30
- * }
31
- *
32
- * // Example 2: Using first state as start state (auto)
33
- * class TurnstileMatrixAuto extends MatrixBasedStateMachine<string, string> {
34
- * constructor() {
35
- * const matrix = transitionMatrix([
36
- * [ , "locked" , "unlocked" ], // "locked" becomes start state
37
- * [ "coin" , "unlocked" , ],
38
- * [ "push" , , "locked" ]
39
- * ]);
40
- * super(matrix); // Uses first state ("locked") as start state
41
- * }
42
- * }
43
- * ```
44
- */
45
- export declare abstract class MatrixBasedStateMachine<STATE, SIGNAL> extends FiniteStateMachine<STATE, SIGNAL> {
46
- /**
47
- * The transition matrix used to define state transitions.
48
- * Stored for potential debugging or inspection purposes.
49
- */
50
- protected readonly matrix: TransitionMatrix<STATE, SIGNAL>;
51
- /**
52
- * Creates a new matrix-based finite state machine.
53
- *
54
- * @param matrix - The transition matrix defining all states, signals, and transitions
55
- * @param startState - Optional. The initial state of the machine. If not provided,
56
- * the first state from the matrix (first column in header row) will be used.
57
- * If provided, must be one of the states in the matrix.
58
- *
59
- * @throws {Error} If matrix has no states
60
- * @throws {Error} If startState is provided but not found in the matrix states
61
- *
62
- * @example
63
- * ```typescript
64
- * // Constructor with explicit start state
65
- * const matrix = transitionMatrix([
66
- * [ , "locked" , "unlocked" ],
67
- * [ "coin" , "unlocked" , ],
68
- * [ "push" , , "locked" ]
69
- * ]);
70
- * super(matrix, "unlocked"); // Start in unlocked state
71
- *
72
- * // Constructor with auto start state (uses first state)
73
- * super(matrix); // Automatically starts in "locked" state
74
- * ```
75
- *
76
- * @example
77
- * ```typescript
78
- * // TurnstileMatrix implementation from test/Turnstile/TurnstileMatrix.ts
79
- * class TurnstileMatrix extends MatrixBasedStateMachine<string, string> {
80
- * constructor() {
81
- * const matrix = transitionMatrix([
82
- * [ , "locked" , "unlocked" ],
83
- * [ "coin" , "unlocked" , ],
84
- * [ "push" , , "locked" ]
85
- * ]);
86
- *
87
- * // Two ways to call the constructor:
88
- * super(matrix, "locked"); // Option 1: Explicit start state
89
- * // OR
90
- * super(matrix); // Option 2: Auto start state (uses "locked")
91
- * }
92
- *
93
- * insertCoin(): string { return this.sendSignal('coin'); }
94
- * pushThrough(): string { return this.sendSignal('push'); }
95
- * isLocked(): boolean { return this.getCurrentState() === 'locked'; }
96
- * isUnlocked(): boolean { return this.getCurrentState() === 'unlocked'; }
97
- * }
98
- * ```
99
- */
100
- constructor(matrix: TransitionMatrix<STATE, SIGNAL>, startState?: STATE);
101
- /**
102
- * Gets the transition matrix used by this state machine.
103
- *
104
- * @returns The transition matrix
105
- */
106
- getMatrix(): TransitionMatrix<STATE, SIGNAL>;
107
- }
108
- //# sourceMappingURL=MatrixBasedStateMachine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MatrixBasedStateMachine.d.ts","sourceRoot":"","sources":["../../src/fa/MatrixBasedStateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,8BAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC;IAClG;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;gBACS,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK;IAqCvE;;;;OAIG;IACH,SAAS,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;CAI/C"}