xstate 6.0.0-alpha.11 → 6.0.0-alpha.13
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/dist/{StateMachine-0aa98f54.development.esm.js → StateMachine-193c2d4d.development.esm.js} +43 -2
- package/dist/{StateMachine-aef700df.cjs.js → StateMachine-1b26c5de.cjs.js} +43 -2
- package/dist/{StateMachine-da872dde.development.cjs.js → StateMachine-3120a7ff.development.cjs.js} +43 -2
- package/dist/{StateMachine-d4931336.esm.js → StateMachine-614c0f36.esm.js} +43 -2
- package/dist/declarations/src/StateMachine.d.ts +1 -0
- package/dist/declarations/src/actors/promise.d.ts +4 -2
- package/dist/declarations/src/createActor.d.ts +2 -8
- package/dist/declarations/src/createMachineFromConfig.d.ts +56 -25
- package/dist/declarations/src/fsm.d.ts +74 -0
- package/dist/declarations/src/index.d.ts +2 -1
- package/dist/declarations/src/serialize.d.ts +8 -22
- package/dist/declarations/src/setup.d.ts +54 -23
- package/dist/declarations/src/stateUtils.d.ts +3 -1
- package/dist/declarations/src/transitionActions.d.ts +1 -1
- package/dist/declarations/src/types.d.ts +17 -7
- package/dist/declarations/src/types.v6.d.ts +25 -6
- package/dist/{index-219cb621.development.cjs.js → index-08d86676.development.cjs.js} +48 -27
- package/dist/{index-559ceab3.cjs.js → index-32631949.cjs.js} +48 -27
- package/dist/{index-8828376f.esm.js → index-603c1cda.esm.js} +45 -28
- package/dist/{index-2f2fbd9b.development.esm.js → index-7081e0c9.development.esm.js} +45 -28
- package/dist/xstate-actors.cjs.js +1 -1
- package/dist/xstate-actors.development.cjs.js +1 -1
- package/dist/xstate-actors.development.esm.js +1 -1
- package/dist/xstate-actors.esm.js +1 -1
- package/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/xstate-graph.cjs.js +2 -2
- package/dist/xstate-graph.development.cjs.js +2 -2
- package/dist/xstate-graph.development.esm.js +2 -2
- package/dist/xstate-graph.esm.js +2 -2
- package/dist/xstate-graph.umd.min.js +1 -1
- package/dist/xstate-graph.umd.min.js.map +1 -1
- package/dist/xstate.cjs.js +835 -144
- package/dist/xstate.cjs.mjs +1 -0
- package/dist/xstate.development.cjs.js +835 -144
- package/dist/xstate.development.cjs.mjs +1 -0
- package/dist/xstate.development.esm.js +838 -148
- package/dist/xstate.esm.js +838 -148
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { type Actor, type RequiredActorOptionsKeys } from "./createActor.js";
|
|
|
4
4
|
import { AnyActorRef, AnyActorLogic, ActorRefFromLogic, AnyStateNode, EventObject, AnyEventObject, EventDescriptor, ExtractEvent, MachineContext, ProvidedActor, RoutableStateId, StateSchema, StateValue, ToChildren, MetaObject, Cast, Compute, EnqueueObject, SystemRegistry, RegistryKeyForLogic, ActorOptions, Observer, Subscription, OutputArg } from "./types.js";
|
|
5
5
|
import { AnyActorSystem } from "./system.js";
|
|
6
6
|
import { InspectionEvent } from "./inspection.js";
|
|
7
|
-
import { DelayMapFromNames, InferChildren, Implementations, InferOutput, InferEvents, Next_MachineConfig, Next_StateNodeConfig, WithDefault } from "./types.v6.js";
|
|
7
|
+
import { ActionSchemas, DelayMapFromNames, GuardSchemas, InferChildren, InferActions, InferGuards, Implementations, InferOutput, InferEvents, Next_MachineConfig, Next_StateNodeConfig, WithDefault } from "./types.v6.js";
|
|
8
8
|
export type SetupConfig<TSchemas extends SetupSchemas, TStates extends Record<string, SetupStateSchema>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> = {
|
|
9
9
|
schemas?: TSchemas & SetupSchemas;
|
|
10
10
|
states?: TStates;
|
|
@@ -57,6 +57,8 @@ export type SetupStateSchemas = {
|
|
|
57
57
|
export type SetupSchemas = {
|
|
58
58
|
context?: StandardSchemaV1;
|
|
59
59
|
events?: Record<string, StandardSchemaV1>;
|
|
60
|
+
actions?: ActionSchemas;
|
|
61
|
+
guards?: GuardSchemas;
|
|
60
62
|
emitted?: Record<string, StandardSchemaV1>;
|
|
61
63
|
input?: StandardSchemaV1;
|
|
62
64
|
output?: StandardSchemaV1;
|
|
@@ -71,7 +73,9 @@ export interface SetupStateSchema {
|
|
|
71
73
|
}
|
|
72
74
|
type SetupSchema<TSchemas, TKey extends keyof SetupSchemas> = TKey extends keyof TSchemas ? TSchemas[TKey] extends StandardSchemaV1 ? TSchemas[TKey] : never : never;
|
|
73
75
|
type SetupSchemaMap<TSchemas, TKey extends 'events' | 'emitted' | 'children'> = TKey extends keyof TSchemas ? TSchemas[TKey] extends Record<string, StandardSchemaV1> ? TSchemas[TKey] : never : never;
|
|
74
|
-
type
|
|
76
|
+
type SetupActionSchemaMap<TSchemas> = 'actions' extends keyof TSchemas ? TSchemas['actions'] extends ActionSchemas ? TSchemas['actions'] : never : never;
|
|
77
|
+
type SetupGuardSchemaMap<TSchemas> = 'guards' extends keyof TSchemas ? TSchemas['guards'] extends GuardSchemas ? TSchemas['guards'] : never : never;
|
|
78
|
+
type SetupOrConfigSchema<TSchemas, TKey extends Exclude<keyof SetupSchemas, 'events' | 'actions' | 'guards' | 'emitted' | 'children'>, TConfigSchema extends StandardSchemaV1> = [SetupSchema<TSchemas, TKey>] extends [never] ? TConfigSchema : SetupSchema<TSchemas, TKey>;
|
|
75
79
|
type SetupOrConfigSchemaMap<TSchemas, TKey extends 'events' | 'emitted' | 'children', TConfigSchemaMap extends Record<string, StandardSchemaV1>> = [SetupSchemaMap<TSchemas, TKey>] extends [never] ? TConfigSchemaMap : SetupSchemaMap<TSchemas, TKey>;
|
|
76
80
|
type SetupStateKeys<TStateSchemas extends Record<string, SetupStateSchema>> = keyof TStateSchemas & string;
|
|
77
81
|
type SetupStateKey<TStateSchemas extends Record<string, SetupStateSchema>> = string extends SetupStateKeys<TStateSchemas> ? string : [SetupStateKeys<TStateSchemas>] extends [never] ? string : SetupStateKeys<TStateSchemas>;
|
|
@@ -115,6 +119,12 @@ type SetupMeta<TSchemas, TMetaSchema extends StandardSchemaV1> = [
|
|
|
115
119
|
SetupSchema<TSchemas, 'meta'>
|
|
116
120
|
] extends [never] ? InferOutput<TMetaSchema, MetaObject> : InferOutput<SetupSchema<TSchemas, 'meta'>, MetaObject>;
|
|
117
121
|
type SetupChildren<TSchemas, TChildrenSchemaMap extends Record<string, StandardSchemaV1>> = [SetupSchemaMap<TSchemas, 'children'>] extends [never] ? InferChildren<TChildrenSchemaMap> : InferChildren<SetupSchemaMap<TSchemas, 'children'>>;
|
|
122
|
+
type SetupActions<TSchemas, TActionMap extends Implementations['actions']> = [
|
|
123
|
+
SetupActionSchemaMap<TSchemas>
|
|
124
|
+
] extends [never] ? TActionMap : MergeImplementationMaps<InferActions<SetupActionSchemaMap<TSchemas>>, TActionMap>;
|
|
125
|
+
type SetupGuards<TSchemas, TGuardMap extends Implementations['guards']> = [
|
|
126
|
+
SetupGuardSchemaMap<TSchemas>
|
|
127
|
+
] extends [never] ? TGuardMap : MergeImplementationMaps<InferGuards<SetupGuardSchemaMap<TSchemas>>, TGuardMap>;
|
|
118
128
|
type MergeChildren<TChildren extends Record<string, AnyActorRef | undefined>, TActor extends ProvidedActor> = [keyof TChildren] extends [never] ? Compute<ToChildren<TActor>> : Compute<TChildren>;
|
|
119
129
|
type MergeImplementationMaps<TBase extends Record<string, unknown>, TExtension extends Record<string, unknown>> = Compute<TBase & TExtension>;
|
|
120
130
|
type DelayNamesFromConfigOrString<TConfig> = TConfig extends {
|
|
@@ -212,32 +222,32 @@ type SetupMachineConfig<TStateSchemas extends Record<string, SetupStateSchema>,
|
|
|
212
222
|
initial?: SetupStateKey<TStateSchemas> | InitialTransitionWithInput<TStateSchemas, TContext, TEvent> | undefined;
|
|
213
223
|
on?: StateTransitions<TStateSchemas, TContext, SetupContextShape<TSchemas, TContextSchema, TContext>, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
214
224
|
always?: StateTransitionConfigOrTarget<TStateSchemas, TContext, SetupContextShape<TSchemas, TContextSchema, TContext>, TEvent, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
215
|
-
states?: StatesWithInput<TStateSchemas, TStateSchemas, TContext, SetupContextShape<TSchemas, TContextSchema, TContext>, TEvent, TChildren, TDelays, TTag, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
225
|
+
states?: StatesWithInput<TStateSchemas, TStateSchemas, TContext, SetupContextShape<TSchemas, TContextSchema, TContext>, TEvent, TChildren, TDelays, TTag, SetupOutput<TSchemas, TOutputSchema>, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
216
226
|
};
|
|
217
227
|
/** States config type that provides typed input for known states */
|
|
218
|
-
type StatesWithInput<TRootStateSchemas extends Record<string, SetupStateSchema>, TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TDelays extends string, TTag extends string, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = {
|
|
219
|
-
[K in keyof TStateSchemas & string]?: StateNodeConfigWithNestedInput<TRootStateSchemas, TStateSchemas[K], TContext, TContextShape, TEvent, TChildren, TDelays, TTag, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
228
|
+
type StatesWithInput<TRootStateSchemas extends Record<string, SetupStateSchema>, TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TDelays extends string, TTag extends string, TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = {
|
|
229
|
+
[K in keyof TStateSchemas & string]?: StateNodeConfigWithNestedInput<TRootStateSchemas, TStateSchemas[K], TContext, TContextShape, TEvent, TChildren, TDelays, TTag, TOutput, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
220
230
|
};
|
|
221
231
|
/** State node config that recursively applies typed input for nested states */
|
|
222
|
-
type StateNodeConfigWithNestedInput<TSiblingStateSchemas extends Record<string, SetupStateSchema>, TStateSchema extends SetupStateSchema, TContext extends MachineContext, TContextShape, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TDelays extends string, TTag extends string, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = WithNestedStates<Omit<Next_StateNodeConfig<StateContext<TStateSchema, TContext>, TEvent, TDelays, TTag,
|
|
232
|
+
type StateNodeConfigWithNestedInput<TSiblingStateSchemas extends Record<string, SetupStateSchema>, TStateSchema extends SetupStateSchema, TContext extends MachineContext, TContextShape, TEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TDelays extends string, TTag extends string, TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = WithNestedStates<Omit<Next_StateNodeConfig<StateContext<TStateSchema, TContext>, TEvent, TDelays, TTag, TOutput, TEmitted, TMeta, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, StateInput<TStateSchema>, Record<string, unknown>, TSystemRegistry>, 'on' | 'always' | 'initial'> & {
|
|
223
233
|
initial?: TStateSchema['states'] extends Record<string, SetupStateSchema> ? SetupStateKey<TStateSchema['states']> | InitialTransitionWithInput<TStateSchema['states'], StateContext<TStateSchema, TContext>, TEvent> : string | {
|
|
224
234
|
target: string;
|
|
225
235
|
input?: Record<string, unknown>;
|
|
226
236
|
} | undefined;
|
|
227
237
|
on?: StateTransitions<TSiblingStateSchemas, StateContext<TStateSchema, TContext>, StateContextShape<TStateSchema, TContextShape>, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
228
238
|
always?: StateTransitionConfigOrTarget<TSiblingStateSchemas, StateContext<TStateSchema, TContext>, StateContextShape<TStateSchema, TContextShape>, TEvent, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
229
|
-
}, TStateSchema['states'] extends Record<string, SetupStateSchema> ? StatesWithInput<TStateSchema['states'], TStateSchema['states'], TContext, StateContextShape<TStateSchema, TContextShape>, TEvent, TChildren, TDelays, TTag, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry> : {
|
|
230
|
-
[K in string]?: Next_StateNodeConfig<TContext, TEvent, TDelays, TTag,
|
|
239
|
+
}, TStateSchema['states'] extends Record<string, SetupStateSchema> ? StatesWithInput<TStateSchema['states'], TStateSchema['states'], TContext, StateContextShape<TStateSchema, TContextShape>, TEvent, TChildren, TDelays, TTag, TOutput, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry> : {
|
|
240
|
+
[K in string]?: Next_StateNodeConfig<TContext, TEvent, TDelays, TTag, TOutput, TEmitted, TMeta, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, undefined, Record<string, unknown>, TSystemRegistry>;
|
|
231
241
|
}>;
|
|
232
242
|
type StateTransitions<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = {
|
|
233
243
|
[K in EventDescriptor<TEvent>]?: StateTransitionConfigOrTarget<TStateSchemas, TContext, TContextShape, ExtractEvent<TEvent, K>, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
234
244
|
};
|
|
235
|
-
type StateTransitionConfigOrTarget<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = undefined | StateTransitionObjectConfig<TStateSchemas, TContext, TContextShape, TExpressionEvent, TMeta> | StateTransitionFunction<TStateSchemas, TContext, TContextShape, TExpressionEvent, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
236
|
-
type StateTransitionObjectConfig<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TExpressionEvent extends EventObject, TMeta extends MetaObject> = (StateTransitionResult<TStateSchemas, TContext, TContextShape, TMeta> & {
|
|
245
|
+
type StateTransitionConfigOrTarget<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = undefined | StateTransitionObjectConfig<TStateSchemas, TContext, TContextShape, TExpressionEvent, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry> | StateTransitionFunction<TStateSchemas, TContext, TContextShape, TExpressionEvent, TEvent, TEmitted, TChildren, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
246
|
+
type StateTransitionObjectConfig<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TExpressionEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = (StateTransitionResult<TStateSchemas, TContext, TContextShape, TMeta, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry, true> & {
|
|
237
247
|
description?: string;
|
|
238
248
|
}) | {
|
|
239
249
|
target: SetupStateTarget<TStateSchemas>[];
|
|
240
|
-
context?:
|
|
250
|
+
context?: StateTransitionContext<true, TContext, TContextShape, TContextShape, TContext, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
241
251
|
description?: string;
|
|
242
252
|
reenter?: boolean;
|
|
243
253
|
meta?: TMeta;
|
|
@@ -246,6 +256,21 @@ type StateTransitionObjectConfig<TStateSchemas extends Record<string, SetupState
|
|
|
246
256
|
event: TExpressionEvent;
|
|
247
257
|
} & OutputArg<TExpressionEvent>) => Record<string, unknown>);
|
|
248
258
|
};
|
|
259
|
+
type StateTransitionContextMapper<TContext extends MachineContext, TContextShape, TTargetContextShape, TResolvedTargetContext extends MachineContext, TExpressionEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = (args: {
|
|
260
|
+
context: TContext;
|
|
261
|
+
event: TExpressionEvent;
|
|
262
|
+
self: AnyActorRef;
|
|
263
|
+
parent: AnyActorRef | undefined;
|
|
264
|
+
value: StateValue;
|
|
265
|
+
children: TChildren;
|
|
266
|
+
system: SystemRuntime<TSystemRegistry>;
|
|
267
|
+
actions: TActionMap;
|
|
268
|
+
actorSources: TActorMap;
|
|
269
|
+
guards: TGuardMap;
|
|
270
|
+
delays: TDelayMap;
|
|
271
|
+
} & OutputArg<TExpressionEvent>) => ContextPatch<TContextShape, TTargetContextShape, TResolvedTargetContext>;
|
|
272
|
+
type StateTransitionContextOrMapper<TContext extends MachineContext, TContextShape, TTargetContextShape, TResolvedTargetContext extends MachineContext, TExpressionEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = ContextPatch<TContextShape, TTargetContextShape, TResolvedTargetContext> | StateTransitionContextMapper<TContext, TContextShape, TTargetContextShape, TResolvedTargetContext, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
273
|
+
type StateTransitionContext<TAllowMapper extends boolean, TContext extends MachineContext, TContextShape, TTargetContextShape, TResolvedTargetContext extends MachineContext, TExpressionEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = TAllowMapper extends true ? StateTransitionContextOrMapper<TContext, TContextShape, TTargetContextShape, TResolvedTargetContext, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry> : ContextPatch<TContextShape, TTargetContextShape, TResolvedTargetContext>;
|
|
249
274
|
type StateTransitionFunction<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry> = (args: {
|
|
250
275
|
context: TContext;
|
|
251
276
|
event: TExpressionEvent;
|
|
@@ -258,10 +283,10 @@ type StateTransitionFunction<TStateSchemas extends Record<string, SetupStateSche
|
|
|
258
283
|
actorSources: TActorMap;
|
|
259
284
|
guards: TGuardMap;
|
|
260
285
|
delays: TDelayMap;
|
|
261
|
-
} & OutputArg<TExpressionEvent>, enq: EnqueueObject<TEvent, TEmitted, TSystemRegistry>) => StateTransitionResult<TStateSchemas, TContext, TContextShape, TMeta> | void;
|
|
262
|
-
type StateTransitionResult<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TMeta extends MetaObject> = {
|
|
286
|
+
} & OutputArg<TExpressionEvent>, enq: EnqueueObject<TEvent, TEmitted, TSystemRegistry>) => StateTransitionResult<TStateSchemas, TContext, TContextShape, TMeta, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry, false> | void;
|
|
287
|
+
type StateTransitionResult<TStateSchemas extends Record<string, SetupStateSchema>, TContext extends MachineContext, TContextShape, TMeta extends MetaObject, TExpressionEvent extends EventObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TSystemRegistry extends SystemRegistry, TAllowContextMapper extends boolean> = {
|
|
263
288
|
target?: never;
|
|
264
|
-
context?:
|
|
289
|
+
context?: StateTransitionContext<TAllowContextMapper, TContext, TContextShape, TContextShape, TContext, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
265
290
|
reenter?: boolean;
|
|
266
291
|
meta?: TMeta;
|
|
267
292
|
} | {
|
|
@@ -276,17 +301,21 @@ type StateTransitionResult<TStateSchemas extends Record<string, SetupStateSchema
|
|
|
276
301
|
} & ([TContextShape] extends [
|
|
277
302
|
StateContextShape<TStateSchemas[K], TContextShape>
|
|
278
303
|
] ? {
|
|
279
|
-
context?:
|
|
304
|
+
context?: StateTransitionContext<TAllowContextMapper, TContext, TContextShape, StateContextShape<TStateSchemas[K], TContextShape>, StateContext<TStateSchemas[K], TContext>, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
280
305
|
} : {
|
|
281
|
-
context:
|
|
306
|
+
context: StateTransitionContext<TAllowContextMapper, TContext, TContextShape, StateContextShape<TStateSchemas[K], TContextShape>, StateContext<TStateSchemas[K], TContext>, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
282
307
|
});
|
|
283
308
|
}[keyof TStateSchemas & string] | {
|
|
284
309
|
target: Exclude<SetupStateTarget<TStateSchemas>, keyof TStateSchemas & string>;
|
|
285
|
-
context?:
|
|
310
|
+
context?: StateTransitionContext<TAllowContextMapper, TContext, TContextShape, TContextShape, TContext, TExpressionEvent, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TSystemRegistry>;
|
|
286
311
|
reenter?: boolean;
|
|
287
312
|
meta?: TMeta;
|
|
288
313
|
};
|
|
289
|
-
type ContextPatch<TCurrentContext, TTargetContext, TResolvedTargetContext extends MachineContext> = Compute<Partial<TResolvedTargetContext> & Pick<TResolvedTargetContext, Extract<RequiredContextKeys<TCurrentContext, TTargetContext>, string
|
|
314
|
+
type ContextPatch<TCurrentContext, TTargetContext, TResolvedTargetContext extends MachineContext> = Compute<Partial<TResolvedTargetContext> & Pick<TResolvedTargetContext, Extract<RequiredContextKeys<TCurrentContext, TTargetContext>, string>> & {
|
|
315
|
+
call?: never;
|
|
316
|
+
apply?: never;
|
|
317
|
+
bind?: never;
|
|
318
|
+
}>;
|
|
290
319
|
type RequiredContextKeys<TCurrentContext, TTargetContext> = {
|
|
291
320
|
[K in keyof TTargetContext]-?: K extends keyof TCurrentContext ? [TCurrentContext[K]] extends [TTargetContext[K]] ? never : K : K;
|
|
292
321
|
}[keyof TTargetContext];
|
|
@@ -305,11 +334,13 @@ export interface SetupReturn<TStates extends Record<string, SetupStateSchema> =
|
|
|
305
334
|
/** Extends the setup configuration */
|
|
306
335
|
extend<const TExtendSchemas extends SetupSchemas = {}, const TExtendStates extends Record<string, SetupStateSchema> = {}, TExtendActionMap extends Implementations['actions'] = {}, TExtendActorMap extends Implementations['actorSources'] = {}, TExtendGuardMap extends Implementations['guards'] = {}, TExtendDelayMap extends Implementations['delays'] = {}>(config: SetupConfig<TExtendSchemas, TExtendStates, TExtendActionMap, TExtendActorMap, TExtendGuardMap, TExtendDelayMap>): SetupReturn<MergeImplementationMaps<TStates, TExtendStates>, MergeImplementationMaps<TSchemas, TExtendSchemas>, MergeImplementationMaps<TSetupActionMap, TExtendActionMap>, MergeImplementationMaps<TSetupActorMap, TExtendActorMap>, MergeImplementationMaps<TSetupGuardMap, TExtendGuardMap>, MergeImplementationMaps<TSetupDelayMap, TExtendDelayMap>, TSetupDelays | Extract<keyof TExtendDelayMap, string>, TSystemRegistry>;
|
|
307
336
|
/** Creates a state machine with the setup configuration */
|
|
308
|
-
createMachine<TContextSchema extends StandardSchemaV1 = StandardSchemaV1, const TEventSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, TEmittedSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, TInputSchema extends StandardSchemaV1 = StandardSchemaV1, TOutputSchema extends StandardSchemaV1 = StandardSchemaV1, TMetaSchema extends StandardSchemaV1 = StandardSchemaV1, TTagSchema extends StandardSchemaV1 = StandardSchemaV1, const TChildrenSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, _TEvent extends EventObject = EventObject, TActor extends ProvidedActor = ProvidedActor, TActionMap extends Implementations['actions'] = {}, TActorMap extends Implementations['actorSources'] = {}, TGuardMap extends Implementations['guards'] = {}, TDelayMap extends Implementations['delays'] = {}, TDelays extends string = Extract<keyof TDelayMap, string>, TTag extends SetupTags<TSchemas, TTagSchema> = SetupTags<TSchemas, TTagSchema>, TInput = unknown, TConfig extends SetupMachineConfig<TStates, TSchemas, TContextSchema, TEventSchemaMap, TEmittedSchemaMap, TInputSchema, TOutputSchema, TMetaSchema, TTagSchema, TChildrenSchemaMap, SetupContext<TSchemas, TContextSchema>, SetupEvents<TSchemas, TEventSchemaMap>, Cast<MergeChildren<SetupChildren<TSchemas, TChildrenSchemaMap>, TActor>, Record<string, AnyActorRef | undefined>>, TSetupDelays | TDelays, TTag, SetupEmitted<TSchemas, TEmittedSchemaMap>, SetupMeta<TSchemas, TMetaSchema>, MergeImplementationMaps<
|
|
337
|
+
createMachine<TContextSchema extends StandardSchemaV1 = StandardSchemaV1, const TEventSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, TEmittedSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, TInputSchema extends StandardSchemaV1 = StandardSchemaV1, TOutputSchema extends StandardSchemaV1 = StandardSchemaV1, TMetaSchema extends StandardSchemaV1 = StandardSchemaV1, TTagSchema extends StandardSchemaV1 = StandardSchemaV1, const TChildrenSchemaMap extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>, const TActionSchemaMap extends ActionSchemas = {}, const TGuardSchemaMap extends GuardSchemas = {}, _TEvent extends EventObject = EventObject, TActor extends ProvidedActor = ProvidedActor, TActionMap extends Implementations['actions'] = {}, TActorMap extends Implementations['actorSources'] = {}, TGuardMap extends Implementations['guards'] = {}, TDelayMap extends Implementations['delays'] = {}, TDelays extends string = Extract<keyof TDelayMap, string>, TTag extends SetupTags<TSchemas, TTagSchema> = SetupTags<TSchemas, TTagSchema>, TInput = unknown, TConfig extends SetupMachineConfig<TStates, TSchemas, TContextSchema, TEventSchemaMap, TEmittedSchemaMap, TInputSchema, TOutputSchema, TMetaSchema, TTagSchema, TChildrenSchemaMap, SetupContext<TSchemas, TContextSchema>, SetupEvents<TSchemas, TEventSchemaMap>, Cast<MergeChildren<SetupChildren<TSchemas, TChildrenSchemaMap>, TActor>, Record<string, AnyActorRef | undefined>>, TSetupDelays | TDelays, TTag, SetupEmitted<TSchemas, TEmittedSchemaMap>, SetupMeta<TSchemas, TMetaSchema>, MergeImplementationMaps<SetupActions<TSchemas, TSetupActionMap>, MergeImplementationMaps<InferActions<TActionSchemaMap>, TActionMap>>, MergeImplementationMaps<TSetupActorMap, TActorMap>, MergeImplementationMaps<SetupGuards<TSchemas, TSetupGuardMap>, MergeImplementationMaps<InferGuards<TGuardSchemaMap>, TGuardMap>>, MergeImplementationMaps<TSetupDelayMap, TDelayMap>, TSystemRegistry, SetupContextRequired<TSchemas, TContextSchema>, TDelays, TActionMap, TActorMap, TGuardMap> = SetupMachineConfig<TStates, TSchemas, TContextSchema, TEventSchemaMap, TEmittedSchemaMap, TInputSchema, TOutputSchema, TMetaSchema, TTagSchema, TChildrenSchemaMap, SetupContext<TSchemas, TContextSchema>, SetupEvents<TSchemas, TEventSchemaMap>, Cast<MergeChildren<SetupChildren<TSchemas, TChildrenSchemaMap>, TActor>, Record<string, AnyActorRef | undefined>>, TSetupDelays | TDelays, TTag, SetupEmitted<TSchemas, TEmittedSchemaMap>, SetupMeta<TSchemas, TMetaSchema>, MergeImplementationMaps<SetupActions<TSchemas, TSetupActionMap>, MergeImplementationMaps<InferActions<TActionSchemaMap>, TActionMap>>, MergeImplementationMaps<TSetupActorMap, TActorMap>, MergeImplementationMaps<SetupGuards<TSchemas, TSetupGuardMap>, MergeImplementationMaps<InferGuards<TGuardSchemaMap>, TGuardMap>>, MergeImplementationMaps<TSetupDelayMap, TDelayMap>, TSystemRegistry, SetupContextRequired<TSchemas, TContextSchema>, TDelays, TActionMap, TActorMap, TGuardMap>>(config: {
|
|
309
338
|
schemas?: {
|
|
310
339
|
events?: TEventSchemaMap;
|
|
311
340
|
context?: TContextSchema;
|
|
312
341
|
emitted?: TEmittedSchemaMap;
|
|
342
|
+
actions?: TActionSchemaMap;
|
|
343
|
+
guards?: TGuardSchemaMap;
|
|
313
344
|
input?: TInputSchema;
|
|
314
345
|
output?: TOutputSchema;
|
|
315
346
|
meta?: TMetaSchema;
|
|
@@ -325,9 +356,9 @@ export interface SetupReturn<TStates extends Record<string, SetupStateSchema> =
|
|
|
325
356
|
to: RoutableStateId<Cast<TConfig, StateSchema>>;
|
|
326
357
|
}), Cast<MergeChildren<SetupChildren<TSchemas, TChildrenSchemaMap>, TActor>, Record<string, AnyActorRef | undefined>>, StateValue, TTag & string, [
|
|
327
358
|
SetupSchema<TSchemas, 'input'>
|
|
328
|
-
] extends [never] ? TInput : SetupInput<TSchemas, TInputSchema>, SetupOutput<TSchemas, TOutputSchema>, SetupEmitted<TSchemas, TEmittedSchemaMap>, SetupMeta<TSchemas, TMetaSchema>, MergeStateSchema<Cast<TConfig, StateSchema>, SetupStatesToStateSchema<TStates>>, MergeImplementationMaps<
|
|
359
|
+
] extends [never] ? TInput : SetupInput<TSchemas, TInputSchema>, SetupOutput<TSchemas, TOutputSchema>, SetupEmitted<TSchemas, TEmittedSchemaMap>, SetupMeta<TSchemas, TMetaSchema>, MergeStateSchema<Cast<TConfig, StateSchema>, SetupStatesToStateSchema<TStates>>, MergeImplementationMaps<SetupActions<TSchemas, TSetupActionMap>, MergeImplementationMaps<InferActions<TActionSchemaMap>, TActionMap>>, MergeImplementationMaps<TSetupActorMap, TActorMap>, MergeImplementationMaps<SetupGuards<TSchemas, TSetupGuardMap>, MergeImplementationMaps<InferGuards<TGuardSchemaMap>, TGuardMap>>, DelayMapFromNames<TSetupDelays | TDelays, MergeImplementationMaps<TSetupDelayMap, TDelayMap>>>;
|
|
329
360
|
/** Creates a state node config with the setup configuration */
|
|
330
|
-
createStateConfig<const TConfig extends StateNodeConfigWithNestedInput<TStates, SetupStateSchema, SetupContext<TSchemas, StandardSchemaV1>, SetupContextShape<TSchemas, StandardSchemaV1, SetupContext<TSchemas, StandardSchemaV1>>, SetupEvents<TSchemas, Record<string, StandardSchemaV1>>, Cast<SetupChildren<TSchemas, Record<string, StandardSchemaV1>>, Record<string, AnyActorRef | undefined>>, string, SetupTags<TSchemas, StandardSchemaV1>, SetupEmitted<TSchemas, Record<string, StandardSchemaV1>>, SetupMeta<TSchemas, StandardSchemaV1>,
|
|
361
|
+
createStateConfig<const TConfig extends StateNodeConfigWithNestedInput<TStates, SetupStateSchema, SetupContext<TSchemas, StandardSchemaV1>, SetupContextShape<TSchemas, StandardSchemaV1, SetupContext<TSchemas, StandardSchemaV1>>, SetupEvents<TSchemas, Record<string, StandardSchemaV1>>, Cast<SetupChildren<TSchemas, Record<string, StandardSchemaV1>>, Record<string, AnyActorRef | undefined>>, string, SetupTags<TSchemas, StandardSchemaV1>, SetupOutput<TSchemas, StandardSchemaV1>, SetupEmitted<TSchemas, Record<string, StandardSchemaV1>>, SetupMeta<TSchemas, StandardSchemaV1>, SetupActions<TSchemas, TSetupActionMap>, TSetupActorMap, SetupGuards<TSchemas, TSetupGuardMap>, TSetupDelayMap, TSystemRegistry>>(config: TConfig): TConfig;
|
|
331
362
|
/** State input schemas from setup config */
|
|
332
363
|
states: TStates;
|
|
333
364
|
}
|
|
@@ -339,13 +370,13 @@ type SetupConfigStates<TConfig> = TConfig extends {
|
|
|
339
370
|
} ? TStates extends Record<string, SetupStateSchema> ? TStates : Record<string, SetupStateSchema> : Record<string, SetupStateSchema>;
|
|
340
371
|
type SetupConfigActions<TConfig> = TConfig extends {
|
|
341
372
|
actions?: infer TActions;
|
|
342
|
-
} ? TActions extends Implementations['actions'] ? TActions : {} : {}
|
|
373
|
+
} ? TActions extends Implementations['actions'] ? MergeImplementationMaps<SetupActions<SetupConfigSchemas<TConfig>, {}>, TActions> : SetupActions<SetupConfigSchemas<TConfig>, {}> : SetupActions<SetupConfigSchemas<TConfig>, {}>;
|
|
343
374
|
type SetupConfigActorSources<TConfig> = TConfig extends {
|
|
344
375
|
actorSources?: infer TActorSources;
|
|
345
376
|
} ? TActorSources extends Implementations['actorSources'] ? TActorSources : {} : {};
|
|
346
377
|
type SetupConfigGuards<TConfig> = TConfig extends {
|
|
347
378
|
guards?: infer TGuards;
|
|
348
|
-
} ? TGuards extends Implementations['guards'] ? TGuards : {} : {}
|
|
379
|
+
} ? TGuards extends Implementations['guards'] ? MergeImplementationMaps<SetupGuards<SetupConfigSchemas<TConfig>, {}>, TGuards> : SetupGuards<SetupConfigSchemas<TConfig>, {}> : SetupGuards<SetupConfigSchemas<TConfig>, {}>;
|
|
349
380
|
type SetupConfigDelays<TConfig> = TConfig extends {
|
|
350
381
|
delays?: infer TDelays;
|
|
351
382
|
} ? TDelays extends Implementations['delays'] ? TDelays : {} : {};
|
|
@@ -40,7 +40,9 @@ export declare function getTransitionResult(transition: Pick<AnyTransitionDefini
|
|
|
40
40
|
reenter?: AnyTransitionDefinition['reenter'];
|
|
41
41
|
input?: AnyTransitionDefinition['input'];
|
|
42
42
|
context?: AnyTransitionDefinition['context'];
|
|
43
|
-
}, snapshot: AnyMachineSnapshot, event: AnyEventObject, actorScope: AnyActorScope
|
|
43
|
+
}, snapshot: AnyMachineSnapshot, event: AnyEventObject, actorScope: AnyActorScope, options?: {
|
|
44
|
+
resolveActions?: boolean;
|
|
45
|
+
}): {
|
|
44
46
|
targets: Readonly<AnyStateNode[]> | undefined;
|
|
45
47
|
context: MachineContext | undefined;
|
|
46
48
|
actions: AnyAction[] | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { AnyAction, AnyActorScope, AnyEventObject, AnyMachineSnapshot, EnqueueObject, EventObject, ExecutableActionObject, SpecialExecutableAction } from "./types.js";
|
|
2
|
-
export declare function createTransitionEnqueue(actorScope: AnyActorScope, actions: any[], internalEvents: EventObject[], actorSubscriptions?: boolean): EnqueueObject<any, any>;
|
|
2
|
+
export declare function createTransitionEnqueue(actorScope: AnyActorScope, actions: any[], internalEvents: EventObject[], actorSubscriptions?: boolean, createActors?: boolean): EnqueueObject<any, any>;
|
|
3
3
|
export declare function isBuiltInExecutableAction(action: ExecutableActionObject): action is SpecialExecutableAction;
|
|
4
4
|
export declare function resolveActionsWithContext(currentSnapshot: AnyMachineSnapshot, event: AnyEventObject, actorScope: AnyActorScope, actions: AnyAction[]): [AnyMachineSnapshot, ExecutableActionObject[]];
|
|
@@ -130,12 +130,18 @@ export interface StateValueMap {
|
|
|
130
130
|
*/
|
|
131
131
|
export type StateValue = string | StateValueMap;
|
|
132
132
|
export type TransitionTarget = SingleOrArray<string>;
|
|
133
|
+
export type TransitionContextPatch<TContext extends MachineContext> = Partial<TContext> & {
|
|
134
|
+
call?: never;
|
|
135
|
+
apply?: never;
|
|
136
|
+
bind?: never;
|
|
137
|
+
};
|
|
138
|
+
export type TransitionContextMapper<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], _TCtx extends MachineContext = [TContext] extends [never] ? any : TContext> = (args: TransitionFunctionArgs<_TCtx, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>) => TransitionContextPatch<_TCtx>;
|
|
133
139
|
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> {
|
|
134
140
|
actions?: never;
|
|
135
141
|
guard?: unknown;
|
|
136
142
|
reenter?: boolean;
|
|
137
143
|
target?: TransitionTarget | undefined;
|
|
138
|
-
context?:
|
|
144
|
+
context?: TransitionContextPatch<TContext> | TransitionContextMapper<TContext, TExpressionEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>;
|
|
139
145
|
to?: TransitionConfigFunction<TContext, TExpressionEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
|
|
140
146
|
meta?: TMeta;
|
|
141
147
|
description?: string;
|
|
@@ -198,9 +204,9 @@ export type StateNodesConfig<TContext extends MachineContext, TEvent extends Eve
|
|
|
198
204
|
};
|
|
199
205
|
export type TransitionConfigTarget = string | undefined;
|
|
200
206
|
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent, TEmitted, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap> | TransitionConfigFunction<TContext, TExpressionEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>>;
|
|
201
|
-
export type TransitionConfigFunction<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, _TCtx = [TContext] extends [never] ? any : TContext> = (args: TransitionFunctionArgs<_TCtx, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>, enq: EnqueueObject<TEvent, TEmitted>) => {
|
|
207
|
+
export type TransitionConfigFunction<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, _TCtx extends MachineContext = [TContext] extends [never] ? any : TContext> = (args: TransitionFunctionArgs<_TCtx, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>, enq: EnqueueObject<TEvent, TEmitted>) => {
|
|
202
208
|
target?: string | string[];
|
|
203
|
-
context?:
|
|
209
|
+
context?: TransitionContextPatch<_TCtx>;
|
|
204
210
|
reenter?: boolean;
|
|
205
211
|
meta?: TMeta;
|
|
206
212
|
} | void;
|
|
@@ -679,6 +685,10 @@ export interface ActorRef<TSnapshot extends Snapshot<unknown>, TEvent extends Ev
|
|
|
679
685
|
type: TType;
|
|
680
686
|
})) => void) => Subscription;
|
|
681
687
|
}
|
|
688
|
+
type EventPayload<TEvent extends EventObject, TType extends TEvent['type']> = HomomorphicOmit<ExtractEvent<TEvent, TType>, 'type'>;
|
|
689
|
+
export type ActorTrigger<TEvent extends EventObject> = {
|
|
690
|
+
[K in TEvent['type']]: {} extends EventPayload<TEvent, K> ? () => void : (payload: EventPayload<TEvent, K>) => void;
|
|
691
|
+
};
|
|
682
692
|
/**
|
|
683
693
|
* Runtime-only actor capabilities.
|
|
684
694
|
*
|
|
@@ -687,7 +697,7 @@ export interface ActorRef<TSnapshot extends Snapshot<unknown>, TEvent extends Ev
|
|
|
687
697
|
* genuinely need lifecycle control such as starting, stopping, or accessing
|
|
688
698
|
* system-owned runtime state.
|
|
689
699
|
*/
|
|
690
|
-
export interface ActorRuntime<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, _TEmitted extends EventObject = EventObject> {
|
|
700
|
+
export interface ActorRuntime<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, _TEmitted extends EventObject = EventObject, TSendEvent extends EventObject = TEvent> {
|
|
691
701
|
/** The unique identifier for this actor relative to its parent. */
|
|
692
702
|
id: string;
|
|
693
703
|
/**
|
|
@@ -704,7 +714,7 @@ export interface ActorRuntime<TSnapshot extends Snapshot<unknown>, TEvent extend
|
|
|
704
714
|
_parent?: any;
|
|
705
715
|
system: any;
|
|
706
716
|
src: string | AnyActorLogic;
|
|
707
|
-
trigger:
|
|
717
|
+
trigger: ActorTrigger<TSendEvent>;
|
|
708
718
|
select<TSelected>(selector: (snapshot: TSnapshot) => TSelected, equalityFn?: (a: TSelected, b: TSelected) => boolean): Readable<TSelected>;
|
|
709
719
|
}
|
|
710
720
|
/**
|
|
@@ -714,7 +724,7 @@ export interface ActorRuntime<TSnapshot extends Snapshot<unknown>, TEvent extend
|
|
|
714
724
|
* lifecycle capabilities. Values returned by `createActor(...)` and
|
|
715
725
|
* `spawn(...)` naturally satisfy narrower `ActorRef` contracts.
|
|
716
726
|
*/
|
|
717
|
-
export interface ActorInstance<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject, TSendEvent extends EventObject = TEvent> extends ActorRuntime<TSnapshot, TEvent, TEmitted>, ActorRef<TSnapshot, TEvent, TEmitted, TSendEvent> {
|
|
727
|
+
export interface ActorInstance<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject, TSendEvent extends EventObject = TEvent> extends ActorRuntime<TSnapshot, TEvent, TEmitted, TSendEvent>, ActorRef<TSnapshot, TEvent, TEmitted, TSendEvent> {
|
|
718
728
|
}
|
|
719
729
|
/**
|
|
720
730
|
* The actor's own full self handle.
|
|
@@ -723,7 +733,7 @@ export interface ActorInstance<TSnapshot extends Snapshot<unknown>, TEvent exten
|
|
|
723
733
|
* can participate in runtime-owned behavior while still being usable wherever
|
|
724
734
|
* an `ActorRef` is expected.
|
|
725
735
|
*/
|
|
726
|
-
export type ActorSelf<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject, TSendEvent extends EventObject = TEvent> = ActorRuntime<TSnapshot, TEvent, TEmitted> & ActorRef<TSnapshot, TEvent, TEmitted, TSendEvent>;
|
|
736
|
+
export type ActorSelf<TSnapshot extends Snapshot<unknown>, TEvent extends EventObject, TEmitted extends EventObject = EventObject, TSendEvent extends EventObject = TEvent> = ActorRuntime<TSnapshot, TEvent, TEmitted, TSendEvent> & ActorRef<TSnapshot, TEvent, TEmitted, TSendEvent>;
|
|
727
737
|
export type ActorRefFrom<T> = T extends StateMachine<infer TContext, infer TEvent, infer TChildren, infer TStateValue, infer TTag, infer _TInput, infer TOutput, infer TEmitted, infer TMeta, infer TConfig, infer _TActionMap, infer _TActorMap, infer _TGuardMap, infer _TDelayMap> ? TConfig extends {
|
|
728
738
|
internalEvents?: readonly EventDescriptor<TEvent>[];
|
|
729
739
|
} ? ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta, any>, TEvent, TEmitted, ExcludeInternalEvents<TEvent, TConfig['internalEvents'] extends readonly EventDescriptor<TEvent>[] ? TConfig['internalEvents'] extends readonly (infer TDesc)[] ? Extract<TDesc, string> : never : never>> : ActorRef<MachineSnapshot<TContext, TEvent, TChildren, TStateValue, TTag, TOutput, TMeta, any>, TEvent, TEmitted> : T extends Promise<infer U> ? ActorRefFrom<AsyncActorLogic<U>> : T extends ActorLogic<infer TSnapshot, infer TEvent, infer _TInput, infer _TSystem, infer TEmitted> ? ActorRef<TSnapshot, TEvent, TEmitted> : never;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StandardSchemaV1 } from "./schema.types.js";
|
|
2
2
|
import { MachineSnapshot } from "./State.js";
|
|
3
|
-
import { Action, ActorLogic, ActorRef, ActorRefFromLogic, ActorSelf, AnyActorLogic, AnyActorRef, Compute, DoneActorEvent, DoNotInfer, EventDescriptor, EventObject, ExtractEvent, InitialContext, InputFrom, IsNever, MetaObject, NonReducibleUnknown, OutputFrom, SingleOrArray, SnapshotEvent, StateValue, TODO, TransitionConfigFunction, Values, AnyStateNode, SystemRegistry } from "./types.js";
|
|
3
|
+
import { Action, ActorLogic, ActorRef, ActorRefFromLogic, ActorSelf, AnyActorLogic, AnyActorRef, Compute, DoneActorEvent, DoNotInfer, EventDescriptor, EventObject, ExtractEvent, InitialContext, InputFrom, IsNever, MetaObject, NonReducibleUnknown, OutputFrom, SingleOrArray, SnapshotEvent, StateValue, TODO, TransitionContextMapper, TransitionContextPatch, TransitionConfigFunction, Values, AnyStateNode, SystemRegistry } from "./types.js";
|
|
4
4
|
import { MachineContext, Mapper } from "./types.js";
|
|
5
5
|
import { LowInfer } from "./types.js";
|
|
6
6
|
import { DoneStateEvent } from "./types.js";
|
|
@@ -11,7 +11,9 @@ export type InferOutput<T extends StandardSchemaV1, U> = Compute<StandardSchemaV
|
|
|
11
11
|
* are required on the event.
|
|
12
12
|
*/
|
|
13
13
|
export type InferEvents<TEventSchemaMap extends Record<string, StandardSchemaV1>> = Values<{
|
|
14
|
-
[K in keyof TEventSchemaMap & string]: StandardSchemaV1.InferOutput<TEventSchemaMap[K]> extends infer O ? unknown extends O ? O & {
|
|
14
|
+
[K in keyof TEventSchemaMap & string]: StandardSchemaV1.InferOutput<TEventSchemaMap[K]> extends infer O ? [O] extends [never] ? never : unknown extends O ? O & {
|
|
15
|
+
type: K;
|
|
16
|
+
} : [O] extends [void] ? {
|
|
15
17
|
type: K;
|
|
16
18
|
} : string extends keyof O ? [O[string]] extends [never] ? {
|
|
17
19
|
type: K;
|
|
@@ -24,6 +26,21 @@ export type InferEvents<TEventSchemaMap extends Record<string, StandardSchemaV1>
|
|
|
24
26
|
export type InferChildren<TChildrenSchemaMap extends Record<string, StandardSchemaV1>> = string extends keyof TChildrenSchemaMap ? {} : {
|
|
25
27
|
[K in keyof TChildrenSchemaMap & string]?: StandardSchemaV1.InferOutput<TChildrenSchemaMap[K]> extends AnyActorRef ? NormalizeActorRef<StandardSchemaV1.InferOutput<TChildrenSchemaMap[K]>> : never;
|
|
26
28
|
};
|
|
29
|
+
export type ActionSchemas = Record<string, {
|
|
30
|
+
params: StandardSchemaV1;
|
|
31
|
+
}>;
|
|
32
|
+
export type GuardSchemas = Record<string, {
|
|
33
|
+
params: StandardSchemaV1;
|
|
34
|
+
}>;
|
|
35
|
+
export type InferActions<TActionSchemaMap extends ActionSchemas> = string extends keyof TActionSchemaMap ? {} : {
|
|
36
|
+
[K in keyof TActionSchemaMap & string]: (params: StandardSchemaV1.InferOutput<TActionSchemaMap[K]['params']>) => void | {
|
|
37
|
+
context?: any;
|
|
38
|
+
children?: any;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export type InferGuards<TGuardSchemaMap extends GuardSchemas> = string extends keyof TGuardSchemaMap ? {} : {
|
|
42
|
+
[K in keyof TGuardSchemaMap & string]: (params: StandardSchemaV1.InferOutput<TGuardSchemaMap[K]['params']>) => boolean;
|
|
43
|
+
};
|
|
27
44
|
type OutputConfig<TContext extends MachineContext, TEvent extends EventObject, TOutput> = unknown extends TOutput ? Mapper<TContext, TEvent, NonReducibleUnknown, TEvent> | NonReducibleUnknown : Mapper<TContext, TEvent, TOutput, TEvent> | TOutput;
|
|
28
45
|
export type ValidateTopLevelFinalOutputs<TConfig, TContext extends MachineContext, TEvent extends EventObject> = TConfig extends {
|
|
29
46
|
schemas: {
|
|
@@ -71,6 +88,8 @@ export interface MachineOptions {
|
|
|
71
88
|
}
|
|
72
89
|
type MachineSchemas<TContextSchema extends StandardSchemaV1, TEventSchemaMap extends Record<string, StandardSchemaV1>, TEmittedSchemaMap extends Record<string, StandardSchemaV1>, TInputSchema extends StandardSchemaV1, TOutputSchema extends StandardSchemaV1, TMetaSchema extends StandardSchemaV1, TTagSchema extends StandardSchemaV1, TChildrenSchemaMap extends Record<string, StandardSchemaV1>> = {
|
|
73
90
|
events?: TEventSchemaMap;
|
|
91
|
+
actions?: ActionSchemas;
|
|
92
|
+
guards?: GuardSchemas;
|
|
74
93
|
context?: TContextSchema;
|
|
75
94
|
emitted?: TEmittedSchemaMap;
|
|
76
95
|
input?: TInputSchema;
|
|
@@ -210,7 +229,7 @@ type Next_ChoiceTarget<TMeta extends MetaObject> = {
|
|
|
210
229
|
event: any;
|
|
211
230
|
}) => Record<string, unknown>);
|
|
212
231
|
};
|
|
213
|
-
type Next_ChoiceArgs<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], _TCtx = [TContext] extends [never] ? any : TContext> = Parameters<TransitionConfigFunction<TContext, TCurrentEvent, TEvent, EventObject, TActionMap, TActorMap, TGuardMap, TDelayMap, MetaObject, _TCtx>>[0];
|
|
232
|
+
type Next_ChoiceArgs<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], _TCtx extends MachineContext = [TContext] extends [never] ? any : TContext> = Parameters<TransitionConfigFunction<TContext, TCurrentEvent, TEvent, EventObject, TActionMap, TActorMap, TGuardMap, TDelayMap, MetaObject, _TCtx>>[0];
|
|
214
233
|
/**
|
|
215
234
|
* Route config: either a static config object, or a transition-style function
|
|
216
235
|
* that acts as the route's guard and resolver — returning `undefined`/`false`
|
|
@@ -237,7 +256,7 @@ type Next_RouteConfig<TContext extends MachineContext, TEvent extends EventObjec
|
|
|
237
256
|
event: any;
|
|
238
257
|
}) => Record<string, unknown>);
|
|
239
258
|
});
|
|
240
|
-
type Next_ChoiceConfigFunction<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, _TCtx = [TContext] extends [never] ? any : TContext> = (args: Next_ChoiceArgs<TContext, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, _TCtx>) => Next_ChoiceTarget<TMeta>;
|
|
259
|
+
type Next_ChoiceConfigFunction<TContext extends MachineContext, TCurrentEvent extends EventObject, TEvent extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject, _TCtx extends MachineContext = [TContext] extends [never] ? any : TContext> = (args: Next_ChoiceArgs<TContext, TCurrentEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap, _TCtx>) => Next_ChoiceTarget<TMeta>;
|
|
241
260
|
export type Next_StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TDelays extends string, TTag extends string, _TOutput, TEmitted extends EventObject, TMeta extends MetaObject, TChildren extends Record<string, AnyActorRef | undefined>, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TInput = Record<string, unknown> | undefined, TInputMap extends Record<string, unknown> = Record<string, unknown>, TSystemRegistry extends SystemRegistry = SystemRegistry, TChildOutput = unknown> = Next_RegularStateNodeConfig<TContext, TEvent, TDelays, TTag, _TOutput, TEmitted, TMeta, TChildren, TActionMap, TActorMap, TGuardMap, TDelayMap, TInput, TInputMap, TSystemRegistry, TChildOutput> | Next_ChoiceStateNodeConfig<TContext, TEvent, TTag, TMeta, TActionMap, TActorMap, TGuardMap, TDelayMap>;
|
|
242
261
|
interface Next_ChoiceStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TTag extends string, TMeta extends MetaObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays']> {
|
|
243
262
|
contextSchema?: StandardSchemaV1;
|
|
@@ -390,7 +409,7 @@ interface Next_RegularStateNodeConfig<TContext extends MachineContext, TEvent ex
|
|
|
390
409
|
}
|
|
391
410
|
export type Next_TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TEmitted extends EventObject, TActionMap extends Implementations['actions'], TActorMap extends Implementations['actorSources'], TGuardMap extends Implementations['guards'], TDelayMap extends Implementations['delays'], TMeta extends MetaObject> = undefined | {
|
|
392
411
|
target?: string | string[];
|
|
393
|
-
context?:
|
|
412
|
+
context?: TransitionContextPatch<TContext> | TransitionContextMapper<TContext, TExpressionEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>;
|
|
394
413
|
description?: string;
|
|
395
414
|
reenter?: boolean;
|
|
396
415
|
meta?: TMeta;
|
|
@@ -400,7 +419,7 @@ export type Next_TransitionConfigOrTarget<TContext extends MachineContext, TExpr
|
|
|
400
419
|
}) => Record<string, unknown>);
|
|
401
420
|
} | {
|
|
402
421
|
to?: TransitionConfigFunction<TContext, TExpressionEvent, TEvent, TEmitted, TActionMap, TActorMap, TGuardMap, TDelayMap, TMeta>;
|
|
403
|
-
context?:
|
|
422
|
+
context?: TransitionContextPatch<TContext> | TransitionContextMapper<TContext, TExpressionEvent, TEvent, TActionMap, TActorMap, TGuardMap, TDelayMap>;
|
|
404
423
|
description?: string;
|
|
405
424
|
reenter?: boolean;
|
|
406
425
|
meta?: TMeta;
|
|
@@ -385,7 +385,7 @@ function pushStartedChild(actions, actor, id) {
|
|
|
385
385
|
pushBuiltInAction(actions, builtInActions['@xstate.start'], actor);
|
|
386
386
|
actions.push(registerSpawnedChild(actor, id ?? actor.id));
|
|
387
387
|
}
|
|
388
|
-
function createTransitionEnqueue(actorScope, actions, internalEvents, actorSubscriptions = false) {
|
|
388
|
+
function createTransitionEnqueue(actorScope, actions, internalEvents, actorSubscriptions = false, createActors = true) {
|
|
389
389
|
const props = {
|
|
390
390
|
cancel: id => {
|
|
391
391
|
pushBuiltInAction(actions, builtInActions['@xstate.cancel'], actorScope, id);
|
|
@@ -407,6 +407,12 @@ function createTransitionEnqueue(actorScope, actions, internalEvents, actorSubsc
|
|
|
407
407
|
}
|
|
408
408
|
},
|
|
409
409
|
spawn: (logic, options) => {
|
|
410
|
+
if (!createActors) {
|
|
411
|
+
// TODO: replace this speculative placeholder with a typed inert actor ref.
|
|
412
|
+
return {
|
|
413
|
+
id: options?.id ?? options?.registryKey ?? logic.id
|
|
414
|
+
};
|
|
415
|
+
}
|
|
410
416
|
const actor = createActor(logic, {
|
|
411
417
|
...options,
|
|
412
418
|
parent: actorScope.self
|
|
@@ -931,9 +937,6 @@ function formatRouteTransitions(rootStateNode) {
|
|
|
931
937
|
}
|
|
932
938
|
return;
|
|
933
939
|
}
|
|
934
|
-
if ('$unserializable' in routeConfig) {
|
|
935
|
-
throw new Error(`State "${sn.id}" has a route that is not serializable. Re-provide the route function when reviving this machine.`);
|
|
936
|
-
}
|
|
937
940
|
const {
|
|
938
941
|
guard: _guard,
|
|
939
942
|
...routeOptions
|
|
@@ -1195,7 +1198,9 @@ function getEffectiveTargetStates(transition, snapshot, event, actorScope) {
|
|
|
1195
1198
|
const historyValue = snapshot.historyValue;
|
|
1196
1199
|
const {
|
|
1197
1200
|
targets
|
|
1198
|
-
} = getTransitionResult(transition, snapshot, event, actorScope
|
|
1201
|
+
} = getTransitionResult(transition, snapshot, event, actorScope, {
|
|
1202
|
+
resolveActions: false
|
|
1203
|
+
});
|
|
1199
1204
|
if (!targets) {
|
|
1200
1205
|
return [];
|
|
1201
1206
|
}
|
|
@@ -1221,7 +1226,9 @@ function getTransitionDomain(transition, snapshot, event, actorScope) {
|
|
|
1221
1226
|
const targetStates = getEffectiveTargetStates(transition, snapshot, event, actorScope);
|
|
1222
1227
|
const {
|
|
1223
1228
|
reenter
|
|
1224
|
-
} = getTransitionResult(transition, snapshot, event, actorScope
|
|
1229
|
+
} = getTransitionResult(transition, snapshot, event, actorScope, {
|
|
1230
|
+
resolveActions: false
|
|
1231
|
+
});
|
|
1225
1232
|
if (!reenter && targetStates.every(target => target === transition.source || isDescendant(target, transition.source))) {
|
|
1226
1233
|
return transition.source;
|
|
1227
1234
|
}
|
|
@@ -1244,7 +1251,9 @@ function computeExitSet(transitions, stateNodeSet, snapshot, event, actorScope)
|
|
|
1244
1251
|
for (const transition of transitions) {
|
|
1245
1252
|
const {
|
|
1246
1253
|
targets
|
|
1247
|
-
} = getTransitionResult(transition, snapshot, event, actorScope
|
|
1254
|
+
} = getTransitionResult(transition, snapshot, event, actorScope, {
|
|
1255
|
+
resolveActions: false
|
|
1256
|
+
});
|
|
1248
1257
|
if (targets?.length) {
|
|
1249
1258
|
const domain = getTransitionDomain(transition, snapshot, event, actorScope);
|
|
1250
1259
|
if (transition.reenter && transition.source === domain) {
|
|
@@ -1484,7 +1493,9 @@ function microstep(transitions, currentSnapshot, actorScope, event, isInitial, i
|
|
|
1484
1493
|
const {
|
|
1485
1494
|
targets,
|
|
1486
1495
|
reenter
|
|
1487
|
-
} =
|
|
1496
|
+
} = getTransitionResult(transition, currentSnapshot, event, actorScope, {
|
|
1497
|
+
resolveActions: false
|
|
1498
|
+
});
|
|
1488
1499
|
for (const targetNode of targets ?? []) {
|
|
1489
1500
|
if (!isHistoryNode(targetNode) && (transition.source !== targetNode || transition.source !== domain || reenter)) {
|
|
1490
1501
|
statesToEnter.add(targetNode);
|
|
@@ -1511,7 +1522,9 @@ function microstep(transitions, currentSnapshot, actorScope, event, isInitial, i
|
|
|
1511
1522
|
const {
|
|
1512
1523
|
targets,
|
|
1513
1524
|
input
|
|
1514
|
-
} =
|
|
1525
|
+
} = getTransitionResult(transition, currentSnapshot, event, actorScope, {
|
|
1526
|
+
resolveActions: false
|
|
1527
|
+
});
|
|
1515
1528
|
if (input && targets) {
|
|
1516
1529
|
for (const targetNode of targets) {
|
|
1517
1530
|
stateInputMap[targetNode.id] = input;
|
|
@@ -1696,25 +1709,26 @@ function microstep(transitions, currentSnapshot, actorScope, event, isInitial, i
|
|
|
1696
1709
|
* Gets the transition result for a given transition without executing the
|
|
1697
1710
|
* transition.
|
|
1698
1711
|
*/
|
|
1699
|
-
function getTransitionResult(transition, snapshot, event, actorScope) {
|
|
1712
|
+
function getTransitionResult(transition, snapshot, event, actorScope, options) {
|
|
1713
|
+
const transitionArgs = {
|
|
1714
|
+
context: snapshot.context,
|
|
1715
|
+
event,
|
|
1716
|
+
output: getEventOutput(event),
|
|
1717
|
+
value: snapshot.value,
|
|
1718
|
+
children: snapshot.children,
|
|
1719
|
+
system: actorScope.system,
|
|
1720
|
+
parent: actorScope.self._parent,
|
|
1721
|
+
self: actorScope.self,
|
|
1722
|
+
actions: snapshot.machine.implementations.actions,
|
|
1723
|
+
actorSources: snapshot.machine.implementations.actorSources,
|
|
1724
|
+
guards: snapshot.machine.implementations.guards,
|
|
1725
|
+
delays: snapshot.machine.implementations.delays
|
|
1726
|
+
};
|
|
1700
1727
|
if (transition.to) {
|
|
1701
1728
|
const actions = [];
|
|
1702
1729
|
const internalEvents = [];
|
|
1703
|
-
const enqueue = createTransitionEnqueue(actorScope, actions, internalEvents);
|
|
1704
|
-
const res = transition.to(
|
|
1705
|
-
context: snapshot.context,
|
|
1706
|
-
event,
|
|
1707
|
-
output: getEventOutput(event),
|
|
1708
|
-
value: snapshot.value,
|
|
1709
|
-
children: snapshot.children,
|
|
1710
|
-
system: actorScope.system,
|
|
1711
|
-
parent: actorScope.self._parent,
|
|
1712
|
-
self: actorScope.self,
|
|
1713
|
-
actions: snapshot.machine.implementations.actions,
|
|
1714
|
-
actorSources: snapshot.machine.implementations.actorSources,
|
|
1715
|
-
guards: snapshot.machine.implementations.guards,
|
|
1716
|
-
delays: snapshot.machine.implementations.delays
|
|
1717
|
-
}, enqueue);
|
|
1730
|
+
const enqueue = createTransitionEnqueue(actorScope, actions, internalEvents, false, options?.resolveActions ?? true);
|
|
1731
|
+
const res = transition.to(transitionArgs, enqueue);
|
|
1718
1732
|
const targets = res?.target ? resolveTarget(transition.source, toArray(res.target)) : undefined;
|
|
1719
1733
|
// Resolve input for .to transitions
|
|
1720
1734
|
const resolvedInput = typeof transition.input === 'function' ? transition.input({
|
|
@@ -1738,9 +1752,10 @@ function getTransitionResult(transition, snapshot, event, actorScope) {
|
|
|
1738
1752
|
event,
|
|
1739
1753
|
output: getEventOutput(event)
|
|
1740
1754
|
}) : transition.input;
|
|
1755
|
+
const resolvedContext = typeof transition.context === 'function' ? transition.context(transitionArgs) : transition.context;
|
|
1741
1756
|
return {
|
|
1742
1757
|
targets: transition.target,
|
|
1743
|
-
context:
|
|
1758
|
+
context: resolvedContext,
|
|
1744
1759
|
reenter: transition.reenter,
|
|
1745
1760
|
actions: undefined,
|
|
1746
1761
|
internalEvents: undefined,
|
|
@@ -2014,7 +2029,9 @@ const machineSnapshotCan = function can(event) {
|
|
|
2014
2029
|
if (transition.target !== undefined) {
|
|
2015
2030
|
return true;
|
|
2016
2031
|
}
|
|
2017
|
-
const res = getTransitionResult(transition, this, event, emptyActorScope
|
|
2032
|
+
const res = getTransitionResult(transition, this, event, emptyActorScope, {
|
|
2033
|
+
resolveActions: false
|
|
2034
|
+
});
|
|
2018
2035
|
if (res.targets?.length || res.context || hasEffect(transition, this.context, event, this, emptyActor)) {
|
|
2019
2036
|
return true;
|
|
2020
2037
|
}
|
|
@@ -4427,7 +4444,10 @@ exports.ProcessingStatus = ProcessingStatus;
|
|
|
4427
4444
|
exports.STATE_DELIMITER = STATE_DELIMITER;
|
|
4428
4445
|
exports.TimeoutError = TimeoutError;
|
|
4429
4446
|
exports.XSTATE_INIT = XSTATE_INIT;
|
|
4447
|
+
exports.XSTATE_STOP = XSTATE_STOP;
|
|
4448
|
+
exports.builtInActions = builtInActions;
|
|
4430
4449
|
exports.checkStateIn = checkStateIn;
|
|
4450
|
+
exports.cloneMachineSnapshot = cloneMachineSnapshot;
|
|
4431
4451
|
exports.createActor = createActor;
|
|
4432
4452
|
exports.createAsyncLogic = createAsyncLogic;
|
|
4433
4453
|
exports.createCallbackLogic = createCallbackLogic;
|
|
@@ -4441,6 +4461,7 @@ exports.createLogic = createLogic;
|
|
|
4441
4461
|
exports.createMachineSnapshot = createMachineSnapshot;
|
|
4442
4462
|
exports.createObservableLogic = createObservableLogic;
|
|
4443
4463
|
exports.createSubscriptionLogic = createSubscriptionLogic;
|
|
4464
|
+
exports.createTransitionEnqueue = createTransitionEnqueue;
|
|
4444
4465
|
exports.evaluateCandidate = evaluateCandidate;
|
|
4445
4466
|
exports.formatRouteTransitions = formatRouteTransitions;
|
|
4446
4467
|
exports.formatTransition = formatTransition;
|