xstate 4.12.0 → 4.13.0

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.
@@ -42,6 +42,7 @@ var __spread = (this && this.__spread) || function () {
42
42
  return ar;
43
43
  };
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.interpret = exports.spawn = exports.Interpreter = void 0;
45
46
  var types_1 = require("./types");
46
47
  var State_1 = require("./State");
47
48
  var actionTypes = require("./actionTypes");
@@ -53,22 +54,8 @@ var Actor_1 = require("./Actor");
53
54
  var stateUtils_1 = require("./stateUtils");
54
55
  var registry_1 = require("./registry");
55
56
  var devTools_1 = require("./devTools");
57
+ var serviceScope = require("./serviceScope");
56
58
  var DEFAULT_SPAWN_OPTIONS = { sync: false, autoForward: false };
57
- /**
58
- * Maintains a stack of the current service in scope.
59
- * This is used to provide the correct service to spawn().
60
- *
61
- * @private
62
- */
63
- var withServiceScope = (function () {
64
- var serviceStack = [];
65
- return function (service, fn) {
66
- service && serviceStack.push(service);
67
- var result = fn(service || serviceStack[serviceStack.length - 1]);
68
- service && serviceStack.pop();
69
- return result;
70
- };
71
- })();
72
59
  var InterpreterStatus;
