xstate 4.13.0 → 4.15.1
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 +76 -0
- package/LICENSE +22 -0
- 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 +3 -1
- package/es/Actor.js +5 -1
- package/es/State.d.ts +2 -3
- package/es/StateNode.js +3 -2
- package/es/actions.d.ts +7 -3
- package/es/actions.js +23 -6
- package/es/index.d.ts +2 -2
- package/es/index.js +1 -1
- package/es/interpreter.d.ts +15 -9
- package/es/interpreter.js +65 -42
- package/es/match.d.ts +4 -1
- package/es/types.d.ts +58 -14
- package/es/utils.d.ts +2 -1
- package/es/utils.js +21 -1
- package/lib/Actor.d.ts +3 -1
- package/lib/Actor.js +5 -1
- package/lib/State.d.ts +2 -3
- package/lib/StateNode.js +2 -2
- package/lib/actions.d.ts +7 -3
- package/lib/actions.js +32 -9
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -2
- package/lib/interpreter.d.ts +15 -9
- package/lib/interpreter.js +57 -39
- package/lib/match.d.ts +4 -1
- package/lib/serviceScope.js +4 -2
- package/lib/stateUtils.js +2 -1
- package/lib/types.d.ts +58 -14
- package/lib/utils.d.ts +2 -1
- package/lib/utils.js +15 -2
- package/package.json +4 -4
package/lib/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { StateNode } from './StateNode';
|
|
2
2
|
import { State } from './State';
|
|
3
3
|
import { Interpreter, Clock } from './interpreter';
|
|
4
|
-
import { Actor } from './Actor';
|
|
5
4
|
export declare type EventType = string;
|
|
6
5
|
export declare type ActionType = string;
|
|
7
6
|
export declare type MetaObject = Record<string, any>;
|
|
@@ -116,6 +115,24 @@ export interface ActivityDefinition<TContext, TEvent extends EventObject> extend
|
|
|
116
115
|
type: string;
|
|
117
116
|
}
|
|
118
117
|
export declare type Sender<TEvent extends EventObject> = (event: Event<TEvent>) => void;
|
|
118
|
+
declare type ExcludeType<A> = {
|
|
119
|
+
[K in Exclude<keyof A, 'type'>]: A[K];
|
|
120
|
+
};
|
|
121
|
+
declare type ExtractExtraParameters<A, T> = A extends {
|
|
122
|
+
type: T;
|
|
123
|
+
} ? ExcludeType<A> : never;
|
|
124
|
+
declare type ExtractSimple<A> = A extends any ? {} extends ExcludeType<A> ? A : never : never;
|
|
125
|
+
declare type NeverIfEmpty<T> = {} extends T ? never : T;
|
|
126
|
+
export interface PayloadSender<TEvent extends EventObject> {
|
|
127
|
+
/**
|
|
128
|
+
* Send an event object or just the event type, if the event has no other payload
|
|
129
|
+
*/
|
|
130
|
+
(event: TEvent | ExtractSimple<TEvent>['type']): void;
|
|
131
|
+
/**
|
|
132
|
+
* Send an event type and its payload
|
|
133
|
+
*/
|
|
134
|
+
<K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
|
|
135
|
+
}
|
|
119
136
|
export declare type Receiver<TEvent extends EventObject> = (listener: (event: TEvent) => void) => void;
|
|
120
137
|
export declare type InvokeCallback = (callback: Sender<any>, onReceive: Receiver<EventObject>) => any;
|
|
121
138
|
export interface InvokeMeta {
|
|
@@ -205,7 +222,7 @@ export interface InvokeSourceDefinition {
|
|
|
205
222
|
[key: string]: any;
|
|
206
223
|
type: string;
|
|
207
224
|
}
|
|
208
|
-
export
|
|
225
|
+
export interface InvokeConfig<TContext, TEvent extends EventObject> {
|
|
209
226
|
/**
|
|
210
227
|
* The unique identifier for the invoked machine. If not specified, this
|
|
211
228
|
* will be the machine's own `id`, or the URL (from `src`).
|
|
@@ -242,7 +259,7 @@ export declare type InvokeConfig<TContext, TEvent extends EventObject> = {
|
|
|
242
259
|
* The transition to take upon the invoked child machine sending an error event.
|
|
243
260
|
*/
|
|
244
261
|
onError?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
245
|
-
}
|
|
262
|
+
}
|
|
246
263
|
export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> {
|
|
247
264
|
/**
|
|
248
265
|
* The relative key of the state node, which represents its location in the overall state value.
|
|
@@ -541,7 +558,7 @@ export interface NullEvent {
|
|
|
541
558
|
}
|
|
542
559
|
export interface ActivityActionObject<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
|
|
543
560
|
type: ActionTypes.Start | ActionTypes.Stop;
|
|
544
|
-
activity: ActivityDefinition<TContext, TEvent
|
|
561
|
+
activity: ActivityDefinition<TContext, TEvent> | undefined;
|
|
545
562
|
exec: ActionFunction<TContext, TEvent> | undefined;
|
|
546
563
|
}
|
|
547
564
|
export interface InvokeActionObject<TContext, TEvent extends EventObject> extends ActivityActionObject<TContext, TEvent> {
|
|
@@ -557,18 +574,32 @@ export interface LogActionObject<TContext, TEvent extends EventObject> extends L
|
|
|
557
574
|
value: any;
|
|
558
575
|
}
|
|
559
576
|
export interface SendAction<TContext, TEvent extends EventObject, TSentEvent extends EventObject> extends ActionObject<TContext, TEvent> {
|
|
560
|
-
to: string | number |
|
|
577
|
+
to: string | number | ActorRef<any> | ExprWithMeta<TContext, TEvent, string | number | ActorRef<any>> | undefined;
|
|
561
578
|
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
562
579
|
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
563
580
|
id: string | number;
|
|
564
581
|
}
|
|
565
582
|
export interface SendActionObject<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> extends SendAction<TContext, TEvent, TSentEvent> {
|
|
566
|
-
to: string | number |
|
|
583
|
+
to: string | number | ActorRef<any> | undefined;
|
|
567
584
|
_event: SCXML.Event<TSentEvent>;
|
|
568
585
|
event: TSentEvent;
|
|
569
586
|
delay?: number;
|
|
570
587
|
id: string | number;
|
|
571
588
|
}
|
|
589
|
+
export interface StopAction<TContext, TEvent extends EventObject> extends ActionObject<TContext, TEvent> {
|
|
590
|
+
type: ActionTypes.Stop;
|
|
591
|
+
activity: string | {
|
|
592
|
+
id: string;
|
|
593
|
+
} | Expr<TContext, TEvent, string | {
|
|
594
|
+
id: string;
|
|
595
|
+
}>;
|
|
596
|
+
}
|
|
597
|
+
export interface StopActionObject {
|
|
598
|
+
type: ActionTypes.Stop;
|
|
599
|
+
activity: {
|
|
600
|
+
id: string;
|
|
601
|
+
};
|
|
602
|
+
}
|
|
572
603
|
export declare type Expr<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
|
|
573
604
|
export declare type ExprWithMeta<TContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: SCXMLEventMeta<TEvent>) => T;
|
|
574
605
|
export declare type SendExpr<TContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
@@ -579,7 +610,7 @@ export declare enum SpecialTargets {
|
|
|
579
610
|
export interface SendActionOptions<TContext, TEvent extends EventObject> {
|
|
580
611
|
id?: string | number;
|
|
581
612
|
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
582
|
-
to?: string | ExprWithMeta<TContext, TEvent, string | number |
|
|
613
|
+
to?: string | ExprWithMeta<TContext, TEvent, string | number | ActorRef<any>>;
|
|
583
614
|
}
|
|
584
615
|
export interface CancelAction extends ActionObject<any, any> {
|
|
585
616
|
sendId: string | number;
|
|
@@ -620,6 +651,7 @@ export interface TransitionDefinition<TContext, TEvent extends EventObject> exte
|
|
|
620
651
|
actions: Array<ActionObject<TContext, TEvent>>;
|
|
621
652
|
cond?: Guard<TContext, TEvent>;
|
|
622
653
|
eventType: TEvent['type'] | NullEvent['type'] | '*';
|
|
654
|
+
meta?: Record<string, any>;
|
|
623
655
|
};
|
|
624
656
|
}
|
|
625
657
|
export declare type TransitionDefinitionMap<TContext, TEvent extends EventObject> = {
|
|
@@ -709,7 +741,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
709
741
|
events?: TEvent[];
|
|
710
742
|
configuration: Array<StateNode<TContext, any, TEvent>>;
|
|
711
743
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
712
|
-
children: Record<string,
|
|
744
|
+
children: Record<string, ActorRef<any>>;
|
|
713
745
|
done?: boolean;
|
|
714
746
|
}
|
|
715
747
|
export interface StateSchema<TC = any> {
|
|
@@ -809,17 +841,29 @@ export declare namespace SCXML {
|
|
|
809
841
|
$$type: 'scxml';
|
|
810
842
|
}
|
|
811
843
|
}
|
|
812
|
-
export interface Unsubscribable {
|
|
813
|
-
unsubscribe(): void;
|
|
814
|
-
}
|
|
815
|
-
export interface Subscribable<T> {
|
|
816
|
-
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Unsubscribable;
|
|
817
|
-
}
|
|
818
844
|
export interface Observer<T> {
|
|
819
845
|
next: (value: T) => void;
|
|
820
846
|
error: (err: any) => void;
|
|
821
847
|
complete: () => void;
|
|
822
848
|
}
|
|
849
|
+
export interface Subscription {
|
|
850
|
+
unsubscribe(): void;
|
|
851
|
+
}
|
|
852
|
+
export interface Subscribable<T> {
|
|
853
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
854
|
+
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
855
|
+
}
|
|
823
856
|
export declare type Spawnable = StateMachine<any, any, any> | Promise<any> | InvokeCallback | Subscribable<any>;
|
|
857
|
+
export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted> {
|
|
858
|
+
send: Sender<TEvent>;
|
|
859
|
+
}
|
|
860
|
+
export interface SpawnedActorRef<TEvent extends EventObject, TEmitted = any> extends ActorRef<TEvent, TEmitted> {
|
|
861
|
+
id: string;
|
|
862
|
+
stop?: () => void;
|
|
863
|
+
toJSON?: () => any;
|
|
864
|
+
}
|
|
865
|
+
export declare type ActorRefFrom<T extends StateMachine<any, any, any>> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate> ? SpawnedActorRef<TEvent, State<TContext, TEvent, any, TTypestate>> & {
|
|
866
|
+
state: State<TContext, TEvent, any, TTypestate>;
|
|
867
|
+
} : never;
|
|
824
868
|
export {};
|
|
825
869
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Event, StateValue, ActionType, Action, EventObject, PropertyMapper, Mapper, EventType, HistoryValue, AssignAction, Condition, Subscribable, StateMachine, ConditionPredicate, SCXML, StateLike, EventData, TransitionConfig, TransitionConfigTarget, NullEvent, SingleOrArray, Guard, InvokeSourceDefinition } from './types';
|
|
2
2
|
import { StateNode } from './StateNode';
|
|
3
|
-
import { State } from '.';
|
|
3
|
+
import { Observer, State } from '.';
|
|
4
4
|
import { Actor } from './Actor';
|
|
5
5
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
6
6
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
|
|
@@ -66,4 +66,5 @@ export declare function normalizeTarget<TContext, TEvent extends EventObject>(ta
|
|
|
66
66
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
67
67
|
export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
|
|
68
68
|
export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
|
|
69
|
+
export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
|
|
69
70
|
//# sourceMappingURL=utils.d.ts.map
|
package/lib/utils.js
CHANGED
|
@@ -42,7 +42,7 @@ var __spread = (this && this.__spread) || function () {
|
|
|
42
42
|
return ar;
|
|
43
43
|
};
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.toInvokeSource = exports.evaluateGuard = exports.reportUnhandledExceptionOnInvocation = exports.normalizeTarget = exports.toTransitionConfigArray = exports.toSCXMLEvent = exports.toEventObject = exports.uniqueId = exports.isActor = exports.isMachine = exports.symbolObservable = exports.isObservable = exports.toGuard = exports.isString = exports.isFunction = exports.isArray = exports.warn = exports.updateContext = exports.updateHistoryValue = exports.updateHistoryStates = exports.partition = exports.isPromiseLike = exports.isBuiltInEvent = exports.mapContext = exports.toArray = exports.toArrayStrict = exports.flatten = exports.pathsToStateValue = exports.toStatePaths = exports.nestedPath = exports.path = exports.mapFilterValues = exports.mapValues = exports.pathToStateValue = exports.toStateValue = exports.isStateLike = exports.toStatePath = exports.getActionType = exports.getEventType = exports.matchesState = exports.keys = void 0;
|
|
45
|
+
exports.toObserver = exports.toInvokeSource = exports.evaluateGuard = exports.reportUnhandledExceptionOnInvocation = exports.normalizeTarget = exports.toTransitionConfigArray = exports.toSCXMLEvent = exports.toEventObject = exports.uniqueId = exports.isActor = exports.isMachine = exports.symbolObservable = exports.isObservable = exports.toGuard = exports.isString = exports.isFunction = exports.isArray = exports.warn = exports.updateContext = exports.updateHistoryValue = exports.updateHistoryStates = exports.partition = exports.isPromiseLike = exports.isBuiltInEvent = exports.mapContext = exports.toArray = exports.toArrayStrict = exports.flatten = exports.pathsToStateValue = exports.toStatePaths = exports.nestedPath = exports.path = exports.mapFilterValues = exports.mapValues = exports.pathToStateValue = exports.toStateValue = exports.isStateLike = exports.toStatePath = exports.getActionType = exports.getEventType = exports.matchesState = exports.keys = void 0;
|
|
46
46
|
var constants_1 = require("./constants");
|
|
47
47
|
var environment_1 = require("./environment");
|
|
48
48
|
function keys(value) {
|
|
@@ -184,7 +184,7 @@ exports.mapFilterValues = mapFilterValues;
|
|
|
184
184
|
* Retrieves a value at the given path.
|
|
185
185
|
* @param props The deep path to the prop of the desired value
|
|
186
186
|
*/
|
|
187
|
-
|
|
187
|
+
var path = function (props) { return function (object) {
|
|
188
188
|
var e_2, _a;
|
|
189
189
|
var result = object;
|
|
190
190
|
try {
|
|
@@ -202,6 +202,7 @@ exports.path = function (props) { return function (object) {
|
|
|
202
202
|
}
|
|
203
203
|
return result;
|
|
204
204
|
}; };
|
|
205
|
+
exports.path = path;
|
|
205
206
|
/**
|
|
206
207
|
* Retrieves a value at the given path via the nested accessor prop.
|
|
207
208
|
* @param props The deep path to the prop of the desired value
|
|
@@ -609,3 +610,15 @@ function toInvokeSource(src) {
|
|
|
609
610
|
return src;
|
|
610
611
|
}
|
|
611
612
|
exports.toInvokeSource = toInvokeSource;
|
|
613
|
+
function toObserver(nextHandler, errorHandler, completionHandler) {
|
|
614
|
+
if (typeof nextHandler === 'object') {
|
|
615
|
+
return nextHandler;
|
|
616
|
+
}
|
|
617
|
+
var noop = function () { return void 0; };
|
|
618
|
+
return {
|
|
619
|
+
next: nextHandler,
|
|
620
|
+
error: errorHandler || noop,
|
|
621
|
+
complete: completionHandler || noop
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
exports.toObserver = toObserver;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xstate",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.15.1",
|
|
4
4
|
"description": "Finite State Machines and Statecharts for the Modern Web.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@babel/core": "^7.10.5",
|
|
53
53
|
"@scion-scxml/test-framework": "^2.0.15",
|
|
54
54
|
"babel-plugin-annotate-pure-calls": "^0.4.0",
|
|
55
|
-
"jest": "^
|
|
55
|
+
"jest": "^26.4.2",
|
|
56
56
|
"jsdom": "^14.0.0",
|
|
57
57
|
"jsdom-global": "^3.0.2",
|
|
58
58
|
"lerna-alias": "3.0.3-0",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"rollup-plugin-typescript2": "^0.25.2",
|
|
65
65
|
"rollup-plugin-uglify": "^6.0.2",
|
|
66
66
|
"rxjs": "^6.5.1",
|
|
67
|
-
"ts-jest": "^
|
|
67
|
+
"ts-jest": "^26.4.0",
|
|
68
68
|
"tslib": "^1.10.0",
|
|
69
|
-
"typescript": "^
|
|
69
|
+
"typescript": "^4.1.2",
|
|
70
70
|
"xml-js": "^1.6.11"
|
|
71
71
|
}
|
|
72
72
|
}
|