xstate 4.30.1 → 4.30.4

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/lib/StateNode.js CHANGED
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('./_virtual/_tslib.js');
6
+ var types = require('./types.js');
7
+ var actionTypes = require('./actionTypes.js');
6
8
  var constants = require('./constants.js');
7
9
  var environment = require('./environment.js');
8
10
  var utils = require('./utils.js');
9
- var types = require('./types.js');
10
- var stateUtils = require('./stateUtils.js');
11
- var actionTypes = require('./actionTypes.js');
12
11
  var actions = require('./actions.js');
13
- var State = require('./State.js');
14
12
  var Actor = require('./Actor.js');
13
+ var stateUtils = require('./stateUtils.js');
14
+ var State = require('./State.js');
15
15
  var invokeUtils = require('./invokeUtils.js');
16
16
 
17
17
  var NULL_EVENT = '';
@@ -92,7 +92,7 @@ function () {
92
92
  this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : constants.STATE_DELIMITER);
93
93
  this.id = this.config.id || _tslib.__spreadArray([this.machine.key], _tslib.__read(this.path), false).join(this.delimiter);
94
94
  this.version = this.parent ? this.parent.version : this.config.version;
95
- this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && utils.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');
95
+ this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');
96
96
  this.schema = this.parent ? this.machine.schema : (_a = this.config.schema) !== null && _a !== void 0 ? _a : {};
97
97
  this.description = this.config.description;
98
98
 
