xstate 5.0.0-beta.48 → 5.0.0-beta.49

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 (43) hide show
  1. package/actions/dist/xstate-actions.cjs.js +2 -2
  2. package/actions/dist/xstate-actions.development.cjs.js +2 -2
  3. package/actions/dist/xstate-actions.development.esm.js +2 -2
  4. package/actions/dist/xstate-actions.esm.js +2 -2
  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 +52 -71
  8. package/actors/dist/xstate-actors.development.cjs.js +52 -71
  9. package/actors/dist/xstate-actors.development.esm.js +52 -71
  10. package/actors/dist/xstate-actors.esm.js +52 -71
  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/State.d.ts +20 -17
  14. package/dist/declarations/src/StateMachine.d.ts +13 -14
  15. package/dist/declarations/src/actors/callback.d.ts +2 -5
  16. package/dist/declarations/src/actors/index.d.ts +3 -3
  17. package/dist/declarations/src/actors/promise.d.ts +4 -4
  18. package/dist/declarations/src/createMachine.d.ts +17 -2
  19. package/dist/declarations/src/interpreter.d.ts +1 -2
  20. package/dist/declarations/src/setup.d.ts +18 -2
  21. package/dist/declarations/src/stateUtils.d.ts +1 -1
  22. package/dist/declarations/src/types.d.ts +14 -10
  23. package/dist/declarations/src/utils.d.ts +0 -1
  24. package/dist/{raise-286581d5.development.esm.js → raise-1873c645.development.esm.js} +2 -6
  25. package/dist/{raise-0eafc1df.development.cjs.js → raise-495f4b9f.development.cjs.js} +2 -6
  26. package/dist/{raise-cd0dde81.cjs.js → raise-8f9c4a5a.cjs.js} +2 -6
  27. package/dist/{raise-84fd7a92.esm.js → raise-e4cc6d4f.esm.js} +2 -6
  28. package/dist/{send-f0a3179c.development.esm.js → send-0a381ca2.development.esm.js} +1 -1
  29. package/dist/{send-ae491737.esm.js → send-22880315.esm.js} +1 -1
  30. package/dist/{send-32a63473.development.cjs.js → send-8d30b415.development.cjs.js} +1 -1
  31. package/dist/{send-355ba004.cjs.js → send-8ed5c8b2.cjs.js} +1 -1
  32. package/dist/xstate.cjs.js +13 -12
  33. package/dist/xstate.development.cjs.js +13 -12
  34. package/dist/xstate.development.esm.js +15 -14
  35. package/dist/xstate.esm.js +15 -14
  36. package/dist/xstate.umd.min.js +1 -1
  37. package/dist/xstate.umd.min.js.map +1 -1
  38. package/guards/dist/xstate-guards.cjs.js +1 -1
  39. package/guards/dist/xstate-guards.development.cjs.js +1 -1
  40. package/guards/dist/xstate-guards.development.esm.js +1 -1
  41. package/guards/dist/xstate-guards.esm.js +1 -1
  42. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  43. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var guards_dist_xstateGuards = require('../../dist/raise-cd0dde81.cjs.js');
5
+ var guards_dist_xstateGuards = require('../../dist/raise-8f9c4a5a.cjs.js');
6
6
  require('../../dev/dist/xstate-dev.cjs.js');
7
7
 
