xstate 4.26.1 → 4.28.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 +81 -2
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Actor.js +5 -5
- package/es/State.d.ts +4 -1
- package/es/State.js +9 -2
- package/es/StateNode.d.ts +2 -1
- package/es/StateNode.js +29 -39
- package/es/actions.d.ts +18 -2
- package/es/actions.js +15 -1
- package/es/index.d.ts +7 -1
- package/es/index.js +2 -1
- package/es/interpreter.d.ts +0 -5
- package/es/interpreter.js +23 -11
- package/es/stateUtils.d.ts +1 -1
- package/es/types.d.ts +10 -6
- package/es/utils.d.ts +6 -1
- package/es/utils.js +8 -1
- package/lib/Actor.js +4 -4
- package/lib/State.d.ts +4 -1
- package/lib/State.js +9 -2
- package/lib/StateNode.d.ts +2 -1
- package/lib/StateNode.js +27 -37
- package/lib/actions.d.ts +18 -2
- package/lib/actions.js +15 -0
- package/lib/index.d.ts +7 -1
- package/lib/index.js +1 -0
- package/lib/interpreter.d.ts +0 -5
- package/lib/interpreter.js +21 -9
- package/lib/stateUtils.d.ts +1 -1
- package/lib/types.d.ts +10 -6
- package/lib/utils.d.ts +6 -1
- package/lib/utils.js +9 -0
- package/package.json +1 -1
package/lib/interpreter.js
CHANGED
|
@@ -561,7 +561,9 @@ function () {
|
|
|
561
561
|
return this;
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
this.state.configuration.
|
|
564
|
+
_tslib.__spreadArray([], _tslib.__read(this.state.configuration), false).sort(function (a, b) {
|
|
565
|
+
return b.order - a.order;
|
|
566
|
+
}).forEach(function (stateNode) {
|
|
565
567
|
var e_11, _a;
|
|
566
568
|
|
|
567
569
|
try {
|
|
@@ -583,6 +585,7 @@ function () {
|
|
|
583
585
|
}
|
|
584
586
|
}); // Stop all children
|
|
585
587
|
|
|
588
|
+
|
|
586
589
|
this.children.forEach(function (child) {
|
|
587
590
|
if (utils.isFunction(child.stop)) {
|
|
588
591
|
child.stop();
|
|
@@ -804,6 +807,10 @@ function () {
|
|
|
804
807
|
|
|
805
808
|
case actionTypes.start:
|
|
806
809
|
{
|
|
810
|
+
if (this.status !== exports.InterpreterStatus.Running) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
|
|
807
814
|
var activity = action.activity; // If the activity will be stopped right after it's started
|
|
808
815
|
// (such as in transient states)
|
|
809
816
|
// don't bother starting the activity.
|
|
@@ -1035,7 +1042,8 @@ function () {
|
|
|
1035
1042
|
}
|
|
1036
1043
|
}
|
|
1037
1044
|
});
|
|
1038
|
-
|
|
1045
|
+
|
|
1046
|
+
var actor = _tslib.__assign({
|
|
1039
1047
|
id: id,
|
|
1040
1048
|
send: function () {
|
|
1041
1049
|
return void 0;
|
|
@@ -1079,7 +1087,8 @@ function () {
|
|
|
1079
1087
|
getSnapshot: function () {
|
|
1080
1088
|
return resolvedData;
|
|
1081
1089
|
}
|
|
1082
|
-
};
|
|
1090
|
+
}, utils.interopSymbols);
|
|
1091
|
+
|
|
1083
1092
|
this.children.set(id, actor);
|
|
1084
1093
|
return actor;
|
|
1085
1094
|
};
|
|
@@ -1123,7 +1132,7 @@ function () {
|
|
|
1123
1132
|
return this.spawnPromise(callbackStop, id);
|
|
1124
1133
|
}
|
|
1125
1134
|
|
|
1126
|
-
var actor = {
|
|
1135
|
+
var actor = _tslib.__assign({
|
|
1127
1136
|
id: id,
|
|
1128
1137
|
send: function (event) {
|
|
1129
1138
|
return receivers.forEach(function (receiver) {
|
|
@@ -1153,7 +1162,8 @@ function () {
|
|
|
1153
1162
|
getSnapshot: function () {
|
|
1154
1163
|
return emitted;
|
|
1155
1164
|
}
|
|
1156
|
-
};
|
|
1165
|
+
}, utils.interopSymbols);
|
|
1166
|
+
|
|
1157
1167
|
this.children.set(id, actor);
|
|
1158
1168
|
return actor;
|
|
1159
1169
|
};
|
|
@@ -1181,7 +1191,8 @@ function () {
|
|
|
1181
1191
|
origin: id
|
|
1182
1192
|
}));
|
|
1183
1193
|
});
|
|
1184
|
-
|
|
1194
|
+
|
|
1195
|
+
var actor = _tslib.__assign({
|
|
1185
1196
|
id: id,
|
|
1186
1197
|
send: function () {
|
|
1187
1198
|
return void 0;
|
|
@@ -1200,7 +1211,8 @@ function () {
|
|
|
1200
1211
|
id: id
|
|
1201
1212
|
};
|
|
1202
1213
|
}
|
|
1203
|
-
};
|
|
1214
|
+
}, utils.interopSymbols);
|
|
1215
|
+
|
|
1204
1216
|
this.children.set(id, actor);
|
|
1205
1217
|
return actor;
|
|
1206
1218
|
};
|
|
@@ -1228,7 +1240,7 @@ function () {
|
|
|
1228
1240
|
};
|
|
1229
1241
|
|
|
1230
1242
|
Interpreter.prototype.spawnEffect = function (id, dispose) {
|
|
1231
|
-
this.children.set(id, {
|
|
1243
|
+
this.children.set(id, _tslib.__assign({
|
|
1232
1244
|
id: id,
|
|
1233
1245
|
send: function () {
|
|
1234
1246
|
return void 0;
|
|
@@ -1249,7 +1261,7 @@ function () {
|
|
|
1249
1261
|
id: id
|
|
1250
1262
|
};
|
|
1251
1263
|
}
|
|
1252
|
-
});
|
|
1264
|
+
}, utils.interopSymbols));
|
|
1253
1265
|
};
|
|
1254
1266
|
|
|
1255
1267
|
Interpreter.prototype.attachDev = function () {
|
package/lib/stateUtils.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, A
|
|
|
4
4
|
export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
|
|
5
5
|
export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
|
|
6
6
|
export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
|
|
7
|
-
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>):
|
|
7
|
+
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
|
|
8
8
|
export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
|
|
9
9
|
export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
|
|
10
10
|
export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
|
package/lib/types.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Interpreter, Clock } from './interpreter';
|
|
|
4
4
|
import { IsNever, Model, Prop } from './model.types';
|
|
5
5
|
declare type AnyFunction = (...args: any[]) => any;
|
|
6
6
|
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
7
|
+
export declare type Cast<A, B> = A extends B ? A : B;
|
|
7
8
|
export declare type EventType = string;
|
|
8
9
|
export declare type ActionType = string;
|
|
9
10
|
export declare type MetaObject = Record<string, any>;
|
|
@@ -34,7 +35,7 @@ export interface ActionObject<TContext, TEvent extends EventObject> extends Base
|
|
|
34
35
|
/**
|
|
35
36
|
* The implementation for executing the action.
|
|
36
37
|
*/
|
|
37
|
-
exec?: ActionFunction<TContext, TEvent
|
|
38
|
+
exec?: ActionFunction<TContext, TEvent> | undefined;
|
|
38
39
|
}
|
|
39
40
|
export declare type DefaultContext = Record<string, any> | undefined;
|
|
40
41
|
export declare type EventData = Record<string, any> & {
|
|
@@ -106,7 +107,7 @@ export interface TransitionConfig<TContext, TEvent extends EventObject> {
|
|
|
106
107
|
actions?: Actions<TContext, TEvent>;
|
|
107
108
|
in?: StateValue;
|
|
108
109
|
internal?: boolean;
|
|
109
|
-
target?: TransitionTarget<TContext, TEvent
|
|
110
|
+
target?: TransitionTarget<TContext, TEvent> | undefined;
|
|
110
111
|
meta?: Record<string, any>;
|
|
111
112
|
description?: string;
|
|
112
113
|
}
|
|
@@ -345,7 +346,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
345
346
|
*
|
|
346
347
|
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
347
348
|
*/
|
|
348
|
-
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject
|
|
349
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
|
|
349
350
|
/**
|
|
350
351
|
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
351
352
|
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
@@ -915,18 +916,21 @@ export interface Observer<T> {
|
|
|
915
916
|
export interface Subscription {
|
|
916
917
|
unsubscribe(): void;
|
|
917
918
|
}
|
|
919
|
+
export interface InteropObservable<T> {
|
|
920
|
+
[Symbol.observable]: () => Subscribable<T>;
|
|
921
|
+
}
|
|
918
922
|
export interface Subscribable<T> {
|
|
919
923
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
920
924
|
subscribe(observer: Observer<T>): Subscription;
|
|
921
925
|
}
|
|
922
|
-
export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | Subscribable<any> | Behavior<any>;
|
|
926
|
+
export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
|
|
923
927
|
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
|
|
924
928
|
type: TEventType;
|
|
925
929
|
} ? TEvent : never;
|
|
926
930
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
927
931
|
send: (event: TEvent) => void;
|
|
928
932
|
}
|
|
929
|
-
export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted> {
|
|
933
|
+
export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted>, InteropObservable<TEmitted> {
|
|
930
934
|
send: Sender<TEvent>;
|
|
931
935
|
id: string;
|
|
932
936
|
getSnapshot: () => TEmitted | undefined;
|
|
@@ -958,7 +962,7 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
|
|
|
958
962
|
start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
|
|
959
963
|
}
|
|
960
964
|
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;
|
|
961
|
-
declare type ResolveEventType<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;
|
|
965
|
+
declare type ResolveEventType<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 : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
962
966
|
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
|
|
963
967
|
type: K;
|
|
964
968
|
}>;
|
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;
|
|
@@ -66,4 +70,5 @@ export declare function reportUnhandledExceptionOnInvocation(originalError: any,
|
|
|
66
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;
|
|
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;
|
|
@@ -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;
|