xstate 4.28.1 → 4.30.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +218 -91
- 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 +2 -3
- package/es/Actor.js +15 -6
- package/es/Machine.d.ts +5 -4
- package/es/State.d.ts +19 -15
- package/es/State.js +4 -9
- package/es/StateNode.d.ts +22 -17
- package/es/StateNode.js +14 -13
- package/es/actions.d.ts +3 -4
- package/es/actions.js +8 -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 +6 -23
- package/es/index.js +12 -23
- package/es/interpreter.d.ts +35 -27
- package/es/interpreter.js +31 -21
- 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 +128 -64
- package/es/utils.d.ts +5 -5
- package/es/utils.js +5 -2
- package/lib/Actor.d.ts +2 -3
- package/lib/Actor.js +14 -5
- package/lib/Machine.d.ts +5 -4
- package/lib/State.d.ts +19 -15
- package/lib/State.js +4 -9
- package/lib/StateNode.d.ts +22 -17
- package/lib/StateNode.js +14 -13
- package/lib/actions.d.ts +3 -4
- package/lib/actions.js +5 -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 +6 -23
- package/lib/index.js +17 -27
- package/lib/interpreter.d.ts +35 -27
- package/lib/interpreter.js +29 -19
- 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 +128 -64
- package/lib/utils.d.ts +5 -5
- package/lib/utils.js +5 -2
- package/package.json +5 -5
package/lib/types.d.ts
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Clock, Interpreter } from './interpreter';
|
|
2
|
+
import { Model } from './model.types';
|
|
2
3
|
import { State } from './State';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
declare type AnyFunction = (...args: any[]) => any;
|
|
4
|
+
import { StateNode } from './StateNode';
|
|
5
|
+
import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
|
|
6
|
+
export declare type AnyFunction = (...args: any[]) => any;
|
|
6
7
|
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
8
|
+
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
9
|
+
export declare type Compute<A extends any> = {
|
|
10
|
+
[K in keyof A]: A[K];
|
|
11
|
+
} & unknown;
|
|
12
|
+
export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
13
|
+
export declare type Values<T> = T[keyof T];
|
|
14
|
+
export declare type Merge<M, N> = Omit<M, keyof N> & N;
|
|
15
|
+
export declare type IndexByType<T extends {
|
|
16
|
+
type: string;
|
|
17
|
+
}> = {
|
|
18
|
+
[K in T['type']]: Extract<T, {
|
|
19
|
+
type: K;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
|
+
export declare type IsAny<T> = Equals<T, any>;
|
|
7
24
|
export declare type Cast<A, B> = A extends B ? A : B;
|
|
8
25
|
export declare type EventType = string;
|
|
9
26
|
export declare type ActionType = string;
|
|
@@ -45,7 +62,7 @@ export declare type EventData = Record<string, any> & {
|
|
|
45
62
|
* The specified string event types or the specified event objects.
|
|
46
63
|
*/
|
|
47
64
|
export declare type Event<TEvent extends EventObject> = TEvent['type'] | TEvent;
|
|
48
|
-
export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends
|
|
65
|
+
export interface ActionMeta<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> extends StateMeta<TContext, TEvent> {
|
|
49
66
|
action: TAction;
|
|
50
67
|
_event: SCXML.Event<TEvent>;
|
|
51
68
|
}
|
|
@@ -54,7 +71,9 @@ export interface AssignMeta<TContext, TEvent extends EventObject> {
|
|
|
54
71
|
action: AssignAction<TContext, TEvent>;
|
|
55
72
|
_event: SCXML.Event<TEvent>;
|
|
56
73
|
}
|
|
57
|
-
export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends
|
|
74
|
+
export declare type ActionFunction<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
75
|
+
bivarianceHack(context: TContext, event: TEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
|
|
76
|
+
}['bivarianceHack'];
|
|
58
77
|
export interface ChooseCondition<TContext, TEvent extends EventObject> {
|
|
59
78
|
cond?: Condition<TContext, TEvent>;
|
|
60
79
|
actions: Actions<TContext, TEvent>;
|
|
@@ -71,7 +90,7 @@ export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimp
|
|
|
71
90
|
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>;
|
|
72
91
|
export declare type BaseActions<TContext, TEvent extends EventObject, TAction extends BaseActionObject> = SingleOrArray<BaseAction<TContext, TEvent, TAction>>;
|
|
73
92
|
export declare type Actions<TContext, TEvent extends EventObject> = SingleOrArray<Action<TContext, TEvent>>;
|
|
74
|
-
export declare type StateKey = string |
|
|
93
|
+
export declare type StateKey = string | AnyState;
|
|
75
94
|
export interface StateValueMap {
|
|
76
95
|
[key: string]: StateValue;
|
|
77
96
|
}
|
|
@@ -146,7 +165,9 @@ export interface PayloadSender<TEvent extends EventObject> {
|
|
|
146
165
|
*/
|
|
147
166
|
<K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
|
|
148
167
|
}
|
|
149
|
-
export declare type Receiver<TEvent extends EventObject> = (listener:
|
|
168
|
+
export declare type Receiver<TEvent extends EventObject> = (listener: {
|
|
169
|
+
bivarianceHack(event: TEvent): void;
|
|
170
|
+
}['bivarianceHack']) => void;
|
|
150
171
|
export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (callback: Sender<TSentEvent>, onReceive: Receiver<TEvent>) => (() => void) | Promise<any> | void;
|
|
151
172
|
export interface InvokeMeta {
|
|
152
173
|
data: any;
|
|
@@ -166,7 +187,8 @@ export interface InvokeMeta {
|
|
|
166
187
|
* @param context The current machine `context`
|
|
167
188
|
* @param event The event that invoked the service
|
|
168
189
|
*/
|
|
169
|
-
export declare type InvokeCreator<TContext,
|
|
190
|
+
export declare type InvokeCreator<TContext, TSourceEvent extends EventObject, TFinalContext = any, TInputEvent extends EventObject = any, // keeping a slot for it here, but it's actually not used right now to ensure that the communication contract between actors is satisfied
|
|
191
|
+
TOutputEvent extends EventObject = TSourceEvent> = (context: TContext, event: TSourceEvent, meta: InvokeMeta) => PromiseLike<TFinalContext> | StateMachine<TFinalContext, any, any, any, any, any, any> | Subscribable<EventObject> | InvokeCallback<TInputEvent, TOutputEvent> | Behavior<any>;
|
|
170
192
|
export interface InvokeDefinition<TContext, TEvent extends EventObject> extends ActivityDefinition<TContext, TEvent> {
|
|
171
193
|
/**
|
|
172
194
|
* The source of the machine to be invoked, or the machine itself.
|
|
@@ -246,7 +268,7 @@ export interface InvokeConfig<TContext, TEvent extends EventObject> {
|
|
|
246
268
|
/**
|
|
247
269
|
* The source of the machine to be invoked, or the machine itself.
|
|
248
270
|
*/
|
|
249
|
-
src: string | InvokeSourceDefinition |
|
|
271
|
+
src: string | InvokeSourceDefinition | AnyStateMachine | InvokeCreator<TContext, TEvent, any>;
|
|
250
272
|
/**
|
|
251
273
|
* If `true`, events sent to the parent service will be forwarded to the invoked service.
|
|
252
274
|
*
|
|
@@ -316,7 +338,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
316
338
|
/**
|
|
317
339
|
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
318
340
|
*/
|
|
319
|
-
invoke?: SingleOrArray<InvokeConfig<TContext, TEvent> |
|
|
341
|
+
invoke?: SingleOrArray<InvokeConfig<TContext, TEvent> | AnyStateMachine>;
|
|
320
342
|
/**
|
|
321
343
|
* The mapping of event types to their potential transition(s).
|
|
322
344
|
*/
|
|
@@ -436,6 +458,8 @@ export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema,
|
|
|
436
458
|
tags: string[];
|
|
437
459
|
}
|
|
438
460
|
export declare type AnyStateNodeDefinition = StateNodeDefinition<any, any, any>;
|
|
461
|
+
export declare type AnyState = State<any, any, any, any, any>;
|
|
462
|
+
export declare type AnyStateMachine = StateMachine<any, any, any, any, any, any, any>;
|
|
439
463
|
export interface AtomicStateNodeConfig<TContext, TEvent extends EventObject> extends StateNodeConfig<TContext, StateSchema, TEvent> {
|
|
440
464
|
initial?: undefined;
|
|
441
465
|
parallel?: false | undefined;
|
|
@@ -455,33 +479,52 @@ export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> exte
|
|
|
455
479
|
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
456
480
|
}
|
|
457
481
|
export declare type SimpleOrStateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TStateSchema, TEvent>;
|
|
458
|
-
export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends
|
|
482
|
+
export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
459
483
|
[K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
|
|
460
484
|
type: K;
|
|
461
485
|
} ? TAction : never>;
|
|
462
486
|
};
|
|
463
487
|
export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
464
|
-
export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string |
|
|
488
|
+
export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | AnyStateMachine | InvokeCreator<TContext, TEvent>;
|
|
465
489
|
export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
490
|
+
declare type MachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<TResolvedTypesMeta, 'eventsCausingActions'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TIndexedActions = Prop<TResolvedTypesMeta, 'indexedActions'>> = {
|
|
491
|
+
[K in keyof TEventsCausingActions]?: ActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedActions, K>, BaseActionObject>>;
|
|
492
|
+
};
|
|
493
|
+
declare type MachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<TResolvedTypesMeta, 'eventsCausingDelays'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
|
|
494
|
+
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
495
|
+
};
|
|
496
|
+
declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<TResolvedTypesMeta, 'eventsCausingGuards'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
|
|
497
|
+
[K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
498
|
+
};
|
|
499
|
+
declare type MachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<TResolvedTypesMeta, 'eventsCausingServices'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TInvokeSrcNameMap = Prop<TResolvedTypesMeta, 'invokeSrcNameMap'>> = {
|
|
500
|
+
[K in keyof TEventsCausingServices]?: AnyStateMachine | InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>, EventObject, Cast<TIndexedEvents[keyof TIndexedEvents], EventObject>>;
|
|
501
|
+
};
|
|
502
|
+
declare type MakeKeysRequired<T extends string> = {
|
|
503
|
+
[K in T]: unknown;
|
|
504
|
+
};
|
|
505
|
+
declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
|
506
|
+
[K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
|
507
|
+
} : {};
|
|
508
|
+
declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
|
509
|
+
actions?: MachineOptionsActions<TContext, TResolvedTypesMeta>;
|
|
510
|
+
};
|
|
511
|
+
declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
|
512
|
+
delays?: MachineOptionsDelays<TContext, TResolvedTypesMeta>;
|
|
513
|
+
};
|
|
514
|
+
declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
515
|
+
guards?: MachineOptionsGuards<TContext, TResolvedTypesMeta>;
|
|
516
|
+
};
|
|
517
|
+
declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
|
|
518
|
+
services?: MachineOptionsServices<TContext, TResolvedTypesMeta>;
|
|
519
|
+
};
|
|
520
|
+
export declare type InternalMachineOptions<TContext, TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & {
|
|
469
521
|
/**
|
|
470
522
|
* @deprecated Use `services` instead.
|
|
471
523
|
*/
|
|
472
|
-
activities
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
* @private
|
|
477
|
-
*/
|
|
478
|
-
_parent?: StateNode<TContext, any, TEvent, any>;
|
|
479
|
-
/**
|
|
480
|
-
* @private
|
|
481
|
-
*/
|
|
482
|
-
_key?: string;
|
|
483
|
-
}
|
|
484
|
-
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = ActionObject<TContext, TEvent>> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
|
|
524
|
+
activities?: Record<string, ActivityConfig<TContext, TEvent>>;
|
|
525
|
+
};
|
|
526
|
+
export declare type MachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
|
|
527
|
+
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<TContext, TStateSchema, TEvent, TAction> {
|
|
485
528
|
/**
|
|
486
529
|
* The initial context (extended state)
|
|
487
530
|
*/
|
|
@@ -490,9 +533,13 @@ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEven
|
|
|
490
533
|
* The machine's own version.
|
|
491
534
|
*/
|
|
492
535
|
version?: string;
|
|
493
|
-
schema?: MachineSchema<TContext, TEvent>;
|
|
536
|
+
schema?: MachineSchema<TContext, TEvent, TServiceMap>;
|
|
537
|
+
tsTypes?: TTypesMeta;
|
|
494
538
|
}
|
|
495
|
-
export
|
|
539
|
+
export declare type ServiceMap = Record<string, {
|
|
540
|
+
data: any;
|
|
541
|
+
}>;
|
|
542
|
+
export interface MachineSchema<TContext, TEvent extends EventObject, TServiceMap extends ServiceMap = ServiceMap> {
|
|
496
543
|
context?: TContext;
|
|
497
544
|
events?: TEvent;
|
|
498
545
|
actions?: {
|
|
@@ -503,10 +550,7 @@ export interface MachineSchema<TContext, TEvent extends EventObject> {
|
|
|
503
550
|
type: string;
|
|
504
551
|
[key: string]: any;
|
|
505
552
|
};
|
|
506
|
-
services?:
|
|
507
|
-
type: string;
|
|
508
|
-
[key: string]: any;
|
|
509
|
-
};
|
|
553
|
+
services?: TServiceMap;
|
|
510
554
|
}
|
|
511
555
|
export interface StandardMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
|
|
512
556
|
}
|
|
@@ -522,16 +566,31 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
|
|
|
522
566
|
history: 'shallow' | 'deep';
|
|
523
567
|
target: StateValue | undefined;
|
|
524
568
|
}
|
|
569
|
+
/** @ts-ignore TS complains about withConfig & withContext not being compatible here when extending StateNode */
|
|
525
570
|
export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
|
|
526
571
|
value: any;
|
|
527
572
|
context: TContext;
|
|
528
|
-
},
|
|
573
|
+
}, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, TEvent, TAction, TServiceMap>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
|
|
529
574
|
id: string;
|
|
530
|
-
states: StateNode<TContext, TStateSchema, TEvent>['states'];
|
|
531
|
-
withConfig(options:
|
|
532
|
-
withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
533
|
-
|
|
534
|
-
|
|
575
|
+
states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
|
|
576
|
+
withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
|
|
577
|
+
withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, TResolvedTypesMeta>;
|
|
578
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
579
|
+
__TContext: TContext;
|
|
580
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
581
|
+
__TStateSchema: TStateSchema;
|
|
582
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
583
|
+
__TEvent: TEvent;
|
|
584
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
585
|
+
__TTypestate: TTypestate;
|
|
586
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
587
|
+
__TAction: TAction;
|
|
588
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
589
|
+
__TServiceMap: TServiceMap;
|
|
590
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
591
|
+
__TResolvedTypesMeta: TResolvedTypesMeta;
|
|
592
|
+
}
|
|
593
|
+
export declare type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
|
|
535
594
|
export interface ActionMap<TContext, TEvent extends EventObject> {
|
|
536
595
|
onEntry: Array<Action<TContext, TEvent>>;
|
|
537
596
|
actions: Array<Action<TContext, TEvent>>;
|
|
@@ -550,13 +609,13 @@ export interface ActivityMap {
|
|
|
550
609
|
}
|
|
551
610
|
export interface StateTransition<TContext, TEvent extends EventObject> {
|
|
552
611
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
553
|
-
configuration: Array<StateNode<TContext, any, TEvent, any>>;
|
|
554
|
-
entrySet: Array<StateNode<TContext, any, TEvent, any>>;
|
|
555
|
-
exitSet: Array<StateNode<TContext, any, TEvent, any>>;
|
|
612
|
+
configuration: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
613
|
+
entrySet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
614
|
+
exitSet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
556
615
|
/**
|
|
557
616
|
* The source state that preceded the transition.
|
|
558
617
|
*/
|
|
559
|
-
source: State<TContext, any, any, any> | undefined;
|
|
618
|
+
source: State<TContext, any, any, any, any> | undefined;
|
|
560
619
|
actions: Array<ActionObject<TContext, TEvent>>;
|
|
561
620
|
}
|
|
562
621
|
export interface TransitionData<TContext, TEvent extends EventObject> {
|
|
@@ -611,7 +670,7 @@ export interface DoneEventObject extends EventObject {
|
|
|
611
670
|
}
|
|
612
671
|
export interface UpdateObject extends EventObject {
|
|
613
672
|
id: string | number;
|
|
614
|
-
state:
|
|
673
|
+
state: AnyState;
|
|
615
674
|
}
|
|
616
675
|
export declare type DoneEvent = DoneEventObject & string;
|
|
617
676
|
export interface NullEvent {
|
|
@@ -777,7 +836,7 @@ export interface SCXMLEventMeta<TEvent extends EventObject> {
|
|
|
777
836
|
_event: SCXML.Event<TEvent>;
|
|
778
837
|
}
|
|
779
838
|
export interface StateMeta<TContext, TEvent extends EventObject> {
|
|
780
|
-
state: State<TContext, TEvent, any, any>;
|
|
839
|
+
state: State<TContext, TEvent, any, any, any>;
|
|
781
840
|
_event: SCXML.Event<TEvent>;
|
|
782
841
|
}
|
|
783
842
|
export interface Typestate<TContext> {
|
|
@@ -796,7 +855,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
796
855
|
_event: SCXML.Event<TEvent>;
|
|
797
856
|
_sessionid: string | null;
|
|
798
857
|
historyValue?: HistoryValue | undefined;
|
|
799
|
-
history?: State<TContext, TEvent>;
|
|
858
|
+
history?: State<TContext, TEvent, any, any, any>;
|
|
800
859
|
actions?: Array<ActionObject<TContext, TEvent>>;
|
|
801
860
|
/**
|
|
802
861
|
* @deprecated
|
|
@@ -809,8 +868,9 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
809
868
|
children: Record<string, ActorRef<any>>;
|
|
810
869
|
done?: boolean;
|
|
811
870
|
tags?: Set<string>;
|
|
812
|
-
machine?: StateMachine<TContext, any, TEvent, any>;
|
|
871
|
+
machine?: StateMachine<TContext, any, TEvent, any, any, any, any>;
|
|
813
872
|
}
|
|
873
|
+
export declare type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
814
874
|
export interface StateSchema<TC = any> {
|
|
815
875
|
meta?: any;
|
|
816
876
|
context?: Partial<TC>;
|
|
@@ -822,9 +882,9 @@ export interface InterpreterOptions {
|
|
|
822
882
|
/**
|
|
823
883
|
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
824
884
|
*/
|
|
825
|
-
execute
|
|
826
|
-
clock
|
|
827
|
-
logger
|
|
885
|
+
execute?: boolean;
|
|
886
|
+
clock?: Clock;
|
|
887
|
+
logger?: (...args: any[]) => void;
|
|
828
888
|
parent?: AnyInterpreter;
|
|
829
889
|
/**
|
|
830
890
|
* If `true`, defers processing of sent events until the service
|
|
@@ -833,7 +893,7 @@ export interface InterpreterOptions {
|
|
|
833
893
|
*
|
|
834
894
|
* Default: `true`
|
|
835
895
|
*/
|
|
836
|
-
deferEvents
|
|
896
|
+
deferEvents?: boolean;
|
|
837
897
|
/**
|
|
838
898
|
* The custom `id` for referencing this service.
|
|
839
899
|
*/
|
|
@@ -843,8 +903,7 @@ export interface InterpreterOptions {
|
|
|
843
903
|
*
|
|
844
904
|
* Default: `false`
|
|
845
905
|
*/
|
|
846
|
-
devTools
|
|
847
|
-
[option: string]: any;
|
|
906
|
+
devTools?: boolean | object;
|
|
848
907
|
}
|
|
849
908
|
export declare namespace SCXML {
|
|
850
909
|
interface Event<TEvent extends EventObject> {
|
|
@@ -917,13 +976,16 @@ export interface Subscription {
|
|
|
917
976
|
unsubscribe(): void;
|
|
918
977
|
}
|
|
919
978
|
export interface InteropObservable<T> {
|
|
920
|
-
[Symbol.observable]: () =>
|
|
979
|
+
[Symbol.observable]: () => InteropSubscribable<T>;
|
|
921
980
|
}
|
|
922
|
-
export interface
|
|
923
|
-
subscribe(
|
|
981
|
+
export interface InteropSubscribable<T> {
|
|
982
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
983
|
+
}
|
|
984
|
+
export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
924
985
|
subscribe(observer: Observer<T>): Subscription;
|
|
986
|
+
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
925
987
|
}
|
|
926
|
-
export declare type Spawnable =
|
|
988
|
+
export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
|
|
927
989
|
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
|
|
928
990
|
type: TEventType;
|
|
929
991
|
} ? TEvent : never;
|
|
@@ -941,15 +1003,17 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
941
1003
|
* @deprecated Use `ActorRef` instead.
|
|
942
1004
|
*/
|
|
943
1005
|
export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
|
|
944
|
-
export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext
|
|
1006
|
+
export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>, TResolvedTypesMeta = TypegenDisabled> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>> & {
|
|
945
1007
|
/**
|
|
946
1008
|
* @deprecated Use `.getSnapshot()` instead.
|
|
947
1009
|
*/
|
|
948
|
-
state: State<TContext, TEvent, any, TTypestate>;
|
|
1010
|
+
state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
|
|
949
1011
|
};
|
|
950
|
-
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;
|
|
951
|
-
export declare type AnyInterpreter = Interpreter<any, any, any, any>;
|
|
952
|
-
export declare type InterpreterFrom<T extends
|
|
1012
|
+
export declare type ActorRefFrom<T> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, any> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate> : T extends (...args: any[]) => StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : 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;
|
|
1013
|
+
export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
|
|
1014
|
+
export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : never;
|
|
1015
|
+
export declare type MachineOptionsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
1016
|
+
export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
953
1017
|
export interface ActorContext<TEvent extends EventObject, TEmitted> {
|
|
954
1018
|
parent?: ActorRef<any, any>;
|
|
955
1019
|
self: ActorRef<TEvent, TEmitted>;
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Event, StateValue, ActionType, Action, EventObject, PropertyMapper, Mapper, EventType, HistoryValue, AssignAction, Condition, Subscribable,
|
|
1
|
+
import { Event, StateValue, ActionType, Action, EventObject, PropertyMapper, Mapper, EventType, HistoryValue, AssignAction, Condition, Subscribable, ConditionPredicate, SCXML, StateLike, EventData, TransitionConfig, TransitionConfigTarget, NullEvent, SingleOrArray, Guard, InvokeSourceDefinition, Observer, Behavior } from './types';
|
|
2
2
|
import { StateNode } from './StateNode';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { Actor } from './Actor';
|
|
5
|
+
import { AnyStateMachine } from '.';
|
|
5
6
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
6
7
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
|
|
7
8
|
export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
|
|
@@ -52,12 +53,11 @@ export declare function isFunction(value: any): value is Function;
|
|
|
52
53
|
export declare function isString(value: any): value is string;
|
|
53
54
|
export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
|
|
54
55
|
export declare function isObservable<T>(value: any): value is Subscribable<T>;
|
|
55
|
-
export declare const symbolObservable:
|
|
56
|
+
export declare const symbolObservable: typeof Symbol.observable;
|
|
56
57
|
export declare const interopSymbols: {
|
|
57
|
-
[x: string]: () => any;
|
|
58
58
|
[Symbol.observable]: () => any;
|
|
59
59
|
};
|
|
60
|
-
export declare function isMachine(value: any): value is
|
|
60
|
+
export declare function isMachine(value: any): value is AnyStateMachine;
|
|
61
61
|
export declare function isActor(value: any): value is Actor;
|
|
62
62
|
export declare const uniqueId: () => string;
|
|
63
63
|
export declare function toEventObject<TEvent extends EventObject>(event: Event<TEvent>, payload?: EventData): TEvent;
|
|
@@ -67,7 +67,7 @@ export declare function toTransitionConfigArray<TContext, TEvent extends EventOb
|
|
|
67
67
|
}>;
|
|
68
68
|
export declare function normalizeTarget<TContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, any, TEvent>> | undefined): Array<string | StateNode<TContext, any, TEvent>> | undefined;
|
|
69
69
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
70
|
-
export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
|
|
70
|
+
export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
|
|
71
71
|
export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
|
|
72
72
|
export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
|
|
73
73
|
export declare function createInvokeId(stateNodeId: string, index: number): string;
|
package/lib/utils.js
CHANGED
|
@@ -464,9 +464,12 @@ function isObservable(value) {
|
|
|
464
464
|
}
|
|
465
465
|
var symbolObservable = /*#__PURE__*/function () {
|
|
466
466
|
return typeof Symbol === 'function' && Symbol.observable || '@@observable';
|
|
467
|
-
}();
|
|
467
|
+
}(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages
|
|
468
|
+
|
|
468
469
|
var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
|
|
469
470
|
return this;
|
|
471
|
+
}, _a[Symbol.observable] = function () {
|
|
472
|
+
return this;
|
|
470
473
|
}, _a);
|
|
471
474
|
function isMachine(value) {
|
|
472
475
|
try {
|
|
@@ -556,7 +559,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
|
|
|
556
559
|
return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);
|
|
557
560
|
}
|
|
558
561
|
|
|
559
|
-
var condFn = guards[guard.type];
|
|
562
|
+
var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];
|
|
560
563
|
|
|
561
564
|
if (!condFn) {
|
|
562
565
|
throw new Error("Guard '".concat(guard.type, "' is not implemented on machine '").concat(machine.id, "'."));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xstate",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.30.2",
|
|
4
4
|
"description": "Finite State Machines and Statecharts for the Modern Web.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -30,18 +30,18 @@
|
|
|
30
30
|
"clean": "rm -rf lib es dist tsconfig.tsbuildinfo",
|
|
31
31
|
"test": "jest",
|
|
32
32
|
"build": "rollup -c",
|
|
33
|
-
"
|
|
33
|
+
"prepare": "npm run build"
|
|
34
34
|
},
|
|
35
35
|
"repository": {
|
|
36
36
|
"type": "git",
|
|
37
|
-
"url": "git+https://github.com/
|
|
37
|
+
"url": "git+https://github.com/statelyai/xstate.git"
|
|
38
38
|
},
|
|
39
39
|
"author": "David Khourshid <davidkpiano@gmail.com>",
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
42
|
+
"url": "https://github.com/statelyai/xstate/issues"
|
|
43
43
|
},
|
|
44
|
-
"homepage": "https://github.com/
|
|
44
|
+
"homepage": "https://github.com/statelyai/xstate/tree/main/packages/core#readme",
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@babel/cli": "^7.10.5",
|
|
47
47
|
"@babel/core": "^7.10.5",
|