8
8
  /**
@@ -87,6 +87,7 @@ function fromTransition(transition, initialContext) {
87
87
  };
88
88
  }
89
89
 
90
+ const instanceStates = /* #__PURE__ */new WeakMap();
90
91
  /**
91
92
  * An actor logic creator which returns callback logic as defined by a callback function.
92
93
  *
@@ -147,51 +148,46 @@ function fromTransition(transition, initialContext) {
147
148
  function fromCallback(invokeCallback) {
148
149
  const logic = {
149
150
  config: invokeCallback,
150
- start: (_state, {
151
- self,
152
- system
153
- }) => {
154
- system._relay(self, self, {
155
- type: 'xstate.create'
156
- });
157
- },
158
- transition: (state, event, {
159
- self,
160
- system
161
- }) => {
162
- if (event.type === 'xstate.create') {
163
- const sendBack = eventForParent => {
164
- if (state.status === 'stopped') {
151
+ start: (state, actorScope) => {
152
+ const {
153
+ self,
154
+ system
155
+ } = actorScope;
156
+ const callbackState = {
157
+ receivers: undefined,
158
+ dispose: undefined
159
+ };
160
+ instanceStates.set(self, callbackState);
161
+ callbackState.dispose = invokeCallback({
162
+ input: state.input,
163
+ system,
164
+ self,
165
+ sendBack: event => {
166
+ if (self.getSnapshot().status === 'stopped') {
165
167
  return;
166
168
  }
167
169
  if (self._parent) {
168
- system._relay(self, self._parent, eventForParent);
170
+ system._relay(self, self._parent, event);
169
171
  }
170
- };
171
- const receive = newListener => {
172
- state._receivers.add(newListener);
173
- };
174
- state._dispose = invokeCallback({
175
- input: state.input,
176
- system,
177
- self: self,
178
- sendBack,
179
- receive
180
- });
181
- return state;
182
- }
172
+ },
173
+ receive: listener => {
174
+ callbackState.receivers ??= new Set();
175
+ callbackState.receivers.add(listener);
176
+ }
177
+ });
178
+ },
179
+ transition: (state, event, actorScope) => {
180
+ const callbackState = instanceStates.get(actorScope.self);
183
181
  if (event.type === guards_dist_xstateGuards.XSTATE_STOP) {
184
182
  state = {
185
183
  ...state,
186
184
  status: 'stopped',
187
185
  error: undefined
188
186
  };
189
- if (typeof state._dispose === 'function') {
190
- state._dispose();
191
- }
187
+ callbackState.dispose?.();
192
188
  return state;
193
189
  }
194
- state._receivers.forEach(receiver => receiver(event));
190
+ callbackState.receivers?.forEach(receiver => receiver(event));
195
191
  return state;
196
192
  },
197
193
  getInitialState: (_, input) => {
@@ -199,25 +195,18 @@ function fromCallback(invokeCallback) {
199
195
  status: 'active',
200
196
  output: undefined,
201
197
  error: undefined,
202
- input,
203
- _receivers: new Set(),
204
- _dispose: undefined
198
+ input
205
199
  };
206
200
  },
207
- getPersistedState: ({
208
- _dispose,
209
- _receivers,
210
- ...rest
211
- }) => rest,
212
- restoreState: state => ({
213
- _receivers: new Set(),
214
- _dispose: undefined,
215
- ...state
216
- })
201
+ getPersistedState: state => state,
202
+ restoreState: state => state
217
203
  };
218
204
  return logic;
219
205
  }
220
206
 
207
+ const XSTATE_OBSERVABLE_NEXT = 'xstate.observable.next';
208
+ const XSTATE_OBSERVABLE_ERROR = 'xstate.observable.error';
209
+ const XSTATE_OBSERVABLE_COMPLETE = 'xstate.observable.complete';
221
210
  /**
222
211
  * Observable actor logic is described by an observable stream of values. Actors created from observable logic (“observable actors”) can:
223
212
  *
@@ -259,10 +248,6 @@ function fromCallback(invokeCallback) {
259
248
  * @see {@link Subscribable} interface in XState, which is based on and compatible with RxJS Observable.
260
249
  */
