xstate 5.0.0-beta.29 → 5.0.0-beta.31

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 (52) hide show
  1. package/actions/dist/xstate-actions.cjs.js +3 -3
  2. package/actions/dist/xstate-actions.development.cjs.js +3 -3
  3. package/actions/dist/xstate-actions.development.esm.js +3 -3
  4. package/actions/dist/xstate-actions.esm.js +3 -3
  5. package/actions/dist/xstate-actions.umd.min.js +1 -1
  6. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  7. package/actors/dist/xstate-actors.cjs.js +100 -104
  8. package/actors/dist/xstate-actors.development.cjs.js +100 -104
  9. package/actors/dist/xstate-actors.development.esm.js +100 -104
  10. package/actors/dist/xstate-actors.esm.js +100 -104
  11. package/actors/dist/xstate-actors.umd.min.js +1 -1
  12. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  13. package/dist/declarations/src/Machine.d.ts +2 -2
  14. package/dist/declarations/src/State.d.ts +4 -6
  15. package/dist/declarations/src/StateMachine.d.ts +28 -21
  16. package/dist/declarations/src/StateNode.d.ts +3 -3
  17. package/dist/declarations/src/actions/stop.d.ts +1 -1
  18. package/dist/declarations/src/actors/callback.d.ts +8 -8
  19. package/dist/declarations/src/actors/index.d.ts +3 -3
  20. package/dist/declarations/src/actors/observable.d.ts +12 -13
  21. package/dist/declarations/src/actors/promise.d.ts +11 -14
  22. package/dist/declarations/src/actors/transition.d.ts +10 -7
  23. package/dist/declarations/src/index.d.ts +1 -1
  24. package/dist/declarations/src/interpreter.d.ts +4 -4
  25. package/dist/declarations/src/spawn.d.ts +3 -0
  26. package/dist/declarations/src/stateUtils.d.ts +5 -6
  27. package/dist/declarations/src/types.d.ts +74 -69
  28. package/dist/declarations/src/utils.d.ts +4 -4
  29. package/dist/{interpreter-c357bc50.cjs.js → interpreter-05e11c15.cjs.js} +11 -13
  30. package/dist/{interpreter-e2c6a579.development.cjs.js → interpreter-a2236840.development.cjs.js} +12 -14
  31. package/dist/{interpreter-498891b2.esm.js → interpreter-d5fa7ce0.esm.js} +11 -13
  32. package/dist/{interpreter-6e7909c8.development.esm.js → interpreter-e4d2487f.development.esm.js} +12 -14
  33. package/dist/{raise-59f2c242.esm.js → raise-6a68d0cc.esm.js} +61 -32
  34. package/dist/{raise-e778a828.development.esm.js → raise-6fbd4513.development.esm.js} +61 -32
  35. package/dist/{raise-03e57569.cjs.js → raise-90808d65.cjs.js} +61 -32
  36. package/dist/{raise-f751dfac.development.cjs.js → raise-b4bfe138.development.cjs.js} +61 -32
  37. package/dist/{send-f53778f6.development.cjs.js → send-4163d2af.development.cjs.js} +52 -20
  38. package/dist/{send-51717e53.cjs.js → send-72e85cc6.cjs.js} +52 -20
  39. package/dist/{send-42c83fb2.development.esm.js → send-7baeedcb.development.esm.js} +52 -20
  40. package/dist/{send-fff224db.esm.js → send-e5f0f3f6.esm.js} +52 -20
  41. package/dist/xstate.cjs.js +15 -24
  42. package/dist/xstate.development.cjs.js +18 -24
  43. package/dist/xstate.development.esm.js +21 -27
  44. package/dist/xstate.esm.js +18 -27
  45. package/dist/xstate.umd.min.js +1 -1
  46. package/dist/xstate.umd.min.js.map +1 -1
  47. package/guards/dist/xstate-guards.cjs.js +2 -2
  48. package/guards/dist/xstate-guards.development.cjs.js +2 -2
  49. package/guards/dist/xstate-guards.development.esm.js +2 -2
  50. package/guards/dist/xstate-guards.esm.js +2 -2
  51. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  52. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var interpreter = require('../../dist/interpreter-e2c6a579.development.cjs.js');