73
60
  (function (InterpreterStatus) {
74
61
  InterpreterStatus[InterpreterStatus["NotStarted"] = 0] = "NotStarted";
@@ -191,12 +178,12 @@ var Interpreter = /** @class */ (function () {
191
178
  if (this._initialState) {
192
179
  return this._initialState;
193
180
  }
194
- return withServiceScope(this, function () {
181
+ return serviceScope.provide(this, function () {
195
182
  _this._initialState = _this.machine.initialState;
196
183
  return _this._initialState;
197
184
  });
198
185
  },
199
- enumerable: true,
186
+ enumerable: false,
200
187
  configurable: true
201
188
  });
202
189
  Object.defineProperty(Interpreter.prototype, "state", {
@@ -206,7 +193,7 @@ var Interpreter = /** @class */ (function () {
206
193
  }
207
194
  return this._state;
208
195
  },
209
- enumerable: true,
196
+ enumerable: false,
210
197
  configurable: true
211
198
  });
212
199
  /**
@@ -424,7 +411,7 @@ var Interpreter = /** @class */ (function () {
424
411
  this._status = InterpreterStatus.Running;
425
412
  var resolvedState = initialState === undefined
426
413
  ? this.initialState
427
- : withServiceScope(this, function () {
414
+ : serviceScope.provide(this, function () {
428
415
  return State_1.isState(initialState)
429
416
  ? _this.machine.resolveState(initialState)
430
417
  : _this.machine.resolveState(State_1.State.from(initialState, _this.machine.context));
@@ -546,7 +533,7 @@ var Interpreter = /** @class */ (function () {
546
533
  var _loop_1 = function (event_1) {
547
534
  var _event = utils_1.toSCXMLEvent(event_1);
548
535
  _this.forward(_event);
549
- nextState = withServiceScope(_this, function () {
536
+ nextState = serviceScope.provide(_this, function () {
550
537
  return _this.machine.transition(nextState, _event);
551
538
  });
552
539
  batchedActions.push.apply(batchedActions, __spread(nextState.actions.map(function (a) {
@@ -594,7 +581,7 @@ var Interpreter = /** @class */ (function () {
594
581
  !this.state.nextEvents.some(function (nextEvent) { return nextEvent.indexOf(actionTypes.errorPlatform) === 0; })) {
595
582
  throw _event.data.data;
596
583
  }
597
- var nextState = withServiceScope(this, function () {
584
+ var nextState = serviceScope.provide(this, function () {
598
585
  return _this.machine.transition(_this.state, _event);
599
586
  });
600
587
  return nextState;
@@ -1049,7 +1036,7 @@ var Interpreter = /** @class */ (function () {
1049
1036
  },
1050
1037
  logger: global.console.log.bind(console),
1051
1038
  devTools: false
1052
- }); })(typeof window === 'undefined' ? global : window);
1039
+ }); })(typeof self !== 'undefined' ? self : global);
1053
1040
  Interpreter.interpret = interpret;
1054
1041
  return Interpreter;
1055
1042
  }());
@@ -1062,7 +1049,7 @@ var resolveSpawnOptions = function (nameOrOptions) {
1062
1049
  };
1063
1050
  function spawn(entity, nameOrOptions) {
1064
1051
  var resolvedOptions = resolveSpawnOptions(nameOrOptions);
1065
- return withServiceScope(undefined, function (service) {
1052
+ return serviceScope.consume(function (service) {
1066
1053
  if (!environment_1.IS_PRODUCTION) {
1067
1054
  var isLazyEntity = utils_1.isMachine(entity) || utils_1.isFunction(entity);
1068
1055
  utils_1.warn(!!service || isLazyEntity, "Attempted to spawn an Actor (ID: \"" + (utils_1.isMachine(entity) ? entity.id : 'undefined') + "\") outside of a service. This will have no effect.");
@@ -22,6 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  return t;
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.toInvokeDefinition = exports.toInvokeSource = void 0;
25
26
  var actions_1 = require("./actions");
26
27
  function toInvokeSource(src) {
27
28
  if (typeof src === 'string') {
package/lib/json.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonify = exports.parse = exports.stringify = exports.machineToJSON = exports.stringifyFunction = void 0;
3
4
  var utils_1 = require("./utils");
4
5
  // tslint:disable-next-line:ban-types
5
6
  function stringifyFunction(fn) {
package/lib/mapState.js CHANGED
@@ -11,6 +11,7 @@ var __values = (this && this.__values) || function(o) {
11
11
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.mapState = void 0;
14
15
  var utils_1 = require("./utils");
15
16
  function mapState(stateMap, stateId) {
16
17
  var e_1, _a;
package/lib/match.js CHANGED
@@ -27,6 +27,7 @@ var __read = (this && this.__read) || function (o, n) {
27
27
  return ar;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.matchState = void 0;
30
31
  var State_1 = require("./State");
31
32
  function matchState(state, patterns, defaultValue) {
32
33
  var e_1, _a;
package/lib/patterns.js CHANGED
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.sequence = exports.toggle = void 0;
14
15
  var utils_1 = require("./utils");
15
16
  function toggle(onState, offState, eventType) {
16
17
  var _a, _b, _c;
package/lib/registry.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registry = void 0;
3
4
  var children = new Map();
4
5
  var sessionIdIndex = 0;
5
6
  exports.registry = {
package/lib/scheduler.js CHANGED
@@ -11,6 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.Scheduler = void 0;
14
15
  var defaultOptions = {
15
16
  deferEvents: false
16
17
  };
package/lib/scxml.js CHANGED
@@ -42,6 +42,7 @@ var __values = (this && this.__values) || function(o) {
42
42
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
43
43
  };
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.toMachine = void 0;
45
46
  var xml_js_1 = require("xml-js");
46
47
  var index_1 = require("./index");
47
48
  var utils_1 = require("./utils");
@@ -0,0 +1,10 @@
1
+ import { Interpreter } from './interpreter';
2
+ export declare const provide: <T, TService extends Interpreter<any, any, any, {
3
+ value: any;
4
+ context: any;
5
+ }>>(service: TService | undefined, fn: (service: TService | undefined) => T) => T;
6
+ export declare const consume: <T, TService extends Interpreter<any, any, any, {
7
+ value: any;
8
+ context: any;
9
+ }>>(fn: (service: TService) => T) => T;
10
+ //# sourceMappingURL=serviceScope.d.ts.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.consume = exports.provide = void 0;
4
+ /**
5
+ * Maintains a stack of the current service in scope.
6
+ * This is used to provide the correct service to spawn().
7
+ */
8
+ var serviceStack = [];
9
+ exports.provide = function (service, fn) {
10
+ serviceStack.push(service);
11
+ var result = fn(service);
12
+ serviceStack.pop();
13
+ return result;
14
+ };
15
+ exports.consume = function (fn) { return fn(serviceStack[serviceStack.length - 1]); };
@@ -1,10 +1,7 @@
1
1
  import { EventObject, StateNode, StateValue } from '.';
2
2
  declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
3
3
  declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
4
- export declare const isLeafNode: (stateNode: StateNode<any, any, any, {
5
- value: any;
6
- context: any;
7
- }>) => boolean;
4
+ export declare const isLeafNode: (stateNode: StateNode<any, any, any>) => boolean;
8
5
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
9
6
  export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
10
7
  export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE>>, stateNodes: Iterable<StateNode<TC, any, TE>>): Iterable<StateNode<TC, any, TE>>;
package/lib/stateUtils.js CHANGED
@@ -31,6 +31,7 @@ var __spread = (this && this.__spread) || function () {
31
31
  return ar;
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.isInFinalState = exports.nextEvents = exports.has = exports.getValue = exports.getAdjList = exports.getConfiguration = exports.getAllStateNodes = exports.getChildren = exports.isLeafNode = void 0;
34
35
  var utils_1 = require("./utils");
35
36
  exports.isLeafNode = function (stateNode) {
36
37
  return stateNode.type === 'atomic' || stateNode.type === 'final';
package/lib/types.d.ts CHANGED
@@ -67,11 +67,14 @@ export interface StateValueMap {
67
67
  * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
68
68
  */
69
69
  export declare type StateValue = string | StateValueMap;
70
- export declare type ExtractStateValue<TS extends StateSchema<any>, TSS = TS['states']> = TSS extends undefined ? never : {
71
- [K in keyof TSS]?: (TSS[K] extends {
72
- states: any;
73
- } ? keyof TSS[K]['states'] : never) | ExtractStateValue<TSS[K]>;
74
- };
70
+ declare type KeysWithStates<TStates extends Record<string, StateSchema> | undefined> = TStates extends object ? {
71
+ [K in keyof TStates]-?: TStates[K] extends {
72
+ states: object;
73
+ } ? K : never;
74
+ }[keyof TStates] : never;
75
+ export declare type ExtractStateValue<TSchema extends Required<Pick<StateSchema<any>, 'states'>>> = keyof TSchema['states'] | (KeysWithStates<TSchema['states']> extends never ? never : {
76
+ [K in KeysWithStates<TSchema['states']>]?: ExtractStateValue<TSchema['states'][K]>;
77
+ });
75
78
  export interface HistoryValue {
76
79
  states: Record<string, HistoryValue | undefined>;
77
80
  current: StateValue | undefined;
@@ -190,13 +193,9 @@ declare type TransitionsConfigMap<TContext, TEvent extends EventObject> = {
190
193
  } & {
191
194
  '*'?: TransitionConfigOrTarget<TContext, TEvent>;
192
195
  };
193
- declare type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<{
194
- [K in TEvent['type']]: TransitionConfig<TContext, TEvent extends {
195
- type: K;
196
- } ? TEvent : never> & {
197
- event: K;
198
- };
199
- }[TEvent['type']] | (TransitionConfig<TContext, TEvent> & {
196
+ declare type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
197
+ event: TEvent['type'];
198
+ } : never) | (TransitionConfig<TContext, TEvent> & {
200
199
  event: '';
201
200
  }) | (TransitionConfig<TContext, TEvent> & {
202
201
  event: '*';
package/lib/types.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecialTargets = exports.ActionTypes = void 0;
3
4
  var ActionTypes;
4
5
  (function (ActionTypes) {
5
6
  ActionTypes["Start"] = "xstate.start";
package/lib/utils.js CHANGED
@@ -42,6 +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
46
  var constants_1 = require("./constants");
46
47
  var environment_1 = require("./environment");
47
48
  function keys(value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xstate",
3
- "version": "4.12.0",
3
+ "version": "4.13.0",
4
4
  "description": "Finite State Machines and Statecharts for the Modern Web.",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",