261
250
  function fromObservable(observableCreator) {
262
- const nextEventType = '$$xstate.next';
263
- const errorEventType = '$$xstate.error';
264
- const completeEventType = '$$xstate.complete';
265
-
266
251
  // TODO: add event types
267
252
  const logic = {
268
253
  config: observableCreator,
@@ -276,7 +261,7 @@ function fromObservable(observableCreator) {
276
261
  return snapshot;
277
262
  }
278
263
  switch (event.type) {
279
- case nextEventType:
264
+ case XSTATE_OBSERVABLE_NEXT:
280
265
  {
281
266
  const newSnapshot = {
282
267
  ...snapshot,
@@ -284,7 +269,7 @@ function fromObservable(observableCreator) {
284
269
  };
285
270
  return newSnapshot;
286
271
  }
287
- case errorEventType:
272
+ case XSTATE_OBSERVABLE_ERROR:
288
273
  return {
289
274
  ...snapshot,
290
275
  status: 'error',
@@ -292,7 +277,7 @@ function fromObservable(observableCreator) {
292
277
  input: undefined,
293
278
  _subscription: undefined
294
279
  };
295
- case completeEventType:
280
+ case XSTATE_OBSERVABLE_COMPLETE:
296
281
  return {
297
282
  ...snapshot,
298
283
  status: 'done',
@@ -336,19 +321,19 @@ function fromObservable(observableCreator) {
336
321
  }).subscribe({
337
322
  next: value => {
338
323
  system._relay(self, self, {
339
- type: nextEventType,
324
+ type: XSTATE_OBSERVABLE_NEXT,
340
325
  data: value
341
326
  });
342
327
  },
343
328
  error: err => {
344
329
  system._relay(self, self, {
345
- type: errorEventType,
330
+ type: XSTATE_OBSERVABLE_ERROR,
346
331
  data: err
347
332
  });
348
333
  },
349
334
  complete: () => {
350
335
  system._relay(self, self, {
351
- type: completeEventType
336
+ type: XSTATE_OBSERVABLE_COMPLETE
352
337
  });
353
338
  }
354
339
  });
@@ -409,11 +394,7 @@ function fromObservable(observableCreator) {
409
394
  * canvasActor.start();
410
395
  * ```
411
396
  */
412
-
413
397
  function fromEventObservable(lazyObservable) {
414
- const errorEventType = '$$xstate.error';
415
- const completeEventType = '$$xstate.complete';
416
-
417
398
  // TODO: event types
418
399
  const logic = {
419
400
  config: lazyObservable,
@@ -422,7 +403,7 @@ function fromEventObservable(lazyObservable) {
422
403
  return state;
423
404
  }
424
405
  switch (event.type) {
425
- case errorEventType:
406
+ case XSTATE_OBSERVABLE_ERROR:
426
407
  return {
427
408
  ...state,
428
409
  status: 'error',
@@ -430,7 +411,7 @@ function fromEventObservable(lazyObservable) {
430
411
  input: undefined,
431
412
  _subscription: undefined
432
413
  };
433
- case completeEventType:
414
+ case XSTATE_OBSERVABLE_COMPLETE:
434
415
  return {
435
416
  ...state,
436
417
  status: 'done',
@@ -479,13 +460,13 @@ function fromEventObservable(lazyObservable) {
479
460
  },
480
461
  error: err => {
481
462
  system._relay(self, self, {
482
- type: errorEventType,
463
+ type: XSTATE_OBSERVABLE_ERROR,
483
464
  data: err
484
465
  });
485
466
  },
486
467
  complete: () => {
487
468
  system._relay(self, self, {
488
- type: completeEventType
469
+ type: XSTATE_OBSERVABLE_COMPLETE
489
470
  });
490
471
  }
491
472
  });
@@ -502,8 +483,8 @@ function fromEventObservable(lazyObservable) {
502
483
  return logic;
503
484
  }
504
485
 
505
- const resolveEventType = '$$xstate.resolve';
506
- const rejectEventType = '$$xstate.reject';
486
+ const XSTATE_PROMISE_RESOLVE = 'xstate.promise.resolve';
487
+ const XSTATE_PROMISE_REJECT = 'xstate.promise.reject';
507
488
  /**
508
489
  * An actor logic creator which returns promise logic as defined by an async process that resolves or rejects after some time.
509
490
  *
@@ -559,7 +540,7 @@ promiseCreator) {
559
540
  return state;
560
541
  }
561
542
  switch (event.type) {
562
- case resolveEventType:
543
+ case XSTATE_PROMISE_RESOLVE:
563
544
  {
564
545
  const resolvedValue = event.data;
565
546
  return {
@@ -569,7 +550,7 @@ promiseCreator) {
569
550
  input: undefined
570
551
  };
571
552
  }
572
- case rejectEventType:
553
+ case XSTATE_PROMISE_REJECT:
573
554
  return {
574
555
  ...state,
575
556
  status: 'error',
@@ -605,7 +586,7 @@ promiseCreator) {
605
586
  return;
606
587
  }
607
588
  system._relay(self, self, {
608
- type: resolveEventType,
589
+ type: XSTATE_PROMISE_RESOLVE,
609
590
  data: response
610
591
  });
611
592
  }, errorData => {
@@ -613,7 +594,7 @@ promiseCreator) {
613
594
  return;
614
595
  }
615
596
  system._relay(self, self, {
616
- type: rejectEventType,
597
+ type: XSTATE_PROMISE_REJECT,
617
598
  data: errorData
618
599
  });
619
600
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var guards_dist_xstateGuards = require('../../dist/raise-0eafc1df.development.cjs.js');
5
+ var guards_dist_xstateGuards = require('../../dist/raise-495f4b9f.development.cjs.js');
6
6
  require('../../dev/dist/xstate-dev.development.cjs.js');
7
7
 
8
8
  /**
@@ -87,6 +87,7 @@ function fromTransition(transition, initialContext) {
87
87
  };
88
88
  }
89
89
 
90
+ const instanceStates = /* #__PURE__ */new WeakMap();
90
91
  /**
91
92
  * An actor logic creator which returns callback logic as defined by a callback function.
92
93
  *
@@ -147,51 +148,46 @@ function fromTransition(transition, initialContext) {
147
148
  function fromCallback(invokeCallback) {
148
149
  const logic = {
149
150
  config: invokeCallback,
150
- start: (_state, {
151
- self,
152
- system
153
- }) => {
154
- system._relay(self, self, {
155
- type: 'xstate.create'
156
- });
157
- },
158
- transition: (state, event, {
159
- self,
160
- system
161
- }) => {
162
- if (event.type === 'xstate.create') {
163
- const sendBack = eventForParent => {
164
- if (state.status === 'stopped') {
151
+ start: (state, actorScope) => {
152
+ const {
153
+ self,
154
+ system
155
+ } = actorScope;
156
+ const callbackState = {
157
+ receivers: undefined,
158
+ dispose: undefined
159
+ };
160
+ instanceStates.set(self, callbackState);
161
+ callbackState.dispose = invokeCallback({
162
+ input: state.input,
163
+ system,
164
+ self,
165
+ sendBack: event => {
166
+ if (self.getSnapshot().status === 'stopped') {
165
167
  return;
166
168
  }
167
169
  if (self._parent) {
168
- system._relay(self, self._parent, eventForParent);
170
+ system._relay(self, self._parent, event);
169
171
  }
170
- };
171
- const receive = newListener => {
172
- state._receivers.add(newListener);
173
- };
174
- state._dispose = invokeCallback({
175
- input: state.input,
176
- system,
177
- self: self,
178
- sendBack,
179
- receive
180
- });
181
- return state;
182
- }
172
+ },
173
+ receive: listener => {
174
+ callbackState.receivers ??= new Set();
175
+ callbackState.receivers.add(listener);
176
+ }
177
+ });
178
+ },
179
+ transition: (state, event, actorScope) => {
180
+ const callbackState = instanceStates.get(actorScope.self);
183
181
  if (event.type === guards_dist_xstateGuards.XSTATE_STOP) {
184
182
  state = {
185
183
  ...state,
186
184
  status: 'stopped',
187
185
  error: undefined
188
186
  };
189
- if (typeof state._dispose === 'function') {
190
- state._dispose();
191
- }
187
+ callbackState.dispose?.();
192
188
  return state;
193
189
  }
194
- state._receivers.forEach(receiver => receiver(event));
190
+ callbackState.receivers?.forEach(receiver => receiver(event));
195
191
  return state;
196
192
  },
197
193
  getInitialState: (_, input) => {
@@ -199,25 +195,18 @@ function fromCallback(invokeCallback) {
199
195
  status: 'active',
200
196
  output: undefined,
201
197
  error: undefined,
202
- input,
203
- _receivers: new Set(),
204
- _dispose: undefined
198
+ input
205
199
  };
206
200
  },
207
- getPersistedState: ({
208
- _dispose,
209
- _receivers,
210
- ...rest
211
- }) => rest,
212
- restoreState: state => ({
213
- _receivers: new Set(),
214
- _dispose: undefined,
215
- ...state
216
- })
201
+ getPersistedState: state => state,
202
+ restoreState: state => state
217
203
  };
218
204
  return logic;
219
205
  }
220
206
 
207
+ const XSTATE_OBSERVABLE_NEXT = 'xstate.observable.next';
208
+ const XSTATE_OBSERVABLE_ERROR = 'xstate.observable.error';
209
+ const XSTATE_OBSERVABLE_COMPLETE = 'xstate.observable.complete';
221
210
  /**
222
211
  * Observable actor logic is described by an observable stream of values. Actors created from observable logic (“observable actors”) can:
223
212
  *
@@ -259,10 +248,6 @@ function fromCallback(invokeCallback) {
259
248
  * @see {@link Subscribable} interface in XState, which is based on and compatible with RxJS Observable.
260
249
  */
261
250
  function fromObservable(observableCreator) {
262
- const nextEventType = '$$xstate.next';
263
- const errorEventType = '$$xstate.error';
264
- const completeEventType = '$$xstate.complete';
265
-
266
251
  // TODO: add event types
267
252
  const logic = {
268
253
  config: observableCreator,
@@ -276,7 +261,7 @@ function fromObservable(observableCreator) {
276
261
  return snapshot;
277
262
  }
278
263
  switch (event.type) {
279
- case nextEventType:
264
+ case XSTATE_OBSERVABLE_NEXT:
280
265
  {
281
266
  const newSnapshot = {
282
267
  ...snapshot,
@@ -284,7 +269,7 @@ function fromObservable(observableCreator) {
284
269
  };
285
270
  return newSnapshot;
286
271
  }
287
- case errorEventType:
272
+ case XSTATE_OBSERVABLE_ERROR:
288
273
  return {
289
274
  ...snapshot,
290
275
  status: 'error',
@@ -292,7 +277,7 @@ function fromObservable(observableCreator) {
292
277
  input: undefined,
293
278
  _subscription: undefined
294
279
  };
295
- case completeEventType:
280
+ case XSTATE_OBSERVABLE_COMPLETE:
296
281
  return {
297
282
  ...snapshot,
298
283
  status: 'done',
@@ -336,19 +321,19 @@ function fromObservable(observableCreator) {
336
321
  }).subscribe({
337
322
  next: value => {
338
323
  system._relay(self, self, {
339
- type: nextEventType,
324
+ type: XSTATE_OBSERVABLE_NEXT,
340
325
  data: value
341
326
  });
342
327
  },
343
328
  error: err => {
344
329
  system._relay(self, self, {
345
- type: errorEventType,
330
+ type: XSTATE_OBSERVABLE_ERROR,
346
331
  data: err
347
332
  });
348
333
  },
349
334
  complete: () => {
350
335
  system._relay(self, self, {
351
- type: completeEventType
336
+ type: XSTATE_OBSERVABLE_COMPLETE
352
337
  });
353
338
  }
354
339
  });
@@ -409,11 +394,7 @@ function fromObservable(observableCreator) {
409
394
  * canvasActor.start();
410
395
  * ```
411
396
  */
412
-
413
397
  function fromEventObservable(lazyObservable) {
414
- const errorEventType = '$$xstate.error';
415
- const completeEventType = '$$xstate.complete';
416
-
417
398
  // TODO: event types
418
399
  const logic = {
419
400
  config: lazyObservable,
@@ -422,7 +403,7 @@ function fromEventObservable(lazyObservable) {
422
403
  return state;
423
404
  }
424
405
  switch (event.type) {
425
- case errorEventType:
406
+ case XSTATE_OBSERVABLE_ERROR:
426
407
  return {
427
408
  ...state,
428
409
  status: 'error',
@@ -430,7 +411,7 @@ function fromEventObservable(lazyObservable) {
430
411
  input: undefined,
431
412
  _subscription: undefined
432
413
  };
433
- case completeEventType:
414
+ case XSTATE_OBSERVABLE_COMPLETE:
434
415
  return {
435
416
  ...state,
436
417
  status: 'done',
@@ -479,13 +460,13 @@ function fromEventObservable(lazyObservable) {
479
460
  },
480
461
  error: err => {
481
462
  system._relay(self, self, {
482
- type: errorEventType,
463
+ type: XSTATE_OBSERVABLE_ERROR,
483
464
  data: err
484
465
  });
485
466
  },
486
467
  complete: () => {
487
468
  system._relay(self, self, {
488
- type: completeEventType
469
+ type: XSTATE_OBSERVABLE_COMPLETE
489
470
  });
490
471
  }
491
472
  });
@@ -502,8 +483,8 @@ function fromEventObservable(lazyObservable) {
502
483
  return logic;
503
484
  }
504
485
 
505
- const resolveEventType = '$$xstate.resolve';
506
- const rejectEventType = '$$xstate.reject';
486
+ const XSTATE_PROMISE_RESOLVE = 'xstate.promise.resolve';
487
+ const XSTATE_PROMISE_REJECT = 'xstate.promise.reject';
507
488
  /**
508
489
  * An actor logic creator which returns promise logic as defined by an async process that resolves or rejects after some time.
509
490
  *
@@ -559,7 +540,7 @@ promiseCreator) {
559
540
  return state;
560
541
  }
561
542
  switch (event.type) {
562
- case resolveEventType:
543
+ case XSTATE_PROMISE_RESOLVE:
563
544
  {
564
545
  const resolvedValue = event.data;
565
546
  return {
@@ -569,7 +550,7 @@ promiseCreator) {
569
550
  input: undefined
570
551
  };
571
552
  }
572
- case rejectEventType:
553
+ case XSTATE_PROMISE_REJECT:
573
554
  return {
574
555
  ...state,
575
556
  status: 'error',
@@ -605,7 +586,7 @@ promiseCreator) {
605
586
  return;
606
587
  }
607
588
  system._relay(self, self, {
608
- type: resolveEventType,
589
+ type: XSTATE_PROMISE_RESOLVE,
609
590
  data: response
610
591
  });
611
592
  }, errorData => {
@@ -613,7 +594,7 @@ promiseCreator) {
613
594
  return;
614
595
  }
615
596
  system._relay(self, self, {
616
- type: rejectEventType,
597
+ type: XSTATE_PROMISE_REJECT,
617
598
  data: errorData
618
599
  });
619
600
  });