xstate 5.0.0-beta.28 → 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 -139
- package/actors/dist/xstate-actors.cjs.mjs +1 -3
- package/actors/dist/xstate-actors.development.cjs.js +104 -139
- package/actors/dist/xstate-actors.development.cjs.mjs +1 -3
- package/actors/dist/xstate-actors.development.esm.js +105 -138
- package/actors/dist/xstate-actors.esm.js +105 -138
- 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/assign.d.ts +4 -4
- package/dist/declarations/src/actions/cancel.d.ts +4 -4
- package/dist/declarations/src/actions/choose.d.ts +3 -3
- package/dist/declarations/src/actions/log.d.ts +4 -4
- package/dist/declarations/src/actions/pure.d.ts +1 -1
- package/dist/declarations/src/actions/raise.d.ts +2 -2
- package/dist/declarations/src/actions/send.d.ts +7 -7
- package/dist/declarations/src/actions/stop.d.ts +4 -4
- package/dist/declarations/src/actors/callback.d.ts +8 -8
- package/dist/declarations/src/actors/index.d.ts +3 -5
- 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 +92 -70
- package/dist/{interpreter-a1432c7d.development.cjs.js → interpreter-7f1dc557.development.cjs.js} +9 -30
- package/dist/{interpreter-a77bb0ec.development.esm.js → interpreter-945c4b96.development.esm.js} +10 -28
- package/dist/{interpreter-672794ae.cjs.js → interpreter-a2c1e529.cjs.js} +9 -30
- package/dist/{interpreter-b5203bcb.esm.js → interpreter-b8f53c4b.esm.js} +10 -28
- package/dist/{raise-b9c9a234.esm.js → raise-0b7dde8b.esm.js} +13 -11
- package/dist/{raise-a60c9290.development.esm.js → raise-6e4f5cf7.development.esm.js} +13 -11
- package/dist/{raise-74b72ca5.development.cjs.js → raise-7cae872b.development.cjs.js} +13 -11
- package/dist/{raise-436a57a2.cjs.js → raise-e79b1f86.cjs.js} +13 -11
- package/dist/{send-e8b55d00.development.cjs.js → send-19a256f0.development.cjs.js} +2 -2
- package/dist/{send-e63b7b83.development.esm.js → send-a1d772da.development.esm.js} +2 -2
- package/dist/{send-35e1a689.cjs.js → send-e7063201.cjs.js} +2 -2
- package/dist/{send-4192e7bc.esm.js → send-f4fb3ba5.esm.js} +2 -2
- package/dist/xstate.cjs.js +20 -31
- package/dist/xstate.cjs.mjs +0 -2
- package/dist/xstate.development.cjs.js +20 -31
- package/dist/xstate.development.cjs.mjs +0 -2
- package/dist/xstate.development.esm.js +24 -33
- package/dist/xstate.esm.js +24 -33
- 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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var interpreter = require('../../dist/interpreter-
|
|
5
|
+
var interpreter = require('../../dist/interpreter-7f1dc557.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
|
|
14
|
+
* @param initialContext The initial state of the transition function.
|
|
15
15
|
* @returns Actor logic
|
|
16
16
|
*/
|
|
17
|
-
function fromTransition(transition,
|
|
17
|
+
function fromTransition(transition, initialContext) {
|
|
18
18
|
return {
|
|
19
19
|
config: transition,
|
|
20
20
|
transition: (state, event, actorContext) => {
|
|
21
|
-
return
|
|
21
|
+
return {
|
|
22
|
+
...state,
|
|
23
|
+
context: transition(state.context, event, actorContext)
|
|
24
|
+
};
|
|
22
25
|
},
|
|
23
26
|
getInitialState: (_, input) => {
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
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,58 +55,52 @@ function fromCallback(invokeCallback) {
|
|
|
48
55
|
}) => {
|
|
49
56
|
if (event.type === interpreter.XSTATE_INIT) {
|
|
50
57
|
const sendBack = eventForParent => {
|
|
51
|
-
if (state.
|
|
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.
|
|
64
|
+
state._receivers.add(newListener);
|
|
58
65
|
};
|
|
59
|
-
state.
|
|
66
|
+
state._dispose = invokeCallback({
|
|
60
67
|
input: state.input,
|
|
61
68
|
system,
|
|
62
69
|
self: self,
|
|
63
70
|
sendBack,
|
|
64
71
|
receive
|
|
65
72
|
});
|
|
66
|
-
if (interpreter.isPromiseLike(state.dispose)) {
|
|
67
|
-
state.dispose.then(resolved => {
|
|
68
|
-
self._parent?.send(interpreter.createDoneActorEvent(id, resolved));
|
|
69
|
-
state.canceled = true;
|
|
70
|
-
}, errorData => {
|
|
71
|
-
state.canceled = true;
|
|
72
|
-
self._parent?.send(interpreter.createErrorActorEvent(id, errorData));
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
73
|
return state;
|
|
76
74
|
}
|
|
77
75
|
if (event.type === interpreter.XSTATE_STOP) {
|
|
78
|
-
state
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
state = {
|
|
77
|
+
...state,
|
|
78
|
+
status: 'stopped',
|
|
79
|
+
error: undefined
|
|
80
|
+
};
|
|
81
|
+
if (typeof state._dispose === 'function') {
|
|
82
|
+
state._dispose();
|
|
81
83
|
}
|
|
82
84
|
return state;
|
|
83
85
|
}
|
|
84
|
-
state.
|
|
86
|
+
state._receivers.forEach(receiver => receiver(event));
|
|
85
87
|
return state;
|
|
86
88
|
},
|
|
87
89
|
getInitialState: (_, input) => {
|
|
88
90
|
return {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
input
|
|
91
|
+
status: 'active',
|
|
92
|
+
output: undefined,
|
|
93
|
+
error: undefined,
|
|
94
|
+
input,
|
|
95
|
+
_receivers: new Set(),
|
|
96
|
+
_dispose: undefined
|
|
93
97
|
};
|
|
94
98
|
},
|
|
95
|
-
getSnapshot: () => undefined,
|
|
96
99
|
getPersistedState: ({
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
canceled
|
|
102
|
-
})
|
|
100
|
+
_dispose,
|
|
101
|
+
_receivers,
|
|
102
|
+
...rest
|
|
103
|
+
}) => rest
|
|
103
104
|
};
|
|
104
105
|
}
|
|
105
106
|
|
|
@@ -109,62 +110,66 @@ function fromObservable(observableCreator) {
|
|
|
109
110
|
const completeEventType = '$$xstate.complete';
|
|
110
111
|
return {
|
|
111
112
|
config: observableCreator,
|
|
112
|
-
transition: (
|
|
113
|
+
transition: (snapshot, event, {
|
|
113
114
|
self,
|
|
114
115
|
id,
|
|
115
116
|
defer
|
|
116
117
|
}) => {
|
|
117
|
-
if (
|
|
118
|
-
return
|
|
118
|
+
if (snapshot.status !== 'active') {
|
|
119
|
+
return snapshot;
|
|
119
120
|
}
|
|
120
121
|
switch (event.type) {
|
|
121
122
|
case nextEventType:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
123
|
+
{
|
|
124
|
+
const newSnapshot = {
|
|
125
|
+
...snapshot,
|
|
126
|
+
context: event.data
|
|
127
|
+
};
|
|
128
|
+
// match the exact timing of events sent by machines
|
|
129
|
+
// send actions are not executed immediately
|
|
130
|
+
defer(() => {
|
|
131
|
+
self._parent?.send({
|
|
132
|
+
type: `xstate.snapshot.${id}`,
|
|
133
|
+
data: newSnapshot
|
|
134
|
+
});
|
|
128
135
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
...state,
|
|
132
|
-
data: event.data
|
|
133
|
-
};
|
|
136
|
+
return newSnapshot;
|
|
137
|
+
}
|
|
134
138
|
case errorEventType:
|
|
135
139
|
return {
|
|
136
|
-
...
|
|
140
|
+
...snapshot,
|
|
137
141
|
status: 'error',
|
|
142
|
+
error: event.data,
|
|
138
143
|
input: undefined,
|
|
139
|
-
|
|
140
|
-
// TODO: if we keep this as `data` we should reflect this in the type
|
|
141
|
-
subscription: undefined
|
|
144
|
+
_subscription: undefined
|
|
142
145
|
};
|
|
143
146
|
case completeEventType:
|
|
144
147
|
return {
|
|
145
|
-
...
|
|
148
|
+
...snapshot,
|
|
146
149
|
status: 'done',
|
|
147
150
|
input: undefined,
|
|
148
|
-
|
|
151
|
+
_subscription: undefined
|
|
149
152
|
};
|
|
150
153
|
case interpreter.XSTATE_STOP:
|
|
151
|
-
|
|
154
|
+
snapshot._subscription.unsubscribe();
|
|
152
155
|
return {
|
|
153
|
-
...
|
|
154
|
-
status: '
|
|
156
|
+
...snapshot,
|
|
157
|
+
status: 'stopped',
|
|
155
158
|
input: undefined,
|
|
156
|
-
|
|
159
|
+
_subscription: undefined
|
|
157
160
|
};
|
|
158
161
|
default:
|
|
159
|
-
return
|
|
162
|
+
return snapshot;
|
|
160
163
|
}
|
|
161
164
|
},
|
|
162
165
|
getInitialState: (_, input) => {
|
|
163
166
|
return {
|
|
164
|
-
subscription: undefined,
|
|
165
167
|
status: 'active',
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
output: undefined,
|
|
169
|
+
error: undefined,
|
|
170
|
+
context: undefined,
|
|
171
|
+
input,
|
|
172
|
+
_subscription: undefined
|
|
168
173
|
};
|
|
169
174
|
},
|
|
170
175
|
start: (state, {
|
|
@@ -175,7 +180,7 @@ function fromObservable(observableCreator) {
|
|
|
175
180
|
// Do not restart a completed observable
|
|
176
181
|
return;
|
|
177
182
|
}
|
|
178
|
-
state.
|
|
183
|
+
state._subscription = observableCreator({
|
|
179
184
|
input: state.input,
|
|
180
185
|
system,
|
|
181
186
|
self
|
|
@@ -199,20 +204,13 @@ function fromObservable(observableCreator) {
|
|
|
199
204
|
}
|
|
200
205
|
});
|
|
201
206
|
},
|
|
202
|
-
getSnapshot: state => state.data,
|
|
203
207
|
getPersistedState: ({
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
}) => ({
|
|
208
|
-
status,
|
|
209
|
-
data,
|
|
210
|
-
input
|
|
211
|
-
}),
|
|
212
|
-
getStatus: state => state,
|
|
208
|
+
_subscription,
|
|
209
|
+
...state
|
|
210
|
+
}) => state,
|
|
213
211
|
restoreState: state => ({
|
|
214
212
|
...state,
|
|
215
|
-
|
|
213
|
+
_subscription: undefined
|
|
216
214
|
})
|
|
217
215
|
};
|
|
218
216
|
}
|
|
@@ -242,25 +240,24 @@ function fromEventObservable(lazyObservable) {
|
|
|
242
240
|
return {
|
|
243
241
|
...state,
|
|
244
242
|
status: 'error',
|
|
243
|
+
error: event.data,
|
|
245
244
|
input: undefined,
|
|
246
|
-
|
|
247
|
-
// TODO: if we keep this as `data` we should reflect this in the type
|
|
248
|
-
subscription: undefined
|
|
245
|
+
_subscription: undefined
|
|
249
246
|
};
|
|
250
247
|
case completeEventType:
|
|
251
248
|
return {
|
|
252
249
|
...state,
|
|
253
250
|
status: 'done',
|
|
254
251
|
input: undefined,
|
|
255
|
-
|
|
252
|
+
_subscription: undefined
|
|
256
253
|
};
|
|
257
254
|
case interpreter.XSTATE_STOP:
|
|
258
|
-
state.
|
|
255
|
+
state._subscription.unsubscribe();
|
|
259
256
|
return {
|
|
260
257
|
...state,
|
|
261
|
-
status: '
|
|
258
|
+
status: 'stopped',
|
|
262
259
|
input: undefined,
|
|
263
|
-
|
|
260
|
+
_subscription: undefined
|
|
264
261
|
};
|
|
265
262
|
default:
|
|
266
263
|
return state;
|
|
@@ -268,10 +265,12 @@ function fromEventObservable(lazyObservable) {
|
|
|
268
265
|
},
|
|
269
266
|
getInitialState: (_, input) => {
|
|
270
267
|
return {
|
|
271
|
-
subscription: undefined,
|
|
272
268
|
status: 'active',
|
|
273
|
-
|
|
274
|
-
|
|
269
|
+
output: undefined,
|
|
270
|
+
error: undefined,
|
|
271
|
+
context: undefined,
|
|
272
|
+
input,
|
|
273
|
+
_subscription: undefined
|
|
275
274
|
};
|
|
276
275
|
},
|
|
277
276
|
start: (state, {
|
|
@@ -282,7 +281,7 @@ function fromEventObservable(lazyObservable) {
|
|
|
282
281
|
// Do not restart a completed observable
|
|
283
282
|
return;
|
|
284
283
|
}
|
|
285
|
-
state.
|
|
284
|
+
state._subscription = lazyObservable({
|
|
286
285
|
input: state.input,
|
|
287
286
|
system,
|
|
288
287
|
self
|
|
@@ -303,20 +302,13 @@ function fromEventObservable(lazyObservable) {
|
|
|
303
302
|
}
|
|
304
303
|
});
|
|
305
304
|
},
|
|
306
|
-
getSnapshot: _ => undefined,
|
|
307
305
|
getPersistedState: ({
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
}) => ({
|
|
312
|
-
status,
|
|
313
|
-
data,
|
|
314
|
-
input
|
|
315
|
-
}),
|
|
316
|
-
getStatus: state => state,
|
|
306
|
+
_subscription,
|
|
307
|
+
...state
|
|
308
|
+
}) => state,
|
|
317
309
|
restoreState: state => ({
|
|
318
310
|
...state,
|
|
319
|
-
|
|
311
|
+
_subscription: undefined
|
|
320
312
|
})
|
|
321
313
|
};
|
|
322
314
|
}
|
|
@@ -335,24 +327,26 @@ promiseCreator) {
|
|
|
335
327
|
}
|
|
336
328
|
switch (event.type) {
|
|
337
329
|
case resolveEventType:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
330
|
+
{
|
|
331
|
+
const resolvedValue = event.data;
|
|
332
|
+
return {
|
|
333
|
+
...state,
|
|
334
|
+
status: 'done',
|
|
335
|
+
output: resolvedValue,
|
|
336
|
+
input: undefined
|
|
337
|
+
};
|
|
338
|
+
}
|
|
344
339
|
case rejectEventType:
|
|
345
340
|
return {
|
|
346
341
|
...state,
|
|
347
342
|
status: 'error',
|
|
348
|
-
|
|
349
|
-
// TODO: if we keep this as `data` we should reflect this in the type
|
|
343
|
+
error: event.data,
|
|
350
344
|
input: undefined
|
|
351
345
|
};
|
|
352
346
|
case interpreter.XSTATE_STOP:
|
|
353
347
|
return {
|
|
354
348
|
...state,
|
|
355
|
-
status: '
|
|
349
|
+
status: 'stopped',
|
|
356
350
|
input: undefined
|
|
357
351
|
};
|
|
358
352
|
default:
|
|
@@ -374,8 +368,7 @@ promiseCreator) {
|
|
|
374
368
|
self
|
|
375
369
|
}));
|
|
376
370
|
resolvedPromise.then(response => {
|
|
377
|
-
|
|
378
|
-
if (self._state.status !== 'active') {
|
|
371
|
+
if (self.getSnapshot().status !== 'active') {
|
|
379
372
|
return;
|
|
380
373
|
}
|
|
381
374
|
self.send({
|
|
@@ -383,8 +376,7 @@ promiseCreator) {
|
|
|
383
376
|
data: response
|
|
384
377
|
});
|
|
385
378
|
}, errorData => {
|
|
386
|
-
|
|
387
|
-
if (self._state.status !== 'active') {
|
|
379
|
+
if (self.getSnapshot().status !== 'active') {
|
|
388
380
|
return;
|
|
389
381
|
}
|
|
390
382
|
self.send({
|
|
@@ -396,42 +388,17 @@ promiseCreator) {
|
|
|
396
388
|
getInitialState: (_, input) => {
|
|
397
389
|
return {
|
|
398
390
|
status: 'active',
|
|
399
|
-
|
|
391
|
+
output: undefined,
|
|
392
|
+
error: undefined,
|
|
400
393
|
input
|
|
401
394
|
};
|
|
402
395
|
},
|
|
403
|
-
getSnapshot: state => state.data,
|
|
404
|
-
getStatus: state => state,
|
|
405
396
|
getPersistedState: state => state,
|
|
406
397
|
restoreState: state => state
|
|
407
398
|
};
|
|
408
399
|
return logic;
|
|
409
400
|
}
|
|
410
401
|
|
|
411
|
-
function isActorRef(item) {
|
|
412
|
-
return !!item && typeof item === 'object' && typeof item.send === 'function';
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
// TODO: refactor the return type, this could be written in a better way
|
|
416
|
-
// but it's best to avoid unneccessary breaking changes now
|
|
417
|
-
// @deprecated use `interpret(actorLogic)` instead
|
|
418
|
-
function toActorRef(actorRefLike) {
|
|
419
|
-
return {
|
|
420
|
-
subscribe: () => ({
|
|
421
|
-
unsubscribe: () => void 0
|
|
422
|
-
}),
|
|
423
|
-
id: 'anonymous',
|
|
424
|
-
sessionId: '',
|
|
425
|
-
getSnapshot: () => undefined,
|
|
426
|
-
// TODO: this isn't safe
|
|
427
|
-
[interpreter.symbolObservable]: function () {
|
|
428
|
-
return this;
|
|
429
|
-
},
|
|
430
|
-
status: interpreter.ActorStatus.Running,
|
|
431
|
-
stop: () => void 0,
|
|
432
|
-
...actorRefLike
|
|
433
|
-
};
|
|
434
|
-
}
|
|
435
402
|
const emptyLogic = fromTransition(_ => undefined, undefined);
|
|
436
403
|
function createEmptyActor() {
|
|
437
404
|
return interpreter.createActor(emptyLogic);
|
|
@@ -443,5 +410,3 @@ exports.fromEventObservable = fromEventObservable;
|
|
|
443
410
|
exports.fromObservable = fromObservable;
|
|
444
411
|
exports.fromPromise = fromPromise;
|
|
445
412
|
exports.fromTransition = fromTransition;
|
|
446
|
-
exports.isActorRef = isActorRef;
|
|
447
|
-
exports.toActorRef = toActorRef;
|