xstate 4.27.0 → 4.30.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 +227 -90
- package/README.md +5 -5
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Actor.d.ts +1 -2
- package/es/Actor.js +5 -5
- package/es/Machine.d.ts +5 -4
- package/es/State.d.ts +17 -14
- package/es/State.js +4 -4
- package/es/StateNode.d.ts +22 -17
- package/es/StateNode.js +33 -36
- package/es/actions.d.ts +3 -4
- package/es/actions.js +22 -3
- package/es/behaviors.d.ts +1 -1
- package/es/devTools.d.ts +3 -4
- package/es/each.d.ts +1 -1
- package/es/index.d.ts +10 -21
- package/es/index.js +11 -22
- package/es/interpreter.d.ts +34 -31
- package/es/interpreter.js +21 -13
- package/es/model.d.ts +2 -2
- package/es/model.types.d.ts +8 -9
- package/es/schema.d.ts +1 -0
- package/es/schema.js +2 -1
- package/es/scxml.d.ts +2 -2
- package/es/stateUtils.d.ts +6 -5
- package/es/typegenTypes.d.ts +121 -0
- package/es/types.d.ts +118 -57
- package/es/utils.d.ts +7 -2
- package/es/utils.js +9 -2
- package/lib/Actor.d.ts +1 -2
- package/lib/Actor.js +4 -4
- package/lib/Machine.d.ts +5 -4
- package/lib/State.d.ts +17 -14
- package/lib/State.js +4 -4
- package/lib/StateNode.d.ts +22 -17
- package/lib/StateNode.js +32 -35
- package/lib/actions.d.ts +3 -4
- package/lib/actions.js +20 -0
- package/lib/behaviors.d.ts +1 -1
- package/lib/devTools.d.ts +3 -4
- package/lib/each.d.ts +1 -1
- package/lib/index.d.ts +10 -21
- package/lib/index.js +15 -26
- package/lib/interpreter.d.ts +34 -31
- package/lib/interpreter.js +18 -10
- package/lib/model.d.ts +2 -2
- package/lib/model.types.d.ts +8 -9
- package/lib/schema.d.ts +1 -0
- package/lib/schema.js +2 -0
- package/lib/scxml.d.ts +2 -2
- package/lib/stateUtils.d.ts +6 -5
- package/lib/typegenTypes.d.ts +121 -0
- package/lib/typegenTypes.js +2 -0
- package/lib/types.d.ts +118 -57
- package/lib/utils.d.ts +7 -2
- package/lib/utils.js +10 -1
- package/package.json +5 -5
package/lib/interpreter.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription } from './types';
|
|
2
2
|
import { State } from './State';
|
|
3
|
+
import { StateConfig } from '.';
|
|
4
|
+
import { AreAllImplementationsAssumedToBeProvided, TypegenDisabled } from './typegenTypes';
|
|
3
5
|
export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
|
|
4
6
|
value: any;
|
|
5
7
|
context: TContext;
|
|
6
|
-
}> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
|
|
8
|
+
}, TResolvedTypesMeta = TypegenDisabled> = (state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, event: TEvent) => void;
|
|
7
9
|
export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
|
|
8
10
|
export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
|
|
9
11
|
export declare type Listener = () => void;
|
|
@@ -21,23 +23,24 @@ export declare enum InterpreterStatus {
|
|
|
21
23
|
Running = 1,
|
|
22
24
|
Stopped = 2
|
|
23
25
|
}
|
|
24
|
-
declare global {
|
|
25
|
-
interface SymbolConstructor {
|
|
26
|
-
readonly observable: symbol;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
26
|
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
|
|
30
27
|
value: any;
|
|
31
28
|
context: TContext;
|
|
32
|
-
}> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate>> {
|
|
33
|
-
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
29
|
+
}, TResolvedTypesMeta = TypegenDisabled> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>> {
|
|
30
|
+
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta>;
|
|
34
31
|
/**
|
|
35
32
|
* The default interpreter options:
|
|
36
33
|
*
|
|
37
34
|
* - `clock` uses the global `setTimeout` and `clearTimeout` functions
|
|
38
35
|
* - `logger` uses the global `console.log()` method
|
|
39
36
|
*/
|
|
40
|
-
static defaultOptions:
|
|
37
|
+
static defaultOptions: {
|
|
38
|
+
execute: boolean;
|
|
39
|
+
deferEvents: boolean;
|
|
40
|
+
clock: Clock;
|
|
41
|
+
logger: any;
|
|
42
|
+
devTools: boolean;
|
|
43
|
+
};
|
|
41
44
|
/**
|
|
42
45
|
* The current state of the interpreted machine.
|
|
43
46
|
*/
|
|
@@ -77,9 +80,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
77
80
|
* @param machine The machine to be interpreted
|
|
78
81
|
* @param options Interpreter options
|
|
79
82
|
*/
|
|
80
|
-
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?:
|
|
81
|
-
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
82
|
-
get state(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
83
|
+
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta>, options?: InterpreterOptions);
|
|
84
|
+
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
85
|
+
get state(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
83
86
|
static interpret: typeof interpret;
|
|
84
87
|
/**
|
|
85
88
|
* Executes the actions of the given state, with that state's `context` and `event`.
|
|
@@ -87,56 +90,56 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
87
90
|
* @param state The state whose actions will be executed
|
|
88
91
|
* @param actionsConfig The action implementations to use
|
|
89
92
|
*/
|
|
90
|
-
execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
93
|
+
execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
91
94
|
private update;
|
|
92
|
-
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate>): this;
|
|
93
|
-
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
94
|
-
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate>>): Subscription;
|
|
95
|
+
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
|
|
96
|
+
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
97
|
+
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>): Subscription;
|
|
95
98
|
/**
|
|
96
99
|
* Adds an event listener that is notified whenever an event is sent to the running interpreter.
|
|
97
100
|
* @param listener The event listener
|
|
98
101
|
*/
|
|
99
|
-
onEvent(listener: EventListener):
|
|
102
|
+
onEvent(listener: EventListener): this;
|
|
100
103
|
/**
|
|
101
104
|
* Adds an event listener that is notified whenever a `send` event occurs.
|
|
102
105
|
* @param listener The event listener
|
|
103
106
|
*/
|
|
104
|
-
onSend(listener: EventListener):
|
|
107
|
+
onSend(listener: EventListener): this;
|
|
105
108
|
/**
|
|
106
109
|
* Adds a context listener that is notified whenever the state context changes.
|
|
107
110
|
* @param listener The context listener
|
|
108
111
|
*/
|
|
109
|
-
onChange(listener: ContextListener<TContext>):
|
|
112
|
+
onChange(listener: ContextListener<TContext>): this;
|
|
110
113
|
/**
|
|
111
114
|
* Adds a listener that is notified when the machine is stopped.
|
|
112
115
|
* @param listener The listener
|
|
113
116
|
*/
|
|
114
|
-
onStop(listener: Listener):
|
|
117
|
+
onStop(listener: Listener): this;
|
|
115
118
|
/**
|
|
116
119
|
* Adds a state listener that is notified when the statechart has reached its final state.
|
|
117
120
|
* @param listener The state listener
|
|
118
121
|
*/
|
|
119
|
-
onDone(listener: EventListener<DoneEvent>):
|
|
122
|
+
onDone(listener: EventListener<DoneEvent>): this;
|
|
120
123
|
/**
|
|
121
124
|
* Removes a listener.
|
|
122
125
|
* @param listener The listener to remove
|
|
123
126
|
*/
|
|
124
|
-
off(listener: (...args: any[]) => void):
|
|
127
|
+
off(listener: (...args: any[]) => void): this;
|
|
125
128
|
/**
|
|
126
129
|
* Alias for Interpreter.prototype.start
|
|
127
130
|
*/
|
|
128
|
-
init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate> |
|
|
131
|
+
init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateConfig<TContext, TEvent> | undefined) => this;
|
|
129
132
|
/**
|
|
130
133
|
* Starts the interpreter from the given state, or the initial state.
|
|
131
134
|
* @param initialState The state to start the statechart from
|
|
132
135
|
*/
|
|
133
|
-
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> |
|
|
136
|
+
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateConfig<TContext, TEvent> | StateValue): this;
|
|
134
137
|
/**
|
|
135
138
|
* Stops the interpreter and unsubscribe all listeners.
|
|
136
139
|
*
|
|
137
140
|
* This will also notify the `onStop` listeners.
|
|
138
141
|
*/
|
|
139
|
-
stop():
|
|
142
|
+
stop(): this;
|
|
140
143
|
/**
|
|
141
144
|
* Sends an event to the running interpreter to trigger a transition.
|
|
142
145
|
*
|
|
@@ -146,7 +149,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
146
149
|
*
|
|
147
150
|
* @param event The event(s) to send
|
|
148
151
|
*/
|
|
149
|
-
send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
152
|
+
send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
150
153
|
private batch;
|
|
151
154
|
/**
|
|
152
155
|
* Returns a send function bound to this interpreter instance.
|
|
@@ -162,7 +165,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
162
165
|
*
|
|
163
166
|
* @param event The event to determine the next state
|
|
164
167
|
*/
|
|
165
|
-
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
168
|
+
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
166
169
|
private forward;
|
|
167
170
|
private defer;
|
|
168
171
|
private cancel;
|
|
@@ -186,11 +189,11 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
186
189
|
toJSON(): {
|
|
187
190
|
id: string;
|
|
188
191
|
};
|
|
189
|
-
[Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate>>;
|
|
190
|
-
getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
192
|
+
[Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
|
|
193
|
+
getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
191
194
|
}
|
|
192
195
|
export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
|
|
193
|
-
export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE>>;
|
|
196
|
+
export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE, any, any, any, any>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE, any, any, any, any>>;
|
|
194
197
|
export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnOptions): ActorRef<any>;
|
|
195
198
|
/**
|
|
196
199
|
* Creates a new Interpreter instance for the given machine with the provided options, if any.
|
|
@@ -201,6 +204,6 @@ export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnO
|
|
|
201
204
|
export declare function interpret<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
|
|
202
205
|
value: any;
|
|
203
206
|
context: TContext;
|
|
204
|
-
}>(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate
|
|
207
|
+
}, TResolvedTypesMeta = TypegenDisabled>(machine: AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends true ? StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta> : 'Some implementations missing', options?: InterpreterOptions): Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta>;
|
|
205
208
|
export {};
|
|
206
209
|
//# sourceMappingURL=interpreter.d.ts.map
|
package/lib/interpreter.js
CHANGED
|
@@ -462,7 +462,7 @@ function () {
|
|
|
462
462
|
this.initialized = true;
|
|
463
463
|
this.status = exports.InterpreterStatus.Running;
|
|
464
464
|
var resolvedState = initialState === undefined ? this.initialState : serviceScope.provide(this, function () {
|
|
465
|
-
return State.
|
|
465
|
+
return State.isStateConfig(initialState) ? _this.machine.resolveState(initialState) : _this.machine.resolveState(State.State.from(initialState, _this.machine.context));
|
|
466
466
|
});
|
|
467
467
|
|
|
468
468
|
if (this.options.devTools) {
|
|
@@ -561,7 +561,9 @@ function () {
|
|
|
561
561
|
return this;
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
this.state.configuration.
|
|
564
|
+
_tslib.__spreadArray([], _tslib.__read(this.state.configuration), false).sort(function (a, b) {
|
|
565
|
+
return b.order - a.order;
|
|
566
|
+
}).forEach(function (stateNode) {
|
|
565
567
|
var e_11, _a;
|
|
566
568
|
|
|
567
569
|
try {
|
|
@@ -583,6 +585,7 @@ function () {
|
|
|
583
585
|
}
|
|
584
586
|
}); // Stop all children
|
|
585
587
|
|
|
588
|
+
|
|
586
589
|
this.children.forEach(function (child) {
|
|
587
590
|
if (utils.isFunction(child.stop)) {
|
|
588
591
|
child.stop();
|
|
@@ -1039,7 +1042,8 @@ function () {
|
|
|
1039
1042
|
}
|
|
1040
1043
|
}
|
|
1041
1044
|
});
|
|
1042
|
-
|
|
1045
|
+
|
|
1046
|
+
var actor = _tslib.__assign({
|
|
1043
1047
|
id: id,
|
|
1044
1048
|
send: function () {
|
|
1045
1049
|
return void 0;
|
|
@@ -1083,7 +1087,8 @@ function () {
|
|
|
1083
1087
|
getSnapshot: function () {
|
|
1084
1088
|
return resolvedData;
|
|
1085
1089
|
}
|
|
1086
|
-
};
|
|
1090
|
+
}, utils.interopSymbols);
|
|
1091
|
+
|
|
1087
1092
|
this.children.set(id, actor);
|
|
1088
1093
|
return actor;
|
|
1089
1094
|
};
|
|
@@ -1127,7 +1132,7 @@ function () {
|
|
|
1127
1132
|
return this.spawnPromise(callbackStop, id);
|
|
1128
1133
|
}
|
|
1129
1134
|
|
|
1130
|
-
var actor = {
|
|
1135
|
+
var actor = _tslib.__assign({
|
|
1131
1136
|
id: id,
|
|
1132
1137
|
send: function (event) {
|
|
1133
1138
|
return receivers.forEach(function (receiver) {
|
|
@@ -1157,7 +1162,8 @@ function () {
|
|
|
1157
1162
|
getSnapshot: function () {
|
|
1158
1163
|
return emitted;
|
|
1159
1164
|
}
|
|
1160
|
-
};
|
|
1165
|
+
}, utils.interopSymbols);
|
|
1166
|
+
|
|
1161
1167
|
this.children.set(id, actor);
|
|
1162
1168
|
return actor;
|
|
1163
1169
|
};
|
|
@@ -1185,7 +1191,8 @@ function () {
|
|
|
1185
1191
|
origin: id
|
|
1186
1192
|
}));
|
|
1187
1193
|
});
|
|
1188
|
-
|
|
1194
|
+
|
|
1195
|
+
var actor = _tslib.__assign({
|
|
1189
1196
|
id: id,
|
|
1190
1197
|
send: function () {
|
|
1191
1198
|
return void 0;
|
|
@@ -1204,7 +1211,8 @@ function () {
|
|
|
1204
1211
|
id: id
|
|
1205
1212
|
};
|
|
1206
1213
|
}
|
|
1207
|
-
};
|
|
1214
|
+
}, utils.interopSymbols);
|
|
1215
|
+
|
|
1208
1216
|
this.children.set(id, actor);
|
|
1209
1217
|
return actor;
|
|
1210
1218
|
};
|
|
@@ -1232,7 +1240,7 @@ function () {
|
|
|
1232
1240
|
};
|
|
1233
1241
|
|
|
1234
1242
|
Interpreter.prototype.spawnEffect = function (id, dispose) {
|
|
1235
|
-
this.children.set(id, {
|
|
1243
|
+
this.children.set(id, _tslib.__assign({
|
|
1236
1244
|
id: id,
|
|
1237
1245
|
send: function () {
|
|
1238
1246
|
return void 0;
|
|
@@ -1253,7 +1261,7 @@ function () {
|
|
|
1253
1261
|
id: id
|
|
1254
1262
|
};
|
|
1255
1263
|
}
|
|
1256
|
-
});
|
|
1264
|
+
}, utils.interopSymbols));
|
|
1257
1265
|
};
|
|
1258
1266
|
|
|
1259
1267
|
Interpreter.prototype.attachDev = function () {
|
package/lib/model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventObject, BaseActionObject } from './types';
|
|
2
|
-
import {
|
|
1
|
+
import type { Cast, EventObject, BaseActionObject, Prop, IsNever } from './types';
|
|
2
|
+
import { UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators } from './model.types';
|
|
3
3
|
export declare function createModel<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject>(initialContext: TContext): Model<TContext, TEvent, TAction, void>;
|
|
4
4
|
export declare function createModel<TContext, TModelCreators extends ModelCreators<TModelCreators>, TFinalModelCreators = FinalModelCreators<TModelCreators>, TComputedEvent = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'events'>>, TComputedAction = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'actions'>>>(initialContext: TContext, creators: TModelCreators): Model<TContext, Cast<TComputedEvent, EventObject>, IsNever<TComputedAction> extends true ? BaseActionObject : Cast<TComputedAction, BaseActionObject>, TFinalModelCreators>;
|
|
5
5
|
//# sourceMappingURL=model.d.ts.map
|
package/lib/model.types.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
4
|
-
export declare type Cast<T extends any, TCastType extends any> = T extends TCastType ? T : TCastType;
|
|
5
|
-
export declare type Compute<A extends any> = {
|
|
6
|
-
[K in keyof A]: A[K];
|
|
7
|
-
} & unknown;
|
|
8
|
-
export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
1
|
+
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, ExtractEvent, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions, ServiceMap } from './types';
|
|
2
|
+
import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
|
|
9
3
|
export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
|
|
10
4
|
initialContext: TContext;
|
|
11
5
|
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext, ExtractEvent<TEvent, TEventType>> | PropertyAssigner<TContext, ExtractEvent<TEvent, TEventType>>, eventType?: TEventType) => AssignAction<TContext, ExtractEvent<TEvent, TEventType>>;
|
|
12
6
|
events: Prop<TModelCreators, 'events'>;
|
|
13
7
|
actions: Prop<TModelCreators, 'actions'>;
|
|
14
8
|
reset: () => AssignAction<TContext, any>;
|
|
15
|
-
createMachine:
|
|
9
|
+
createMachine: {
|
|
10
|
+
<TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, any, TEvent, TAction, TServiceMap, TTypesMeta>, implementations?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>): StateMachine<TContext, any, TEvent, {
|
|
11
|
+
value: any;
|
|
12
|
+
context: TContext;
|
|
13
|
+
}, TAction, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
|
|
14
|
+
};
|
|
16
15
|
}
|
|
17
16
|
export declare type ModelContextFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<infer TContext, any, any, any> ? TContext : never;
|
|
18
17
|
export declare type ModelEventsFrom<TModel extends Model<any, any, any, any> | undefined> = TModel extends Model<any, infer TEvent, any, any> ? TEvent : EventObject;
|
package/lib/schema.d.ts
CHANGED
package/lib/schema.js
CHANGED
package/lib/scxml.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StateMachine } from './index';
|
|
2
2
|
export interface ScxmlToMachineOptions {
|
|
3
3
|
delimiter?: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function toMachine(xml: string, options: ScxmlToMachineOptions):
|
|
5
|
+
export declare function toMachine(xml: string, options: ScxmlToMachineOptions): StateMachine<any, any, any, any, any, any, any>;
|
|
6
6
|
//# sourceMappingURL=scxml.d.ts.map
|
package/lib/stateUtils.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { EventObject,
|
|
1
|
+
import { EventObject, StateValue } from './types';
|
|
2
|
+
import { StateNode } from './StateNode';
|
|
2
3
|
declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
|
|
3
4
|
declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
|
|
4
|
-
export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
|
|
5
|
+
export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any, any>) => boolean;
|
|
5
6
|
export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
|
|
6
|
-
export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
|
|
7
|
-
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
|
|
7
|
+
export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any, any, any>): Array<StateNode<TC, any, TE, any, any, any>>;
|
|
8
|
+
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>): Set<StateNode<TC, any, TE, any, any, any>>;
|
|
8
9
|
export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
|
|
9
10
|
export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
|
|
10
11
|
export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
|
|
11
12
|
export declare function nextEvents<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE>>): Array<TE['type']>;
|
|
12
|
-
export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any>>, stateNode: StateNode<TC, any, TE, any>): boolean;
|
|
13
|
+
export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any, any, any>>, stateNode: StateNode<TC, any, TE, any, any, any>): boolean;
|
|
13
14
|
export declare function getMeta(configuration?: StateNode[]): Record<string, any>;
|
|
14
15
|
export declare function getTagsFromConfiguration(configuration: StateNode<any, any, any, any>[]): Set<string>;
|
|
15
16
|
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { BaseActionObject, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ServiceMap, Cast } from './types';
|
|
2
|
+
export interface TypegenDisabled {
|
|
3
|
+
'@@xstate/typegen': false;
|
|
4
|
+
}
|
|
5
|
+
export interface TypegenEnabled {
|
|
6
|
+
'@@xstate/typegen': true;
|
|
7
|
+
}
|
|
8
|
+
export interface TypegenMeta extends TypegenEnabled {
|
|
9
|
+
/**
|
|
10
|
+
* Allows you to specify all the results of state.matches
|
|
11
|
+
*/
|
|
12
|
+
matchesStates: string | {};
|
|
13
|
+
/**
|
|
14
|
+
* Allows you to specify all tags used by the machine
|
|
15
|
+
*/
|
|
16
|
+
tags: string;
|
|
17
|
+
/**
|
|
18
|
+
* Allows you to specify all the missing implementations
|
|
19
|
+
* of the machine
|
|
20
|
+
*/
|
|
21
|
+
missingImplementations: {
|
|
22
|
+
actions: string;
|
|
23
|
+
delays: string;
|
|
24
|
+
guards: string;
|
|
25
|
+
services: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A map for the internal events of the machine.
|
|
29
|
+
*
|
|
30
|
+
* key: 'done.invoke.myService'
|
|
31
|
+
* value: {
|
|
32
|
+
* type: 'done.invoke.myService';
|
|
33
|
+
* data: unknown;
|
|
34
|
+
* __tip: 'Declare the type in event types!';
|
|
35
|
+
* }
|
|
36
|
+
*/
|
|
37
|
+
internalEvents: {};
|
|
38
|
+
/**
|
|
39
|
+
* Maps the name of the service to the event type
|
|
40
|
+
* of the done.invoke action
|
|
41
|
+
*
|
|
42
|
+
* key: 'invokeSrc'
|
|
43
|
+
* value: 'done.invoke.invokeName'
|
|
44
|
+
*/
|
|
45
|
+
invokeSrcNameMap: Record<string, string>;
|
|
46
|
+
/**
|
|
47
|
+
* Keeps track of which events lead to which
|
|
48
|
+
* actions.
|
|
49
|
+
*
|
|
50
|
+
* Key: 'EVENT_NAME'
|
|
51
|
+
* Value: 'actionName' | 'otherActionName'
|
|
52
|
+
*/
|
|
53
|
+
eventsCausingActions: Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Keeps track of which events lead to which
|
|
56
|
+
* delays.
|
|
57
|
+
*
|
|
58
|
+
* Key: 'EVENT_NAME'
|
|
59
|
+
* Value: 'delayName' | 'otherDelayName'
|
|
60
|
+
*/
|
|
61
|
+
eventsCausingDelays: Record<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* Keeps track of which events lead to which
|
|
64
|
+
* guards.
|
|
65
|
+
*
|
|
66
|
+
* Key: 'EVENT_NAME'
|
|
67
|
+
* Value: 'guardName' | 'otherGuardName'
|
|
68
|
+
*/
|
|
69
|
+
eventsCausingGuards: Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Keeps track of which events lead to which
|
|
72
|
+
* services.
|
|
73
|
+
*
|
|
74
|
+
* Key: 'EVENT_NAME'
|
|
75
|
+
* Value: 'serviceName' | 'otherServiceName'
|
|
76
|
+
*/
|
|
77
|
+
eventsCausingServices: Record<string, string>;
|
|
78
|
+
}
|
|
79
|
+
export interface ResolvedTypegenMeta extends TypegenMeta {
|
|
80
|
+
indexedActions: Record<string, BaseActionObject>;
|
|
81
|
+
indexedEvents: Record<string, EventObject>;
|
|
82
|
+
}
|
|
83
|
+
export declare type TypegenConstraint = TypegenEnabled | TypegenDisabled;
|
|
84
|
+
export declare type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
|
|
85
|
+
[K in keyof TMissingImplementations]: TMissingImplementations[K];
|
|
86
|
+
}>> extends true ? true : false : true;
|
|
87
|
+
export declare type MarkAllImplementationsAsProvided<TResolvedTypesMeta> = TResolvedTypesMeta & {
|
|
88
|
+
missingImplementations: {
|
|
89
|
+
actions: never;
|
|
90
|
+
delays: never;
|
|
91
|
+
guards: never;
|
|
92
|
+
services: never;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
declare type GenerateServiceEvent<TServiceName, TEventType, TServiceMap extends ServiceMap> = TEventType extends any ? {
|
|
96
|
+
type: TEventType;
|
|
97
|
+
} & Prop<TServiceMap, TServiceName> : never;
|
|
98
|
+
declare type GenerateServiceEvents<TServiceMap extends ServiceMap, TInvokeSrcNameMap> = string extends keyof TServiceMap ? never : Cast<{
|
|
99
|
+
[K in keyof TInvokeSrcNameMap]: GenerateServiceEvent<K, TInvokeSrcNameMap[K], TServiceMap>;
|
|
100
|
+
}[keyof TInvokeSrcNameMap], EventObject>;
|
|
101
|
+
declare type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
|
|
102
|
+
declare type AllowAllEvents = {
|
|
103
|
+
eventsCausingActions: Record<string, string>;
|
|
104
|
+
eventsCausingDelays: Record<string, string>;
|
|
105
|
+
eventsCausingGuards: Record<string, string>;
|
|
106
|
+
eventsCausingServices: Record<string, string>;
|
|
107
|
+
};
|
|
108
|
+
export declare type ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TServiceMap extends ServiceMap> = TTypesMeta extends TypegenEnabled ? TTypesMeta & {
|
|
109
|
+
indexedActions: IndexByType<TAction>;
|
|
110
|
+
indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateServiceEvents<TServiceMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
|
|
111
|
+
} : MarkAllImplementationsAsProvided<TypegenDisabled> & AllowAllEvents & {
|
|
112
|
+
indexedActions: IndexByType<TAction>;
|
|
113
|
+
indexedEvents: Record<string, TEvent> & {
|
|
114
|
+
__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
|
|
115
|
+
data: any;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
|
|
119
|
+
};
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=typegenTypes.d.ts.map
|