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