xstate 4.30.2 → 4.30.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/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;
@@ -1026,10 +1028,10 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
1026
1028
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1027
1029
  }
1028
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;
1029
- 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;
1030
1032
  export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
1031
1033
  type: K;
1032
1034
  }>;
1033
- 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;
1034
1036
  export {};
1035
1037
  //# sourceMappingURL=types.d.ts.map
package/lib/types.js CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ exports.ActionTypes = void 0;
6
+
5
7
  (function (ActionTypes) {
6
8
  ActionTypes["Start"] = "xstate.start";
7
9
  ActionTypes["Stop"] = "xstate.stop";
@@ -25,6 +27,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
25
27
  ActionTypes["Choose"] = "xstate.choose";
26
28
  })(exports.ActionTypes || (exports.ActionTypes = {}));
27
29
 
30
+ exports.SpecialTargets = void 0;
31
+
28
32
  (function (SpecialTargets) {
29
33
  SpecialTargets["Parent"] = "#_parent";
30
34
  SpecialTargets["Internal"] = "#_internal";
package/lib/utils.d.ts CHANGED
@@ -11,9 +11,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
11
11
  export declare function isStateLike(state: any): state is StateLike<any>;
12
12
  export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
13
13
  export declare function pathToStateValue(statePath: string[]): StateValue;
14
- export declare function mapValues<T, P, O extends {
15
- [key: string]: T;
16
- }>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
14
+ export declare function mapValues<P, O extends Record<string, unknown>>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
17
15
  [key in keyof O]: P;
18
16
  };
19
17
  export declare function mapFilterValues<T, P>(collection: {
package/lib/utils.js CHANGED
@@ -31,7 +31,7 @@ function matchesState(parentStateId, childStateId, delimiter) {
31
31
  return parentStateValue in childStateValue;
32
32
  }
33
33
 
34
- return keys(parentStateValue).every(function (key) {
34
+ return Object.keys(parentStateValue).every(function (key) {
35
35
  if (!(key in childStateValue)) {
36
36
  return false;
37
37
  }
@@ -46,6 +46,13 @@ function getEventType(event) {
46
46
  throw new Error('Events must be strings or objects with a string event.type property.');
47
47
  }
48
48
  }
49
+ function getActionType(action) {
50
+ try {
51
+ return isString(action) || typeof action === 'number' ? "".concat(action) : isFunction(action) ? action.name : action.type;
52
+ } catch (e) {
53
+ throw new Error('Actions must be strings or objects with a string action.type property.');
54
+ }
55
+ }
49
56
  function toStatePath(stateId, delimiter) {
50
57
  try {
51
58
  if (isArray(stateId)) {
@@ -97,7 +104,7 @@ function pathToStateValue(statePath) {
97
104
  }
98
105
  function mapValues(collection, iteratee) {
99
106
  var result = {};
100
- var collectionKeys = keys(collection);
107
+ var collectionKeys = Object.keys(collection);
101
108
 
102
109
  for (var i = 0; i < collectionKeys.length; i++) {
103
110
  var key = collectionKeys[i];
@@ -112,7 +119,7 @@ function mapFilterValues(collection, iteratee, predicate) {
112
119
  var result = {};
113
120
 
114
121
  try {
115
- for (var _b = _tslib.__values(keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
122
+ for (var _b = _tslib.__values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
116
123
  var key = _c.value;
117
124
  var item = collection[key];
118
125
 
@@ -207,7 +214,7 @@ function toStatePaths(stateValue) {
207
214
  return [[stateValue]];
208
215
  }
209
216
 
210
- var result = flatten(keys(stateValue).map(function (key) {
217
+ var result = flatten(Object.keys(stateValue).map(function (key) {
211
218
  var subStateValue = stateValue[key];
212
219
 
213
220
  if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {
@@ -220,6 +227,46 @@ function toStatePaths(stateValue) {
220
227
  }));
221
228
  return result;
222
229
  }
230
+ function pathsToStateValue(paths) {
231
+ var e_4, _a;
232
+
233
+ var result = {};
234
+
235
+ if (paths && paths.length === 1 && paths[0].length === 1) {
236
+ return paths[0][0];
237
+ }
238
+
239
+ try {
240
+ for (var paths_1 = _tslib.__values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
241
+ var currentPath = paths_1_1.value;
242
+ var marker = result; // tslint:disable-next-line:prefer-for-of
243
+
244
+ for (var i = 0; i < currentPath.length; i++) {
245
+ var subPath = currentPath[i];
246
+
247
+ if (i === currentPath.length - 2) {
248
+ marker[subPath] = currentPath[i + 1];
249
+ break;
250
+ }
251
+
252
+ marker[subPath] = marker[subPath] || {};
253
+ marker = marker[subPath];
254
+ }
255
+ }
256
+ } catch (e_4_1) {
257
+ e_4 = {
258
+ error: e_4_1
259
+ };
260
+ } finally {
261
+ try {
262
+ if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
263
+ } finally {
264
+ if (e_4) throw e_4.error;
265
+ }
266
+ }
267
+
268
+ return result;
269
+ }
223
270
  function flatten(array) {
224
271
  var _a;
225
272
 
@@ -366,7 +413,7 @@ function updateContext(context, _event, assignActions, state) {
366
413
  partialUpdate = assignment(acc, _event.data, meta);
367
414
  } else {
368
415
  try {
369
- for (var _b = _tslib.__values(keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
416
+ for (var _b = _tslib.__values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
370
417
  var key = _c.value;
371
418
  var propAssignment = assignment[key];
372
419
  partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;
@@ -420,18 +467,7 @@ function isFunction(value) {
420
467
  }
421
468
  function isString(value) {
422
469
  return typeof value === 'string';
423
- } // export function memoizedGetter<T, TP extends { prototype: object }>(
424
- // o: TP,
425
- // property: string,
426
- // getter: () => T
427
- // ): void {
428
- // Object.defineProperty(o.prototype, property, {
429
- // get: getter,
430
- // enumerable: false,
431
- // configurable: false
432
- // });
433
- // }
434
-
470
+ }
435
471
  function toGuard(condition, guardMap) {
436
472
  if (!condition) {
437
473
  return undefined;
@@ -472,11 +508,7 @@ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
472
508
  return this;
473
509
  }, _a);
474
510
  function isMachine(value) {
475
- try {
476
- return '__xstatenode' in value;
477
- } catch (e) {
478
- return false;
479
- }
511
+ return !!value && '__xstatenode' in value;
480
512
  }
481
513
  function isActor(value) {
482
514
  return !!value && typeof value.send === 'function';
@@ -598,6 +630,7 @@ function createInvokeId(stateNodeId, index) {
598
630
  exports.createInvokeId = createInvokeId;
599
631
  exports.evaluateGuard = evaluateGuard;
600
632
  exports.flatten = flatten;
633
+ exports.getActionType = getActionType;
601
634
  exports.getEventType = getEventType;
602
635
  exports.interopSymbols = interopSymbols;
603
636
  exports.isActor = isActor;
@@ -620,6 +653,7 @@ exports.normalizeTarget = normalizeTarget;
620
653
  exports.partition = partition;
621
654
  exports.path = path;
622
655
  exports.pathToStateValue = pathToStateValue;
656
+ exports.pathsToStateValue = pathsToStateValue;
623
657
  exports.reportUnhandledExceptionOnInvocation = reportUnhandledExceptionOnInvocation;
624
658
  exports.symbolObservable = symbolObservable;
625
659
  exports.toArray = toArray;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xstate",
3
- "version": "4.30.2",
3
+ "version": "4.30.5",
4
4
  "description": "Finite State Machines and Statecharts for the Modern Web.",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -48,12 +48,13 @@
48
48
  "@rollup/plugin-babel": "^5.3.0",
49
49
  "@scion-scxml/test-framework": "^2.0.15",
50
50
  "babel-plugin-annotate-pure-calls": "^0.4.0",
51
+ "fast-glob": "^3.2.11",
51
52
  "jest": "^26.6.3",
52
53
  "jsdom": "^14.0.0",
53
54
  "jsdom-global": "^3.0.2",
54
55
  "lerna-alias": "3.0.3-0",
55
56
  "pkg-up": "^3.1.0",
56
- "rollup": "^2.35.1",
57
+ "rollup": "^2.69.0",
57
58
  "rollup-plugin-filesize": "^6.2.1",
58
59
  "rollup-plugin-replace": "^2.2.0",
59
60
  "rollup-plugin-terser": "^5.1.2",