@vsirotin/ts-stop 1.13.1 → 2.4.2
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/README.md +20 -5
- 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/index.js +2 -9
- 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/index.d.ts +1 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -9
- package/lib/index.js.map +1 -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 +12 -9
- 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/scripts/merge-fas.js +0 -0
- package/scripts/reduce-fa.js +0 -0
- package/scripts/update-fa.js +0 -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/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/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/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
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wiring hub between the SFSM and the "external world".
|
|
3
|
-
*
|
|
4
|
-
* - registerSignalSender(signals, sender) — declares which signal names a sender may emit.
|
|
5
|
-
* - registerCommandReceiver(commands, receiver) — declares which commands a receiver handles.
|
|
6
|
-
* - connectTo(sfsm) — wires everything: sets itself as the SFSM command receiver and
|
|
7
|
-
* calls connectSignalTarget(sfsm) on every registered signal sender.
|
|
8
|
-
*
|
|
9
|
-
* The explicit signal/command name lists enable precise runtime error messages and
|
|
10
|
-
* provide a foundation for FA-vs-wiring validation.
|
|
11
|
-
*
|
|
12
|
-
* Fluent API:
|
|
13
|
-
* new ExternalWorldHub()
|
|
14
|
-
* .registerSignalSender(['TS.s'], service)
|
|
15
|
-
* .registerSignalSender(['TS.to', 'TS.ps'], device)
|
|
16
|
-
* .registerCommandReceiver(['TS.ut', 'TS.l'], device)
|
|
17
|
-
* .connectTo(sfsm);
|
|
18
|
-
*/
|
|
19
|
-
export class ExternalWorldHub {
|
|
20
|
-
constructor() {
|
|
21
|
-
this.commandRoutes = new Map();
|
|
22
|
-
this.signalSenders = [];
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Register a command receiver for the given list of exact command names.
|
|
26
|
-
* Throws if any command name is already registered.
|
|
27
|
-
* Fluent — returns this.
|
|
28
|
-
*/
|
|
29
|
-
registerCommandReceiver(commands, receiver) {
|
|
30
|
-
for (const cmd of commands) {
|
|
31
|
-
if (this.commandRoutes.has(cmd)) {
|
|
32
|
-
throw new Error(`ExternalWorldHub: command "${cmd}" is already registered`);
|
|
33
|
-
}
|
|
34
|
-
this.commandRoutes.set(cmd, receiver);
|
|
35
|
-
}
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Register a signal sender for the given list of signal names.
|
|
40
|
-
* Duplicate signal names across registrations are allowed (same sender may be
|
|
41
|
-
* registered multiple times for documentation clarity), but will not cause
|
|
42
|
-
* double-wiring — connectSignalTarget is called once per registerSignalSender call.
|
|
43
|
-
* Fluent — returns this.
|
|
44
|
-
*/
|
|
45
|
-
registerSignalSender(signals, sender) {
|
|
46
|
-
this.signalSenders.push({ signals, sender });
|
|
47
|
-
return this;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Wire this hub to the given SFSM instance:
|
|
51
|
-
* 1. Sets this hub as the SFSM's command receiver.
|
|
52
|
-
* 2. Calls connectSignalTarget(sfsm) on every registered signal sender.
|
|
53
|
-
* Fluent — returns this.
|
|
54
|
-
*/
|
|
55
|
-
connectTo(sfsm) {
|
|
56
|
-
sfsm.setCommandReceiver(this);
|
|
57
|
-
for (const { sender } of this.signalSenders) {
|
|
58
|
-
sender.connectSignalTarget(sfsm);
|
|
59
|
-
}
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
/** ICommandReceiver implementation — dispatches command to the registered receiver. */
|
|
63
|
-
receiveCommand(command, data) {
|
|
64
|
-
const receiver = this.commandRoutes.get(command);
|
|
65
|
-
if (!receiver) {
|
|
66
|
-
const registered = [...this.commandRoutes.keys()].join(', ');
|
|
67
|
-
throw new Error(`ExternalWorldHub: no receiver registered for command "${command}". ` +
|
|
68
|
-
`Registered commands: [${registered}]`);
|
|
69
|
-
}
|
|
70
|
-
receiver.receiveCommand(command, data);
|
|
71
|
-
}
|
|
72
|
-
/** Returns all command names that have a registered receiver (for diagnostics / validation). */
|
|
73
|
-
getRegisteredCommands() {
|
|
74
|
-
return [...this.commandRoutes.keys()];
|
|
75
|
-
}
|
|
76
|
-
/** Returns all signal names that have a registered sender (for diagnostics / validation). */
|
|
77
|
-
getRegisteredSignals() {
|
|
78
|
-
return this.signalSenders.flatMap(e => e.signals);
|
|
79
|
-
}
|
|
80
|
-
}
|
package/lib/fa/DefaultState.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Marker base class for states that should be used processed by invalid signals and
|
|
3
|
-
* in situation, then no transitions set for pair (current signal, current state).
|
|
4
|
-
* Only one state in a state machine can have this role.
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class DefaultState {
|
|
7
|
-
isDefaultState(): boolean;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=DefaultState.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultState.d.ts","sourceRoot":"","sources":["../../src/fa/DefaultState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,8BAAsB,YAAY;IAC9B,cAAc,IAAI,OAAO;CAG5B"}
|
package/lib/fa/DefaultState.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultState = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Marker base class for states that should be used processed by invalid signals and
|
|
6
|
-
* in situation, then no transitions set for pair (current signal, current state).
|
|
7
|
-
* Only one state in a state machine can have this role.
|
|
8
|
-
*/
|
|
9
|
-
class DefaultState {
|
|
10
|
-
isDefaultState() {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.DefaultState = DefaultState;
|
|
15
|
-
//# sourceMappingURL=DefaultState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultState.js","sourceRoot":"","sources":["../../src/fa/DefaultState.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAsB,YAAY;IAC9B,cAAc;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAJD,oCAIC"}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { DefaultState } from './DefaultState';
|
|
2
|
-
import { IStateWithAfterEntryAction, IStateWithBeforeExitAction } from './IStateWithActions';
|
|
3
|
-
/**
|
|
4
|
-
* Represents a transition in a finite state machine.
|
|
5
|
-
*
|
|
6
|
-
* @template STATE - The type representing possible states
|
|
7
|
-
* @template SIGNAL - The type representing signals/events
|
|
8
|
-
*/
|
|
9
|
-
export interface ITransition<STATE, SIGNAL> {
|
|
10
|
-
from: STATE;
|
|
11
|
-
signal: SIGNAL;
|
|
12
|
-
to: STATE;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Interface defining the contract for a finite state machine.
|
|
16
|
-
*
|
|
17
|
-
* @template STATE - The type representing possible states in the state machine
|
|
18
|
-
* @template SIGNAL - The type representing signals/events that trigger state transitions
|
|
19
|
-
*/
|
|
20
|
-
export interface IFiniteStateMachine<STATE> {
|
|
21
|
-
/**
|
|
22
|
-
* Gets the current state of the state machine.
|
|
23
|
-
*
|
|
24
|
-
* @returns The current state
|
|
25
|
-
*/
|
|
26
|
-
getCurrentState(): STATE;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Concrete implementation of a finite state machine with optional state actions.
|
|
30
|
-
*
|
|
31
|
-
* This class supports states that can optionally implement action interfaces:
|
|
32
|
-
* - IStateWithAfterEntryAction: Execute action when entering the state
|
|
33
|
-
* - IStateWithBeforeExitAction: Execute action when exiting the state
|
|
34
|
-
* - Both interfaces: Execute both entry and exit actions
|
|
35
|
-
* - Neither interface: Traditional state machine behavior (no actions)
|
|
36
|
-
*
|
|
37
|
-
* @template STATE - The type representing possible states
|
|
38
|
-
* @template SIGNAL - The type representing signals/events
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* // Basic string-based turnstile (traditional approach)
|
|
43
|
-
* class Turnstile extends FiniteStateMachine<string, string> {
|
|
44
|
-
* constructor() {
|
|
45
|
-
* super(
|
|
46
|
-
* ['locked', 'unlocked'],
|
|
47
|
-
* ['coin', 'push'],
|
|
48
|
-
* [
|
|
49
|
-
* { from: 'locked', signal: 'coin', to: 'unlocked' },
|
|
50
|
-
* { from: 'unlocked', signal: 'push', to: 'locked' }
|
|
51
|
-
* ],
|
|
52
|
-
* 'locked'
|
|
53
|
-
* );
|
|
54
|
-
* }
|
|
55
|
-
*
|
|
56
|
-
* ...
|
|
57
|
-
* }
|
|
58
|
-
*
|
|
59
|
-
|
|
60
|
-
*
|
|
61
|
-
* class TurnstileWithActions extends FiniteStateMachine<ActionState, string> {
|
|
62
|
-
* private locked = new ActionState('locked', 'Payment required');
|
|
63
|
-
* private unlocked = new ActionState('unlocked', 'Please proceed');
|
|
64
|
-
*
|
|
65
|
-
* constructor() {
|
|
66
|
-
* super(
|
|
67
|
-
* [this.locked, this.unlocked],
|
|
68
|
-
* ['coin', 'push'],
|
|
69
|
-
* [
|
|
70
|
-
* { from: this.locked, signal: 'coin', to: this.unlocked },
|
|
71
|
-
* { from: this.unlocked, signal: 'push', to: this.locked }
|
|
72
|
-
* ],
|
|
73
|
-
* this.locked
|
|
74
|
-
* );
|
|
75
|
-
* }
|
|
76
|
-
*
|
|
77
|
-
* insertCoin(): ActionState { return this.sendSignal('coin'); }
|
|
78
|
-
* pushThrough(): ActionState { return this.sendSignal('push'); }
|
|
79
|
-
* }
|
|
80
|
-
*
|
|
81
|
-
* ```
|
|
82
|
-
*/
|
|
83
|
-
export declare abstract class FiniteStateMachine<STATE, SIGNAL> implements IFiniteStateMachine<STATE> {
|
|
84
|
-
protected states: STATE[];
|
|
85
|
-
protected signals: SIGNAL[];
|
|
86
|
-
protected transitions: ITransition<STATE, SIGNAL>[];
|
|
87
|
-
protected startState: STATE;
|
|
88
|
-
/**
|
|
89
|
-
* The current state of the state machine.
|
|
90
|
-
* Protected to allow subclass access while maintaining encapsulation.
|
|
91
|
-
*/
|
|
92
|
-
protected currentState: STATE;
|
|
93
|
-
/**
|
|
94
|
-
* The default state that handles invalid signals.
|
|
95
|
-
* Set to null if no state implements IDefaultState.
|
|
96
|
-
*/
|
|
97
|
-
private defaultState;
|
|
98
|
-
/**
|
|
99
|
-
* Creates a new finite state machine.
|
|
100
|
-
*
|
|
101
|
-
* @param states - Array of all possible states
|
|
102
|
-
* @param signals - Array of all possible signals/events
|
|
103
|
-
* @param transitions - Array of transition rules defining how signals move between states
|
|
104
|
-
* @param startState - The initial state of the machine
|
|
105
|
-
* @param skipValidation - When true, all structural validations are skipped (default: false)
|
|
106
|
-
*/
|
|
107
|
-
constructor(states: STATE[], signals: SIGNAL[], transitions: ITransition<STATE, SIGNAL>[], startState: STATE, skipValidation?: boolean);
|
|
108
|
-
/**
|
|
109
|
-
* Gets the current state of the state machine.
|
|
110
|
-
*
|
|
111
|
-
* @returns The current state
|
|
112
|
-
*/
|
|
113
|
-
getCurrentState(): STATE;
|
|
114
|
-
/**
|
|
115
|
-
* Processes a signal and potentially transitions to a new state with action execution.
|
|
116
|
-
*
|
|
117
|
-
* This method:
|
|
118
|
-
* 1. Finds a matching transition for the current state and signal
|
|
119
|
-
* 2. If found and the target state is different:
|
|
120
|
-
* a. Executes beforeExitAction on current state (if implemented)
|
|
121
|
-
* b. Changes to the new state
|
|
122
|
-
* c. Executes afterEntryAction on new state (if implemented)
|
|
123
|
-
* 3. Returns the resulting state
|
|
124
|
-
*
|
|
125
|
-
* @param signal - The signal/event to process
|
|
126
|
-
* @returns The resulting state after processing the signal
|
|
127
|
-
*/
|
|
128
|
-
protected sendSignal(signal: SIGNAL): STATE;
|
|
129
|
-
private tryProcessStateWithOutputSignal;
|
|
130
|
-
private validateUnreachableStates;
|
|
131
|
-
private validateDanglingReferences;
|
|
132
|
-
private validateOutputSignalStates;
|
|
133
|
-
private validateOutputSignalCycles;
|
|
134
|
-
private isStateWithOutputSignal;
|
|
135
|
-
private executeStateTransition;
|
|
136
|
-
private executeStateActions;
|
|
137
|
-
/**
|
|
138
|
-
* Type guard to check if a state is an instance of DefaultState class.
|
|
139
|
-
*
|
|
140
|
-
* @param state - The state to check
|
|
141
|
-
* @returns true if the state is an instance of DefaultState
|
|
142
|
-
*/
|
|
143
|
-
protected isDefaultState(state: STATE): boolean;
|
|
144
|
-
/**
|
|
145
|
-
* Type guard to check if a state implements IStateWithAfterEntryAction.
|
|
146
|
-
*
|
|
147
|
-
* @param state - The state to check
|
|
148
|
-
* @returns true if the state implements afterEntryAction method
|
|
149
|
-
*/
|
|
150
|
-
protected hasAfterEntryAction(state: STATE): state is STATE & IStateWithAfterEntryAction;
|
|
151
|
-
/**
|
|
152
|
-
* Type guard to check if a state implements IStateWithBeforeExitAction.
|
|
153
|
-
*
|
|
154
|
-
* @param state - The state to check
|
|
155
|
-
* @returns true if the state implements beforeExitAction method
|
|
156
|
-
*/
|
|
157
|
-
protected hasBeforeExitAction(state: STATE): state is STATE & IStateWithBeforeExitAction;
|
|
158
|
-
/**
|
|
159
|
-
* Executes the afterEntryAction on a state if it implements IStateWithAfterEntryAction.
|
|
160
|
-
*
|
|
161
|
-
* @param state - The state to execute the entry action on
|
|
162
|
-
*/
|
|
163
|
-
private executeEntryAction;
|
|
164
|
-
/**
|
|
165
|
-
* Executes the beforeExitAction on a state if it implements IStateWithBeforeExitAction.
|
|
166
|
-
*
|
|
167
|
-
* @param state - The state to execute the exit action on
|
|
168
|
-
*/
|
|
169
|
-
private executeExitAction;
|
|
170
|
-
/**
|
|
171
|
-
* Gets all possible states.
|
|
172
|
-
*
|
|
173
|
-
* @returns Array of all states
|
|
174
|
-
*/
|
|
175
|
-
getAllStates(): STATE[];
|
|
176
|
-
/**
|
|
177
|
-
* Gets all possible signals.
|
|
178
|
-
*
|
|
179
|
-
* @returns Array of all signals
|
|
180
|
-
*/
|
|
181
|
-
getAllSignals(): SIGNAL[];
|
|
182
|
-
/**
|
|
183
|
-
* Checks if a given signal is valid from the current state.
|
|
184
|
-
*
|
|
185
|
-
* @param signal - The signal to check
|
|
186
|
-
* @returns true if the signal can trigger a transition from the current state
|
|
187
|
-
*/
|
|
188
|
-
isValidSignalFromCurrentState(signal: SIGNAL): boolean;
|
|
189
|
-
/**
|
|
190
|
-
* Gets all valid signals from the current state.
|
|
191
|
-
*
|
|
192
|
-
* @returns Array of signals that can trigger transitions from the current state
|
|
193
|
-
*/
|
|
194
|
-
getValidSignalsFromCurrentState(): SIGNAL[];
|
|
195
|
-
/**
|
|
196
|
-
* Gets all transitions.
|
|
197
|
-
*
|
|
198
|
-
* @returns Array of all transitions
|
|
199
|
-
*/
|
|
200
|
-
getTransitions(): ITransition<STATE, SIGNAL>[];
|
|
201
|
-
/**
|
|
202
|
-
* Checks if a signal is valid in the state machine.
|
|
203
|
-
* @param signal - The signal to check
|
|
204
|
-
* @returns True if the signal is valid, false otherwise.
|
|
205
|
-
*/
|
|
206
|
-
hasSignal(signal: SIGNAL): boolean;
|
|
207
|
-
/**
|
|
208
|
-
* Checks if a given state exists in the state machine.
|
|
209
|
-
*
|
|
210
|
-
* @param state - The state to check
|
|
211
|
-
* @returns true if the state exists, false otherwise
|
|
212
|
-
*/
|
|
213
|
-
hasState(state: STATE): boolean;
|
|
214
|
-
/**
|
|
215
|
-
* Gets the default state that handles invalid signals.
|
|
216
|
-
*
|
|
217
|
-
* @returns The default state or null if none exists
|
|
218
|
-
*/
|
|
219
|
-
getDefaultState(): DefaultState | null;
|
|
220
|
-
/**
|
|
221
|
-
* Checks if the state machine has a default state.
|
|
222
|
-
*
|
|
223
|
-
* @returns true if a default state exists
|
|
224
|
-
*/
|
|
225
|
-
hasDefaultState(): boolean;
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=FiniteStateMachine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FiniteStateMachine.d.ts","sourceRoot":"","sources":["../../src/fa/FiniteStateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAG7F;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,MAAM;IACtC,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,KAAK,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,KAAK;IACtC;;;;OAIG;IACH,eAAe,IAAI,KAAK,CAAC;CAE5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,8BAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAE,YAAW,mBAAmB,CAAC,KAAK,CAAC;IAuBrF,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE;IAC3B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;IACnD,SAAS,CAAC,UAAU,EAAE,KAAK;IAzB/B;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE1B;;;GAGD;IACH,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;;;;;OAQG;gBAEW,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EACzC,UAAU,EAAE,KAAK,EAC3B,cAAc,GAAE,OAAe;IA2CnC;;;;OAIG;IACH,eAAe,IAAI,KAAK;IAIxB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAqB3C,OAAO,CAAC,+BAA+B;IAcvC,OAAO,CAAC,yBAAyB;IA0BjC,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,0BAA0B;IAmDlC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,mBAAmB;IAK3B;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI/C;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,0BAA0B;IAOxF;;;;;OAKG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,0BAA0B;IAOxF;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;OAIG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;;;OAIG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;OAKG;IACH,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAMtD;;;;OAIG;IACH,+BAA+B,IAAI,MAAM,EAAE;IAM3C;;;;OAIG;IACH,cAAc,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;IAI9C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAI3B;;;;GAID;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC;;;;OAIG;IACH,eAAe,IAAI,OAAO;CAG7B"}
|