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.
@@ -37,9 +37,10 @@ var __read = (this && this.__read) || function (o, n) {
37
37
  }
38
38
  return ar;
39
39
  };
40
- var __spread = (this && this.__spread) || function () {
41
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
42
- return ar;
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, __spread(nextState.actions.map(function (a) {
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 __spread = (this && this.__spread) || function () {
30
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
31
- return ar;
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, __spread(args))), { type: eventType }));
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 __spread = (this && this.__spread) || function () {
30
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
31
- return ar;
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, __spread([void 0], args, [fnBody])))();
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 __spread = (this && this.__spread) || function () {
30
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
31
- return ar;
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(__spread(new Set(configuration.map(function (sn) { return sn.ownEvents; }))));
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<any>, onReceive: Receiver<EventObject>) => any;
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<any> | InvokeCallback;
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 __spread = (this && this.__spread) || function () {
41
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
42
- return ar;
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, __spread(array));
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.17.1",
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/master/packages/core#readme",
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.4.2",
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.4.0",
68
- "tslib": "^1.10.0",
69
- "typescript": "^4.1.2",
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
  }