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.
@@ -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>;
package/es/interpreter.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { __values, __spreadArray, __read, __assign } from './_virtual/_tslib.js';
2
- import { IS_PRODUCTION } from './environment.js';
3
- import { warn, mapContext, isFunction, keys, toSCXMLEvent, toInvokeSource, isMachine, isPromiseLike, isObservable, isBehavior, reportUnhandledExceptionOnInvocation, interopSymbols, symbolObservable, isArray, toEventObject, isString, isActor, toObserver, uniqueId } from './utils.js';
4
2
  import { ActionTypes, SpecialTargets } from './types.js';
5
- import { isInFinalState } from './stateUtils.js';
6
3
  import { errorPlatform, log, stop, start, cancel, send, update, error as error$1 } from './actionTypes.js';
4
+ import { IS_PRODUCTION } from './environment.js';
5
+ import { warn, mapContext, isFunction, toSCXMLEvent, toInvokeSource, isMachine, isPromiseLike, isObservable, isBehavior, reportUnhandledExceptionOnInvocation, symbolObservable, isArray, toEventObject, isString, isActor, uniqueId, toObserver } from './utils.js';
7
6
  import { doneInvoke, initEvent, getActionFunction, error } from './actions.js';
8
- import { isStateConfig, State, bindActionToState } from './State.js';
9
7
  import { provide, consume } from './serviceScope.js';
10
8
  import { isSpawnedActor, createDeferredActor } from './Actor.js';
9
+ import { isInFinalState } from './stateUtils.js';
10
+ import { isStateConfig, State, bindActionToState } from './State.js';
11
11
  import { Scheduler } from './scheduler.js';
12
12
  import { registry } from './registry.js';
13
13
  import { registerService, getGlobal } from './devTools.js';
@@ -24,6 +24,8 @@ var InterpreterStatus;
24
24
  InterpreterStatus[InterpreterStatus["Running"] = 1] = "Running";
25
25
  InterpreterStatus[InterpreterStatus["Stopped"] = 2] = "Stopped";
26
26
  })(InterpreterStatus || (InterpreterStatus = {}));
27
+ /** @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 */
28
+
27
29
 
28
30
  var Interpreter =
29
31
  /*#__PURE__*/
