xstate 5.0.0-beta.27 → 5.0.0-beta.29

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 (67) hide show
  1. package/README.md +9 -7
  2. package/actions/dist/xstate-actions.cjs.js +11 -17
  3. package/actions/dist/xstate-actions.cjs.mjs +0 -8
  4. package/actions/dist/xstate-actions.development.cjs.js +11 -17
  5. package/actions/dist/xstate-actions.development.cjs.mjs +0 -8
  6. package/actions/dist/xstate-actions.development.esm.js +3 -1
  7. package/actions/dist/xstate-actions.esm.js +3 -1
  8. package/actions/dist/xstate-actions.umd.min.js +1 -1
  9. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  10. package/actors/dist/xstate-actors.cjs.js +395 -28
  11. package/actors/dist/xstate-actors.cjs.mjs +1 -3
  12. package/actors/dist/xstate-actors.development.cjs.js +395 -28
  13. package/actors/dist/xstate-actors.development.cjs.mjs +1 -3
  14. package/actors/dist/xstate-actors.development.esm.js +389 -21
  15. package/actors/dist/xstate-actors.esm.js +389 -21
  16. package/actors/dist/xstate-actors.umd.min.js +1 -1
  17. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  18. package/dist/declarations/src/StateNode.d.ts +3 -3
  19. package/dist/declarations/src/actions/assign.d.ts +9 -4
  20. package/dist/declarations/src/actions/cancel.d.ts +4 -4
  21. package/dist/declarations/src/actions/choose.d.ts +5 -4
  22. package/dist/declarations/src/actions/log.d.ts +4 -4
  23. package/dist/declarations/src/actions/pure.d.ts +6 -5
  24. package/dist/declarations/src/actions/raise.d.ts +2 -2
  25. package/dist/declarations/src/actions/send.d.ts +7 -7
  26. package/dist/declarations/src/actions/stop.d.ts +4 -4
  27. package/dist/declarations/src/actions.d.ts +8 -44
  28. package/dist/declarations/src/actors/callback.d.ts +2 -2
  29. package/dist/declarations/src/actors/index.d.ts +3 -5
  30. package/dist/declarations/src/constants.d.ts +1 -0
  31. package/dist/declarations/src/index.d.ts +9 -16
  32. package/dist/declarations/src/spawn.d.ts +25 -0
  33. package/dist/declarations/src/stateUtils.d.ts +1 -1
  34. package/dist/declarations/src/typegenTypes.d.ts +4 -4
  35. package/dist/declarations/src/types.d.ts +92 -122
  36. package/dist/declarations/src/utils.d.ts +2 -2
  37. package/dist/interpreter-498891b2.esm.js +741 -0
  38. package/dist/interpreter-6e7909c8.development.esm.js +749 -0
  39. package/dist/interpreter-c357bc50.cjs.js +773 -0
  40. package/dist/interpreter-e2c6a579.development.cjs.js +781 -0
  41. package/dist/{actions-9754d2ca.development.esm.js → raise-03e57569.cjs.js} +130 -1307
  42. package/dist/{actions-d1dba4ac.cjs.js → raise-59f2c242.esm.js} +65 -1267
  43. package/dist/{actions-020463e9.esm.js → raise-e778a828.development.esm.js} +109 -1203
  44. package/dist/{actions-ca622922.development.cjs.js → raise-f751dfac.development.cjs.js} +101 -1306
  45. package/dist/send-42c83fb2.development.esm.js +364 -0
  46. package/dist/send-51717e53.cjs.js +349 -0
  47. package/dist/send-f53778f6.development.cjs.js +374 -0
  48. package/dist/send-fff224db.esm.js +339 -0
  49. package/dist/xstate.cjs.js +114 -112
  50. package/dist/xstate.cjs.mjs +2 -2
  51. package/dist/xstate.development.cjs.js +114 -112
  52. package/dist/xstate.development.cjs.mjs +2 -2
  53. package/dist/xstate.development.esm.js +78 -74
  54. package/dist/xstate.esm.js +78 -74
  55. package/dist/xstate.umd.min.js +1 -1
  56. package/dist/xstate.umd.min.js.map +1 -1
  57. package/guards/dist/xstate-guards.cjs.js +2 -1
  58. package/guards/dist/xstate-guards.development.cjs.js +2 -1
  59. package/guards/dist/xstate-guards.development.esm.js +2 -1
  60. package/guards/dist/xstate-guards.esm.js +2 -1
  61. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/declarations/src/constantPrefixes.d.ts +0 -6
  64. package/dist/promise-2ad94e3b.development.esm.js +0 -406
  65. package/dist/promise-3b7e3357.development.cjs.js +0 -412
  66. package/dist/promise-5b07c38e.esm.js +0 -406
  67. package/dist/promise-7a8c1768.cjs.js +0 -412
