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