xstate 4.32.0 → 4.33.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.
@@ -3,6 +3,7 @@ import { StateNode } from './StateNode';
3
3
  declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
4
4
  declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
5
5
  export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any, any>) => boolean;
6
+ export declare function getAllChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
6
7
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
7
8
  export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any, any, any>): Array<StateNode<TC, any, TE, any, any, any>>;
8
9
  export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>): Set<StateNode<TC, any, TE, any, any, any>>;
package/lib/stateUtils.js CHANGED
@@ -8,10 +8,13 @@ var utils = require('./utils.js');
8
8
  var isLeafNode = function (stateNode) {
9
9
  return stateNode.type === 'atomic' || stateNode.type === 'final';
10
10
  };
11
- function getChildren(stateNode) {
11
+ function getAllChildren(stateNode) {
12
12
  return Object.keys(stateNode.states).map(function (key) {
13
13
  return stateNode.states[key];
14
- }).filter(function (sn) {
14
+ });
15
+ }
16
+ function getChildren(stateNode) {
17
+ return getAllChildren(stateNode).filter(function (sn) {
15
18
  return sn.type !== 'history';
16
19
  });
17
20
  }
@@ -261,6 +264,7 @@ function getTagsFromConfiguration(configuration) {
261
264
  }
262
265
 
263
266
  exports.getAdjList = getAdjList;
267
+ exports.getAllChildren = getAllChildren;
264
268
  exports.getAllStateNodes = getAllStateNodes;
265
269
  exports.getChildren = getChildren;
266
270
  exports.getConfiguration = getConfiguration;
package/lib/types.d.ts CHANGED
@@ -422,6 +422,12 @@ export interface StateNodeConfig<TContext, TStateSchema extends StateSchema, TEv
422
422
  * @default false
423
423
  */
424
424
  preserveActionOrder?: boolean;
425
+ /**
426
+ * Whether XState calls actions with the event directly responsible for the related transition.
427
+ *
428
+ * @default false
429
+ */
430
+ predictableActionArguments?: boolean;
425
431
  /**
426
432
  * A text description of the state node
427
433
  */
@@ -856,6 +862,9 @@ export interface StateConfig<TContext, TEvent extends EventObject> {
856
862
  */
857
863
  activities?: ActivityMap;
858
864
  meta?: any;
865
+ /**
866
+ * @deprecated
867
+ */
859
868
  events?: TEvent[];
860
869
  configuration: Array<StateNode<TContext, any, TEvent>>;
861
870
  transitions: Array<TransitionDefinition<TContext, TEvent>>;
@@ -1018,7 +1027,7 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
1018
1027
  initialState: TEmitted;
1019
1028
  start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
1020
1029
  }
1021
- 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;
1030
+ export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends Interpreter<infer _, infer __, infer ___, infer ____, infer _____> ? R['initialState'] : R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
1022
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;
1023
1032
  export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
1024
1033
  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;
@@ -1027,5 +1036,6 @@ declare type Matches<TypegenEnabledArg, TypegenDisabledArg> = {
1027
1036
  (stateValue: TypegenDisabledArg): any;
1028
1037
  };
1029
1038
  export declare type StateValueFrom<TMachine extends AnyStateMachine> = StateFrom<TMachine>['matches'] extends Matches<infer TypegenEnabledArg, infer TypegenDisabledArg> ? TMachine['__TResolvedTypesMeta'] extends TypegenEnabled ? TypegenEnabledArg : TypegenDisabledArg : never;
1039
+ export declare type PredictableActionArgumentsExec = (action: ActionObject<unknown, EventObject>, context: unknown, _event: SCXML.Event<EventObject>) => void;
1030
1040
  export {};
1031
1041
  //# sourceMappingURL=types.d.ts.map
package/lib/utils.d.ts CHANGED
@@ -67,6 +67,6 @@ export declare function normalizeTarget<TContext, TEvent extends EventObject>(ta
67
67
  export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
68
68
  export declare function evaluateGuard<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any>, guard: Guard<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>): boolean;
69
69
  export declare function toInvokeSource(src: string | InvokeSourceDefinition): InvokeSourceDefinition;
70
- export declare function toObserver<T>(nextHandler: Observer<T> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
70
+ export declare function toObserver<T>(nextHandler?: Partial<Observer<T>> | ((value: T) => void), errorHandler?: (error: any) => void, completionHandler?: () => void): Observer<T>;
71
71
  export declare function createInvokeId(stateNodeId: string, index: number): string;
72
72
  //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -609,18 +609,14 @@ function toInvokeSource(src) {
609
609
  return src;
610
610
  }
611
611
  function toObserver(nextHandler, errorHandler, completionHandler) {
612
- if (typeof nextHandler === 'object') {
613
- return nextHandler;
614
- }
615
-
616
- var noop = function () {
617
- return void 0;
618
- };
612
+ var noop = function () {};
619
613
 
614
+ var isObserver = typeof nextHandler === 'object';
615
+ var self = isObserver ? nextHandler : null;
620
616
  return {
621
- next: nextHandler,
622
- error: errorHandler || noop,
623
- complete: completionHandler || noop
617
+ next: ((isObserver ? nextHandler.next : nextHandler) || noop).bind(self),
618
+ error: ((isObserver ? nextHandler.error : errorHandler) || noop).bind(self),
619
+ complete: ((isObserver ? nextHandler.complete : completionHandler) || noop).bind(self)
624
620
  };
625
621
  }
626
622
  function createInvokeId(stateNodeId, index) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xstate",
3
- "version": "4.32.0",
3
+ "version": "4.33.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",