xstate 5.0.0-alpha.0 → 5.0.0-alpha.2

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 (97) hide show
  1. package/README.md +26 -15
  2. package/actions/dist/xstate-actions.cjs.dev.js +24 -25
  3. package/actions/dist/xstate-actions.cjs.prod.js +23 -24
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  5. package/actions/dist/xstate-actions.umd.min.js +2 -0
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -0
  7. package/actions/dynamicAction.ts +15 -7
  8. package/actions/package.json +5 -1
  9. package/actors/dist/xstate-actors.cjs.d.ts +1 -1
  10. package/actors/dist/xstate-actors.cjs.dev.js +14 -14
  11. package/actors/dist/xstate-actors.cjs.prod.js +13 -13
  12. package/actors/dist/xstate-actors.esm.js +2 -2
  13. package/actors/dist/xstate-actors.umd.min.js +2 -0
  14. package/actors/dist/xstate-actors.umd.min.js.map +1 -0
  15. package/actors/package.json +5 -1
  16. package/dev/dist/xstate-dev.cjs.dev.js +1 -1
  17. package/dev/dist/xstate-dev.cjs.prod.js +0 -11
  18. package/dev/dist/xstate-dev.esm.js +1 -1
  19. package/dev/dist/xstate-dev.umd.min.js +2 -0
  20. package/dev/dist/xstate-dev.umd.min.js.map +1 -0
  21. package/dev/package.json +5 -1
  22. package/dist/{actions-6b86876d.cjs.dev.js → actions-1e9778c2.cjs.dev.js} +2819 -3334
  23. package/dist/actions-9778f6fb.esm.js +4246 -0
  24. package/dist/actions-acb29ffe.cjs.prod.js +4262 -0
  25. package/dist/declarations/actions/dynamicAction.d.ts +5 -3
  26. package/dist/declarations/src/Machine.d.ts +4 -4
  27. package/dist/declarations/src/Mailbox.d.ts +12 -12
  28. package/dist/declarations/src/SimulatedClock.d.ts +16 -16
  29. package/dist/declarations/src/State.d.ts +97 -104
  30. package/dist/declarations/src/StateMachine.d.ts +110 -112
  31. package/dist/declarations/src/StateNode.d.ts +127 -127
  32. package/dist/declarations/src/actionTypes.d.ts +16 -17
  33. package/dist/declarations/src/actions/assign.d.ts +7 -7
  34. package/dist/declarations/src/actions/cancel.d.ts +10 -10
  35. package/dist/declarations/src/actions/choose.d.ts +3 -3
  36. package/dist/declarations/src/actions/invoke.d.ts +3 -3
  37. package/dist/declarations/src/actions/log.d.ts +11 -11
  38. package/dist/declarations/src/actions/pure.d.ts +3 -3
  39. package/dist/declarations/src/actions/raise.d.ts +8 -9
  40. package/dist/declarations/src/actions/send.d.ts +53 -55
  41. package/dist/declarations/src/actions/stop.d.ts +7 -8
  42. package/dist/declarations/src/actions.d.ts +47 -44
  43. package/dist/declarations/src/actors/callback.d.ts +8 -0
  44. package/dist/declarations/src/actors/index.d.ts +27 -0
  45. package/dist/declarations/src/actors/observable.d.ts +23 -0
  46. package/dist/declarations/src/actors/promise.d.ts +12 -0
  47. package/dist/declarations/src/actors/transition.d.ts +13 -0
  48. package/dist/declarations/src/constants.d.ts +5 -5
  49. package/dist/declarations/src/dev/index.d.ts +14 -14
  50. package/dist/declarations/src/environment.d.ts +1 -1
  51. package/dist/declarations/src/guards.d.ts +8 -9
  52. package/dist/declarations/src/index.d.ts +44 -47
  53. package/dist/declarations/src/interpreter.d.ts +104 -147
  54. package/dist/declarations/src/mapState.d.ts +3 -3
  55. package/dist/declarations/src/memo.d.ts +2 -1
  56. package/dist/declarations/src/schema.d.ts +2 -2
  57. package/dist/declarations/src/spawn.d.ts +2 -2
  58. package/dist/declarations/src/stateUtils.d.ts +70 -85
  59. package/dist/declarations/src/symbolObservable.d.ts +1 -0
  60. package/dist/declarations/src/system.d.ts +2 -0
  61. package/dist/declarations/src/typegenTypes.d.ts +132 -132
  62. package/dist/declarations/src/types.d.ts +1008 -1026
  63. package/dist/declarations/src/utils.d.ts +58 -56
  64. package/dist/{index-20b364c4.esm.js → index-50bd0aff.esm.js} +0 -12
  65. package/dist/{index-2a564d03.cjs.dev.js → index-ebaab3c9.cjs.dev.js} +0 -12
  66. package/dist/xstate.cjs.dev.js +798 -100
  67. package/dist/xstate.cjs.prod.js +797 -99
  68. package/dist/xstate.esm.js +756 -55
  69. package/dist/xstate.umd.min.js +2 -0
  70. package/dist/xstate.umd.min.js.map +1 -0
  71. package/guards/dist/xstate-guards.cjs.dev.js +8 -8
  72. package/guards/dist/xstate-guards.cjs.prod.js +7 -7
  73. package/guards/dist/xstate-guards.esm.js +2 -2
  74. package/guards/dist/xstate-guards.umd.min.js +2 -0
  75. package/guards/dist/xstate-guards.umd.min.js.map +1 -0
  76. package/guards/package.json +5 -1
  77. package/package.json +28 -6
  78. package/CHANGELOG.md +0 -1986
  79. package/actions/ExecutableAction.ts +0 -58
  80. package/dist/Machine-9ce74c11.cjs.dev.js +0 -755
  81. package/dist/Machine-dca041dc.cjs.prod.js +0 -749
  82. package/dist/Machine-fb2f47f5.esm.js +0 -751
  83. package/dist/actions-70094c93.cjs.prod.js +0 -4765
  84. package/dist/actions-ff512f16.esm.js +0 -4757
  85. package/dist/declarations/actions/ExecutableAction.d.ts +0 -23
  86. package/dist/declarations/src/ObservableActorRef.d.ts +0 -25
  87. package/dist/declarations/src/actors.d.ts +0 -38
  88. package/dist/declarations/src/match.d.ts +0 -5
  89. package/dist/declarations/src/model.d.ts +0 -5
  90. package/dist/declarations/src/model.types.d.ts +0 -53
  91. package/dist/declarations/src/registry.d.ts +0 -8
  92. package/model/dist/xstate-model.cjs.d.ts +0 -1
  93. package/model/dist/xstate-model.cjs.dev.js +0 -41
  94. package/model/dist/xstate-model.cjs.js +0 -7
  95. package/model/dist/xstate-model.cjs.prod.js +0 -41
  96. package/model/dist/xstate-model.esm.js +0 -37
  97. package/model/package.json +0 -4
