xstate 5.0.0-alpha.0 → 5.0.0-alpha.2
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 +26 -15
- package/actions/dist/xstate-actions.cjs.dev.js +24 -25
- package/actions/dist/xstate-actions.cjs.prod.js +23 -24
- package/actions/dist/xstate-actions.esm.js +2 -2
- package/actions/dist/xstate-actions.umd.min.js +2 -0
- package/actions/dist/xstate-actions.umd.min.js.map +1 -0
- package/actions/dynamicAction.ts +15 -7
- package/actions/package.json +5 -1
- package/actors/dist/xstate-actors.cjs.d.ts +1 -1
- package/actors/dist/xstate-actors.cjs.dev.js +14 -14
- package/actors/dist/xstate-actors.cjs.prod.js +13 -13
- package/actors/dist/xstate-actors.esm.js +2 -2
- package/actors/dist/xstate-actors.umd.min.js +2 -0
- package/actors/dist/xstate-actors.umd.min.js.map +1 -0
- package/actors/package.json +5 -1
- package/dev/dist/xstate-dev.cjs.dev.js +1 -1
- package/dev/dist/xstate-dev.cjs.prod.js +0 -11
- package/dev/dist/xstate-dev.esm.js +1 -1
- package/dev/dist/xstate-dev.umd.min.js +2 -0
- package/dev/dist/xstate-dev.umd.min.js.map +1 -0
- package/dev/package.json +5 -1
- package/dist/{actions-6b86876d.cjs.dev.js → actions-1e9778c2.cjs.dev.js} +2819 -3334
- package/dist/actions-9778f6fb.esm.js +4246 -0
- package/dist/actions-acb29ffe.cjs.prod.js +4262 -0
- package/dist/declarations/actions/dynamicAction.d.ts +5 -3
- package/dist/declarations/src/Machine.d.ts +4 -4
- package/dist/declarations/src/Mailbox.d.ts +12 -12
- package/dist/declarations/src/SimulatedClock.d.ts +16 -16
- package/dist/declarations/src/State.d.ts +97 -104
- package/dist/declarations/src/StateMachine.d.ts +110 -112
- package/dist/declarations/src/StateNode.d.ts +127 -127
- package/dist/declarations/src/actionTypes.d.ts +16 -17
- package/dist/declarations/src/actions/assign.d.ts +7 -7
- package/dist/declarations/src/actions/cancel.d.ts +10 -10
- package/dist/declarations/src/actions/choose.d.ts +3 -3
- package/dist/declarations/src/actions/invoke.d.ts +3 -3
- package/dist/declarations/src/actions/log.d.ts +11 -11
- package/dist/declarations/src/actions/pure.d.ts +3 -3
- package/dist/declarations/src/actions/raise.d.ts +8 -9
- package/dist/declarations/src/actions/send.d.ts +53 -55
- package/dist/declarations/src/actions/stop.d.ts +7 -8
- package/dist/declarations/src/actions.d.ts +47 -44
- package/dist/declarations/src/actors/callback.d.ts +8 -0
- package/dist/declarations/src/actors/index.d.ts +27 -0
- package/dist/declarations/src/actors/observable.d.ts +23 -0
- package/dist/declarations/src/actors/promise.d.ts +12 -0
- package/dist/declarations/src/actors/transition.d.ts +13 -0
- package/dist/declarations/src/constants.d.ts +5 -5
- package/dist/declarations/src/dev/index.d.ts +14 -14
- package/dist/declarations/src/environment.d.ts +1 -1
- package/dist/declarations/src/guards.d.ts +8 -9
- package/dist/declarations/src/index.d.ts +44 -47
- package/dist/declarations/src/interpreter.d.ts +104 -147
- package/dist/declarations/src/mapState.d.ts +3 -3
- package/dist/declarations/src/memo.d.ts +2 -1
- package/dist/declarations/src/schema.d.ts +2 -2
- package/dist/declarations/src/spawn.d.ts +2 -2
- package/dist/declarations/src/stateUtils.d.ts +70 -85
- package/dist/declarations/src/symbolObservable.d.ts +1 -0
- package/dist/declarations/src/system.d.ts +2 -0
- package/dist/declarations/src/typegenTypes.d.ts +132 -132
- package/dist/declarations/src/types.d.ts +1008 -1026
- package/dist/declarations/src/utils.d.ts +58 -56
- package/dist/{index-20b364c4.esm.js → index-50bd0aff.esm.js} +0 -12
- package/dist/{index-2a564d03.cjs.dev.js → index-ebaab3c9.cjs.dev.js} +0 -12
- package/dist/xstate.cjs.dev.js +798 -100
- package/dist/xstate.cjs.prod.js +797 -99
- package/dist/xstate.esm.js +756 -55
- package/dist/xstate.umd.min.js +2 -0
- package/dist/xstate.umd.min.js.map +1 -0
- package/guards/dist/xstate-guards.cjs.dev.js +8 -8
- package/guards/dist/xstate-guards.cjs.prod.js +7 -7
- package/guards/dist/xstate-guards.esm.js +2 -2
- package/guards/dist/xstate-guards.umd.min.js +2 -0
- package/guards/dist/xstate-guards.umd.min.js.map +1 -0
- package/guards/package.json +5 -1
- package/package.json +28 -6
- package/CHANGELOG.md +0 -1986
- package/actions/ExecutableAction.ts +0 -58
- package/dist/Machine-9ce74c11.cjs.dev.js +0 -755
- package/dist/Machine-dca041dc.cjs.prod.js +0 -749
- package/dist/Machine-fb2f47f5.esm.js +0 -751
- package/dist/actions-70094c93.cjs.prod.js +0 -4765
- package/dist/actions-ff512f16.esm.js +0 -4757
- package/dist/declarations/actions/ExecutableAction.d.ts +0 -23
- package/dist/declarations/src/ObservableActorRef.d.ts +0 -25
- package/dist/declarations/src/actors.d.ts +0 -38
- package/dist/declarations/src/match.d.ts +0 -5
- package/dist/declarations/src/model.d.ts +0 -5
- package/dist/declarations/src/model.types.d.ts +0 -53
- package/dist/declarations/src/registry.d.ts +0 -8
- package/model/dist/xstate-model.cjs.d.ts +0 -1
- package/model/dist/xstate-model.cjs.dev.js +0 -41
- package/model/dist/xstate-model.cjs.js +0 -7
- package/model/dist/xstate-model.cjs.prod.js +0 -41
- package/model/dist/xstate-model.esm.js +0 -37
- package/model/package.json +0 -4
|
@@ -1,1026 +1,1008 @@
|
|
|
1
|
-
import type { StateNode } from './StateNode';
|
|
2
|
-
import type { State } from './State';
|
|
3
|
-
import type { Clock, Interpreter } from './interpreter';
|
|
4
|
-
import type { StateMachine } from './StateMachine';
|
|
5
|
-
import type { LifecycleSignal } from './actors';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export
|
|
23
|
-
export
|
|
24
|
-
export
|
|
25
|
-
export
|
|
26
|
-
export
|
|
27
|
-
export
|
|
28
|
-
export
|
|
29
|
-
export
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
export
|
|
69
|
-
export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends
|
|
70
|
-
action: TAction;
|
|
71
|
-
_event: SCXML.Event<TEvent>;
|
|
72
|
-
}
|
|
73
|
-
export
|
|
74
|
-
behavior: T,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
export
|
|
96
|
-
|
|
97
|
-
export
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
export
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
guard: GuardDefinition<TContext, TEvent>;
|
|
123
|
-
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
124
|
-
}
|
|
125
|
-
export
|
|
126
|
-
export
|
|
127
|
-
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
128
|
-
type: string;
|
|
129
|
-
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
130
|
-
predicate?: GuardPredicate<TContext, TEvent>;
|
|
131
|
-
params: {
|
|
132
|
-
[key: string]: any;
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
136
|
-
type: 'xstate.boolean';
|
|
137
|
-
children: Array<GuardConfig<TContext, TEvent>>;
|
|
138
|
-
params: {
|
|
139
|
-
op: 'and' | 'or' | 'not';
|
|
140
|
-
};
|
|
141
|
-
predicate: undefined;
|
|
142
|
-
}
|
|
143
|
-
export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent extends EventObject> extends GuardDefinition<TContext, TEvent> {
|
|
144
|
-
type: 'xstate.boolean';
|
|
145
|
-
params: {
|
|
146
|
-
op: 'and' | 'or' | 'not';
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
export
|
|
150
|
-
export
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
export
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
export
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
*
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
}
|
|
268
|
-
export
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
*
|
|
281
|
-
*/
|
|
282
|
-
|
|
283
|
-
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
*/
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
*
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
*
|
|
307
|
-
*/
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
*
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
* The
|
|
318
|
-
*/
|
|
319
|
-
|
|
320
|
-
/**
|
|
321
|
-
*
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
*
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
*
|
|
338
|
-
*/
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* The
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
*
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
export
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
export
|
|
507
|
-
|
|
508
|
-
export
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
export
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
}
|
|
588
|
-
export interface
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
}
|
|
600
|
-
export
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
}
|
|
608
|
-
export
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
}
|
|
640
|
-
export interface
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
}
|
|
646
|
-
export
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
}
|
|
671
|
-
export
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
export
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
export
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
};
|
|
720
|
-
}
|
|
721
|
-
export
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
}
|
|
745
|
-
export interface
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
}
|
|
787
|
-
export interface
|
|
788
|
-
/**
|
|
789
|
-
*
|
|
790
|
-
*/
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
}
|
|
828
|
-
export
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
}
|
|
972
|
-
export
|
|
973
|
-
export
|
|
974
|
-
export
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
export
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
export
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
}
|
|
1009
|
-
export declare type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends Interpreter<infer _, infer __, infer ___> ? R['initialState'] : R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Behavior<infer _, infer TSnapshot> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot> ? TSnapshot : never : never;
|
|
1010
|
-
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends Interpreter<infer _, infer TEvent, infer __> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
1011
|
-
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
1012
|
-
/**
|
|
1013
|
-
* Events that do not require payload
|
|
1014
|
-
*/
|
|
1015
|
-
export declare type SimpleEventsOf<TEvent extends EventObject> = ExtractWithSimpleSupport<TEvent>;
|
|
1016
|
-
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TContext, infer _, infer __> ? TContext : never : never;
|
|
1017
|
-
export declare type InferEvent<E extends EventObject> = {
|
|
1018
|
-
[T in E['type']]: {
|
|
1019
|
-
type: T;
|
|
1020
|
-
} & Extract<E, {
|
|
1021
|
-
type: T;
|
|
1022
|
-
}>;
|
|
1023
|
-
}[E['type']];
|
|
1024
|
-
export declare type TODO = any;
|
|
1025
|
-
export declare type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
|
1026
|
-
export {};
|
|
1
|
+
import type { StateNode } from './StateNode.js';
|
|
2
|
+
import type { State } from './State.js';
|
|
3
|
+
import type { ActorStatus, Clock, Interpreter } from './interpreter.js';
|
|
4
|
+
import type { StateMachine } from './StateMachine.js';
|
|
5
|
+
import type { LifecycleSignal } from './actors/index.js';
|
|
6
|
+
import { TypegenDisabled, ResolveTypegenMeta, TypegenConstraint, MarkAllImplementationsAsProvided, AreAllImplementationsAssumedToBeProvided } from './typegenTypes.js';
|
|
7
|
+
export type AnyFunction = (...args: any[]) => any;
|
|
8
|
+
type ReturnTypeOrValue<T> = T extends AnyFunction ? ReturnType<T> : T;
|
|
9
|
+
export type IsNever<T> = [T] extends [never] ? true : false;
|
|
10
|
+
export type Compute<A extends any> = {
|
|
11
|
+
[K in keyof A]: A[K];
|
|
12
|
+
} & unknown;
|
|
13
|
+
export type Prop<T, K> = K extends keyof T ? T[K] : never;
|
|
14
|
+
export type Values<T> = T[keyof T];
|
|
15
|
+
export type Merge<M, N> = Omit<M, keyof N> & N;
|
|
16
|
+
export type IndexByType<T extends {
|
|
17
|
+
type: string;
|
|
18
|
+
}> = {
|
|
19
|
+
[K in T['type']]: T extends any ? (K extends T['type'] ? T : never) : never;
|
|
20
|
+
};
|
|
21
|
+
export type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
22
|
+
export type IsAny<T> = Equals<T, any>;
|
|
23
|
+
export type Cast<A, B> = A extends B ? A : B;
|
|
24
|
+
export type NoInfer<T> = [T][T extends any ? 0 : any];
|
|
25
|
+
export type LowInfer<T> = T & {};
|
|
26
|
+
export type EventType = string;
|
|
27
|
+
export type ActionType = string;
|
|
28
|
+
export type MetaObject = Record<string, any>;
|
|
29
|
+
export type Lazy<T> = () => T;
|
|
30
|
+
export type MaybeLazy<T> = T | Lazy<T>;
|
|
31
|
+
/**
|
|
32
|
+
* The full definition of an event, with a string `type`.
|
|
33
|
+
*/
|
|
34
|
+
export interface EventObject {
|
|
35
|
+
/**
|
|
36
|
+
* The type of event that is sent.
|
|
37
|
+
*/
|
|
38
|
+
type: string;
|
|
39
|
+
}
|
|
40
|
+
export interface AnyEventObject extends EventObject {
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
}
|
|
43
|
+
export interface ParameterizedObject {
|
|
44
|
+
type: string;
|
|
45
|
+
params?: Record<string, any>;
|
|
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
|
+
export interface BaseDynamicActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TResolvedAction extends BaseActionObject, TDynamicParams extends Record<string, any>> {
|
|
55
|
+
type: `xstate.${string}`;
|
|
56
|
+
params: TDynamicParams;
|
|
57
|
+
resolve: (_event: SCXML.Event<TExpressionEvent>, extra: {
|
|
58
|
+
state: State<TContext, TEvent>;
|
|
59
|
+
/**
|
|
60
|
+
* The original action object
|
|
61
|
+
*/
|
|
62
|
+
action: ParameterizedObject;
|
|
63
|
+
actorContext: AnyActorContext | undefined;
|
|
64
|
+
}) => [AnyState, TResolvedAction];
|
|
65
|
+
/** @deprecated an internal signature that doesn't exist at runtime. Its existence helps TS to choose a better code path in the inference algorithm */
|
|
66
|
+
(arg: TContext, ev: TExpressionEvent, meta: ActionMeta<TContext, TEvent, ParameterizedObject>): void;
|
|
67
|
+
}
|
|
68
|
+
export type MachineContext = Record<string, any>;
|
|
69
|
+
export interface ActionMeta<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> extends StateMeta<TContext, TEvent> {
|
|
70
|
+
action: TAction;
|
|
71
|
+
_event: SCXML.Event<TEvent>;
|
|
72
|
+
}
|
|
73
|
+
export type Spawner = <T extends ActorBehavior<any, any> | string>(// TODO: read string from machine behavior keys
|
|
74
|
+
behavior: T, options?: Partial<{
|
|
75
|
+
id: string;
|
|
76
|
+
input: any;
|
|
77
|
+
}>) => T extends ActorBehavior<infer TActorEvent, infer TActorEmitted> ? ActorRef<TActorEvent, TActorEmitted> : ActorRef<any, any>;
|
|
78
|
+
export interface AssignMeta<TContext extends MachineContext, TExpressionEvent extends EventObject, _TEvent extends EventObject> extends StateMeta<TContext, TExpressionEvent> {
|
|
79
|
+
action: BaseActionObject;
|
|
80
|
+
_event: SCXML.Event<TExpressionEvent>;
|
|
81
|
+
spawn: Spawner;
|
|
82
|
+
}
|
|
83
|
+
export type ActionFunction<TContext extends MachineContext, TExpressionEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TEvent extends EventObject = TExpressionEvent> = {
|
|
84
|
+
bivarianceHack(context: TContext, event: TExpressionEvent, meta: ActionMeta<TContext, TEvent, TAction>): void;
|
|
85
|
+
}['bivarianceHack'];
|
|
86
|
+
export interface ChooseCondition<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> {
|
|
87
|
+
guard?: GuardConfig<TContext, TEvent>;
|
|
88
|
+
actions: Actions<TContext, TExpressionEvent, TEvent>;
|
|
89
|
+
}
|
|
90
|
+
export type Action<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = ActionType | ParameterizedObject | ActionFunction<TContext, TExpressionEvent, ParameterizedObject, TEvent> | BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, any, any>;
|
|
91
|
+
/**
|
|
92
|
+
* Extracts action objects that have no extra properties.
|
|
93
|
+
*/
|
|
94
|
+
type SimpleActionsFrom<T extends ParameterizedObject> = ParameterizedObject extends T ? T : ExtractWithSimpleSupport<T>;
|
|
95
|
+
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
|
|
96
|
+
any> | TAction | SimpleActionsFrom<TAction>['type'] | ActionFunction<TContext, TExpressionEvent, TAction, TEvent>;
|
|
97
|
+
export type BaseActions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TAction extends ParameterizedObject> = SingleOrArray<BaseAction<TContext, TExpressionEvent, TAction, TEvent>>;
|
|
98
|
+
export type Actions<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<Action<TContext, TEvent>>;
|
|
99
|
+
export type StateKey = string | AnyState;
|
|
100
|
+
export interface StateValueMap {
|
|
101
|
+
[key: string]: StateValue;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The string or object representing the state value relative to the parent state node.
|
|
105
|
+
*
|
|
106
|
+
* - For a child atomic state node, this is a string, e.g., `"pending"`.
|
|
107
|
+
* - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
|
|
108
|
+
*/
|
|
109
|
+
export type StateValue = string | StateValueMap;
|
|
110
|
+
export type GuardPredicate<TContext extends MachineContext, TEvent extends EventObject> = (context: TContext, event: TEvent, meta: GuardMeta<TContext, TEvent>) => boolean;
|
|
111
|
+
export interface DefaultGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
112
|
+
/**
|
|
113
|
+
* Nested guards
|
|
114
|
+
*/
|
|
115
|
+
children?: Array<GuardObject<TContext, TEvent>>;
|
|
116
|
+
predicate?: GuardPredicate<TContext, TEvent>;
|
|
117
|
+
}
|
|
118
|
+
export type GuardEvaluator<TContext extends MachineContext, TEvent extends EventObject> = (guard: GuardDefinition<TContext, TEvent>, context: TContext, _event: SCXML.Event<TEvent>, state: State<TContext, TEvent>) => boolean;
|
|
119
|
+
export interface GuardMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
120
|
+
state: State<TContext, TEvent, any>;
|
|
121
|
+
_event: SCXML.Event<TEvent>;
|
|
122
|
+
guard: GuardDefinition<TContext, TEvent>;
|
|
123
|
+
evaluate: GuardEvaluator<TContext, TEvent>;
|
|
124
|
+
}
|
|
125
|
+
export type GuardConfig<TContext extends MachineContext, TEvent extends EventObject> = string | GuardPredicate<TContext, TEvent> | GuardObject<TContext, TEvent>;
|
|
126
|
+
export type GuardObject<TContext extends MachineContext, TEvent extends EventObject> = BooleanGuardObject<TContext, TEvent> | DefaultGuardObject<TContext, TEvent>;
|
|
127
|
+
export interface GuardDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
128
|
+
type: string;
|
|
129
|
+
children?: Array<GuardDefinition<TContext, TEvent>>;
|
|
130
|
+
predicate?: GuardPredicate<TContext, TEvent>;
|
|
131
|
+
params: {
|
|
132
|
+
[key: string]: any;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export interface BooleanGuardObject<TContext extends MachineContext, TEvent extends EventObject> extends ParameterizedObject {
|
|
136
|
+
type: 'xstate.boolean';
|
|
137
|
+
children: Array<GuardConfig<TContext, TEvent>>;
|
|
138
|
+
params: {
|
|
139
|
+
op: 'and' | 'or' | 'not';
|
|
140
|
+
};
|
|
141
|
+
predicate: undefined;
|
|
142
|
+
}
|
|
143
|
+
export interface BooleanGuardDefinition<TContext extends MachineContext, TEvent extends EventObject> extends GuardDefinition<TContext, TEvent> {
|
|
144
|
+
type: 'xstate.boolean';
|
|
145
|
+
params: {
|
|
146
|
+
op: 'and' | 'or' | 'not';
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export type TransitionTarget = SingleOrArray<string>;
|
|
150
|
+
export interface TransitionConfig<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
151
|
+
guard?: GuardConfig<TContext, TExpressionEvent>;
|
|
152
|
+
actions?: BaseActions<TContext, TExpressionEvent, TEvent, TAction>;
|
|
153
|
+
external?: boolean;
|
|
154
|
+
target?: TransitionTarget | undefined;
|
|
155
|
+
meta?: Record<string, any>;
|
|
156
|
+
description?: string;
|
|
157
|
+
}
|
|
158
|
+
export interface TargetTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
159
|
+
target: TransitionTarget;
|
|
160
|
+
}
|
|
161
|
+
export type ConditionalTransitionConfig<TContext extends MachineContext, TEvent extends EventObject = EventObject> = Array<TransitionConfig<TContext, TEvent>>;
|
|
162
|
+
export interface InitialTransitionConfig<TContext extends MachineContext, TEvent extends EventObject> extends TransitionConfig<TContext, TEvent> {
|
|
163
|
+
guard?: never;
|
|
164
|
+
target: TransitionTarget;
|
|
165
|
+
}
|
|
166
|
+
export type Transition<TContext extends MachineContext, TEvent extends EventObject = EventObject> = string | TransitionConfig<TContext, TEvent> | ConditionalTransitionConfig<TContext, TEvent>;
|
|
167
|
+
type ExtractWithSimpleSupport<T extends {
|
|
168
|
+
type: string;
|
|
169
|
+
}> = T extends any ? {
|
|
170
|
+
type: T['type'];
|
|
171
|
+
} extends T ? T : never : never;
|
|
172
|
+
export type Receiver<TEvent extends EventObject> = (listener: {
|
|
173
|
+
bivarianceHack(event: TEvent): void;
|
|
174
|
+
}['bivarianceHack']) => void;
|
|
175
|
+
export type InvokeCallback<TEvent extends EventObject = AnyEventObject, TSentEvent extends EventObject = AnyEventObject> = (sendBack: (event: TSentEvent) => void, onReceive: Receiver<TEvent>, { input }: {
|
|
176
|
+
input: any;
|
|
177
|
+
}) => (() => void) | Promise<any> | void;
|
|
178
|
+
export type ActorBehaviorCreator<TContext extends MachineContext, TEvent extends EventObject, TActorBehavior extends AnyActorBehavior = AnyActorBehavior> = (context: TContext, event: TEvent, meta: {
|
|
179
|
+
id: string;
|
|
180
|
+
data?: any;
|
|
181
|
+
src: string;
|
|
182
|
+
_event: SCXML.Event<TEvent>;
|
|
183
|
+
meta: MetaObject | undefined;
|
|
184
|
+
input: any;
|
|
185
|
+
}) => TActorBehavior;
|
|
186
|
+
export interface InvokeMeta {
|
|
187
|
+
src: string;
|
|
188
|
+
meta: MetaObject | undefined;
|
|
189
|
+
}
|
|
190
|
+
export interface InvokeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
191
|
+
id: string;
|
|
192
|
+
systemId: string | undefined;
|
|
193
|
+
/**
|
|
194
|
+
* The source of the actor's behavior to be invoked
|
|
195
|
+
*/
|
|
196
|
+
src: string;
|
|
197
|
+
input?: Mapper<TContext, TEvent, any> | any;
|
|
198
|
+
/**
|
|
199
|
+
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
200
|
+
*/
|
|
201
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneInvokeEvent<any>>>;
|
|
202
|
+
/**
|
|
203
|
+
* The transition to take upon the invoked child machine sending an error event.
|
|
204
|
+
*/
|
|
205
|
+
onError?: string | SingleOrArray<TransitionConfig<TContext, ErrorEvent<any>>>;
|
|
206
|
+
onSnapshot?: string | SingleOrArray<TransitionConfig<TContext, SnapshotEvent<any>>>;
|
|
207
|
+
toJSON: () => Omit<InvokeDefinition<TContext, TEvent>, 'onDone' | 'onError' | 'toJSON'>;
|
|
208
|
+
meta: MetaObject | undefined;
|
|
209
|
+
}
|
|
210
|
+
export interface Delay {
|
|
211
|
+
id: string;
|
|
212
|
+
/**
|
|
213
|
+
* The time to delay the event, in milliseconds.
|
|
214
|
+
*/
|
|
215
|
+
delay: number;
|
|
216
|
+
}
|
|
217
|
+
export type DelayedTransitions<TContext extends MachineContext, TEvent extends EventObject> = Record<string | number, string | SingleOrArray<TransitionConfig<TContext, TEvent>>> | Array<TransitionConfig<TContext, TEvent> & {
|
|
218
|
+
delay: number | string | Expr<TContext, TEvent, number>;
|
|
219
|
+
}>;
|
|
220
|
+
export type StateTypes = 'atomic' | 'compound' | 'parallel' | 'final' | 'history' | string;
|
|
221
|
+
export type SingleOrArray<T> = T[] | T;
|
|
222
|
+
export type StateNodesConfig<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
223
|
+
[K in string]: StateNode<TContext, TEvent>;
|
|
224
|
+
};
|
|
225
|
+
export type StatesConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
226
|
+
[K in string]: StateNodeConfig<TContext, TEvent, TAction>;
|
|
227
|
+
};
|
|
228
|
+
export type StatesDefinition<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
229
|
+
[K in string]: StateNodeDefinition<TContext, TEvent>;
|
|
230
|
+
};
|
|
231
|
+
export type TransitionConfigTarget = string | undefined;
|
|
232
|
+
export type TransitionConfigOrTarget<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = SingleOrArray<TransitionConfigTarget | TransitionConfig<TContext, TExpressionEvent, TEvent>>;
|
|
233
|
+
export type TransitionsConfigMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
234
|
+
[K in TEvent['type'] | '' | '*']?: K extends '' | '*' ? TransitionConfigOrTarget<TContext, TEvent> : TransitionConfigOrTarget<TContext, ExtractEvent<TEvent, K>, TEvent>;
|
|
235
|
+
};
|
|
236
|
+
type TransitionsConfigArray<TContext extends MachineContext, TEvent extends EventObject> = Array<(TEvent extends EventObject ? TransitionConfig<TContext, TEvent> & {
|
|
237
|
+
event: TEvent['type'];
|
|
238
|
+
} : never) | (TransitionConfig<TContext, TEvent> & {
|
|
239
|
+
event: '*';
|
|
240
|
+
})>;
|
|
241
|
+
export type TransitionsConfig<TContext extends MachineContext, TEvent extends EventObject> = TransitionsConfigMap<TContext, TEvent> | TransitionsConfigArray<TContext, TEvent>;
|
|
242
|
+
export interface InvokeConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
243
|
+
/**
|
|
244
|
+
* The unique identifier for the invoked machine. If not specified, this
|
|
245
|
+
* will be the machine's own `id`, or the URL (from `src`).
|
|
246
|
+
*/
|
|
247
|
+
id?: string;
|
|
248
|
+
systemId?: string;
|
|
249
|
+
/**
|
|
250
|
+
* The source of the machine to be invoked, or the machine itself.
|
|
251
|
+
*/
|
|
252
|
+
src: string | ActorBehavior<any, any>;
|
|
253
|
+
input?: Mapper<TContext, TEvent, any> | any;
|
|
254
|
+
/**
|
|
255
|
+
* The transition to take upon the invoked child machine reaching its final top-level state.
|
|
256
|
+
*/
|
|
257
|
+
onDone?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
|
|
258
|
+
/**
|
|
259
|
+
* The transition to take upon the invoked child machine sending an error event.
|
|
260
|
+
*/
|
|
261
|
+
onError?: string | SingleOrArray<TransitionConfigOrTarget<TContext, DoneInvokeEvent<any>, TEvent>>;
|
|
262
|
+
onSnapshot?: string | SingleOrArray<TransitionConfigOrTarget<TContext, SnapshotEvent<any>, TEvent>>;
|
|
263
|
+
/**
|
|
264
|
+
* Meta data related to this invocation
|
|
265
|
+
*/
|
|
266
|
+
meta?: MetaObject;
|
|
267
|
+
}
|
|
268
|
+
export interface StateNodeConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
269
|
+
/**
|
|
270
|
+
* The initial state transition.
|
|
271
|
+
*/
|
|
272
|
+
initial?: InitialTransitionConfig<TContext, TEvent> | SingleOrArray<string> | undefined;
|
|
273
|
+
/**
|
|
274
|
+
* The type of this state node:
|
|
275
|
+
*
|
|
276
|
+
* - `'atomic'` - no child state nodes
|
|
277
|
+
* - `'compound'` - nested child state nodes (XOR)
|
|
278
|
+
* - `'parallel'` - orthogonal nested child state nodes (AND)
|
|
279
|
+
* - `'history'` - history state node
|
|
280
|
+
* - `'final'` - final state node
|
|
281
|
+
*/
|
|
282
|
+
type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
|
283
|
+
/**
|
|
284
|
+
* Indicates whether the state node is a history state node, and what
|
|
285
|
+
* type of history:
|
|
286
|
+
* shallow, deep, true (shallow), false (none), undefined (none)
|
|
287
|
+
*/
|
|
288
|
+
history?: 'shallow' | 'deep' | boolean | undefined;
|
|
289
|
+
/**
|
|
290
|
+
* The mapping of state node keys to their state node configurations (recursive).
|
|
291
|
+
*/
|
|
292
|
+
states?: StatesConfig<TContext, TEvent, TAction> | undefined;
|
|
293
|
+
/**
|
|
294
|
+
* The services to invoke upon entering this state node. These services will be stopped upon exiting this state node.
|
|
295
|
+
*/
|
|
296
|
+
invoke?: SingleOrArray<string | InvokeConfig<TContext, TEvent>>;
|
|
297
|
+
/**
|
|
298
|
+
* The mapping of event types to their potential transition(s).
|
|
299
|
+
*/
|
|
300
|
+
on?: TransitionsConfig<TContext, TEvent>;
|
|
301
|
+
/**
|
|
302
|
+
* The action(s) to be executed upon entering the state node.
|
|
303
|
+
*/
|
|
304
|
+
entry?: BaseActions<TContext, TEvent, TEvent, TAction>;
|
|
305
|
+
/**
|
|
306
|
+
* The action(s) to be executed upon exiting the state node.
|
|
307
|
+
*/
|
|
308
|
+
exit?: BaseActions<TContext, TEvent, TEvent, TAction>;
|
|
309
|
+
/**
|
|
310
|
+
* The potential transition(s) to be taken upon reaching a final child state node.
|
|
311
|
+
*
|
|
312
|
+
* This is equivalent to defining a `[done(id)]` transition on this state node's `on` property.
|
|
313
|
+
*/
|
|
314
|
+
onDone?: string | SingleOrArray<TransitionConfig<TContext, DoneEventObject>> | undefined;
|
|
315
|
+
/**
|
|
316
|
+
* The mapping (or array) of delays (in milliseconds) to their potential transition(s).
|
|
317
|
+
* The delayed transitions are taken after the specified delay in an interpreter.
|
|
318
|
+
*/
|
|
319
|
+
after?: DelayedTransitions<TContext, TEvent>;
|
|
320
|
+
/**
|
|
321
|
+
* An eventless transition that is always taken when this state node is active.
|
|
322
|
+
*/
|
|
323
|
+
always?: TransitionConfigOrTarget<TContext, TEvent>;
|
|
324
|
+
/**
|
|
325
|
+
* @private
|
|
326
|
+
*/
|
|
327
|
+
parent?: StateNode<TContext, TEvent>;
|
|
328
|
+
strict?: boolean | undefined;
|
|
329
|
+
/**
|
|
330
|
+
* The meta data associated with this state node, which will be returned in State instances.
|
|
331
|
+
*/
|
|
332
|
+
meta?: any;
|
|
333
|
+
/**
|
|
334
|
+
* The data sent with the "done.state._id_" event if this is a final state node.
|
|
335
|
+
*
|
|
336
|
+
* The data will be evaluated with the current `context` and placed on the `.data` property
|
|
337
|
+
* of the event.
|
|
338
|
+
*/
|
|
339
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
340
|
+
/**
|
|
341
|
+
* The unique ID of the state node, which can be referenced as a transition target via the
|
|
342
|
+
* `#id` syntax.
|
|
343
|
+
*/
|
|
344
|
+
id?: string | undefined;
|
|
345
|
+
/**
|
|
346
|
+
* The string delimiter for serializing the path to a string. The default is "."
|
|
347
|
+
*/
|
|
348
|
+
delimiter?: string;
|
|
349
|
+
/**
|
|
350
|
+
* The order this state node appears. Corresponds to the implicit SCXML document order.
|
|
351
|
+
*/
|
|
352
|
+
order?: number;
|
|
353
|
+
/**
|
|
354
|
+
* The tags for this state node, which are accumulated into the `state.tags` property.
|
|
355
|
+
*/
|
|
356
|
+
tags?: SingleOrArray<string>;
|
|
357
|
+
/**
|
|
358
|
+
* A text description of the state node
|
|
359
|
+
*/
|
|
360
|
+
description?: string;
|
|
361
|
+
/**
|
|
362
|
+
* A default target for a history state
|
|
363
|
+
*/
|
|
364
|
+
target?: string;
|
|
365
|
+
}
|
|
366
|
+
export interface StateNodeDefinition<TContext extends MachineContext, TEvent extends EventObject> {
|
|
367
|
+
id: string;
|
|
368
|
+
version?: string | undefined;
|
|
369
|
+
key: string;
|
|
370
|
+
type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
|
|
371
|
+
initial: InitialTransitionDefinition<TContext, TEvent> | undefined;
|
|
372
|
+
history: boolean | 'shallow' | 'deep' | undefined;
|
|
373
|
+
states: StatesDefinition<TContext, TEvent>;
|
|
374
|
+
on: TransitionDefinitionMap<TContext, TEvent>;
|
|
375
|
+
transitions: Array<TransitionDefinition<TContext, TEvent>>;
|
|
376
|
+
entry: BaseActionObject[];
|
|
377
|
+
exit: BaseActionObject[];
|
|
378
|
+
meta: any;
|
|
379
|
+
order: number;
|
|
380
|
+
data?: FinalStateNodeConfig<TContext, TEvent>['data'];
|
|
381
|
+
invoke: Array<InvokeDefinition<TContext, TEvent>>;
|
|
382
|
+
description?: string;
|
|
383
|
+
tags: string[];
|
|
384
|
+
}
|
|
385
|
+
export interface StateMachineDefinition<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeDefinition<TContext, TEvent> {
|
|
386
|
+
context: TContext;
|
|
387
|
+
}
|
|
388
|
+
export type AnyStateNode = StateNode<any, any>;
|
|
389
|
+
export type AnyStateNodeDefinition = StateNodeDefinition<any, any>;
|
|
390
|
+
export type AnyState = State<any, any, any>;
|
|
391
|
+
export type AnyStateMachine = StateMachine<any, any, any, any, any>;
|
|
392
|
+
export type AnyStateConfig = StateConfig<any, AnyEventObject>;
|
|
393
|
+
export interface AtomicStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends StateNodeConfig<TContext, TEvent> {
|
|
394
|
+
initial?: undefined;
|
|
395
|
+
parallel?: false | undefined;
|
|
396
|
+
states?: undefined;
|
|
397
|
+
onDone?: undefined;
|
|
398
|
+
}
|
|
399
|
+
export interface HistoryStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
400
|
+
history: 'shallow' | 'deep' | true;
|
|
401
|
+
target: string | undefined;
|
|
402
|
+
}
|
|
403
|
+
export interface FinalStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> extends AtomicStateNodeConfig<TContext, TEvent> {
|
|
404
|
+
type: 'final';
|
|
405
|
+
/**
|
|
406
|
+
* The data to be sent with the "done.state.<id>" event. The data can be
|
|
407
|
+
* static or dynamic (based on assigners).
|
|
408
|
+
*/
|
|
409
|
+
data?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
|
|
410
|
+
}
|
|
411
|
+
export type SimpleOrStateNodeConfig<TContext extends MachineContext, TEvent extends EventObject> = AtomicStateNodeConfig<TContext, TEvent> | StateNodeConfig<TContext, TEvent>;
|
|
412
|
+
export type ActionFunctionMap<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> = {
|
|
413
|
+
[K in TAction['type']]?: BaseDynamicActionObject<TContext, TEvent, TEvent, TAction, any> | ActionFunction<TContext, TEvent, TAction extends {
|
|
414
|
+
type: K;
|
|
415
|
+
} ? TAction : never>;
|
|
416
|
+
};
|
|
417
|
+
export type DelayFunctionMap<TContext extends MachineContext, TEvent extends EventObject> = Record<string, DelayConfig<TContext, TEvent>>;
|
|
418
|
+
export type DelayConfig<TContext extends MachineContext, TEvent extends EventObject> = number | DelayExpr<TContext, TEvent>;
|
|
419
|
+
export interface MachineImplementationsSimplified<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject> {
|
|
420
|
+
guards: Record<string, GuardPredicate<TContext, TEvent>>;
|
|
421
|
+
actions: ActionFunctionMap<TContext, TEvent, TAction>;
|
|
422
|
+
actors: Record<string, AnyActorBehavior | {
|
|
423
|
+
src: AnyActorBehavior;
|
|
424
|
+
input: Mapper<TContext, TEvent, any> | any;
|
|
425
|
+
}>;
|
|
426
|
+
delays: DelayFunctionMap<TContext, TEvent>;
|
|
427
|
+
}
|
|
428
|
+
type MachineImplementationsActions<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActions = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActions'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
429
|
+
[K in keyof TEventsCausingActions]?: BaseDynamicActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>, any, // TODO: this should receive something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`, but at the moment builtin actions expect Resolved*Action here and this should be simplified somehow
|
|
430
|
+
any> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, ParameterizedObject, // TODO: when bringing back parametrized actions this should accept something like `Cast<Prop<TIndexedActions, K>, ParameterizedObject>`. At the moment we need to keep this type argument consistent with what is provided to the fake callable signature within `BaseDynamicActionObject`
|
|
431
|
+
Cast<Prop<TIndexedEvents, keyof TIndexedEvents>, EventObject>>;
|
|
432
|
+
};
|
|
433
|
+
type MachineImplementationsDelays<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingDelays'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
434
|
+
[K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
|
|
435
|
+
};
|
|
436
|
+
type MachineImplementationsGuards<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingGuards'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>> = {
|
|
437
|
+
[K in keyof TEventsCausingGuards]?: GuardPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
|
|
438
|
+
};
|
|
439
|
+
type MachineImplementationsActors<TContext extends MachineContext, TResolvedTypesMeta, TEventsCausingActors = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'eventsCausingActors'>, TIndexedEvents = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'indexedEvents'>, _TInvokeSrcNameMap = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'invokeSrcNameMap'>> = {
|
|
440
|
+
[K in keyof TEventsCausingActors]?: AnyActorBehavior | {
|
|
441
|
+
src: AnyActorBehavior;
|
|
442
|
+
input: Mapper<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActors[K]>, EventObject>, any> | any;
|
|
443
|
+
};
|
|
444
|
+
};
|
|
445
|
+
type MakeKeysRequired<T extends string> = {
|
|
446
|
+
[K in T]: unknown;
|
|
447
|
+
};
|
|
448
|
+
type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
|
|
449
|
+
[K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
|
|
450
|
+
} : {};
|
|
451
|
+
type GenerateActionsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
|
|
452
|
+
actions?: MachineImplementationsActions<TContext, TResolvedTypesMeta>;
|
|
453
|
+
};
|
|
454
|
+
type GenerateDelaysImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
|
|
455
|
+
delays?: MachineImplementationsDelays<TContext, TResolvedTypesMeta>;
|
|
456
|
+
};
|
|
457
|
+
type GenerateGuardsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
|
|
458
|
+
guards?: MachineImplementationsGuards<TContext, TResolvedTypesMeta>;
|
|
459
|
+
};
|
|
460
|
+
type GenerateActorsImplementationsPart<TContext extends MachineContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actors', Prop<TMissingImplementations, 'actors'>, TRequireMissingImplementations> & {
|
|
461
|
+
actors?: MachineImplementationsActors<TContext, TResolvedTypesMeta>;
|
|
462
|
+
};
|
|
463
|
+
export type InternalMachineImplementations<TContext extends MachineContext, _TEvent extends EventObject, TResolvedTypesMeta, TRequireMissingImplementations extends boolean = false, TMissingImplementations = Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'missingImplementations'>> = GenerateActionsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateActorsImplementationsPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>;
|
|
464
|
+
export type MachineImplementations<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineImplementations<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TActorMap>>;
|
|
465
|
+
type InitialContext<TContext extends MachineContext> = TContext | ContextFactory<TContext>;
|
|
466
|
+
export type ContextFactory<TContext extends MachineContext> = ({ spawn, input }: {
|
|
467
|
+
spawn: Spawner;
|
|
468
|
+
input: any;
|
|
469
|
+
}) => TContext;
|
|
470
|
+
export interface MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TAction extends ParameterizedObject = ParameterizedObject, TActorMap extends ActorMap = ActorMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, NoInfer<TEvent>, TAction> {
|
|
471
|
+
/**
|
|
472
|
+
* The initial context (extended state)
|
|
473
|
+
*/
|
|
474
|
+
context?: InitialContext<LowInfer<TContext>>;
|
|
475
|
+
/**
|
|
476
|
+
* The machine's own version.
|
|
477
|
+
*/
|
|
478
|
+
version?: string;
|
|
479
|
+
/**
|
|
480
|
+
* If `true`, will use SCXML semantics, such as event token matching.
|
|
481
|
+
*/
|
|
482
|
+
scxml?: boolean;
|
|
483
|
+
schema?: MachineSchema<TContext, TEvent, TActorMap>;
|
|
484
|
+
tsTypes?: TTypesMeta;
|
|
485
|
+
}
|
|
486
|
+
export type ActorMap = Record<string, {
|
|
487
|
+
data: any;
|
|
488
|
+
}>;
|
|
489
|
+
export interface MachineSchema<TContext extends MachineContext, TEvent extends EventObject, TActorMap extends ActorMap = ActorMap> {
|
|
490
|
+
context?: TContext;
|
|
491
|
+
actions?: {
|
|
492
|
+
type: string;
|
|
493
|
+
[key: string]: any;
|
|
494
|
+
};
|
|
495
|
+
actors?: TActorMap;
|
|
496
|
+
events?: TEvent;
|
|
497
|
+
guards?: {
|
|
498
|
+
type: string;
|
|
499
|
+
[key: string]: any;
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
export interface HistoryStateNode<TContext extends MachineContext> extends StateNode<TContext> {
|
|
503
|
+
history: 'shallow' | 'deep';
|
|
504
|
+
target: string | undefined;
|
|
505
|
+
}
|
|
506
|
+
export type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
|
|
507
|
+
export type AnyHistoryValue = HistoryValue<any, any>;
|
|
508
|
+
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;
|
|
509
|
+
export type Transitions<TContext extends MachineContext, TEvent extends EventObject> = Array<TransitionDefinition<TContext, TEvent>>;
|
|
510
|
+
export declare enum ActionTypes {
|
|
511
|
+
Stop = "xstate.stop",
|
|
512
|
+
Raise = "xstate.raise",
|
|
513
|
+
Send = "xstate.send",
|
|
514
|
+
Cancel = "xstate.cancel",
|
|
515
|
+
Assign = "xstate.assign",
|
|
516
|
+
After = "xstate.after",
|
|
517
|
+
DoneState = "done.state",
|
|
518
|
+
DoneInvoke = "done.invoke",
|
|
519
|
+
Log = "xstate.log",
|
|
520
|
+
Init = "xstate.init",
|
|
521
|
+
Invoke = "xstate.invoke",
|
|
522
|
+
ErrorExecution = "error.execution",
|
|
523
|
+
ErrorCommunication = "error.communication",
|
|
524
|
+
ErrorPlatform = "error.platform",
|
|
525
|
+
ErrorCustom = "xstate.error",
|
|
526
|
+
Pure = "xstate.pure",
|
|
527
|
+
Choose = "xstate.choose"
|
|
528
|
+
}
|
|
529
|
+
export interface RaiseActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> extends BaseActionObject {
|
|
530
|
+
type: ActionTypes.Raise;
|
|
531
|
+
params: {
|
|
532
|
+
event: TEvent;
|
|
533
|
+
_event: SCXML.Event<TEvent>;
|
|
534
|
+
delay: RaiseActionOptions<TContext, TExpressionEvent>['delay'];
|
|
535
|
+
id: string | number;
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
export interface DoneInvokeEvent<TData> extends EventObject {
|
|
539
|
+
type: `done.invoke.${string}`;
|
|
540
|
+
data: TData;
|
|
541
|
+
}
|
|
542
|
+
export interface ErrorEvent<TErrorData> {
|
|
543
|
+
type: `error.${string}`;
|
|
544
|
+
data: TErrorData;
|
|
545
|
+
}
|
|
546
|
+
export interface SnapshotEvent<TData> {
|
|
547
|
+
type: `xstate.snapshot.${string}`;
|
|
548
|
+
data: TData;
|
|
549
|
+
}
|
|
550
|
+
export interface ErrorExecutionEvent extends EventObject {
|
|
551
|
+
src: string;
|
|
552
|
+
type: ActionTypes.ErrorExecution;
|
|
553
|
+
data: any;
|
|
554
|
+
}
|
|
555
|
+
export interface ErrorPlatformEvent extends EventObject {
|
|
556
|
+
data: any;
|
|
557
|
+
}
|
|
558
|
+
export interface SCXMLErrorEvent extends SCXML.Event<any> {
|
|
559
|
+
name: ActionTypes.ErrorExecution | ActionTypes.ErrorPlatform | ActionTypes.ErrorCommunication;
|
|
560
|
+
data: any;
|
|
561
|
+
}
|
|
562
|
+
export interface DoneEventObject extends EventObject {
|
|
563
|
+
data?: any;
|
|
564
|
+
toString(): string;
|
|
565
|
+
}
|
|
566
|
+
export type DoneEvent = DoneEventObject & string;
|
|
567
|
+
export interface InvokeAction {
|
|
568
|
+
type: ActionTypes.Invoke;
|
|
569
|
+
src: string | ActorRef<any>;
|
|
570
|
+
id: string;
|
|
571
|
+
exec?: undefined;
|
|
572
|
+
meta: MetaObject | undefined;
|
|
573
|
+
}
|
|
574
|
+
export interface DynamicInvokeActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
575
|
+
type: ActionTypes.Invoke;
|
|
576
|
+
params: InvokeDefinition<TContext, TEvent>;
|
|
577
|
+
}
|
|
578
|
+
export interface InvokeActionObject extends BaseActionObject {
|
|
579
|
+
type: ActionTypes.Invoke;
|
|
580
|
+
params: {
|
|
581
|
+
src: string | ActorRef<any>;
|
|
582
|
+
id: string;
|
|
583
|
+
exec?: undefined;
|
|
584
|
+
ref?: ActorRef<any>;
|
|
585
|
+
meta: MetaObject | undefined;
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
export interface DynamicStopActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
589
|
+
type: ActionTypes.Stop;
|
|
590
|
+
params: {
|
|
591
|
+
actor: string | ActorRef<any> | Expr<TContext, TExpressionEvent, ActorRef<any> | string>;
|
|
592
|
+
};
|
|
593
|
+
}
|
|
594
|
+
export interface StopActionObject {
|
|
595
|
+
type: ActionTypes.Stop;
|
|
596
|
+
params: {
|
|
597
|
+
actor: ActorRef<any>;
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
export type DelayExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, number>;
|
|
601
|
+
export type LogExpr<TContext extends MachineContext, TEvent extends EventObject> = ExprWithMeta<TContext, TEvent, any>;
|
|
602
|
+
export interface DynamicLogAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, LogActionObject, {
|
|
603
|
+
label: string | undefined;
|
|
604
|
+
expr: string | LogExpr<TContext, TExpressionEvent>;
|
|
605
|
+
}> {
|
|
606
|
+
type: ActionTypes.Log;
|
|
607
|
+
}
|
|
608
|
+
export interface LogActionObject extends BuiltInActionObject {
|
|
609
|
+
type: ActionTypes.Log;
|
|
610
|
+
params: {
|
|
611
|
+
label: string | undefined;
|
|
612
|
+
value: any;
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
export interface SendActionObject<TSentEvent extends EventObject = AnyEventObject> extends BaseActionObject {
|
|
616
|
+
type: 'xstate.send';
|
|
617
|
+
params: {
|
|
618
|
+
to: ActorRef<TSentEvent> | undefined;
|
|
619
|
+
_event: SCXML.Event<TSentEvent>;
|
|
620
|
+
event: TSentEvent;
|
|
621
|
+
delay?: number;
|
|
622
|
+
id: string | number;
|
|
623
|
+
internal: boolean;
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
export type Expr<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent) => T;
|
|
627
|
+
export type ExprWithMeta<TContext extends MachineContext, TEvent extends EventObject, T> = (context: TContext, event: TEvent, meta: StateMeta<TContext, TEvent>) => T;
|
|
628
|
+
export type SendExpr<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = AnyEventObject> = ExprWithMeta<TContext, TEvent, TSentEvent>;
|
|
629
|
+
export declare enum SpecialTargets {
|
|
630
|
+
Parent = "#_parent",
|
|
631
|
+
Internal = "#_internal"
|
|
632
|
+
}
|
|
633
|
+
export interface SendActionOptions<TContext extends MachineContext, TEvent extends EventObject> extends RaiseActionOptions<TContext, TEvent> {
|
|
634
|
+
to?: string | ActorRef<any, any> | ExprWithMeta<TContext, TEvent, string | ActorRef<any, any>>;
|
|
635
|
+
}
|
|
636
|
+
export interface RaiseActionOptions<TContext extends MachineContext, TEvent extends EventObject> {
|
|
637
|
+
id?: string | number;
|
|
638
|
+
delay?: number | string | DelayExpr<TContext, TEvent>;
|
|
639
|
+
}
|
|
640
|
+
export interface RaiseActionParams<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject> extends RaiseActionOptions<TContext, TExpressionEvent> {
|
|
641
|
+
event: TEvent | SendExpr<TContext, TExpressionEvent, TEvent>;
|
|
642
|
+
}
|
|
643
|
+
export interface SendActionParams<TContext extends MachineContext, TEvent extends EventObject, TSentEvent extends EventObject = EventObject> extends SendActionOptions<TContext, TEvent> {
|
|
644
|
+
event: TSentEvent | SendExpr<TContext, TEvent, TSentEvent>;
|
|
645
|
+
}
|
|
646
|
+
export interface DynamicCancelActionObject<TContext extends MachineContext, TExpressionEvent extends EventObject> {
|
|
647
|
+
type: ActionTypes.Cancel;
|
|
648
|
+
params: {
|
|
649
|
+
sendId: string | ExprWithMeta<TContext, TExpressionEvent, string>;
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
export interface CancelActionObject extends BaseActionObject {
|
|
653
|
+
type: ActionTypes.Cancel;
|
|
654
|
+
params: {
|
|
655
|
+
sendId: string;
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
export type Assigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => Partial<TContext>;
|
|
659
|
+
export type PartialAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject, TKey extends keyof TContext> = (context: TContext, event: TExpressionEvent, meta: AssignMeta<TContext, TExpressionEvent, TEvent>) => TContext[TKey];
|
|
660
|
+
export type PropertyAssigner<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = {
|
|
661
|
+
[K in keyof TContext]?: PartialAssigner<TContext, TExpressionEvent, TEvent, K> | TContext[K];
|
|
662
|
+
};
|
|
663
|
+
export type Mapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = (context: TContext, event: TEvent) => TParams;
|
|
664
|
+
export type PropertyMapper<TContext extends MachineContext, TEvent extends EventObject, TParams extends {}> = {
|
|
665
|
+
[K in keyof TParams]?: ((context: TContext, event: TEvent) => TParams[K]) | TParams[K];
|
|
666
|
+
};
|
|
667
|
+
export interface AnyAssignAction extends BaseActionObject {
|
|
668
|
+
type: ActionTypes.Assign;
|
|
669
|
+
assignment: any;
|
|
670
|
+
}
|
|
671
|
+
export type DynamicAssignAction<TContext extends MachineContext, TExpressionEvent extends EventObject, TEvent extends EventObject = TExpressionEvent> = BaseDynamicActionObject<TContext, TExpressionEvent, TEvent, AssignActionObject<TContext> | RaiseActionObject<TContext, TExpressionEvent>, {
|
|
672
|
+
assignment: Assigner<TContext, TExpressionEvent, TEvent> | PropertyAssigner<TContext, TExpressionEvent, TEvent>;
|
|
673
|
+
}>;
|
|
674
|
+
export interface AssignActionObject<TContext extends MachineContext> extends BaseActionObject {
|
|
675
|
+
type: ActionTypes.Assign;
|
|
676
|
+
params: {
|
|
677
|
+
context: TContext;
|
|
678
|
+
actions: BaseActionObject[];
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
export interface DynamicPureActionObject<TContext extends MachineContext, TEvent extends EventObject> {
|
|
682
|
+
type: ActionTypes.Pure;
|
|
683
|
+
params: {
|
|
684
|
+
get: (context: TContext, event: TEvent) => SingleOrArray<BaseActionObject | BaseActionObject['type']> | undefined;
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
export interface PureActionObject extends BaseActionObject {
|
|
688
|
+
type: ActionTypes.Pure;
|
|
689
|
+
params: {
|
|
690
|
+
actions: BaseActionObject[];
|
|
691
|
+
};
|
|
692
|
+
}
|
|
693
|
+
export interface ChooseAction<TContext extends MachineContext, TEvent extends EventObject> extends BaseActionObject {
|
|
694
|
+
type: ActionTypes.Choose;
|
|
695
|
+
params: {
|
|
696
|
+
guards: Array<ChooseCondition<TContext, TEvent>>;
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
export interface ResolvedChooseAction extends BaseActionObject {
|
|
700
|
+
type: ActionTypes.Choose;
|
|
701
|
+
params: {
|
|
702
|
+
actions: BaseActionObject[];
|
|
703
|
+
};
|
|
704
|
+
}
|
|
705
|
+
export interface TransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends Omit<TransitionConfig<TContext, TEvent>, 'target'> {
|
|
706
|
+
target: Array<StateNode<TContext, TEvent>> | undefined;
|
|
707
|
+
source: StateNode<TContext, TEvent>;
|
|
708
|
+
actions: BaseActionObject[];
|
|
709
|
+
external: boolean;
|
|
710
|
+
guard?: GuardDefinition<TContext, TEvent>;
|
|
711
|
+
eventType: TEvent['type'] | '*';
|
|
712
|
+
toJSON: () => {
|
|
713
|
+
target: string[] | undefined;
|
|
714
|
+
source: string;
|
|
715
|
+
actions: BaseActionObject[];
|
|
716
|
+
guard?: GuardDefinition<TContext, TEvent>;
|
|
717
|
+
eventType: TEvent['type'] | '*';
|
|
718
|
+
meta?: Record<string, any>;
|
|
719
|
+
};
|
|
720
|
+
}
|
|
721
|
+
export type AnyTransitionDefinition = TransitionDefinition<any, any>;
|
|
722
|
+
export interface InitialTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
723
|
+
target: Array<StateNode<TContext, TEvent>>;
|
|
724
|
+
guard?: never;
|
|
725
|
+
}
|
|
726
|
+
export type TransitionDefinitionMap<TContext extends MachineContext, TEvent extends EventObject> = {
|
|
727
|
+
[K in TEvent['type'] | '*']: Array<TransitionDefinition<TContext, K extends TEvent['type'] ? Extract<TEvent, {
|
|
728
|
+
type: K;
|
|
729
|
+
}> : EventObject>>;
|
|
730
|
+
};
|
|
731
|
+
export interface DelayedTransitionDefinition<TContext extends MachineContext, TEvent extends EventObject> extends TransitionDefinition<TContext, TEvent> {
|
|
732
|
+
delay: number | string | DelayExpr<TContext, TEvent>;
|
|
733
|
+
}
|
|
734
|
+
export interface Edge<TContext extends MachineContext, TEvent extends EventObject, TEventType extends TEvent['type'] = string> {
|
|
735
|
+
event: TEventType;
|
|
736
|
+
source: StateNode<TContext, TEvent>;
|
|
737
|
+
target: StateNode<TContext, TEvent>;
|
|
738
|
+
cond?: GuardConfig<TContext, TEvent & {
|
|
739
|
+
type: TEventType;
|
|
740
|
+
}>;
|
|
741
|
+
actions: Array<Action<TContext, TEvent>>;
|
|
742
|
+
meta?: MetaObject;
|
|
743
|
+
transition: TransitionDefinition<TContext, TEvent>;
|
|
744
|
+
}
|
|
745
|
+
export interface NodesAndEdges<TContext extends MachineContext, TEvent extends EventObject> {
|
|
746
|
+
nodes: StateNode[];
|
|
747
|
+
edges: Array<Edge<TContext, TEvent, TEvent['type']>>;
|
|
748
|
+
}
|
|
749
|
+
export interface Segment<TContext extends MachineContext, TEvent extends EventObject> {
|
|
750
|
+
/**
|
|
751
|
+
* From state.
|
|
752
|
+
*/
|
|
753
|
+
state: State<TContext, TEvent>;
|
|
754
|
+
/**
|
|
755
|
+
* Event from state.
|
|
756
|
+
*/
|
|
757
|
+
event: TEvent;
|
|
758
|
+
}
|
|
759
|
+
export interface StateMeta<TContext extends MachineContext, TEvent extends EventObject> {
|
|
760
|
+
state: State<TContext, TEvent, any>;
|
|
761
|
+
_event: SCXML.Event<TEvent>;
|
|
762
|
+
self: ActorRef<TEvent>;
|
|
763
|
+
system: ActorSystem<any>;
|
|
764
|
+
}
|
|
765
|
+
export interface StateLike<TContext extends MachineContext> {
|
|
766
|
+
value: StateValue;
|
|
767
|
+
context: TContext;
|
|
768
|
+
event: EventObject;
|
|
769
|
+
_event: SCXML.Event<EventObject>;
|
|
770
|
+
}
|
|
771
|
+
export interface StateConfig<TContext extends MachineContext, TEvent extends EventObject> {
|
|
772
|
+
value: StateValue;
|
|
773
|
+
context: TContext;
|
|
774
|
+
_event: SCXML.Event<TEvent>;
|
|
775
|
+
historyValue?: HistoryValue<TContext, TEvent>;
|
|
776
|
+
actions?: BaseActionObject[];
|
|
777
|
+
meta?: any;
|
|
778
|
+
configuration?: Array<StateNode<TContext, TEvent>>;
|
|
779
|
+
transitions?: Array<TransitionDefinition<TContext, TEvent>>;
|
|
780
|
+
children: Record<string, ActorRef<any>>;
|
|
781
|
+
done?: boolean;
|
|
782
|
+
output?: any;
|
|
783
|
+
tags?: Set<string>;
|
|
784
|
+
machine?: StateMachine<TContext, TEvent, any, any, any>;
|
|
785
|
+
_internalQueue?: Array<SCXML.Event<TEvent>>;
|
|
786
|
+
}
|
|
787
|
+
export interface InterpreterOptions<_TActorBehavior extends AnyActorBehavior> {
|
|
788
|
+
/**
|
|
789
|
+
* Whether state actions should be executed immediately upon transition. Defaults to `true`.
|
|
790
|
+
*/
|
|
791
|
+
execute?: boolean;
|
|
792
|
+
clock?: Clock;
|
|
793
|
+
logger?: (...args: any[]) => void;
|
|
794
|
+
parent?: ActorRef<any>;
|
|
795
|
+
/**
|
|
796
|
+
* If `true`, defers processing of sent events until the service
|
|
797
|
+
* is initialized (`.start()`). Otherwise, an error will be thrown
|
|
798
|
+
* for events sent to an uninitialized service.
|
|
799
|
+
*
|
|
800
|
+
* Default: `true`
|
|
801
|
+
*/
|
|
802
|
+
deferEvents?: boolean;
|
|
803
|
+
/**
|
|
804
|
+
* The custom `id` for referencing this service.
|
|
805
|
+
*/
|
|
806
|
+
id?: string;
|
|
807
|
+
/**
|
|
808
|
+
* If `true`, states and events will be logged to Redux DevTools.
|
|
809
|
+
*
|
|
810
|
+
* Default: `false`
|
|
811
|
+
*/
|
|
812
|
+
devTools?: boolean | DevToolsAdapter;
|
|
813
|
+
sync?: boolean;
|
|
814
|
+
/**
|
|
815
|
+
* The system ID to register this actor under
|
|
816
|
+
*/
|
|
817
|
+
systemId?: string;
|
|
818
|
+
/**
|
|
819
|
+
* The input data to pass to the actor.
|
|
820
|
+
*/
|
|
821
|
+
input?: any;
|
|
822
|
+
state?: any;
|
|
823
|
+
/**
|
|
824
|
+
* The source definition.
|
|
825
|
+
*/
|
|
826
|
+
src?: string;
|
|
827
|
+
}
|
|
828
|
+
export type AnyInterpreter = Interpreter<any>;
|
|
829
|
+
export declare namespace SCXML {
|
|
830
|
+
interface Event<TEvent extends EventObject> {
|
|
831
|
+
/**
|
|
832
|
+
* This is a character string giving the name of the event.
|
|
833
|
+
* The SCXML Processor must set the name field to the name of this event.
|
|
834
|
+
* It is what is matched against the 'event' attribute of <transition>.
|
|
835
|
+
* Note that transitions can do additional tests by using the value of this field
|
|
836
|
+
* inside boolean expressions in the 'cond' attribute.
|
|
837
|
+
*/
|
|
838
|
+
name: string;
|
|
839
|
+
/**
|
|
840
|
+
* This field describes the event type.
|
|
841
|
+
* The SCXML Processor must set it to: "platform" (for events raised by the platform itself, such as error events),
|
|
842
|
+
* "internal" (for events raised by <raise> and <send> with target '_internal')
|
|
843
|
+
* or "external" (for all other events).
|
|
844
|
+
*/
|
|
845
|
+
type: 'platform' | 'internal' | 'external';
|
|
846
|
+
/**
|
|
847
|
+
* If the sending entity has specified a value for this, the Processor must set this field to that value
|
|
848
|
+
* (see C Event I/O Processors for details).
|
|
849
|
+
* Otherwise, in the case of error events triggered by a failed attempt to send an event,
|
|
850
|
+
* the Processor must set this field to the send id of the triggering <send> element.
|
|
851
|
+
* Otherwise it must leave it blank.
|
|
852
|
+
*/
|
|
853
|
+
sendid?: string;
|
|
854
|
+
/**
|
|
855
|
+
* This is a URI, equivalent to the 'target' attribute on the <send> element.
|
|
856
|
+
* For external events, the SCXML Processor should set this field to a value which,
|
|
857
|
+
* when used as the value of 'target', will allow the receiver of the event to <send>
|
|
858
|
+
* a response back to the originating entity via the Event I/O Processor specified in 'origintype'.
|
|
859
|
+
* For internal and platform events, the Processor must leave this field blank.
|
|
860
|
+
*/
|
|
861
|
+
origin?: ActorRef<any>;
|
|
862
|
+
/**
|
|
863
|
+
* This is equivalent to the 'type' field on the <send> element.
|
|
864
|
+
* For external events, the SCXML Processor should set this field to a value which,
|
|
865
|
+
* when used as the value of 'type', will allow the receiver of the event to <send>
|
|
866
|
+
* a response back to the originating entity at the URI specified by 'origin'.
|
|
867
|
+
* For internal and platform events, the Processor must leave this field blank.
|
|
868
|
+
*/
|
|
869
|
+
origintype?: string;
|
|
870
|
+
/**
|
|
871
|
+
* If this event is generated from an invoked child process, the SCXML Processor
|
|
872
|
+
* must set this field to the invoke id of the invocation that triggered the child process.
|
|
873
|
+
* Otherwise it must leave it blank.
|
|
874
|
+
*/
|
|
875
|
+
invokeid?: string;
|
|
876
|
+
/**
|
|
877
|
+
* This field contains whatever data the sending entity chose to include in this event.
|
|
878
|
+
* The receiving SCXML Processor should reformat this data to match its data model,
|
|
879
|
+
* but must not otherwise modify it.
|
|
880
|
+
*
|
|
881
|
+
* If the conversion is not possible, the Processor must leave the field blank
|
|
882
|
+
* and must place an error 'error.execution' in the internal event queue.
|
|
883
|
+
*/
|
|
884
|
+
data: TEvent;
|
|
885
|
+
/**
|
|
886
|
+
* @private
|
|
887
|
+
*/
|
|
888
|
+
$$type: 'scxml';
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
export type Observer<T> = {
|
|
892
|
+
next?: (value: T) => void;
|
|
893
|
+
error?: (err: any) => void;
|
|
894
|
+
complete?: () => void;
|
|
895
|
+
};
|
|
896
|
+
export interface Subscription {
|
|
897
|
+
unsubscribe(): void;
|
|
898
|
+
}
|
|
899
|
+
export interface InteropObservable<T> {
|
|
900
|
+
[Symbol.observable]: () => InteropSubscribable<T>;
|
|
901
|
+
}
|
|
902
|
+
export interface InteropSubscribable<T> {
|
|
903
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
904
|
+
}
|
|
905
|
+
export interface Subscribable<T> extends InteropSubscribable<T> {
|
|
906
|
+
subscribe(observer: Observer<T>): Subscription;
|
|
907
|
+
subscribe(next: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
|
|
908
|
+
}
|
|
909
|
+
export type Spawnable = AnyStateMachine | PromiseLike<any> | InvokeCallback | InteropObservable<any> | Subscribable<any> | ActorBehavior<any, any>;
|
|
910
|
+
export type ExtractEvent<TEvent extends EventObject, TEventType extends TEvent['type']> = TEvent extends any ? TEventType extends TEvent['type'] ? TEvent : never : never;
|
|
911
|
+
export interface BaseActorRef<TEvent extends EventObject> {
|
|
912
|
+
send: (event: TEvent) => void;
|
|
913
|
+
}
|
|
914
|
+
export interface ActorLike<TCurrent, TEvent extends EventObject> extends Subscribable<TCurrent> {
|
|
915
|
+
send: (event: TEvent) => void;
|
|
916
|
+
}
|
|
917
|
+
export interface ActorRef<TEvent extends EventObject, TSnapshot = any> extends Subscribable<TSnapshot>, InteropObservable<TSnapshot> {
|
|
918
|
+
/**
|
|
919
|
+
* The unique identifier for this actor relative to its parent.
|
|
920
|
+
*/
|
|
921
|
+
id: string;
|
|
922
|
+
sessionId: string;
|
|
923
|
+
send: (event: TEvent) => void;
|
|
924
|
+
start?: () => void;
|
|
925
|
+
getSnapshot: () => TSnapshot | undefined;
|
|
926
|
+
getPersistedState?: () => any;
|
|
927
|
+
stop: () => void;
|
|
928
|
+
toJSON?: () => any;
|
|
929
|
+
_parent?: ActorRef<any, any>;
|
|
930
|
+
system?: ActorSystem<any>;
|
|
931
|
+
status: ActorStatus;
|
|
932
|
+
src?: string;
|
|
933
|
+
}
|
|
934
|
+
export type AnyActorRef = ActorRef<any, any>;
|
|
935
|
+
export type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? ActorRef<TEvent, State<TContext, TEvent, AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends false ? MarkAllImplementationsAsProvided<TResolvedTypesMeta> : TResolvedTypesMeta>> : R extends Promise<infer U> ? ActorRef<{
|
|
936
|
+
type: string;
|
|
937
|
+
}, U | undefined> : R extends ActorBehavior<infer TEvent, infer TSnapshot> ? ActorRef<TEvent, TSnapshot> : never : never;
|
|
938
|
+
export type DevToolsAdapter = (service: AnyInterpreter) => void;
|
|
939
|
+
export type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? Interpreter<ActorBehavior<TEvent, State<TContext, TEvent, TResolvedTypesMeta>, State<TContext, TEvent, TResolvedTypesMeta>, PersistedMachineState<State<TContext, TEvent, TResolvedTypesMeta>>>> : never;
|
|
940
|
+
export type MachineImplementationsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, infer TEvent, any, any, infer TResolvedTypesMeta> ? InternalMachineImplementations<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
|
941
|
+
export type __ResolvedTypesMetaFrom<T> = T extends StateMachine<any, any, any, infer TResolvedTypesMeta> ? TResolvedTypesMeta : never;
|
|
942
|
+
export type EventOfMachine<TMachine extends AnyStateMachine> = TMachine extends StateMachine<any, infer E, any, any, any> ? E : never;
|
|
943
|
+
export interface ActorContext<TEvent extends EventObject, TSnapshot, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
944
|
+
self: ActorRef<TEvent, TSnapshot>;
|
|
945
|
+
id: string;
|
|
946
|
+
sessionId: string;
|
|
947
|
+
logger: (...args: any[]) => void;
|
|
948
|
+
defer: (fn: () => void) => void;
|
|
949
|
+
system: TSystem;
|
|
950
|
+
stopChild: (child: AnyActorRef) => void;
|
|
951
|
+
}
|
|
952
|
+
export type AnyActorContext = ActorContext<any, any, any>;
|
|
953
|
+
export interface ActorBehavior<TEvent extends EventObject, TSnapshot = any, TInternalState = any,
|
|
954
|
+
/**
|
|
955
|
+
* Serialized internal state used for persistence & restoration
|
|
956
|
+
*/
|
|
957
|
+
TPersisted = TInternalState, TSystem extends ActorSystem<any> = ActorSystem<any>> {
|
|
958
|
+
transition: (state: TInternalState, message: TEvent | LifecycleSignal, ctx: ActorContext<TEvent, TSnapshot, TSystem>) => TInternalState;
|
|
959
|
+
getInitialState: (actorCtx: ActorContext<TEvent, TSnapshot, any>, input: any) => TInternalState;
|
|
960
|
+
restoreState?: (persistedState: TPersisted, actorCtx: ActorContext<TEvent, TSnapshot>) => TInternalState;
|
|
961
|
+
getSnapshot?: (state: TInternalState) => TSnapshot;
|
|
962
|
+
getStatus?: (state: TInternalState) => {
|
|
963
|
+
status: string;
|
|
964
|
+
data?: any;
|
|
965
|
+
};
|
|
966
|
+
start?: (state: TInternalState, actorCtx: ActorContext<TEvent, TSnapshot>) => void;
|
|
967
|
+
/**
|
|
968
|
+
* @returns Persisted state
|
|
969
|
+
*/
|
|
970
|
+
getPersistedState?: (state: TInternalState) => TPersisted;
|
|
971
|
+
}
|
|
972
|
+
export type AnyActorBehavior = ActorBehavior<any, any, any, any>;
|
|
973
|
+
export type SnapshotFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TSnapshot> ? TSnapshot : R extends Interpreter<infer TBehavior> ? SnapshotFrom<TBehavior> : R extends ActorBehavior<infer _, infer TSnapshot> ? TSnapshot : R extends ActorContext<infer _, infer TSnapshot, infer __> ? TSnapshot : never : never;
|
|
974
|
+
export type EventFromBehavior<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer TEvent, infer _> ? TEvent : never;
|
|
975
|
+
export type PersistedStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer _TInternalState, infer TPersisted> ? TPersisted : never;
|
|
976
|
+
export type InternalStateFrom<TBehavior extends ActorBehavior<any, any>> = TBehavior extends ActorBehavior<infer _TEvent, infer _TSnapshot, infer TInternalState, infer _TPersisted> ? TInternalState : never;
|
|
977
|
+
type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends State<infer _, infer TEvent, infer __> ? TEvent : R extends Interpreter<infer _, infer TEvent> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
978
|
+
export type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent extends EventObject = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : ExtractEvent<TEvent, K>;
|
|
979
|
+
export type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends State<infer TContext, infer _, infer __> ? TContext : R extends Interpreter<infer TBehavior> ? TBehavior extends StateMachine<infer TContext, infer _> ? TContext : never : never : never;
|
|
980
|
+
export type InferEvent<E extends EventObject> = {
|
|
981
|
+
[T in E['type']]: {
|
|
982
|
+
type: T;
|
|
983
|
+
} & Extract<E, {
|
|
984
|
+
type: T;
|
|
985
|
+
}>;
|
|
986
|
+
}[E['type']];
|
|
987
|
+
export type TODO = any;
|
|
988
|
+
export type StateValueFrom<TMachine extends AnyStateMachine> = Parameters<StateFrom<TMachine>['matches']>[0];
|
|
989
|
+
export type StateFromMachine<TMachine extends AnyStateMachine> = TMachine['initialState'];
|
|
990
|
+
export interface ActorSystemInfo {
|
|
991
|
+
actors: Record<string, AnyActorRef>;
|
|
992
|
+
}
|
|
993
|
+
export interface ActorSystem<T extends ActorSystemInfo> {
|
|
994
|
+
_bookId: () => string;
|
|
995
|
+
_register: (sessionId: string, actorRef: AnyActorRef) => string;
|
|
996
|
+
_unregister: (actorRef: AnyActorRef) => void;
|
|
997
|
+
_set: <K extends keyof T['actors']>(key: K, actorRef: T['actors'][K]) => void;
|
|
998
|
+
get: <K extends keyof T['actors']>(key: K) => T['actors'][K] | undefined;
|
|
999
|
+
}
|
|
1000
|
+
export type PersistedMachineState<TState extends AnyState> = Pick<TState, 'value' | 'output' | 'context' | '_event' | 'done' | 'historyValue'> & {
|
|
1001
|
+
children: {
|
|
1002
|
+
[K in keyof TState['children']]: {
|
|
1003
|
+
state: any;
|
|
1004
|
+
src?: string;
|
|
1005
|
+
};
|
|
1006
|
+
};
|
|
1007
|
+
};
|
|
1008
|
+
export {};
|