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/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>;
|
|
@@ -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.
|
|
@@ -455,7 +477,7 @@ export interface FinalStateNodeConfig<TContext, TEvent extends EventObject> exte
|
|
|
455
477
|
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
456
478
|
}
|
|
457
479
|
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
|
|
480
|
+
export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject> = {
|
|
459
481
|
[K in TAction['type']]?: ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent, TAction extends {
|
|
460
482
|
type: K;
|
|
461
483
|
} ? TAction : never>;
|
|
@@ -463,25 +485,44 @@ export declare type ActionFunctionMap<TContext, TEvent extends EventObject, TAct
|
|
|
463
485
|
export declare type DelayFunctionMap<TContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
464
486
|
export declare type ServiceConfig<TContext, TEvent extends EventObject = AnyEventObject> = string | StateMachine<any, any, any> | InvokeCreator<TContext, TEvent>;
|
|
465
487
|
export declare type DelayConfig<TContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
488
|
+
declare type MachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<TResolvedTypesMeta, 'eventsCausingActions'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TIndexedActions = Prop<TResolvedTypesMeta, 'indexedActions'>> = {
|
|
489
|
+
[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>>;
|
|
490
|
+
};
|
|
491
|
+
declare type MachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<TResolvedTypesMeta, 'eventsCausingDelays'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
|
|
492
|
+
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
493
|
+
};
|
|
494
|
+
declare type MachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<TResolvedTypesMeta, 'eventsCausingGuards'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
|
|
495
|
+
[K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
496
|
+
};
|
|
497
|
+
declare type MachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<TResolvedTypesMeta, 'eventsCausingServices'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TInvokeSrcNameMap = Prop<TResolvedTypesMeta, 'invokeSrcNameMap'>> = {
|
|
498
|
+
[K in keyof TEventsCausingServices]?: StateMachine<any, any, any, any, any, any, any> | InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>, EventObject, Cast<TIndexedEvents[keyof TIndexedEvents], EventObject>>;
|
|
499
|
+
};
|
|
500
|
+
declare type MakeKeysRequired<T extends string> = {
|
|
501
|
+
[K in T]: unknown;
|
|
502
|
+
};
|
|
503
|
+
declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
|
504
|
+
[K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
|
505
|
+
} : {};
|
|
506
|
+
declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
|
507
|
+
actions?: MachineOptionsActions<TContext, TResolvedTypesMeta>;
|
|
508
|
+
};
|
|
509
|
+
declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
|
510
|
+
delays?: MachineOptionsDelays<TContext, TResolvedTypesMeta>;
|
|
511
|
+
};
|
|
512
|
+
declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
513
|
+
guards?: MachineOptionsGuards<TContext, TResolvedTypesMeta>;
|
|
514
|
+
};
|
|
515
|
+
declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
|
|
516
|
+
services?: MachineOptionsServices<TContext, TResolvedTypesMeta>;
|
|
517
|
+
};
|
|
518
|
+
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
519
|
/**
|
|
470
520
|
* @deprecated Use `services` instead.
|
|
471
521
|
*/
|
|
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> {
|
|
522
|
+
activities?: Record<string, ActivityConfig<TContext, TEvent>>;
|
|
523
|
+
};
|
|
524
|
+
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>>;
|
|
525
|
+
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
526
|
/**
|
|
486
527
|
* The initial context (extended state)
|
|
487
528
|
*/
|
|
@@ -490,9 +531,13 @@ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEven
|
|
|
490
531
|
* The machine's own version.
|
|
491
532
|
*/
|
|
492
533
|
version?: string;
|
|
493
|
-
schema?: MachineSchema<TContext, TEvent>;
|
|
534
|
+
schema?: MachineSchema<TContext, TEvent, TServiceMap>;
|
|
535
|
+
tsTypes?: TTypesMeta;
|
|
494
536
|
}
|
|
495
|
-
export
|
|
537
|
+
export declare type ServiceMap = Record<string, {
|
|
538
|
+
data: any;
|
|
539
|
+
}>;
|
|
540
|
+
export interface MachineSchema<TContext, TEvent extends EventObject, TServiceMap extends ServiceMap = ServiceMap> {
|
|
496
541
|
context?: TContext;
|
|
497
542
|
events?: TEvent;
|
|
498
543
|
actions?: {
|
|
@@ -503,10 +548,7 @@ export interface MachineSchema<TContext, TEvent extends EventObject> {
|
|
|
503
548
|
type: string;
|
|
504
549
|
[key: string]: any;
|
|
505
550
|
};
|
|
506
|
-
services?:
|
|
507
|
-
type: string;
|
|
508
|
-
[key: string]: any;
|
|
509
|
-
};
|
|
551
|
+
services?: TServiceMap;
|
|
510
552
|
}
|
|
511
553
|
export interface StandardMachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> extends StateNodeConfig<TContext, TStateSchema, TEvent> {
|
|
512
554
|
}
|
|
@@ -522,16 +564,31 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
|
|
|
522
564
|
history: 'shallow' | 'deep';
|
|
523
565
|
target: StateValue | undefined;
|
|
524
566
|
}
|
|
567
|
+
/** @ts-ignore TS complains about withConfig & withContext not being compatible here when extending StateNode */
|
|
525
568
|
export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
|
|
526
569
|
value: any;
|
|
527
570
|
context: TContext;
|
|
528
|
-
},
|
|
571
|
+
}, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
|
|
529
572
|
id: string;
|
|
530
|
-
states: StateNode<TContext, TStateSchema, TEvent>['states'];
|
|
531
|
-
withConfig(options:
|
|
532
|
-
withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
533
|
-
|
|
534
|
-
|
|
573
|
+
states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
|
|
574
|
+
withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
|
|
575
|
+
withContext(context: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, TResolvedTypesMeta>;
|
|
576
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
577
|
+
__TContext: TContext;
|
|
578
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
579
|
+
__TStateSchema: TStateSchema;
|
|
580
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
581
|
+
__TEvent: TEvent;
|
|
582
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
583
|
+
__TTypestate: TTypestate;
|
|
584
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
585
|
+
__TAction: TAction;
|
|
586
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
587
|
+
__TServiceMap: TServiceMap;
|
|
588
|
+
/** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
|
|
589
|
+
__TResolvedTypesMeta: TResolvedTypesMeta;
|
|
590
|
+
}
|
|
591
|
+
export declare type StateFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>)> = T extends StateMachine<any, any, any, any, any, any, any> ? ReturnType<T['transition']> : T extends (...args: any[]) => StateMachine<any, any, any, any, any, any, any> ? ReturnType<ReturnType<T>['transition']> : never;
|
|
535
592
|
export interface ActionMap<TContext, TEvent extends EventObject> {
|
|
536
593
|
onEntry: Array<Action<TContext, TEvent>>;
|
|
537
594
|
actions: Array<Action<TContext, TEvent>>;
|
|
@@ -550,13 +607,13 @@ export interface ActivityMap {
|
|
|
550
607
|
}
|
|
551
608
|
export interface StateTransition<TContext, TEvent extends EventObject> {
|
|
552
609
|
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>>;
|
|
610
|
+
configuration: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
611
|
+
entrySet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
612
|
+
exitSet: Array<StateNode<TContext, any, TEvent, any, any, any>>;
|
|
556
613
|
/**
|
|
557
614
|
* The source state that preceded the transition.
|
|
558
615
|
*/
|
|
559
|
-
source: State<TContext, any, any, any> | undefined;
|
|
616
|
+
source: State<TContext, any, any, any, any> | undefined;
|
|
560
617
|
actions: Array<ActionObject<TContext, TEvent>>;
|
|
561
618
|
}
|
|
562
619
|
export interface TransitionData<TContext, TEvent extends EventObject> {
|
|
@@ -777,7 +834,7 @@ export interface SCXMLEventMeta<TEvent extends EventObject> {
|
|
|
777
834
|
_event: SCXML.Event<TEvent>;
|
|
778
835
|
}
|
|
779
836
|
export interface StateMeta<TContext, TEvent extends EventObject> {
|
|
780
|
-
state: State<TContext, TEvent, any, any>;
|
|
837
|
+
state: State<TContext, TEvent, any, any, any>;
|
|
781
838
|
_event: SCXML.Event<TEvent>;
|
|
782
839
|
}
|
|
783
840
|
export interface Typestate<TContext> {
|
|
@@ -796,7 +853,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
796
853
|
_event: SCXML.Event<TEvent>;
|
|
797
854
|
_sessionid: string | null;
|
|
798
855
|
historyValue?: HistoryValue | undefined;
|
|
799
|
-
history?: State<TContext, TEvent>;
|
|
856
|
+
history?: State<TContext, TEvent, any, any, any>;
|
|
800
857
|
actions?: Array<ActionObject<TContext, TEvent>>;
|
|
801
858
|
/**
|
|
802
859
|
* @deprecated
|
|
@@ -809,7 +866,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
809
866
|
children: Record<string, ActorRef<any>>;
|
|
810
867
|
done?: boolean;
|
|
811
868
|
tags?: Set<string>;
|
|
812
|
-
machine?: StateMachine<TContext, any, TEvent, any>;
|
|
869
|
+
machine?: StateMachine<TContext, any, TEvent, any, any, any, any>;
|
|
813
870
|
}
|
|
814
871
|
export interface StateSchema<TC = any> {
|
|
815
872
|
meta?: any;
|
|
@@ -822,9 +879,9 @@ export interface InterpreterOptions {
|
|
|
822
879
|
/**
|
|
823
880
|
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
824
881
|
*/
|
|
825
|
-
execute
|
|
826
|
-
clock
|
|
827
|
-
logger
|
|
882
|
+
execute?: boolean;
|
|
883
|
+
clock?: Clock;
|
|
884
|
+
logger?: (...args: any[]) => void;
|
|
828
885
|
parent?: AnyInterpreter;
|
|
829
886
|
/**
|
|
830
887
|
* If `true`, defers processing of sent events until the service
|
|
@@ -833,7 +890,7 @@ export interface InterpreterOptions {
|
|
|
833
890
|
*
|
|
834
891
|
* Default: `true`
|
|
835
892
|
*/
|
|
836
|
-
deferEvents
|
|
893
|
+
deferEvents?: boolean;
|
|
837
894
|
/**
|
|
838
895
|
* The custom `id` for referencing this service.
|
|
839
896
|
*/
|
|
@@ -843,8 +900,7 @@ export interface InterpreterOptions {
|
|
|
843
900
|
*
|
|
844
901
|
* Default: `false`
|
|
845
902
|
*/
|
|
846
|
-
devTools
|
|
847
|
-
[option: string]: any;
|
|
903
|
+
devTools?: boolean | object;
|
|
848
904
|
}
|
|
849
905
|
export declare namespace SCXML {
|
|
850
906
|
interface Event<TEvent extends EventObject> {
|
|
@@ -916,18 +972,21 @@ export interface Observer<T> {
|
|
|
916
972
|
export interface Subscription {
|
|
917
973
|
unsubscribe(): void;
|
|
918
974
|
}
|
|
975
|
+
export interface InteropObservable<T> {
|
|
976
|
+
[Symbol.observable]: () => Subscribable<T>;
|
|
977
|
+
}
|
|
919
978
|
export interface Subscribable<T> {
|
|
920
979
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
921
980
|
subscribe(observer: Observer<T>): Subscription;
|
|
922
981
|
}
|
|
923
|
-
export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | Subscribable<any> | Behavior<any>;
|
|
982
|
+
export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
|
|
924
983
|
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
|
|
925
984
|
type: TEventType;
|
|
926
985
|
} ? TEvent : never;
|
|
927
986
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
928
987
|
send: (event: TEvent) => void;
|
|
929
988
|
}
|
|
930
|
-
export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted> {
|
|
989
|
+
export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted>, InteropObservable<TEmitted> {
|
|
931
990
|
send: Sender<TEvent>;
|
|
932
991
|
id: string;
|
|
933
992
|
getSnapshot: () => TEmitted | undefined;
|
|
@@ -938,15 +997,17 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
938
997
|
* @deprecated Use `ActorRef` instead.
|
|
939
998
|
*/
|
|
940
999
|
export declare type SpawnedActorRef<TEvent extends EventObject, TEmitted = any> = ActorRef<TEvent, TEmitted>;
|
|
941
|
-
export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext
|
|
1000
|
+
export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventObject, TTypestate extends Typestate<TContext>, TResolvedTypesMeta = TypegenDisabled> = ActorRef<TEvent, State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>> & {
|
|
942
1001
|
/**
|
|
943
1002
|
* @deprecated Use `.getSnapshot()` instead.
|
|
944
1003
|
*/
|
|
945
|
-
state: State<TContext, TEvent, any, TTypestate>;
|
|
1004
|
+
state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
|
|
946
1005
|
};
|
|
947
|
-
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;
|
|
948
|
-
export declare type AnyInterpreter = Interpreter<any, any, any, any>;
|
|
949
|
-
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;
|
|
1006
|
+
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;
|
|
1007
|
+
export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
|
|
1008
|
+
export declare type InterpreterFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>)> = 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;
|
|
1009
|
+
export declare type MachineOptionsFrom<T extends StateMachine<any, any, any, any, any, any, any> | ((...args: any[]) => StateMachine<any, any, any, any, any, any, any>), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
1010
|
+
export declare type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
950
1011
|
export interface ActorContext<TEvent extends EventObject, TEmitted> {
|
|
951
1012
|
parent?: ActorRef<any, any>;
|
|
952
1013
|
self: ActorRef<TEvent, TEmitted>;
|
package/lib/utils.d.ts
CHANGED
|
@@ -52,7 +52,11 @@ export declare function isFunction(value: any): value is Function;
|
|
|
52
52
|
export declare function isString(value: any): value is string;
|
|
53
53
|
export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
|
|
54
54
|
export declare function isObservable<T>(value: any): value is Subscribable<T>;
|
|
55
|
-
export declare const symbolObservable:
|
|
55
|
+
export declare const symbolObservable: string | typeof Symbol.observable;
|
|
56
|
+
export declare const interopSymbols: {
|
|
57
|
+
[x: string]: () => any;
|
|
58
|
+
[Symbol.observable]: () => any;
|
|
59
|
+
};
|
|
56
60
|
export declare function isMachine(value: any): value is StateMachine<any, any, any>;
|
|
57
61
|
export declare function isActor(value: any): value is Actor;
|
|
58
62
|
export declare const uniqueId: () => string;
|
|
@@ -63,7 +67,8 @@ export declare function toTransitionConfigArray<TContext, TEvent extends EventOb
|
|
|
63
67
|
}>;
|
|
64
68
|
export declare function normalizeTarget<TContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, any, TEvent>> | undefined): Array<string | StateNode<TContext, any, TEvent>> | undefined;
|
|
65
69
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
66
|
-
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;
|
|
67
71
|
export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
|
|
68
72
|
export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
|
|
73
|
+
export declare function createInvokeId(stateNodeId: string, index: number): string;
|
|
69
74
|
//# sourceMappingURL=utils.d.ts.map
|
package/lib/utils.js
CHANGED
|
@@ -6,6 +6,7 @@ var _tslib = require('./_virtual/_tslib.js');
|
|
|
6
6
|
var constants = require('./constants.js');
|
|
7
7
|
var environment = require('./environment.js');
|
|
8
8
|
|
|
9
|
+
var _a;
|
|
9
10
|
function keys(value) {
|
|
10
11
|
return Object.keys(value);
|
|
11
12
|
}
|
|
@@ -464,6 +465,9 @@ function isObservable(value) {
|
|
|
464
465
|
var symbolObservable = /*#__PURE__*/function () {
|
|
465
466
|
return typeof Symbol === 'function' && Symbol.observable || '@@observable';
|
|
466
467
|
}();
|
|
468
|
+
var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
|
|
469
|
+
return this;
|
|
470
|
+
}, _a);
|
|
467
471
|
function isMachine(value) {
|
|
468
472
|
try {
|
|
469
473
|
return '__xstatenode' in value;
|
|
@@ -552,7 +556,7 @@ function evaluateGuard(machine, guard, context, _event, state) {
|
|
|
552
556
|
return ((guards === null || guards === void 0 ? void 0 : guards[guard.name]) || guard.predicate)(context, _event.data, guardMeta);
|
|
553
557
|
}
|
|
554
558
|
|
|
555
|
-
var condFn = guards[guard.type];
|
|
559
|
+
var condFn = guards === null || guards === void 0 ? void 0 : guards[guard.type];
|
|
556
560
|
|
|
557
561
|
if (!condFn) {
|
|
558
562
|
throw new Error("Guard '".concat(guard.type, "' is not implemented on machine '").concat(machine.id, "'."));
|
|
@@ -584,10 +588,15 @@ function toObserver(nextHandler, errorHandler, completionHandler) {
|
|
|
584
588
|
complete: completionHandler || noop
|
|
585
589
|
};
|
|
586
590
|
}
|
|
591
|
+
function createInvokeId(stateNodeId, index) {
|
|
592
|
+
return "".concat(stateNodeId, ":invocation[").concat(index, "]");
|
|
593
|
+
}
|
|
587
594
|
|
|
595
|
+
exports.createInvokeId = createInvokeId;
|
|
588
596
|
exports.evaluateGuard = evaluateGuard;
|
|
589
597
|
exports.flatten = flatten;
|
|
590
598
|
exports.getEventType = getEventType;
|
|
599
|
+
exports.interopSymbols = interopSymbols;
|
|
591
600
|
exports.isActor = isActor;
|
|
592
601
|
exports.isArray = isArray;
|
|
593
602
|
exports.isBehavior = isBehavior;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xstate",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.30.0",
|
|
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",
|