xstate 4.30.2 → 4.30.3

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/es/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
  */
@@ -1009,7 +1011,7 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
1009
1011
  */
1010
1012
  state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
1011
1013
  };
1012
- 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;
1013
1015
  export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
1014
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;
1015
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;
package/es/utils.d.ts CHANGED
@@ -3,7 +3,6 @@ import { StateNode } from './StateNode';
3
3
  import { State } from './State';
4
4
  import { Actor } from './Actor';
5
5
  import { AnyStateMachine } from '.';
6
- export declare function keys<T extends object>(value: T): Array<keyof T & string>;
7
6
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
8
7
  export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
9
8
  export declare function getActionType(action: Action<any, any>): ActionType;
@@ -11,9 +10,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
11
10
  export declare function isStateLike(state: any): state is StateLike<any>;
12
11
  export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
13
12
  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): {
13
+ 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
14
  [key in keyof O]: P;
18
15
  };
19
16
  export declare function mapFilterValues<T, P>(collection: {
package/es/utils.js CHANGED
@@ -1,11 +1,8 @@
1
- import { __spreadArray, __read, __values, __assign } from './_virtual/_tslib.js';
1
+ import { __assign, __spreadArray, __read, __values } from './_virtual/_tslib.js';
2
2
  import { DEFAULT_GUARD_TYPE, TARGETLESS_KEY, STATE_DELIMITER } from './constants.js';
3
3
  import { IS_PRODUCTION } from './environment.js';
4
4
 
5
5
  var _a;
6
- function keys(value) {
7
- return Object.keys(value);
8
- }
9
6
  function matchesState(parentStateId, childStateId, delimiter) {
10
7
  if (delimiter === void 0) {
11
8
  delimiter = STATE_DELIMITER;
@@ -27,7 +24,7 @@ function matchesState(parentStateId, childStateId, delimiter) {
27
24
  return parentStateValue in childStateValue;
28
25
  }
29
26
 
30
- return keys(parentStateValue).every(function (key) {
27
+ return Object.keys(parentStateValue).every(function (key) {
31
28
  if (!(key in childStateValue)) {
32
29
  return false;
33
30
  }
@@ -93,7 +90,7 @@ function pathToStateValue(statePath) {
93
90
  }
94
91
  function mapValues(collection, iteratee) {
95
92
  var result = {};
96
- var collectionKeys = keys(collection);
93
+ var collectionKeys = Object.keys(collection);
97
94
 
98
95
  for (var i = 0; i < collectionKeys.length; i++) {
99
96
  var key = collectionKeys[i];
@@ -108,7 +105,7 @@ function mapFilterValues(collection, iteratee, predicate) {
108
105
  var result = {};
109
106
 
110
107
  try {
111
- for (var _b = __values(keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
108
+ for (var _b = __values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
112
109
  var key = _c.value;
113
110
  var item = collection[key];
114
111
 
@@ -203,7 +200,7 @@ function toStatePaths(stateValue) {
203
200
  return [[stateValue]];
204
201
  }
205
202
 
206
- var result = flatten(keys(stateValue).map(function (key) {
203
+ var result = flatten(Object.keys(stateValue).map(function (key) {
207
204
  var subStateValue = stateValue[key];
208
205
 
209
206
  if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {
@@ -362,7 +359,7 @@ function updateContext(context, _event, assignActions, state) {
362
359
  partialUpdate = assignment(acc, _event.data, meta);
363
360
  } else {
364
361
  try {
365
- for (var _b = __values(keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
362
+ for (var _b = __values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
366
363
  var key = _c.value;
367
364
  var propAssignment = assignment[key];
368
365
  partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;
@@ -416,18 +413,7 @@ function isFunction(value) {
416
413
  }
417
414
  function isString(value) {
418
415
  return typeof value === 'string';
419
- } // export function memoizedGetter<T, TP extends { prototype: object }>(
420
- // o: TP,
421
- // property: string,
422
- // getter: () => T
423
- // ): void {
424
- // Object.defineProperty(o.prototype, property, {
425
- // get: getter,
426
- // enumerable: false,
427
- // configurable: false
428
- // });
429
- // }
430
-
416
+ }
431
417
  function toGuard(condition, guardMap) {
432
418
  if (!condition) {
433
419
  return undefined;
@@ -468,11 +454,7 @@ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
468
454
  return this;
469
455
  }, _a);
470
456
  function isMachine(value) {
471
- try {
472
- return '__xstatenode' in value;
473
- } catch (e) {
474
- return false;
475
- }
457
+ return !!value && '__xstatenode' in value;
476
458
  }
477
459
  function isActor(value) {
478
460
  return !!value && typeof value.send === 'function';
@@ -591,4 +573,4 @@ function createInvokeId(stateNodeId, index) {
591
573
  return "".concat(stateNodeId, ":invocation[").concat(index, "]");
592
574
  }
593
575
 
594
- export { createInvokeId, evaluateGuard, flatten, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, keys, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };
576
+ export { createInvokeId, evaluateGuard, flatten, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };
package/lib/Machine.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Model } from './model.types';
2
1
  import { AnyEventObject, BaseActionObject, DefaultContext, EventObject, MachineConfig, InternalMachineOptions, StateMachine, StateSchema, Typestate, ServiceMap } from './types';
3
2
  import { TypegenConstraint, TypegenDisabled, ResolveTypegenMeta } from './typegenTypes';
4
3
  /**
@@ -9,5 +8,5 @@ export declare function Machine<TContext = DefaultContext, TStateSchema extends
9
8
  export declare function createMachine<TContext, TEvent extends EventObject = AnyEventObject, TTypestate extends Typestate<TContext> = {
10
9
  value: any;
11
10
  context: TContext;
12
- }, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: TContext extends Model<any, any, any, any> ? 'Model type no longer supported as generic type. Please use `model.createMachine(...)` instead.' : MachineConfig<TContext, any, TEvent, BaseActionObject, TServiceMap, TTypesMeta>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>): StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>;
11
+ }, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, any, TEvent, BaseActionObject, TServiceMap, TTypesMeta>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>): StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>;
13
12
  //# sourceMappingURL=Machine.d.ts.map
package/lib/State.js CHANGED
@@ -6,8 +6,8 @@ var _tslib = require('./_virtual/_tslib.js');
6
6
  var constants = require('./constants.js');
7
7
  var environment = require('./environment.js');
8
8
  var utils = require('./utils.js');
9
- var stateUtils = require('./stateUtils.js');
10
9
  var actions = require('./actions.js');
10
+ var stateUtils = require('./stateUtils.js');
11
11
 
12
12
  function stateValuesEqual(a, b) {
13
13
  if (a === b) {
@@ -22,8 +22,8 @@ function stateValuesEqual(a, b) {
22
22
  return a === b;
23
23
  }
24
24
 
25
- var aKeys = utils.keys(a);
26
- var bKeys = utils.keys(b);
25
+ var aKeys = Object.keys(a);
26
+ var bKeys = Object.keys(b);
27
27
  return aKeys.length === bKeys.length && aKeys.every(function (key) {
28
28
  return stateValuesEqual(a[key], b[key]);
29
29
  });
@@ -210,7 +210,7 @@ function () {
210
210
  return [stateValue];
211
211
  }
212
212
 
213
- var valueKeys = utils.keys(stateValue);
213
+ var valueKeys = Object.keys(stateValue);
214
214
  return valueKeys.concat.apply(valueKeys, _tslib.__spreadArray([], _tslib.__read(valueKeys.map(function (key) {
215
215
  return _this.toStrings(stateValue[key], delimiter).map(function (s) {
216
216
  return key + delimiter + s;
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, toActorRef } 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, toActorRef, 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,15 +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');
9
- var State = require('./State.js');
10
8
  var Actor = require('./Actor.js');
9
+ var State = require('./State.js');
10
+ var behaviors = require('./behaviors.js');
11
+ var interpreter = require('./interpreter.js');
11
12
  var StateNode = require('./StateNode.js');
12
13
  var Machine = require('./Machine.js');
13
- var interpreter = require('./interpreter.js');
14
+ var mapState = require('./mapState.js');
14
15
  var match = require('./match.js');
15
16
  var schema = require('./schema.js');
16
17
 
@@ -21,8 +22,6 @@ var assign = actions.assign,
21
22
  forwardTo = actions.forwardTo,
22
23
  doneInvoke = actions.doneInvoke;
23
24
 
24
- exports.matchesState = utils.matchesState;
25
- exports.mapState = mapState.mapState;
26
25
  Object.defineProperty(exports, 'ActionTypes', {
27
26
  enumerable: true,
28
27
  get: function () {
@@ -35,12 +34,14 @@ Object.defineProperty(exports, 'SpecialTargets', {
35
34
  return types.SpecialTargets;
36
35
  }
37
36
  });
37
+ exports.matchesState = utils.matchesState;
38
+ exports.toEventObject = utils.toEventObject;
39
+ exports.toObserver = utils.toObserver;
40
+ exports.toSCXMLEvent = utils.toSCXMLEvent;
38
41
  exports.actions = actions;
39
- exports.State = State.State;
40
42
  exports.toActorRef = Actor.toActorRef;
41
- exports.StateNode = StateNode.StateNode;
42
- exports.Machine = Machine.Machine;
43
- exports.createMachine = Machine.createMachine;
43
+ exports.State = State.State;
44
+ exports.spawnBehavior = behaviors.spawnBehavior;
44
45
  exports.Interpreter = interpreter.Interpreter;
45
46
  Object.defineProperty(exports, 'InterpreterStatus', {
46
47
  enumerable: true,
@@ -50,6 +51,10 @@ Object.defineProperty(exports, 'InterpreterStatus', {
50
51
  });
51
52
  exports.interpret = interpreter.interpret;
52
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;
53
58
  exports.matchState = match.matchState;
54
59
  exports.createSchema = schema.createSchema;
55
60
  exports.t = schema.t;
@@ -23,6 +23,7 @@ export declare enum InterpreterStatus {
23
23
  Running = 1,
24
24
  Stopped = 2
25
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 */
26
27
  export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
27
28
  value: any;
28
29
  context: TContext;
@@ -189,6 +190,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
189
190
  toJSON(): {
190
191
  id: string;
191
192
  };
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 */
192
194
  [symbolObservable](): InteropSubscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
193
195
  getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
194
196
  }
@@ -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
  }
@@ -1311,6 +1313,8 @@ function () {
1311
1313
  id: this.id
1312
1314
  };
1313
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
+
1314
1318
 
1315
1319
  Interpreter.prototype[utils.symbolObservable] = function () {
1316
1320
  return this;
@@ -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
  */
@@ -1009,7 +1011,7 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
1009
1011
  */
1010
1012
  state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
1011
1013
  };
1012
- 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;
1013
1015
  export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
1014
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;
1015
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;
package/lib/utils.d.ts CHANGED
@@ -3,7 +3,6 @@ import { StateNode } from './StateNode';
3
3
  import { State } from './State';
4
4
  import { Actor } from './Actor';
5
5
  import { AnyStateMachine } from '.';
6
- export declare function keys<T extends object>(value: T): Array<keyof T & string>;
7
6
  export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
8
7
  export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
9
8
  export declare function getActionType(action: Action<any, any>): ActionType;
@@ -11,9 +10,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
11
10
  export declare function isStateLike(state: any): state is StateLike<any>;
12
11
  export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
13
12
  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): {
13
+ 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
14
  [key in keyof O]: P;
18
15
  };
19
16
  export declare function mapFilterValues<T, P>(collection: {