@@ -1,406 +0,0 @@
1
- import { a2 as XSTATE_INIT, a3 as isPromiseLike, I as doneInvoke, a4 as error, a5 as XSTATE_STOP } from './actions-9754d2ca.development.esm.js';
2
-
3
- /**
4
- * Returns actor logic from a transition function and its initial state.
5
- *
6
- * A transition function is a function that takes the current state and an event and returns the next state.
7
- *
8
- * @param transition The transition function that returns the next state given the current state and event.
9
- * @param initialState The initial state of the transition function.
10
- * @returns Actor logic
11
- */
12
- function fromTransition(transition, initialState) {
13
- return {
14
- config: transition,
15
- transition: (state, event, actorContext) => {
16
- return transition(state, event, actorContext);
17
- },
18
- getInitialState: (_, input) => {
19
- return typeof initialState === 'function' ? initialState({
20
- input
21
- }) : initialState;
22
- },
23
- getSnapshot: state => state,
24
- getPersistedState: state => state,
25
- restoreState: state => state
26
- };
27
- }
28
-
29
- function fromCallback(invokeCallback) {
30
- return {
31
- config: invokeCallback,
32
- start: (_state, {
33
- self
34
- }) => {
35
- self.send({
36
- type: XSTATE_INIT
37
- });
38
- },
39
- transition: (state, event, {
40
- self,
41
- id,
42
- system
43
- }) => {
44
- if (event.type === XSTATE_INIT) {
45
- const sendBack = eventForParent => {
46
- if (state.canceled) {
47
- return;
48
- }
49
- self._parent?.send(eventForParent);
50
- };
51
- const receive = newListener => {
52
- state.receivers.add(newListener);
53
- };
54
- state.dispose = invokeCallback({
55
- input: state.input,
56
- system,
57
- self: self,
58
- sendBack,
59
- receive
60
- });
61
- if (isPromiseLike(state.dispose)) {
62
- state.dispose.then(resolved => {
63
- self._parent?.send(doneInvoke(id, resolved));
64
- state.canceled = true;
65
- }, errorData => {
66
- state.canceled = true;
67
- self._parent?.send(error(id, errorData));
68
- });
69
- }
70
- return state;
71
- }
72
- if (event.type === XSTATE_STOP) {
73
- state.canceled = true;
74
- if (typeof state.dispose === 'function') {
75
- state.dispose();
76
- }
77
- return state;
78
- }
79
- state.receivers.forEach(receiver => receiver(event));
80
- return state;
81
- },
82
- getInitialState: (_, input) => {
83
- return {
84
- canceled: false,
85
- receivers: new Set(),
86
- dispose: undefined,
87
- input
88
- };
89
- },
90
- getSnapshot: () => undefined,
91
- getPersistedState: ({
92
- input,
93
- canceled
94
- }) => ({
95
- input,
96
- canceled
97
- })
98
- };
99
- }
100
-
101
- function fromObservable(observableCreator) {
102
- const nextEventType = '$$xstate.next';
103
- const errorEventType = '$$xstate.error';
104
- const completeEventType = '$$xstate.complete';
105
- return {
106
- config: observableCreator,
107
- transition: (state, event, {
108
- self,
109
- id,
110
- defer
111
- }) => {
112
- if (state.status !== 'active') {
113
- return state;
114
- }
115
- switch (event.type) {
116
- case nextEventType:
117
- // match the exact timing of events sent by machines
118
- // send actions are not executed immediately
119
- defer(() => {
120
- self._parent?.send({
121
- type: `xstate.snapshot.${id}`,
122
- data: event.data
123
- });
124
- });
125
- return {
126
- ...state,
127
- data: event.data
128
- };
129
- case errorEventType:
130
- return {
131
- ...state,
132
- status: 'error',
133
- input: undefined,
134
- data: event.data,
135
- // TODO: if we keep this as `data` we should reflect this in the type
136
- subscription: undefined
137
- };
138
- case completeEventType:
139
- return {
140
- ...state,
141
- status: 'done',
142
- input: undefined,
143
- subscription: undefined
144
- };
145
- case XSTATE_STOP:
146
- state.subscription.unsubscribe();
147
- return {
148
- ...state,
149
- status: 'canceled',
150
- input: undefined,
151
- subscription: undefined
152
- };
153
- default:
154
- return state;
155
- }
156
- },
157
- getInitialState: (_, input) => {
158
- return {
159
- subscription: undefined,
160
- status: 'active',
161
- data: undefined,
162
- input
163
- };
164
- },
165
- start: (state, {
166
- self,
167
- system
168
- }) => {
169
- if (state.status === 'done') {
170
- // Do not restart a completed observable
171
- return;
172
- }
173
- state.subscription = observableCreator({
174
- input: state.input,
175
- system,
176
- self
177
- }).subscribe({
178
- next: value => {
179
- self.send({
180
- type: nextEventType,
181
- data: value
182
- });
183
- },
184
- error: err => {
185
- self.send({
186
- type: errorEventType,
187
- data: err
188
- });
189
- },
190
- complete: () => {
191
- self.send({
192
- type: completeEventType
193
- });
194
- }
195
- });
196
- },
197
- getSnapshot: state => state.data,
198
- getPersistedState: ({
199
- status,
200
- data,
201
- input
202
- }) => ({
203
- status,
204
- data,
205
- input
206
- }),
207
- getStatus: state => state,
208
- restoreState: state => ({
209
- ...state,
210
- subscription: undefined
211
- })
212
- };
213
- }
214
-
215
- /**
216
- * Creates event observable logic that listens to an observable
217
- * that delivers event objects.
218
- *
219
- *
220
- * @param lazyObservable A function that creates an observable
221
- * @returns Event observable logic
222
- */
223
-
224
- function fromEventObservable(lazyObservable) {
225
- const errorEventType = '$$xstate.error';
226
- const completeEventType = '$$xstate.complete';
227
-
228
- // TODO: event types
229
- return {
230
- config: lazyObservable,
231
- transition: (state, event) => {
232
- if (state.status !== 'active') {
233
- return state;
234
- }
235
- switch (event.type) {
236
- case errorEventType:
237
- return {
238
- ...state,
239
- status: 'error',
240
- input: undefined,
241
- data: event.data,
242
- // TODO: if we keep this as `data` we should reflect this in the type
243
- subscription: undefined
244
- };
245
- case completeEventType:
246
- return {
247
- ...state,
248
- status: 'done',
249
- input: undefined,
250
- subscription: undefined
251
- };
252
- case XSTATE_STOP:
253
- state.subscription.unsubscribe();
254
- return {
255
- ...state,
256
- status: 'canceled',
257
- input: undefined,
258
- subscription: undefined
259
- };
260
- default:
261
- return state;
262
- }
263
- },
264
- getInitialState: (_, input) => {
265
- return {
266
- subscription: undefined,
267
- status: 'active',
268
- data: undefined,
269
- input
270
- };
271
- },
272
- start: (state, {
273
- self,
274
- system
275
- }) => {
276
- if (state.status === 'done') {
277
- // Do not restart a completed observable
278
- return;
279
- }
280
- state.subscription = lazyObservable({
281
- input: state.input,
282
- system,
283
- self
284
- }).subscribe({
285
- next: value => {
286
- self._parent?.send(value);
287
- },
288
- error: err => {
289
- self.send({
290
- type: errorEventType,
291
- data: err
292
- });
293
- },
294
- complete: () => {
295
- self.send({
296
- type: completeEventType
297
- });
298
- }
299
- });
300
- },
301
- getSnapshot: _ => undefined,
302
- getPersistedState: ({
303
- status,
304
- data,
305
- input
306
- }) => ({
307
- status,
308
- data,
309
- input
310
- }),
311
- getStatus: state => state,
312
- restoreState: state => ({
313
- ...state,
314
- subscription: undefined
315
- })
316
- };
317
- }
318
-
319
- const resolveEventType = '$$xstate.resolve';
320
- const rejectEventType = '$$xstate.reject';
321
- function fromPromise(
322
- // TODO: add types
323
- promiseCreator) {
324
- // TODO: add event types
325
- const logic = {
326
- config: promiseCreator,
327
- transition: (state, event) => {
328
- if (state.status !== 'active') {
329
- return state;
330
- }
331
- switch (event.type) {
332
- case resolveEventType:
333
- return {
334
- ...state,
335
- status: 'done',
336
- data: event.data,
337
- input: undefined
338
- };
339
- case rejectEventType:
340
- return {
341
- ...state,
342
- status: 'error',
343
- data: event.data,
344
- // TODO: if we keep this as `data` we should reflect this in the type
345
- input: undefined
346
- };
347
- case XSTATE_STOP:
348
- return {
349
- ...state,
350
- status: 'canceled',
351
- input: undefined
352
- };
353
- default:
354
- return state;
355
- }
356
- },
357
- start: (state, {
358
- self,
359
- system
360
- }) => {
361
- // TODO: determine how to allow customizing this so that promises
362
- // can be restarted if necessary
363
- if (state.status !== 'active') {
364
- return;
365
- }
366
- const resolvedPromise = Promise.resolve(promiseCreator({
367
- input: state.input,
368
- system,
369
- self
370
- }));
371
- resolvedPromise.then(response => {
372
- // TODO: remove this condition once dead letter queue lands
373
- if (self._state.status !== 'active') {
374
- return;
375
- }
376
- self.send({
377
- type: resolveEventType,
378
- data: response
379
- });
380
- }, errorData => {
381
- // TODO: remove this condition once dead letter queue lands
382
- if (self._state.status !== 'active') {
383
- return;
384
- }
385
- self.send({
386
- type: rejectEventType,
387
- data: errorData
388
- });
389
- });
390
- },
391
- getInitialState: (_, input) => {
392
- return {
393
- status: 'active',
394
- data: undefined,
395
- input
396
- };
397
- },
398
- getSnapshot: state => state.data,
399
- getStatus: state => state,
400
- getPersistedState: state => state,
401
- restoreState: state => state
402
- };
403
- return logic;
404
- }
405
-
406
- export { fromEventObservable as a, fromObservable as b, fromPromise as c, fromTransition as d, fromCallback as f };