xstate 5.3.1 → 5.4.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.
Files changed (36) hide show
  1. package/actions/dist/xstate-actions.cjs.js +2 -2
  2. package/actions/dist/xstate-actions.development.cjs.js +2 -2
  3. package/actions/dist/xstate-actions.development.esm.js +2 -2
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  5. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  6. package/actors/dist/xstate-actors.cjs.js +1 -1
  7. package/actors/dist/xstate-actors.development.cjs.js +1 -1
  8. package/actors/dist/xstate-actors.development.esm.js +1 -1
  9. package/actors/dist/xstate-actors.esm.js +1 -1
  10. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  11. package/dist/declarations/src/State.d.ts +14 -15
  12. package/dist/declarations/src/StateMachine.d.ts +14 -13
  13. package/dist/declarations/src/{interpreter.d.ts → createActor.d.ts} +2 -3
  14. package/dist/declarations/src/index.d.ts +1 -1
  15. package/dist/declarations/src/typegenTypes.d.ts +5 -14
  16. package/dist/declarations/src/types.d.ts +14 -11
  17. package/dist/{log-b852bac9.development.esm.js → log-11038f00.development.esm.js} +1 -1
  18. package/dist/{log-cb766272.development.cjs.js → log-18eb632d.development.cjs.js} +1 -1
  19. package/dist/{log-a32b44b3.cjs.js → log-2580e864.cjs.js} +1 -1
  20. package/dist/{log-e870aec8.esm.js → log-88b333eb.esm.js} +1 -1
  21. package/dist/{raise-c8b9d708.development.esm.js → raise-057d17af.development.esm.js} +4 -3
  22. package/dist/{raise-7df513e7.esm.js → raise-3b380e4b.esm.js} +1 -3
  23. package/dist/{raise-4538b891.development.cjs.js → raise-3d3d6d51.development.cjs.js} +4 -3
  24. package/dist/{raise-c3bbdd3a.cjs.js → raise-5c58eb8e.cjs.js} +1 -3
  25. package/dist/xstate.cjs.js +7 -5
  26. package/dist/xstate.development.cjs.js +7 -5
  27. package/dist/xstate.development.esm.js +9 -7
  28. package/dist/xstate.esm.js +9 -7
  29. package/dist/xstate.umd.min.js +1 -1
  30. package/dist/xstate.umd.min.js.map +1 -1
  31. package/guards/dist/xstate-guards.cjs.js +1 -1
  32. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  33. package/guards/dist/xstate-guards.development.esm.js +1 -1
  34. package/guards/dist/xstate-guards.esm.js +1 -1
  35. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  36. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
1
  import { MachineSnapshot } from "./State.js";
2
2
  import { StateNode } from "./StateNode.js";
3
- import type { AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, ResolveTypegenMeta, TypegenDisabled } from "./typegenTypes.js";
4
- import type { ActorScope, ActorLogic, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, NoInfer, StateMachineDefinition, StateValue, TransitionDefinition, ParameterizedObject, AnyActorScope, ProvidedActor, AnyActorRef, Equals, TODO, Snapshot, HistoryValue, EventDescriptor } from "./types.js";
3
+ import { AnyActorSystem } from "./system.js";
4
+ import { ResolveTypegenMeta, TypegenDisabled } from "./typegenTypes.js";
5
+ import type { ActorLogic, ActorScope, AnyActorRef, AnyActorScope, Equals, EventDescriptor, EventObject, HistoryValue, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, NoInfer, ParameterizedObject, ProvidedActor, Snapshot, StateMachineDefinition, StateValue, TransitionDefinition } from "./types.js";
5
6
  export declare const STATE_IDENTIFIER = "#";
6
7
  export declare const WILDCARD = "*";
