xstate 4.9.1 → 4.10.0
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/CHANGELOG.md +22 -0
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +1 -1
- package/es/Machine.d.ts +4 -1
- package/es/State.d.ts +9 -4
- package/es/StateNode.d.ts +4 -1
- package/es/StateNode.js +10 -7
- package/es/actions.d.ts +12 -10
- package/es/actions.js +2 -2
- package/es/interpreter.d.ts +11 -11
- package/es/interpreter.js +6 -2
- package/es/types.d.ts +14 -7
- package/lib/Machine.d.ts +4 -1
- package/lib/State.d.ts +9 -4
- package/lib/StateNode.d.ts +4 -1
- package/lib/StateNode.js +7 -7
- package/lib/actions.d.ts +12 -10
- package/lib/actions.js +2 -2
- package/lib/interpreter.d.ts +11 -11
- package/lib/interpreter.js +4 -2
- package/lib/types.d.ts +14 -7
- package/package.json +1 -1
package/es/State.d.ts
CHANGED
|
@@ -2,9 +2,12 @@ import { StateValue, ActivityMap, EventObject, HistoryValue, ActionObject, Event
|
|
|
2
2
|
import { StateNode } from './StateNode';
|
|
3
3
|
import { Actor } from './Actor';
|
|
4
4
|
export declare function stateValuesEqual(a: StateValue | undefined, b: StateValue | undefined): boolean;
|
|
5
|
-
export declare function isState<TContext, TEvent extends EventObject>(state: object | string): state is State<TContext, TEvent>;
|
|
5
|
+
export declare function isState<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = any>(state: object | string): state is State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
6
6
|
export declare function bindActionToState<TC, TE extends EventObject>(action: ActionObject<TC, TE>, state: State<TC, TE>): ActionObject<TC, TE>;
|
|
7
|
-
export declare class State<TContext, TEvent extends EventObject = EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> =
|
|
7
|
+
export declare class State<TContext, TEvent extends EventObject = EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
|
|
8
|
+
value: any;
|
|
9
|
+
context: TContext;
|
|
10
|
+
}> {
|
|
8
11
|
value: StateValue;
|
|
9
12
|
context: TContext;
|
|
10
13
|
historyValue?: HistoryValue | undefined;
|
|
@@ -86,8 +89,10 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
|
|
|
86
89
|
* Whether the current state value is a subset of the given parent state value.
|
|
87
90
|
* @param parentStateValue
|
|
88
91
|
*/
|
|
89
|
-
matches<TSV extends TTypestate['value']>(parentStateValue: TSV): this is TTypestate extends {
|
|
92
|
+
matches<TSV extends TTypestate['value']>(parentStateValue: TSV): this is State<(TTypestate extends {
|
|
93
|
+
value: TSV;
|
|
94
|
+
} ? TTypestate : never)['context'], TEvent, TStateSchema, TTypestate> & {
|
|
90
95
|
value: TSV;
|
|
91
|
-
}
|
|
96
|
+
};
|
|
92
97
|
}
|
|
93
98
|
//# sourceMappingURL=State.d.ts.map
|
package/es/StateNode.d.ts
CHANGED
|
@@ -190,7 +190,10 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
|
|
|
190
190
|
* @param event The event that was sent at the current state
|
|
191
191
|
* @param context The current context (extended state) of the current state
|
|
192
192
|
*/
|
|
193
|
-
transition(state: string | StateValueMap | State<TContext, TEvent, any,
|
|
193
|
+
transition(state: string | StateValueMap | State<TContext, TEvent, any, {
|
|
194
|
+
value: any;
|
|
195
|
+
context: TContext;
|
|
196
|
+
}> | undefined, event: Event<TEvent> | SCXML.Event<TEvent>, context?: TContext): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
194
197
|
private resolveRaisedTransition;
|
|
195
198
|
private resolveTransition;
|
|
196
199
|
/**
|
package/es/StateNode.js
CHANGED
|
@@ -843,9 +843,9 @@ function () {
|
|
|
843
843
|
var action = actions_1_1.value;
|
|
844
844
|
|
|
845
845
|
if (action.type === start$1) {
|
|
846
|
-
activities[action.activity.type] = action;
|
|
846
|
+
activities[action.activity.id || action.activity.type] = action;
|
|
847
847
|
} else if (action.type === stop$1) {
|
|
848
|
-
activities[action.activity.type] = false;
|
|
848
|
+
activities[action.activity.id || action.activity.type] = false;
|
|
849
849
|
}
|
|
850
850
|
}
|
|
851
851
|
} catch (e_6_1) {
|
|
@@ -1433,11 +1433,8 @@ function () {
|
|
|
1433
1433
|
target: target,
|
|
1434
1434
|
source: this,
|
|
1435
1435
|
internal: internal,
|
|
1436
|
-
eventType: transitionConfig.event
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
Object.defineProperty(transition, 'toJSON', {
|
|
1440
|
-
value: function () {
|
|
1436
|
+
eventType: transitionConfig.event,
|
|
1437
|
+
toJSON: function () {
|
|
1441
1438
|
return __assign(__assign({}, transition), {
|
|
1442
1439
|
target: transition.target ? transition.target.map(function (t) {
|
|
1443
1440
|
return "#" + t.id;
|
|
@@ -1446,6 +1443,7 @@ function () {
|
|
|
1446
1443
|
});
|
|
1447
1444
|
}
|
|
1448
1445
|
});
|
|
1446
|
+
|
|
1449
1447
|
return transition;
|
|
1450
1448
|
};
|
|
1451
1449
|
|
|
@@ -1479,6 +1477,11 @@ function () {
|
|
|
1479
1477
|
}
|
|
1480
1478
|
|
|
1481
1479
|
var doneConfig = this.config.onDone ? toTransitionConfigArray(String(done(this.id)), this.config.onDone) : [];
|
|
1480
|
+
|
|
1481
|
+
if (!IS_PRODUCTION) {
|
|
1482
|
+
warn(!(this.config.onDone && !this.parent), "Root nodes cannot have an \".onDone\" transition. Please check the config of \"" + this.id + "\".");
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1482
1485
|
var invokeConfig = flatten(this.invoke.map(function (invokeDef) {
|
|
1483
1486
|
var settleTransitions = [];
|
|
1484
1487
|
|
package/es/actions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseConditon, ChooseAction } from './types';
|
|
1
|
+
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseConditon, ChooseAction, AnyEventObject } from './types';
|
|
2
2
|
import * as actionTypes from './actionTypes';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
@@ -8,7 +8,7 @@ export declare const initEvent: SCXML.Event<{
|
|
|
8
8
|
}>;
|
|
9
9
|
export declare function getActionFunction<TContext, TEvent extends EventObject>(actionType: ActionType, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | undefined;
|
|
10
10
|
export declare function toActionObject<TContext, TEvent extends EventObject>(action: Action<TContext, TEvent>, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent>;
|
|
11
|
-
export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: string | RaiseAction<
|
|
11
|
+
export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: string | RaiseAction<AnyEventObject> | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | AssignAction<Required<TContext>, TEvent> | SendAction<TContext, TEvent, AnyEventObject> | ChooseAction<TContext, TEvent> | Action<TContext, TEvent>[] | undefined, actionFunctionMap?: Record<string, ActionFunction<TContext, TEvent> | ActionObject<TContext, TEvent>> | undefined) => ActionObject<TContext, TEvent>[];
|
|
12
12
|
export declare function toActivityDefinition<TContext, TEvent extends EventObject>(action: string | ActivityDefinition<TContext, TEvent>): ActivityDefinition<TContext, TEvent>;
|
|
13
13
|
/**
|
|
14
14
|
* Raises an event. This places the event in the internal event queue, so that
|
|
@@ -16,7 +16,7 @@ export declare function toActivityDefinition<TContext, TEvent extends EventObjec
|
|
|
16
16
|
*
|
|
17
17
|
* @param eventType The event to raise.
|
|
18
18
|
*/
|
|
19
|
-
export declare function raise<TContext, TEvent extends EventObject>(event: Event<TEvent>): RaiseAction<TEvent> | SendAction<TContext, TEvent>;
|
|
19
|
+
export declare function raise<TContext, TEvent extends EventObject>(event: Event<TEvent>): RaiseAction<TEvent> | SendAction<TContext, TEvent, TEvent>;
|
|
20
20
|
export declare function resolveRaise<TEvent extends EventObject>(action: RaiseAction<TEvent>): RaiseActionObject<TEvent>;
|
|
21
21
|
/**
|
|
22
22
|
* Sends an event. This returns an action that will be read by an interpreter to
|
|
@@ -28,26 +28,28 @@ export declare function resolveRaise<TEvent extends EventObject>(action: RaiseAc
|
|
|
28
28
|
* - `delay` - The number of milliseconds to delay the sending of the event.
|
|
29
29
|
* - `to` - The target of this event (by default, the machine the event was sent from).
|
|
30
30
|
*/
|
|
31
|
-
export declare function send<TContext, TEvent extends EventObject>(event: Event<
|
|
32
|
-
export declare function resolveSend<TContext, TEvent extends EventObject>(action: SendAction<TContext, TEvent>, ctx: TContext, _event: SCXML.Event<TEvent>, delaysMap?: DelayFunctionMap<TContext, TEvent>): SendActionObject<TContext, TEvent>;
|
|
31
|
+
export declare function send<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TSentEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, TSentEvent>;
|
|
32
|
+
export declare function resolveSend<TContext, TEvent extends EventObject, TSentEvent extends EventObject>(action: SendAction<TContext, TEvent, TSentEvent>, ctx: TContext, _event: SCXML.Event<TEvent>, delaysMap?: DelayFunctionMap<TContext, TEvent>): SendActionObject<TContext, TEvent, TSentEvent>;
|
|
33
33
|
/**
|
|
34
34
|
* Sends an event to this machine's parent.
|
|
35
35
|
*
|
|
36
36
|
* @param event The event to send to the parent machine.
|
|
37
37
|
* @param options Options to pass into the send event.
|
|
38
38
|
*/
|
|
39
|
-
export declare function sendParent<TContext, TEvent extends EventObject>(event: Event<
|
|
39
|
+
export declare function sendParent<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TSentEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, TSentEvent>;
|
|
40
40
|
/**
|
|
41
41
|
* Sends an update event to this machine's parent.
|
|
42
42
|
*/
|
|
43
|
-
export declare function sendUpdate<TContext, TEvent extends EventObject>(): SendAction<TContext, TEvent
|
|
43
|
+
export declare function sendUpdate<TContext, TEvent extends EventObject>(): SendAction<TContext, TEvent, {
|
|
44
|
+
type: ActionTypes.Update;
|
|
45
|
+
}>;
|
|
44
46
|
/**
|
|
45
47
|
* Sends an event back to the sender of the original event.
|
|
46
48
|
*
|
|
47
49
|
* @param event The event to send back to the sender
|
|
48
50
|
* @param options Options to pass into the send event
|
|
49
51
|
*/
|
|
50
|
-
export declare function respond<TContext, TEvent extends EventObject>(event: Event<TEvent> | SendExpr<TContext, TEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
52
|
+
export declare function respond<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
51
53
|
/**
|
|
52
54
|
*
|
|
53
55
|
* @param expr The expression function to evaluate which will be logged.
|
|
@@ -119,7 +121,7 @@ export declare function pure<TContext, TEvent extends EventObject>(getActions: (
|
|
|
119
121
|
* @param target The target service to forward the event to.
|
|
120
122
|
* @param options Options to pass into the send action creator.
|
|
121
123
|
*/
|
|
122
|
-
export declare function forwardTo<TContext, TEvent extends EventObject>(target: Required<SendActionOptions<TContext, TEvent>>['to'], options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
124
|
+
export declare function forwardTo<TContext, TEvent extends EventObject>(target: Required<SendActionOptions<TContext, TEvent>>['to'], options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
123
125
|
/**
|
|
124
126
|
* Escalates an error by sending it as an event to this machine's parent.
|
|
125
127
|
*
|
|
@@ -127,7 +129,7 @@ export declare function forwardTo<TContext, TEvent extends EventObject>(target:
|
|
|
127
129
|
* takes in the `context`, `event`, and `meta`, and returns the error data to send.
|
|
128
130
|
* @param options Options to pass into the send action creator.
|
|
129
131
|
*/
|
|
130
|
-
export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
132
|
+
export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
131
133
|
export declare function choose<TContext, TEvent extends EventObject>(conds: Array<ChooseConditon<TContext, TEvent>>): ChooseAction<TContext, TEvent>;
|
|
132
134
|
export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent>, currentState: State<TContext, TEvent> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actions: Array<ActionObject<TContext, TEvent>>): [Array<ActionObject<TContext, TEvent>>, TContext];
|
|
133
135
|
//# sourceMappingURL=actions.d.ts.map
|
package/es/actions.js
CHANGED
|
@@ -450,7 +450,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions)
|
|
|
450
450
|
return [];
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
-
var resolved = resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions)));
|
|
453
|
+
var resolved = resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions));
|
|
454
454
|
updatedContext = resolved[1];
|
|
455
455
|
return resolved[0];
|
|
456
456
|
}
|
|
@@ -463,7 +463,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions)
|
|
|
463
463
|
return [];
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
-
var resolved = resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions)));
|
|
466
|
+
var resolved = resolveActions(machine, currentState, updatedContext, _event, toActionObjects(toArray(matchedActions), machine.options.actions));
|
|
467
467
|
updatedContext = resolved[1];
|
|
468
468
|
return resolved[0];
|
|
469
469
|
}
|
package/es/interpreter.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, DoneEvent, Unsubscribable, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate } from './types';
|
|
2
2
|
import { State } from './State';
|
|
3
3
|
import { Actor } from './Actor';
|
|
4
|
-
export declare type StateListener<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext> = any> = (state: State<TContext, TEvent,
|
|
4
|
+
export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = any> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
|
|
5
5
|
export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
|
|
6
6
|
export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
|
|
7
7
|
export declare type Listener = () => void;
|
|
@@ -14,7 +14,7 @@ interface SpawnOptions {
|
|
|
14
14
|
autoForward?: boolean;
|
|
15
15
|
sync?: boolean;
|
|
16
16
|
}
|
|
17
|
-
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = any> implements Actor<State<TContext, TEvent>, TEvent> {
|
|
17
|
+
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = any> implements Actor<State<TContext, TEvent, TStateSchema, TTypestate>, TEvent> {
|
|
18
18
|
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
19
19
|
/**
|
|
20
20
|
* The default interpreter options:
|
|
@@ -63,8 +63,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
63
63
|
* @param options Interpreter options
|
|
64
64
|
*/
|
|
65
65
|
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?: Partial<InterpreterOptions>);
|
|
66
|
-
get initialState(): State<TContext, TEvent>;
|
|
67
|
-
get state(): State<TContext, TEvent,
|
|
66
|
+
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
67
|
+
get state(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
68
68
|
static interpret: typeof interpret;
|
|
69
69
|
/**
|
|
70
70
|
* Executes the actions of the given state, with that state's `context` and `event`.
|
|
@@ -72,9 +72,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
72
72
|
* @param state The state whose actions will be executed
|
|
73
73
|
* @param actionsConfig The action implementations to use
|
|
74
74
|
*/
|
|
75
|
-
execute(state: State<TContext, TEvent>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
75
|
+
execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
76
76
|
private update;
|
|
77
|
-
onTransition(listener: StateListener<TContext, TEvent, TTypestate>): this;
|
|
77
|
+
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate>): this;
|
|
78
78
|
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate>>): Unsubscribable;
|
|
79
79
|
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Unsubscribable;
|
|
80
80
|
/**
|
|
@@ -110,12 +110,12 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
110
110
|
/**
|
|
111
111
|
* Alias for Interpreter.prototype.start
|
|
112
112
|
*/
|
|
113
|
-
init: (initialState?: string | State<TContext, TEvent,
|
|
113
|
+
init: (initialState?: string | State<TContext, TEvent, TStateSchema, TTypestate> | import("./types").StateValueMap | undefined) => Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
114
114
|
/**
|
|
115
115
|
* Starts the interpreter from the given state, or the initial state.
|
|
116
116
|
* @param initialState The state to start the statechart from
|
|
117
117
|
*/
|
|
118
|
-
start(initialState?: State<TContext, TEvent> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
118
|
+
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
119
119
|
/**
|
|
120
120
|
* Stops the interpreter and unsubscribe all listeners.
|
|
121
121
|
*
|
|
@@ -131,14 +131,14 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
131
131
|
*
|
|
132
132
|
* @param event The event(s) to send
|
|
133
133
|
*/
|
|
134
|
-
send: (event: TEvent | TEvent["type"] | Event<TEvent>[] | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent,
|
|
134
|
+
send: (event: TEvent | TEvent["type"] | Event<TEvent>[] | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
135
135
|
private batch;
|
|
136
136
|
/**
|
|
137
137
|
* Returns a send function bound to this interpreter instance.
|
|
138
138
|
*
|
|
139
139
|
* @param event The event to be sent by the sender.
|
|
140
140
|
*/
|
|
141
|
-
sender(event: Event<TEvent>): () => State<TContext, TEvent>;
|
|
141
|
+
sender(event: Event<TEvent>): () => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
142
142
|
private sendTo;
|
|
143
143
|
/**
|
|
144
144
|
* Returns the next state given the interpreter's current state and the event.
|
|
@@ -147,7 +147,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
147
147
|
*
|
|
148
148
|
* @param event The event to determine the next state
|
|
149
149
|
*/
|
|
150
|
-
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent>;
|
|
150
|
+
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
151
151
|
private forward;
|
|
152
152
|
private defer;
|
|
153
153
|
private cancel;
|
package/es/interpreter.js
CHANGED
|
@@ -736,9 +736,13 @@ function () {
|
|
|
736
736
|
};
|
|
737
737
|
|
|
738
738
|
Interpreter.prototype.exec = function (action, state, actionFunctionMap) {
|
|
739
|
+
if (actionFunctionMap === void 0) {
|
|
740
|
+
actionFunctionMap = this.machine.options.actions;
|
|
741
|
+
}
|
|
742
|
+
|
|
739
743
|
var context = state.context,
|
|
740
744
|
_event = state._event;
|
|
741
|
-
var actionOrExec = getActionFunction(action.type, actionFunctionMap)
|
|
745
|
+
var actionOrExec = action.exec || getActionFunction(action.type, actionFunctionMap);
|
|
742
746
|
var exec = isFunction(actionOrExec) ? actionOrExec : actionOrExec ? actionOrExec.exec : action.exec;
|
|
743
747
|
|
|
744
748
|
if (exec) {
|
|
@@ -787,7 +791,7 @@ function () {
|
|
|
787
791
|
// (such as in transient states)
|
|
788
792
|
// don't bother starting the activity.
|
|
789
793
|
|
|
790
|
-
if (!this.state.activities[activity.type]) {
|
|
794
|
+
if (!this.state.activities[activity.id || activity.type]) {
|
|
791
795
|
break;
|
|
792
796
|
} // Invoked services
|
|
793
797
|
|
package/es/types.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface ChooseConditon<TContext, TEvent extends EventObject> {
|
|
|
54
54
|
cond?: Condition<TContext, TEvent>;
|
|
55
55
|
actions: Actions<TContext, TEvent>;
|
|
56
56
|
}
|
|
57
|
-
export declare type Action<TContext, TEvent extends EventObject> = ActionType | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | AssignAction<Required<TContext>, TEvent> | SendAction<TContext, AnyEventObject> | RaiseAction<AnyEventObject> | ChooseAction<TContext, TEvent>;
|
|
57
|
+
export declare type Action<TContext, TEvent extends EventObject> = ActionType | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | AssignAction<Required<TContext>, TEvent> | SendAction<TContext, TEvent, AnyEventObject> | RaiseAction<AnyEventObject> | ChooseAction<TContext, TEvent>;
|
|
58
58
|
export declare type Actions<TContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
|
|
59
59
|
export declare type StateKey = string | State<any>;
|
|
60
60
|
export interface StateValueMap {
|
|
@@ -541,22 +541,22 @@ export interface LogAction<TContext, TEvent extends EventObject> extends ActionO
|
|
|
541
541
|
export interface LogActionObject<TContext, TEvent extends EventObject> extends LogAction<TContext, TEvent> {
|
|
542
542
|
value: any;
|
|
543
543
|
}
|
|
544
|
-
export interface SendAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
|
|
544
|
+
export interface SendAction<TContext, TEvent extends EventObject, TSentEvent extends EventObject> extends ActionObject<TContext, TEvent> {
|
|
545
545
|
to: string | number | Actor | ExprWithMeta<TContext, TEvent, string | number | Actor> | undefined;
|
|
546
|
-
event:
|
|
546
|
+
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
547
547
|
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
548
548
|
id: string | number;
|
|
549
549
|
}
|
|
550
|
-
export interface SendActionObject<TContext, TEvent extends EventObject> extends SendAction<TContext, TEvent> {
|
|
550
|
+
export interface SendActionObject<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> extends SendAction<TContext, TEvent, TSentEvent> {
|
|
551
551
|
to: string | number | Actor | undefined;
|
|
552
|
-
_event: SCXML.Event<
|
|
553
|
-
event:
|
|
552
|
+
_event: SCXML.Event<TSentEvent>;
|
|
553
|
+
event: TSentEvent;
|
|
554
554
|
delay?: number;
|
|
555
555
|
id: string | number;
|
|
556
556
|
}
|
|
557
557
|
export declare type Expr<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
|
|
558
558
|
export declare type ExprWithMeta<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: SCXMLEventMeta<TEvent>) => T;
|
|
559
|
-
export declare type SendExpr<TContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent,
|
|
559
|
+
export declare type SendExpr<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
560
560
|
export declare enum SpecialTargets {
|
|
561
561
|
Parent = "#_parent",
|
|
562
562
|
Internal = "#_internal"
|
|
@@ -599,6 +599,13 @@ export interface TransitionDefinition<TContext, TEvent extends EventObject> exte
|
|
|
599
599
|
actions: Array<ActionObject<TContext, TEvent>>;
|
|
600
600
|
cond?: Guard<TContext, TEvent>;
|
|
601
601
|
eventType: TEvent['type'] | NullEvent['type'] | '*';
|
|
602
|
+
toJSON: () => {
|
|
603
|
+
target: string[] | undefined;
|
|
604
|
+
source: string;
|
|
605
|
+
actions: Array<ActionObject<TContext, TEvent>>;
|
|
606
|
+
cond?: Guard<TContext, TEvent>;
|
|
607
|
+
eventType: TEvent['type'] | NullEvent['type'] | '*';
|
|
608
|
+
};
|
|
602
609
|
}
|
|
603
610
|
export declare type TransitionDefinitionMap<TContext, TEvent extends EventObject> = {
|
|
604
611
|
[K in TEvent['type'] | NullEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
|
package/lib/Machine.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { StateMachine, MachineOptions, DefaultContext, MachineConfig, StateSchema, EventObject, AnyEventObject, Typestate } from './types';
|
|
2
2
|
export declare function Machine<TContext = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, any, TEvent>, options?: Partial<MachineOptions<TContext, TEvent>>, initialContext?: TContext): StateMachine<TContext, any, TEvent>;
|
|
3
3
|
export declare function Machine<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = AnyEventObject>(config: MachineConfig<TContext, TStateSchema, TEvent>, options?: Partial<MachineOptions<TContext, TEvent>>, initialContext?: TContext): StateMachine<TContext, TStateSchema, TEvent>;
|
|
4
|
-
export declare function createMachine<TContext, TEvent extends EventObject = AnyEventObject, TTypestate extends Typestate<TContext> =
|
|
4
|
+
export declare function createMachine<TContext, TEvent extends EventObject = AnyEventObject, TTypestate extends Typestate<TContext> = {
|
|
5
|
+
value: any;
|
|
6
|
+
context: TContext;
|
|
7
|
+
}>(config: MachineConfig<TContext, any, TEvent>, options?: Partial<MachineOptions<TContext, TEvent>>): StateMachine<TContext, any, TEvent, TTypestate>;
|
|
5
8
|
//# sourceMappingURL=Machine.d.ts.map
|
package/lib/State.d.ts
CHANGED
|
@@ -2,9 +2,12 @@ import { StateValue, ActivityMap, EventObject, HistoryValue, ActionObject, Event
|
|
|
2
2
|
import { StateNode } from './StateNode';
|
|
3
3
|
import { Actor } from './Actor';
|
|
4
4
|
export declare function stateValuesEqual(a: StateValue | undefined, b: StateValue | undefined): boolean;
|
|
5
|
-
export declare function isState<TContext, TEvent extends EventObject>(state: object | string): state is State<TContext, TEvent>;
|
|
5
|
+
export declare function isState<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = any>(state: object | string): state is State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
6
6
|
export declare function bindActionToState<TC, TE extends EventObject>(action: ActionObject<TC, TE>, state: State<TC, TE>): ActionObject<TC, TE>;
|
|
7
|
-
export declare class State<TContext, TEvent extends EventObject = EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> =
|
|
7
|
+
export declare class State<TContext, TEvent extends EventObject = EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
|
|
8
|
+
value: any;
|
|
9
|
+
context: TContext;
|
|
10
|
+
}> {
|
|
8
11
|
value: StateValue;
|
|
9
12
|
context: TContext;
|
|
10
13
|
historyValue?: HistoryValue | undefined;
|
|
@@ -86,8 +89,10 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
|
|
|
86
89
|
* Whether the current state value is a subset of the given parent state value.
|
|
87
90
|
* @param parentStateValue
|
|
88
91
|
*/
|
|
89
|
-
matches<TSV extends TTypestate['value']>(parentStateValue: TSV): this is TTypestate extends {
|
|
92
|
+
matches<TSV extends TTypestate['value']>(parentStateValue: TSV): this is State<(TTypestate extends {
|
|
93
|
+
value: TSV;
|
|
94
|
+
} ? TTypestate : never)['context'], TEvent, TStateSchema, TTypestate> & {
|
|
90
95
|
value: TSV;
|
|
91
|
-
}
|
|
96
|
+
};
|
|
92
97
|
}
|
|
93
98
|
//# sourceMappingURL=State.d.ts.map
|
package/lib/StateNode.d.ts
CHANGED
|
@@ -190,7 +190,10 @@ declare class StateNode<TContext = any, TStateSchema extends StateSchema = any,
|
|
|
190
190
|
* @param event The event that was sent at the current state
|
|
191
191
|
* @param context The current context (extended state) of the current state
|
|
192
192
|
*/
|
|
193
|
-
transition(state: string | StateValueMap | State<TContext, TEvent, any,
|
|
193
|
+
transition(state: string | StateValueMap | State<TContext, TEvent, any, {
|
|
194
|
+
value: any;
|
|
195
|
+
context: TContext;
|
|
196
|
+
}> | undefined, event: Event<TEvent> | SCXML.Event<TEvent>, context?: TContext): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
194
197
|
private resolveRaisedTransition;
|
|
195
198
|
private resolveTransition;
|
|
196
199
|
/**
|
package/lib/StateNode.js
CHANGED
|
@@ -753,10 +753,10 @@ var StateNode = /** @class */ (function () {
|
|
|
753
753
|
for (var actions_2 = __values(actions), actions_2_1 = actions_2.next(); !actions_2_1.done; actions_2_1 = actions_2.next()) {
|
|
754
754
|
var action = actions_2_1.value;
|
|
755
755
|
if (action.type === actionTypes.start) {
|
|
756
|
-
activities[action.activity.type] = action;
|
|
756
|
+
activities[action.activity.id || action.activity.type] = action;
|
|
757
757
|
}
|
|
758
758
|
else if (action.type === actionTypes.stop) {
|
|
759
|
-
activities[action.activity.type] = false;
|
|
759
|
+
activities[action.activity.id || action.activity.type] = false;
|
|
760
760
|
}
|
|
761
761
|
}
|
|
762
762
|
}
|
|
@@ -1280,12 +1280,9 @@ var StateNode = /** @class */ (function () {
|
|
|
1280
1280
|
: true;
|
|
1281
1281
|
var guards = this.machine.options.guards;
|
|
1282
1282
|
var target = this.resolveTarget(normalizedTarget);
|
|
1283
|
-
var transition = __assign(__assign({}, transitionConfig), { actions: actions_1.toActionObjects(utils_1.toArray(transitionConfig.actions)), cond: utils_1.toGuard(transitionConfig.cond, guards), target: target, source: this, internal: internal, eventType: transitionConfig.event })
|
|
1284
|
-
Object.defineProperty(transition, 'toJSON', {
|
|
1285
|
-
value: function () { return (__assign(__assign({}, transition), { target: transition.target
|
|
1283
|
+
var transition = __assign(__assign({}, transitionConfig), { actions: actions_1.toActionObjects(utils_1.toArray(transitionConfig.actions)), cond: utils_1.toGuard(transitionConfig.cond, guards), target: target, source: this, internal: internal, eventType: transitionConfig.event, toJSON: function () { return (__assign(__assign({}, transition), { target: transition.target
|
|
1286
1284
|
? transition.target.map(function (t) { return "#" + t.id; })
|
|
1287
|
-
: undefined, source: "#{this.id}" })); }
|
|
1288
|
-
});
|
|
1285
|
+
: undefined, source: "#{this.id}" })); } });
|
|
1289
1286
|
return transition;
|
|
1290
1287
|
};
|
|
1291
1288
|
StateNode.prototype.formatTransitions = function () {
|
|
@@ -1313,6 +1310,9 @@ var StateNode = /** @class */ (function () {
|
|
|
1313
1310
|
var doneConfig = this.config.onDone
|
|
1314
1311
|
? utils_1.toTransitionConfigArray(String(actions_1.done(this.id)), this.config.onDone)
|
|
1315
1312
|
: [];
|
|
1313
|
+
if (!environment_1.IS_PRODUCTION) {
|
|
1314
|
+
utils_1.warn(!(this.config.onDone && !this.parent), "Root nodes cannot have an \".onDone\" transition. Please check the config of \"" + this.id + "\".");
|
|
1315
|
+
}
|
|
1316
1316
|
var invokeConfig = utils_1.flatten(this.invoke.map(function (invokeDef) {
|
|
1317
1317
|
var settleTransitions = [];
|
|
1318
1318
|
if (invokeDef.onDone) {
|
package/lib/actions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseConditon, ChooseAction } from './types';
|
|
1
|
+
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseConditon, ChooseAction, AnyEventObject } from './types';
|
|
2
2
|
import * as actionTypes from './actionTypes';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
@@ -8,7 +8,7 @@ export declare const initEvent: SCXML.Event<{
|
|
|
8
8
|
}>;
|
|
9
9
|
export declare function getActionFunction<TContext, TEvent extends EventObject>(actionType: ActionType, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | undefined;
|
|
10
10
|
export declare function toActionObject<TContext, TEvent extends EventObject>(action: Action<TContext, TEvent>, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent>;
|
|
11
|
-
export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: string | RaiseAction<
|
|
11
|
+
export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: string | RaiseAction<AnyEventObject> | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | AssignAction<Required<TContext>, TEvent> | SendAction<TContext, TEvent, AnyEventObject> | ChooseAction<TContext, TEvent> | Action<TContext, TEvent>[] | undefined, actionFunctionMap?: Record<string, ActionFunction<TContext, TEvent> | ActionObject<TContext, TEvent>> | undefined) => ActionObject<TContext, TEvent>[];
|
|
12
12
|
export declare function toActivityDefinition<TContext, TEvent extends EventObject>(action: string | ActivityDefinition<TContext, TEvent>): ActivityDefinition<TContext, TEvent>;
|
|
13
13
|
/**
|
|
14
14
|
* Raises an event. This places the event in the internal event queue, so that
|
|
@@ -16,7 +16,7 @@ export declare function toActivityDefinition<TContext, TEvent extends EventObjec
|
|
|
16
16
|
*
|
|
17
17
|
* @param eventType The event to raise.
|
|
18
18
|
*/
|
|
19
|
-
export declare function raise<TContext, TEvent extends EventObject>(event: Event<TEvent>): RaiseAction<TEvent> | SendAction<TContext, TEvent>;
|
|
19
|
+
export declare function raise<TContext, TEvent extends EventObject>(event: Event<TEvent>): RaiseAction<TEvent> | SendAction<TContext, TEvent, TEvent>;
|
|
20
20
|
export declare function resolveRaise<TEvent extends EventObject>(action: RaiseAction<TEvent>): RaiseActionObject<TEvent>;
|
|
21
21
|
/**
|
|
22
22
|
* Sends an event. This returns an action that will be read by an interpreter to
|
|
@@ -28,26 +28,28 @@ export declare function resolveRaise<TEvent extends EventObject>(action: RaiseAc
|
|
|
28
28
|
* - `delay` - The number of milliseconds to delay the sending of the event.
|
|
29
29
|
* - `to` - The target of this event (by default, the machine the event was sent from).
|
|
30
30
|
*/
|
|
31
|
-
export declare function send<TContext, TEvent extends EventObject>(event: Event<
|
|
32
|
-
export declare function resolveSend<TContext, TEvent extends EventObject>(action: SendAction<TContext, TEvent>, ctx: TContext, _event: SCXML.Event<TEvent>, delaysMap?: DelayFunctionMap<TContext, TEvent>): SendActionObject<TContext, TEvent>;
|
|
31
|
+
export declare function send<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TSentEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, TSentEvent>;
|
|
32
|
+
export declare function resolveSend<TContext, TEvent extends EventObject, TSentEvent extends EventObject>(action: SendAction<TContext, TEvent, TSentEvent>, ctx: TContext, _event: SCXML.Event<TEvent>, delaysMap?: DelayFunctionMap<TContext, TEvent>): SendActionObject<TContext, TEvent, TSentEvent>;
|
|
33
33
|
/**
|
|
34
34
|
* Sends an event to this machine's parent.
|
|
35
35
|
*
|
|
36
36
|
* @param event The event to send to the parent machine.
|
|
37
37
|
* @param options Options to pass into the send event.
|
|
38
38
|
*/
|
|
39
|
-
export declare function sendParent<TContext, TEvent extends EventObject>(event: Event<
|
|
39
|
+
export declare function sendParent<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TSentEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, TSentEvent>;
|
|
40
40
|
/**
|
|
41
41
|
* Sends an update event to this machine's parent.
|
|
42
42
|
*/
|
|
43
|
-
export declare function sendUpdate<TContext, TEvent extends EventObject>(): SendAction<TContext, TEvent
|
|
43
|
+
export declare function sendUpdate<TContext, TEvent extends EventObject>(): SendAction<TContext, TEvent, {
|
|
44
|
+
type: ActionTypes.Update;
|
|
45
|
+
}>;
|
|
44
46
|
/**
|
|
45
47
|
* Sends an event back to the sender of the original event.
|
|
46
48
|
*
|
|
47
49
|
* @param event The event to send back to the sender
|
|
48
50
|
* @param options Options to pass into the send event
|
|
49
51
|
*/
|
|
50
|
-
export declare function respond<TContext, TEvent extends EventObject>(event: Event<TEvent> | SendExpr<TContext, TEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
52
|
+
export declare function respond<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject>(event: Event<TEvent> | SendExpr<TContext, TEvent, TSentEvent>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
51
53
|
/**
|
|
52
54
|
*
|
|
53
55
|
* @param expr The expression function to evaluate which will be logged.
|
|
@@ -119,7 +121,7 @@ export declare function pure<TContext, TEvent extends EventObject>(getActions: (
|
|
|
119
121
|
* @param target The target service to forward the event to.
|
|
120
122
|
* @param options Options to pass into the send action creator.
|
|
121
123
|
*/
|
|
122
|
-
export declare function forwardTo<TContext, TEvent extends EventObject>(target: Required<SendActionOptions<TContext, TEvent>>['to'], options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
124
|
+
export declare function forwardTo<TContext, TEvent extends EventObject>(target: Required<SendActionOptions<TContext, TEvent>>['to'], options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
123
125
|
/**
|
|
124
126
|
* Escalates an error by sending it as an event to this machine's parent.
|
|
125
127
|
*
|
|
@@ -127,7 +129,7 @@ export declare function forwardTo<TContext, TEvent extends EventObject>(target:
|
|
|
127
129
|
* takes in the `context`, `event`, and `meta`, and returns the error data to send.
|
|
128
130
|
* @param options Options to pass into the send action creator.
|
|
129
131
|
*/
|
|
130
|
-
export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent>;
|
|
132
|
+
export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
|
|
131
133
|
export declare function choose<TContext, TEvent extends EventObject>(conds: Array<ChooseConditon<TContext, TEvent>>): ChooseAction<TContext, TEvent>;
|
|
132
134
|
export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent>, currentState: State<TContext, TEvent> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actions: Array<ActionObject<TContext, TEvent>>): [Array<ActionObject<TContext, TEvent>>, TContext];
|
|
133
135
|
//# sourceMappingURL=actions.d.ts.map
|
package/lib/actions.js
CHANGED
|
@@ -426,7 +426,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions)
|
|
|
426
426
|
if (!matchedActions) {
|
|
427
427
|
return [];
|
|
428
428
|
}
|
|
429
|
-
var resolved = resolveActions(machine, currentState, updatedContext, _event, exports.toActionObjects(utils_1.toArray(matchedActions)));
|
|
429
|
+
var resolved = resolveActions(machine, currentState, updatedContext, _event, exports.toActionObjects(utils_1.toArray(matchedActions), machine.options.actions));
|
|
430
430
|
updatedContext = resolved[1];
|
|
431
431
|
return resolved[0];
|
|
432
432
|
}
|
|
@@ -435,7 +435,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions)
|
|
|
435
435
|
if (!matchedActions) {
|
|
436
436
|
return [];
|
|
437
437
|
}
|
|
438
|
-
var resolved = resolveActions(machine, currentState, updatedContext, _event, exports.toActionObjects(utils_1.toArray(matchedActions)));
|
|
438
|
+
var resolved = resolveActions(machine, currentState, updatedContext, _event, exports.toActionObjects(utils_1.toArray(matchedActions), machine.options.actions));
|
|
439
439
|
updatedContext = resolved[1];
|
|
440
440
|
return resolved[0];
|
|
441
441
|
}
|
package/lib/interpreter.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, DoneEvent, Unsubscribable, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate } from './types';
|
|
2
2
|
import { State } from './State';
|
|
3
3
|
import { Actor } from './Actor';
|
|
4
|
-
export declare type StateListener<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext> = any> = (state: State<TContext, TEvent,
|
|
4
|
+
export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = any> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
|
|
5
5
|
export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
|
|
6
6
|
export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
|
|
7
7
|
export declare type Listener = () => void;
|
|
@@ -14,7 +14,7 @@ interface SpawnOptions {
|
|
|
14
14
|
autoForward?: boolean;
|
|
15
15
|
sync?: boolean;
|
|
16
16
|
}
|
|
17
|
-
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = any> implements Actor<State<TContext, TEvent>, TEvent> {
|
|
17
|
+
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = any> implements Actor<State<TContext, TEvent, TStateSchema, TTypestate>, TEvent> {
|
|
18
18
|
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
19
19
|
/**
|
|
20
20
|
* The default interpreter options:
|
|
@@ -63,8 +63,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
63
63
|
* @param options Interpreter options
|
|
64
64
|
*/
|
|
65
65
|
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?: Partial<InterpreterOptions>);
|
|
66
|
-
get initialState(): State<TContext, TEvent>;
|
|
67
|
-
get state(): State<TContext, TEvent,
|
|
66
|
+
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
67
|
+
get state(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
68
68
|
static interpret: typeof interpret;
|
|
69
69
|
/**
|
|
70
70
|
* Executes the actions of the given state, with that state's `context` and `event`.
|
|
@@ -72,9 +72,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
72
72
|
* @param state The state whose actions will be executed
|
|
73
73
|
* @param actionsConfig The action implementations to use
|
|
74
74
|
*/
|
|
75
|
-
execute(state: State<TContext, TEvent>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
75
|
+
execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
76
76
|
private update;
|
|
77
|
-
onTransition(listener: StateListener<TContext, TEvent, TTypestate>): this;
|
|
77
|
+
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate>): this;
|
|
78
78
|
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate>>): Unsubscribable;
|
|
79
79
|
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Unsubscribable;
|
|
80
80
|
/**
|
|
@@ -110,12 +110,12 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
110
110
|
/**
|
|
111
111
|
* Alias for Interpreter.prototype.start
|
|
112
112
|
*/
|
|
113
|
-
init: (initialState?: string | import("./types").StateValueMap | State<TContext, TEvent,
|
|
113
|
+
init: (initialState?: string | import("./types").StateValueMap | State<TContext, TEvent, TStateSchema, TTypestate> | undefined) => Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
114
114
|
/**
|
|
115
115
|
* Starts the interpreter from the given state, or the initial state.
|
|
116
116
|
* @param initialState The state to start the statechart from
|
|
117
117
|
*/
|
|
118
|
-
start(initialState?: State<TContext, TEvent> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
118
|
+
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
|
|
119
119
|
/**
|
|
120
120
|
* Stops the interpreter and unsubscribe all listeners.
|
|
121
121
|
*
|
|
@@ -131,14 +131,14 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
131
131
|
*
|
|
132
132
|
* @param event The event(s) to send
|
|
133
133
|
*/
|
|
134
|
-
send: (event: TEvent | TEvent["type"] | Event<TEvent>[] | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent,
|
|
134
|
+
send: (event: TEvent | TEvent["type"] | Event<TEvent>[] | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
135
135
|
private batch;
|
|
136
136
|
/**
|
|
137
137
|
* Returns a send function bound to this interpreter instance.
|
|
138
138
|
*
|
|
139
139
|
* @param event The event to be sent by the sender.
|
|
140
140
|
*/
|
|
141
|
-
sender(event: Event<TEvent>): () => State<TContext, TEvent>;
|
|
141
|
+
sender(event: Event<TEvent>): () => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
142
142
|
private sendTo;
|
|
143
143
|
/**
|
|
144
144
|
* Returns the next state given the interpreter's current state and the event.
|
|
@@ -147,7 +147,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
147
147
|
*
|
|
148
148
|
* @param event The event to determine the next state
|
|
149
149
|
*/
|
|
150
|
-
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent>;
|
|
150
|
+
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
151
151
|
private forward;
|
|
152
152
|
private defer;
|
|
153
153
|
private cancel;
|