xstate 5.0.0-alpha.1 → 5.0.0-alpha.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.
Files changed (67) hide show
  1. package/README.md +3 -2
  2. package/actions/dist/xstate-actions.cjs.dev.js +3 -2
  3. package/actions/dist/xstate-actions.cjs.prod.js +2 -1
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actions/dynamicAction.ts +11 -3
  8. package/actors/dist/xstate-actors.cjs.d.ts +1 -1
  9. package/actors/dist/xstate-actors.cjs.dev.js +4 -3
  10. package/actors/dist/xstate-actors.cjs.prod.js +3 -2
  11. package/actors/dist/xstate-actors.esm.js +2 -2
  12. package/actors/dist/xstate-actors.umd.min.js +1 -1
  13. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  14. package/dev/dist/xstate-dev.cjs.dev.js +1 -1
  15. package/dev/dist/xstate-dev.cjs.prod.js +0 -11
  16. package/dev/dist/xstate-dev.esm.js +1 -1
  17. package/dev/dist/xstate-dev.umd.min.js.map +1 -1
  18. package/dist/{actions-7ea9280f.cjs.prod.js → actions-3910d35f.cjs.prod.js} +1127 -1491
  19. package/dist/{actions-b08d0da8.cjs.dev.js → actions-3f0ba11b.cjs.dev.js} +1131 -1501
  20. package/dist/{actions-b673cb13.esm.js → actions-4fe4ada8.esm.js} +1134 -1500
  21. package/dist/declarations/actions/dynamicAction.d.ts +3 -3
  22. package/dist/declarations/src/Machine.d.ts +4 -4
  23. package/dist/declarations/src/SimulatedClock.d.ts +1 -1
  24. package/dist/declarations/src/State.d.ts +6 -6
  25. package/dist/declarations/src/StateMachine.d.ts +12 -22
  26. package/dist/declarations/src/StateNode.d.ts +3 -3
  27. package/dist/declarations/src/actionTypes.d.ts +1 -1
  28. package/dist/declarations/src/actions/assign.d.ts +2 -2
  29. package/dist/declarations/src/actions/cancel.d.ts +3 -3
  30. package/dist/declarations/src/actions/choose.d.ts +3 -3
  31. package/dist/declarations/src/actions/invoke.d.ts +3 -3
  32. package/dist/declarations/src/actions/log.d.ts +3 -3
  33. package/dist/declarations/src/actions/pure.d.ts +5 -2
  34. package/dist/declarations/src/actions/raise.d.ts +2 -3
  35. package/dist/declarations/src/actions/send.d.ts +11 -9
  36. package/dist/declarations/src/actions/stop.d.ts +2 -2
  37. package/dist/declarations/src/actions.d.ts +14 -10
  38. package/dist/declarations/src/actors/callback.d.ts +8 -0
  39. package/dist/declarations/src/actors/index.d.ts +27 -0
  40. package/dist/declarations/src/actors/observable.d.ts +23 -0
  41. package/dist/declarations/src/actors/promise.d.ts +12 -0
  42. package/dist/declarations/src/actors/transition.d.ts +13 -0
  43. package/dist/declarations/src/dev/index.d.ts +2 -2
  44. package/dist/declarations/src/guards.d.ts +2 -2
  45. package/dist/declarations/src/index.d.ts +22 -22
  46. package/dist/declarations/src/interpreter.d.ts +26 -30
  47. package/dist/declarations/src/spawn.d.ts +2 -2
  48. package/dist/declarations/src/stateUtils.d.ts +11 -11
  49. package/dist/declarations/src/system.d.ts +2 -0
  50. package/dist/declarations/src/typegenTypes.d.ts +9 -9
  51. package/dist/declarations/src/types.d.ts +300 -267
  52. package/dist/declarations/src/utils.d.ts +14 -10
  53. package/dist/{index-20b364c4.esm.js → index-50bd0aff.esm.js} +0 -12
  54. package/dist/{index-2a564d03.cjs.dev.js → index-ebaab3c9.cjs.dev.js} +0 -12
  55. package/dist/xstate.cjs.dev.js +142 -217
  56. package/dist/xstate.cjs.prod.js +141 -216
  57. package/dist/xstate.esm.js +140 -216
  58. package/dist/xstate.umd.min.js +1 -1
  59. package/dist/xstate.umd.min.js.map +1 -1
  60. package/guards/dist/xstate-guards.cjs.dev.js +2 -2
  61. package/guards/dist/xstate-guards.cjs.prod.js +1 -1
  62. package/guards/dist/xstate-guards.esm.js +2 -2
  63. package/guards/dist/xstate-guards.umd.min.js +1 -1
  64. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  65. package/package.json +8 -9
  66. package/dist/declarations/src/actors.d.ts +0 -37
  67. package/dist/declarations/src/registry.d.ts +0 -8
