xstate 4.28.0 → 4.30.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.
- package/CHANGELOG.md +216 -91
- package/README.md +5 -5
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Actor.d.ts +1 -2
- package/es/Machine.d.ts +5 -4
- package/es/State.d.ts +17 -14
- package/es/State.js +4 -4
- package/es/StateNode.d.ts +22 -17
- package/es/StateNode.js +21 -25
- package/es/actions.d.ts +3 -4
- package/es/actions.js +8 -3
- package/es/behaviors.d.ts +1 -1
- package/es/devTools.d.ts +3 -4
- package/es/each.d.ts +1 -1
- package/es/index.d.ts +10 -22
- package/es/index.js +11 -23
- package/es/interpreter.d.ts +34 -27
- package/es/interpreter.js +7 -4
- package/es/model.d.ts +2 -2
- package/es/model.types.d.ts +8 -9
- package/es/schema.d.ts +1 -0
- package/es/schema.js +2 -1
- package/es/scxml.d.ts +2 -2
- package/es/stateUtils.d.ts +6 -5
- package/es/typegenTypes.d.ts +121 -0
- package/es/types.d.ts +122 -61
- package/es/utils.d.ts +4 -4
- package/es/utils.js +1 -1
- package/lib/Actor.d.ts +1 -2
- package/lib/Machine.d.ts +5 -4
- package/lib/State.d.ts +17 -14
- package/lib/State.js +4 -4
- package/lib/StateNode.d.ts +22 -17
- package/lib/StateNode.js +21 -25
- package/lib/actions.d.ts +3 -4
- package/lib/actions.js +5 -0
- package/lib/behaviors.d.ts +1 -1
- package/lib/devTools.d.ts +3 -4
- package/lib/each.d.ts +1 -1
- package/lib/index.d.ts +10 -22
- package/lib/index.js +15 -27
- package/lib/interpreter.d.ts +34 -27
- package/lib/interpreter.js +5 -2
- package/lib/model.d.ts +2 -2
- package/lib/model.types.d.ts +8 -9
- package/lib/schema.d.ts +1 -0
- package/lib/schema.js +2 -0
- package/lib/scxml.d.ts +2 -2
- package/lib/stateUtils.d.ts +6 -5
- package/lib/typegenTypes.d.ts +121 -0
- package/lib/typegenTypes.js +2 -0
- package/lib/types.d.ts +122 -61
- package/lib/utils.d.ts +4 -4
- package/lib/utils.js +1 -1
- package/package.json +5 -5
package/lib/interpreter.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription } from './types';
|
|
1
|
+
import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription, StateConfig } from './types';
|
|
2
2
|
import { State } from './State';
|
|
3
|
+
import { AreAllImplementationsAssumedToBeProvided, TypegenDisabled } from './typegenTypes';
|
|
3
4
|
export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
|
|
4
5
|
value: any;
|
|
5
6
|
context: TContext;
|
|
6
|
-
}> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
|
|
7
|
+
}, TResolvedTypesMeta = TypegenDisabled> = (state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, event: TEvent) => void;
|
|
7
8
|
export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
|
|
8
9
|
export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
|
|
9
10
|
export declare type Listener = () => void;
|
|
@@ -24,15 +25,21 @@ export declare enum InterpreterStatus {
|
|
|
24
25
|
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
|
|
25
26
|
value: any;
|
|
26
27
|
context: TContext;
|
|
27
|
-
}> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate>> {
|
|
28
|
-
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
|
|
28
|
+
}, TResolvedTypesMeta = TypegenDisabled> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>> {
|
|
29
|
+
machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta>;
|
|
29
30
|
/**
|
|
30
31
|
* The default interpreter options:
|
|
31
32
|
*
|
|
32
33
|
* - `clock` uses the global `setTimeout` and `clearTimeout` functions
|
|
33
34
|
* - `logger` uses the global `console.log()` method
|
|
34
35
|
*/
|
|
35
|
-
static defaultOptions:
|
|
36
|
+
static defaultOptions: {
|
|
37
|
+
execute: boolean;
|
|
38
|
+
deferEvents: boolean;
|
|
39
|
+
clock: Clock;
|
|
40
|
+
logger: any;
|
|
41
|
+
devTools: boolean;
|
|
42
|
+
};
|
|
36
43
|
/**
|
|
37
44
|
* The current state of the interpreted machine.
|
|
38
45
|
*/
|
|
@@ -72,9 +79,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
72
79
|
* @param machine The machine to be interpreted
|
|
73
80
|
* @param options Interpreter options
|
|
74
81
|
*/
|
|
75
|
-
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?:
|
|
76
|
-
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
77
|
-
get state(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
82
|
+
constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta>, options?: InterpreterOptions);
|
|
83
|
+
get initialState(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
84
|
+
get state(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
78
85
|
static interpret: typeof interpret;
|
|
79
86
|
/**
|
|
80
87
|
* Executes the actions of the given state, with that state's `context` and `event`.
|
|
@@ -82,56 +89,56 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
82
89
|
* @param state The state whose actions will be executed
|
|
83
90
|
* @param actionsConfig The action implementations to use
|
|
84
91
|
*/
|
|
85
|
-
execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
92
|
+
execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
86
93
|
private update;
|
|
87
|
-
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate>): this;
|
|
88
|
-
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
89
|
-
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate>>): Subscription;
|
|
94
|
+
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
|
|
95
|
+
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
96
|
+
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>): Subscription;
|
|
90
97
|
/**
|
|
91
98
|
* Adds an event listener that is notified whenever an event is sent to the running interpreter.
|
|
92
99
|
* @param listener The event listener
|
|
93
100
|
*/
|
|
94
|
-
onEvent(listener: EventListener):
|
|
101
|
+
onEvent(listener: EventListener): this;
|
|
95
102
|
/**
|
|
96
103
|
* Adds an event listener that is notified whenever a `send` event occurs.
|
|
97
104
|
* @param listener The event listener
|
|
98
105
|
*/
|
|
99
|
-
onSend(listener: EventListener):
|
|
106
|
+
onSend(listener: EventListener): this;
|
|
100
107
|
/**
|
|
101
108
|
* Adds a context listener that is notified whenever the state context changes.
|
|
102
109
|
* @param listener The context listener
|
|
103
110
|
*/
|
|
104
|
-
onChange(listener: ContextListener<TContext>):
|
|
111
|
+
onChange(listener: ContextListener<TContext>): this;
|
|
105
112
|
/**
|
|
106
113
|
* Adds a listener that is notified when the machine is stopped.
|
|
107
114
|
* @param listener The listener
|
|
108
115
|
*/
|
|
109
|
-
onStop(listener: Listener):
|
|
116
|
+
onStop(listener: Listener): this;
|
|
110
117
|
/**
|
|
111
118
|
* Adds a state listener that is notified when the statechart has reached its final state.
|
|
112
119
|
* @param listener The state listener
|
|
113
120
|
*/
|
|
114
|
-
onDone(listener: EventListener<DoneEvent>):
|
|
121
|
+
onDone(listener: EventListener<DoneEvent>): this;
|
|
115
122
|
/**
|
|
116
123
|
* Removes a listener.
|
|
117
124
|
* @param listener The listener to remove
|
|
118
125
|
*/
|
|
119
|
-
off(listener: (...args: any[]) => void):
|
|
126
|
+
off(listener: (...args: any[]) => void): this;
|
|
120
127
|
/**
|
|
121
128
|
* Alias for Interpreter.prototype.start
|
|
122
129
|
*/
|
|
123
|
-
init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate> |
|
|
130
|
+
init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateConfig<TContext, TEvent> | undefined) => this;
|
|
124
131
|
/**
|
|
125
132
|
* Starts the interpreter from the given state, or the initial state.
|
|
126
133
|
* @param initialState The state to start the statechart from
|
|
127
134
|
*/
|
|
128
|
-
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> |
|
|
135
|
+
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateConfig<TContext, TEvent> | StateValue): this;
|
|
129
136
|
/**
|
|
130
137
|
* Stops the interpreter and unsubscribe all listeners.
|
|
131
138
|
*
|
|
132
139
|
* This will also notify the `onStop` listeners.
|
|
133
140
|
*/
|
|
134
|
-
stop():
|
|
141
|
+
stop(): this;
|
|
135
142
|
/**
|
|
136
143
|
* Sends an event to the running interpreter to trigger a transition.
|
|
137
144
|
*
|
|
@@ -141,7 +148,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
141
148
|
*
|
|
142
149
|
* @param event The event(s) to send
|
|
143
150
|
*/
|
|
144
|
-
send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
151
|
+
send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
145
152
|
private batch;
|
|
146
153
|
/**
|
|
147
154
|
* Returns a send function bound to this interpreter instance.
|
|
@@ -157,7 +164,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
157
164
|
*
|
|
158
165
|
* @param event The event to determine the next state
|
|
159
166
|
*/
|
|
160
|
-
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
167
|
+
nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
161
168
|
private forward;
|
|
162
169
|
private defer;
|
|
163
170
|
private cancel;
|
|
@@ -181,11 +188,11 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
181
188
|
toJSON(): {
|
|
182
189
|
id: string;
|
|
183
190
|
};
|
|
184
|
-
[Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate>>;
|
|
185
|
-
getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
191
|
+
[Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
|
|
192
|
+
getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
186
193
|
}
|
|
187
194
|
export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
|
|
188
|
-
export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE>>;
|
|
195
|
+
export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE, any, any, any, any>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE, any, any, any, any>>;
|
|
189
196
|
export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnOptions): ActorRef<any>;
|
|
190
197
|
/**
|
|
191
198
|
* Creates a new Interpreter instance for the given machine with the provided options, if any.
|
|
@@ -196,6 +203,6 @@ export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnO
|
|
|
196
203
|
export declare function interpret<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
|
|
197
204
|
value: any;
|
|
198
205
|
context: TContext;
|
|
199
|
-
}>(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate
|
|
206
|
+
}, TResolvedTypesMeta = TypegenDisabled>(machine: AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends true ? StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, any, TResolvedTypesMeta> : 'Some implementations missing', options?: InterpreterOptions): Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta>;
|
|
200
207
|
export {};
|
|
201
208
|
//# sourceMappingURL=interpreter.d.ts.map
|
package/lib/interpreter.js
CHANGED
|
@@ -462,7 +462,7 @@ function () {
|
|
|
462
462
|
this.initialized = true;
|
|
463
463
|
this.status = exports.InterpreterStatus.Running;
|
|
464
464
|
var resolvedState = initialState === undefined ? this.initialState : serviceScope.provide(this, function () {
|
|
465
|
-
return State.
|
|
465
|
+
return State.isStateConfig(initialState) ? _this.machine.resolveState(initialState) : _this.machine.resolveState(State.State.from(initialState, _this.machine.context));
|
|
466
466
|
});
|
|
467
467
|
|
|
468
468
|
if (this.options.devTools) {
|
|
@@ -561,7 +561,9 @@ function () {
|
|
|
561
561
|
return this;
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
this.state.configuration.
|
|
564
|
+
_tslib.__spreadArray([], _tslib.__read(this.state.configuration), false).sort(function (a, b) {
|
|
565
|
+
return b.order - a.order;
|
|
566
|
+
}).forEach(function (stateNode) {
|
|
565
567
|
var e_11, _a;
|
|
566
568
|
|
|
567
569
|
try {
|
|
@@ -583,6 +585,7 @@ function () {
|
|
|
583
585
|
}
|
|
584
586
|
}); // Stop all children
|
|
585
587
|
|
|
588
|
+
|
|
586
589
|
this.children.forEach(function (child) {
|
|
587
590
|
if (utils.isFunction(child.stop)) {
|
|
588
591
|
child.stop();
|
package/lib/model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventObject, BaseActionObject } from './types';
|
|
2
|
-
import {
|
|
1
|
+
import type { Cast, EventObject, BaseActionObject, Prop, IsNever } from './types';
|
|
2
|
+
import { UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators } from './model.types';
|
|
3
3
|
export declare function createModel<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject>(initialContext: TContext): Model<TContext, TEvent, TAction, void>;
|
|
4
4
|
export declare function createModel<TContext, TModelCreators extends ModelCreators<TModelCreators>, TFinalModelCreators = FinalModelCreators<TModelCreators>, TComputedEvent = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'events'>>, TComputedAction = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'actions'>>>(initialContext: TContext, creators: TModelCreators): Model<TContext, Cast<TComputedEvent, EventObject>, IsNever<TComputedAction> extends true ? BaseActionObject : Cast<TComputedAction, BaseActionObject>, TFinalModelCreators>;
|
|
5
5
|
//# sourceMappingURL=model.d.ts.map
|
package/lib/model.types.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
4
|
-
export declare type Cast<T extends any, TCastType extends any> = T extends TCastType ? T : TCastType;
|
|
5
|
-
export declare type Compute<A extends any> = {
|
|
6
|
-
[K in keyof A]: A[K];
|
|
7
|
-
} & unknown;
|
|
8
|
-
export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
1
|
+
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, ExtractEvent, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions, ServiceMap } from './types';
|
|
2
|
+
import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
|
|
9
3
|
export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
|
|
10
4
|
initialContext: TContext;
|
|
11
5
|
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext, ExtractEvent<TEvent, TEventType>> | PropertyAssigner<TContext, ExtractEvent<TEvent, TEventType>>, eventType?: TEventType) => AssignAction<TContext, ExtractEvent<TEvent, TEventType>>;
|
|
12
6
|
events: Prop<TModelCreators, 'events'>;
|
|
13
7
|
actions: Prop<TModelCreators, 'actions'>;
|
|
14
8
|
reset: () => AssignAction<TContext, any>;
|
|
15
|
-
createMachine:
|
|
9
|
+
createMachine: {
|
|
10
|
+
<TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, any, TEvent, TAction, TServiceMap, TTypesMeta>, implementations?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>): StateMachine<TContext, any, TEvent, {
|
|
11
|
+
value: any;
|
|
12
|
+
context: TContext;
|
|
13
|
+
}, TAction, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
|
|
14
|
+
};
|
|
16
15
|
}
|
|
17
16
|
export declare type ModelContextFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<infer TContext, any, any, any> ? TContext : never;
|
|
18
17
|
export declare type ModelEventsFrom<TModel extends Model<any, any, any, any> | undefined> = TModel extends Model<any, infer TEvent, any, any> ? TEvent : EventObject;
|
package/lib/schema.d.ts
CHANGED
package/lib/schema.js
CHANGED
package/lib/scxml.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnyStateMachine } from './index';
|
|
2
2
|
export interface ScxmlToMachineOptions {
|
|
3
3
|
delimiter?: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function toMachine(xml: string, options: ScxmlToMachineOptions):
|
|
5
|
+
export declare function toMachine(xml: string, options: ScxmlToMachineOptions): AnyStateMachine;
|
|
6
6
|
//# sourceMappingURL=scxml.d.ts.map
|
package/lib/stateUtils.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { EventObject,
|
|
1
|
+
import { EventObject, StateValue } from './types';
|
|
2
|
+
import { StateNode } from './StateNode';
|
|
2
3
|
declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
|
|
3
4
|
declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
|
|
4
|
-
export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
|
|
5
|
+
export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any, any>) => boolean;
|
|
5
6
|
export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
|
|
6
|
-
export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
|
|
7
|
-
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
|
|
7
|
+
export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any, any, any>): Array<StateNode<TC, any, TE, any, any, any>>;
|
|
8
|
+
export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any, any, any>>): Set<StateNode<TC, any, TE, any, any, any>>;
|
|
8
9
|
export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
|
|
9
10
|
export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
|
|
10
11
|
export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
|
|
11
12
|
export declare function nextEvents<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE>>): Array<TE['type']>;
|
|
12
|
-
export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any>>, stateNode: StateNode<TC, any, TE, any>): boolean;
|
|
13
|
+
export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any, any, any>>, stateNode: StateNode<TC, any, TE, any, any, any>): boolean;
|
|
13
14
|
export declare function getMeta(configuration?: StateNode[]): Record<string, any>;
|
|
14
15
|
export declare function getTagsFromConfiguration(configuration: StateNode<any, any, any, any>[]): Set<string>;
|
|
15
16
|
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { BaseActionObject, EventObject, IndexByType, IsNever, Prop, Values, IsAny, ServiceMap, Cast } from './types';
|
|
2
|
+
export interface TypegenDisabled {
|
|
3
|
+
'@@xstate/typegen': false;
|
|
4
|
+
}
|
|
5
|
+
export interface TypegenEnabled {
|
|
6
|
+
'@@xstate/typegen': true;
|
|
7
|
+
}
|
|
8
|
+
export interface TypegenMeta extends TypegenEnabled {
|
|
9
|
+
/**
|
|
10
|
+
* Allows you to specify all the results of state.matches
|
|
11
|
+
*/
|
|
12
|
+
matchesStates: string | {};
|
|
13
|
+
/**
|
|
14
|
+
* Allows you to specify all tags used by the machine
|
|
15
|
+
*/
|
|
16
|
+
tags: string;
|
|
17
|
+
/**
|
|
18
|
+
* Allows you to specify all the missing implementations
|
|
19
|
+
* of the machine
|
|
20
|
+
*/
|
|
21
|
+
missingImplementations: {
|
|
22
|
+
actions: string;
|
|
23
|
+
delays: string;
|
|
24
|
+
guards: string;
|
|
25
|
+
services: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* A map for the internal events of the machine.
|
|
29
|
+
*
|
|
30
|
+
* key: 'done.invoke.myService'
|
|
31
|
+
* value: {
|
|
32
|
+
* type: 'done.invoke.myService';
|
|
33
|
+
* data: unknown;
|
|
34
|
+
* __tip: 'Declare the type in event types!';
|
|
35
|
+
* }
|
|
36
|
+
*/
|
|
37
|
+
internalEvents: {};
|
|
38
|
+
/**
|
|
39
|
+
* Maps the name of the service to the event type
|
|
40
|
+
* of the done.invoke action
|
|
41
|
+
*
|
|
42
|
+
* key: 'invokeSrc'
|
|
43
|
+
* value: 'done.invoke.invokeName'
|
|
44
|
+
*/
|
|
45
|
+
invokeSrcNameMap: Record<string, string>;
|
|
46
|
+
/**
|
|
47
|
+
* Keeps track of which events lead to which
|
|
48
|
+
* actions.
|
|
49
|
+
*
|
|
50
|
+
* Key: 'EVENT_NAME'
|
|
51
|
+
* Value: 'actionName' | 'otherActionName'
|
|
52
|
+
*/
|
|
53
|
+
eventsCausingActions: Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* Keeps track of which events lead to which
|
|
56
|
+
* delays.
|
|
57
|
+
*
|
|
58
|
+
* Key: 'EVENT_NAME'
|
|
59
|
+
* Value: 'delayName' | 'otherDelayName'
|
|
60
|
+
*/
|
|
61
|
+
eventsCausingDelays: Record<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* Keeps track of which events lead to which
|
|
64
|
+
* guards.
|
|
65
|
+
*
|
|
66
|
+
* Key: 'EVENT_NAME'
|
|
67
|
+
* Value: 'guardName' | 'otherGuardName'
|
|
68
|
+
*/
|
|
69
|
+
eventsCausingGuards: Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Keeps track of which events lead to which
|
|
72
|
+
* services.
|
|
73
|
+
*
|
|
74
|
+
* Key: 'EVENT_NAME'
|
|
75
|
+
* Value: 'serviceName' | 'otherServiceName'
|
|
76
|
+
*/
|
|
77
|
+
eventsCausingServices: Record<string, string>;
|
|
78
|
+
}
|
|
79
|
+
export interface ResolvedTypegenMeta extends TypegenMeta {
|
|
80
|
+
indexedActions: Record<string, BaseActionObject>;
|
|
81
|
+
indexedEvents: Record<string, EventObject>;
|
|
82
|
+
}
|
|
83
|
+
export declare type TypegenConstraint = TypegenEnabled | TypegenDisabled;
|
|
84
|
+
export declare type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = IsAny<TResolvedTypesMeta> extends true ? true : TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
|
|
85
|
+
[K in keyof TMissingImplementations]: TMissingImplementations[K];
|
|
86
|
+
}>> extends true ? true : false : true;
|
|
87
|
+
export declare type MarkAllImplementationsAsProvided<TResolvedTypesMeta> = TResolvedTypesMeta & {
|
|
88
|
+
missingImplementations: {
|
|
89
|
+
actions: never;
|
|
90
|
+
delays: never;
|
|
91
|
+
guards: never;
|
|
92
|
+
services: never;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
declare type GenerateServiceEvent<TServiceName, TEventType, TServiceMap extends ServiceMap> = TEventType extends any ? {
|
|
96
|
+
type: TEventType;
|
|
97
|
+
} & Prop<TServiceMap, TServiceName> : never;
|
|
98
|
+
declare type GenerateServiceEvents<TServiceMap extends ServiceMap, TInvokeSrcNameMap> = string extends keyof TServiceMap ? never : Cast<{
|
|
99
|
+
[K in keyof TInvokeSrcNameMap]: GenerateServiceEvent<K, TInvokeSrcNameMap[K], TServiceMap>;
|
|
100
|
+
}[keyof TInvokeSrcNameMap], EventObject>;
|
|
101
|
+
declare type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
|
|
102
|
+
declare type AllowAllEvents = {
|
|
103
|
+
eventsCausingActions: Record<string, string>;
|
|
104
|
+
eventsCausingDelays: Record<string, string>;
|
|
105
|
+
eventsCausingGuards: Record<string, string>;
|
|
106
|
+
eventsCausingServices: Record<string, string>;
|
|
107
|
+
};
|
|
108
|
+
export declare type ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TServiceMap extends ServiceMap> = TTypesMeta extends TypegenEnabled ? TTypesMeta & {
|
|
109
|
+
indexedActions: IndexByType<TAction>;
|
|
110
|
+
indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateServiceEvents<TServiceMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
|
|
111
|
+
} : MarkAllImplementationsAsProvided<TypegenDisabled> & AllowAllEvents & {
|
|
112
|
+
indexedActions: IndexByType<TAction>;
|
|
113
|
+
indexedEvents: Record<string, TEvent> & {
|
|
114
|
+
__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
|
|
115
|
+
data: any;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
|
|
119
|
+
};
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=typegenTypes.d.ts.map
|