xstate 5.0.0-beta.16 → 5.0.0-beta.17
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/actions/dist/xstate-actions.cjs.js +2 -5
- package/actions/dist/xstate-actions.cjs.mjs +2 -5
- package/actions/dist/xstate-actions.development.cjs.js +2 -5
- package/actions/dist/xstate-actions.development.esm.js +1 -1
- package/actions/dist/xstate-actions.esm.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js +1 -1
- package/actions/dist/xstate-actions.umd.min.js.map +1 -1
- package/actors/dist/xstate-actors.cjs.js +1 -1
- package/actors/dist/xstate-actors.development.cjs.js +1 -1
- package/actors/dist/xstate-actors.development.esm.js +1 -1
- package/actors/dist/xstate-actors.esm.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js +1 -1
- package/actors/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/{actions-6f7fbc84.development.esm.js → actions-13190b25.development.esm.js} +677 -844
- package/dist/{actions-0f903c0d.development.cjs.js → actions-40bd643f.development.cjs.js} +678 -850
- package/dist/{actions-0386b622.esm.js → actions-4d6514d2.esm.js} +653 -847
- package/dist/{actions-6b9073db.cjs.js → actions-5fb9f10d.cjs.js} +654 -853
- package/dist/declarations/src/State.d.ts +1 -1
- package/dist/declarations/src/StateNode.d.ts +4 -4
- package/dist/declarations/src/actions/assign.d.ts +11 -2
- package/dist/declarations/src/actions/cancel.d.ts +14 -3
- package/dist/declarations/src/actions/choose.d.ts +11 -3
- package/dist/declarations/src/actions/log.d.ts +22 -3
- package/dist/declarations/src/actions/pure.d.ts +17 -3
- package/dist/declarations/src/actions/raise.d.ts +5 -2
- package/dist/declarations/src/actions/send.d.ts +58 -6
- package/dist/declarations/src/actions/stop.d.ts +14 -2
- package/dist/declarations/src/actions.d.ts +4 -7
- package/dist/declarations/src/constantPrefixes.d.ts +6 -0
- package/dist/declarations/src/interpreter.d.ts +8 -3
- package/dist/declarations/src/stateUtils.d.ts +4 -8
- package/dist/declarations/src/types.d.ts +22 -187
- package/dist/declarations/src/utils.d.ts +1 -6
- package/dist/xstate.cjs.js +42 -19
- package/dist/xstate.cjs.mjs +1 -1
- package/dist/xstate.development.cjs.js +42 -19
- package/dist/xstate.development.esm.js +42 -19
- package/dist/xstate.esm.js +42 -19
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/guards/dist/xstate-guards.cjs.js +1 -1
- package/guards/dist/xstate-guards.development.cjs.js +1 -1
- package/guards/dist/xstate-guards.development.esm.js +1 -1
- package/guards/dist/xstate-guards.esm.js +1 -1
- package/guards/dist/xstate-guards.umd.min.js +1 -1
- package/guards/dist/xstate-guards.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/actions/dynamicAction.ts +0 -42
- package/dist/declarations/src/actionTypes.d.ts +0 -16
- package/dist/declarations/src/constants.d.ts +0 -5
|
@@ -44,33 +44,12 @@ export interface ParameterizedObject {
|
|
|
44
44
|
type: string;
|
|
45
45
|
params?: Record<string, any>;
|
|
46
46
|
}
|
|
47
|
-
export interface BaseActionObject extends ParameterizedObject {
|
|
48
|
-
execute?: (actorCtx: AnyActorContext) => void;
|
|
49
|
-
}
|
|
50
|
-
export interface BuiltInActionObject extends ParameterizedObject {
|
|
51
|
-
type: `xstate.${string}`;
|
|
52
|
-
params: Record<string, any>;
|
|
53
|
-
}
|
|
54
47
|
export interface UnifiedArg<TContext extends MachineContext, TEvent extends EventObject> {
|
|
55
48
|
context: TContext;
|
|
56
49
|
event: TEvent;
|
|
57
50
|
self: ActorRef<TEvent>;
|
|
58
51
|
system: ActorSystem<any>;
|
|
59
52
|
}
|
|
60
|
-
export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
61
|
-
type: `xstate.${string}`;
|
|
62
|
-
params: TDynamicParams;
|
|
63
|
-
resolve: (event: TExpressionEvent, extra: {
|
|
64
|
-
state: State<TContext, TEvent>;
|
|
65
|
-
/**
|
|
66
|
-
* The original action object
|
|
67
|
-
*/
|
|
68
|
-
action: ParameterizedObject;
|
|
69
|
-
actorContext: AnyActorContext;
|
|
70
|
-
}) => [AnyState, TResolvedAction];
|
|
71
|
-
/** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
|
|
72
|
-
(args: ActionArgs<TContext, TExpressionEvent, ParameterizedObject>): void;
|
|
73
|
-
}
|
|
74
53
|
export type MachineContext = Record<string, any>;
|
|
75
54
|
export interface ActionArgs<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends UnifiedArg<TContext, TEvent> {
|
|
76
55
|
action: TAction;
|
|
@@ -82,24 +61,18 @@ logic: T, options?: Partial<{
|
|
|
82
61
|
input: any;
|
|
83
62
|
}>) => T extends ActorLogic<infer TActorEvent, infer TActorEmitted, infer _, infer __, infer ___> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
84
63
|
export interface AssignArgs<TContext extends MachineContext, TExpressionEvent extends EventObject> extends ActionArgs<TContext, TExpressionEvent> {
|
|
85
|
-
action: BaseActionObject;
|
|
86
|
-
event: TExpressionEvent;
|
|
87
64
|
spawn: Spawner;
|
|
88
65
|
}
|
|
89
|
-
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> =
|
|
90
|
-
|
|
66
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
67
|
+
(args: ActionArgs<TContext, TExpressionEvent, TAction>): void;
|
|
68
|
+
_out_TEvent?: TEvent;
|
|
69
|
+
};
|
|
70
|
+
export interface ChooseBranch<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
|
|
91
71
|
guard?: GuardConfig<TContext, TExpressionEvent>;
|
|
92
72
|
actions: Actions<TContext, TExpressionEvent, TEvent>;
|
|
93
73
|
}
|
|
94
|
-
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent,
|
|
95
|
-
|
|
96
|
-
* Extracts action objects that have no extra properties.
|
|
97
|
-
*/
|
|
98
|
-
type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
|
|
99
|
-
export type BaseAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject, TEvent extends EventObject> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, // TODO: at the very least this should include TAction, but probably at a covariant position or something, we really need to rethink how action objects are typed
|
|
100
|
-
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction>;
|
|
101
|
-
export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
|
|
102
|
-
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
|
|
74
|
+
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, TEvent, ParameterizedObject>;
|
|
75
|
+
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TExpressionEvent, TEvent>>;
|
|
103
76
|
export type StateKey = string | AnyState;
|
|
104
77
|
export interface StateValueMap {
|
|
105
78
|
[key: string]: StateValue;
|
|
@@ -155,7 +128,7 @@ export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent
|
|
|
155
128
|
export type TransitionTarget = SingleOrArray<string>;
|
|
156
129
|
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
157
130
|
guard?: GuardConfig<TContext, TExpressionEvent>;
|
|
158
|
-
actions?:
|
|
131
|
+
actions?: Actions<TContext, TExpressionEvent, TEvent>;
|
|
159
132
|
reenter?: boolean;
|
|
160
133
|
target?: TransitionTarget | undefined;
|
|
161
134
|
meta?: Record<string, any>;
|
|
@@ -170,11 +143,6 @@ export interface InitialTransitionConfig<TContext extends MachineContext, TEvent
|
|
|
170
143
|
target: TransitionTarget;
|
|
171
144
|
}
|
|
172
145
|
export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
|
|
173
|
-
type ExtractWithSimpleSupport<T extends {
|
|
174
|
-
type: string;
|
|
175
|
-
}> = T extends any ? {
|
|
176
|
-
type: T['type'];
|
|
177
|
-
} extends T ? T : never : never;
|
|
178
146
|
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
179
147
|
bivarianceHack(event: TEvent): void;
|
|
180
148
|
}['bivarianceHack']) => void;
|
|
@@ -229,15 +197,9 @@ export type StatesDefinition<TContext extends MachineContext, TEvent extends Eve
|
|
|
229
197
|
};
|
|
230
198
|
export type TransitionConfigTarget = string | undefined;
|
|
231
199
|
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
|
|
232
|
-
export type
|
|
233
|
-
[K in TEvent['type'] | '
|
|
200
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
201
|
+
[K in TEvent['type'] | '*']?: K extends '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
|
|
234
202
|
};
|
|
235
|
-
type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
236
|
-
event: TEvent['type'];
|
|
237
|
-
} : never) | (TransitionConfig<TContext, TEvent> & {
|
|
238
|
-
event: '*';
|
|
239
|
-
})>;
|
|
240
|
-
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
|
|
241
203
|
export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
242
204
|
/**
|
|
243
205
|
* The unique identifier for the invoked machine. If not specified, this
|
|
@@ -300,11 +262,11 @@ export interface StateNodeConfig<TContext extends MachineContext, TEvent extends
|
|
|
300
262
|
/**
|
|
301
263
|
* The action(s) to be executed upon entering the state node.
|
|
302
264
|
*/
|
|
303
|
-
entry?:
|
|
265
|
+
entry?: Actions<TContext, TEvent, TEvent>;
|
|
304
266
|
/**
|
|
305
267
|
* The action(s) to be executed upon exiting the state node.
|
|
306
268
|
*/
|
|
307
|
-
exit?:
|
|
269
|
+
exit?: Actions<TContext, TEvent, TEvent>;
|
|
308
270
|
/**
|
|
309
271
|
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
310
272
|
*
|
|
@@ -367,8 +329,8 @@ export interface StateNodeDefinition<TContext extends MachineContext, TEvent ext
|
|
|
367
329
|
states: StatesDefinition<TContext, TEvent>;
|
|
368
330
|
on: TransitionDefinitionMap<TContext, TEvent>;
|
|
369
331
|
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
370
|
-
entry:
|
|
371
|
-
exit:
|
|
332
|
+
entry: Action<any, any, any>[];
|
|
333
|
+
exit: Action<any, any, any>[];
|
|
372
334
|
meta: any;
|
|
373
335
|
order: number;
|
|
374
336
|
output?: FinalStateNodeConfig<TContext, TEvent>['output'];
|
|
@@ -403,7 +365,7 @@ export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent ex
|
|
|
403
365
|
}
|
|
404
366
|
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
|
|
405
367
|
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
406
|
-
[K in TAction['type']]?:
|
|
368
|
+
[K in TAction['type']]?: ActionFunction<TContext, TEvent, TEvent, TAction extends {
|
|
407
369
|
type: K;
|
|
408
370
|
} ? TAction : never>;
|
|
409
371
|
};
|
|
@@ -419,8 +381,7 @@ export interface MachineImplementationsSimplified<TContext extends MachineContex
|
|
|
419
381
|
delays: DelayFunctionMap<TContext, TEvent>;
|
|
420
382
|
}
|
|
421
383
|
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
422
|
-
[K in keyof TEventsCausingActions]?:
|
|
423
|
-
any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject>;
|
|
384
|
+
[K in keyof TEventsCausingActions]?: ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, ParameterizedObject>;
|
|
424
385
|
};
|
|
425
386
|
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
426
387
|
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
@@ -495,32 +456,14 @@ export type HistoryValue<TContext extends MachineContext, TEvent extends EventOb
|
|
|
495
456
|
export type AnyHistoryValue = HistoryValue<any, any>;
|
|
496
457
|
export type StateFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends AnyStateMachine ? ReturnType<T['transition']> : T extends (...args: any[]) => AnyStateMachine ? ReturnType<ReturnType<T>['transition']> : never;
|
|
497
458
|
export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
|
498
|
-
export declare enum
|
|
499
|
-
Stop = "xstate.stop",
|
|
500
|
-
Raise = "xstate.raise",
|
|
501
|
-
SendTo = "xstate.sendTo",
|
|
502
|
-
Cancel = "xstate.cancel",
|
|
503
|
-
Assign = "xstate.assign",
|
|
459
|
+
export declare enum ConstantPrefix {
|
|
504
460
|
After = "xstate.after",
|
|
505
461
|
DoneState = "done.state",
|
|
506
462
|
DoneInvoke = "done.invoke",
|
|
507
|
-
Log = "xstate.log",
|
|
508
|
-
Init = "xstate.init",
|
|
509
|
-
Invoke = "xstate.invoke",
|
|
510
463
|
ErrorExecution = "error.execution",
|
|
511
464
|
ErrorCommunication = "error.communication",
|
|
512
465
|
ErrorPlatform = "error.platform",
|
|
513
|
-
ErrorCustom = "xstate.error"
|
|
514
|
-
Pure = "xstate.pure",
|
|
515
|
-
Choose = "xstate.choose"
|
|
516
|
-
}
|
|
517
|
-
export interface RaiseActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> extends BaseActionObject {
|
|
518
|
-
type: ActionTypes.Raise;
|
|
519
|
-
params: {
|
|
520
|
-
event: TEvent;
|
|
521
|
-
delay: RaiseActionOptions<TContext, TExpressionEvent>['delay'];
|
|
522
|
-
id: string | number;
|
|
523
|
-
};
|
|
466
|
+
ErrorCustom = "xstate.error"
|
|
524
467
|
}
|
|
525
468
|
export interface DoneInvokeEvent<TData> extends EventObject {
|
|
526
469
|
type: `done.invoke.${string}`;
|
|
@@ -536,7 +479,7 @@ export interface SnapshotEvent<TData> {
|
|
|
536
479
|
}
|
|
537
480
|
export interface ErrorExecutionEvent extends EventObject {
|
|
538
481
|
src: string;
|
|
539
|
-
type:
|
|
482
|
+
type: ConstantPrefix.ErrorExecution;
|
|
540
483
|
data: any;
|
|
541
484
|
}
|
|
542
485
|
export interface ErrorPlatformEvent extends EventObject {
|
|
@@ -547,63 +490,8 @@ export interface DoneEventObject extends EventObject {
|
|
|
547
490
|
toString(): string;
|
|
548
491
|
}
|
|
549
492
|
export type DoneEvent = DoneEventObject & string;
|
|
550
|
-
export interface InvokeAction {
|
|
551
|
-
type: ActionTypes.Invoke;
|
|
552
|
-
src: string | ActorRef<any>;
|
|
553
|
-
id: string;
|
|
554
|
-
exec?: undefined;
|
|
555
|
-
meta: MetaObject | undefined;
|
|
556
|
-
}
|
|
557
|
-
export interface DynamicInvokeActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
558
|
-
type: ActionTypes.Invoke;
|
|
559
|
-
params: InvokeDefinition<TContext, TEvent>;
|
|
560
|
-
}
|
|
561
|
-
export interface InvokeActionObject extends BaseActionObject {
|
|
562
|
-
type: ActionTypes.Invoke;
|
|
563
|
-
params: {
|
|
564
|
-
src: string | ActorRef<any>;
|
|
565
|
-
id: string;
|
|
566
|
-
exec?: undefined;
|
|
567
|
-
ref?: ActorRef<any>;
|
|
568
|
-
meta: MetaObject | undefined;
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
572
|
-
type: ActionTypes.Stop;
|
|
573
|
-
params: {
|
|
574
|
-
actor: string | ActorRef<any> | ((args: UnifiedArg<TContext, TExpressionEvent>) => ActorRef<any> | string);
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
export interface StopActionObject {
|
|
578
|
-
type: ActionTypes.Stop;
|
|
579
|
-
params: {
|
|
580
|
-
actor: ActorRef<any>;
|
|
581
|
-
};
|
|
582
|
-
}
|
|
583
493
|
export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => number;
|
|
584
494
|
export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = (args: UnifiedArg<TContext, TEvent>) => unknown;
|
|
585
|
-
export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
|
|
586
|
-
label: string | undefined;
|
|
587
|
-
expr: string | LogExpr<TContext, TExpressionEvent>;
|
|
588
|
-
}> {
|
|
589
|
-
type: ActionTypes.Log;
|
|
590
|
-
}
|
|
591
|
-
export interface LogActionObject extends BuiltInActionObject {
|
|
592
|
-
type: ActionTypes.Log;
|
|
593
|
-
params: {
|
|
594
|
-
label: string | undefined;
|
|
595
|
-
value: any;
|
|
596
|
-
};
|
|
597
|
-
}
|
|
598
|
-
export interface SendToActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
|
|
599
|
-
type: 'xstate.sendTo';
|
|
600
|
-
params: {
|
|
601
|
-
to: ActorRef<TSentEvent>;
|
|
602
|
-
event: TSentEvent;
|
|
603
|
-
delay?: number;
|
|
604
|
-
id: string | number;
|
|
605
|
-
};
|
|
606
|
-
}
|
|
607
495
|
export type SendExpr<TContext extends MachineContext, TExpressionEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = (args: UnifiedArg<TContext, TExpressionEvent>) => TSentEvent;
|
|
608
496
|
export declare enum SpecialTargets {
|
|
609
497
|
Parent = "#_parent",
|
|
@@ -612,7 +500,7 @@ export declare enum SpecialTargets {
|
|
|
612
500
|
export interface SendToActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
|
|
613
501
|
}
|
|
614
502
|
export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
615
|
-
id?: string
|
|
503
|
+
id?: string;
|
|
616
504
|
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
617
505
|
}
|
|
618
506
|
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
|
|
@@ -621,18 +509,6 @@ export interface RaiseActionParams<TContext extends MachineContext, TExpressionE
|
|
|
621
509
|
export interface SendToActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendToActionOptions<TContext, TEvent> {
|
|
622
510
|
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
623
511
|
}
|
|
624
|
-
export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
625
|
-
type: ActionTypes.Cancel;
|
|
626
|
-
params: {
|
|
627
|
-
sendId: string | ((args: UnifiedArg<TContext, TExpressionEvent>) => string);
|
|
628
|
-
};
|
|
629
|
-
}
|
|
630
|
-
export interface CancelActionObject extends BaseActionObject {
|
|
631
|
-
type: ActionTypes.Cancel;
|
|
632
|
-
params: {
|
|
633
|
-
sendId: string;
|
|
634
|
-
};
|
|
635
|
-
}
|
|
636
512
|
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = (args: AssignArgs<TContext, TExpressionEvent>) => Partial<TContext>;
|
|
637
513
|
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TKey extends keyof TContext> = (args: AssignArgs<TContext, TExpressionEvent>) => TContext[TKey];
|
|
638
514
|
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject> = {
|
|
@@ -648,58 +524,17 @@ export type PropertyMapper<TContext extends MachineContext, TEvent extends Event
|
|
|
648
524
|
event: TEvent;
|
|
649
525
|
}) => TParams[K]) | TParams[K];
|
|
650
526
|
};
|
|
651
|
-
export interface AnyAssignAction extends BaseActionObject {
|
|
652
|
-
type: ActionTypes.Assign;
|
|
653
|
-
assignment: any;
|
|
654
|
-
}
|
|
655
|
-
export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
|
|
656
|
-
assignment: Assigner<TContext, TExpressionEvent> | PropertyAssigner<TContext, TExpressionEvent>;
|
|
657
|
-
}>;
|
|
658
|
-
export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
|
|
659
|
-
type: ActionTypes.Assign;
|
|
660
|
-
params: {
|
|
661
|
-
context: TContext;
|
|
662
|
-
actions: BaseActionObject[];
|
|
663
|
-
};
|
|
664
|
-
}
|
|
665
|
-
export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
666
|
-
type: ActionTypes.Pure;
|
|
667
|
-
params: {
|
|
668
|
-
get: (args: {
|
|
669
|
-
context: TContext;
|
|
670
|
-
event: TEvent;
|
|
671
|
-
}) => SingleOrArray<BaseActionObject | BaseActionObject['type']> | undefined;
|
|
672
|
-
};
|
|
673
|
-
}
|
|
674
|
-
export interface PureActionObject extends BaseActionObject {
|
|
675
|
-
type: ActionTypes.Pure;
|
|
676
|
-
params: {
|
|
677
|
-
actions: BaseActionObject[];
|
|
678
|
-
};
|
|
679
|
-
}
|
|
680
|
-
export interface ChooseAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseActionObject {
|
|
681
|
-
type: ActionTypes.Choose;
|
|
682
|
-
params: {
|
|
683
|
-
guards: Array<ChooseCondition<TContext, TEvent>>;
|
|
684
|
-
};
|
|
685
|
-
}
|
|
686
|
-
export interface ResolvedChooseAction extends BaseActionObject {
|
|
687
|
-
type: ActionTypes.Choose;
|
|
688
|
-
params: {
|
|
689
|
-
actions: BaseActionObject[];
|
|
690
|
-
};
|
|
691
|
-
}
|
|
692
527
|
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
|
|
693
528
|
target: Array<StateNode<TContext, TEvent>> | undefined;
|
|
694
529
|
source: StateNode<TContext, TEvent>;
|
|
695
|
-
actions:
|
|
530
|
+
actions: Action<any, any, any>[];
|
|
696
531
|
reenter: boolean;
|
|
697
532
|
guard?: GuardDefinition<TContext, TEvent>;
|
|
698
533
|
eventType: TEvent['type'] | '*';
|
|
699
534
|
toJSON: () => {
|
|
700
535
|
target: string[] | undefined;
|
|
701
536
|
source: string;
|
|
702
|
-
actions:
|
|
537
|
+
actions: Action<any, any, any>[];
|
|
703
538
|
guard?: GuardDefinition<TContext, TEvent>;
|
|
704
539
|
eventType: TEvent['type'] | '*';
|
|
705
540
|
meta?: Record<string, any>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AnyActorLogic, AnyState } from "./index.js";
|
|
2
|
-
import { NULL_EVENT } from "./constants.js";
|
|
3
2
|
import type { StateNode } from "./StateNode.js";
|
|
4
3
|
import type { ActorLogic, AnyEventObject, EventObject, EventType, InvokeConfig, MachineContext, Mapper, Observer, PropertyMapper, ErrorEvent, SingleOrArray, StateLike, StateValue, Subscribable, TransitionConfig, TransitionConfigTarget } from "./types.js";
|
|
5
4
|
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
@@ -33,14 +32,10 @@ export declare function isPromiseLike(value: any): value is PromiseLike<any>;
|
|
|
33
32
|
export declare function isActorLogic(value: any): value is ActorLogic<any, any>;
|
|
34
33
|
export declare function partition<T, A extends T, B extends T>(items: T[], predicate: (item: T) => item is A): [A[], B[]];
|
|
35
34
|
export declare function isArray(value: any): value is any[];
|
|
36
|
-
export declare function isFunction(value: any): value is Function;
|
|
37
|
-
export declare function isString(value: any): value is string;
|
|
38
35
|
export declare function isObservable<T>(value: any): value is Subscribable<T>;
|
|
39
36
|
export declare const uniqueId: () => string;
|
|
40
37
|
export declare function isErrorEvent(event: AnyEventObject): event is ErrorEvent<any>;
|
|
41
|
-
export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(
|
|
42
|
-
event: TEvent['type'] | typeof NULL_EVENT | '*';
|
|
43
|
-
}>;
|
|
38
|
+
export declare function toTransitionConfigArray<TContext extends MachineContext, TEvent extends EventObject>(configLike: SingleOrArray<TransitionConfig<TContext, TEvent> | TransitionConfigTarget>): Array<TransitionConfig<TContext, TEvent>>;
|
|
44
39
|
export declare function normalizeTarget<TContext extends MachineContext, TEvent extends EventObject>(target: SingleOrArray<string | StateNode<TContext, TEvent>> | undefined): Array<string | StateNode<TContext, TEvent>> | undefined;
|
|
45
40
|
export declare function reportUnhandledExceptionOnInvocation(originalError: any, currentError: any, id: string): void;
|
|
46
41
|
export declare function toInvokeConfig<TContext extends MachineContext, TEvent extends EventObject>(invocable: InvokeConfig<TContext, TEvent> | string | ActorLogic<any, any>, id: string): InvokeConfig<TContext, TEvent>;
|
package/dist/xstate.cjs.js
CHANGED
|
@@ -2,10 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-5fb9f10d.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
9
|
+
const toSerializableActon = action => {
|
|
10
|
+
if (typeof action === 'string') {
|
|
11
|
+
return {
|
|
12
|
+
type: action
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (typeof action === 'function') {
|
|
16
|
+
if ('resolve' in action) {
|
|
17
|
+
return {
|
|
18
|
+
type: action.type
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
type: action.name
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return action;
|
|
26
|
+
};
|
|
9
27
|
class StateNode {
|
|
10
28
|
/**
|
|
11
29
|
* The relative key of the state node, which represents its location in the overall state value.
|
|
@@ -114,8 +132,8 @@ class StateNode {
|
|
|
114
132
|
|
|
115
133
|
// History config
|
|
116
134
|
this.history = this.config.history === true ? 'shallow' : this.config.history || false;
|
|
117
|
-
this.entry = actors_dist_xstateActors.
|
|
118
|
-
this.exit = actors_dist_xstateActors.
|
|
135
|
+
this.entry = actors_dist_xstateActors.toArray(this.config.entry);
|
|
136
|
+
this.exit = actors_dist_xstateActors.toArray(this.config.exit);
|
|
119
137
|
this.meta = this.config.meta;
|
|
120
138
|
this.output = this.type === 'final' ? this.config.output : undefined;
|
|
121
139
|
this.tags = actors_dist_xstateActors.toArray(config.tags);
|
|
@@ -123,7 +141,7 @@ class StateNode {
|
|
|
123
141
|
_initialize() {
|
|
124
142
|
this.transitions = actors_dist_xstateActors.formatTransitions(this);
|
|
125
143
|
if (this.config.always) {
|
|
126
|
-
this.always = actors_dist_xstateActors.toTransitionConfigArray(
|
|
144
|
+
this.always = actors_dist_xstateActors.toTransitionConfigArray(this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, actors_dist_xstateActors.NULL_EVENT, t));
|
|
127
145
|
}
|
|
128
146
|
Object.keys(this.states).forEach(key => {
|
|
129
147
|
this.states[key]._initialize();
|
|
@@ -142,13 +160,13 @@ class StateNode {
|
|
|
142
160
|
initial: this.initial ? {
|
|
143
161
|
target: this.initial.target,
|
|
144
162
|
source: this,
|
|
145
|
-
actions: this.initial.actions,
|
|
163
|
+
actions: this.initial.actions.map(toSerializableActon),
|
|
146
164
|
eventType: null,
|
|
147
165
|
reenter: false,
|
|
148
166
|
toJSON: () => ({
|
|
149
167
|
target: this.initial.target.map(t => `#${t.id}`),
|
|
150
168
|
source: `#${this.id}`,
|
|
151
|
-
actions: this.initial.actions,
|
|
169
|
+
actions: this.initial.actions.map(toSerializableActon),
|
|
152
170
|
eventType: null
|
|
153
171
|
})
|
|
154
172
|
} : undefined,
|
|
@@ -157,9 +175,12 @@ class StateNode {
|
|
|
157
175
|
return state.definition;
|
|
158
176
|
}),
|
|
159
177
|
on: this.on,
|
|
160
|
-
transitions: this.transitions
|
|
161
|
-
|
|
162
|
-
|
|
178
|
+
transitions: [...this.transitions.values()].flat().map(t => ({
|
|
179
|
+
...t,
|
|
180
|
+
actions: t.actions.map(toSerializableActon)
|
|
181
|
+
})),
|
|
182
|
+
entry: this.entry.map(toSerializableActon),
|
|
183
|
+
exit: this.exit.map(toSerializableActon),
|
|
163
184
|
meta: this.meta,
|
|
164
185
|
order: this.order || -1,
|
|
165
186
|
output: this.output,
|
|
@@ -184,7 +205,9 @@ class StateNode {
|
|
|
184
205
|
const {
|
|
185
206
|
systemId
|
|
186
207
|
} = invokeConfig;
|
|
187
|
-
|
|
208
|
+
|
|
209
|
+
// TODO: resolving should not happen here
|
|
210
|
+
const resolvedSrc = typeof src === 'string' ? src : !('type' in src) ? resolvedId : src;
|
|
188
211
|
if (!this.machine.implementations.actors[resolvedId] && typeof src !== 'string' && !('type' in src)) {
|
|
189
212
|
this.machine.implementations.actors = {
|
|
190
213
|
...this.machine.implementations.actors,
|
|
@@ -193,7 +216,7 @@ class StateNode {
|
|
|
193
216
|
};
|
|
194
217
|
}
|
|
195
218
|
return {
|
|
196
|
-
type:
|
|
219
|
+
type: 'xstate.invoke',
|
|
197
220
|
...invokeConfig,
|
|
198
221
|
src: resolvedSrc,
|
|
199
222
|
id: resolvedId,
|
|
@@ -206,7 +229,7 @@ class StateNode {
|
|
|
206
229
|
} = invokeConfig;
|
|
207
230
|
return {
|
|
208
231
|
...invokeDefValues,
|
|
209
|
-
type:
|
|
232
|
+
type: 'xstate.invoke',
|
|
210
233
|
src: resolvedSrc,
|
|
211
234
|
id: resolvedId
|
|
212
235
|
};
|
|
@@ -221,9 +244,9 @@ class StateNode {
|
|
|
221
244
|
get on() {
|
|
222
245
|
return actors_dist_xstateActors.memo(this, 'on', () => {
|
|
223
246
|
const transitions = this.transitions;
|
|
224
|
-
return transitions.reduce((map, transition) => {
|
|
225
|
-
map[
|
|
226
|
-
map[
|
|
247
|
+
return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {
|
|
248
|
+
map[descriptor] = map[descriptor] || [];
|
|
249
|
+
map[descriptor].push(transition);
|
|
227
250
|
return map;
|
|
228
251
|
}, {});
|
|
229
252
|
});
|
|
@@ -310,9 +333,9 @@ class StateNode {
|
|
|
310
333
|
* Excludes any inert events.
|
|
311
334
|
*/
|
|
312
335
|
get ownEvents() {
|
|
313
|
-
const events = new Set(this.transitions.filter(
|
|
314
|
-
return !(!transition.target && !transition.actions.length && !transition.reenter);
|
|
315
|
-
})
|
|
336
|
+
const events = new Set([...this.transitions.keys()].filter(descriptor => {
|
|
337
|
+
return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));
|
|
338
|
+
}));
|
|
316
339
|
return Array.from(events);
|
|
317
340
|
}
|
|
318
341
|
}
|
|
@@ -728,7 +751,7 @@ function waitFor(actorRef, predicate, options) {
|
|
|
728
751
|
});
|
|
729
752
|
}
|
|
730
753
|
|
|
731
|
-
exports.
|
|
754
|
+
exports.ConstantPrefix = actors_dist_xstateActors.ConstantPrefix;
|
|
732
755
|
exports.Interpreter = actors_dist_xstateActors.Interpreter;
|
|
733
756
|
exports.InterpreterStatus = actors_dist_xstateActors.ActorStatus;
|
|
734
757
|
exports.SpecialTargets = actors_dist_xstateActors.SpecialTargets;
|
package/dist/xstate.cjs.mjs
CHANGED
|
@@ -2,10 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var actors_dist_xstateActors = require('./actions-
|
|
5
|
+
var actors_dist_xstateActors = require('./actions-40bd643f.development.cjs.js');
|
|
6
6
|
require('../dev/dist/xstate-dev.development.cjs.js');
|
|
7
7
|
|
|
8
8
|
const EMPTY_OBJECT = {};
|
|
9
|
+
const toSerializableActon = action => {
|
|
10
|
+
if (typeof action === 'string') {
|
|
11
|
+
return {
|
|
12
|
+
type: action
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (typeof action === 'function') {
|
|
16
|
+
if ('resolve' in action) {
|
|
17
|
+
return {
|
|
18
|
+
type: action.type
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
type: action.name
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return action;
|
|
26
|
+
};
|
|
9
27
|
class StateNode {
|
|
10
28
|
/**
|
|
11
29
|
* The relative key of the state node, which represents its location in the overall state value.
|
|
@@ -114,8 +132,8 @@ class StateNode {
|
|
|
114
132
|
|
|
115
133
|
// History config
|
|
116
134
|
this.history = this.config.history === true ? 'shallow' : this.config.history || false;
|
|
117
|
-
this.entry = actors_dist_xstateActors.
|
|
118
|
-
this.exit = actors_dist_xstateActors.
|
|
135
|
+
this.entry = actors_dist_xstateActors.toArray(this.config.entry);
|
|
136
|
+
this.exit = actors_dist_xstateActors.toArray(this.config.exit);
|
|
119
137
|
this.meta = this.config.meta;
|
|
120
138
|
this.output = this.type === 'final' ? this.config.output : undefined;
|
|
121
139
|
this.tags = actors_dist_xstateActors.toArray(config.tags);
|
|
@@ -123,7 +141,7 @@ class StateNode {
|
|
|
123
141
|
_initialize() {
|
|
124
142
|
this.transitions = actors_dist_xstateActors.formatTransitions(this);
|
|
125
143
|
if (this.config.always) {
|
|
126
|
-
this.always = actors_dist_xstateActors.toTransitionConfigArray(
|
|
144
|
+
this.always = actors_dist_xstateActors.toTransitionConfigArray(this.config.always).map(t => actors_dist_xstateActors.formatTransition(this, actors_dist_xstateActors.NULL_EVENT, t));
|
|
127
145
|
}
|
|
128
146
|
Object.keys(this.states).forEach(key => {
|
|
129
147
|
this.states[key]._initialize();
|
|
@@ -142,13 +160,13 @@ class StateNode {
|
|
|
142
160
|
initial: this.initial ? {
|
|
143
161
|
target: this.initial.target,
|
|
144
162
|
source: this,
|
|
145
|
-
actions: this.initial.actions,
|
|
163
|
+
actions: this.initial.actions.map(toSerializableActon),
|
|
146
164
|
eventType: null,
|
|
147
165
|
reenter: false,
|
|
148
166
|
toJSON: () => ({
|
|
149
167
|
target: this.initial.target.map(t => `#${t.id}`),
|
|
150
168
|
source: `#${this.id}`,
|
|
151
|
-
actions: this.initial.actions,
|
|
169
|
+
actions: this.initial.actions.map(toSerializableActon),
|
|
152
170
|
eventType: null
|
|
153
171
|
})
|
|
154
172
|
} : undefined,
|
|
@@ -157,9 +175,12 @@ class StateNode {
|
|
|
157
175
|
return state.definition;
|
|
158
176
|
}),
|
|
159
177
|
on: this.on,
|
|
160
|
-
transitions: this.transitions
|
|
161
|
-
|
|
162
|
-
|
|
178
|
+
transitions: [...this.transitions.values()].flat().map(t => ({
|
|
179
|
+
...t,
|
|
180
|
+
actions: t.actions.map(toSerializableActon)
|
|
181
|
+
})),
|
|
182
|
+
entry: this.entry.map(toSerializableActon),
|
|
183
|
+
exit: this.exit.map(toSerializableActon),
|
|
163
184
|
meta: this.meta,
|
|
164
185
|
order: this.order || -1,
|
|
165
186
|
output: this.output,
|
|
@@ -184,7 +205,9 @@ class StateNode {
|
|
|
184
205
|
const {
|
|
185
206
|
systemId
|
|
186
207
|
} = invokeConfig;
|
|
187
|
-
|
|
208
|
+
|
|
209
|
+
// TODO: resolving should not happen here
|
|
210
|
+
const resolvedSrc = typeof src === 'string' ? src : !('type' in src) ? resolvedId : src;
|
|
188
211
|
if (!this.machine.implementations.actors[resolvedId] && typeof src !== 'string' && !('type' in src)) {
|
|
189
212
|
this.machine.implementations.actors = {
|
|
190
213
|
...this.machine.implementations.actors,
|
|
@@ -193,7 +216,7 @@ class StateNode {
|
|
|
193
216
|
};
|
|
194
217
|
}
|
|
195
218
|
return {
|
|
196
|
-
type:
|
|
219
|
+
type: 'xstate.invoke',
|
|
197
220
|
...invokeConfig,
|
|
198
221
|
src: resolvedSrc,
|
|
199
222
|
id: resolvedId,
|
|
@@ -206,7 +229,7 @@ class StateNode {
|
|
|
206
229
|
} = invokeConfig;
|
|
207
230
|
return {
|
|
208
231
|
...invokeDefValues,
|
|
209
|
-
type:
|
|
232
|
+
type: 'xstate.invoke',
|
|
210
233
|
src: resolvedSrc,
|
|
211
234
|
id: resolvedId
|
|
212
235
|
};
|
|
@@ -221,9 +244,9 @@ class StateNode {
|
|
|
221
244
|
get on() {
|
|
222
245
|
return actors_dist_xstateActors.memo(this, 'on', () => {
|
|
223
246
|
const transitions = this.transitions;
|
|
224
|
-
return transitions.reduce((map, transition) => {
|
|
225
|
-
map[
|
|
226
|
-
map[
|
|
247
|
+
return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {
|
|
248
|
+
map[descriptor] = map[descriptor] || [];
|
|
249
|
+
map[descriptor].push(transition);
|
|
227
250
|
return map;
|
|
228
251
|
}, {});
|
|
229
252
|
});
|
|
@@ -310,9 +333,9 @@ class StateNode {
|
|
|
310
333
|
* Excludes any inert events.
|
|
311
334
|
*/
|
|
312
335
|
get ownEvents() {
|
|
313
|
-
const events = new Set(this.transitions.filter(
|
|
314
|
-
return !(!transition.target && !transition.actions.length && !transition.reenter);
|
|
315
|
-
})
|
|
336
|
+
const events = new Set([...this.transitions.keys()].filter(descriptor => {
|
|
337
|
+
return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));
|
|
338
|
+
}));
|
|
316
339
|
return Array.from(events);
|
|
317
340
|
}
|
|
318
341
|
}
|
|
@@ -731,7 +754,7 @@ function waitFor(actorRef, predicate, options) {
|
|
|
731
754
|
});
|
|
732
755
|
}
|
|
733
756
|
|
|
734
|
-
exports.
|
|
757
|
+
exports.ConstantPrefix = actors_dist_xstateActors.ConstantPrefix;
|
|
735
758
|
exports.Interpreter = actors_dist_xstateActors.Interpreter;
|
|
736
759
|
exports.InterpreterStatus = actors_dist_xstateActors.ActorStatus;
|
|
737
760
|
exports.SpecialTargets = actors_dist_xstateActors.SpecialTargets;
|