xstate 4.31.0 → 4.32.0
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 +37 -0
- package/es/State.d.ts +1 -1
- package/es/actions.d.ts +2 -2
- package/es/model.types.d.ts +6 -2
- package/es/typegenTypes.d.ts +13 -10
- package/es/types.d.ts +11 -17
- package/es/waitFor.js +6 -1
- package/lib/State.d.ts +1 -1
- package/lib/actions.d.ts +2 -2
- package/lib/model.types.d.ts +6 -2
- package/lib/typegenTypes.d.ts +13 -10
- package/lib/types.d.ts +11 -17
- package/lib/waitFor.js +6 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# xstate
|
|
2
2
|
|
|
3
|
+
## 4.32.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#3234](https://github.com/statelyai/xstate/pull/3234) [`ce376b388`](https://github.com/statelyai/xstate/commit/ce376b3889ea900e67d20026517b87185377c32e) Thanks [@Andarist](https://github.com/Andarist)! - Added a `StateValueFrom` helper that can be used to extract valid state values from a machine. This might specifically be useful with typegen because typegenless `state.matches` accepts `any` anyway.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#3215](https://github.com/statelyai/xstate/pull/3215) [`44c66e74f`](https://github.com/statelyai/xstate/commit/44c66e74f9eafbb326979234e2bbe51e38dc3a86) Thanks [@tom-sherman](https://github.com/tom-sherman)! - Removing the timeout that's built in to `waitFor` is now supported by explicitly passing an `Infinity` value.
|
|
12
|
+
|
|
13
|
+
Example usage:
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import { waitFor } from 'xstate/lib/waitFor';
|
|
17
|
+
|
|
18
|
+
// This will
|
|
19
|
+
const loggedInState = await waitFor(
|
|
20
|
+
loginService,
|
|
21
|
+
state => state.hasTag('loggedIn'),
|
|
22
|
+
{ timeout: Infinity }
|
|
23
|
+
);
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This fixes a bug that causes `waitFor` to reject with an error immediately due to the behaviour of `setTimeout`.
|
|
27
|
+
|
|
28
|
+
* [#3230](https://github.com/statelyai/xstate/pull/3230) [`780458c92`](https://github.com/statelyai/xstate/commit/780458c921d4525c7a00119c7eb43d4833978861) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with typegen types not being able to provide events that had a union of strings as their `type` (such as `{ type: 'INC' | 'DEC'; value: number; }`).
|
|
29
|
+
|
|
30
|
+
- [#3252](https://github.com/statelyai/xstate/pull/3252) [`a94dfd467`](https://github.com/statelyai/xstate/commit/a94dfd46772cacc59154c165f27122164f48625b) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with `EventFrom` not being able to extract events that had a union of strings as their `type` (such as `{ type: 'INC' | 'DEC'; value: number; }`).
|
|
31
|
+
|
|
32
|
+
* [#3090](https://github.com/statelyai/xstate/pull/3090) [`c4f73ca13`](https://github.com/statelyai/xstate/commit/c4f73ca1356d106423c8b4ee34865f7e4f2d2bb6) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with action objects not receiving correct event types when used in the second argument to the `createMachine`.
|
|
33
|
+
|
|
34
|
+
- [#3238](https://github.com/statelyai/xstate/pull/3238) [`3df6335ef`](https://github.com/statelyai/xstate/commit/3df6335ef8db4edcf0a47d4c559716552ce4bbe8) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The typings for `sendTo(...)` have been fixed.
|
|
35
|
+
|
|
36
|
+
* [#3228](https://github.com/statelyai/xstate/pull/3228) [`fe5f0e6c9`](https://github.com/statelyai/xstate/commit/fe5f0e6c9bbb6ff740673889892301c8989eacfd) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with inline functions in the config object used as transition actions not having their argument types inferred.
|
|
37
|
+
|
|
38
|
+
- [#3252](https://github.com/statelyai/xstate/pull/3252) [`a94dfd467`](https://github.com/statelyai/xstate/commit/a94dfd46772cacc59154c165f27122164f48625b) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with default `TEvent` (`{ type: string }`) not being correctly provided to inline transition actions.
|
|
39
|
+
|
|
3
40
|
## 4.31.0
|
|
4
41
|
|
|
5
42
|
### Minor Changes
|
package/es/State.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
|
|
|
91
91
|
* @param delimiter The character(s) that separate each subpath in the string state node path.
|
|
92
92
|
*/
|
|
93
93
|
toStrings(stateValue?: StateValue, delimiter?: string): string[];
|
|
94
|
-
toJSON(): Omit<this, "machine" | "
|
|
94
|
+
toJSON(): Omit<this, "machine" | "configuration" | "transitions" | "tags"> & {
|
|
95
95
|
tags: string[];
|
|
96
96
|
};
|
|
97
97
|
/**
|
package/es/actions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseCondition, ChooseAction, AnyEventObject, Expr, StopAction, StopActionObject, Cast,
|
|
1
|
+
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseCondition, ChooseAction, AnyEventObject, Expr, StopAction, StopActionObject, Cast, EventFrom, AnyActorRef } from './types';
|
|
2
2
|
import * as actionTypes from './actionTypes';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
@@ -52,7 +52,7 @@ declare type InferEvent<E extends EventObject> = {
|
|
|
52
52
|
* @param options Send action options
|
|
53
53
|
* @returns An XState send action object
|
|
54
54
|
*/
|
|
55
|
-
export declare function sendTo<TContext, TEvent extends EventObject, TActor extends
|
|
55
|
+
export declare function sendTo<TContext, TEvent extends EventObject, TActor extends AnyActorRef>(actor: (ctx: TContext) => TActor, event: EventFrom<TActor> | SendExpr<TContext, TEvent, InferEvent<Cast<EventFrom<TActor>, EventObject>>>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, any>;
|
|
56
56
|
/**
|
|
57
57
|
* Sends an update event to this machine's parent.
|
|
58
58
|
*/
|
package/es/model.types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject,
|
|
1
|
+
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions, ServiceMap } from './types';
|
|
2
2
|
import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
|
|
3
|
+
declare type SimplisticExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
|
|
4
|
+
type: TEventType;
|
|
5
|
+
} ? TEvent : never;
|
|
3
6
|
export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
|
|
4
7
|
initialContext: TContext;
|
|
5
|
-
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext,
|
|
8
|
+
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext, SimplisticExtractEvent<TEvent, TEventType>> | PropertyAssigner<TContext, SimplisticExtractEvent<TEvent, TEventType>>, eventType?: TEventType) => AssignAction<TContext, SimplisticExtractEvent<TEvent, TEventType>>;
|
|
6
9
|
events: Prop<TModelCreators, 'events'>;
|
|
7
10
|
actions: Prop<TModelCreators, 'actions'>;
|
|
8
11
|
reset: () => AssignAction<TContext, any>;
|
|
@@ -49,4 +52,5 @@ export interface FinalModelCreators<Self> {
|
|
|
49
52
|
export declare type UnionFromCreatorsReturnTypes<TCreators> = {
|
|
50
53
|
[K in keyof TCreators]: TCreators[K] extends AnyFunction ? ReturnType<TCreators[K]> : never;
|
|
51
54
|
}[keyof TCreators];
|
|
55
|
+
export {};
|
|
52
56
|
//# sourceMappingURL=model.types.d.ts.map
|
package/es/typegenTypes.d.ts
CHANGED
|
@@ -113,18 +113,21 @@ declare type AllowAllEvents = {
|
|
|
113
113
|
};
|
|
114
114
|
export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TServiceMap extends ServiceMap> {
|
|
115
115
|
'@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
|
|
116
|
-
resolved:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
resolved: {
|
|
117
|
+
enabled: TTypesMeta & {
|
|
118
|
+
indexedActions: IndexByType<TAction>;
|
|
119
|
+
indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateServiceEvents<TServiceMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
|
|
120
|
+
};
|
|
121
|
+
disabled: TypegenDisabled & AllImplementationsProvided & AllowAllEvents & {
|
|
122
|
+
indexedActions: IndexByType<TAction>;
|
|
123
|
+
indexedEvents: Record<string, TEvent> & {
|
|
124
|
+
__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
|
|
125
|
+
data: any;
|
|
126
|
+
};
|
|
124
127
|
};
|
|
128
|
+
invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
|
|
125
129
|
};
|
|
126
|
-
|
|
127
|
-
};
|
|
130
|
+
}[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta extends TypegenEnabled ? 'enabled' : 'disabled'];
|
|
128
131
|
}
|
|
129
132
|
export {};
|
|
130
133
|
//# sourceMappingURL=typegenTypes.d.ts.map
|
package/es/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Clock, Interpreter } from './interpreter';
|
|
|
2
2
|
import { Model } from './model.types';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
5
|
-
import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
|
|
5
|
+
import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided, TypegenEnabled } from './typegenTypes';
|
|
6
6
|
export declare type AnyFunction = (...args: any[]) => any;
|
|
7
7
|
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
8
8
|
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
@@ -15,9 +15,7 @@ export declare type Merge<M, N> = Omit<M, keyof N> & N;
|
|
|
15
15
|
export declare type IndexByType<T extends {
|
|
16
16
|
type: string;
|
|
17
17
|
}> = {
|
|
18
|
-
[K in T['type']]:
|
|
19
|
-
type: K;
|
|
20
|
-
}>;
|
|
18
|
+
[K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
|
|
21
19
|
};
|
|
22
20
|
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
21
|
export declare type IsAny<T> = Equals<T, any>;
|
|
@@ -241,13 +239,7 @@ export declare type StatesDefinition<TContext, TStateSchema extends StateSchema,
|
|
|
241
239
|
export declare type TransitionConfigTarget<TContext, TEvent extends EventObject> = string | undefined | StateNode<TContext, any, TEvent>;
|
|
242
240
|
export declare type TransitionConfigOrTarget<TContext, TEvent extends EventObject> = SingleOrArray<TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>>;
|
|
243
241
|
export declare type TransitionsConfigMap<TContext, TEvent extends EventObject> = {
|
|
244
|
-
[K in TEvent['type']]?: TransitionConfigOrTarget<TContext, TEvent
|
|
245
|
-
type: K;
|
|
246
|
-
} ? TEvent : never>;
|
|
247
|
-
} & {
|
|
248
|
-
''?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
249
|
-
} & {
|
|
250
|
-
'*'?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
242
|
+
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>>;
|
|
251
243
|
};
|
|
252
244
|
declare type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
253
245
|
event: TEvent['type'];
|
|
@@ -988,9 +980,7 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
|
988
980
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
989
981
|
}
|
|
990
982
|
export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
|
|
991
|
-
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends
|
|
992
|
-
type: TEventType;
|
|
993
|
-
} ? TEvent : never;
|
|
983
|
+
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
994
984
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
995
985
|
send: (event: TEvent) => void;
|
|
996
986
|
}
|
|
@@ -1001,6 +991,7 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
1001
991
|
stop?: () => void;
|
|
1002
992
|
toJSON?: () => any;
|
|
1003
993
|
}
|
|
994
|
+
export declare type AnyActorRef = ActorRef<any, any>;
|
|
1004
995
|
/**
|
|
1005
996
|
* @deprecated Use `ActorRef` instead.
|
|
1006
997
|
*/
|
|
@@ -1029,9 +1020,12 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
|
|
|
1029
1020
|
}
|
|
1030
1021
|
export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
|
|
1031
1022
|
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ___, infer ____, infer _____, infer ______> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ___, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
1032
|
-
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent :
|
|
1033
|
-
type: K;
|
|
1034
|
-
}>;
|
|
1023
|
+
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
1035
1024
|
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : never : never;
|
|
1025
|
+
declare type Matches<TypegenEnabledArg, TypegenDisabledArg> = {
|
|
1026
|
+
(stateValue: TypegenEnabledArg): any;
|
|
1027
|
+
(stateValue: TypegenDisabledArg): any;
|
|
1028
|
+
};
|
|
1029
|
+
export declare type StateValueFrom<TMachine extends AnyStateMachine> = StateFrom<TMachine>['matches'] extends Matches<infer TypegenEnabledArg, infer TypegenDisabledArg> ? TMachine['__TResolvedTypesMeta'] extends TypegenEnabled ? TypegenEnabledArg : TypegenDisabledArg : never;
|
|
1036
1030
|
export {};
|
|
1037
1031
|
//# sourceMappingURL=types.d.ts.map
|
package/es/waitFor.js
CHANGED
|
@@ -29,7 +29,12 @@ function waitFor(actorRef, predicate, options) {
|
|
|
29
29
|
|
|
30
30
|
return new Promise(function (res, rej) {
|
|
31
31
|
var done = false;
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
if (process.env.NODE_ENV !== 'production' && resolvedOptions.timeout < 0) {
|
|
34
|
+
console.error('`timeout` passed to `waitFor` is negative and it will reject its internal promise immediately.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(function () {
|
|
33
38
|
sub.unsubscribe();
|
|
34
39
|
rej(new Error("Timeout of ".concat(resolvedOptions.timeout, " ms exceeded")));
|
|
35
40
|
}, resolvedOptions.timeout);
|
package/lib/State.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ export declare class State<TContext, TEvent extends EventObject = EventObject, T
|
|
|
91
91
|
* @param delimiter The character(s) that separate each subpath in the string state node path.
|
|
92
92
|
*/
|
|
93
93
|
toStrings(stateValue?: StateValue, delimiter?: string): string[];
|
|
94
|
-
toJSON(): Omit<this, "machine" | "
|
|
94
|
+
toJSON(): Omit<this, "machine" | "configuration" | "transitions" | "tags"> & {
|
|
95
95
|
tags: string[];
|
|
96
96
|
};
|
|
97
97
|
/**
|
package/lib/actions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseCondition, ChooseAction, AnyEventObject, Expr, StopAction, StopActionObject, Cast,
|
|
1
|
+
import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseCondition, ChooseAction, AnyEventObject, Expr, StopAction, StopActionObject, Cast, EventFrom, AnyActorRef } from './types';
|
|
2
2
|
import * as actionTypes from './actionTypes';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
@@ -52,7 +52,7 @@ declare type InferEvent<E extends EventObject> = {
|
|
|
52
52
|
* @param options Send action options
|
|
53
53
|
* @returns An XState send action object
|
|
54
54
|
*/
|
|
55
|
-
export declare function sendTo<TContext, TEvent extends EventObject, TActor extends
|
|
55
|
+
export declare function sendTo<TContext, TEvent extends EventObject, TActor extends AnyActorRef>(actor: (ctx: TContext) => TActor, event: EventFrom<TActor> | SendExpr<TContext, TEvent, InferEvent<Cast<EventFrom<TActor>, EventObject>>>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, any>;
|
|
56
56
|
/**
|
|
57
57
|
* Sends an update event to this machine's parent.
|
|
58
58
|
*/
|
package/lib/model.types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject,
|
|
1
|
+
import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions, ServiceMap } from './types';
|
|
2
2
|
import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
|
|
3
|
+
declare type SimplisticExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends {
|
|
4
|
+
type: TEventType;
|
|
5
|
+
} ? TEvent : never;
|
|
3
6
|
export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
|
|
4
7
|
initialContext: TContext;
|
|
5
|
-
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext,
|
|
8
|
+
assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext, SimplisticExtractEvent<TEvent, TEventType>> | PropertyAssigner<TContext, SimplisticExtractEvent<TEvent, TEventType>>, eventType?: TEventType) => AssignAction<TContext, SimplisticExtractEvent<TEvent, TEventType>>;
|
|
6
9
|
events: Prop<TModelCreators, 'events'>;
|
|
7
10
|
actions: Prop<TModelCreators, 'actions'>;
|
|
8
11
|
reset: () => AssignAction<TContext, any>;
|
|
@@ -49,4 +52,5 @@ export interface FinalModelCreators<Self> {
|
|
|
49
52
|
export declare type UnionFromCreatorsReturnTypes<TCreators> = {
|
|
50
53
|
[K in keyof TCreators]: TCreators[K] extends AnyFunction ? ReturnType<TCreators[K]> : never;
|
|
51
54
|
}[keyof TCreators];
|
|
55
|
+
export {};
|
|
52
56
|
//# sourceMappingURL=model.types.d.ts.map
|
package/lib/typegenTypes.d.ts
CHANGED
|
@@ -113,18 +113,21 @@ declare type AllowAllEvents = {
|
|
|
113
113
|
};
|
|
114
114
|
export interface ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject, TServiceMap extends ServiceMap> {
|
|
115
115
|
'@@xstate/typegen': TTypesMeta['@@xstate/typegen'];
|
|
116
|
-
resolved:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
116
|
+
resolved: {
|
|
117
|
+
enabled: TTypesMeta & {
|
|
118
|
+
indexedActions: IndexByType<TAction>;
|
|
119
|
+
indexedEvents: MergeWithInternalEvents<IndexByType<(string extends TEvent['type'] ? never : TEvent) | GenerateServiceEvents<TServiceMap, Prop<TTypesMeta, 'invokeSrcNameMap'>>>, Prop<TTypesMeta, 'internalEvents'>>;
|
|
120
|
+
};
|
|
121
|
+
disabled: TypegenDisabled & AllImplementationsProvided & AllowAllEvents & {
|
|
122
|
+
indexedActions: IndexByType<TAction>;
|
|
123
|
+
indexedEvents: Record<string, TEvent> & {
|
|
124
|
+
__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
|
|
125
|
+
data: any;
|
|
126
|
+
};
|
|
124
127
|
};
|
|
128
|
+
invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
|
|
125
129
|
};
|
|
126
|
-
|
|
127
|
-
};
|
|
130
|
+
}[IsNever<TTypesMeta> extends true ? 'disabled' : TTypesMeta extends TypegenEnabled ? 'enabled' : 'disabled'];
|
|
128
131
|
}
|
|
129
132
|
export {};
|
|
130
133
|
//# sourceMappingURL=typegenTypes.d.ts.map
|
package/lib/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Clock, Interpreter } from './interpreter';
|
|
|
2
2
|
import { Model } from './model.types';
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { StateNode } from './StateNode';
|
|
5
|
-
import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided } from './typegenTypes';
|
|
5
|
+
import { MarkAllImplementationsAsProvided, TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, AreAllImplementationsAssumedToBeProvided, TypegenEnabled } from './typegenTypes';
|
|
6
6
|
export declare type AnyFunction = (...args: any[]) => any;
|
|
7
7
|
declare type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
8
8
|
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
@@ -15,9 +15,7 @@ export declare type Merge<M, N> = Omit<M, keyof N> & N;
|
|
|
15
15
|
export declare type IndexByType<T extends {
|
|
16
16
|
type: string;
|
|
17
17
|
}> = {
|
|
18
|
-
[K in T['type']]:
|
|
19
|
-
type: K;
|
|
20
|
-
}>;
|
|
18
|
+
[K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
|
|
21
19
|
};
|
|
22
20
|
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
21
|
export declare type IsAny<T> = Equals<T, any>;
|
|
@@ -241,13 +239,7 @@ export declare type StatesDefinition<TContext, TStateSchema extends StateSchema,
|
|
|
241
239
|
export declare type TransitionConfigTarget<TContext, TEvent extends EventObject> = string | undefined | StateNode<TContext, any, TEvent>;
|
|
242
240
|
export declare type TransitionConfigOrTarget<TContext, TEvent extends EventObject> = SingleOrArray<TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>>;
|
|
243
241
|
export declare type TransitionsConfigMap<TContext, TEvent extends EventObject> = {
|
|
244
|
-
[K in TEvent['type']]?: TransitionConfigOrTarget<TContext, TEvent
|
|
245
|
-
type: K;
|
|
246
|
-
} ? TEvent : never>;
|
|
247
|
-
} & {
|
|
248
|
-
''?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
249
|
-
} & {
|
|
250
|
-
'*'?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
242
|
+
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>>;
|
|
251
243
|
};
|
|
252
244
|
declare type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
253
245
|
event: TEvent['type'];
|
|
@@ -988,9 +980,7 @@ export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
|
988
980
|
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
989
981
|
}
|
|
990
982
|
export declare type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | Behavior<any>;
|
|
991
|
-
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends
|
|
992
|
-
type: TEventType;
|
|
993
|
-
} ? TEvent : never;
|
|
983
|
+
export declare type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
994
984
|
export interface BaseActorRef<TEvent extends EventObject> {
|
|
995
985
|
send: (event: TEvent) => void;
|
|
996
986
|
}
|
|
@@ -1001,6 +991,7 @@ export interface ActorRef<TEvent extends EventObject, TEmitted = any> extends Su
|
|
|
1001
991
|
stop?: () => void;
|
|
1002
992
|
toJSON?: () => any;
|
|
1003
993
|
}
|
|
994
|
+
export declare type AnyActorRef = ActorRef<any, any>;
|
|
1004
995
|
/**
|
|
1005
996
|
* @deprecated Use `ActorRef` instead.
|
|
1006
997
|
*/
|
|
@@ -1029,9 +1020,12 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
|
|
|
1029
1020
|
}
|
|
1030
1021
|
export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
|
|
1031
1022
|
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ___, infer ____, infer _____, infer ______> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ___, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
1032
|
-
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent :
|
|
1033
|
-
type: K;
|
|
1034
|
-
}>;
|
|
1023
|
+
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
1035
1024
|
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : never : never;
|
|
1025
|
+
declare type Matches<TypegenEnabledArg, TypegenDisabledArg> = {
|
|
1026
|
+
(stateValue: TypegenEnabledArg): any;
|
|
1027
|
+
(stateValue: TypegenDisabledArg): any;
|
|
1028
|
+
};
|
|
1029
|
+
export declare type StateValueFrom<TMachine extends AnyStateMachine> = StateFrom<TMachine>['matches'] extends Matches<infer TypegenEnabledArg, infer TypegenDisabledArg> ? TMachine['__TResolvedTypesMeta'] extends TypegenEnabled ? TypegenEnabledArg : TypegenDisabledArg : never;
|
|
1036
1030
|
export {};
|
|
1037
1031
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/waitFor.js
CHANGED
|
@@ -33,7 +33,12 @@ function waitFor(actorRef, predicate, options) {
|
|
|
33
33
|
|
|
34
34
|
return new Promise(function (res, rej) {
|
|
35
35
|
var done = false;
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
if (process.env.NODE_ENV !== 'production' && resolvedOptions.timeout < 0) {
|
|
38
|
+
console.error('`timeout` passed to `waitFor` is negative and it will reject its internal promise immediately.');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
var handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(function () {
|
|
37
42
|
sub.unsubscribe();
|
|
38
43
|
rej(new Error("Timeout of ".concat(resolvedOptions.timeout, " ms exceeded")));
|
|
39
44
|
}, resolvedOptions.timeout);
|