xstate 4.17.1 → 4.19.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 +77 -0
- package/README.md +13 -13
- 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 -3
- package/es/Actor.js +8 -2
- package/es/State.d.ts +9 -1
- package/es/State.js +20 -5
- package/es/StateNode.d.ts +5 -4
- package/es/StateNode.js +25 -15
- package/es/_virtual/_tslib.js +4 -4
- package/es/actions.d.ts +1 -1
- package/es/devTools.js +2 -3
- package/es/interpreter.d.ts +3 -3
- package/es/interpreter.js +27 -3
- package/es/stateUtils.js +3 -3
- package/es/types.d.ts +11 -4
- package/es/utils.js +2 -2
- package/lib/Actor.d.ts +3 -3
- package/lib/Actor.js +4 -0
- package/lib/SimulatedClock.js +5 -4
- package/lib/State.d.ts +9 -1
- package/lib/State.js +17 -7
- package/lib/StateNode.d.ts +5 -4
- package/lib/StateNode.js +24 -14
- package/lib/actions.d.ts +1 -1
- package/lib/devTools.js +1 -2
- package/lib/interpreter.d.ts +3 -3
- package/lib/interpreter.js +21 -7
- package/lib/model.js +5 -4
- package/lib/scxml.js +5 -4
- package/lib/stateUtils.js +5 -4
- package/lib/types.d.ts +11 -4
- package/lib/utils.js +5 -4
- package/package.json +6 -6
package/lib/interpreter.js
CHANGED
|
@@ -37,9 +37,10 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
37
37
|
}
|
|
38
38
|
return ar;
|
|
39
39
|
};
|
|
40
|
-
var
|
|
41
|
-
for (var
|
|
42
|
-
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
41
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
42
|
+
to[j] = from[i];
|
|
43
|
+
return to;
|
|
43
44
|
};
|
|
44
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
46
|
exports.interpret = exports.spawn = exports.Interpreter = exports.InterpreterStatus = void 0;
|
|
@@ -557,9 +558,9 @@ var Interpreter = /** @class */ (function () {
|
|
|
557
558
|
nextState = serviceScope.provide(_this, function () {
|
|
558
559
|
return _this.machine.transition(nextState, _event);
|
|
559
560
|
});
|
|
560
|
-
batchedActions.push.apply(batchedActions,
|
|
561
|
+
batchedActions.push.apply(batchedActions, __spreadArray([], __read(nextState.actions.map(function (a) {
|
|
561
562
|
return State_1.bindActionToState(a, nextState);
|
|
562
|
-
})));
|
|
563
|
+
}))));
|
|
563
564
|
batchChanged = batchChanged || !!nextState.changed;
|
|
564
565
|
};
|
|
565
566
|
try {
|
|
@@ -840,8 +841,10 @@ var Interpreter = /** @class */ (function () {
|
|
|
840
841
|
Interpreter.prototype.spawnPromise = function (promise, id) {
|
|
841
842
|
var _this = this;
|
|
842
843
|
var canceled = false;
|
|
844
|
+
var resolvedData = undefined;
|
|
843
845
|
promise.then(function (response) {
|
|
844
846
|
if (!canceled) {
|
|
847
|
+
resolvedData = response;
|
|
845
848
|
_this.removeChild(id);
|
|
846
849
|
_this.send(utils_1.toSCXMLEvent(actions_1.doneInvoke(id, response), { origin: id }));
|
|
847
850
|
}
|
|
@@ -898,7 +901,8 @@ var Interpreter = /** @class */ (function () {
|
|
|
898
901
|
},
|
|
899
902
|
toJSON: function () {
|
|
900
903
|
return { id: id };
|
|
901
|
-
}
|
|
904
|
+
},
|
|
905
|
+
getSnapshot: function () { return resolvedData; }
|
|
902
906
|
};
|
|
903
907
|
this.children.set(id, actor);
|
|
904
908
|
return actor;
|
|
@@ -908,7 +912,9 @@ var Interpreter = /** @class */ (function () {
|
|
|
908
912
|
var canceled = false;
|
|
909
913
|
var receivers = new Set();
|
|
910
914
|
var listeners = new Set();
|
|
915
|
+
var emitted = undefined;
|
|
911
916
|
var receive = function (e) {
|
|
917
|
+
emitted = e;
|
|
912
918
|
listeners.forEach(function (listener) { return listener(e); });
|
|
913
919
|
if (canceled) {
|
|
914
920
|
return;
|
|
@@ -948,14 +954,17 @@ var Interpreter = /** @class */ (function () {
|
|
|
948
954
|
},
|
|
949
955
|
toJSON: function () {
|
|
950
956
|
return { id: id };
|
|
951
|
-
}
|
|
957
|
+
},
|
|
958
|
+
getSnapshot: function () { return emitted; }
|
|
952
959
|
};
|
|
953
960
|
this.children.set(id, actor);
|
|
954
961
|
return actor;
|
|
955
962
|
};
|
|
956
963
|
Interpreter.prototype.spawnObservable = function (source, id) {
|
|
957
964
|
var _this = this;
|
|
965
|
+
var emitted = undefined;
|
|
958
966
|
var subscription = source.subscribe(function (value) {
|
|
967
|
+
emitted = value;
|
|
959
968
|
_this.send(utils_1.toSCXMLEvent(value, { origin: id }));
|
|
960
969
|
}, function (err) {
|
|
961
970
|
_this.removeChild(id);
|
|
@@ -971,6 +980,7 @@ var Interpreter = /** @class */ (function () {
|
|
|
971
980
|
return source.subscribe(next, handleError, complete);
|
|
972
981
|
},
|
|
973
982
|
stop: function () { return subscription.unsubscribe(); },
|
|
983
|
+
getSnapshot: function () { return emitted; },
|
|
974
984
|
toJSON: function () {
|
|
975
985
|
return { id: id };
|
|
976
986
|
}
|
|
@@ -1005,6 +1015,7 @@ var Interpreter = /** @class */ (function () {
|
|
|
1005
1015
|
return { unsubscribe: function () { return void 0; } };
|
|
1006
1016
|
},
|
|
1007
1017
|
stop: dispose || undefined,
|
|
1018
|
+
getSnapshot: function () { return undefined; },
|
|
1008
1019
|
toJSON: function () {
|
|
1009
1020
|
return { id: id };
|
|
1010
1021
|
}
|
|
@@ -1040,6 +1051,9 @@ var Interpreter = /** @class */ (function () {
|
|
|
1040
1051
|
Interpreter.prototype[utils_1.symbolObservable] = function () {
|
|
1041
1052
|
return this;
|
|
1042
1053
|
};
|
|
1054
|
+
Interpreter.prototype.getSnapshot = function () {
|
|
1055
|
+
return this._state;
|
|
1056
|
+
};
|
|
1043
1057
|
/**
|
|
1044
1058
|
* The default interpreter options:
|
|
1045
1059
|
*
|
package/lib/model.js
CHANGED
|
@@ -26,9 +26,10 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
}
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
|
-
var
|
|
30
|
-
for (var
|
|
31
|
-
|
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
30
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
31
|
+
to[j] = from[i];
|
|
32
|
+
return to;
|
|
32
33
|
};
|
|
33
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
35
|
exports.createModel = void 0;
|
|
@@ -45,7 +46,7 @@ function createModel(initialContext, creators) {
|
|
|
45
46
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
46
47
|
args[_i] = arguments[_i];
|
|
47
48
|
}
|
|
48
|
-
return (__assign(__assign({}, fn.apply(void 0,
|
|
49
|
+
return (__assign(__assign({}, fn.apply(void 0, __spreadArray([], __read(args)))), { type: eventType }));
|
|
49
50
|
}; })
|
|
50
51
|
: undefined),
|
|
51
52
|
reset: function () { return actions_1.assign(initialContext); }
|
package/lib/scxml.js
CHANGED
|
@@ -26,9 +26,10 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
}
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
|
-
var
|
|
30
|
-
for (var
|
|
31
|
-
|
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
30
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
31
|
+
to[j] = from[i];
|
|
32
|
+
return to;
|
|
32
33
|
};
|
|
33
34
|
var __values = (this && this.__values) || function(o) {
|
|
34
35
|
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
@@ -112,7 +113,7 @@ var evaluateExecutableContent = function (context, _ev, meta, body) {
|
|
|
112
113
|
.join('\n');
|
|
113
114
|
var args = ['context', '_event'];
|
|
114
115
|
var fnBody = "\n " + scope + "\n " + body + "\n ";
|
|
115
|
-
var fn = new (Function.bind.apply(Function,
|
|
116
|
+
var fn = new (Function.bind.apply(Function, __spreadArray(__spreadArray([void 0], __read(args)), [fnBody])))();
|
|
116
117
|
return fn(context, meta._event);
|
|
117
118
|
};
|
|
118
119
|
function createCond(cond) {
|
package/lib/stateUtils.js
CHANGED
|
@@ -26,9 +26,10 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
}
|
|
27
27
|
return ar;
|
|
28
28
|
};
|
|
29
|
-
var
|
|
30
|
-
for (var
|
|
31
|
-
|
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
30
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
31
|
+
to[j] = from[i];
|
|
32
|
+
return to;
|
|
32
33
|
};
|
|
33
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
35
|
exports.isInFinalState = exports.nextEvents = exports.has = exports.getValue = exports.getAdjList = exports.getConfiguration = exports.getAllStateNodes = exports.getChildren = exports.isLeafNode = void 0;
|
|
@@ -209,7 +210,7 @@ function has(iterable, item) {
|
|
|
209
210
|
}
|
|
210
211
|
exports.has = has;
|
|
211
212
|
function nextEvents(configuration) {
|
|
212
|
-
return utils_1.flatten(
|
|
213
|
+
return __spreadArray([], __read(new Set(utils_1.flatten(__spreadArray([], __read(configuration.map(function (sn) { return sn.ownEvents; })))))));
|
|
213
214
|
}
|
|
214
215
|
exports.nextEvents = nextEvents;
|
|
215
216
|
function isInFinalState(configuration, stateNode) {
|
package/lib/types.d.ts
CHANGED
|
@@ -134,7 +134,7 @@ export interface PayloadSender<TEvent extends EventObject> {
|
|
|
134
134
|
<K extends TEvent['type']>(eventType: K, payload: NeverIfEmpty<ExtractExtraParameters<TEvent, K>>): void;
|
|
135
135
|
}
|
|
136
136
|
export declare type Receiver<TEvent extends EventObject> = (listener: (event: TEvent) => void) => void;
|
|
137
|
-
export declare type InvokeCallback = (callback: Sender<
|
|
137
|
+
export declare type InvokeCallback<TEvent extends EventObject = AnyEventObject> = (callback: Sender<TEvent>, onReceive: Receiver<TEvent>) => any;
|
|
138
138
|
export interface InvokeMeta {
|
|
139
139
|
data: any;
|
|
140
140
|
src: InvokeSourceDefinition;
|
|
@@ -152,7 +152,7 @@ export interface InvokeMeta {
|
|
|
152
152
|
* @param context The current machine `context`
|
|
153
153
|
* @param event The event that invoked the service
|
|
154
154
|
*/
|
|
155
|
-
export declare type InvokeCreator<TContext, TEvent = AnyEventObject, TFinalContext = any> = (context: TContext, event: TEvent, meta: InvokeMeta) => PromiseLike<TFinalContext> | StateMachine<TFinalContext, any, any> | Subscribable<
|
|
155
|
+
export declare type InvokeCreator<TContext, TEvent extends EventObject = AnyEventObject, TFinalContext = any> = (context: TContext, event: TEvent, meta: InvokeMeta) => PromiseLike<TFinalContext> | StateMachine<TFinalContext, any, any> | Subscribable<EventObject> | InvokeCallback<TEvent>;
|
|
156
156
|
export interface InvokeDefinition<TContext, TEvent extends EventObject> extends ActivityDefinition<TContext, TEvent> {
|
|
157
157
|
/**
|
|
158
158
|
* The source of the machine to be invoked, or the machine itself.
|
|
@@ -380,6 +380,10 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
|
|
|
380
380
|
* The order this state node appears. Corresponds to the implicit SCXML document order.
|
|
381
381
|
*/
|
|
382
382
|
order?: number;
|
|
383
|
+
/**
|
|
384
|
+
* The tags for this state node, which are accumulated into the `state.tags` property.
|
|
385
|
+
*/
|
|
386
|
+
tags?: SingleOrArray<string>;
|
|
383
387
|
}
|
|
384
388
|
export interface StateNodeDefinition<TContext, TStateSchema extends StateSchema, TEvent extends EventObject> {
|
|
385
389
|
id: string;
|
|
@@ -761,6 +765,7 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
|
|
|
761
765
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
762
766
|
children: Record<string, ActorRef<any>>;
|
|
763
767
|
done?: boolean;
|
|
768
|
+
tags?: Set<string>;
|
|
764
769
|
}
|
|
765
770
|
export interface StateSchema<TC = any> {
|
|
766
771
|
meta?: any;
|
|
@@ -880,12 +885,14 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
880
885
|
}
|
|
881
886
|
export interface SpawnedActorRef<TEvent extends EventObject, TEmitted = any> extends ActorRef<TEvent, TEmitted> {
|
|
882
887
|
id: string;
|
|
888
|
+
getSnapshot: () => TEmitted | undefined;
|
|
883
889
|
stop?: () => void;
|
|
884
890
|
toJSON?: () => any;
|
|
885
891
|
}
|
|
886
|
-
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>> & {
|
|
892
|
+
export declare type ActorRefFrom<T extends StateMachine<any, any, any> | Promise<any>> = T extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate> ? SpawnedActorRef<TEvent, State<TContext, TEvent, any, TTypestate>> & {
|
|
887
893
|
state: State<TContext, TEvent, any, TTypestate>;
|
|
888
|
-
} : never;
|
|
894
|
+
} : T extends Promise<infer U> ? SpawnedActorRef<never, U> : never;
|
|
889
895
|
export declare type AnyInterpreter = Interpreter<any, any, any, any>;
|
|
896
|
+
export declare type InterpreterFrom<T extends StateMachine<any, any, any, any>> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate> : never;
|
|
890
897
|
export {};
|
|
891
898
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/utils.js
CHANGED
|
@@ -37,9 +37,10 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
37
37
|
}
|
|
38
38
|
return ar;
|
|
39
39
|
};
|
|
40
|
-
var
|
|
41
|
-
for (var
|
|
42
|
-
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
41
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
42
|
+
to[j] = from[i];
|
|
43
|
+
return to;
|
|
43
44
|
};
|
|
44
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
46
|
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;
|
|
@@ -282,7 +283,7 @@ function pathsToStateValue(paths) {
|
|
|
282
283
|
exports.pathsToStateValue = pathsToStateValue;
|
|
283
284
|
function flatten(array) {
|
|
284
285
|
var _a;
|
|
285
|
-
return (_a = []).concat.apply(_a,
|
|
286
|
+
return (_a = []).concat.apply(_a, __spreadArray([], __read(array)));
|
|
286
287
|
}
|
|
287
288
|
exports.flatten = flatten;
|
|
288
289
|
function toArrayStrict(value) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xstate",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.19.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",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"bugs": {
|
|
47
47
|
"url": "https://github.com/davidkpiano/xstate/issues"
|
|
48
48
|
},
|
|
49
|
-
"homepage": "https://github.com/davidkpiano/xstate/tree/
|
|
49
|
+
"homepage": "https://github.com/davidkpiano/xstate/tree/main/packages/core#readme",
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@babel/cli": "^7.10.5",
|
|
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": "^26.
|
|
55
|
+
"jest": "^26.6.3",
|
|
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.29.0",
|
|
65
65
|
"rollup-plugin-uglify": "^6.0.2",
|
|
66
66
|
"rxjs": "^6.5.1",
|
|
67
|
-
"ts-jest": "^26.
|
|
68
|
-
"tslib": "^
|
|
69
|
-
"typescript": "^4.
|
|
67
|
+
"ts-jest": "^26.5.6",
|
|
68
|
+
"tslib": "^2.2.0",
|
|
69
|
+
"typescript": "^4.2.4",
|
|
70
70
|
"xml-js": "^1.6.11"
|
|
71
71
|
}
|
|
72
72
|
}
|