xstate 4.23.1 → 4.24.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 +141 -0
- package/README.md +2 -2
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Machine.d.ts +6 -6
- package/es/State.d.ts +9 -2
- package/es/State.js +22 -3
- package/es/StateNode.d.ts +2 -2
- package/es/StateNode.js +3 -2
- package/es/actions.d.ts +1 -1
- package/es/actions.js +0 -7
- package/es/interpreter.js +6 -2
- package/es/model.d.ts +4 -4
- package/es/model.types.d.ts +30 -14
- package/es/types.d.ts +66 -36
- package/es/utils.js +1 -1
- package/lib/Machine.d.ts +6 -6
- package/lib/State.d.ts +9 -2
- package/lib/State.js +21 -2
- package/lib/StateNode.d.ts +2 -2
- package/lib/StateNode.js +3 -2
- package/lib/actions.d.ts +1 -1
- package/lib/actions.js +0 -7
- package/lib/interpreter.js +6 -2
- package/lib/model.d.ts +4 -4
- package/lib/model.js +10 -0
- package/lib/model.types.d.ts +30 -14
- package/lib/types.d.ts +66 -36
- package/lib/utils.js +1 -1
- package/package.json +1 -1
package/lib/model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventObject } from './types';
|
|
2
|
-
import { Cast,
|
|
3
|
-
export declare function createModel<TContext, TEvent extends EventObject>(initialContext: TContext): Model<TContext, TEvent, void>;
|
|
4
|
-
export declare function createModel<TContext, TModelCreators extends ModelCreators<TModelCreators>, TFinalModelCreators = FinalModelCreators<TModelCreators
|
|
1
|
+
import type { EventObject, BaseActionObject } from './types';
|
|
2
|
+
import { Cast, UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators } from './model.types';
|
|
3
|
+
export declare function createModel<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject>(initialContext: TContext): Model<TContext, TEvent, TAction, void>;
|
|
4
|
+
export declare function createModel<TContext, TModelCreators extends ModelCreators<TModelCreators>, TFinalModelCreators = FinalModelCreators<TModelCreators>, TComputedEvent = 'events' extends keyof TFinalModelCreators ? UnionFromCreatorsReturnTypes<TFinalModelCreators['events']> : never, TComputedAction = 'actions' extends keyof TModelCreators ? 'actions' extends keyof TFinalModelCreators ? UnionFromCreatorsReturnTypes<TFinalModelCreators['actions']> : any : any>(initialContext: TContext, creators: TModelCreators): Model<TContext, Cast<TComputedEvent, EventObject>, Cast<TComputedAction, BaseActionObject>, TFinalModelCreators>;
|
|
5
5
|
//# sourceMappingURL=model.d.ts.map
|
package/lib/model.js
CHANGED
|
@@ -38,6 +38,7 @@ var Machine_1 = require("./Machine");
|
|
|
38
38
|
var utils_1 = require("./utils");
|
|
39
39
|
function createModel(initialContext, creators) {
|
|
40
40
|
var eventCreators = creators === null || creators === void 0 ? void 0 : creators.events;
|
|
41
|
+
var actionCreators = creators === null || creators === void 0 ? void 0 : creators.actions;
|
|
41
42
|
var model = {
|
|
42
43
|
initialContext: initialContext,
|
|
43
44
|
assign: actions_1.assign,
|
|
@@ -50,6 +51,15 @@ function createModel(initialContext, creators) {
|
|
|
50
51
|
return (__assign(__assign({}, fn.apply(void 0, __spreadArray([], __read(args)))), { type: eventType }));
|
|
51
52
|
}; })
|
|
52
53
|
: undefined),
|
|
54
|
+
actions: actionCreators
|
|
55
|
+
? utils_1.mapValues(actionCreators, function (fn, actionType) { return function () {
|
|
56
|
+
var args = [];
|
|
57
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
58
|
+
args[_i] = arguments[_i];
|
|
59
|
+
}
|
|
60
|
+
return (__assign(__assign({}, fn.apply(void 0, __spreadArray([], __read(args)))), { type: actionType }));
|
|
61
|
+
}; })
|
|
62
|
+
: undefined,
|
|
53
63
|
reset: function () { return actions_1.assign(initialContext); },
|
|
54
64
|
createMachine: function (config, implementations) {
|
|
55
65
|
return Machine_1.createMachine('context' in config ? config : __assign(__assign({}, config), { context: initialContext }), implementations);
|
package/lib/model.types.d.ts
CHANGED
|
@@ -1,37 +1,53 @@
|
|
|
1
|
-
import { EventObject, Assigner, ExtractEvent, PropertyAssigner, AssignAction, MachineConfig, MachineOptions, StateMachine } from './types';
|
|
1
|
+
import { EventObject, Assigner, ExtractEvent, PropertyAssigner, AssignAction, MachineConfig, MachineOptions, StateMachine, BaseActionObject } from './types';
|
|
2
2
|
export declare type AnyFunction = (...args: any[]) => any;
|
|
3
|
-
export declare type
|
|
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;
|
|
4
5
|
export declare type Compute<A extends any> = {
|
|
5
6
|
[K in keyof A]: A[K];
|
|
6
7
|
} & unknown;
|
|
7
8
|
export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
8
|
-
export interface Model<TContext, TEvent extends EventObject, TModelCreators = void> {
|
|
9
|
+
export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
|
|
9
10
|
initialContext: TContext;
|
|
10
11
|
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>>;
|
|
11
12
|
events: Prop<TModelCreators, 'events'>;
|
|
13
|
+
actions: Prop<TModelCreators, 'actions'>;
|
|
12
14
|
reset: () => AssignAction<TContext, any>;
|
|
13
|
-
createMachine: (config: MachineConfig<TContext, any, TEvent>, implementations?: Partial<MachineOptions<TContext, TEvent>>) => StateMachine<TContext, any, TEvent>;
|
|
15
|
+
createMachine: (config: MachineConfig<TContext, any, TEvent, TAction>, implementations?: Partial<MachineOptions<TContext, TEvent, TAction>>) => StateMachine<TContext, any, TEvent>;
|
|
14
16
|
}
|
|
15
|
-
export declare type ModelContextFrom<TModel extends Model<any, any, any>> = TModel extends Model<infer TContext, any, any> ? TContext : never;
|
|
16
|
-
export declare type ModelEventsFrom<TModel extends Model<any, any, any
|
|
17
|
+
export declare type ModelContextFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<infer TContext, any, any, any> ? TContext : never;
|
|
18
|
+
export declare type ModelEventsFrom<TModel extends Model<any, any, any, any> | undefined> = TModel extends Model<any, infer TEvent, any, any> ? TEvent : EventObject;
|
|
19
|
+
export declare type ModelActionsFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<any, any, infer TAction, any> ? TAction : never;
|
|
17
20
|
export declare type EventCreator<Self extends AnyFunction, Return = ReturnType<Self>> = Return extends object ? Return extends {
|
|
18
21
|
type: any;
|
|
19
22
|
} ? "An event creator can't return an object with a type property" : Self : 'An event creator must return an object';
|
|
20
23
|
export declare type EventCreators<Self> = {
|
|
21
24
|
[K in keyof Self]: Self[K] extends AnyFunction ? EventCreator<Self[K]> : 'An event creator must be a function';
|
|
22
25
|
};
|
|
23
|
-
export declare type ModelCreators<Self> = {
|
|
24
|
-
events: EventCreators<Prop<Self, 'events'>>;
|
|
25
|
-
};
|
|
26
26
|
export declare type FinalEventCreators<Self> = {
|
|
27
27
|
[K in keyof Self]: Self[K] extends AnyFunction ? (...args: Parameters<Self[K]>) => Compute<ReturnType<Self[K]> & {
|
|
28
28
|
type: K;
|
|
29
29
|
}> : never;
|
|
30
30
|
};
|
|
31
|
-
export declare type
|
|
32
|
-
|
|
31
|
+
export declare type ActionCreator<Self extends AnyFunction, Return = ReturnType<Self>> = Return extends object ? Return extends {
|
|
32
|
+
type: any;
|
|
33
|
+
} ? "An action creator can't return an object with a type property" : Self : 'An action creator must return an object';
|
|
34
|
+
export declare type ActionCreators<Self> = {
|
|
35
|
+
[K in keyof Self]: Self[K] extends AnyFunction ? ActionCreator<Self[K]> : 'An action creator must be a function';
|
|
36
|
+
};
|
|
37
|
+
export declare type FinalActionCreators<Self> = {
|
|
38
|
+
[K in keyof Self]: Self[K] extends AnyFunction ? (...args: Parameters<Self[K]>) => Compute<ReturnType<Self[K]> & {
|
|
39
|
+
type: K;
|
|
40
|
+
}> : never;
|
|
33
41
|
};
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
export interface ModelCreators<Self> {
|
|
43
|
+
events?: EventCreators<Prop<Self, 'events'>>;
|
|
44
|
+
actions?: ActionCreators<Prop<Self, 'actions'>>;
|
|
45
|
+
}
|
|
46
|
+
export interface FinalModelCreators<Self> {
|
|
47
|
+
events: FinalEventCreators<Prop<Self, 'events'>>;
|
|
48
|
+
actions: FinalActionCreators<Prop<Self, 'actions'>>;
|
|
49
|
+
}
|
|
50
|
+
export declare type UnionFromCreatorsReturnTypes<TCreators> = {
|
|
51
|
+
[K in keyof TCreators]: TCreators[K] extends AnyFunction ? ReturnType<TCreators[K]> : never;
|
|
52
|
+
}[keyof TCreators];
|
|
37
53
|
//# sourceMappingURL=model.types.d.ts.map
|
package/lib/types.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { StateNode } from './StateNode';
|
|
|
2
2
|
import { State } from './State';
|
|
3
3
|
import { Interpreter, Clock } from './interpreter';
|
|
4
4
|
import { Model } from './model.types';
|
|
5
|
+
declare type AnyFunction = (...args: any[]) => any;
|
|
6
|
+
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
5
7
|
export declare type EventType = string;
|
|
6
8
|
export declare type ActionType = string;
|
|
7
9
|
export declare type MetaObject = Record<string, any>;
|
|
@@ -17,20 +19,22 @@ export interface EventObject {
|
|
|
17
19
|
export interface AnyEventObject extends EventObject {
|
|
18
20
|
[key: string]: any;
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
* The full definition of an action, with a string `type` and an
|
|
22
|
-
* `exec` implementation function.
|
|
23
|
-
*/
|
|
24
|
-
export interface ActionObject<TContext, TEvent extends EventObject> {
|
|
22
|
+
export interface BaseActionObject {
|
|
25
23
|
/**
|
|
26
24
|
* The type of action that is executed.
|
|
27
25
|
*/
|
|
28
26
|
type: string;
|
|
27
|
+
[other: string]: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The full definition of an action, with a string `type` and an
|
|
31
|
+
* `exec` implementation function.
|
|
32
|
+
*/
|
|
33
|
+
export interface ActionObject<TContext, TEvent extends EventObject> extends BaseActionObject {
|
|
29
34
|
/**
|
|
30
35
|
* The implementation for executing the action.
|
|
31
36
|
*/
|
|
32
37
|
exec?: ActionFunction<TContext, TEvent>;
|
|
33
|
-
[other: string]: any;
|
|
34
38
|
}
|
|
35
39
|
export declare type DefaultContext = Record<string, any> | undefined;
|
|
36
40
|
export declare type EventData = Record<string, any> & {
|
|
@@ -40,8 +44,8 @@ export declare type EventData = Record<string, any> & {
|
|
|
40
44
|
* The specified string event types or the specified event objects.
|
|
41
45
|
*/
|
|
42
46
|
export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
|
|
43
|
-
export interface ActionMeta<TContext, TEvent extends EventObject> extends StateMeta<TContext, TEvent> {
|
|
44
|
-
action:
|
|
47
|
+
export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateMeta<TContext, TEvent> {
|
|
48
|
+
action: TAction;
|
|
45
49
|
_event: SCXML.Event<TEvent>;
|
|
46
50
|
}
|
|
47
51
|
export interface AssignMeta<TContext, TEvent extends EventObject> {
|
|
@@ -49,12 +53,22 @@ export interface AssignMeta<TContext, TEvent extends EventObject> {
|
|
|
49
53
|
action: AssignAction<TContext, TEvent>;
|
|
50
54
|
_event: SCXML.Event<TEvent>;
|
|
51
55
|
}
|
|
52
|
-
export declare type ActionFunction<TContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent>) => void;
|
|
56
|
+
export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> = (context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>) => void;
|
|
53
57
|
export interface ChooseConditon<TContext, TEvent extends EventObject> {
|
|
54
58
|
cond?: Condition<TContext, TEvent>;
|
|
55
59
|
actions: Actions<TContext, TEvent>;
|
|
56
60
|
}
|
|
57
61
|
export declare type Action<TContext, TEvent extends EventObject> = ActionType | ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent>;
|
|
62
|
+
/**
|
|
63
|
+
* Extracts action objects that have no extra properties.
|
|
64
|
+
*/
|
|
65
|
+
declare type SimpleActionsOf<T extends BaseActionObject> = ActionObject<any, any> extends T ? T : ExtractWithSimpleSupport<T>;
|
|
66
|
+
/**
|
|
67
|
+
* Events that do not require payload
|
|
68
|
+
*/
|
|
69
|
+
export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimpleSupport<TEvent>;
|
|
70
|
+
export declare type BaseAction<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SimpleActionsOf<TAction>['type'] | TAction | RaiseAction<any> | SendAction<TContext, TEvent, any> | AssignAction<TContext, TEvent> | LogAction<TContext, TEvent> | CancelAction | StopAction<TContext, TEvent> | ChooseAction<TContext, TEvent> | ActionFunction<TContext, TEvent>;
|
|
71
|
+
export declare type BaseActions<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
|
|
58
72
|
export declare type Actions<TContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
|
|
59
73
|
export declare type StateKey = string | State<any>;
|
|
60
74
|
export interface StateValueMap {
|
|
@@ -122,13 +136,17 @@ declare type ExcludeType<A> = {
|
|
|
122
136
|
declare type ExtractExtraParameters<A, T> = A extends {
|
|
123
137
|
type: T;
|
|
124
138
|
} ? ExcludeType<A> : never;
|
|
125
|
-
declare type
|
|
139
|
+
declare type ExtractWithSimpleSupport<T extends {
|
|
140
|
+
type: string;
|
|
141
|
+
}> = T extends any ? {
|
|
142
|
+
type: T['type'];
|
|
143
|
+
} extends T ? T : never : never;
|
|
126
144
|
declare type NeverIfEmpty<T> = {} extends T ? never : T;
|
|
127
145
|
export interface PayloadSender<TEvent extends EventObject> {
|
|
128
146
|
/**
|
|
129
147
|
* Send an event object or just the event type, if the event has no other payload
|
|
130
148
|
*/
|
|
131
|
-
(event: TEvent |
|
|
149
|
+
(event: TEvent | ExtractWithSimpleSupport<TEvent>['type']): void;
|
|
132
150
|
/**
|
|
133
151
|
* Send an event type and its payload
|
|
134
152
|
*/
|
|
@@ -194,8 +212,8 @@ export declare type SingleOrArray<T> = T[] | T;
|
|
|
194
212
|
export declare type StateNodesConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = {
|
|
195
213
|
[K in keyof TStateSchema['states']]: StateNode<TContext, TStateSchema['states'][K], TEvent>;
|
|
196
214
|
};
|
|
197
|
-
export declare type StatesConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = {
|
|
198
|
-
[K in keyof TStateSchema['states']]: StateNodeConfig<TContext, TStateSchema['states'][K], TEvent>;
|
|
215
|
+
export declare type StatesConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
216
|
+
[K in keyof TStateSchema['states']]: StateNodeConfig<TContext, TStateSchema['states'][K], TEvent, TAction>;
|
|
199
217
|
};
|
|
200
218
|
export declare type StatesDefinition<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = {
|
|
201
219
|
[K in keyof TStateSchema['states']]: StateNodeDefinition<TContext, TStateSchema['states'][K], TEvent>;
|
|
@@ -261,7 +279,7 @@ export interface InvokeConfig<TContext, TEvent extends EventObject> {
|
|
|
261
279
|
*/
|
|
262
280
|
onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
263
281
|
}
|
|
264
|
-
export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> {
|
|
282
|
+
export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> {
|
|
265
283
|
/**
|
|
266
284
|
* The relative key of the state node, which represents its location in the overall state value.
|
|
267
285
|
* This is automatically determined by the configuration shape via the key where it was defined.
|
|
@@ -285,12 +303,6 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
285
303
|
* - `'final'` - final state node
|
|
286
304
|
*/
|
|
287
305
|
type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
|
288
|
-
/**
|
|
289
|
-
* The initial context (extended state) of the machine.
|
|
290
|
-
*
|
|
291
|
-
* Can be an object or a function that returns an object.
|
|
292
|
-
*/
|
|
293
|
-
context?: TContext | (() => TContext);
|
|
294
306
|
/**
|
|
295
307
|
* Indicates whether the state node is a history state node, and what
|
|
296
308
|
* type of history:
|
|
@@ -300,7 +312,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
300
312
|
/**
|
|
301
313
|
* The mapping of state node keys to their state node configurations (recursive).
|
|
302
314
|
*/
|
|
303
|
-
states?: StatesConfig<TContext, TStateSchema, TEvent> | undefined;
|
|
315
|
+
states?: StatesConfig<TContext, TStateSchema, TEvent, TAction> | undefined;
|
|
304
316
|
/**
|
|
305
317
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
306
318
|
*/
|
|
@@ -318,7 +330,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
318
330
|
/**
|
|
319
331
|
* The action(s) to be executed upon entering the state node.
|
|
320
332
|
*/
|
|
321
|
-
entry?:
|
|
333
|
+
entry?: BaseActions<TContext, TEvent, TAction>;
|
|
322
334
|
/**
|
|
323
335
|
* The action(s) to be executed upon exiting the state node.
|
|
324
336
|
*
|
|
@@ -328,7 +340,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
328
340
|
/**
|
|
329
341
|
* The action(s) to be executed upon exiting the state node.
|
|
330
342
|
*/
|
|
331
|
-
exit?:
|
|
343
|
+
exit?: BaseActions<TContext, TEvent, TAction>;
|
|
332
344
|
/**
|
|
333
345
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
334
346
|
*
|
|
@@ -348,6 +360,8 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
348
360
|
/**
|
|
349
361
|
* The activities to be started upon entering the state node,
|
|
350
362
|
* and stopped upon exiting the state node.
|
|
363
|
+
*
|
|
364
|
+
* @deprecated Use `invoke` instead.
|
|
351
365
|
*/
|
|
352
366
|
activities?: SingleOrArray<Activity<TContext, TEvent>>;
|
|
353
367
|
/**
|
|
@@ -406,6 +420,9 @@ export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema,
|
|
|
406
420
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
407
421
|
entry: Array<ActionObject<TContext, TEvent>>;
|
|
408
422
|
exit: Array<ActionObject<TContext, TEvent>>;
|
|
423
|
+
/**
|
|
424
|
+
* @deprecated
|
|
425
|
+
*/
|
|
409
426
|
activities: Array<ActivityDefinition<TContext, TEvent>>;
|
|
410
427
|
meta: any;
|
|
411
428
|
order: number;
|
|
@@ -432,13 +449,20 @@ export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> exte
|
|
|
432
449
|
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
433
450
|
}
|
|
434
451
|
export declare type SimpleOrStateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TStateSchema, TEvent>;
|
|
435
|
-
export declare type ActionFunctionMap<TContext, TEvent extends EventObject
|
|
452
|
+
export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> = {
|
|
453
|
+
[K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
|
|
454
|
+
type: K;
|
|
455
|
+
} ? TAction : never>;
|
|
456
|
+
};
|
|
436
457
|
export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
437
458
|
export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | StateMachine<any, any, any> | InvokeCreator<TContext, TEvent>;
|
|
438
459
|
export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
439
|
-
export interface MachineOptions<TContext, TEvent extends EventObject> {
|
|
460
|
+
export interface MachineOptions<TContext, TEvent extends EventObject, TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> {
|
|
440
461
|
guards: Record<string, ConditionPredicate<TContext, TEvent>>;
|
|
441
|
-
actions: ActionFunctionMap<TContext, TEvent>;
|
|
462
|
+
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
463
|
+
/**
|
|
464
|
+
* @deprecated Use `services` instead.
|
|
465
|
+
*/
|
|
442
466
|
activities: Record<string, ActivityConfig<TContext, TEvent>>;
|
|
443
467
|
services: Record<string, ServiceConfig<TContext, TEvent>>;
|
|
444
468
|
delays: DelayFunctionMap<TContext, TEvent>;
|
|
@@ -451,7 +475,7 @@ export interface MachineOptions<TContext, TEvent extends EventObject> {
|
|
|
451
475
|
*/
|
|
452
476
|
_key?: string;
|
|
453
477
|
}
|
|
454
|
-
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject
|
|
478
|
+
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = ActionObject<TContext, TEvent>> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
|
|
455
479
|
/**
|
|
456
480
|
* The initial context (extended state)
|
|
457
481
|
*/
|
|
@@ -495,13 +519,13 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
|
|
|
495
519
|
export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
|
|
496
520
|
value: any;
|
|
497
521
|
context: TContext;
|
|
498
|
-
}> extends StateNode<TContext, TStateSchema, TEvent, TTypestate> {
|
|
522
|
+
}, _TAction extends ActionObject<TContext, TEvent> = ActionObject<TContext, TEvent>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate> {
|
|
499
523
|
id: string;
|
|
500
524
|
states: StateNode<TContext, TStateSchema, TEvent>['states'];
|
|
501
|
-
withConfig(options: Partial<MachineOptions<TContext, TEvent>>, context?: TContext): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
502
|
-
withContext(context: TContext): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
525
|
+
withConfig(options: Partial<MachineOptions<TContext, TEvent>>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
526
|
+
withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
503
527
|
}
|
|
504
|
-
export declare type StateFrom<
|
|
528
|
+
export declare type StateFrom<T extends StateMachine<any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any>)> = T extends StateMachine<any, any, any> ? ReturnType<T['transition']> : T extends (...args: any[]) => StateMachine<any, any, any> ? ReturnType<ReturnType<T>['transition']> : never;
|
|
505
529
|
export interface ActionMap<TContext, TEvent extends EventObject> {
|
|
506
530
|
onEntry: Array<Action<TContext, TEvent>>;
|
|
507
531
|
actions: Array<Action<TContext, TEvent>>;
|
|
@@ -768,6 +792,9 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
768
792
|
historyValue?: HistoryValue | undefined;
|
|
769
793
|
history?: State<TContext, TEvent>;
|
|
770
794
|
actions?: Array<ActionObject<TContext, TEvent>>;
|
|
795
|
+
/**
|
|
796
|
+
* @deprecated
|
|
797
|
+
*/
|
|
771
798
|
activities?: ActivityMap;
|
|
772
799
|
meta?: any;
|
|
773
800
|
events?: TEvent[];
|
|
@@ -776,6 +803,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
776
803
|
children: Record<string, ActorRef<any>>;
|
|
777
804
|
done?: boolean;
|
|
778
805
|
tags?: Set<string>;
|
|
806
|
+
machine?: StateMachine<TContext, any, TEvent, any>;
|
|
779
807
|
}
|
|
780
808
|
export interface StateSchema<TC = any> {
|
|
781
809
|
meta?: any;
|
|
@@ -904,14 +932,15 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
904
932
|
* @deprecated Use `ActorRef` instead.
|
|
905
933
|
*/
|
|
906
934
|
export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
|
|
907
|
-
export declare type
|
|
935
|
+
export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate>> & {
|
|
908
936
|
/**
|
|
909
937
|
* @deprecated Use `.getSnapshot()` instead.
|
|
910
938
|
*/
|
|
911
939
|
state: State<TContext, TEvent, any, TTypestate>;
|
|
912
|
-
}
|
|
940
|
+
};
|
|
941
|
+
export declare type ActorRefFrom<T> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, any, infer TEvent, infer TTypestate> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : T extends Promise<infer U> ? ActorRef<never, U> : T extends Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : T extends (...args: any[]) => Behavior<infer TEvent1, infer TEmitted> ? ActorRef<TEvent1, TEmitted> : never;
|
|
913
942
|
export declare type AnyInterpreter = Interpreter<any, any, any, any>;
|
|
914
|
-
export declare type InterpreterFrom<T extends StateMachine<any, any, any, any
|
|
943
|
+
export declare type InterpreterFrom<T extends StateMachine<any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any>)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate> : never;
|
|
915
944
|
export interface ActorContext<TEvent extends EventObject, TEmitted> {
|
|
916
945
|
parent?: ActorRef<any, any>;
|
|
917
946
|
self: ActorRef<TEvent, TEmitted>;
|
|
@@ -923,7 +952,8 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
|
|
|
923
952
|
initialState: TEmitted;
|
|
924
953
|
start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
|
|
925
954
|
}
|
|
926
|
-
export declare type
|
|
927
|
-
export declare type
|
|
955
|
+
export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
|
|
956
|
+
export declare type EventFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ____> ? TEvent : never : never;
|
|
957
|
+
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___> ? TContext : never : never;
|
|
928
958
|
export {};
|
|
929
959
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/utils.js
CHANGED
|
@@ -549,7 +549,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
|
|
|
549
549
|
}; // TODO: do not hardcode!
|
|
550
550
|
|
|
551
551
|
if (guard.type === constants.DEFAULT_GUARD_TYPE) {
|
|
552
|
-
return guard.predicate(context, _event.data, guardMeta);
|
|
552
|
+
return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);
|
|
553
553
|
}
|
|
554
554
|
|
|
555
555
|
var condFn = guards[guard.type];
|