xstate 5.32.1 → 6.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.
Files changed (119) hide show
  1. package/README.md +7 -8
  2. package/dist/StateMachine-2dcdb1f5.esm.js +720 -0
  3. package/dist/StateMachine-2ea0a7fa.development.esm.js +737 -0
  4. package/dist/StateMachine-64813f46.cjs.js +723 -0
  5. package/dist/StateMachine-8d22a79c.development.cjs.js +740 -0
  6. package/dist/declarations/src/State.d.ts +11 -13
  7. package/dist/declarations/src/StateMachine.d.ts +27 -21
  8. package/dist/declarations/src/StateNode.d.ts +18 -54
  9. package/dist/declarations/src/actions.d.ts +14 -9
  10. package/dist/declarations/src/actors/callback.d.ts +42 -16
  11. package/dist/declarations/src/actors/index.d.ts +9 -6
  12. package/dist/declarations/src/actors/listener.d.ts +18 -0
  13. package/dist/declarations/src/actors/logic.d.ts +105 -0
  14. package/dist/declarations/src/actors/observable.d.ts +72 -27
  15. package/dist/declarations/src/actors/promise.d.ts +133 -48
  16. package/dist/declarations/src/actors/subscription.d.ts +22 -0
  17. package/dist/declarations/src/atom.d.ts +81 -0
  18. package/dist/declarations/src/createActor.d.ts +31 -33
  19. package/dist/declarations/src/createMachine.d.ts +35 -7
  20. package/dist/declarations/src/createMachineFromConfig.d.ts +176 -0
  21. package/dist/declarations/src/graph/graph.d.ts +4 -2
  22. package/dist/declarations/src/index.d.ts +12 -8
  23. package/dist/declarations/src/inspection.d.ts +84 -30
  24. package/dist/declarations/src/mapState.d.ts +4 -2
  25. package/dist/declarations/src/schema.types.d.ts +90 -0
  26. package/dist/declarations/src/serialize.d.ts +44 -0
  27. package/dist/declarations/src/setup.d.ts +251 -135
  28. package/dist/declarations/src/spawn.d.ts +6 -31
  29. package/dist/declarations/src/stateUtils.d.ts +21 -19
  30. package/dist/declarations/src/system.d.ts +8 -7
  31. package/dist/declarations/src/transition.d.ts +5 -5
  32. package/dist/declarations/src/types.d.ts +405 -405
  33. package/dist/declarations/src/types.v6.d.ts +392 -0
  34. package/dist/declarations/src/utils.d.ts +4 -3
  35. package/dist/index-93edd3bd.esm.js +4909 -0
  36. package/dist/index-9cb3b3a0.cjs.js +4968 -0
  37. package/dist/index-e61170ba.development.esm.js +4948 -0
  38. package/dist/index-f6ef20d1.development.cjs.js +5007 -0
  39. package/dist/xstate-actors.cjs.js +12 -838
  40. package/dist/xstate-actors.cjs.mjs +10 -5
  41. package/dist/xstate-actors.development.cjs.js +12 -838
  42. package/dist/xstate-actors.development.cjs.mjs +10 -5
  43. package/dist/xstate-actors.development.esm.js +1 -836
  44. package/dist/xstate-actors.esm.js +1 -836
  45. package/dist/xstate-actors.umd.min.js +1 -1
  46. package/dist/xstate-actors.umd.min.js.map +1 -1
  47. package/dist/xstate-graph.cjs.js +18 -29
  48. package/dist/xstate-graph.development.cjs.js +18 -29
  49. package/dist/xstate-graph.development.esm.js +15 -26
  50. package/dist/xstate-graph.esm.js +15 -26
  51. package/dist/xstate-graph.umd.min.js +1 -1
  52. package/dist/xstate-graph.umd.min.js.map +1 -1
  53. package/dist/xstate.cjs.js +1316 -112
  54. package/dist/xstate.cjs.mjs +22 -22
  55. package/dist/xstate.development.cjs.js +1316 -112
  56. package/dist/xstate.development.cjs.mjs +22 -22
  57. package/dist/xstate.development.esm.js +1278 -76
  58. package/dist/xstate.esm.js +1278 -76
  59. package/dist/xstate.umd.min.js +1 -1
  60. package/dist/xstate.umd.min.js.map +1 -1
  61. package/package.json +3 -47
  62. package/dist/StateMachine-45e79c35.esm.js +0 -560
  63. package/dist/StateMachine-be2e51a3.development.cjs.js +0 -569
  64. package/dist/StateMachine-e0178d48.development.esm.js +0 -566
  65. package/dist/StateMachine-e6732977.cjs.js +0 -563
  66. package/dist/assign-2aa58daa.esm.js +0 -127
  67. package/dist/assign-927227d6.development.cjs.js +0 -135
  68. package/dist/assign-e8f2bd75.cjs.js +0 -129
  69. package/dist/assign-f338cee3.development.esm.js +0 -133
  70. package/dist/declarations/src/actions/assign.d.ts +0 -45
  71. package/dist/declarations/src/actions/cancel.d.ts +0 -39
  72. package/dist/declarations/src/actions/emit.d.ts +0 -44
  73. package/dist/declarations/src/actions/enqueueActions.d.ts +0 -57
  74. package/dist/declarations/src/actions/log.d.ts +0 -16
  75. package/dist/declarations/src/actions/raise.d.ts +0 -21
  76. package/dist/declarations/src/actions/send.d.ts +0 -42
  77. package/dist/declarations/src/actions/spawnChild.d.ts +0 -34
  78. package/dist/declarations/src/actions/stopChild.d.ts +0 -19
  79. package/dist/declarations/src/actors/transition.d.ts +0 -143
  80. package/dist/declarations/src/dev/index.d.ts +0 -14
  81. package/dist/declarations/src/guards.d.ts +0 -128
  82. package/dist/log-410e5e55.development.esm.js +0 -429
  83. package/dist/log-7776fcf2.cjs.js +0 -409
  84. package/dist/log-c2e11c01.development.cjs.js +0 -437
  85. package/dist/log-fa75ec2d.esm.js +0 -401
  86. package/dist/raise-74097812.development.esm.js +0 -2823
  87. package/dist/raise-7c948725.cjs.js +0 -2816
  88. package/dist/raise-964cd4e9.development.cjs.js +0 -2878
  89. package/dist/raise-e974d1c9.esm.js +0 -2761
  90. package/dist/xstate-actions.cjs.d.mts +0 -2
  91. package/dist/xstate-actions.cjs.d.ts +0 -2
  92. package/dist/xstate-actions.cjs.js +0 -23
  93. package/dist/xstate-actions.cjs.mjs +0 -14
  94. package/dist/xstate-actions.development.cjs.js +0 -23
  95. package/dist/xstate-actions.development.cjs.mjs +0 -14
  96. package/dist/xstate-actions.development.esm.js +0 -4
  97. package/dist/xstate-actions.esm.js +0 -4
  98. package/dist/xstate-actions.umd.min.js +0 -2
  99. package/dist/xstate-actions.umd.min.js.map +0 -1
  100. package/dist/xstate-dev.cjs.d.mts +0 -2
  101. package/dist/xstate-dev.cjs.d.ts +0 -2
  102. package/dist/xstate-dev.cjs.js +0 -48
  103. package/dist/xstate-dev.cjs.mjs +0 -5
  104. package/dist/xstate-dev.development.cjs.js +0 -51
  105. package/dist/xstate-dev.development.cjs.mjs +0 -5
  106. package/dist/xstate-dev.development.esm.js +0 -45
  107. package/dist/xstate-dev.esm.js +0 -42
  108. package/dist/xstate-dev.umd.min.js +0 -2
  109. package/dist/xstate-dev.umd.min.js.map +0 -1
  110. package/dist/xstate-guards.cjs.d.mts +0 -2
  111. package/dist/xstate-guards.cjs.d.ts +0 -2
  112. package/dist/xstate-guards.cjs.js +0 -14
  113. package/dist/xstate-guards.cjs.mjs +0 -7
  114. package/dist/xstate-guards.development.cjs.js +0 -14
  115. package/dist/xstate-guards.development.cjs.mjs +0 -7
  116. package/dist/xstate-guards.development.esm.js +0 -2
  117. package/dist/xstate-guards.esm.js +0 -2
  118. package/dist/xstate-guards.umd.min.js +0 -2
  119. package/dist/xstate-guards.umd.min.js.map +0 -1