@@ -369,7 +369,7 @@ function () {
369
369
  return _tslib.__assign(_tslib.__assign({}, transition), {
370
370
  event: eventType
371
371
  });
372
- }) : utils.flatten(utils.keys(afterConfig).map(function (delay, i) {
372
+ }) : utils.flatten(Object.keys(afterConfig).map(function (delay, i) {
373
373
  var configTransition = afterConfig[delay];
374
374
  var resolvedTransition = utils.isString(configTransition) ? {
375
375
  target: configTransition
@@ -413,7 +413,7 @@ function () {
413
413
  return initialStateValue !== undefined ? this.getStateNodes((_a = {}, _a[stateValue] = initialStateValue, _a)) : [this, this.states[stateValue]];
414
414
  }
415
415
 
416
- var subStateKeys = utils.keys(stateValue);
416
+ var subStateKeys = Object.keys(stateValue);
417
417
  var subStateNodes = [this];
418
418
  subStateNodes.push.apply(subStateNodes, _tslib.__spreadArray([], _tslib.__read(utils.flatten(subStateKeys.map(function (subStateKey) {
419
419
  return _this.getStateNode(subStateKey).getStateNodes(stateValue[subStateKey]);
@@ -463,7 +463,7 @@ function () {
463
463
  };
464
464
 
465
465
  StateNode.prototype.transitionCompoundNode = function (stateValue, state, _event) {
466
- var subStateKeys = utils.keys(stateValue);
466
+ var subStateKeys = Object.keys(stateValue);
467
467
  var stateNode = this.getStateNode(subStateKeys[0]);
468
468
 
469
469
  var next = stateNode._transition(stateValue[subStateKeys[0]], state, _event);
@@ -481,7 +481,7 @@ function () {
481
481
  var transitionMap = {};
482
482
 
483
483
  try {
484
- for (var _b = _tslib.__values(utils.keys(stateValue)), _c = _b.next(); !_c.done; _c = _b.next()) {
484
+ for (var _b = _tslib.__values(Object.keys(stateValue)), _c = _b.next(); !_c.done; _c = _b.next()) {
485
485
  var subStateKey = _c.value;
486
486
  var subStateValue = stateValue[subStateKey];
487
487
 
@@ -509,7 +509,7 @@ function () {
509
509
  }
510
510
  }
511
511
 
512
- var stateTransitions = utils.keys(transitionMap).map(function (key) {
512
+ var stateTransitions = Object.keys(transitionMap).map(function (key) {
513
513
  return transitionMap[key];
514
514
  });
515
515
  var enabledTransitions = utils.flatten(stateTransitions.map(function (st) {
@@ -526,7 +526,7 @@ function () {
526
526
  var entryNodes = utils.flatten(stateTransitions.map(function (t) {
527
527
  return t.entrySet;
528
528
  }));
529
- var configuration = utils.flatten(utils.keys(transitionMap).map(function (key) {
529
+ var configuration = utils.flatten(Object.keys(transitionMap).map(function (key) {
530
530
  return transitionMap[key].configuration;
531
531
  }));
532
532
  return {
@@ -537,7 +537,7 @@ function () {
537
537
  })),
538
538
  configuration: configuration,
539
539
  source: state,
540
- actions: utils.flatten(utils.keys(transitionMap).map(function (key) {
540
+ actions: utils.flatten(Object.keys(transitionMap).map(function (key) {
541
541
  return transitionMap[key].actions;
542
542
  }))
543
543
  };
@@ -550,7 +550,7 @@ function () {
550
550
  } // hierarchical node
551
551
 
552
552
 
553
- if (utils.keys(stateValue).length === 1) {
553
+ if (Object.keys(stateValue).length === 1) {
554
554
  return this.transitionCompoundNode(stateValue, state, _event);
555
555
  } // orthogonal node
556
556
 
@@ -1084,7 +1084,7 @@ function () {
1084
1084
  return stateValue;
1085
1085
  }
1086
1086
 
1087
- if (!utils.keys(stateValue).length) {
1087
+ if (!Object.keys(stateValue).length) {
1088
1088
  return this.initialStateValue || {};
1089
1089
  }
1090
1090
 
@@ -1275,7 +1275,7 @@ function () {
1275
1275
  };
1276
1276
 
1277
1277
  StateNode.prototype.historyValue = function (relativeStateValue) {
1278
- if (!utils.keys(this.states).length) {
1278
+ if (!Object.keys(this.states).length) {
1279
1279
  return undefined;
1280
1280
  }
1281
1281
 
@@ -1335,7 +1335,7 @@ function () {
1335
1335
  get: function () {
1336
1336
  var _this = this;
1337
1337
 
1338
- var childStateIds = utils.flatten(utils.keys(this.states).map(function (stateKey) {
1338
+ var childStateIds = utils.flatten(Object.keys(this.states).map(function (stateKey) {
1339
1339
  return _this.states[stateKey].stateIds;
1340
1340
  }));
1341
1341
  return [this.id].concat(childStateIds);
@@ -1359,7 +1359,7 @@ function () {
1359
1359
 
1360
1360
  if (states) {
1361
1361
  try {
1362
- for (var _c = _tslib.__values(utils.keys(states)), _d = _c.next(); !_d.done; _d = _c.next()) {
1362
+ for (var _c = _tslib.__values(Object.keys(states)), _d = _c.next(); !_d.done; _d = _c.next()) {
1363
1363
  var stateId = _d.value;
1364
1364
  var state = states[stateId];
1365
1365
 
@@ -1502,7 +1502,7 @@ function () {
1502
1502
  wildcardConfigs = _d === void 0 ? [] : _d,
1503
1503
  strictTransitionConfigs_1 = _tslib.__rest(_b, [typeof _c === "symbol" ? _c : _c + ""]);
1504
1504
 
1505
- onConfig = utils.flatten(utils.keys(strictTransitionConfigs_1).map(function (key) {
1505
+ onConfig = utils.flatten(Object.keys(strictTransitionConfigs_1).map(function (key) {
1506
1506
  if (!environment.IS_PRODUCTION && key === NULL_EVENT) {
1507
1507
  utils.warn(false, "Empty string transition configs (e.g., `{ on: { '': ... }}`) for transient transitions are deprecated. Specify the transition in the `{ always: ... }` property instead. " + "Please check the `on` configuration for \"#".concat(_this.id, "\"."));
1508
1508
  }
package/lib/actions.js CHANGED
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('./_virtual/_tslib.js');
6
- var environment = require('./environment.js');
7
- var utils = require('./utils.js');
8
6
  var types = require('./types.js');
9
7
  var actionTypes = require('./actionTypes.js');
8
+ var environment = require('./environment.js');
9
+ var utils = require('./utils.js');
10
10
 
11
11
  var initEvent = /*#__PURE__*/utils.toSCXMLEvent({
12
12
  type: actionTypes.init
package/lib/behaviors.js CHANGED
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('./environment.js');
6
- var utils = require('./utils.js');
7
5
  require('./types.js');
8
6
  require('./actionTypes.js');
7
+ require('./environment.js');
8
+ var utils = require('./utils.js');
9
9
  var Actor = require('./Actor.js');
10
10
 
11
11
  function spawnBehavior(behavior, options) {
package/lib/index.d.ts CHANGED
@@ -1,17 +1,19 @@
1
- import { matchesState } from './utils';
2
- import { mapState } from './mapState';
3
- import { StateNode } from './StateNode';
4
- import { State } from './State';
5
- import { Machine, createMachine } from './Machine';
6
- import { Actor } from './Actor';
7
1
  import * as actions from './actions';
8
- import { interpret, Interpreter, spawn, InterpreterStatus } from './interpreter';
2
+ import { Actor, toActorRef } from './Actor';
3
+ import { interpret, Interpreter, InterpreterStatus, spawn } from './interpreter';
4
+ import { createMachine, Machine } from './Machine';
5
+ import { mapState } from './mapState';
9
6
  import { matchState } from './match';
10
7
  import { createSchema, t } from './schema';
11
- declare const assign: <TContext, TEvent extends import("./types").EventObject = import("./types").EventObject>(assignment: import("./types").Assigner<TContext, TEvent> | import("./types").PropertyAssigner<TContext, TEvent>) => import("./types").AssignAction<TContext, TEvent>, send: typeof actions.send, sendParent: typeof actions.sendParent, sendUpdate: typeof actions.sendUpdate, forwardTo: typeof actions.forwardTo, doneInvoke: typeof actions.doneInvoke;
12
- export { Actor, Machine, StateNode, State, matchesState, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema, t };
13
- export * from './types';
8
+ import { State } from './State';
9
+ import { StateNode } from './StateNode';
10
+ export { spawnBehavior } from './behaviors';
11
+ export { XStateDevInterface } from './devTools';
14
12
  export * from './typegenTypes';
13
+ export * from './types';
14
+ export { matchesState, toEventObject, toObserver, toSCXMLEvent } from './utils';
15
+ export { Actor, toActorRef, Machine, StateNode, State, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema, t };
16
+ declare const assign: <TContext, TEvent extends import("./types").EventObject = import("./types").EventObject>(assignment: import("./types").Assigner<TContext, TEvent> | import("./types").PropertyAssigner<TContext, TEvent>) => import("./types").AssignAction<TContext, TEvent>, send: typeof actions.send, sendParent: typeof actions.sendParent, sendUpdate: typeof actions.sendUpdate, forwardTo: typeof actions.forwardTo, doneInvoke: typeof actions.doneInvoke;
15
17
  declare global {
16
18
  interface SymbolConstructor {
17
19
  readonly observable: symbol;
package/lib/index.js CHANGED
@@ -2,14 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var utils = require('./utils.js');
6
- var mapState = require('./mapState.js');
7
5
  var types = require('./types.js');
6
+ var utils = require('./utils.js');
8
7
  var actions = require('./actions.js');
8
+ var Actor = require('./Actor.js');
9
9
  var State = require('./State.js');
10
+ var behaviors = require('./behaviors.js');
11
+ var interpreter = require('./interpreter.js');
10
12
  var StateNode = require('./StateNode.js');
11
13
  var Machine = require('./Machine.js');
12
- var interpreter = require('./interpreter.js');
14
+ var mapState = require('./mapState.js');
13
15
  var match = require('./match.js');
14
16
  var schema = require('./schema.js');
15
17
 
@@ -20,8 +22,6 @@ var assign = actions.assign,
20
22
  forwardTo = actions.forwardTo,
21
23
  doneInvoke = actions.doneInvoke;
22
24
 
23
- exports.matchesState = utils.matchesState;
24
- exports.mapState = mapState.mapState;
25
25
  Object.defineProperty(exports, 'ActionTypes', {
26
26
  enumerable: true,
27
27
  get: function () {
@@ -34,11 +34,14 @@ Object.defineProperty(exports, 'SpecialTargets', {
34
34
  return types.SpecialTargets;
35
35
  }
36
36
  });
37
+ exports.matchesState = utils.matchesState;
38
+ exports.toEventObject = utils.toEventObject;
39
+ exports.toObserver = utils.toObserver;
40
+ exports.toSCXMLEvent = utils.toSCXMLEvent;
37
41
  exports.actions = actions;
42
+ exports.toActorRef = Actor.toActorRef;
38
43
  exports.State = State.State;
39
- exports.StateNode = StateNode.StateNode;
40
- exports.Machine = Machine.Machine;
41
- exports.createMachine = Machine.createMachine;
44
+ exports.spawnBehavior = behaviors.spawnBehavior;
42
45
  exports.Interpreter = interpreter.Interpreter;
43
46
  Object.defineProperty(exports, 'InterpreterStatus', {
44
47
  enumerable: true,
@@ -48,6 +51,10 @@ Object.defineProperty(exports, 'InterpreterStatus', {
48
51
  });
49
52
  exports.interpret = interpreter.interpret;
50
53
  exports.spawn = interpreter.spawn;
54
+ exports.StateNode = StateNode.StateNode;
55
+ exports.Machine = Machine.Machine;
56
+ exports.createMachine = Machine.createMachine;
57
+ exports.mapState = mapState.mapState;
51
58
  exports.matchState = match.matchState;
52
59
  exports.createSchema = schema.createSchema;
53
60
  exports.t = schema.t;
@@ -1,5 +1,6 @@
1
- import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription, StateConfig } from './types';
1
+ import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription, StateConfig, InteropSubscribable } from './types';
2
2
  import { State } from './State';
3
+ import { symbolObservable } from './utils';
3
4
  import { AreAllImplementationsAssumedToBeProvided, TypegenDisabled } from './typegenTypes';
4
5
  export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
5
6
  value: any;
@@ -22,6 +23,7 @@ export declare enum InterpreterStatus {
22
23
  Running = 1,
23
24
  Stopped = 2
24
25
  }
26
+ /** @ts-ignore [symbolObservable] creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
25
27
  export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
26
28
  value: any;
27
29
  context: TContext;
@@ -92,8 +94,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
92
94
  execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
93
95
  private update;
94
96
  onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
95
- subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
96
97
  subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>): Subscription;
98
+ subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
97
99
  /**
98
100
  * Adds an event listener that is notified whenever an event is sent to the running interpreter.
99
101
  * @param listener The event listener
@@ -188,7 +190,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
188
190
  toJSON(): {
189
191
  id: string;
190
192
  };
191
- [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
193
+ /** @ts-ignore this creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
194
+ [symbolObservable](): InteropSubscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
192
195
  getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
193
196
  }
194
197
  export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('./_virtual/_tslib.js');
6
- var environment = require('./environment.js');
7
- var utils = require('./utils.js');
8
6
  var types = require('./types.js');
9
- var stateUtils = require('./stateUtils.js');
10
7
  var actionTypes = require('./actionTypes.js');
8
+ var environment = require('./environment.js');
9
+ var utils = require('./utils.js');
11
10
  var actions = require('./actions.js');
12
- var State = require('./State.js');
13
11
  var serviceScope = require('./serviceScope.js');
14
12
  var Actor = require('./Actor.js');
13
+ var stateUtils = require('./stateUtils.js');
14
+ var State = require('./State.js');
15
15
  var scheduler = require('./scheduler.js');
16
16
  var registry = require('./registry.js');
17
17
  var devTools = require('./devTools.js');
@@ -27,6 +27,8 @@ var DEFAULT_SPAWN_OPTIONS = {
27
27
  InterpreterStatus[InterpreterStatus["Running"] = 1] = "Running";
28
28
  InterpreterStatus[InterpreterStatus["Stopped"] = 2] = "Stopped";
29
29
  })(exports.InterpreterStatus || (exports.InterpreterStatus = {}));
30
+ /** @ts-ignore [symbolObservable] creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
31
+
30
32
 
31
33
  var Interpreter =
32
34
  /*#__PURE__*/
@@ -594,7 +596,7 @@ function () {
594
596
 
595
597
  try {
596
598
  // Cancel all delayed events
597
- for (var _p = _tslib.__values(utils.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {
599
+ for (var _p = _tslib.__values(Object.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {
598
600
  var key = _q.value;
599
601
  this.clock.clearTimeout(this.delayedEventsMap[key]);
600
602
  }
@@ -1000,6 +1002,8 @@ function () {
1000
1002
  };
1001
1003
 
1002
1004
  Interpreter.prototype.spawnPromise = function (promise, id) {
1005
+ var _a;
1006
+
1003
1007
  var _this = this;
1004
1008
 
1005
1009
  var canceled = false;
@@ -1042,8 +1046,7 @@ function () {
1042
1046
  }
1043
1047
  }
1044
1048
  });
1045
-
1046
- var actor = _tslib.__assign({
1049
+ var actor = (_a = {
1047
1050
  id: id,
1048
1051
  send: function () {
1049
1052
  return void 0;
@@ -1087,13 +1090,16 @@ function () {
1087
1090
  getSnapshot: function () {
1088
1091
  return resolvedData;
1089
1092
  }
1090
- }, utils.interopSymbols);
1091
-
1093
+ }, _a[utils.symbolObservable] = function () {
1094
+ return this;
1095
+ }, _a);
1092
1096
  this.children.set(id, actor);
1093
1097
  return actor;
1094
1098
  };
1095
1099
 
1096
1100
  Interpreter.prototype.spawnCallback = function (callback, id) {
1101
+ var _a;
1102
+
1097
1103
  var _this = this;
1098
1104
 
1099
1105
  var canceled = false;
@@ -1132,7 +1138,7 @@ function () {
1132
1138
  return this.spawnPromise(callbackStop, id);
1133
1139
  }
1134
1140
 
1135
- var actor = _tslib.__assign({
1141
+ var actor = (_a = {
1136
1142
  id: id,
1137
1143
  send: function (event) {
1138
1144
  return receivers.forEach(function (receiver) {
@@ -1140,10 +1146,11 @@ function () {
1140
1146
  });
1141
1147
  },
1142
1148
  subscribe: function (next) {
1143
- listeners.add(next);
1149
+ var observer = utils.toObserver(next);
1150
+ listeners.add(observer.next);
1144
1151
  return {
1145
1152
  unsubscribe: function () {
1146
- listeners.delete(next);
1153
+ listeners.delete(observer.next);
1147
1154
  }
1148
1155
  };
1149
1156
  },
@@ -1162,13 +1169,16 @@ function () {
1162
1169
  getSnapshot: function () {
1163
1170
  return emitted;
1164
1171
  }
1165
- }, utils.interopSymbols);
1166
-
1172
+ }, _a[utils.symbolObservable] = function () {
1173
+ return this;
1174
+ }, _a);
1167
1175
  this.children.set(id, actor);
1168
1176
  return actor;
1169
1177
  };
1170
1178
 
1171
1179
  Interpreter.prototype.spawnObservable = function (source, id) {
1180
+ var _a;
1181
+
1172
1182
  var _this = this;
1173
1183
 
1174
1184
  var emitted;
@@ -1191,8 +1201,7 @@ function () {
1191
1201
  origin: id
1192
1202
  }));
1193
1203
  });
1194
-
1195
- var actor = _tslib.__assign({
1204
+ var actor = (_a = {
1196
1205
  id: id,
1197
1206
  send: function () {
1198
1207
  return void 0;
@@ -1211,8 +1220,9 @@ function () {
1211
1220
  id: id
1212
1221
  };
1213
1222
  }
1214
- }, utils.interopSymbols);
1215
-
1223
+ }, _a[utils.symbolObservable] = function () {
1224
+ return this;
1225
+ }, _a);
1216
1226
  this.children.set(id, actor);
1217
1227
  return actor;
1218
1228
  };
@@ -1240,7 +1250,9 @@ function () {
1240
1250
  };
1241
1251
 
1242
1252
  Interpreter.prototype.spawnEffect = function (id, dispose) {
1243
- this.children.set(id, _tslib.__assign({
1253
+ var _a;
1254
+
1255
+ this.children.set(id, (_a = {
1244
1256
  id: id,
1245
1257
  send: function () {
1246
1258
  return void 0;
@@ -1261,7 +1273,9 @@ function () {
1261
1273
  id: id
1262
1274
  };
1263
1275
  }
1264
- }, utils.interopSymbols));
1276
+ }, _a[utils.symbolObservable] = function () {
1277
+ return this;
1278
+ }, _a));
1265
1279
  };
1266
1280
 
1267
1281
  Interpreter.prototype.attachDev = function () {
@@ -1299,12 +1313,12 @@ function () {
1299
1313
  id: this.id
1300
1314
  };
1301
1315
  };
1316
+ /** @ts-ignore this creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
1317
+
1302
1318
 
1303
1319
  Interpreter.prototype[utils.symbolObservable] = function () {
1304
1320
  return this;
1305
- }; // this gets stripped by Babel to avoid having "undefined" property in environments without this non-standard Symbol
1306
- // it has to be here to be included in the generated .d.ts
1307
-
1321
+ };
1308
1322
 
1309
1323
  Interpreter.prototype.getSnapshot = function () {
1310
1324
  if (this.status === exports.InterpreterStatus.NotStarted) {
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('./_virtual/_tslib.js');
6
- require('./environment.js');
7
- require('./utils.js');
8
6
  require('./types.js');
9
7
  var actionTypes = require('./actionTypes.js');
8
+ require('./environment.js');
9
+ require('./utils.js');
10
10
 
11
11
  function toInvokeSource(src) {
12
12
  if (typeof src === 'string') {
package/lib/mapState.js CHANGED
@@ -11,7 +11,7 @@ function mapState(stateMap, stateId) {
11
11
  var foundStateId;
12
12
 
13
13
  try {
14
- for (var _b = _tslib.__values(utils.keys(stateMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
14
+ for (var _b = _tslib.__values(Object.keys(stateMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
15
15
  var mappedStateId = _c.value;
16
16
 
17
17
  if (utils.matchesState(mappedStateId, stateId) && (!foundStateId || stateId.length > foundStateId.length)) {
package/lib/scxml.js CHANGED
@@ -108,7 +108,7 @@ function delayToMs(delay) {
108
108
  }
109
109
  var evaluateExecutableContent = function (context, _ev, meta, body) {
110
110
  var datamodel = context
111
- ? (0, utils_1.keys)(context)
111
+ ? Object.keys(context)
112
112
  .map(function (key) { return "const ".concat(key, " = context['").concat(key, "'];"); })
113
113
  .join('\n')
114
114
  : '';
package/lib/stateUtils.js CHANGED
@@ -9,7 +9,7 @@ var isLeafNode = function (stateNode) {
9
9
  return stateNode.type === 'atomic' || stateNode.type === 'final';
10
10
  };
11
11
  function getChildren(stateNode) {
12
- return utils.keys(stateNode.states).map(function (key) {
12
+ return Object.keys(stateNode.states).map(function (key) {
13
13
  return stateNode.states[key];
14
14
  });
15
15
  }
package/lib/types.d.ts CHANGED
@@ -22,6 +22,8 @@ export declare type IndexByType<T extends {
22
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
23
  export declare type IsAny<T> = Equals<T, any>;
24
24
  export declare type Cast<A, B> = A extends B ? A : B;
25
+ export declare type NoInfer<T> = [T][T extends any ? 0 : any];
26
+ export declare type LowInfer<T> = T & {};
25
27
  export declare type EventType = string;
26
28
  export declare type ActionType = string;
27
29
  export declare type MetaObject = Record<string, any>;
@@ -524,11 +526,11 @@ export declare type InternalMachineOptions<TContext, TEvent extends EventObject,
524
526
  activities?: Record<string, ActivityConfig<TContext, TEvent>>;
525
527
  };
526
528
  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>>;
527
- 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> {
529
+ export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, TStateSchema, TEvent, TAction> {
528
530
  /**
529
531
  * The initial context (extended state)
530
532
  */
531
- context?: TContext | (() => TContext);
533
+ context?: LowInfer<TContext | (() => TContext)>;
532
534
  /**
533
535
  * The machine's own version.
534
536
  */
@@ -570,7 +572,7 @@ export interface HistoryStateNode<TContext> extends StateNode<TContext> {
570
572
  export interface StateMachine<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TTypestate extends Typestate<TContext> = {
571
573
  value: any;
572
574
  context: TContext;
573
- }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
575
+ }, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, TEvent, TAction, TServiceMap>> extends StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta> {
574
576
  id: string;
575
577
  states: StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>['states'];
576
578
  withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateMachine<TContext, TStateSchema, TEvent, TTypestate, TAction, TServiceMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
@@ -976,11 +978,14 @@ export interface Subscription {
976
978
  unsubscribe(): void;
977
979
  }
978
980
  export interface InteropObservable<T> {
979
- [Symbol.observable]: () => Subscribable<T>;
981
+ [Symbol.observable]: () => InteropSubscribable<T>;
980
982
  }
981
- export interface Subscribable<T> {
982
- subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
983
+ export interface InteropSubscribable<T> {
984
+ subscribe(observer: Observer<T>): Subscription;
985
+ }
986
+ export interface Subscribable<T> extends InteropSubscribable<T> {
983
987
  subscribe(observer: Observer<T>): Subscription;
988
+ subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
984
989
  }
985
990
  export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
986
991
  export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
@@ -1006,7 +1011,7 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
1006
1011
  */
1007
1012
  state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
1008
1013
  };
1009
- 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;
1014
+ export declare type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : R extends Promise<infer U> ? ActorRef<never, U> : R extends Behavior<infer TEvent, infer TEmitted> ? ActorRef<TEvent, TEmitted> : never : never;
1010
1015
  export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
1011
1016
  export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = 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;
1012
1017
  export declare type MachineOptionsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
@@ -1023,10 +1028,10 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
1023
1028
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1024
1029
  }
1025
1030
  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;
1026
- 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;
1031
+ declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ___, infer ____, infer _____, infer ______> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ___, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
1027
1032
  export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
1028
1033
  type: K;
1029
1034
  }>;
1030
- export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___> ? TContext : never : never;
1035
+ export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : never : never;
1031
1036
  export {};
1032
1037
  //# sourceMappingURL=types.d.ts.map
package/lib/utils.d.ts CHANGED
@@ -11,9 +11,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
11
11
  export declare function isStateLike(state: any): state is StateLike<any>;
12
12
  export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
13
13
  export declare function pathToStateValue(statePath: string[]): StateValue;
14
- export declare function mapValues<T, P, O extends {
15
- [key: string]: T;
16
- }>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
14
+ export declare function mapValues<P, O extends Record<string, unknown>>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
17
15
  [key in keyof O]: P;
18
16
  };
19
17
  export declare function mapFilterValues<T, P>(collection: {
@@ -53,9 +51,8 @@ export declare function isFunction(value: any): value is Function;
53
51
  export declare function isString(value: any): value is string;
54
52
  export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
55
53
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
56
- export declare const symbolObservable: string | typeof Symbol.observable;
54
+ export declare const symbolObservable: typeof Symbol.observable;
57
55
  export declare const interopSymbols: {
58
- [x: string]: () => any;
59
56
  [Symbol.observable]: () => any;
60
57
  };
61
58
  export declare function isMachine(value: any): value is AnyStateMachine;