xstate 5.32.0 → 6.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/dist/StateMachine-47e60715.esm.js +720 -0
- package/dist/StateMachine-48dcad8f.cjs.js +723 -0
- package/dist/StateMachine-6e063ac1.development.cjs.js +740 -0
- package/dist/StateMachine-6ec50e21.development.esm.js +737 -0
- package/dist/declarations/src/State.d.ts +11 -13
- package/dist/declarations/src/StateMachine.d.ts +27 -21
- package/dist/declarations/src/StateNode.d.ts +18 -54
- package/dist/declarations/src/actions.d.ts +14 -9
- package/dist/declarations/src/actors/callback.d.ts +42 -16
- package/dist/declarations/src/actors/index.d.ts +9 -6
- package/dist/declarations/src/actors/listener.d.ts +18 -0
- package/dist/declarations/src/actors/logic.d.ts +105 -0
- package/dist/declarations/src/actors/observable.d.ts +72 -27
- package/dist/declarations/src/actors/promise.d.ts +133 -48
- package/dist/declarations/src/actors/subscription.d.ts +22 -0
- package/dist/declarations/src/atom.d.ts +81 -0
- package/dist/declarations/src/createActor.d.ts +31 -33
- package/dist/declarations/src/createMachine.d.ts +35 -7
- package/dist/declarations/src/createMachineFromConfig.d.ts +176 -0
- package/dist/declarations/src/graph/graph.d.ts +4 -2
- package/dist/declarations/src/index.d.ts +12 -8
- package/dist/declarations/src/inspection.d.ts +84 -30
- package/dist/declarations/src/mapState.d.ts +4 -2
- package/dist/declarations/src/schema.types.d.ts +90 -0
- package/dist/declarations/src/serialize.d.ts +44 -0
- package/dist/declarations/src/setup.d.ts +251 -123
- package/dist/declarations/src/spawn.d.ts +6 -31
- package/dist/declarations/src/stateUtils.d.ts +21 -19
- package/dist/declarations/src/system.d.ts +8 -7
- package/dist/declarations/src/transition.d.ts +5 -5
- package/dist/declarations/src/types.d.ts +407 -406
- package/dist/declarations/src/types.v6.d.ts +392 -0
- package/dist/declarations/src/utils.d.ts +4 -3
- package/dist/index-39259ea4.development.esm.js +4948 -0
- package/dist/index-688701ed.esm.js +4909 -0
- package/dist/index-c35824b4.development.cjs.js +5007 -0
- package/dist/index-f0d7107d.cjs.js +4968 -0
- package/dist/xstate-actors.cjs.js +12 -838
- package/dist/xstate-actors.cjs.mjs +10 -5
- package/dist/xstate-actors.development.cjs.js +12 -838
- package/dist/xstate-actors.development.cjs.mjs +10 -5
- package/dist/xstate-actors.development.esm.js +1 -836
- package/dist/xstate-actors.esm.js +1 -836
- package/dist/xstate-actors.umd.min.js +1 -1
- package/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/xstate-graph.cjs.js +18 -29
- package/dist/xstate-graph.development.cjs.js +18 -29
- package/dist/xstate-graph.development.esm.js +15 -26
- package/dist/xstate-graph.esm.js +15 -26
- package/dist/xstate-graph.umd.min.js +1 -1
- package/dist/xstate-graph.umd.min.js.map +1 -1
- package/dist/xstate.cjs.js +1316 -108
- package/dist/xstate.cjs.mjs +22 -22
- package/dist/xstate.development.cjs.js +1316 -108
- package/dist/xstate.development.cjs.mjs +22 -22
- package/dist/xstate.development.esm.js +1278 -72
- package/dist/xstate.esm.js +1278 -72
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/package.json +3 -47
- package/dist/StateMachine-45e79c35.esm.js +0 -560
- package/dist/StateMachine-be2e51a3.development.cjs.js +0 -569
- package/dist/StateMachine-e0178d48.development.esm.js +0 -566
- package/dist/StateMachine-e6732977.cjs.js +0 -563
- package/dist/assign-2aa58daa.esm.js +0 -127
- package/dist/assign-927227d6.development.cjs.js +0 -135
- package/dist/assign-e8f2bd75.cjs.js +0 -129
- package/dist/assign-f338cee3.development.esm.js +0 -133
- package/dist/declarations/src/actions/assign.d.ts +0 -45
- package/dist/declarations/src/actions/cancel.d.ts +0 -39
- package/dist/declarations/src/actions/emit.d.ts +0 -44
- package/dist/declarations/src/actions/enqueueActions.d.ts +0 -57
- package/dist/declarations/src/actions/log.d.ts +0 -16
- package/dist/declarations/src/actions/raise.d.ts +0 -21
- package/dist/declarations/src/actions/send.d.ts +0 -42
- package/dist/declarations/src/actions/spawnChild.d.ts +0 -34
- package/dist/declarations/src/actions/stopChild.d.ts +0 -19
- package/dist/declarations/src/actors/transition.d.ts +0 -143
- package/dist/declarations/src/dev/index.d.ts +0 -14
- package/dist/declarations/src/guards.d.ts +0 -128
- package/dist/log-029f180b.development.cjs.js +0 -433
- package/dist/log-5a37e0ee.development.esm.js +0 -425
- package/dist/log-605ef461.esm.js +0 -397
- package/dist/log-fedf0966.cjs.js +0 -405
- package/dist/raise-74097812.development.esm.js +0 -2823
- package/dist/raise-7c948725.cjs.js +0 -2816
- package/dist/raise-964cd4e9.development.cjs.js +0 -2878
- package/dist/raise-e974d1c9.esm.js +0 -2761
- package/dist/xstate-actions.cjs.d.mts +0 -2
- package/dist/xstate-actions.cjs.d.ts +0 -2
- package/dist/xstate-actions.cjs.js +0 -23
- package/dist/xstate-actions.cjs.mjs +0 -14
- package/dist/xstate-actions.development.cjs.js +0 -23
- package/dist/xstate-actions.development.cjs.mjs +0 -14
- package/dist/xstate-actions.development.esm.js +0 -4
- package/dist/xstate-actions.esm.js +0 -4
- package/dist/xstate-actions.umd.min.js +0 -2
- package/dist/xstate-actions.umd.min.js.map +0 -1
- package/dist/xstate-dev.cjs.d.mts +0 -2
- package/dist/xstate-dev.cjs.d.ts +0 -2
- package/dist/xstate-dev.cjs.js +0 -48
- package/dist/xstate-dev.cjs.mjs +0 -5
- package/dist/xstate-dev.development.cjs.js +0 -51
- package/dist/xstate-dev.development.cjs.mjs +0 -5
- package/dist/xstate-dev.development.esm.js +0 -45
- package/dist/xstate-dev.esm.js +0 -42
- package/dist/xstate-dev.umd.min.js +0 -2
- package/dist/xstate-dev.umd.min.js.map +0 -1
- package/dist/xstate-guards.cjs.d.mts +0 -2
- package/dist/xstate-guards.cjs.d.ts +0 -2
- package/dist/xstate-guards.cjs.js +0 -14
- package/dist/xstate-guards.cjs.mjs +0 -7
- package/dist/xstate-guards.development.cjs.js +0 -14
- package/dist/xstate-guards.development.cjs.mjs +0 -7
- package/dist/xstate-guards.development.esm.js +0 -2
- package/dist/xstate-guards.esm.js +0 -2
- package/dist/xstate-guards.umd.min.js +0 -2
- package/dist/xstate-guards.umd.min.js.map +0 -1
|
@@ -1,425 +0,0 @@
|
|
|
1
|
-
import { W as executingCustomAction, Y as XSTATE_ERROR, Z as createErrorActorEvent, D as evaluateGuard, a as cancel, r as raise, b as spawnChild, s as stopChild } from './raise-74097812.development.esm.js';
|
|
2
|
-
import { a as assign } from './assign-f338cee3.development.esm.js';
|
|
3
|
-
|
|
4
|
-
function resolveEmit(_, snapshot, args, actionParams, {
|
|
5
|
-
event: eventOrExpr
|
|
6
|
-
}) {
|
|
7
|
-
const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;
|
|
8
|
-
return [snapshot, {
|
|
9
|
-
event: resolvedEvent
|
|
10
|
-
}, undefined];
|
|
11
|
-
}
|
|
12
|
-
function executeEmit(actorScope, {
|
|
13
|
-
event
|
|
14
|
-
}) {
|
|
15
|
-
actorScope.defer(() => actorScope.emit(event));
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Emits an event to event handlers registered on the actor via `actor.on(event,
|
|
19
|
-
* handler)`.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
*
|
|
23
|
-
* ```ts
|
|
24
|
-
* import { emit } from 'xstate';
|
|
25
|
-
*
|
|
26
|
-
* const machine = createMachine({
|
|
27
|
-
* // ...
|
|
28
|
-
* on: {
|
|
29
|
-
* something: {
|
|
30
|
-
* actions: emit({
|
|
31
|
-
* type: 'emitted',
|
|
32
|
-
* some: 'data'
|
|
33
|
-
* })
|
|
34
|
-
* }
|
|
35
|
-
* }
|
|
36
|
-
* // ...
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* const actor = createActor(machine).start();
|
|
40
|
-
*
|
|
41
|
-
* actor.on('emitted', (event) => {
|
|
42
|
-
* console.log(event);
|
|
43
|
-
* });
|
|
44
|
-
*
|
|
45
|
-
* actor.send({ type: 'something' });
|
|
46
|
-
* // logs:
|
|
47
|
-
* // {
|
|
48
|
-
* // type: 'emitted',
|
|
49
|
-
* // some: 'data'
|
|
50
|
-
* // }
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
function emit(/** The event to emit, or an expression that returns an event to emit. */
|
|
54
|
-
eventOrExpr) {
|
|
55
|
-
if (executingCustomAction) {
|
|
56
|
-
console.warn('Custom actions should not call `emit()` directly, as it is not imperative. See https://stately.ai/docs/actions#built-in-actions for more details.');
|
|
57
|
-
}
|
|
58
|
-
function emit(_args, _params) {
|
|
59
|
-
{
|
|
60
|
-
throw new Error(`This isn't supposed to be called`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
emit.type = 'xstate.emit';
|
|
64
|
-
emit.event = eventOrExpr;
|
|
65
|
-
emit.resolve = resolveEmit;
|
|
66
|
-
emit.execute = executeEmit;
|
|
67
|
-
return emit;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// this is needed to make JSDoc `@link` work properly
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* @remarks
|
|
74
|
-
* `T | unknown` reduces to `unknown` and that can be problematic when it comes
|
|
75
|
-
* to contextual typing. It especially is a problem when the union has a
|
|
76
|
-
* function member, like here:
|
|
77
|
-
*
|
|
78
|
-
* ```ts
|
|
79
|
-
* declare function test(
|
|
80
|
-
* cbOrVal: ((arg: number) => unknown) | unknown
|
|
81
|
-
* ): void;
|
|
82
|
-
* test((arg) => {}); // oops, implicit any
|
|
83
|
-
* ```
|
|
84
|
-
*
|
|
85
|
-
* This type can be used to avoid this problem. This union represents the same
|
|
86
|
-
* value space as `unknown`.
|
|
87
|
-
*/
|
|
88
|
-
|
|
89
|
-
// https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887
|
|
90
|
-
|
|
91
|
-
// @TODO: we can't use native `NoInfer` as we need those:
|
|
92
|
-
// https://github.com/microsoft/TypeScript/pull/61092
|
|
93
|
-
// https://github.com/microsoft/TypeScript/pull/61077
|
|
94
|
-
// but even with those fixes native NoInfer still doesn't work - further issues have to be reproduced and fixed
|
|
95
|
-
|
|
96
|
-
/** @deprecated Use the built-in `NoInfer` type instead */
|
|
97
|
-
|
|
98
|
-
/** The full definition of an event, with a string `type`. */
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* The string or object representing the state value relative to the parent
|
|
102
|
-
* state node.
|
|
103
|
-
*
|
|
104
|
-
* @remarks
|
|
105
|
-
* - For a child atomic state node, this is a string, e.g., `"pending"`.
|
|
106
|
-
* - For complex state nodes, this is an object, e.g., `{ success:
|
|
107
|
-
* "someChildState" }`.
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
|
-
/** @deprecated Use `AnyMachineSnapshot` instead */
|
|
111
|
-
|
|
112
|
-
// TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something
|
|
113
|
-
/** @ignore */
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Runtime options for state machine execution.
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
*
|
|
120
|
-
* ```ts
|
|
121
|
-
* const machine = createMachine({
|
|
122
|
-
* // ... machine config
|
|
123
|
-
* options: {
|
|
124
|
-
* maxIterations: 5000
|
|
125
|
-
* // other runtime options can be added here
|
|
126
|
-
* }
|
|
127
|
-
* });
|
|
128
|
-
* ```
|
|
129
|
-
*/
|
|
130
|
-
|
|
131
|
-
let SpecialTargets = /*#__PURE__*/function (SpecialTargets) {
|
|
132
|
-
SpecialTargets["Parent"] = "#_parent";
|
|
133
|
-
SpecialTargets["Internal"] = "#_internal";
|
|
134
|
-
return SpecialTargets;
|
|
135
|
-
}({});
|
|
136
|
-
|
|
137
|
-
/** @deprecated Use `AnyActor` instead. */
|
|
138
|
-
|
|
139
|
-
// Based on RxJS types
|
|
140
|
-
|
|
141
|
-
// TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic
|
|
142
|
-
|
|
143
|
-
/** @deprecated Use `Actor<T>` instead. */
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Represents logic which can be used by an actor.
|
|
147
|
-
*
|
|
148
|
-
* @template TSnapshot - The type of the snapshot.
|
|
149
|
-
* @template TEvent - The type of the event object.
|
|
150
|
-
* @template TInput - The type of the input.
|
|
151
|
-
* @template TSystem - The type of the actor system.
|
|
152
|
-
*/
|
|
153
|
-
|
|
154
|
-
/** @deprecated */
|
|
155
|
-
|
|
156
|
-
// TODO: cover all that can be actually returned
|
|
157
|
-
|
|
158
|
-
function resolveSendTo(actorScope, snapshot, args, actionParams, {
|
|
159
|
-
to,
|
|
160
|
-
event: eventOrExpr,
|
|
161
|
-
id,
|
|
162
|
-
delay
|
|
163
|
-
}, extra) {
|
|
164
|
-
const delaysMap = snapshot.machine.implementations.delays;
|
|
165
|
-
if (typeof eventOrExpr === 'string') {
|
|
166
|
-
throw new Error(
|
|
167
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
168
|
-
`Only event objects may be used with sendTo; use sendTo({ type: "${eventOrExpr}" }) instead`);
|
|
169
|
-
}
|
|
170
|
-
const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;
|
|
171
|
-
let resolvedDelay;
|
|
172
|
-
if (typeof delay === 'string') {
|
|
173
|
-
const configDelay = delaysMap && delaysMap[delay];
|
|
174
|
-
resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;
|
|
175
|
-
} else {
|
|
176
|
-
resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;
|
|
177
|
-
}
|
|
178
|
-
const resolvedTarget = typeof to === 'function' ? to(args, actionParams) : to;
|
|
179
|
-
let targetActorRef;
|
|
180
|
-
if (typeof resolvedTarget === 'string') {
|
|
181
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
182
|
-
if (resolvedTarget === SpecialTargets.Parent) {
|
|
183
|
-
targetActorRef = actorScope.self._parent;
|
|
184
|
-
}
|
|
185
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison
|
|
186
|
-
else if (resolvedTarget === SpecialTargets.Internal) {
|
|
187
|
-
targetActorRef = actorScope.self;
|
|
188
|
-
} else if (resolvedTarget.startsWith('#_')) {
|
|
189
|
-
// SCXML compatibility: https://www.w3.org/TR/scxml/#SCXMLEventProcessor
|
|
190
|
-
// #_invokeid. If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that the sending session has created by <invoke>, the Processor must add the event to the external queue of that session.
|
|
191
|
-
targetActorRef = snapshot.children[resolvedTarget.slice(2)];
|
|
192
|
-
} else {
|
|
193
|
-
targetActorRef = extra.deferredActorIds?.includes(resolvedTarget) ? resolvedTarget : snapshot.children[resolvedTarget];
|
|
194
|
-
}
|
|
195
|
-
if (!targetActorRef) {
|
|
196
|
-
throw new Error(`Unable to send event to actor '${resolvedTarget}' from machine '${snapshot.machine.id}'.`);
|
|
197
|
-
}
|
|
198
|
-
} else {
|
|
199
|
-
targetActorRef = resolvedTarget || actorScope.self;
|
|
200
|
-
}
|
|
201
|
-
return [snapshot, {
|
|
202
|
-
to: targetActorRef,
|
|
203
|
-
targetId: typeof resolvedTarget === 'string' ? resolvedTarget : undefined,
|
|
204
|
-
event: resolvedEvent,
|
|
205
|
-
id,
|
|
206
|
-
delay: resolvedDelay
|
|
207
|
-
}, undefined];
|
|
208
|
-
}
|
|
209
|
-
function retryResolveSendTo(_, snapshot, params) {
|
|
210
|
-
if (typeof params.to === 'string') {
|
|
211
|
-
params.to = snapshot.children[params.to];
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
function executeSendTo(actorScope, params) {
|
|
215
|
-
// this forms an outgoing events queue
|
|
216
|
-
// thanks to that the recipient actors are able to read the *updated* snapshot value of the sender
|
|
217
|
-
actorScope.defer(() => {
|
|
218
|
-
const {
|
|
219
|
-
to,
|
|
220
|
-
event,
|
|
221
|
-
delay,
|
|
222
|
-
id
|
|
223
|
-
} = params;
|
|
224
|
-
if (typeof delay === 'number') {
|
|
225
|
-
actorScope.system.scheduler.schedule(actorScope.self, to, event, delay, id);
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
actorScope.system._relay(actorScope.self,
|
|
229
|
-
// at this point, in a deferred task, it should already be mutated by retryResolveSendTo
|
|
230
|
-
// if it initially started as a string
|
|
231
|
-
to, event.type === XSTATE_ERROR ? createErrorActorEvent(actorScope.self.id, event.data) : event);
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Sends an event to an actor.
|
|
236
|
-
*
|
|
237
|
-
* @param actor The `ActorRef` to send the event to.
|
|
238
|
-
* @param event The event to send, or an expression that evaluates to the event
|
|
239
|
-
* to send
|
|
240
|
-
* @param options Send action options
|
|
241
|
-
*
|
|
242
|
-
* - `id` - The unique send event identifier (used with `cancel()`).
|
|
243
|
-
* - `delay` - The number of milliseconds to delay the sending of the event.
|
|
244
|
-
*/
|
|
245
|
-
function sendTo(to, eventOrExpr, options) {
|
|
246
|
-
if (executingCustomAction) {
|
|
247
|
-
console.warn('Custom actions should not call `sendTo()` directly, as it is not imperative. See https://stately.ai/docs/actions#built-in-actions for more details.');
|
|
248
|
-
}
|
|
249
|
-
function sendTo(_args, _params) {
|
|
250
|
-
{
|
|
251
|
-
throw new Error(`This isn't supposed to be called`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
sendTo.type = 'xstate.sendTo';
|
|
255
|
-
sendTo.to = to;
|
|
256
|
-
sendTo.event = eventOrExpr;
|
|
257
|
-
sendTo.id = options?.id;
|
|
258
|
-
sendTo.delay = options?.delay;
|
|
259
|
-
sendTo.resolve = resolveSendTo;
|
|
260
|
-
sendTo.retryResolve = retryResolveSendTo;
|
|
261
|
-
sendTo.execute = executeSendTo;
|
|
262
|
-
return sendTo;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Sends an event to this machine's parent.
|
|
267
|
-
*
|
|
268
|
-
* @param event The event to send to the parent machine.
|
|
269
|
-
* @param options Options to pass into the send event.
|
|
270
|
-
*/
|
|
271
|
-
function sendParent(event, options) {
|
|
272
|
-
return sendTo(SpecialTargets.Parent, event, options);
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Forwards (sends) an event to the `target` actor.
|
|
276
|
-
*
|
|
277
|
-
* @param target The target actor to forward the event to.
|
|
278
|
-
* @param options Options to pass into the send action creator.
|
|
279
|
-
*/
|
|
280
|
-
function forwardTo(target, options) {
|
|
281
|
-
if ((!target || typeof target === 'function')) {
|
|
282
|
-
const originalTarget = target;
|
|
283
|
-
target = (...args) => {
|
|
284
|
-
const resolvedTarget = typeof originalTarget === 'function' ? originalTarget(...args) : originalTarget;
|
|
285
|
-
if (!resolvedTarget) {
|
|
286
|
-
throw new Error(`Attempted to forward event to undefined actor. This risks an infinite loop in the sender.`);
|
|
287
|
-
}
|
|
288
|
-
return resolvedTarget;
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
return sendTo(target, ({
|
|
292
|
-
event
|
|
293
|
-
}) => event, options);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
function resolveEnqueueActions(actorScope, snapshot, args, actionParams, {
|
|
297
|
-
collect
|
|
298
|
-
}) {
|
|
299
|
-
const actions = [];
|
|
300
|
-
const enqueue = function enqueue(action) {
|
|
301
|
-
actions.push(action);
|
|
302
|
-
};
|
|
303
|
-
enqueue.assign = (...args) => {
|
|
304
|
-
actions.push(assign(...args));
|
|
305
|
-
};
|
|
306
|
-
enqueue.cancel = (...args) => {
|
|
307
|
-
actions.push(cancel(...args));
|
|
308
|
-
};
|
|
309
|
-
enqueue.raise = (...args) => {
|
|
310
|
-
// for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)
|
|
311
|
-
// then it fails to typecheck that because `...args` use `string` in place of `TDelay`
|
|
312
|
-
actions.push(raise(...args));
|
|
313
|
-
};
|
|
314
|
-
enqueue.sendTo = (...args) => {
|
|
315
|
-
// for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)
|
|
316
|
-
// then it fails to typecheck that because `...args` use `string` in place of `TDelay
|
|
317
|
-
actions.push(sendTo(...args));
|
|
318
|
-
};
|
|
319
|
-
enqueue.sendParent = (...args) => {
|
|
320
|
-
actions.push(sendParent(...args));
|
|
321
|
-
};
|
|
322
|
-
enqueue.spawnChild = (...args) => {
|
|
323
|
-
actions.push(spawnChild(...args));
|
|
324
|
-
};
|
|
325
|
-
enqueue.stopChild = (...args) => {
|
|
326
|
-
actions.push(stopChild(...args));
|
|
327
|
-
};
|
|
328
|
-
enqueue.emit = (...args) => {
|
|
329
|
-
actions.push(emit(...args));
|
|
330
|
-
};
|
|
331
|
-
collect({
|
|
332
|
-
context: args.context,
|
|
333
|
-
event: args.event,
|
|
334
|
-
enqueue,
|
|
335
|
-
check: guard => evaluateGuard(guard, snapshot.context, args.event, snapshot),
|
|
336
|
-
self: actorScope.self,
|
|
337
|
-
system: actorScope.system
|
|
338
|
-
}, actionParams);
|
|
339
|
-
return [snapshot, undefined, actions];
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Creates an action object that will execute actions that are queued by the
|
|
343
|
-
* `enqueue(action)` function.
|
|
344
|
-
*
|
|
345
|
-
* @example
|
|
346
|
-
*
|
|
347
|
-
* ```ts
|
|
348
|
-
* import { createMachine, enqueueActions } from 'xstate';
|
|
349
|
-
*
|
|
350
|
-
* const machine = createMachine({
|
|
351
|
-
* entry: enqueueActions(({ enqueue, check }) => {
|
|
352
|
-
* enqueue.assign({ count: 0 });
|
|
353
|
-
*
|
|
354
|
-
* if (check('someGuard')) {
|
|
355
|
-
* enqueue.assign({ count: 1 });
|
|
356
|
-
* }
|
|
357
|
-
*
|
|
358
|
-
* enqueue('someAction');
|
|
359
|
-
* })
|
|
360
|
-
* });
|
|
361
|
-
* ```
|
|
362
|
-
*/
|
|
363
|
-
function enqueueActions(collect) {
|
|
364
|
-
function enqueueActions(_args, _params) {
|
|
365
|
-
{
|
|
366
|
-
throw new Error(`This isn't supposed to be called`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
enqueueActions.type = 'xstate.enqueueActions';
|
|
370
|
-
enqueueActions.collect = collect;
|
|
371
|
-
enqueueActions.resolve = resolveEnqueueActions;
|
|
372
|
-
return enqueueActions;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
function resolveLog(_, snapshot, actionArgs, actionParams, {
|
|
376
|
-
value,
|
|
377
|
-
label
|
|
378
|
-
}) {
|
|
379
|
-
return [snapshot, {
|
|
380
|
-
value: typeof value === 'function' ? value(actionArgs, actionParams) : value,
|
|
381
|
-
label
|
|
382
|
-
}, undefined];
|
|
383
|
-
}
|
|
384
|
-
function executeLog({
|
|
385
|
-
logger
|
|
386
|
-
}, {
|
|
387
|
-
value,
|
|
388
|
-
label
|
|
389
|
-
}) {
|
|
390
|
-
if (label) {
|
|
391
|
-
logger(label, value);
|
|
392
|
-
} else {
|
|
393
|
-
logger(value);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* @param expr The expression function to evaluate which will be logged. Takes
|
|
398
|
-
* in 2 arguments:
|
|
399
|
-
*
|
|
400
|
-
* - `ctx` - the current state context
|
|
401
|
-
* - `event` - the event that caused this action to be executed.
|
|
402
|
-
*
|
|
403
|
-
* @param label The label to give to the logged expression.
|
|
404
|
-
*/
|
|
405
|
-
function log(value = ({
|
|
406
|
-
context,
|
|
407
|
-
event
|
|
408
|
-
}) => ({
|
|
409
|
-
context,
|
|
410
|
-
event
|
|
411
|
-
}), label) {
|
|
412
|
-
function log(_args, _params) {
|
|
413
|
-
{
|
|
414
|
-
throw new Error(`This isn't supposed to be called`);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
log.type = 'xstate.log';
|
|
418
|
-
log.value = value;
|
|
419
|
-
log.label = label;
|
|
420
|
-
log.resolve = resolveLog;
|
|
421
|
-
log.execute = executeLog;
|
|
422
|
-
return log;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
export { SpecialTargets as S, emit as a, sendParent as b, enqueueActions as e, forwardTo as f, log as l, sendTo as s };
|