@@ -1,11 +1,11 @@
1
- import type { AnyActorRef, AnyStateMachine, Behavior, EventFromBehavior, InterpreterFrom, SnapshotFrom } from './types';
2
- import { AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
3
- import { ActorRef, DoneEvent, EventObject, InteropSubscribable, InterpreterOptions, Observer, SCXML, SendActionObject, StateValue, Subscription } from './types';
4
- import { symbolObservable } from './symbolObservable';
5
- export declare type SnapshotListener<TBehavior extends Behavior<any, any>> = (state: SnapshotFrom<TBehavior>) => void;
6
- export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
7
- export declare type Listener = () => void;
8
- export declare type ErrorListener = (error: any) => void;
1
+ import type { AnyStateMachine, EventFromBehavior, InterpreterFrom, PersistedStateFrom, SnapshotFrom, ActorSystem, AnyActorBehavior, RaiseActionObject } from './types.js';
2
+ import { AreAllImplementationsAssumedToBeProvided } from './typegenTypes.js';
3
+ import { ActorRef, DoneEvent, EventObject, InteropSubscribable, InterpreterOptions, Observer, SCXML, SendActionObject, Subscription } from './types.js';
4
+ import { symbolObservable } from './symbolObservable.js';
5
+ export type SnapshotListener<TBehavior extends AnyActorBehavior> = (state: SnapshotFrom<TBehavior>) => void;
6
+ export type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
7
+ export type Listener = () => void;
8
+ export type ErrorListener = (error: any) => void;
9
9
  export interface Clock {
10
10
  setTimeout(fn: (...args: any[]) => void, timeout: number): any;
11
11
  clearTimeout(id: any): void;
@@ -15,18 +15,17 @@ export declare enum ActorStatus {
15
15
  Running = 1,
16
16
  Stopped = 2
17
17
  }
18
- declare type InternalStateFrom<TBehavior extends Behavior<any, any, any>> = TBehavior extends Behavior<infer _, infer __, infer TInternalState> ? TInternalState : never;
19
- export declare class Interpreter<TBehavior extends Behavior<any, any>, TEvent extends EventObject = EventFromBehavior<TBehavior>> implements ActorRef<TEvent, SnapshotFrom<TBehavior>> {
18
+ export declare class Interpreter<TBehavior extends AnyActorBehavior, TEvent extends EventObject = EventFromBehavior<TBehavior>> implements ActorRef<TEvent, SnapshotFrom<TBehavior>> {
20
19
  behavior: TBehavior;
21
20
  /**
22
21
  * The current state of the interpreted behavior.
23
22
  */
24
- private _state?;
23
+ private _state;
25
24
  /**
26
25
  * The clock that is responsible for setting and clearing timeouts, such as delayed events and transitions.
27
26
  */
28
27
  clock: Clock;
29
- options: Readonly<InterpreterOptions>;
28
+ options: Readonly<InterpreterOptions<TBehavior>>;
30
29
  /**
31
30
  * The unique identifier for this actor relative to its parent.
32
31
  */
@@ -42,22 +41,24 @@ export declare class Interpreter<TBehavior extends Behavior<any, any>, TEvent ex
42
41
  _parent?: ActorRef<any>;
43
42
  ref: ActorRef<TEvent>;
44
43
  private _actorContext;
44
+ private _systemId;
45
45
  /**
46
46
  * The globally unique process ID for this invocation.
47
47
  */
48
48
  sessionId: string;
49
- _forwardTo: Set<AnyActorRef>;
49
+ system: ActorSystem<any>;
50
+ private _doneEvent?;
51
+ src?: string;
50
52
  /**
51
53
  * Creates a new Interpreter instance (i.e., service) for the given behavior with the provided options, if any.
52
54
  *
53
55
  * @param behavior The behavior to be interpreted
54
56
  * @param options Interpreter options
55
57
  */
56
- constructor(behavior: TBehavior, options?: InterpreterOptions);
58
+ constructor(behavior: TBehavior, options?: InterpreterOptions<TBehavior>);
59
+ private _initState;
57
60
  private _deferred;
58
- private _getInitialState;
59
61
  private update;
60
- onTransition(listener: SnapshotListener<TBehavior>): this;
61
62
  subscribe(observer: Observer<SnapshotFrom<TBehavior>>): Subscription;
62
63
  subscribe(nextListener?: (state: SnapshotFrom<TBehavior>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
63
64
  /**
@@ -66,34 +67,30 @@ export declare class Interpreter<TBehavior extends Behavior<any, any>, TEvent ex
66
67
  */
67
68
  onDone(listener: EventListener<DoneEvent>): this;
68
69
  /**
69
- * Starts the interpreter from the given state, or the initial state.
70
- * @param initialState The state to start the statechart from
70
+ * Starts the interpreter from the initial state
71
71
  */
72
- start(initialState?: InternalStateFrom<TBehavior> | StateValue): this;
72
+ start(): this;
73
73
  private _process;
74
+ private _stop;
74
75
  /**
75
76
  * Stops the interpreter and unsubscribe all listeners.
76
77
  */
77
78
  stop(): this;
78
79
  private _complete;
79
- private _stop;
80
+ private _stopProcedure;
80
81
  /**
81
82
  * Sends an event to the running interpreter to trigger a transition.
82
83
  *
83
- * An array of events (batched) can be sent as well, which will send all
84
- * batched events to the running interpreter. The listeners will be
85
- * notified only **once** when all events are processed.
86
- *
87
- * @param event The event(s) to send
84
+ * @param event The event to send
88
85
  */
89
86
  send(event: TEvent | SCXML.Event<TEvent>): void;
90
- private forward;
91
- delaySend(sendAction: SendActionObject): void;
87
+ delaySend(sendAction: SendActionObject | RaiseActionObject<any, any, any>): void;
92
88
  cancel(sendId: string | number): void;
93
89
  private attachDevTools;
94
90
  toJSON(): {
95
91
  id: string;
96
92
  };
93
+ getPersistedState(): PersistedStateFrom<TBehavior> | undefined;
97
94
  [Symbol.observable](): InteropSubscribable<SnapshotFrom<TBehavior>>;
98
95
  getSnapshot(): SnapshotFrom<TBehavior>;
99
96
  }
@@ -103,6 +100,5 @@ export declare class Interpreter<TBehavior extends Behavior<any, any>, TEvent ex
103
100
  * @param machine The machine to interpret
104
101
  * @param options Interpreter options
105
102
  */
106
- export declare function interpret<TMachine extends AnyStateMachine>(machine: AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends true ? TMachine : 'Some implementations missing', options?: InterpreterOptions): InterpreterFrom<TMachine>;
107
- export declare function interpret<TBehavior extends Behavior<any, any>>(behavior: TBehavior, options?: InterpreterOptions): Interpreter<TBehavior>;
108
- export {};
103
+ export declare function interpret<TMachine extends AnyStateMachine>(machine: AreAllImplementationsAssumedToBeProvided<TMachine['__TResolvedTypesMeta']> extends true ? TMachine : 'Some implementations missing', options?: InterpreterOptions<TMachine>): InterpreterFrom<TMachine>;
104
+ export declare function interpret<TBehavior extends AnyActorBehavior>(behavior: TBehavior, options?: InterpreterOptions<TBehavior>): Interpreter<TBehavior>;
@@ -1,2 +1,2 @@
1
- import { MachineContext, EventObject, SCXML, InvokeActionObject, AnyStateMachine, Spawner } from '.';
2
- export declare function createSpawner<TContext extends MachineContext, TEvent extends EventObject>(machine: AnyStateMachine, context: TContext, _event: SCXML.Event<TEvent>, mutCapturedActions: InvokeActionObject[]): Spawner;
1
+ import { InvokeActionObject, AnyStateMachine, Spawner, ActorRef, MachineContext, EventObject, SCXML } from '.';
2
+ export declare function createSpawner<TContext extends MachineContext, TEvent extends EventObject>(self: ActorRef<any, any> | undefined, machine: AnyStateMachine, context: TContext, _event: SCXML.Event<TEvent>, mutCapturedActions: InvokeActionObject[]): Spawner;
@@ -1,11 +1,11 @@
1
- import { BaseActionObject, EventObject, StateValue, TransitionConfig, TransitionDefinition, SingleOrArray, SCXML, StateValueMap, InitialTransitionConfig, MachineContext } from './types';
2
- import { State } from './State';
3
- import { NULL_EVENT } from './constants';
4
- import type { StateNode } from './StateNode';
5
- import { ActorContext, AnyHistoryValue, AnyState, AnyStateMachine, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, InitialTransitionDefinition, StateFromMachine } from '.';
6
- declare type Configuration<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
7
- declare type AnyConfiguration = Configuration<any, any>;
8
- declare type AdjList = Map<AnyStateNode, Array<AnyStateNode>>;
1
+ import { BaseActionObject, EventObject, StateValue, TransitionConfig, TransitionDefinition, SingleOrArray, SCXML, StateValueMap, InitialTransitionConfig, MachineContext } from './types.js';
2
+ import { State } from './State.js';
3
+ import { NULL_EVENT } from './constants.js';
4
+ import type { StateNode } from './StateNode.js';
5
+ import { AnyActorContext, AnyHistoryValue, AnyState, AnyStateMachine, AnyStateNode, AnyTransitionDefinition, DelayedTransitionDefinition, InitialTransitionDefinition, StateFromMachine } from '.';
6
+ type Configuration<TContext extends MachineContext, TE extends EventObject> = Iterable<StateNode<TContext, TE>>;
7
+ type AnyConfiguration = Configuration<any, any>;
8
+ type AdjList = Map<AnyStateNode, Array<AnyStateNode>>;
9
9
  export declare function getConfiguration(stateNodes: Iterable<AnyStateNode>): Set<AnyStateNode>;
10
10
  export declare function getAdjList<TContext extends MachineContext, TE extends EventObject>(configuration: Configuration<TContext, TE>): AdjList;
11
11
  export declare function getStateValue(rootNode: AnyStateNode, configuration: AnyConfiguration): StateValue;
@@ -51,11 +51,11 @@ export declare function removeConflictingTransitions(enabledTransitions: Array<A
51
51
  * @param currentState
52
52
  * @param mutConfiguration
53
53
  */
54
- export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: ActorContext<any, any> | undefined, scxmlEvent: SCXML.Event<TEvent>): State<TContext, TEvent, any>;
55
- export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], scxmlEvent: SCXML.Event<TEvent>, currentState: State<TContext, TEvent, any>, actorCtx: ActorContext<any, any> | undefined): {
54
+ export declare function microstep<TContext extends MachineContext, TEvent extends EventObject>(transitions: Array<TransitionDefinition<TContext, TEvent>>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined, scxmlEvent: SCXML.Event<TEvent>): State<TContext, TEvent, any>;
55
+ export declare function resolveActionsAndContext<TContext extends MachineContext, TEvent extends EventObject>(actions: BaseActionObject[], scxmlEvent: SCXML.Event<TEvent>, currentState: State<TContext, TEvent, any>, actorCtx: AnyActorContext | undefined): {
56
56
  nextState: AnyState;
57
57
  };
58
- export declare function macrostep<TMachine extends AnyStateMachine>(state: StateFromMachine<TMachine>, scxmlEvent: SCXML.Event<TMachine['__TEvent']>, actorCtx: ActorContext<any, any> | undefined): {
58
+ export declare function macrostep<TMachine extends AnyStateMachine>(state: StateFromMachine<TMachine>, scxmlEvent: SCXML.Event<TMachine['__TEvent']>, actorCtx: AnyActorContext | undefined): {
59
59
  state: typeof state;
60
60
  microstates: Array<typeof state>;
61
61
  };
@@ -0,0 +1,2 @@
1
+ import { ActorSystem, ActorSystemInfo } from './types.js';
2
+ export declare function createSystem<T extends ActorSystemInfo>(): ActorSystem<T>;
@@ -1,4 +1,4 @@
1
- import { BaseActionObject, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ActorMap, Cast } from './types';
1
+ import { EventObject, IndexByType, IsNever, Prop, Values, IsAny, ActorMap, Cast, ParameterizedObject } from './types.js';
2
2
  export interface TypegenDisabled {
3
3
  '@@xstate/typegen': false;
4
4
  }
@@ -78,12 +78,12 @@ export interface TypegenMeta extends TypegenEnabled {
78
78
  }
79
79
  export interface ResolvedTypegenMeta extends TypegenMeta {
80
80
  resolved: TypegenMeta & {
81
- indexedActions: Record<string, BaseActionObject>;
81
+ indexedActions: Record<string, ParameterizedObject>;
82
82
  indexedEvents: Record<string, EventObject>;
83
83
  };
84
84
  }
85
- export declare type TypegenConstraint = TypegenEnabled | TypegenDisabled;
86
- export declare type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
85
+ export type TypegenConstraint = TypegenEnabled | TypegenDisabled;
86
+ export type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
87
87
  [K in keyof TMissingImplementations]: TMissingImplementations[K];
88
88
  }>> extends true ? true : false : true;
89
89
  interface AllImplementationsProvided {
@@ -98,20 +98,20 @@ export interface MarkAllImplementationsAsProvided<TResolvedTypesMeta> {
98
98
  '@@xstate/typegen': Prop<TResolvedTypesMeta, '@@xstate/typegen'>;
99
99
  resolved: Prop<TResolvedTypesMeta, 'resolved'> & AllImplementationsProvided;
100
100
  }
101
- declare type GenerateActorEvent<TActorName, TEventType, TActorMap extends ActorMap> = TEventType extends any ? {
101
+ type GenerateActorEvent<TActorName, TEventType, TActorMap extends ActorMap> = TEventType extends any ? {
102
102
  type: TEventType;
103
103
  } & Prop<TActorMap, TActorName> : never;
104
- declare type GenerateActorEvents<TActorMap extends ActorMap, TInvokeSrcNameMap> = string extends keyof TActorMap ? never : Cast<{
104
+ type GenerateActorEvents<TActorMap extends ActorMap, TInvokeSrcNameMap> = string extends keyof TActorMap ? never : Cast<{
105
105
  [K in keyof TInvokeSrcNameMap]: GenerateActorEvent<K, TInvokeSrcNameMap[K], TActorMap>;
106
106
  }[keyof TInvokeSrcNameMap], EventObject>;
107
- declare type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
108
- declare type AllowAllEvents = {
107
+ type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
108
+ type AllowAllEvents = {
109
109
  eventsCausingActions: Record<string, string>;
110
110
  eventsCausingActors: Record<string, string>;
111
111
  eventsCausingDelays: Record<string, string>;
112
112
  eventsCausingGuards: Record<string, string>;
113
113
  };
114
- export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TActorMap extends ActorMap> {
114
+ export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends ParameterizedObject, TActorMap extends ActorMap> {
115
115
  '@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
116
116
  resolved: {
117
117
  enabled: TTypesMeta & {