7
- export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TStateValue extends StateValue, TTag extends string, TInput, TOutput, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TActor, TAction, TGuard, TDelay, TTag>> implements ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, TODO> {
8
+ export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string, TStateValue extends StateValue, TTag extends string, TInput, TOutput, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TActor, TAction, TGuard, TDelay, TTag>> implements ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent, TInput, AnyActorSystem> {
8
9
  /**
9
10
  * The raw config used to create the machine.
10
11
  */
@@ -34,7 +35,7 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
34
35
  *
35
36
  * @returns A new `StateMachine` instance with the provided implementations.
36
37
  */
37
- provide(implementations: InternalMachineImplementations<TContext, TResolvedTypesMeta, true>): StateMachine<TContext, TEvent, TChildren, TActor, TAction, TGuard, TDelay, TStateValue, TTag, TInput, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
38
+ provide(implementations: InternalMachineImplementations<TContext, TResolvedTypesMeta, true>): StateMachine<TContext, TEvent, TChildren, TActor, TAction, TGuard, TDelay, TStateValue, TTag, TInput, TOutput, TResolvedTypesMeta>;
38
39
  resolveState(config: {
39
40
  value: StateValue;
40
41
  context?: TContext;
@@ -44,7 +45,7 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
44
45
  error?: unknown;
45
46
  } & (Equals<TContext, MachineContext> extends false ? {
46
47
  context: unknown;
47
- } : {})): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>;
48
+ } : {})): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>;
48
49
  /**
49
50
  * Determines the next snapshot given the current `snapshot` and received `event`.
50
51
  * Calculates a full macrostep from all microsteps.
@@ -52,7 +53,7 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
52
53
  * @param snapshot The current snapshot
53
54
  * @param event The received event
54
55
  */
55
- transition(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, event: TEvent, actorScope: ActorScope<typeof snapshot, TEvent>): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>;
56
+ transition(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, event: TEvent, actorScope: ActorScope<typeof snapshot, TEvent>): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>;
56
57
  /**
57
58
  * Determines the next state given the current `state` and `event`.
58
59
  * Calculates a microstep.
@@ -60,8 +61,8 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
60
61
  * @param state The current state
61
62
  * @param event The received event
62
63
  */
63
- microstep(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, event: TEvent, actorScope: AnyActorScope): Array<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>>;
64
- getTransitionData(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>>;
64
+ microstep(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, event: TEvent, actorScope: AnyActorScope): Array<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>>;
65
+ getTransitionData(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, event: TEvent): Array<TransitionDefinition<TContext, TEvent>>;
65
66
  /**
66
67
  * The initial state _before_ evaluating any microsteps.
67
68
  * This "pre-initial" state is provided to initial actions executed in the initial state.
@@ -70,13 +71,13 @@ export declare class StateMachine<TContext extends MachineContext, TEvent extend
70
71
  /**
71
72
  * Returns the initial `State` instance, with reference to `self` as an `ActorRef`.
72
73
  */
73
- getInitialSnapshot(actorScope: ActorScope<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, TEvent>, input?: TInput): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>;
74
- start(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>): void;
74
+ getInitialSnapshot(actorScope: ActorScope<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent>, input?: TInput): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>;
75
+ start(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>): void;
75
76
  getStateNodeById(stateId: string): StateNode<TContext, TEvent>;
76
77
  get definition(): StateMachineDefinition<TContext, TEvent>;
77
78
  toJSON(): StateMachineDefinition<TContext, TEvent>;
78
- getPersistedSnapshot(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, options?: unknown): Snapshot<unknown>;
79
- restoreSnapshot(snapshot: Snapshot<unknown>, _actorScope: ActorScope<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, TEvent>): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>;
80
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
79
+ getPersistedSnapshot(snapshot: MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, options?: unknown): Snapshot<unknown>;
80
+ restoreSnapshot(snapshot: Snapshot<unknown>, _actorScope: ActorScope<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent>): MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>;
81
+ /** @deprecated an internal property that was acting as a "phantom" type, it's not used by anything right now but it's kept around for compatibility reasons */
81
82
  __TResolvedTypesMeta: TResolvedTypesMeta;
82
83
  }
@@ -1,7 +1,6 @@
1
1
  import { symbolObservable } from "./symbolObservable.js";
2
2
  import { AnyActorSystem, Clock } from "./system.js";
3
- import { AreAllImplementationsAssumedToBeProvided, MissingImplementationsError } from "./typegenTypes.js";
4
- import type { AnyActorLogic, AnyStateMachine, EventFromLogic, Snapshot, SnapshotFrom } from "./types.js";
3
+ import type { AnyActorLogic, EventFromLogic, Snapshot, SnapshotFrom } from "./types.js";
5
4
  import { ActorOptions, ActorRef, EventObject, InteropSubscribable, Observer, Subscription } from "./types.js";
