xstate 5.0.0-beta.25 → 5.0.0-beta.26

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,6 +1,6 @@
1
1
  import type { StateNode } from "./StateNode.js";
2
2
  import { TypegenDisabled, TypegenEnabled } from "./typegenTypes.js";
3
- import type { ProvidedActor, ActorRefFrom, AnyState, AnyStateMachine, EventObject, HistoryValue, MachineContext, PersistedMachineState, Prop, StateConfig, StateValue, TODO, AnyActorRef, Compute } from "./types.js";
3
+ import type { ProvidedActor, ActorRefFrom, AnyState, AnyStateMachine, EventObject, HistoryValue, MachineContext, PersistedMachineState, Prop, StateConfig, StateValue, TODO, AnyActorRef, Compute, EventDescriptor } from "./types.js";
4
4
  type ComputeConcreteChildren<TActor extends ProvidedActor> = {
5
5
  [A in TActor as 'id' extends keyof A ? A['id'] & string : never]?: ActorRefFrom<A['logic']>;
6
6
  };
@@ -84,7 +84,7 @@ export declare class State<TContext extends MachineContext, TEvent extends Event
84
84
  /**
85
85
  * The next events that will cause a transition from the current state.
86
86
  */
87
- get nextEvents(): Array<string>;
87
+ get nextEvents(): Array<EventDescriptor<TEvent>>;
88
88
  get meta(): Record<string, any>;
89
89
  }
90
90
  export declare function cloneState<TState extends AnyState>(state: TState, config?: Partial<StateConfig<any, any>>): TState;
@@ -162,8 +162,11 @@ export type StatesDefinition<TContext extends MachineContext, TEvent extends Eve
162
162
  export type TransitionConfigTarget = string | undefined;
163
163
  export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TAction, TGuard, TDelay>>;
164
164
  export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = {
165
- [K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent, TEvent, TAction, TGuard, TDelay> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
165
+ [K in EventDescriptor<TEvent>]?: TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent, TAction, TGuard, TDelay>;
166
166
  };
167
+ type PartialEventDescriptor<TEventType extends string> = TEventType extends `${infer TLeading}.${infer TTail}` ? `${TLeading}.*` | `${TLeading}.${PartialEventDescriptor<TTail>}` : never;
168
+ export type EventDescriptor<TEvent extends EventObject> = TEvent['type'] | PartialEventDescriptor<TEvent['type']> | '*';
169
+ type NormalizeDescriptor<TDescriptor extends string> = TDescriptor extends '*' ? string : TDescriptor extends `${infer TLeading}.*` ? `${TLeading}.${string}` : TDescriptor;
167
170
  type IsLiteralString<T extends string> = string extends T ? false : true;
168
171
  type DistributeActors<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor, TAction extends ParameterizedObject, TGuard extends ParameterizedObject, TDelay extends string> = TActor extends {
169
172
  src: infer TSrc;
@@ -544,13 +547,13 @@ export interface TransitionDefinition<TContext extends MachineContext, TEvent ex
544
547
  actions: readonly UnknownAction[];
545
548
  reenter: boolean;
546
549
  guard?: UnknownGuard;
547
- eventType: TEvent['type'] | '*';
550
+ eventType: EventDescriptor<TEvent>;
548
551
  toJSON: () => {
549
552
  target: string[] | undefined;
550
553
  source: string;
551
554
  actions: readonly UnknownAction[];
552
555
  guard?: UnknownGuard;
553
- eventType: TEvent['type'] | '*';
556
+ eventType: EventDescriptor<TEvent>;
554
557
  meta?: Record<string, any>;
555
558
  };
556
559
  }
@@ -560,9 +563,7 @@ export interface InitialTransitionDefinition<TContext extends MachineContext, TE
560
563
  guard?: never;
561
564
  }
562
565
  export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
563
- [K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
564
- type: K;
565
- }> : EventObject>>;
566
+ [K in EventDescriptor<TEvent>]: Array<TransitionDefinition<TContext, ExtractEvent<TEvent, K>>>;
566
567
  };
567
568
  export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
568
569
  delay: number | string | DelayExpr<TContext, TEvent, undefined>;
@@ -650,7 +651,7 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
650
651
  subscribe(observer: Observer<T>): Subscription;
651
652
  subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
652
653
  }
653
- export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
654
+ export type ExtractEvent<TEvent extends EventObject, TDescriptor extends EventDescriptor<TEvent>> = string extends TEvent['type'] ? TEvent : NormalizeDescriptor<TDescriptor> extends infer TNormalizedDescriptor ? TEvent extends any ? TEvent['type'] extends TNormalizedDescriptor ? TEvent : never : never : never;
654
655
  export interface BaseActorRef<TEvent extends EventObject> {
655
656
  send: (event: TEvent) => void;
656
657
  }