xstate 4.26.1 → 4.28.1

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.
@@ -561,7 +561,9 @@ function () {
561
561
  return this;
562
562
  }
563
563
 
564
- this.state.configuration.forEach(function (stateNode) {
564
+ _tslib.__spreadArray([], _tslib.__read(this.state.configuration), false).sort(function (a, b) {
565
+ return b.order - a.order;
566
+ }).forEach(function (stateNode) {
565
567
  var e_11, _a;
566
568
 
567
569
  try {
@@ -583,6 +585,7 @@ function () {
583
585
  }
584
586
  }); // Stop all children
585
587
 
588
+
586
589
  this.children.forEach(function (child) {
587
590
  if (utils.isFunction(child.stop)) {
588
591
  child.stop();
@@ -804,6 +807,10 @@ function () {
804
807
 
805
808
  case actionTypes.start:
806
809
  {
810
+ if (this.status !== exports.InterpreterStatus.Running) {
811
+ return;
812
+ }
813
+
807
814
  var activity = action.activity; // If the activity will be stopped right after it's started
808
815
  // (such as in transient states)
809
816
  // don't bother starting the activity.
@@ -1035,7 +1042,8 @@ function () {
1035
1042
  }
1036
1043
  }
1037
1044
  });
1038
- var actor = {
1045
+
1046
+ var actor = _tslib.__assign({
1039
1047
  id: id,
1040
1048
  send: function () {
1041
1049
  return void 0;
@@ -1079,7 +1087,8 @@ function () {
1079
1087
  getSnapshot: function () {
1080
1088
  return resolvedData;
1081
1089
  }
1082
- };
1090
+ }, utils.interopSymbols);
1091
+
1083
1092
  this.children.set(id, actor);
1084
1093
  return actor;
1085
1094
  };
@@ -1123,7 +1132,7 @@ function () {
1123
1132
  return this.spawnPromise(callbackStop, id);
1124
1133
  }
1125
1134
 
1126
- var actor = {
1135
+ var actor = _tslib.__assign({
1127
1136
  id: id,
1128
1137
  send: function (event) {
1129
1138
  return receivers.forEach(function (receiver) {
@@ -1153,7 +1162,8 @@ function () {
1153
1162
  getSnapshot: function () {
1154
1163
  return emitted;
1155
1164
  }
1156
- };
1165
+ }, utils.interopSymbols);
1166
+
1157
1167
  this.children.set(id, actor);
1158
1168
  return actor;
1159
1169
  };
@@ -1181,7 +1191,8 @@ function () {
1181
1191
  origin: id
1182
1192
  }));
1183
1193
  });
1184
- var actor = {
1194
+
1195
+ var actor = _tslib.__assign({
1185
1196
  id: id,
1186
1197
  send: function () {
1187
1198
  return void 0;
@@ -1200,7 +1211,8 @@ function () {
1200
1211
  id: id
1201
1212
  };
1202
1213
  }
1203
- };
1214
+ }, utils.interopSymbols);
1215
+
1204
1216
  this.children.set(id, actor);
1205
1217
  return actor;
1206
1218
  };
@@ -1228,7 +1240,7 @@ function () {
1228
1240
  };
1229
1241
 
1230
1242
  Interpreter.prototype.spawnEffect = function (id, dispose) {
1231
- this.children.set(id, {
1243
+ this.children.set(id, _tslib.__assign({
1232
1244
  id: id,
1233
1245
  send: function () {
1234
1246
  return void 0;
@@ -1249,7 +1261,7 @@ function () {
1249
1261
  id: id
1250
1262
  };
1251
1263
  }
1252
- });
1264
+ }, utils.interopSymbols));
1253
1265
  };
1254
1266
 
1255
1267
  Interpreter.prototype.attachDev = function () {
@@ -4,7 +4,7 @@ declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, A
4
4
  export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
5
5
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
6
6
  export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
7
- export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Iterable<StateNode<TC, any, TE, any>>;
7
+ export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
8
8
  export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
9
9
  export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
10
10
  export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
package/lib/types.d.ts CHANGED
@@ -4,6 +4,7 @@ import { Interpreter, Clock } from './interpreter';
4
4
  import { IsNever, Model, Prop } from './model.types';
5
5
  declare type AnyFunction = (...args: any[]) => any;
6
6
  declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
7
+ export declare type Cast<A, B> = A extends B ? A : B;
7
8
  export declare type EventType = string;
8
9
  export declare type ActionType = string;
9
10
  export declare type MetaObject = Record<string, any>;
@@ -34,7 +35,7 @@ export interface ActionObject<TContext, TEvent extends EventObject> extends Base
34
35
  /**
35
36
  * The implementation for executing the action.
36
37
  */
37
- exec?: ActionFunction<TContext, TEvent>;
38
+ exec?: ActionFunction<TContext, TEvent> | undefined;
38
39
  }
39
40
  export declare type DefaultContext = Record<string, any> | undefined;
40
41
  export declare type EventData = Record<string, any> & {
@@ -106,7 +107,7 @@ export interface TransitionConfig<TContext, TEvent extends EventObject> {
106
107
  actions?: Actions<TContext, TEvent>;
107
108
  in?: StateValue;
108
109
  internal?: boolean;
109
- target?: TransitionTarget<TContext, TEvent>;
110
+ target?: TransitionTarget<TContext, TEvent> | undefined;
110
111
  meta?: Record<string, any>;
111
112
  description?: string;
112
113
  }
@@ -345,7 +346,7 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
345
346
  *
346
347
  * This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
347
348
  */
348
- onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>>;
349
+ onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
349
350
  /**
350
351
  * The mapping (or array) of delays (in milliseconds) to their potential transition(s).
351
352
  * The delayed transitions are taken after the specified delay in an interpreter.
@@ -915,18 +916,21 @@ export interface Observer<T> {
915
916
  export interface Subscription {
916
917
  unsubscribe(): void;
917
918
  }
919
+ export interface InteropObservable<T> {
920
+ [Symbol.observable]: () => Subscribable<T>;
921
+ }
918
922
  export interface Subscribable<T> {
919
923
  subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
920
924
  subscribe(observer: Observer<T>): Subscription;
921
925
  }
922
- export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | Subscribable<any> | Behavior<any>;
926
+ export declare type Spawnable = StateMachine<any, any, any> | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
923
927
  export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
924
928
  type: TEventType;
925
929
  } ? TEvent : never;
926
930
  export interface BaseActorRef<TEvent extends EventObject> {
927
931
  send: (event: TEvent) => void;
928
932
  }
929
- export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted> {
933
+ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Subscribable<TEmitted>, InteropObservable<TEmitted> {
930
934
  send: Sender<TEvent>;
931
935
  id: string;
932
936
  getSnapshot: () => TEmitted | undefined;
@@ -958,7 +962,7 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
958
962
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
959
963
  }
960
964
  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;
961
- 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 : never : never;
965
+ 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;
962
966
  export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
963
967
  type: K;
964
968
  }>;
package/lib/utils.d.ts CHANGED
@@ -52,7 +52,11 @@ export declare function isFunction(value: any): value is Function;
52
52
  export declare function isString(value: any): value is string;
53
53
  export declare function toGuard<TContext, TEvent extends EventObject>(condition?: Condition<TContext, TEvent>, guardMap?: Record<string, ConditionPredicate<TContext, TEvent>>): Guard<TContext, TEvent> | undefined;
54
54
  export declare function isObservable<T>(value: any): value is Subscribable<T>;
55
- export declare const symbolObservable: any;
55
+ export declare const symbolObservable: string | typeof Symbol.observable;
56
+ export declare const interopSymbols: {
57
+ [x: string]: () => any;
58
+ [Symbol.observable]: () => any;
59
+ };
56
60
  export declare function isMachine(value: any): value is StateMachine<any, any, any>;
57
61
  export declare function isActor(value: any): value is Actor;
58
62
  export declare const uniqueId: () => string;
@@ -66,4 +70,5 @@ export declare function reportUnhandledExceptionOnInvocation(originalError: any,
66
70
  export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
67
71
  export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
68
72
  export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
73
+ export declare function createInvokeId(stateNodeId: string, index: number): string;
69
74
  //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -6,6 +6,7 @@ var _tslib = require('./_virtual/_tslib.js');
6
6
  var constants = require('./constants.js');
7
7
  var environment = require('./environment.js');
8
8
 
9
+ var _a;
9
10
  function keys(value) {
10
11
  return Object.keys(value);
11
12
  }
@@ -464,6 +465,9 @@ function isObservable(value) {
464
465
  var symbolObservable = /*#__PURE__*/function () {
465
466
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
466
467
  }();
468
+ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
469
+ return this;
470
+ }, _a);
467
471
  function isMachine(value) {
468
472
  try {
469
473
  return '__xstatenode' in value;
@@ -584,10 +588,15 @@ function toObserver(nextHandler, errorHandler, completionHandler) {
584
588
  complete: completionHandler || noop
585
589
  };
586
590
  }
591
+ function createInvokeId(stateNodeId, index) {
592
+ return "".concat(stateNodeId, ":invocation[").concat(index, "]");
593
+ }
587
594
 
595
+ exports.createInvokeId = createInvokeId;
588
596
  exports.evaluateGuard = evaluateGuard;
589
597
  exports.flatten = flatten;
590
598
  exports.getEventType = getEventType;
599
+ exports.interopSymbols = interopSymbols;
591
600
  exports.isActor = isActor;
592
601
  exports.isArray = isArray;
593
602
  exports.isBehavior = isBehavior;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xstate",
3
- "version": "4.26.1",
3
+ "version": "4.28.1",
4
4
  "description": "Finite State Machines and Statecharts for the Modern Web.",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",