6
5
  export declare const $$ACTOR_TYPE = 1;
7
6
  export type SnapshotListener<TLogic extends AnyActorLogic> = (snapshot: SnapshotFrom<TLogic>) => void;
@@ -196,7 +195,7 @@ export declare class Actor<TLogic extends AnyActorLogic> implements ActorRef<Sna
196
195
  * @param logic - The actor logic to create an actor from. For a state machine actor logic creator, see {@link createMachine}. Other actor logic creators include {@link fromCallback}, {@link fromEventObservable}, {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.
197
196
  * @param options - Actor options
198
197
  */
199
- export declare function createActor<TLogic extends AnyActorLogic>(logic: TLogic extends AnyStateMachine ? AreAllImplementationsAssumedToBeProvided<TLogic['__TResolvedTypesMeta']> extends true ? TLogic : MissingImplementationsError<TLogic['__TResolvedTypesMeta']> : TLogic, options?: ActorOptions<TLogic>): Actor<TLogic>;
198
+ export declare function createActor<TLogic extends AnyActorLogic>(logic: TLogic, options?: ActorOptions<TLogic>): Actor<TLogic>;
200
199
  /**
201
200
  * Creates a new Interpreter instance for the given machine with the provided options, if any.
202
201
  *
@@ -9,7 +9,7 @@ export * from "./typegenTypes.js";
9
9
  export * from "./types.js";
10
10
  export { waitFor } from "./waitFor.js";
11
11
  import { createMachine } from "./createMachine.js";
12
- import { Actor, createActor, interpret, Interpreter } from "./interpreter.js";
12
+ import { Actor, createActor, interpret, Interpreter } from "./createActor.js";
13
13
  import { StateNode } from "./StateNode.js";
14
14
  export { and, not, or, stateIn } from "./guards.js";
15
15
  export { setup } from "./setup.js";
@@ -1,4 +1,4 @@
1
- import { Compute, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ParameterizedObject, ProvidedActor, OutputFrom, AnyActorLogic, IndexByProp } from "./types.js";
1
+ import { EventObject, IndexByType, IsNever, Prop, ParameterizedObject, ProvidedActor, OutputFrom, AnyActorLogic, IndexByProp } from "./types.js";
2
2
  export interface TypegenDisabled {
3
3
  '@@xstate/typegen': false;
4
4
  }
@@ -87,15 +87,10 @@ export interface ResolvedTypegenMeta extends TypegenMeta {
87
87
  };
88
88
  }
89
89
  export type TypegenConstraint = TypegenEnabled | TypegenDisabled;
90
- export type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
91
- [K in keyof TMissingImplementations]: TMissingImplementations[K];
92
- }>> extends true ? true : false : true;
93
- export type MissingImplementationsError<TResolvedTypesMeta, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<[
94
- 'Some implementations missing',
95
- Values<{
96
- [K in keyof TMissingImplementations]: TMissingImplementations[K];
97
- }>
98
- ]>;
90
+ /**
91
+ * @deprecated Always resolves to `true`
92
+ */
93
+ export type AreAllImplementationsAssumedToBeProvided<_TResolvedTypesMeta, _TMissingImplementations> = true;
99
94
  interface AllImplementationsProvided {
100
95
  missingImplementations: {
101
96
  actions: never;
@@ -104,10 +99,6 @@ interface AllImplementationsProvided {
104
99
  guards: never;
105
100
  };
106
101
  }
107
- export interface MarkAllImplementationsAsProvided<TResolvedTypesMeta> {
108
- '@@xstate/typegen': Prop<TResolvedTypesMeta, '@@xstate/typegen'>;
109
- resolved: Prop<TResolvedTypesMeta, 'resolved'> & AllImplementationsProvided;
110
- }
111
102
  type GenerateActorEvents<TActor extends ProvidedActor, TInvokeSrcNameMap> = string extends TActor['src'] ? never : TActor extends any ? {
112
103
  type: TActor['id'] extends string ? `xstate.done.actor.${TActor['id']}` : TActor['src'] extends keyof TInvokeSrcNameMap ? `xstate.done.actor.${TInvokeSrcNameMap[TActor['src']] & string}` : `xstate.done.actor.${string}`;
113
104
  output: OutputFrom<TActor['logic']>;
@@ -4,10 +4,10 @@ import type { StateNode } from "./StateNode.js";
4
4
  import { AssignArgs } from "./actions/assign.js";
5
5
  import { PromiseActorLogic } from "./actors/promise.js";
6
6
  import { Guard, GuardPredicate, UnknownGuard } from "./guards.js";
7
- import type { Actor } from "./interpreter.js";
7
+ import type { Actor } from "./createActor.js";
8
8
  import { Spawner } from "./spawn.js";
9
9
  import { AnyActorSystem, InspectionEvent, Clock } from './system.js';
10
- import { AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from "./typegenTypes.js";
10
+ import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from "./typegenTypes.js";
11
11
  export type Identity<T> = {
12
12
  [K in keyof T]: T[K];
13
13
  };
@@ -432,10 +432,12 @@ type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolve
432
432
  }>;
433
433
  export type InternalMachineImplementations<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = Compute<GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>>;
434
434
  export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, ResolveTypegenMeta<TTypesMeta, TEvent, TActor, TAction, TGuard, TDelay, TTag>>;
435
- type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = TContext | ContextFactory<TContext, TActor, TInput>;
436
- export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput> = ({ spawn, input }: {
435
+ type InitialContext<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject> = TContext | ContextFactory<TContext, TActor, TInput, TEvent>;
436
+ export type ContextFactory<TContext extends MachineContext, TActor extends ProvidedActor, TInput, TEvent extends EventObject = EventObject> = ({ spawn, input, self }: {
437
437
  spawn: Spawner<TActor>;
438
438
  input: TInput;
439
+ self: ActorRef<MachineSnapshot<TContext, TEvent, Record<string, AnyActorRef | undefined>, // TODO: this should be replaced with `TChildren`
440
+ StateValue, string, unknown>, TEvent>;
439
441
  }) => TContext;
440
442
  export type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TTypesMeta = TypegenDisabled> = (Omit<StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, NoInfer<TActor>, NoInfer<TAction>, NoInfer<TGuard>, NoInfer<TDelay>, NoInfer<TTag>, NoInfer<TOutput>>, 'output'> & {
441
443
  /**
@@ -448,9 +450,9 @@ export type MachineConfig<TContext extends MachineContext, TEvent extends EventO
448
450
  types?: MachineTypes<TContext, TEvent, TActor, TAction, TGuard, TDelay, TTag, TInput, TOutput, TTypesMeta>;
449
451
  output?: Mapper<TContext, DoneStateEvent, TOutput, TEvent> | TOutput;
450
452
  }) & (MachineContext extends TContext ? {
451
- context?: InitialContext<LowInfer<TContext>, TActor, TInput>;
453
+ context?: InitialContext<LowInfer<TContext>, TActor, TInput, TEvent>;
452
454
  } : {
453
- context: InitialContext<LowInfer<TContext>, TActor, TInput>;
455
+ context: InitialContext<LowInfer<TContext>, TActor, TInput, TEvent>;
454
456
  });
455
457
  export interface ProvidedActor {
456
458
  src: string;
@@ -752,13 +754,13 @@ export interface ActorRef<TSnapshot extends Snapshot<unknown>, TEvent extends Ev
752
754
  src: string | AnyActorLogic;
753
755
  }
754
756
  export type AnyActorRef = ActorRef<any, any>;
755
- export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
756
- export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer TResolvedTypesMeta> ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>, TEvent> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem> ? ActorRef<TSnapshot, TEvent> : never : never;
757
+ export type ActorLogicFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<any, any, any, any, any, any, any, any, any, any, any, any> ? R : R extends Promise<infer U> ? PromiseActorLogic<U> : never : never;
758
+ export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer _TResolvedTypesMeta> ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent> : R extends Promise<infer U> ? ActorRefFrom<PromiseActorLogic<U>> : R extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem> ? ActorRef<TSnapshot, TEvent> : never : never;
757
759
  export type DevToolsAdapter = (service: AnyActor) => void;
758
760
  /**
759
761
  * @deprecated Use `Actor<T>` instead.
760
762
  */
761
- export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer TInput, infer TOutput, infer TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TResolvedTypesMeta>, TEvent, TInput, AnyActorSystem>> : never;
763
+ export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer TStateValue, infer TTag, infer TInput, infer TOutput, infer _TResolvedTypesMeta> ? Actor<ActorLogic<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput>, TEvent, TInput, AnyActorSystem>> : never;
762
764
  export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TResolvedTypesMeta, TRequireMissingImplementations> : never;
763
765
  export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, // context
764
766
  any, // event
@@ -767,6 +769,7 @@ any, // actor
767
769
  any, // action
768
770
  any, // guard
769
771
  any, // delay
772
+ any, // state value
770
773
  any, // tag
771
774
  any, // input
772
775
  any, // output
@@ -856,9 +859,9 @@ any>;
856
859
  export type UnknownActorLogic = ActorLogic<any, any, never, AnyActorSystem>;
857
860
  export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer TSnapshot, infer _> ? TSnapshot : R extends Actor<infer TLogic> ? SnapshotFrom<TLogic> : R extends ActorLogic<infer _, infer __, infer ___, infer ____> ? ReturnType<R['transition']> : R extends ActorScope<infer TSnapshot, infer _, infer __> ? TSnapshot : never : never;
858
861
  export type EventFromLogic<TLogic extends ActorLogic<any, any, any, any>> = TLogic extends ActorLogic<infer _, infer TEvent, infer __, infer _____> ? TEvent : never;
859
- type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends MachineSnapshot<infer _TContext, infer TEvent, infer _TChildren, infer _TTag, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends ActorRef<infer _, infer TEvent> ? TEvent : never : never;
862
+ type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _TContext, infer TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TEvent : R extends MachineSnapshot<infer _TContext, infer TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput> ? TEvent : R extends ActorRef<infer _, infer TEvent> ? TEvent : never : never;
860
863
  export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
861
- export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : R extends MachineSnapshot<infer TContext, infer _TEvent, infer _TChildren, infer _TTag, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TTypesMeta> ? TContext : never : never : never;
864
+ export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TStateValue, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : R extends MachineSnapshot<infer TContext, infer _TEvent, infer _TChildren, infer _TStateValue, infer _TTag, infer _TOutput> ? TContext : R extends Actor<infer TActorLogic> ? TActorLogic extends StateMachine<infer TContext, infer _TEvent, infer _TChildren, infer _TActor, infer _TAction, infer _TGuard, infer _TDelay, infer _TTag, infer _TInput, infer _TOutput, infer _TResolvedTypesMeta> ? TContext : never : never : never;
862
865
  export type InferEvent<E extends EventObject> = {
863
866
  [T in E['type']]: {
864
867
  type: T;
@@ -1,4 +1,4 @@
1
- import { R as ProcessingStatus, y as resolveReferencedActor, z as createActor, T as cloneMachineSnapshot, U as XSTATE_ERROR, V as createErrorActorEvent, e as evaluateGuard, L as cancel, M as raise, O as spawnChild, Q as stopChild } from './raise-c8b9d708.development.esm.js';
1
+ import { R as ProcessingStatus, y as resolveReferencedActor, z as createActor, T as cloneMachineSnapshot, U as XSTATE_ERROR, V as createErrorActorEvent, e as evaluateGuard, L as cancel, M as raise, O as spawnChild, Q as stopChild } from './raise-057d17af.development.esm.js';
2
2
 
3
3
  // it's likely-ish that `(TActor & { src: TSrc })['logic']` would be faster
4
4
  // but it's only possible to do it since https://github.com/microsoft/TypeScript/pull/53098 (TS 5.1)
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var guards_dist_xstateGuards = require('./raise-4538b891.development.cjs.js');
3
+ var guards_dist_xstateGuards = require('./raise-3d3d6d51.development.cjs.js');
4
4
 
5
5
  // it's likely-ish that `(TActor & { src: TSrc })['logic']` would be faster
6
6
  // but it's only possible to do it since https://github.com/microsoft/TypeScript/pull/53098 (TS 5.1)
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var guards_dist_xstateGuards = require('./raise-c3bbdd3a.cjs.js');
3
+ var guards_dist_xstateGuards = require('./raise-5c58eb8e.cjs.js');
4
4
 
5
5
  // it's likely-ish that `(TActor & { src: TSrc })['logic']` would be faster
6
6
  // but it's only possible to do it since https://github.com/microsoft/TypeScript/pull/53098 (TS 5.1)
@@ -1,4 +1,4 @@
1
- import { R as ProcessingStatus, y as resolveReferencedActor, z as createActor, T as cloneMachineSnapshot, U as XSTATE_ERROR, V as createErrorActorEvent, e as evaluateGuard, L as cancel, M as raise, O as spawnChild, Q as stopChild } from './raise-7df513e7.esm.js';
1
+ import { R as ProcessingStatus, y as resolveReferencedActor, z as createActor, T as cloneMachineSnapshot, U as XSTATE_ERROR, V as createErrorActorEvent, e as evaluateGuard, L as cancel, M as raise, O as spawnChild, Q as stopChild } from './raise-3b380e4b.esm.js';
2
2
 
3
3
  // it's likely-ish that `(TActor & { src: TSrc })['logic']` would be faster
4
4
  // but it's only possible to do it since https://github.com/microsoft/TypeScript/pull/53098 (TS 5.1)
@@ -947,6 +947,9 @@ class Actor {
947
947
  * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).
948
948
  */
949
949
  getSnapshot() {
950
+ if (!this._snapshot) {
951
+ throw new Error(`Snapshot can't be read while the actor initializes itself`);
952
+ }
950
953
  return this._snapshot;
951
954
  }
952
955
  }
@@ -983,10 +986,8 @@ class Actor {
983
986
  * @param logic - The actor logic to create an actor from. For a state machine actor logic creator, see {@link createMachine}. Other actor logic creators include {@link fromCallback}, {@link fromEventObservable}, {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.
984
987
  * @param options - Actor options
985
988
  */
986
-
987
989
  function createActor(logic, options) {
988
- const interpreter = new Actor(logic, options);
989
- return interpreter;
990
+ return new Actor(logic, options);
990
991
  }
991
992
 
992
993
  /**
@@ -972,10 +972,8 @@ class Actor {
972
972
  * @param logic - The actor logic to create an actor from. For a state machine actor logic creator, see {@link createMachine}. Other actor logic creators include {@link fromCallback}, {@link fromEventObservable}, {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.
973
973
  * @param options - Actor options
974
974
  */
975
-
976
975
  function createActor(logic, options) {
977
- const interpreter = new Actor(logic, options);
978
- return interpreter;
976
+ return new Actor(logic, options);
979
977
  }
980
978
 
981
979
  /**
@@ -949,6 +949,9 @@ class Actor {
949
949
  * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).
950
950
  */
951
951
  getSnapshot() {
952
+ if (!this._snapshot) {
953
+ throw new Error(`Snapshot can't be read while the actor initializes itself`);
954
+ }
952
955
  return this._snapshot;
953
956
  }
954
957
  }
@@ -985,10 +988,8 @@ class Actor {
985
988
  * @param logic - The actor logic to create an actor from. For a state machine actor logic creator, see {@link createMachine}. Other actor logic creators include {@link fromCallback}, {@link fromEventObservable}, {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.
986
989
  * @param options - Actor options
987
990
  */
988
-
989
991
  function createActor(logic, options) {
990
- const interpreter = new Actor(logic, options);
991
- return interpreter;
992
+ return new Actor(logic, options);
992
993
  }
993
994
 
994
995
  /**
@@ -974,10 +974,8 @@ class Actor {
974
974
  * @param logic - The actor logic to create an actor from. For a state machine actor logic creator, see {@link createMachine}. Other actor logic creators include {@link fromCallback}, {@link fromEventObservable}, {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.
975
975
  * @param options - Actor options
976
976
  */
977
-
978
977
  function createActor(logic, options) {
979
- const interpreter = new Actor(logic, options);
980
- return interpreter;
978
+ return new Actor(logic, options);
981
979
  }
982
980
 
983
981
  /**
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var actors_dist_xstateActors = require('../actors/dist/xstate-actors.cjs.js');
6
- var guards_dist_xstateGuards = require('./raise-c3bbdd3a.cjs.js');
7
- var log = require('./log-a32b44b3.cjs.js');
6
+ var guards_dist_xstateGuards = require('./raise-5c58eb8e.cjs.js');
7
+ var log = require('./log-2580e864.cjs.js');
8
8
  require('../dev/dist/xstate-dev.cjs.js');
9
9
 
10
10
  class SimulatedClock {
@@ -395,7 +395,7 @@ class StateMachine {
395
395
  this.id = void 0;
396
396
  this.states = void 0;
397
397
  this.events = void 0;
398
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
398
+ /** @deprecated an internal property that was acting as a "phantom" type, it's not used by anything right now but it's kept around for compatibility reasons */
399
399
  this.__TResolvedTypesMeta = void 0;
400
400
  this.id = config.id || '(machine)';
401
401
  this.implementations = {
@@ -510,10 +510,12 @@ class StateMachine {
510
510
  if (typeof context === 'function') {
511
511
  const assignment = ({
512
512
  spawn,
513
- event
513
+ event,
514
+ self
514
515
  }) => context({
515
516
  spawn,
516
- input: event.input
517
+ input: event.input,
518
+ self
517
519
  });
518
520
  return guards_dist_xstateGuards.resolveActionsAndContext(preInitial, initEvent, actorScope, [log.assign(assignment)], internalQueue);
519
521
  }
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var actors_dist_xstateActors = require('../actors/dist/xstate-actors.development.cjs.js');
6
- var guards_dist_xstateGuards = require('./raise-4538b891.development.cjs.js');
7
- var log = require('./log-cb766272.development.cjs.js');
6
+ var guards_dist_xstateGuards = require('./raise-3d3d6d51.development.cjs.js');
7
+ var log = require('./log-18eb632d.development.cjs.js');
8
8
  require('../dev/dist/xstate-dev.development.cjs.js');
9
9
 
10
10
  class SimulatedClock {
@@ -395,7 +395,7 @@ class StateMachine {
395
395
  this.id = void 0;
396
396
  this.states = void 0;
397
397
  this.events = void 0;
398
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
398
+ /** @deprecated an internal property that was acting as a "phantom" type, it's not used by anything right now but it's kept around for compatibility reasons */
399
399
  this.__TResolvedTypesMeta = void 0;
400
400
  this.id = config.id || '(machine)';
401
401
  this.implementations = {
@@ -513,10 +513,12 @@ class StateMachine {
513
513
  if (typeof context === 'function') {
514
514
  const assignment = ({
515
515
  spawn,
516
- event
516
+ event,
517
+ self
517
518
  }) => context({
518
519
  spawn,
519
- input: event.input
520
+ input: event.input,
521
+ self
520
522
  });
521
523
  return guards_dist_xstateGuards.resolveActionsAndContext(preInitial, initEvent, actorScope, [log.assign(assignment)], internalQueue);
522
524
  }
@@ -1,8 +1,8 @@
1
1
  export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.development.esm.js';
2
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as isStateId, w as getStateNodeByPath, x as getPersistedSnapshot, y as resolveReferencedActor, z as createActor, $ as $$ACTOR_TYPE } from './raise-c8b9d708.development.esm.js';
3
- export { A as Actor, H as __unsafe_getAllOwnEventDescriptors, D as and, L as cancel, z as createActor, j as getStateNodes, B as interpret, C as isMachineSnapshot, I as matchesState, E as not, F as or, J as pathToStateValue, M as raise, O as spawnChild, G as stateIn, P as stop, Q as stopChild, K as toObserver } from './raise-c8b9d708.development.esm.js';
4
- import { a as assign } from './log-b852bac9.development.esm.js';
5
- export { S as SpecialTargets, a as assign, e as enqueueActions, f as forwardTo, l as log, s as sendParent, b as sendTo } from './log-b852bac9.development.esm.js';
2
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as isStateId, w as getStateNodeByPath, x as getPersistedSnapshot, y as resolveReferencedActor, z as createActor, $ as $$ACTOR_TYPE } from './raise-057d17af.development.esm.js';
3
+ export { A as Actor, H as __unsafe_getAllOwnEventDescriptors, D as and, L as cancel, z as createActor, j as getStateNodes, B as interpret, C as isMachineSnapshot, I as matchesState, E as not, F as or, J as pathToStateValue, M as raise, O as spawnChild, G as stateIn, P as stop, Q as stopChild, K as toObserver } from './raise-057d17af.development.esm.js';
4
+ import { a as assign } from './log-11038f00.development.esm.js';
5
+ export { S as SpecialTargets, a as assign, e as enqueueActions, f as forwardTo, l as log, s as sendParent, b as sendTo } from './log-11038f00.development.esm.js';
6
6
  import '../dev/dist/xstate-dev.development.esm.js';
7
7
 
8
8
  class SimulatedClock {
@@ -393,7 +393,7 @@ class StateMachine {
393
393
  this.id = void 0;
394
394
  this.states = void 0;
395
395
  this.events = void 0;
396
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
396
+ /** @deprecated an internal property that was acting as a "phantom" type, it's not used by anything right now but it's kept around for compatibility reasons */
397
397
  this.__TResolvedTypesMeta = void 0;
398
398
  this.id = config.id || '(machine)';
399
399
  this.implementations = {
@@ -511,10 +511,12 @@ class StateMachine {
511
511
  if (typeof context === 'function') {
512
512
  const assignment = ({
513
513
  spawn,
514
- event
514
+ event,
515
+ self
515
516
  }) => context({
516
517
  spawn,
517
- input: event.input
518
+ input: event.input,
519
+ self
518
520
  });
519
521
  return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue);
520
522
  }
@@ -1,8 +1,8 @@
1
1
  export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';
2
- import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as isStateId, w as getStateNodeByPath, x as getPersistedSnapshot, y as resolveReferencedActor, z as createActor, $ as $$ACTOR_TYPE } from './raise-7df513e7.esm.js';
3
- export { A as Actor, H as __unsafe_getAllOwnEventDescriptors, D as and, L as cancel, z as createActor, j as getStateNodes, B as interpret, C as isMachineSnapshot, I as matchesState, E as not, F as or, J as pathToStateValue, M as raise, O as spawnChild, G as stateIn, P as stop, Q as stopChild, K as toObserver } from './raise-7df513e7.esm.js';
4
- import { a as assign } from './log-e870aec8.esm.js';
5
- export { S as SpecialTargets, a as assign, e as enqueueActions, f as forwardTo, l as log, s as sendParent, b as sendTo } from './log-e870aec8.esm.js';
2
+ import { S as STATE_DELIMITER, m as mapValues, t as toArray, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as isStateId, w as getStateNodeByPath, x as getPersistedSnapshot, y as resolveReferencedActor, z as createActor, $ as $$ACTOR_TYPE } from './raise-3b380e4b.esm.js';
3
+ export { A as Actor, H as __unsafe_getAllOwnEventDescriptors, D as and, L as cancel, z as createActor, j as getStateNodes, B as interpret, C as isMachineSnapshot, I as matchesState, E as not, F as or, J as pathToStateValue, M as raise, O as spawnChild, G as stateIn, P as stop, Q as stopChild, K as toObserver } from './raise-3b380e4b.esm.js';
4
+ import { a as assign } from './log-88b333eb.esm.js';
5
+ export { S as SpecialTargets, a as assign, e as enqueueActions, f as forwardTo, l as log, s as sendParent, b as sendTo } from './log-88b333eb.esm.js';
6
6
  import '../dev/dist/xstate-dev.esm.js';
7
7
 
8
8
  class SimulatedClock {
@@ -393,7 +393,7 @@ class StateMachine {
393
393
  this.id = void 0;
394
394
  this.states = void 0;
395
395
  this.events = void 0;
396
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
396
+ /** @deprecated an internal property that was acting as a "phantom" type, it's not used by anything right now but it's kept around for compatibility reasons */
397
397
  this.__TResolvedTypesMeta = void 0;
398
398
  this.id = config.id || '(machine)';
399
399
  this.implementations = {
@@ -508,10 +508,12 @@ class StateMachine {
508
508
  if (typeof context === 'function') {
509
509
  const assignment = ({
510
510
  spawn,
511
- event
511
+ event,
512
+ self
512
513
  }) => context({
513
514
  spawn,
514
- input: event.input
515
+ input: event.input,
516
+ self
515
517
  });
516
518
  return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue);
517
519
  }