5
+ var interpreter = require('../../dist/interpreter-a2236840.development.cjs.js');
6
6
  require('../../dev/dist/xstate-dev.development.cjs.js');
7
7
 
8
8
  /**
@@ -11,21 +11,28 @@ require('../../dev/dist/xstate-dev.development.cjs.js');
11
11
  * A transition function is a function that takes the current state and an event and returns the next state.
12
12
  *
13
13
  * @param transition The transition function that returns the next state given the current state and event.
14
- * @param initialState The initial state of the transition function.
14
+ * @param initialContext The initial state of the transition function.
15
15
  * @returns Actor logic
16
16
  */
17
- function fromTransition(transition, initialState) {
17
+ function fromTransition(transition, initialContext) {
18
18
  return {
19
19
  config: transition,
20
20
  transition: (state, event, actorContext) => {
21
- return transition(state, event, actorContext);
21
+ return {
22
+ ...state,
23
+ context: transition(state.context, event, actorContext)
24
+ };
22
25
  },
23
26
  getInitialState: (_, input) => {
24
- return typeof initialState === 'function' ? initialState({
25
- input
26
- }) : initialState;
27
+ return {
28
+ status: 'active',
29
+ output: undefined,
30
+ error: undefined,
31
+ context: typeof initialContext === 'function' ? initialContext({
32
+ input
33
+ }) : initialContext
34
+ };
27
35
  },
28
- getSnapshot: state => state,
29
36
  getPersistedState: state => state,
30
37
  restoreState: state => state
31
38
  };
@@ -48,15 +55,15 @@ function fromCallback(invokeCallback) {
48
55
  }) => {
49
56
  if (event.type === interpreter.XSTATE_INIT) {
50
57
  const sendBack = eventForParent => {
51
- if (state.canceled) {
58
+ if (state.status === 'stopped') {
52
59
  return;
53
60
  }
54
61
  self._parent?.send(eventForParent);
55
62
  };
56
63
  const receive = newListener => {
57
- state.receivers.add(newListener);
64
+ state._receivers.add(newListener);
58
65
  };
59
- state.dispose = invokeCallback({
66
+ state._dispose = invokeCallback({
60
67
  input: state.input,
61
68
  system,
62
69
  self: self,
@@ -66,30 +73,38 @@ function fromCallback(invokeCallback) {
66
73
  return state;
67
74
  }
68
75
  if (event.type === interpreter.XSTATE_STOP) {
69
- state.canceled = true;
70
- if (typeof state.dispose === 'function') {
71
- state.dispose();
76
+ state = {
77
+ ...state,
78
+ status: 'stopped',
79
+ error: undefined
80
+ };
81
+ if (typeof state._dispose === 'function') {
82
+ state._dispose();
72
83
  }
73
84
  return state;
74
85
  }
75
- state.receivers.forEach(receiver => receiver(event));
86
+ state._receivers.forEach(receiver => receiver(event));
76
87
  return state;
77
88
  },
78
89
  getInitialState: (_, input) => {
79
90
  return {
80
- canceled: false,
81
- receivers: new Set(),
82
- dispose: undefined,
83
- input
91
+ status: 'active',
92
+ output: undefined,
93
+ error: undefined,
94
+ input,
95
+ _receivers: new Set(),
96
+ _dispose: undefined
84
97
  };
85
98
  },
86
- getSnapshot: () => undefined,
87
99
  getPersistedState: ({
88
- input,
89
- canceled
90
- }) => ({
91
- input,
92
- canceled
100
+ _dispose,
101
+ _receivers,
102
+ ...rest
103
+ }) => rest,
104
+ restoreState: state => ({
105
+ _receivers: new Set(),
106
+ _dispose: undefined,
107
+ ...state
93
108
  })
94
109
  };
95
110
  }
@@ -100,62 +115,57 @@ function fromObservable(observableCreator) {
100
115
  const completeEventType = '$$xstate.complete';
101
116
  return {
102
117
  config: observableCreator,
103
- transition: (state, event, {
118
+ transition: (snapshot, event, {
104
119
  self,
105
120
  id,
106
121
  defer
107
122
  }) => {
108
- if (state.status !== 'active') {
109
- return state;
123
+ if (snapshot.status !== 'active') {
124
+ return snapshot;
110
125
  }
111
126
  switch (event.type) {
112
127
  case nextEventType:
113
- // match the exact timing of events sent by machines
114
- // send actions are not executed immediately
115
- defer(() => {
116
- self._parent?.send({
117
- type: `xstate.snapshot.${id}`,
118
- data: event.data
119
- });
120
- });
121
- return {
122
- ...state,
123
- data: event.data
124
- };
128
+ {
129
+ return {
130
+ ...snapshot,
131
+ context: event.data
132
+ };
133
+ }
125
134
  case errorEventType:
126
135
  return {
127
- ...state,
136
+ ...snapshot,
128
137
  status: 'error',
138
+ error: event.data,
129
139
  input: undefined,
130
- data: event.data,
131
- // TODO: if we keep this as `data` we should reflect this in the type
132
- subscription: undefined
140
+ _subscription: undefined
133
141
  };
134
142
  case completeEventType:
135
143
  return {
136
- ...state,
144
+ ...snapshot,
137
145
  status: 'done',
138
146
  input: undefined,
139
- subscription: undefined
147
+ _subscription: undefined
140
148
  };
141
149
  case interpreter.XSTATE_STOP:
142
- state.subscription.unsubscribe();
150
+ snapshot._subscription.unsubscribe();
143
151
  return {
144
- ...state,
145
- status: 'canceled',
152
+ ...snapshot,
153
+ status: 'stopped',
146
154
  input: undefined,
147
- subscription: undefined
155
+ _subscription: undefined
148
156
  };
149
157
  default:
150
- return state;
158
+ return snapshot;
151
159
  }
152
160
  },
153
161
  getInitialState: (_, input) => {
154
162
  return {
155
- subscription: undefined,
156
163
  status: 'active',
157
- data: undefined,
158
- input
164
+ output: undefined,
165
+ error: undefined,
166
+ context: undefined,
167
+ input,
168
+ _subscription: undefined
159
169
  };
160
170
  },
161
171
  start: (state, {
@@ -166,7 +176,7 @@ function fromObservable(observableCreator) {
166
176
  // Do not restart a completed observable
167
177
  return;
168
178
  }
169
- state.subscription = observableCreator({
179
+ state._subscription = observableCreator({
170
180
  input: state.input,
171
181
  system,
172
182
  self
@@ -190,20 +200,13 @@ function fromObservable(observableCreator) {
190
200
  }
191
201
  });
192
202
  },
193
- getSnapshot: state => state.data,
194
203
  getPersistedState: ({
195
- status,
196
- data,
197
- input
198
- }) => ({
199
- status,
200
- data,
201
- input
202
- }),
203
- getStatus: state => state,
204
+ _subscription,
205
+ ...state
206
+ }) => state,
204
207
  restoreState: state => ({
205
208
  ...state,
206
- subscription: undefined
209
+ _subscription: undefined
207
210
  })
208
211
  };
209
212
  }
@@ -233,25 +236,24 @@ function fromEventObservable(lazyObservable) {
233
236
  return {
234
237
  ...state,
235
238
  status: 'error',
239
+ error: event.data,
236
240
  input: undefined,
237
- data: event.data,
238
- // TODO: if we keep this as `data` we should reflect this in the type
239
- subscription: undefined
241
+ _subscription: undefined
240
242
  };
241
243
  case completeEventType:
242
244
  return {
243
245
  ...state,
244
246
  status: 'done',
245
247
  input: undefined,
246
- subscription: undefined
248
+ _subscription: undefined
247
249
  };
248
250
  case interpreter.XSTATE_STOP:
249
- state.subscription.unsubscribe();
251
+ state._subscription.unsubscribe();
250
252
  return {
251
253
  ...state,
252
- status: 'canceled',
254
+ status: 'stopped',
253
255
  input: undefined,
254
- subscription: undefined
256
+ _subscription: undefined
255
257
  };
256
258
  default:
257
259
  return state;
@@ -259,10 +261,12 @@ function fromEventObservable(lazyObservable) {
259
261
  },
260
262
  getInitialState: (_, input) => {
261
263
  return {
262
- subscription: undefined,
263
264
  status: 'active',
264
- data: undefined,
265
- input
265
+ output: undefined,
266
+ error: undefined,
267
+ context: undefined,
268
+ input,
269
+ _subscription: undefined
266
270
  };
267
271
  },
268
272
  start: (state, {
@@ -273,7 +277,7 @@ function fromEventObservable(lazyObservable) {
273
277
  // Do not restart a completed observable
274
278
  return;
275
279
  }
276
- state.subscription = lazyObservable({
280
+ state._subscription = lazyObservable({
277
281
  input: state.input,
278
282
  system,
279
283
  self
@@ -294,20 +298,13 @@ function fromEventObservable(lazyObservable) {
294
298
  }
295
299
  });
296
300
  },
297
- getSnapshot: _ => undefined,
298
301
  getPersistedState: ({
299
- status,
300
- data,
301
- input
302
- }) => ({
303
- status,
304
- data,
305
- input
306
- }),
307
- getStatus: state => state,
302
+ _subscription,
303
+ ...state
304
+ }) => state,
308
305
  restoreState: state => ({
309
306
  ...state,
310
- subscription: undefined
307
+ _subscription: undefined
311
308
  })
312
309
  };
313
310
  }
@@ -326,24 +323,26 @@ promiseCreator) {
326
323
  }
327
324
  switch (event.type) {
328
325
  case resolveEventType:
329
- return {
330
- ...state,
331
- status: 'done',
332
- data: event.data,
333
- input: undefined
334
- };
326
+ {
327
+ const resolvedValue = event.data;
328
+ return {
329
+ ...state,
330
+ status: 'done',
331
+ output: resolvedValue,
332
+ input: undefined
333
+ };
334
+ }
335
335
  case rejectEventType:
336
336
  return {
337
337
  ...state,
338
338
  status: 'error',
339
- data: event.data,
340
- // TODO: if we keep this as `data` we should reflect this in the type
339
+ error: event.data,
341
340
  input: undefined
342
341
  };
343
342
  case interpreter.XSTATE_STOP:
344
343
  return {
345
344
  ...state,
346
- status: 'canceled',
345
+ status: 'stopped',
347
346
  input: undefined
348
347
  };
349
348
  default:
@@ -365,8 +364,7 @@ promiseCreator) {
365
364
  self
366
365
  }));
367
366
  resolvedPromise.then(response => {
368
- // TODO: remove this condition once dead letter queue lands
369
- if (self._state.status !== 'active') {
367
+ if (self.getSnapshot().status !== 'active') {
370
368
  return;
371
369
  }
372
370
  self.send({
@@ -374,8 +372,7 @@ promiseCreator) {
374
372
  data: response
375
373
  });
376
374
  }, errorData => {
377
- // TODO: remove this condition once dead letter queue lands
378
- if (self._state.status !== 'active') {
375
+ if (self.getSnapshot().status !== 'active') {
379
376
  return;
380
377
  }
381
378
  self.send({
@@ -387,12 +384,11 @@ promiseCreator) {
387
384
  getInitialState: (_, input) => {
388
385
  return {
389
386
  status: 'active',
390
- data: undefined,
387
+ output: undefined,
388
+ error: undefined,
391
389
  input
392
390
  };
393
391
  },
394
- getSnapshot: state => state.data,
395
- getStatus: state => state,
396
392
  getPersistedState: state => state,
397
393
  restoreState: state => state
398
394
  };