@@ -1,3 +1,5 @@
1
- import type { BaseActionObject, BaseDynamicActionObject, EventObject, MachineContext } from '../src/types';
2
- export declare function createDynamicAction<TContext extends MachineContext, TEvent extends EventObject, TAction extends BaseActionObject, TDynamicParams extends Record<string, any>>(type: `xstate.${string}`, params: TDynamicParams, resolve: BaseDynamicActionObject<TContext, TEvent, TAction, TDynamicParams>['resolve']): BaseDynamicActionObject<TContext, TEvent, TAction, TDynamicParams>;
3
- export declare function isDynamicAction(action: any): action is BaseDynamicActionObject<any, any, any, any>;
1
+ import type { BaseActionObject, BaseDynamicActionObject, BuiltInActionObject, EventObject, MachineContext } from '../src/types';
2
+ export declare function createDynamicAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends BaseActionObject, TDynamicParams extends Record<string, any>>(action: BuiltInActionObject & {
3
+ params: TDynamicParams;
4
+ }, resolve: BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, TAction, TDynamicParams>['resolve']): BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, TAction, TDynamicParams>;
5
+ export declare function isDynamicAction(action: any): action is BaseDynamicActionObject<any, any, any, any, any>;
@@ -1,4 +1,4 @@
1
- import { MachineConfig, EventObject, AnyEventObject, MachineContext, ActorMap, InternalMachineImplementations, BaseActionObject } from './types';
2
- import { TypegenConstraint, TypegenDisabled, ResolveTypegenMeta } from './typegenTypes';
3
- import { StateMachine } from './StateMachine';
4
- export declare function createMachine<TContext extends MachineContext, TEvent extends EventObject = AnyEventObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, TEvent, BaseActionObject, TActorMap, TTypesMeta>, implementations?: InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TActorMap>>): StateMachine<TContext, TEvent, BaseActionObject, TActorMap, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TActorMap>>;
1
+ import { MachineConfig, EventObject, AnyEventObject, MachineContext, ActorMap, InternalMachineImplementations, ParameterizedObject } from './types.js';
2
+ import { TypegenConstraint, TypegenDisabled, ResolveTypegenMeta } from './typegenTypes.js';
3
+ import { StateMachine } from './StateMachine.js';
4
+ export declare function createMachine<TContext extends MachineContext, TEvent extends EventObject = AnyEventObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, TEvent, ParameterizedObject, TActorMap, TTypesMeta>, implementations?: InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, ParameterizedObject, TActorMap>>): StateMachine<TContext, TEvent, ParameterizedObject, TActorMap, ResolveTypegenMeta<TTypesMeta, TEvent, ParameterizedObject, TActorMap>>;
@@ -1,12 +1,12 @@
1
- export declare class Mailbox<T> {
2
- private _process;
3
- private _active;
4
- private _current;
5
- private _last;
6
- constructor(_process: (ev: T) => void);
7
- start(): void;
8
- clear(): void;
9
- prepend(event: T): void;
10
- enqueue(event: T): void;
11
- private flush;
12
- }
1
+ export declare class Mailbox<T> {
2
+ private _process;
3
+ private _active;
4
+ private _current;
5
+ private _last;
6
+ constructor(_process: (ev: T) => void);
7
+ start(): void;
8
+ clear(): void;
9
+ prepend(event: T): void;
10
+ enqueue(event: T): void;
11
+ private flush;
12
+ }
@@ -1,16 +1,16 @@
1
- import { Clock } from './interpreter';
2
- export interface SimulatedClock extends Clock {
3
- start(speed: number): void;
4
- increment(ms: number): void;
5
- set(ms: number): void;
6
- }
7
- export declare class SimulatedClock implements SimulatedClock {
8
- private timeouts;
9
- private _now;
10
- private _id;
11
- now(): number;
12
- private getId;
13
- setTimeout(fn: (...args: any[]) => void, timeout: number): number;
14
- clearTimeout(id: number): void;
15
- private flushTimeouts;
16
- }
1
+ import { Clock } from './interpreter.js';
2
+ export interface SimulatedClock extends Clock {
3
+ start(speed: number): void;
4
+ increment(ms: number): void;
5
+ set(ms: number): void;
6
+ }
7
+ export declare class SimulatedClock implements SimulatedClock {
8
+ private timeouts;
9
+ private _now;
10
+ private _id;
11
+ now(): number;
12
+ private getId;
13
+ setTimeout(fn: (...args: any[]) => void, timeout: number): number;
14
+ clearTimeout(id: number): void;
15
+ private flushTimeouts;
16
+ }
@@ -1,104 +1,97 @@
1
- import type { StateMachine } from './StateMachine';
2
- import type { StateNode } from './StateNode';
3
- import { TypegenDisabled, TypegenEnabled } from './typegenTypes';
4
- import type { ActorRef, BaseActionObject, EventObject, HistoryValue, MachineContext, Prop, SCXML, SimpleEventsOf, StateConfig, StateValue, TransitionDefinition } from './types';
5
- export declare function isStateConfig<TContext extends MachineContext, TEvent extends EventObject>(state: any): state is StateConfig<TContext, TEvent>;
6
- /**
7
- * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.
8
- */
9
- export declare const isState: typeof isStateConfig;
10
- export declare class State<TContext extends MachineContext, TEvent extends EventObject = EventObject, TResolvedTypesMeta = TypegenDisabled> {
11
- value: StateValue;
12
- context: TContext;
13
- historyValue: HistoryValue<TContext, TEvent>;
14
- actions: BaseActionObject[];
15
- meta: any;
16
- event: TEvent;
17
- _internalQueue: Array<SCXML.Event<TEvent>>;
18
- _event: SCXML.Event<TEvent>;
19
- _sessionid: string | null;
20
- _initial: boolean;
21
- /**
22
- * Indicates whether the state has changed from the previous state. A state is considered "changed" if:
23
- *
24
- * - Its value is not equal to its previous value, or:
25
- * - It has any new actions (side-effects) to execute.
26
- *
27
- * An initial state (with no history) will return `undefined`.
28
- */
29
- changed: boolean | undefined;
30
- /**
31
- * The enabled state nodes representative of the state value.
32
- */
33
- configuration: Array<StateNode<TContext, TEvent>>;
34
- /**
35
- * The transition definitions that resulted in this state.
36
- */
37
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
38
- /**
39
- * An object mapping actor names to spawned/invoked actors.
40
- */
41
- children: Record<string, ActorRef<any>>;
42
- tags: Set<string>;
43
- machine: StateMachine<TContext, TEvent, BaseActionObject, any, TResolvedTypesMeta> | undefined;
44
- /**
45
- * Creates a new State instance for the given `stateValue` and `context`.
46
- * @param stateValue
47
- * @param context
48
- */
49
- static from<TContext extends MachineContext, TEvent extends EventObject = EventObject>(stateValue: State<TContext, TEvent, any> | StateValue, context?: TContext): State<TContext, TEvent, any>;
50
- /**
51
- * Creates a new State instance for the given `config`.
52
- * @param config The state config
53
- */
54
- static create<TC extends MachineContext, TE extends EventObject = EventObject>(config: StateConfig<TC, TE>): State<TC, TE, any>;
55
- /**
56
- * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).
57
- * @param stateValue
58
- * @param context
59
- */
60
- static inert<TState extends State<any, any, any>>(state: TState): TState;
61
- static inert<TContext extends MachineContext, TEvent extends EventObject = EventObject>(stateValue: StateValue, context: TContext): State<TContext, TEvent>;
62
- /**
63
- * Creates a new `State` instance that represents the current state of a running machine.
64
- *
65
- * @param config
66
- */
67
- constructor(config: StateConfig<TContext, TEvent>);
68
- /**
69
- * Returns an array of all the string leaf state node paths.
70
- * @param stateValue
71
- * @param delimiter The character(s) that separate each subpath in the string state node path.
72
- */
73
- toStrings(stateValue?: StateValue, delimiter?: string): string[];
74
- toJSON(): Omit<this, "toJSON" | "configuration" | "transitions" | "tags" | "machine" | "toStrings" | "matches" | "done" | "hasTag" | "can" | "nextEvents"> & {
75
- tags: string[];
76
- };
77
- /**
78
- * Whether the current state value is a subset of the given parent state value.
79
- * @param parentStateValue
80
- */
81
- matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'matchesStates'> : StateValue>(parentStateValue: TSV): boolean;
82
- /**
83
- * Indicates whether the state is a final state.
84
- */
85
- get done(): boolean;
86
- /**
87
- * Whether the current state configuration has a state node with the specified `tag`.
88
- * @param tag
89
- */
90
- hasTag(tag: TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'tags'> : string): boolean;
91
- /**
92
- * Determines whether sending the `event` will cause a non-forbidden transition
93
- * to be selected, even if the transitions have no actions nor
94
- * change the state value.
95
- *
96
- * @param event The event to test
97
- * @returns Whether the event will cause a transition
98
- */
99
- can(event: TEvent | SimpleEventsOf<TEvent>['type']): boolean;
100
- /**
101
- * The next events that will cause a transition from the current state.
102
- */
103
- get nextEvents(): Array<TEvent['type']>;
104
- }
1
+ import type { StateNode } from './StateNode.js';
2
+ import { TypegenDisabled, TypegenEnabled } from './typegenTypes.js';
3
+ import type { ActorRef, AnyState, AnyStateMachine, BaseActionObject, EventObject, HistoryValue, MachineContext, PersistedMachineState, Prop, SCXML, StateConfig, StateValue, TransitionDefinition } from './types.js';
4
+ export declare function isStateConfig<TContext extends MachineContext, TEvent extends EventObject>(state: any): state is StateConfig<TContext, TEvent>;
5
+ /**
6
+ * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.
7
+ */
8
+ export declare const isState: typeof isStateConfig;
9
+ export declare class State<TContext extends MachineContext, TEvent extends EventObject = EventObject, TResolvedTypesMeta = TypegenDisabled> {
10
+ machine: AnyStateMachine;
11
+ tags: Set<string>;
12
+ value: StateValue;
13
+ /**
14
+ * Indicates whether the state is a final state.
15
+ */
16
+ done: boolean;
17
+ /**
18
+ * The done data of the top-level finite state.
19
+ */
20
+ output: any;
21
+ context: TContext;
22
+ historyValue: Readonly<HistoryValue<TContext, TEvent>>;
23
+ actions: BaseActionObject[];
24
+ event: TEvent;
25
+ _internalQueue: Array<SCXML.Event<TEvent>>;
26
+ _event: SCXML.Event<TEvent>;
27
+ _initial: boolean;
28
+ /**
29
+ * Indicates whether the state has changed from the previous state. A state is considered "changed" if:
30
+ *
31
+ * - Its value is not equal to its previous value, or:
32
+ * - It has any new actions (side-effects) to execute.
33
+ *
34
+ * An initial state (with no history) will return `undefined`.
35
+ */
36
+ changed: boolean | undefined;
37
+ /**
38
+ * The enabled state nodes representative of the state value.
39
+ */
40
+ configuration: Array<StateNode<TContext, TEvent>>;
41
+ /**
42
+ * The transition definitions that resulted in this state.
43
+ */
44
+ transitions: Array<TransitionDefinition<TContext, TEvent>>;
45
+ /**
46
+ * An object mapping actor names to spawned/invoked actors.
47
+ */
48
+ children: Record<string, ActorRef<any>>;
49
+ /**
50
+ * Creates a new State instance for the given `stateValue` and `context`.
51
+ * @param stateValue
52
+ * @param context
53
+ */
54
+ static from<TContext extends MachineContext, TEvent extends EventObject = EventObject>(stateValue: State<TContext, TEvent, any> | StateValue, context: TContext | undefined, machine: AnyStateMachine): State<TContext, TEvent, any>;
55
+ /**
56
+ * Creates a new `State` instance that represents the current state of a running machine.
57
+ *
58
+ * @param config
59
+ */
60
+ constructor(config: StateConfig<TContext, TEvent>, machine: AnyStateMachine);
61
+ /**
62
+ * Returns an array of all the string leaf state node paths.
63
+ * @param stateValue
64
+ * @param delimiter The character(s) that separate each subpath in the string state node path.
65
+ */
66
+ toStrings(stateValue?: StateValue, delimiter?: string): string[];
67
+ toJSON(): Omit<this, "meta" | "toJSON" | "configuration" | "transitions" | "tags" | "machine" | "toStrings" | "matches" | "hasTag" | "can" | "nextEvents"> & {
68
+ tags: string[];
69
+ meta: Record<string, any>;
70
+ };
71
+ /**
72
+ * Whether the current state value is a subset of the given parent state value.
73
+ * @param parentStateValue
74
+ */
75
+ matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'matchesStates'> : StateValue>(parentStateValue: TSV): boolean;
76
+ /**
77
+ * Whether the current state configuration has a state node with the specified `tag`.
78
+ * @param tag
79
+ */
80
+ hasTag(tag: TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'tags'> : string): boolean;
81
+ /**
82
+ * Determines whether sending the `event` will cause a non-forbidden transition
83
+ * to be selected, even if the transitions have no actions nor
84
+ * change the state value.
85
+ *
86
+ * @param event The event to test
87
+ * @returns Whether the event will cause a transition
88
+ */
89
+ can(event: TEvent): boolean;
90
+ /**
91
+ * The next events that will cause a transition from the current state.
92
+ */
93
+ get nextEvents(): Array<TEvent['type']>;
94
+ get meta(): Record<string, any>;
95
+ }
96
+ export declare function cloneState<TState extends AnyState>(state: TState, config?: Partial<StateConfig<any, any>>): TState;
97
+ export declare function getPersistedState<TState extends AnyState>(state: TState): PersistedMachineState<TState>;
@@ -1,112 +1,110 @@
1
- import { StateFrom } from '.';
2
- import { State } from './State';
3
- import { StateNode } from './StateNode';
4
- import type { AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, ResolveTypegenMeta, TypegenDisabled } from './typegenTypes';
5
- import type { ActorMap, BaseActionObject, Event, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, MachineSchema, MaybeLazy, NoInfer, SCXML, StateConfig, StateNodeDefinition, StateValue, Transitions } from './types';
6
- export declare const NULL_EVENT = "";
7
- export declare const STATE_IDENTIFIER = "#";
8
- export declare const WILDCARD = "*";
9
- export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject = EventObject, TAction extends BaseActionObject = BaseActionObject, TActorMap extends ActorMap = ActorMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TAction, TActorMap>> {
10
- /**
11
- * The raw config used to create the machine.
12
- */
13
- config: MachineConfig<TContext, TEvent, any, any, any>;
14
- private _contextFactory;
15
- get context(): TContext;
16
- private getContextAndActions;
17
- /**
18
- * The machine's own version.
19
- */
20
- version?: string;
21
- strict: boolean;
22
- /**
23
- * The string delimiter for serializing the path to a string. The default is "."
24
- */
25
- delimiter: string;
26
- options: MachineImplementationsSimplified<TContext, TEvent>;
27
- schema: MachineSchema<TContext, TEvent>;
28
- __xstatenode: true;
29
- idMap: Map<string, StateNode<TContext, TEvent>>;
30
- root: StateNode<TContext, TEvent>;
31
- key: string;
32
- states: StateNode<TContext, TEvent>['states'];
33
- events: Array<TEvent['type']>;
34
- constructor(
35
- /**
36
- * The raw config used to create the machine.
37
- */
38
- config: MachineConfig<TContext, TEvent, any, any, any>, options?: MachineImplementationsSimplified<TContext, TEvent>);
39
- /**
40
- * Clones this state machine with the provided implementations
41
- * and merges the `context` (if provided).
42
- *
43
- * @param implementations Options (`actions`, `guards`, `actors`, `delays`, `context`)
44
- * to recursively merge with the existing options.
45
- *
46
- * @returns A new `StateMachine` instance with the provided implementations.
47
- */
48
- provide(implementations: InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, true> & {
49
- context?: MaybeLazy<Partial<TContext>>;
50
- }): StateMachine<TContext, TEvent, TAction, TActorMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
51
- /**
52
- * Clones this state machine with custom `context`.
53
- *
54
- * The `context` provided can be partial `context`, which will be combined with the original `context`.
55
- *
56
- * @param context Custom context (will override predefined context, not recursive)
57
- */
58
- withContext(context: Partial<TContext>): this;
59
- /**
60
- * Resolves the given `state` to a new `State` instance relative to this machine.
61
- *
62
- * This ensures that `.nextEvents` represent the correct values.
63
- *
64
- * @param state The state to resolve
65
- */
66
- resolveState(state: State<TContext, TEvent, TResolvedTypesMeta>): typeof state;
67
- /**
68
- * Determines the next state given the current `state` and received `event`.
69
- * Calculates a full macrostep from all microsteps.
70
- *
71
- * @param state The current State instance or state value
72
- * @param event The received event
73
- */
74
- transition(state: StateValue | State<TContext, TEvent, TResolvedTypesMeta> | undefined, event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TResolvedTypesMeta>;
75
- /**
76
- * Determines the next state given the current `state` and `event`.
77
- * Calculates a microstep.
78
- *
79
- * @param state The current state
80
- * @param event The received event
81
- */
82
- microstep(state: StateValue | State<TContext, TEvent, TResolvedTypesMeta> | undefined, event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TResolvedTypesMeta>;
83
- getTransitionData(state: State<TContext, TEvent, TResolvedTypesMeta>, _event: SCXML.Event<TEvent>): Transitions<TContext, TEvent>;
84
- /**
85
- * The initial state _before_ evaluating any microsteps.
86
- * This "pre-initial" state is provided to initial actions executed in the initial state.
87
- */
88
- private get preInitialState();
89
- /**
90
- * The initial State instance, which includes all actions to be executed from
91
- * entering the initial state.
92
- */
93
- get initialState(): State<TContext, TEvent, TResolvedTypesMeta>;
94
- /**
95
- * Returns the initial `State` instance, with reference to `self` as an `ActorRef`.
96
- */
97
- getInitialState(): StateFrom<typeof this>;
98
- getStateNodeById(stateId: string): StateNode<TContext, TEvent>;
99
- get definition(): StateNodeDefinition<TContext, TEvent>;
100
- toJSON(): StateNodeDefinition<TContext, TEvent>;
101
- createState(stateConfig: State<TContext, TEvent, TResolvedTypesMeta> | StateConfig<TContext, TEvent>): State<TContext, TEvent, TResolvedTypesMeta>;
102
- /**@deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
103
- __TContext: TContext;
104
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
105
- __TEvent: TEvent;
106
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
107
- __TAction: TAction;
108
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
109
- __TActorMap: TActorMap;
110
- /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
111
- __TResolvedTypesMeta: TResolvedTypesMeta;
112
- }
1
+ import { State } from './State.js';
2
+ import { StateNode } from './StateNode.js';
3
+ import type { AreAllImplementationsAssumedToBeProvided, MarkAllImplementationsAsProvided, ResolveTypegenMeta, TypegenDisabled } from './typegenTypes.js';
4
+ import type { ActorContext, ActorMap, ActorBehavior, EventObject, InternalMachineImplementations, MachineConfig, MachineContext, MachineImplementationsSimplified, MachineSchema, NoInfer, SCXML, StateConfig, StateMachineDefinition, StateValue, TransitionDefinition, AnyActorContext, PersistedMachineState, ParameterizedObject } from './types.js';
5
+ export declare const NULL_EVENT = "";
6
+ export declare const STATE_IDENTIFIER = "#";
7
+ export declare const WILDCARD = "*";
8
+ export declare class StateMachine<TContext extends MachineContext, TEvent extends EventObject = EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TResolvedTypesMeta = ResolveTypegenMeta<TypegenDisabled, NoInfer<TEvent>, TAction, TActorMap>> implements ActorBehavior<TEvent | SCXML.Event<TEvent>, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>> {
9
+ /**
10
+ * The raw config used to create the machine.
11
+ */
12
+ config: MachineConfig<TContext, TEvent, any, any, any>;
13
+ getContext(input?: any): TContext;
14
+ private getContextAndActions;
15
+ /**
16
+ * The machine's own version.
17
+ */
18
+ version?: string;
19
+ /**
20
+ * The string delimiter for serializing the path to a string. The default is "."
21
+ */
22
+ delimiter: string;
23
+ options: MachineImplementationsSimplified<TContext, TEvent>;
24
+ schema: MachineSchema<TContext, TEvent>;
25
+ __xstatenode: true;
26
+ idMap: Map<string, StateNode<TContext, TEvent>>;
27
+ root: StateNode<TContext, TEvent>;
28
+ id: string;
29
+ states: StateNode<TContext, TEvent>['states'];
30
+ events: Array<TEvent['type']>;
31
+ constructor(
32
+ /**
33
+ * The raw config used to create the machine.
34
+ */
35
+ config: MachineConfig<TContext, TEvent, any, any, any>, options?: MachineImplementationsSimplified<TContext, TEvent>);
36
+ /**
37
+ * Clones this state machine with the provided implementations
38
+ * and merges the `context` (if provided).
39
+ *
40
+ * @param implementations Options (`actions`, `guards`, `actors`, `delays`, `context`)
41
+ * to recursively merge with the existing options.
42
+ *
43
+ * @returns A new `StateMachine` instance with the provided implementations.
44
+ */
45
+ provide(implementations: InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, true>): StateMachine<TContext, TEvent, TAction, TActorMap, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>;
46
+ /**
47
+ * Resolves the given `state` to a new `State` instance relative to this machine.
48
+ *
49
+ * This ensures that `.nextEvents` represent the correct values.
50
+ *
51
+ * @param state The state to resolve
52
+ */
53
+ resolveState(state: State<TContext, TEvent, TResolvedTypesMeta>): typeof state;
54
+ resolveStateValue(stateValue: StateValue): State<TContext, TEvent, TResolvedTypesMeta>;
55
+ /**
56
+ * Determines the next state given the current `state` and received `event`.
57
+ * Calculates a full macrostep from all microsteps.
58
+ *
59
+ * @param state The current State instance or state value
60
+ * @param event The received event
61
+ */
62
+ transition(state: StateValue | State<TContext, TEvent, TResolvedTypesMeta> | undefined, event: TEvent | SCXML.Event<TEvent>, actorCtx?: ActorContext<TEvent, State<TContext, TEvent, any>>): State<TContext, TEvent, TResolvedTypesMeta>;
63
+ /**
64
+ * Determines the next state given the current `state` and `event`.
65
+ * Calculates a microstep.
66
+ *
67
+ * @param state The current state
68
+ * @param event The received event
69
+ */
70
+ microstep(state: State<TContext, TEvent, TResolvedTypesMeta> | undefined, event: TEvent | SCXML.Event<TEvent>, actorCtx?: AnyActorContext | undefined): Array<State<TContext, TEvent, TResolvedTypesMeta>>;
71
+ getTransitionData(state: State<TContext, TEvent, TResolvedTypesMeta>, _event: SCXML.Event<TEvent>): Array<TransitionDefinition<TContext, TEvent>>;
72
+ /**
73
+ * The initial state _before_ evaluating any microsteps.
74
+ * This "pre-initial" state is provided to initial actions executed in the initial state.
75
+ */
76
+ private getPreInitialState;
77
+ /**
78
+ * The initial State instance, which includes all actions to be executed from
79
+ * entering the initial state.
80
+ */
81
+ get initialState(): State<TContext, TEvent, TResolvedTypesMeta>;
82
+ /**
83
+ * Returns the initial `State` instance, with reference to `self` as an `ActorRef`.
84
+ */
85
+ getInitialState(actorCtx?: ActorContext<TEvent, State<TContext, TEvent, TResolvedTypesMeta>>, input?: any): State<TContext, TEvent, TResolvedTypesMeta>;
86
+ start(state: State<TContext, TEvent, TResolvedTypesMeta>, actorCtx: ActorContext<TEvent, State<TContext, TEvent, TResolvedTypesMeta>>): void;
87
+ getStateNodeById(stateId: string): StateNode<TContext, TEvent>;
88
+ get definition(): StateMachineDefinition<TContext, TEvent>;
89
+ toJSON(): StateMachineDefinition<TContext, TEvent>;
90
+ getPersistedState(state: State<TContext, TEvent, TResolvedTypesMeta>): PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>;
91
+ createState(stateConfig: State<TContext, TEvent, TResolvedTypesMeta> | StateConfig<TContext, TEvent>): State<TContext, TEvent, TResolvedTypesMeta>;
92
+ getStatus(state: State<TContext, TEvent, TResolvedTypesMeta>): {
93
+ status: string;
94
+ data: any;
95
+ } | {
96
+ status: string;
97
+ data?: undefined;
98
+ };
99
+ restoreState(state: PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>, _actorCtx: ActorContext<TEvent, State<TContext, TEvent, TResolvedTypesMeta>>): State<TContext, TEvent, TResolvedTypesMeta>;
100
+ /**@deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
101
+ __TContext: TContext;
102
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
103
+ __TEvent: TEvent;
104
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
105
+ __TAction: TAction;
106
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
107
+ __TActorMap: TActorMap;
108
+ /** @deprecated an internal property acting as a "phantom" type, not meant to be used at runtime */
109
+ __TResolvedTypesMeta: TResolvedTypesMeta;
110
+ }