@@ -1,409 +0,0 @@
1
- 'use strict';
2
-
3
- var dist_xstateGuards = require('./raise-7c948725.cjs.js');
4
- var assign = require('./assign-e8f2bd75.cjs.js');
5
-
6
- function resolveEmit(_, snapshot, args, actionParams, {
7
- event: eventOrExpr
8
- }) {
9
- const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;
10
- return [snapshot, {
11
- event: resolvedEvent
12
- }, undefined];
13
- }
14
- function executeEmit(actorScope, {
15
- event
16
- }) {
17
- actorScope.defer(() => actorScope.emit(event));
18
- }
19
- /**
20
- * Emits an event to event handlers registered on the actor via `actor.on(event,
21
- * handler)`.
22
- *
23
- * @example
24
- *
25
- * ```ts
26
- * import { emit } from 'xstate';
27
- *
28
- * const machine = createMachine({
29
- * // ...
30
- * on: {
31
- * something: {
32
- * actions: emit({
33
- * type: 'emitted',
34
- * some: 'data'
35
- * })
36
- * }
37
- * }
38
- * // ...
39
- * });
40
- *
41
- * const actor = createActor(machine).start();
42
- *
43
- * actor.on('emitted', (event) => {
44
- * console.log(event);
45
- * });
46
- *
47
- * actor.send({ type: 'something' });
48
- * // logs:
49
- * // {
50
- * // type: 'emitted',
51
- * // some: 'data'
52
- * // }
53
- * ```
54
- */
55
- function emit(/** The event to emit, or an expression that returns an event to emit. */
56
- eventOrExpr) {
57
- function emit(_args, _params) {
58
- }
59
- emit.type = 'xstate.emit';
60
- emit.event = eventOrExpr;
61
- emit.resolve = resolveEmit;
62
- emit.execute = executeEmit;
63
- return emit;
64
- }
65
-
66
- // this is needed to make JSDoc `@link` work properly
67
-
68
- /**
69
- * @remarks
70
- * `T | unknown` reduces to `unknown` and that can be problematic when it comes
71
- * to contextual typing. It especially is a problem when the union has a
72
- * function member, like here:
73
- *
74
- * ```ts
75
- * declare function test(
76
- * cbOrVal: ((arg: number) => unknown) | unknown
77
- * ): void;
78
- * test((arg) => {}); // oops, implicit any
79
- * ```
80
- *
81
- * This type can be used to avoid this problem. This union represents the same
82
- * value space as `unknown`.
83
- */
84
-
85
- // https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887
86
-
87
- // @TODO: we can't use native `NoInfer` as we need those:
88
- // https://github.com/microsoft/TypeScript/pull/61092
89
- // https://github.com/microsoft/TypeScript/pull/61077
90
- // but even with those fixes native NoInfer still doesn't work - further issues have to be reproduced and fixed
91
-
92
- /** @deprecated Use the built-in `NoInfer` type instead */
93
-
94
- /** The full definition of an event, with a string `type`. */
95
-
96
- /**
97
- * The string or object representing the state value relative to the parent
98
- * state node.
99
- *
100
- * @remarks
101
- * - For a child atomic state node, this is a string, e.g., `"pending"`.
102
- * - For complex state nodes, this is an object, e.g., `{ success:
103
- * "someChildState" }`.
104
- */
105
-
106
- /** @deprecated Use `AnyMachineSnapshot` instead */
107
-
108
- // TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something
109
- /** @ignore */
110
-
111
- /**
112
- * Runtime options for state machine execution.
113
- *
114
- * @example
115
- *
116
- * ```ts
117
- * const machine = createMachine({
118
- * // ... machine config
119
- * options: {
120
- * maxIterations: 5000
121
- * // other runtime options can be added here
122
- * }
123
- * });
124
- * ```
125
- */
126
-
127
- let SpecialTargets = /*#__PURE__*/function (SpecialTargets) {
128
- SpecialTargets["Parent"] = "#_parent";
129
- SpecialTargets["Internal"] = "#_internal";
130
- return SpecialTargets;
131
- }({});
132
-
133
- /** @deprecated Use `AnyActor` instead. */
134
-
135
- // Based on RxJS types
136
-
137
- // TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic
138
-
139
- /** @deprecated Use `Actor<T>` instead. */
140
-
141
- /**
142
- * Represents logic which can be used by an actor.
143
- *
144
- * @template TSnapshot - The type of the snapshot.
145
- * @template TEvent - The type of the event object.
146
- * @template TInput - The type of the input.
147
- * @template TSystem - The type of the actor system.
148
- */
149
-
150
- // Actors that don't have literal string IDs — these are the only ones
151
- // that should appear in the index signature fallback, since actors with
152
- // literal IDs are already covered by ToConcreteChildren.
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 === dist_xstateGuards.XSTATE_ERROR ? dist_xstateGuards.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
- function sendTo(_args, _params) {
247
- }
248
- sendTo.type = 'xstate.sendTo';
249
- sendTo.to = to;
250
- sendTo.event = eventOrExpr;
251
- sendTo.id = options?.id;
252
- sendTo.delay = options?.delay;
253
- sendTo.resolve = resolveSendTo;
254
- sendTo.retryResolve = retryResolveSendTo;
255
- sendTo.execute = executeSendTo;
256
- return sendTo;
257
- }
258
-
259
- /**
260
- * Sends an event to this machine's parent.
261
- *
262
- * @param event The event to send to the parent machine.
263
- * @param options Options to pass into the send event.
264
- */
265
- function sendParent(event, options) {
266
- return sendTo(SpecialTargets.Parent, event, options);
267
- }
268
- /**
269
- * Forwards (sends) an event to the `target` actor.
270
- *
271
- * @param target The target actor to forward the event to.
272
- * @param options Options to pass into the send action creator.
273
- */
274
- function forwardTo(target, options) {
275
- return sendTo(target, ({
276
- event
277
- }) => event, options);
278
- }
279
-
280
- function resolveEnqueueActions(actorScope, snapshot, args, actionParams, {
281
- collect
282
- }) {
283
- const actions = [];
284
- const enqueue = function enqueue(action) {
285
- actions.push(action);
286
- };
287
- enqueue.assign = (...args) => {
288
- actions.push(assign.assign(...args));
289
- };
290
- enqueue.cancel = (...args) => {
291
- actions.push(dist_xstateGuards.cancel(...args));
292
- };
293
- enqueue.raise = (...args) => {
294
- // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)
295
- // then it fails to typecheck that because `...args` use `string` in place of `TDelay`
296
- actions.push(dist_xstateGuards.raise(...args));
297
- };
298
- enqueue.sendTo = (...args) => {
299
- // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)
300
- // then it fails to typecheck that because `...args` use `string` in place of `TDelay
301
- actions.push(sendTo(...args));
302
- };
303
- enqueue.sendParent = (...args) => {
304
- actions.push(sendParent(...args));
305
- };
306
- enqueue.spawnChild = (...args) => {
307
- actions.push(dist_xstateGuards.spawnChild(...args));
308
- };
309
- enqueue.stopChild = (...args) => {
310
- actions.push(dist_xstateGuards.stopChild(...args));
311
- };
312
- enqueue.emit = (...args) => {
313
- actions.push(emit(...args));
314
- };
315
- collect({
316
- context: args.context,
317
- event: args.event,
318
- enqueue,
319
- check: guard => dist_xstateGuards.evaluateGuard(guard, snapshot.context, args.event, snapshot),
320
- self: actorScope.self,
321
- system: actorScope.system
322
- }, actionParams);
323
- return [snapshot, undefined, actions];
324
- }
325
- /**
326
- * Creates an action object that will execute actions that are queued by the
327
- * `enqueue(action)` function.
328
- *
329
- * @example
330
- *
331
- * ```ts
332
- * import { createMachine, enqueueActions } from 'xstate';
333
- *
334
- * const machine = createMachine({
335
- * entry: enqueueActions(({ enqueue, check }) => {
336
- * enqueue.assign({ count: 0 });
337
- *
338
- * if (check('someGuard')) {
339
- * enqueue.assign({ count: 1 });
340
- * }
341
- *
342
- * enqueue('someAction');
343
- * })
344
- * });
345
- * ```
346
- */
347
- function enqueueActions(collect) {
348
- function enqueueActions(_args, _params) {
349
- }
350
- enqueueActions.type = 'xstate.enqueueActions';
351
- enqueueActions.collect = collect;
352
- enqueueActions.resolve = resolveEnqueueActions;
353
- return enqueueActions;
354
- }
355
-
356
- function resolveLog(_, snapshot, actionArgs, actionParams, {
357
- value,
358
- label
359
- }) {
360
- return [snapshot, {
361
- value: typeof value === 'function' ? value(actionArgs, actionParams) : value,
362
- label
363
- }, undefined];
364
- }
365
- function executeLog({
366
- logger
367
- }, {
368
- value,
369
- label
370
- }) {
371
- if (label) {
372
- logger(label, value);
373
- } else {
374
- logger(value);
375
- }
376
- }
377
- /**
378
- * @param expr The expression function to evaluate which will be logged. Takes
379
- * in 2 arguments:
380
- *
381
- * - `ctx` - the current state context
382
- * - `event` - the event that caused this action to be executed.
383
- *
384
- * @param label The label to give to the logged expression.
385
- */
386
- function log(value = ({
387
- context,
388
- event
389
- }) => ({
390
- context,
391
- event
392
- }), label) {
393
- function log(_args, _params) {
394
- }
395
- log.type = 'xstate.log';
396
- log.value = value;
397
- log.label = label;
398
- log.resolve = resolveLog;
399
- log.execute = executeLog;
400
- return log;
401
- }
402
-
403
- exports.SpecialTargets = SpecialTargets;
404
- exports.emit = emit;
405
- exports.enqueueActions = enqueueActions;
406
- exports.forwardTo = forwardTo;
407
- exports.log = log;
408
- exports.sendParent = sendParent;
409
- exports.sendTo = sendTo;