@@ -591,7 +593,7 @@ function () {
591
593
 
592
594
  try {
593
595
  // Cancel all delayed events
594
- for (var _p = __values(keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {
596
+ for (var _p = __values(Object.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {
595
597
  var key = _q.value;
596
598
  this.clock.clearTimeout(this.delayedEventsMap[key]);
597
599
  }
@@ -997,6 +999,8 @@ function () {
997
999
  };
998
1000
 
999
1001
  Interpreter.prototype.spawnPromise = function (promise, id) {
1002
+ var _a;
1003
+
1000
1004
  var _this = this;
1001
1005
 
1002
1006
  var canceled = false;
@@ -1039,8 +1043,7 @@ function () {
1039
1043
  }
1040
1044
  }
1041
1045
  });
1042
-
1043
- var actor = __assign({
1046
+ var actor = (_a = {
1044
1047
  id: id,
1045
1048
  send: function () {
1046
1049
  return void 0;
@@ -1084,13 +1087,16 @@ function () {
1084
1087
  getSnapshot: function () {
1085
1088
  return resolvedData;
1086
1089
  }
1087
- }, interopSymbols);
1088
-
1090
+ }, _a[symbolObservable] = function () {
1091
+ return this;
1092
+ }, _a);
1089
1093
  this.children.set(id, actor);
1090
1094
  return actor;
1091
1095
  };
1092
1096
 
1093
1097
  Interpreter.prototype.spawnCallback = function (callback, id) {
1098
+ var _a;
1099
+
1094
1100
  var _this = this;
1095
1101
 
1096
1102
  var canceled = false;
@@ -1129,7 +1135,7 @@ function () {
1129
1135
  return this.spawnPromise(callbackStop, id);
1130
1136
  }
1131
1137
 
1132
- var actor = __assign({
1138
+ var actor = (_a = {
1133
1139
  id: id,
1134
1140
  send: function (event) {
1135
1141
  return receivers.forEach(function (receiver) {
@@ -1137,10 +1143,11 @@ function () {
1137
1143
  });
1138
1144
  },
1139
1145
  subscribe: function (next) {
1140
- listeners.add(next);
1146
+ var observer = toObserver(next);
1147
+ listeners.add(observer.next);
1141
1148
  return {
1142
1149
  unsubscribe: function () {
1143
- listeners.delete(next);
1150
+ listeners.delete(observer.next);
1144
1151
  }
1145
1152
  };
1146
1153
  },
@@ -1159,13 +1166,16 @@ function () {
1159
1166
  getSnapshot: function () {
1160
1167
  return emitted;
1161
1168
  }
1162
- }, interopSymbols);
1163
-
1169
+ }, _a[symbolObservable] = function () {
1170
+ return this;
1171
+ }, _a);
1164
1172
  this.children.set(id, actor);
1165
1173
  return actor;
1166
1174
  };
1167
1175
 
1168
1176
  Interpreter.prototype.spawnObservable = function (source, id) {
1177
+ var _a;
1178
+
1169
1179
  var _this = this;
1170
1180
 
1171
1181
  var emitted;
@@ -1188,8 +1198,7 @@ function () {
1188
1198
  origin: id
1189
1199
  }));
1190
1200
  });
1191
-
1192
- var actor = __assign({
1201
+ var actor = (_a = {
1193
1202
  id: id,
1194
1203
  send: function () {
1195
1204
  return void 0;
@@ -1208,8 +1217,9 @@ function () {
1208
1217
  id: id
1209
1218
  };
1210
1219
  }
1211
- }, interopSymbols);
1212
-
1220
+ }, _a[symbolObservable] = function () {
1221
+ return this;
1222
+ }, _a);
1213
1223
  this.children.set(id, actor);
1214
1224
  return actor;
1215
1225
  };
@@ -1237,7 +1247,9 @@ function () {
1237
1247
  };
1238
1248
 
1239
1249
  Interpreter.prototype.spawnEffect = function (id, dispose) {
1240
- this.children.set(id, __assign({
1250
+ var _a;
1251
+
1252
+ this.children.set(id, (_a = {
1241
1253
  id: id,
1242
1254
  send: function () {
1243
1255
  return void 0;
@@ -1258,7 +1270,9 @@ function () {
1258
1270
  id: id
1259
1271
  };
1260
1272
  }
1261
- }, interopSymbols));
1273
+ }, _a[symbolObservable] = function () {
1274
+ return this;
1275
+ }, _a));
1262
1276
  };
1263
1277
 
1264
1278
  Interpreter.prototype.attachDev = function () {
@@ -1296,12 +1310,12 @@ function () {
1296
1310
  id: this.id
1297
1311
  };
1298
1312
  };
1313
+ /** @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 */
1314
+
1299
1315
 
1300
1316
  Interpreter.prototype[symbolObservable] = function () {
1301
1317
  return this;
1302
- }; // this gets stripped by Babel to avoid having "undefined" property in environments without this non-standard Symbol
1303
- // it has to be here to be included in the generated .d.ts
1304
-
1318
+ };
1305
1319
 
1306
1320
  Interpreter.prototype.getSnapshot = function () {
1307
1321
  if (this.status === InterpreterStatus.NotStarted) {
package/es/invokeUtils.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { __assign, __rest } from './_virtual/_tslib.js';
2
- import './environment.js';
3
- import './utils.js';
4
2
  import './types.js';
5
3
  import { invoke } from './actionTypes.js';
4
+ import './environment.js';
5
+ import './utils.js';
6
6
 
7
7
  function toInvokeSource(src) {
8
8
  if (typeof src === 'string') {
package/es/mapState.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { __values } from './_virtual/_tslib.js';
2
- import { keys, matchesState } from './utils.js';
2
+ import { matchesState } from './utils.js';
3
3
 
4
4
  function mapState(stateMap, stateId) {
5
5
  var e_1, _a;
@@ -7,7 +7,7 @@ function mapState(stateMap, stateId) {
7
7
  var foundStateId;
8
8
 
9
9
  try {
10
- for (var _b = __values(keys(stateMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
10
+ for (var _b = __values(Object.keys(stateMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
11
11
  var mappedStateId = _c.value;
12
12
 
13
13
  if (matchesState(mappedStateId, stateId) && (!foundStateId || stateId.length > foundStateId.length)) {
package/es/stateUtils.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { __values, __spreadArray, __read } from './_virtual/_tslib.js';
2
- import { flatten, keys } from './utils.js';
2
+ import { flatten } from './utils.js';
3
3
 
4
4
  var isLeafNode = function (stateNode) {
5
5
  return stateNode.type === 'atomic' || stateNode.type === 'final';
6
6
  };
7
7
  function getChildren(stateNode) {
8
- return keys(stateNode.states).map(function (key) {
8
+ return Object.keys(stateNode.states).map(function (key) {
9
9
  return stateNode.states[key];
10
10
  });
11
11
  }
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
  */
@@ -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/es/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;
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;
@@ -460,16 +446,15 @@ function isObservable(value) {
460
446
  }
461
447
  var symbolObservable = /*#__PURE__*/function () {
462
448
  return typeof Symbol === 'function' && Symbol.observable || '@@observable';
463
- }();
449
+ }(); // TODO: to be removed in v5, left it out just to minimize the scope of the change and maintain compatibility with older versions of integration paackages
450
+
464
451
  var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
465
452
  return this;
453
+ }, _a[Symbol.observable] = function () {
454
+ return this;
466
455
  }, _a);
467
456
  function isMachine(value) {
468
- try {
469
- return '__xstatenode' in value;
470
- } catch (e) {
471
- return false;
472
- }
457
+ return !!value && '__xstatenode' in value;
473
458
  }
474
459
  function isActor(value) {
475
460
  return !!value && typeof value.send === 'function';
@@ -588,4 +573,4 @@ function createInvokeId(stateNodeId, index) {
588
573
  return "".concat(stateNodeId, ":invocation[").concat(index, "]");
589
574
  }
590
575
 
591
- 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/Actor.d.ts CHANGED
@@ -21,5 +21,5 @@ export declare function createInvocableActor<TC, TE extends EventObject>(invokeD
21
21
  export declare function createDeferredActor(entity: Spawnable, id: string, data?: any): ActorRef<any, undefined>;
22
22
  export declare function isActor(item: any): item is ActorRef<any>;
23
23
  export declare function isSpawnedActor(item: any): item is ActorRef<any>;
24
- export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted>;
24
+ export declare function toActorRef<TEvent extends EventObject, TEmitted = any, TActorRefLike extends BaseActorRef<TEvent> = BaseActorRef<TEvent>>(actorRefLike: TActorRefLike): ActorRef<TEvent, TEmitted> & Omit<TActorRefLike, keyof ActorRef<any, any>>;
25
25
  //# sourceMappingURL=Actor.d.ts.map
package/lib/Actor.js CHANGED
@@ -7,7 +7,9 @@ var utils = require('./utils.js');
7
7
  var serviceScope = require('./serviceScope.js');
8
8
 
9
9
  function createNullActor(id) {
10
- return _tslib.__assign({
10
+ var _a;
11
+
12
+ return _a = {
11
13
  id: id,
12
14
  send: function () {
13
15
  return void 0;
@@ -27,7 +29,9 @@ function createNullActor(id) {
27
29
  id: id
28
30
  };
29
31
  }
30
- }, utils.interopSymbols);
32
+ }, _a[utils.symbolObservable] = function () {
33
+ return this;
34
+ }, _a;
31
35
  }
32
36
  /**
33
37
  * Creates a deferred actor that is able to be invoked given the provided
@@ -74,9 +78,12 @@ function isActor(item) {
74
78
  }
75
79
  function isSpawnedActor(item) {
76
80
  return isActor(item) && 'id' in item;
77
- }
81
+ } // TODO: refactor the return type, this could be written in a better way but it's best to avoid unneccessary breaking changes now
82
+
78
83
  function toActorRef(actorRefLike) {
79
- return _tslib.__assign(_tslib.__assign({
84
+ var _a;
85
+
86
+ return _tslib.__assign((_a = {
80
87
  subscribe: function () {
81
88
  return {
82
89
  unsubscribe: function () {
@@ -88,7 +95,9 @@ function toActorRef(actorRefLike) {
88
95
  getSnapshot: function () {
89
96
  return undefined;
90
97
  }
91
- }, utils.interopSymbols), actorRefLike);
98
+ }, _a[utils.symbolObservable] = function () {
99
+ return this;
100
+ }, _a), actorRefLike);
92
101
  }
93
102
 
94
103
  exports.createDeferredActor = createDeferredActor;
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.d.ts CHANGED
@@ -71,7 +71,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
71
71
  * @param stateValue
72
72
  * @param context
73
73
  */
74
- static inert<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE> | StateValue, context: TC): State<TC, TE>;
74
+ static inert<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE, any, any, any> | StateValue, context: TC): State<TC, TE>;
75
75
  /**
76
76
  * Creates a new State instance.
77
77
  * @param value The state value
@@ -98,7 +98,8 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
98
98
  * Whether the current state value is a subset of the given parent state value.
99
99
  * @param parentStateValue
100
100
  */
101
- matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : TTypestate['value']>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
101
+ matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<TResolvedTypesMeta, 'matchesStates'> : never>(parentStateValue: TSV): boolean;
102
+ matches<TSV extends TResolvedTypesMeta extends TypegenDisabled ? TTypestate['value'] : never>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
102
103
  value: TSV;
103
104
  context: any;
104
105
  } extends TTypestate ? TTypestate : never : never)['context'], TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> & {
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;
@@ -230,11 +230,6 @@ function () {
230
230
  tags: Array.from(tags)
231
231
  });
232
232
  };
233
- /**
234
- * Whether the current state value is a subset of the given parent state value.
235
- * @param parentStateValue
236
- */
237
-
238
233
 
239
234
  State.prototype.matches = function (parentStateValue) {
240
235
  return utils.matchesState(parentStateValue, this.value);