xstate 5.0.0-alpha.6 → 5.0.0-beta.10

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 (70) hide show
  1. package/actions/dist/xstate-actions.cjs.d.mts +2 -0
  2. package/actions/dist/xstate-actions.cjs.d.mts.map +1 -0
  3. package/actions/dist/xstate-actions.cjs.d.ts +1 -0
  4. package/actions/dist/xstate-actions.cjs.d.ts.map +1 -0
  5. package/actions/dist/xstate-actions.cjs.dev.js +2 -2
  6. package/actions/dist/xstate-actions.cjs.mjs +24 -0
  7. package/actions/dist/xstate-actions.cjs.prod.js +3 -3
  8. package/actions/dist/xstate-actions.esm.js +1 -1
  9. package/actions/dist/xstate-actions.umd.min.js +1 -1
  10. package/actions/dist/xstate-actions.umd.min.js.map +1 -1
  11. package/actors/dist/xstate-actors.cjs.d.mts +2 -0
  12. package/actors/dist/xstate-actors.cjs.d.mts.map +1 -0
  13. package/actors/dist/xstate-actors.cjs.d.ts +1 -0
  14. package/actors/dist/xstate-actors.cjs.d.ts.map +1 -0
  15. package/actors/dist/xstate-actors.cjs.dev.js +2 -1
  16. package/actors/dist/xstate-actors.cjs.mjs +15 -0
  17. package/actors/dist/xstate-actors.cjs.prod.js +3 -2
  18. package/actors/dist/xstate-actors.esm.js +1 -1
  19. package/actors/dist/xstate-actors.umd.min.js +1 -1
  20. package/actors/dist/xstate-actors.umd.min.js.map +1 -1
  21. package/dev/dist/xstate-dev.cjs.d.mts +2 -0
  22. package/dev/dist/xstate-dev.cjs.d.mts.map +1 -0
  23. package/dev/dist/xstate-dev.cjs.d.ts +1 -0
  24. package/dev/dist/xstate-dev.cjs.d.ts.map +1 -0
  25. package/dev/dist/xstate-dev.cjs.mjs +5 -0
  26. package/dev/dist/xstate-dev.cjs.prod.js +6 -43
  27. package/dev/dist/xstate-dev.umd.min.js.map +1 -1
  28. package/dist/{actions-bf7bb1c5.cjs.dev.js → actions-109712d3.cjs.dev.js} +386 -371
  29. package/dist/{actions-41b74cdc.esm.js → actions-67f1d04e.esm.js} +341 -358
  30. package/dist/{actions-c46e4911.cjs.prod.js → actions-d0262a43.cjs.prod.js} +409 -380
  31. package/dist/declarations/src/State.d.ts +2 -3
  32. package/dist/declarations/src/StateMachine.d.ts +6 -6
  33. package/dist/declarations/src/StateNode.d.ts +3 -9
  34. package/dist/declarations/src/actions/send.d.ts +0 -7
  35. package/dist/declarations/src/actions.d.ts +9 -8
  36. package/dist/declarations/src/actors/index.d.ts +2 -1
  37. package/dist/declarations/src/actors/observable.d.ts +1 -2
  38. package/dist/declarations/src/actors/promise.d.ts +1 -2
  39. package/dist/declarations/src/guards.d.ts +2 -2
  40. package/dist/declarations/src/index.d.ts +13 -29
  41. package/dist/declarations/src/interpreter.d.ts +5 -4
  42. package/dist/declarations/src/spawn.d.ts +2 -2
  43. package/dist/declarations/src/stateUtils.d.ts +9 -14
  44. package/dist/declarations/src/typegenTypes.d.ts +7 -1
  45. package/dist/declarations/src/types.d.ts +18 -92
  46. package/dist/declarations/src/utils.d.ts +3 -5
  47. package/dist/declarations/src/waitFor.d.ts +33 -0
  48. package/dist/index-0f3fdf0c.cjs.prod.js +52 -0
  49. package/dist/xstate.cjs.d.mts +2 -0
  50. package/dist/xstate.cjs.d.mts.map +1 -0
  51. package/dist/xstate.cjs.d.ts +1 -0
  52. package/dist/xstate.cjs.d.ts.map +1 -0
  53. package/dist/xstate.cjs.dev.js +117 -105
  54. package/dist/xstate.cjs.mjs +38 -0
  55. package/dist/xstate.cjs.prod.js +115 -106
  56. package/dist/xstate.esm.js +100 -93
  57. package/dist/xstate.umd.min.js +1 -1
  58. package/dist/xstate.umd.min.js.map +1 -1
  59. package/guards/dist/xstate-guards.cjs.d.mts +2 -0
  60. package/guards/dist/xstate-guards.cjs.d.mts.map +1 -0
  61. package/guards/dist/xstate-guards.cjs.d.ts +1 -0
  62. package/guards/dist/xstate-guards.cjs.d.ts.map +1 -0
  63. package/guards/dist/xstate-guards.cjs.dev.js +1 -1
  64. package/guards/dist/xstate-guards.cjs.mjs +8 -0
  65. package/guards/dist/xstate-guards.cjs.prod.js +2 -2
  66. package/guards/dist/xstate-guards.esm.js +1 -1
  67. package/guards/dist/xstate-guards.umd.min.js +1 -1
  68. package/guards/dist/xstate-guards.umd.min.js.map +1 -1
  69. package/package.json +7 -1
  70. package/dist/declarations/src/schema.d.ts +0 -2
@@ -1,8 +1,40 @@
1
1
  'use strict';
2
2
 
3
- var dev_dist_xstateDev = require('../dev/dist/xstate-dev.cjs.prod.js');
3
+ var dev_dist_xstateDev = require('./index-0f3fdf0c.cjs.prod.js');
4
4
 
5
5
  // https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887
6
+
7
+ // TODO: replace in v5 with:
8
+ // export type IndexByType<T extends { type: string }> = { [E in T as E['type']]: E; };
9
+
10
+ /**
11
+ * The full definition of an event, with a string `type`.
12
+ */
13
+
14
+ // TODO: do not accept machines without all implementations
15
+ // we should also accept a raw machine as a behavior here
16
+ // or just make machine a behavior
17
+
18
+ // TODO: narrow this to behaviors from machine
19
+
20
+ // TODO: fix last param
21
+
22
+ /**
23
+ * Extracts action objects that have no extra properties.
24
+ */
25
+
26
+ /**
27
+ * The string or object representing the state value relative to the parent state node.
28
+ *
29
+ * - For a child atomic state node, this is a string, e.g., `"pending"`.
30
+ * - For complex state nodes, this is an object, e.g., `{ success: "someChildState" }`.
31
+ */
32
+
33
+ // TODO: remove once TS fixes this type-widening issue
34
+
35
+ // TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something
36
+
37
+ exports.ActionTypes = void 0;
6
38
  (function (ActionTypes) {
7
39
  ActionTypes["Stop"] = "xstate.stop";
8
40
  ActionTypes["Raise"] = "xstate.raise";
@@ -22,45 +54,46 @@ var dev_dist_xstateDev = require('../dev/dist/xstate-dev.cjs.prod.js');
22
54
  ActionTypes["Pure"] = "xstate.pure";
23
55
  ActionTypes["Choose"] = "xstate.choose";
24
56
  })(exports.ActionTypes || (exports.ActionTypes = {}));
57
+ exports.SpecialTargets = void 0;
25
58
  (function (SpecialTargets) {
26
59
  SpecialTargets["Parent"] = "#_parent";
27
60
  SpecialTargets["Internal"] = "#_internal";
28
61
  })(exports.SpecialTargets || (exports.SpecialTargets = {}));
29
62
 
30
63
  // xstate-specific action types
31
- var stop = exports.ActionTypes.Stop;
32
- var raise = exports.ActionTypes.Raise;
33
- var send = exports.ActionTypes.Send;
34
- var cancel = exports.ActionTypes.Cancel;
35
- var assign = exports.ActionTypes.Assign;
36
- var after = exports.ActionTypes.After;
64
+ var stop$1 = exports.ActionTypes.Stop;
65
+ var raise$1 = exports.ActionTypes.Raise;
66
+ var send$1 = exports.ActionTypes.Send;
67
+ var cancel$1 = exports.ActionTypes.Cancel;
68
+ var assign$1 = exports.ActionTypes.Assign;
69
+ var after$1 = exports.ActionTypes.After;
37
70
  var doneState = exports.ActionTypes.DoneState;
38
- var log = exports.ActionTypes.Log;
71
+ var log$1 = exports.ActionTypes.Log;
39
72
  var init = exports.ActionTypes.Init;
40
- var invoke = exports.ActionTypes.Invoke;
73
+ var invoke$1 = exports.ActionTypes.Invoke;
41
74
  var errorExecution = exports.ActionTypes.ErrorExecution;
42
75
  var errorPlatform = exports.ActionTypes.ErrorPlatform;
43
- var error = exports.ActionTypes.ErrorCustom;
44
- var choose = exports.ActionTypes.Choose;
45
- var pure = exports.ActionTypes.Pure;
76
+ var error$1 = exports.ActionTypes.ErrorCustom;
77
+ var choose$1 = exports.ActionTypes.Choose;
78
+ var pure$1 = exports.ActionTypes.Pure;
46
79
 
47
80
  var actionTypes = /*#__PURE__*/Object.freeze({
48
81
  __proto__: null,
49
- stop: stop,
50
- raise: raise,
51
- send: send,
52
- cancel: cancel,
53
- assign: assign,
54
- after: after,
82
+ stop: stop$1,
83
+ raise: raise$1,
84
+ send: send$1,
85
+ cancel: cancel$1,
86
+ assign: assign$1,
87
+ after: after$1,
55
88
  doneState: doneState,
56
- log: log,
89
+ log: log$1,
57
90
  init: init,
58
- invoke: invoke,
91
+ invoke: invoke$1,
59
92
  errorExecution: errorExecution,
60
93
  errorPlatform: errorPlatform,
61
- error: error,
62
- choose: choose,
63
- pure: pure
94
+ error: error$1,
95
+ choose: choose$1,
96
+ pure: pure$1
64
97
  });
65
98
 
66
99
  function _toPrimitive(input, hint) {
@@ -288,7 +321,7 @@ function toStatePath(stateId, delimiter) {
288
321
  }
289
322
  }
290
323
  function isStateLike(state) {
291
- return _typeof(state) === 'object' && 'value' in state && 'context' in state && 'event' in state && '_event' in state;
324
+ return _typeof(state) === 'object' && 'value' in state && 'context' in state && 'event' in state;
292
325
  }
293
326
  function toStateValue(stateValue, delimiter) {
294
327
  if (isStateLike(stateValue)) {
@@ -344,17 +377,17 @@ function toArray(value) {
344
377
  }
345
378
  return toArrayStrict(value);
346
379
  }
347
- function mapContext(mapper, context, _event) {
380
+ function mapContext(mapper, context, event) {
348
381
  if (isFunction(mapper)) {
349
382
  return mapper({
350
383
  context: context,
351
- event: _event.data
384
+ event: event
352
385
  });
353
386
  }
354
387
  var result = {};
355
388
  var args = {
356
389
  context: context,
357
- event: _event.data
390
+ event: event
358
391
  };
359
392
  for (var _i4 = 0, _Object$keys2 = Object.keys(mapper); _i4 < _Object$keys2.length; _i4++) {
360
393
  var _key3 = _Object$keys2[_i4];
@@ -380,6 +413,22 @@ function isPromiseLike(value) {
380
413
 
381
414
  // tslint:disable-next-line:no-empty
382
415
  var warn = function warn() {};
416
+ if (!dev_dist_xstateDev.IS_PRODUCTION) {
417
+ warn = function warn(condition, message) {
418
+ var error = condition instanceof Error ? condition : undefined;
419
+ if (!error && condition) {
420
+ return;
421
+ }
422
+ if (console !== undefined) {
423
+ var args = ["Warning: ".concat(message)];
424
+ if (error) {
425
+ args.push(error);
426
+ }
427
+ // tslint:disable-next-line:no-console
428
+ console.warn.apply(console, args);
429
+ }
430
+ };
431
+ }
383
432
  function isArray(value) {
384
433
  return Array.isArray(value);
385
434
  }
@@ -391,22 +440,8 @@ function isFunction(value) {
391
440
  function isString(value) {
392
441
  return typeof value === 'string';
393
442
  }
394
- function isSCXMLEvent(event) {
395
- return '$$type' in event && event.$$type === 'scxml';
396
- }
397
- function isSCXMLErrorEvent(event) {
398
- return typeof event.name === 'string' && (event.name === errorExecution || event.name.startsWith(errorPlatform));
399
- }
400
- function toSCXMLEvent(event, scxmlEvent) {
401
- if (isSCXMLEvent(event)) {
402
- return event;
403
- }
404
- return _objectSpread2({
405
- name: event.type,
406
- data: event,
407
- $$type: 'scxml',
408
- type: 'external'
409
- }, scxmlEvent);
443
+ function isErrorEvent(event) {
444
+ return typeof event.type === 'string' && (event.type === errorExecution || event.type.startsWith(errorPlatform));
410
445
  }
411
446
  function toTransitionConfigArray(event, configLike) {
412
447
  var transitions = toArrayStrict(configLike).map(function (transitionLike) {
@@ -488,16 +523,16 @@ function isDynamicAction(action) {
488
523
  * - `delay` - The number of milliseconds to delay the sending of the event.
489
524
  * - `to` - The target of this event (by default, the machine the event was sent from).
490
525
  */
491
- function send$1(eventOrExpr, options) {
526
+ function send(eventOrExpr, options) {
492
527
  return createDynamicAction({
493
- type: send,
528
+ type: send$1,
494
529
  params: {
495
530
  to: options ? options.to : undefined,
496
531
  delay: options ? options.delay : undefined,
497
532
  event: eventOrExpr,
498
533
  id: options && options.id !== undefined ? options.id : isFunction(eventOrExpr) ? eventOrExpr.name : eventOrExpr.type
499
534
  }
500
- }, function (_event, _ref) {
535
+ }, function (event, _ref) {
501
536
  var _actorContext$self;
502
537
  var actorContext = _ref.actorContext,
503
538
  state = _ref.state;
@@ -511,15 +546,17 @@ function send$1(eventOrExpr, options) {
511
546
  };
512
547
  var args = {
513
548
  context: state.context,
514
- event: _event.data,
515
- _event: _event,
549
+ event: event,
516
550
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : null,
517
551
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
518
552
  };
519
553
  var delaysMap = state.machine.options.delays;
520
554
 
521
555
  // TODO: helper function for resolving Expr
522
- var resolvedEvent = toSCXMLEvent(isFunction(eventOrExpr) ? eventOrExpr(args) : eventOrExpr);
556
+ if (typeof eventOrExpr === 'string') {
557
+ throw new Error("Only event objects may be used with sendTo; use sendTo({ type: \"".concat(eventOrExpr, "\" }) instead"));
558
+ }
559
+ var resolvedEvent = isFunction(eventOrExpr) ? eventOrExpr(args) : eventOrExpr;
523
560
  var resolvedDelay;
524
561
  if (isString(params.delay)) {
525
562
  var configDelay = delaysMap && delaysMap[params.delay];
@@ -548,11 +585,10 @@ function send$1(eventOrExpr, options) {
548
585
  targetActorRef = resolvedTarget || (actorContext === null || actorContext === void 0 ? void 0 : actorContext.self);
549
586
  }
550
587
  var resolvedAction = {
551
- type: send,
588
+ type: send$1,
552
589
  params: _objectSpread2(_objectSpread2({}, params), {}, {
553
590
  to: targetActorRef,
554
- _event: resolvedEvent,
555
- event: resolvedEvent.data,
591
+ event: resolvedEvent,
556
592
  delay: resolvedDelay,
557
593
  internal: resolvedTarget === exports.SpecialTargets.Internal
558
594
  }),
@@ -563,14 +599,12 @@ function send$1(eventOrExpr, options) {
563
599
  return;
564
600
  } else {
565
601
  var target = sendAction.params.to;
566
- var _event2 = sendAction.params._event;
602
+ var sentEvent = sendAction.params.event;
567
603
  actorCtx.defer(function () {
568
- var origin = actorCtx.self;
569
- var resolvedEvent = _objectSpread2(_objectSpread2({}, _event2), {}, {
570
- name: _event2.name === error ? "".concat(error$1(origin.id)) : _event2.name,
571
- origin: origin
572
- });
573
- target.send(resolvedEvent);
604
+ target.send(sentEvent.type === error$1 ? {
605
+ type: "".concat(error(actorCtx.self.id)),
606
+ data: sentEvent.data
607
+ } : sendAction.params.event);
574
608
  });
575
609
  }
576
610
  }
@@ -586,26 +620,11 @@ function send$1(eventOrExpr, options) {
586
620
  * @param options Options to pass into the send event.
587
621
  */
588
622
  function sendParent(event, options) {
589
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
623
+ return send(event, _objectSpread2(_objectSpread2({}, options), {}, {
590
624
  to: exports.SpecialTargets.Parent
591
625
  }));
592
626
  }
593
627
 
594
- /**
595
- * Sends an event back to the sender of the original event.
596
- *
597
- * @param event The event to send back to the sender
598
- * @param options Options to pass into the send event
599
- */
600
- function respond(event, options) {
601
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
602
- to: function to(_ref2) {
603
- var _event = _ref2._event;
604
- return _event.origin; // TODO: handle when _event.origin is undefined
605
- }
606
- }));
607
- }
608
-
609
628
  /**
610
629
  * Forwards (sends) an event to a specified service.
611
630
  *
@@ -613,18 +632,8 @@ function respond(event, options) {
613
632
  * @param options Options to pass into the send action creator.
614
633
  */
615
634
  function forwardTo(target, options) {
616
- if (process.env.NODE_END !== 'production' && (!target || typeof target === 'function')) {
617
- var originalTarget = target;
618
- target = function target() {
619
- var resolvedTarget = typeof originalTarget === 'function' ? originalTarget.apply(void 0, arguments) : originalTarget;
620
- if (!resolvedTarget) {
621
- throw new Error("Attempted to forward event to undefined actor. This risks an infinite loop in the sender.");
622
- }
623
- return resolvedTarget;
624
- };
625
- }
626
- return send$1(function (_ref3) {
627
- var event = _ref3.event;
635
+ return send(function (_ref2) {
636
+ var event = _ref2.event;
628
637
  return event;
629
638
  }, _objectSpread2(_objectSpread2({}, options), {}, {
630
639
  to: target
@@ -641,7 +650,7 @@ function forwardTo(target, options) {
641
650
  function escalate(errorData, options) {
642
651
  return sendParent(function (arg) {
643
652
  return {
644
- type: error,
653
+ type: error$1,
645
654
  data: isFunction(errorData) ? errorData(arg) : errorData
646
655
  };
647
656
  }, _objectSpread2(_objectSpread2({}, options), {}, {
@@ -658,7 +667,7 @@ function escalate(errorData, options) {
658
667
  * @returns An XState send action object
659
668
  */
660
669
  function sendTo(actor, event, options) {
661
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
670
+ return send(event, _objectSpread2(_objectSpread2({}, options), {}, {
662
671
  to: actor
663
672
  }));
664
673
  }
@@ -782,11 +791,9 @@ var symbolObservable = function () {
782
791
  */
783
792
  function fromTransition(_transition, initialState) {
784
793
  var behavior = {
794
+ config: _transition,
785
795
  transition: function transition(state, event, actorContext) {
786
- // @ts-ignore TODO
787
- var resolvedEvent = isSCXMLEvent(event) ? event.data : event;
788
- // @ts-ignore TODO
789
- return _transition(state, resolvedEvent, actorContext);
796
+ return _transition(state, event, actorContext);
790
797
  },
791
798
  getInitialState: function getInitialState(_, input) {
792
799
  return typeof initialState === 'function' ? initialState({
@@ -814,27 +821,29 @@ promiseCreator) {
814
821
 
815
822
  // TODO: add event types
816
823
  var behavior = {
824
+ config: promiseCreator,
817
825
  transition: function transition(state, event) {
818
- var _event = toSCXMLEvent(event);
819
- if (state.canceled) {
826
+ if (state.status !== 'active') {
820
827
  return state;
821
828
  }
822
- var eventObject = _event.data;
823
- switch (_event.name) {
829
+ switch (event.type) {
824
830
  case resolveEventType:
825
- state.status = 'done';
826
- state.data = eventObject.data;
827
- delete state.input;
828
- return state;
831
+ return _objectSpread2(_objectSpread2({}, state), {}, {
832
+ status: 'done',
833
+ data: event.data,
834
+ input: undefined
835
+ });
829
836
  case rejectEventType:
830
- state.status = 'error';
831
- state.data = eventObject.data;
832
- delete state.input;
833
- return state;
837
+ return _objectSpread2(_objectSpread2({}, state), {}, {
838
+ status: 'error',
839
+ data: event.data,
840
+ input: undefined
841
+ });
834
842
  case stopSignalType:
835
- state.canceled = true;
836
- delete state.input;
837
- return state;
843
+ return _objectSpread2(_objectSpread2({}, state), {}, {
844
+ status: 'canceled',
845
+ input: undefined
846
+ });
838
847
  default:
839
848
  return state;
840
849
  }
@@ -850,11 +859,19 @@ promiseCreator) {
850
859
  input: state.input
851
860
  }));
852
861
  resolvedPromise.then(function (response) {
862
+ // TODO: remove this condition once dead letter queue lands
863
+ if (self._state.status !== 'active') {
864
+ return;
865
+ }
853
866
  self.send({
854
867
  type: resolveEventType,
855
868
  data: response
856
869
  });
857
870
  }, function (errorData) {
871
+ // TODO: remove this condition once dead letter queue lands
872
+ if (self._state.status !== 'active') {
873
+ return;
874
+ }
858
875
  self.send({
859
876
  type: rejectEventType,
860
877
  data: errorData
@@ -863,7 +880,6 @@ promiseCreator) {
863
880
  },
864
881
  getInitialState: function getInitialState(_, input) {
865
882
  return {
866
- canceled: false,
867
883
  status: 'active',
868
884
  data: undefined,
869
885
  input: input
@@ -893,43 +909,48 @@ function fromObservable(observableCreator) {
893
909
 
894
910
  // TODO: add event types
895
911
  var behavior = {
912
+ config: observableCreator,
896
913
  transition: function transition(state, event, _ref) {
897
914
  var self = _ref.self,
898
915
  id = _ref.id,
899
916
  defer = _ref.defer;
900
- var _event = toSCXMLEvent(event);
901
- if (state.canceled) {
917
+ if (state.status !== 'active') {
902
918
  return state;
903
919
  }
904
- switch (_event.name) {
920
+ switch (event.type) {
905
921
  case nextEventType:
906
- state.data = event.data.data;
907
922
  // match the exact timing of events sent by machines
908
923
  // send actions are not executed immediately
909
924
  defer(function () {
910
925
  var _self$_parent;
911
- (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(toSCXMLEvent({
926
+ (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send({
912
927
  type: "xstate.snapshot.".concat(id),
913
- data: _event.data.data
914
- }, {
915
- origin: self
916
- }));
928
+ data: event.data
929
+ });
930
+ });
931
+ return _objectSpread2(_objectSpread2({}, state), {}, {
932
+ data: event.data
917
933
  });
918
- return state;
919
934
  case errorEventType:
920
- state.status = 'error';
921
- delete state.input;
922
- state.data = _event.data.data;
923
- return state;
935
+ return _objectSpread2(_objectSpread2({}, state), {}, {
936
+ status: 'error',
937
+ input: undefined,
938
+ data: event.data,
939
+ subscription: undefined
940
+ });
924
941
  case completeEventType:
925
- state.status = 'done';
926
- delete state.input;
927
- return state;
942
+ return _objectSpread2(_objectSpread2({}, state), {}, {
943
+ status: 'done',
944
+ input: undefined,
945
+ subscription: undefined
946
+ });
928
947
  case stopSignalType:
929
- state.canceled = true;
930
- delete state.input;
931
948
  state.subscription.unsubscribe();
932
- return state;
949
+ return _objectSpread2(_objectSpread2({}, state), {}, {
950
+ status: 'canceled',
951
+ input: undefined,
952
+ subscription: undefined
953
+ });
933
954
  default:
934
955
  return state;
935
956
  }
@@ -937,7 +958,6 @@ function fromObservable(observableCreator) {
937
958
  getInitialState: function getInitialState(_, input) {
938
959
  return {
939
960
  subscription: undefined,
940
- canceled: false,
941
961
  status: 'active',
942
962
  data: undefined,
943
963
  input: input
@@ -975,12 +995,10 @@ function fromObservable(observableCreator) {
975
995
  return state.data;
976
996
  },
977
997
  getPersistedState: function getPersistedState(_ref3) {
978
- var canceled = _ref3.canceled,
979
- status = _ref3.status,
998
+ var status = _ref3.status,
980
999
  data = _ref3.data,
981
1000
  input = _ref3.input;
982
1001
  return {
983
- canceled: canceled,
984
1002
  status: status,
985
1003
  data: data,
986
1004
  input: input
@@ -1013,26 +1031,32 @@ function fromEventObservable(lazyObservable) {
1013
1031
 
1014
1032
  // TODO: event types
1015
1033
  var behavior = {
1034
+ config: lazyObservable,
1016
1035
  transition: function transition(state, event) {
1017
- var _event = toSCXMLEvent(event);
1018
- if (state.canceled) {
1036
+ if (state.status !== 'active') {
1019
1037
  return state;
1020
1038
  }
1021
- switch (_event.name) {
1039
+ switch (event.type) {
1022
1040
  case errorEventType:
1023
- state.status = 'error';
1024
- delete state.input;
1025
- state.data = _event.data.data;
1026
- return state;
1041
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1042
+ status: 'error',
1043
+ input: undefined,
1044
+ data: event.data,
1045
+ subscription: undefined
1046
+ });
1027
1047
  case completeEventType:
1028
- state.status = 'done';
1029
- delete state.input;
1030
- return state;
1048
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1049
+ status: 'done',
1050
+ input: undefined,
1051
+ subscription: undefined
1052
+ });
1031
1053
  case stopSignalType:
1032
- state.canceled = true;
1033
- delete state.input;
1034
1054
  state.subscription.unsubscribe();
1035
- return state;
1055
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1056
+ status: 'canceled',
1057
+ input: undefined,
1058
+ subscription: undefined
1059
+ });
1036
1060
  default:
1037
1061
  return state;
1038
1062
  }
@@ -1040,7 +1064,6 @@ function fromEventObservable(lazyObservable) {
1040
1064
  getInitialState: function getInitialState() {
1041
1065
  return {
1042
1066
  subscription: undefined,
1043
- canceled: false,
1044
1067
  status: 'active',
1045
1068
  data: undefined
1046
1069
  };
@@ -1056,9 +1079,7 @@ function fromEventObservable(lazyObservable) {
1056
1079
  }).subscribe({
1057
1080
  next: function next(value) {
1058
1081
  var _self$_parent2;
1059
- (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(toSCXMLEvent(value, {
1060
- origin: self
1061
- }));
1082
+ (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(value);
1062
1083
  },
1063
1084
  error: function error(err) {
1064
1085
  self.send({
@@ -1077,12 +1098,10 @@ function fromEventObservable(lazyObservable) {
1077
1098
  return undefined;
1078
1099
  },
1079
1100
  getPersistedState: function getPersistedState(_ref5) {
1080
- var canceled = _ref5.canceled,
1081
- status = _ref5.status,
1101
+ var status = _ref5.status,
1082
1102
  data = _ref5.data,
1083
1103
  input = _ref5.input;
1084
1104
  return {
1085
- canceled: canceled,
1086
1105
  status: status,
1087
1106
  data: data,
1088
1107
  input: input
@@ -1102,6 +1121,7 @@ function fromEventObservable(lazyObservable) {
1102
1121
 
1103
1122
  function fromCallback(invokeCallback) {
1104
1123
  var behavior = {
1124
+ config: invokeCallback,
1105
1125
  start: function start(_state, _ref) {
1106
1126
  var self = _ref.self;
1107
1127
  self.send({
@@ -1111,16 +1131,13 @@ function fromCallback(invokeCallback) {
1111
1131
  transition: function transition(state, event, _ref2) {
1112
1132
  var self = _ref2.self,
1113
1133
  id = _ref2.id;
1114
- var _event = toSCXMLEvent(event);
1115
- if (_event.name === startSignalType) {
1134
+ if (event.type === startSignalType) {
1116
1135
  var sender = function sender(eventForParent) {
1117
1136
  var _self$_parent;
1118
1137
  if (state.canceled) {
1119
- return state;
1138
+ return;
1120
1139
  }
1121
- (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(toSCXMLEvent(eventForParent, {
1122
- origin: self
1123
- }));
1140
+ (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(eventForParent);
1124
1141
  };
1125
1142
  var receiver = function receiver(newListener) {
1126
1143
  state.receivers.add(newListener);
@@ -1131,36 +1148,30 @@ function fromCallback(invokeCallback) {
1131
1148
  if (isPromiseLike(state.dispose)) {
1132
1149
  state.dispose.then(function (resolved) {
1133
1150
  var _self$_parent2;
1134
- (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(toSCXMLEvent(doneInvoke(id, resolved), {
1135
- origin: self
1136
- }));
1151
+ (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(doneInvoke(id, resolved));
1137
1152
  state.canceled = true;
1138
1153
  }, function (errorData) {
1139
1154
  var _self$_parent3;
1140
- var errorEvent = error$1(id, errorData);
1141
- (_self$_parent3 = self._parent) === null || _self$_parent3 === void 0 ? void 0 : _self$_parent3.send(toSCXMLEvent(errorEvent, {
1142
- origin: self
1143
- }));
1144
1155
  state.canceled = true;
1156
+ (_self$_parent3 = self._parent) === null || _self$_parent3 === void 0 ? void 0 : _self$_parent3.send(error(id, errorData));
1145
1157
  });
1146
1158
  }
1147
1159
  return state;
1148
1160
  }
1149
- if (_event.name === stopSignalType) {
1161
+ if (event.type === stopSignalType) {
1150
1162
  state.canceled = true;
1151
1163
  if (isFunction(state.dispose)) {
1152
1164
  state.dispose();
1153
1165
  }
1154
1166
  return state;
1155
1167
  }
1156
- if (isSignal(_event.name)) {
1168
+ if (isSignal(event.type)) {
1157
1169
  // TODO: unrecognized signal
1158
1170
  return state;
1159
1171
  }
1160
- var plainEvent = isSCXMLEvent(event) ? event.data : event;
1161
- if (!isSignal(plainEvent.type)) {
1172
+ if (!isSignal(event.type)) {
1162
1173
  state.receivers.forEach(function (receiver) {
1163
- return receiver(plainEvent);
1174
+ return receiver(event);
1164
1175
  });
1165
1176
  }
1166
1177
  return state;
@@ -1231,6 +1242,12 @@ function toActorRef(actorRefLike) {
1231
1242
  return void 0;
1232
1243
  }), _objectSpread2$1), actorRefLike);
1233
1244
  }
1245
+ var emptyBehavior = fromTransition(function (_) {
1246
+ return undefined;
1247
+ }, undefined);
1248
+ function createEmptyActor() {
1249
+ return interpret(emptyBehavior);
1250
+ }
1234
1251
 
1235
1252
  function createSystem() {
1236
1253
  var sessionIdCounter = 0;
@@ -1268,6 +1285,7 @@ function createSystem() {
1268
1285
  return system;
1269
1286
  }
1270
1287
 
1288
+ exports.ActorStatus = void 0;
1271
1289
  (function (ActorStatus) {
1272
1290
  ActorStatus[ActorStatus["NotStarted"] = 0] = "NotStarted";
1273
1291
  ActorStatus[ActorStatus["Running"] = 1] = "Running";
@@ -1423,9 +1441,9 @@ var Interpreter = /*#__PURE__*/function () {
1423
1441
  _step;
1424
1442
  try {
1425
1443
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
1426
- var _observer2$next;
1427
- var _observer2 = _step.value;
1428
- (_observer2$next = _observer2.next) === null || _observer2$next === void 0 ? void 0 : _observer2$next.call(_observer2, snapshot);
1444
+ var _observer$next;
1445
+ var _observer = _step.value;
1446
+ (_observer$next = _observer.next) === null || _observer$next === void 0 ? void 0 : _observer$next.call(_observer, snapshot);
1429
1447
  }
1430
1448
  } catch (err) {
1431
1449
  _iterator.e(err);
@@ -1435,30 +1453,15 @@ var Interpreter = /*#__PURE__*/function () {
1435
1453
  var status = (_this$behavior$getSta = (_this$behavior = this.behavior).getStatus) === null || _this$behavior$getSta === void 0 ? void 0 : _this$behavior$getSta.call(_this$behavior, state);
1436
1454
  switch (status === null || status === void 0 ? void 0 : status.status) {
1437
1455
  case 'done':
1438
- this._doneEvent = doneInvoke(this.id, status.data);
1439
- (_this$_parent = this._parent) === null || _this$_parent === void 0 ? void 0 : _this$_parent.send(toSCXMLEvent(this._doneEvent, {
1440
- origin: this,
1441
- invokeid: this.id
1442
- }));
1443
1456
  this._stopProcedure();
1457
+ this._doneEvent = doneInvoke(this.id, status.data);
1458
+ (_this$_parent = this._parent) === null || _this$_parent === void 0 ? void 0 : _this$_parent.send(this._doneEvent);
1459
+ this._complete();
1444
1460
  break;
1445
1461
  case 'error':
1446
- (_this$_parent2 = this._parent) === null || _this$_parent2 === void 0 ? void 0 : _this$_parent2.send(toSCXMLEvent(error$1(this.id, status.data), {
1447
- origin: this
1448
- }));
1449
- var _iterator2 = _createForOfIteratorHelper(this.observers),
1450
- _step2;
1451
- try {
1452
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1453
- var _observer$error;
1454
- var _observer = _step2.value;
1455
- (_observer$error = _observer.error) === null || _observer$error === void 0 ? void 0 : _observer$error.call(_observer, status.data);
1456
- }
1457
- } catch (err) {
1458
- _iterator2.e(err);
1459
- } finally {
1460
- _iterator2.f();
1461
- }
1462
+ this._stopProcedure();
1463
+ (_this$_parent2 = this._parent) === null || _this$_parent2 === void 0 ? void 0 : _this$_parent2.send(error(this.id, status.data));
1464
+ this._error(status.data);
1462
1465
  break;
1463
1466
  }
1464
1467
  }
@@ -1537,15 +1540,16 @@ var Interpreter = /*#__PURE__*/function () {
1537
1540
  try {
1538
1541
  var nextState = this.behavior.transition(this._state, event, this._actorContext);
1539
1542
  this.update(nextState);
1540
- if (event.name === stopSignalType) {
1543
+ if (event.type === stopSignalType) {
1541
1544
  this._stopProcedure();
1545
+ this._complete();
1542
1546
  }
1543
1547
  } catch (err) {
1544
1548
  // TODO: properly handle errors
1545
1549
  if (this.observers.size > 0) {
1546
1550
  this.observers.forEach(function (observer) {
1547
- var _observer$error2;
1548
- (_observer$error2 = observer.error) === null || _observer$error2 === void 0 ? void 0 : _observer$error2.call(observer, err);
1551
+ var _observer$error;
1552
+ (_observer$error = observer.error) === null || _observer$error === void 0 ? void 0 : _observer$error.call(observer, err);
1549
1553
  });
1550
1554
  this.stop();
1551
1555
  } else {
@@ -1564,9 +1568,9 @@ var Interpreter = /*#__PURE__*/function () {
1564
1568
  this.status = exports.ActorStatus.Stopped;
1565
1569
  return this;
1566
1570
  }
1567
- this.mailbox.enqueue(toSCXMLEvent({
1571
+ this.mailbox.enqueue({
1568
1572
  type: stopSignalType
1569
- }));
1573
+ });
1570
1574
  return this;
1571
1575
  }
1572
1576
 
@@ -1584,13 +1588,31 @@ var Interpreter = /*#__PURE__*/function () {
1584
1588
  }, {
1585
1589
  key: "_complete",
1586
1590
  value: function _complete() {
1591
+ var _iterator2 = _createForOfIteratorHelper(this.observers),
1592
+ _step2;
1593
+ try {
1594
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1595
+ var _observer2$complete;
1596
+ var _observer2 = _step2.value;
1597
+ (_observer2$complete = _observer2.complete) === null || _observer2$complete === void 0 ? void 0 : _observer2$complete.call(_observer2);
1598
+ }
1599
+ } catch (err) {
1600
+ _iterator2.e(err);
1601
+ } finally {
1602
+ _iterator2.f();
1603
+ }
1604
+ this.observers.clear();
1605
+ }
1606
+ }, {
1607
+ key: "_error",
1608
+ value: function _error(data) {
1587
1609
  var _iterator3 = _createForOfIteratorHelper(this.observers),
1588
1610
  _step3;
1589
1611
  try {
1590
1612
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1591
- var _observer3$complete;
1613
+ var _observer3$error;
1592
1614
  var _observer3 = _step3.value;
1593
- (_observer3$complete = _observer3.complete) === null || _observer3$complete === void 0 ? void 0 : _observer3$complete.call(_observer3);
1615
+ (_observer3$error = _observer3.error) === null || _observer3$error === void 0 ? void 0 : _observer3$error.call(_observer3, data);
1594
1616
  }
1595
1617
  } catch (err) {
1596
1618
  _iterator3.e(err);
@@ -1602,7 +1624,6 @@ var Interpreter = /*#__PURE__*/function () {
1602
1624
  }, {
1603
1625
  key: "_stopProcedure",
1604
1626
  value: function _stopProcedure() {
1605
- this._complete();
1606
1627
  if (this.status !== exports.ActorStatus.Running) {
1607
1628
  // Interpreter already stopped; do nothing
1608
1629
  return this;
@@ -1634,16 +1655,23 @@ var Interpreter = /*#__PURE__*/function () {
1634
1655
  }, {
1635
1656
  key: "send",
1636
1657
  value: function send(event) {
1637
- var _event = toSCXMLEvent(event);
1658
+ if (typeof event === 'string') {
1659
+ throw new Error("Only event objects may be sent to actors; use .send({ type: \"".concat(event, "\" }) instead"));
1660
+ }
1638
1661
  if (this.status === exports.ActorStatus.Stopped) {
1662
+ // do nothing
1663
+ if (!dev_dist_xstateDev.IS_PRODUCTION) {
1664
+ var eventString = JSON.stringify(event);
1665
+ warn(false, "Event \"".concat(event.type.toString(), "\" was sent to stopped actor \"").concat(this.id, " (").concat(this.sessionId, ")\". This actor has already reached its final state, and will not transition.\nEvent: ").concat(eventString));
1666
+ }
1639
1667
  return;
1640
1668
  }
1641
1669
  if (this.status !== exports.ActorStatus.Running && !this.options.deferEvents) {
1642
- throw new Error("Event \"".concat(_event.name, "\" was sent to uninitialized actor \"").concat(this.id
1670
+ throw new Error("Event \"".concat(event.type, "\" was sent to uninitialized actor \"").concat(this.id
1643
1671
  // tslint:disable-next-line:max-line-length
1644
- , "\". Make sure .start() is called for this actor, or set { deferEvents: true } in the actor options.\nEvent: ").concat(JSON.stringify(_event.data)));
1672
+ , "\". Make sure .start() is called for this actor, or set { deferEvents: true } in the actor options.\nEvent: ").concat(JSON.stringify(event)));
1645
1673
  }
1646
- this.mailbox.enqueue(_event);
1674
+ this.mailbox.enqueue(event);
1647
1675
  }
1648
1676
 
1649
1677
  // TODO: make private (and figure out a way to do this within the machine)
@@ -1653,9 +1681,9 @@ var Interpreter = /*#__PURE__*/function () {
1653
1681
  var _this4 = this;
1654
1682
  this.delayedEventsMap[sendAction.params.id] = this.clock.setTimeout(function () {
1655
1683
  if ('to' in sendAction.params && sendAction.params.to) {
1656
- sendAction.params.to.send(sendAction.params._event);
1684
+ sendAction.params.to.send(sendAction.params.event);
1657
1685
  } else {
1658
- _this4.send(sendAction.params._event);
1686
+ _this4.send(sendAction.params.event);
1659
1687
  }
1660
1688
  }, sendAction.params.delay);
1661
1689
  }
@@ -1721,18 +1749,18 @@ function interpret(behavior, options) {
1721
1749
  * @param actorRef The actor to stop.
1722
1750
  */
1723
1751
 
1724
- function stop$1(actorRef) {
1752
+ function stop(actorRef) {
1725
1753
  var actor = actorRef;
1726
1754
  return createDynamicAction({
1727
- type: stop,
1755
+ type: stop$1,
1728
1756
  params: {
1729
1757
  actor: actor
1730
1758
  }
1731
- }, function (_event, _ref) {
1759
+ }, function (event, _ref) {
1732
1760
  var state = _ref.state;
1733
1761
  var actorRefOrString = isFunction(actor) ? actor({
1734
1762
  context: state.context,
1735
- event: _event.data
1763
+ event: event
1736
1764
  }) : actor;
1737
1765
  var actorRef = typeof actorRefOrString === 'string' ? state.children[actorRefOrString] : actorRefOrString;
1738
1766
  return [state, {
@@ -1774,23 +1802,22 @@ var defaultLogExpr = function defaultLogExpr(_ref) {
1774
1802
  * @param label The label to give to the logged expression.
1775
1803
  */
1776
1804
 
1777
- function log$1() {
1805
+ function log() {
1778
1806
  var expr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultLogExpr;
1779
1807
  var label = arguments.length > 1 ? arguments[1] : undefined;
1780
1808
  return createDynamicAction({
1781
- type: log,
1809
+ type: log$1,
1782
1810
  params: {
1783
1811
  label: label,
1784
1812
  expr: expr
1785
1813
  }
1786
- }, function (_event, _ref2) {
1814
+ }, function (event, _ref2) {
1787
1815
  var _actorContext$self;
1788
1816
  var state = _ref2.state,
1789
1817
  actorContext = _ref2.actorContext;
1790
1818
  var resolvedValue = typeof expr === 'function' ? expr({
1791
1819
  context: state.context,
1792
- event: _event.data,
1793
- _event: _event,
1820
+ event: event,
1794
1821
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
1795
1822
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
1796
1823
  }) : expr;
@@ -1821,20 +1848,19 @@ function log$1() {
1821
1848
  * @param sendId The `id` of the `send(...)` action to cancel.
1822
1849
  */
1823
1850
 
1824
- function cancel$1(sendId) {
1851
+ function cancel(sendId) {
1825
1852
  return createDynamicAction({
1826
- type: cancel,
1853
+ type: cancel$1,
1827
1854
  params: {
1828
1855
  sendId: sendId
1829
1856
  }
1830
- }, function (_event, _ref) {
1857
+ }, function (event, _ref) {
1831
1858
  var _actorContext$self;
1832
1859
  var state = _ref.state,
1833
1860
  actorContext = _ref.actorContext;
1834
1861
  var resolvedSendId = isFunction(sendId) ? sendId({
1835
1862
  context: state.context,
1836
- event: _event.data,
1837
- _event: _event,
1863
+ event: event,
1838
1864
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
1839
1865
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
1840
1866
  }) : sendId;
@@ -1920,9 +1946,9 @@ function not(guard) {
1920
1946
  var evaluate = _ref2.evaluate,
1921
1947
  guard = _ref2.guard,
1922
1948
  context = _ref2.context,
1923
- _event = _ref2._event,
1949
+ event = _ref2.event,
1924
1950
  state = _ref2.state;
1925
- return !evaluate(guard.children[0], context, _event, state);
1951
+ return !evaluate(guard.children[0], context, event, state);
1926
1952
  }
1927
1953
  };
1928
1954
  }
@@ -1939,10 +1965,10 @@ function and(guards) {
1939
1965
  var evaluate = _ref3.evaluate,
1940
1966
  guard = _ref3.guard,
1941
1967
  context = _ref3.context,
1942
- _event = _ref3._event,
1968
+ event = _ref3.event,
1943
1969
  state = _ref3.state;
1944
1970
  return guard.children.every(function (childGuard) {
1945
- return evaluate(childGuard, context, _event, state);
1971
+ return evaluate(childGuard, context, event, state);
1946
1972
  });
1947
1973
  }
1948
1974
  };
@@ -1960,15 +1986,15 @@ function or(guards) {
1960
1986
  var evaluate = _ref4.evaluate,
1961
1987
  guard = _ref4.guard,
1962
1988
  context = _ref4.context,
1963
- _event = _ref4._event,
1989
+ event = _ref4.event,
1964
1990
  state = _ref4.state;
1965
1991
  return guard.children.some(function (childGuard) {
1966
- return evaluate(childGuard, context, _event, state);
1992
+ return evaluate(childGuard, context, event, state);
1967
1993
  });
1968
1994
  }
1969
1995
  };
1970
1996
  }
1971
- function evaluateGuard(guard, context, _event, state) {
1997
+ function evaluateGuard(guard, context, event, state) {
1972
1998
  var _machine$options$guar, _machine$options, _machine$options$guar2;
1973
1999
  var machine = state.machine;
1974
2000
  var predicate = (_machine$options$guar = machine === null || machine === void 0 ? void 0 : (_machine$options = machine.options) === null || _machine$options === void 0 ? void 0 : (_machine$options$guar2 = _machine$options.guards) === null || _machine$options$guar2 === void 0 ? void 0 : _machine$options$guar2[guard.type]) !== null && _machine$options$guar !== void 0 ? _machine$options$guar : guard.predicate;
@@ -1977,10 +2003,9 @@ function evaluateGuard(guard, context, _event, state) {
1977
2003
  }
1978
2004
  return predicate({
1979
2005
  context: context,
1980
- event: _event.data,
2006
+ event: event,
1981
2007
  state: state,
1982
2008
  guard: guard,
1983
- _event: _event,
1984
2009
  evaluate: evaluateGuard
1985
2010
  });
1986
2011
  }
@@ -2015,12 +2040,12 @@ function toGuardDefinition(guardConfig, getPredicate) {
2015
2040
  };
2016
2041
  }
2017
2042
 
2018
- function getOutput(configuration, context, _event) {
2043
+ function getOutput(configuration, context, event) {
2019
2044
  var machine = configuration[0].machine;
2020
2045
  var finalChildStateNode = configuration.find(function (stateNode) {
2021
2046
  return stateNode.type === 'final' && stateNode.parent === machine.root;
2022
2047
  });
2023
- return finalChildStateNode && finalChildStateNode.output ? mapContext(finalChildStateNode.output, context, _event) : undefined;
2048
+ return finalChildStateNode && finalChildStateNode.output ? mapContext(finalChildStateNode.output, context, event) : undefined;
2024
2049
  }
2025
2050
  var isAtomicStateNode = function isAtomicStateNode(stateNode) {
2026
2051
  return stateNode.type === 'atomic' || stateNode.type === 'final';
@@ -2184,7 +2209,6 @@ var isStateId = function isStateId(str) {
2184
2209
  return str[0] === STATE_IDENTIFIER;
2185
2210
  };
2186
2211
  function getCandidates(stateNode, receivedEventType) {
2187
- var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2188
2212
  var candidates = stateNode.transitions.filter(function (transition) {
2189
2213
  var eventType = transition.eventType;
2190
2214
  // First, check the trivial case: event names are exactly equal
@@ -2197,7 +2221,7 @@ function getCandidates(stateNode, receivedEventType) {
2197
2221
  if (eventType === WILDCARD) {
2198
2222
  return true;
2199
2223
  }
2200
- if (!partialMatch && !eventType.endsWith('.*')) {
2224
+ if (!eventType.endsWith('.*')) {
2201
2225
  return false;
2202
2226
  }
2203
2227
  var partialEventTokens = eventType.split('.');
@@ -2228,13 +2252,13 @@ function getDelayedTransitions(stateNode) {
2228
2252
  }
2229
2253
  var mutateEntryExit = function mutateEntryExit(delay, i) {
2230
2254
  var delayRef = isFunction(delay) ? "".concat(stateNode.id, ":delay[").concat(i, "]") : delay;
2231
- var eventType = after$1(delayRef, stateNode.id);
2232
- stateNode.entry.push(send$1({
2255
+ var eventType = after(delayRef, stateNode.id);
2256
+ stateNode.entry.push(raise({
2233
2257
  type: eventType
2234
2258
  }, {
2235
2259
  delay: delay
2236
2260
  }));
2237
- stateNode.exit.push(cancel$1(eventType));
2261
+ stateNode.exit.push(cancel(eventType));
2238
2262
  return eventType;
2239
2263
  };
2240
2264
  var delayedTransitions = isArray(afterConfig) ? afterConfig.map(function (transition, i) {
@@ -2264,9 +2288,9 @@ function getDelayedTransitions(stateNode) {
2264
2288
  });
2265
2289
  }
2266
2290
  function formatTransition(stateNode, transitionConfig) {
2267
- var _transitionConfig$ext;
2291
+ var _transitionConfig$ree;
2268
2292
  var normalizedTarget = normalizeTarget(transitionConfig.target);
2269
- var external = (_transitionConfig$ext = transitionConfig.external) !== null && _transitionConfig$ext !== void 0 ? _transitionConfig$ext : false;
2293
+ var reenter = (_transitionConfig$ree = transitionConfig.reenter) !== null && _transitionConfig$ree !== void 0 ? _transitionConfig$ree : false;
2270
2294
  var guards = stateNode.machine.options.guards;
2271
2295
  var target = resolveTarget(stateNode, normalizedTarget);
2272
2296
  var transition = _objectSpread2(_objectSpread2({}, transitionConfig), {}, {
@@ -2276,7 +2300,7 @@ function formatTransition(stateNode, transitionConfig) {
2276
2300
  }) : undefined,
2277
2301
  target: target,
2278
2302
  source: stateNode,
2279
- external: external,
2303
+ reenter: reenter,
2280
2304
  eventType: transitionConfig.event,
2281
2305
  toJSON: function toJSON() {
2282
2306
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2363,7 +2387,7 @@ function formatInitialTransition(stateNode, _target) {
2363
2387
  source: stateNode,
2364
2388
  actions: [],
2365
2389
  eventType: null,
2366
- external: false,
2390
+ reenter: false,
2367
2391
  target: resolvedTarget,
2368
2392
  toJSON: function toJSON() {
2369
2393
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2546,24 +2570,24 @@ function getStateNodes(stateNode, state) {
2546
2570
  return allSubStateNodes.concat(subStateNodes);
2547
2571
  }, []));
2548
2572
  }
2549
- function transitionAtomicNode(stateNode, stateValue, state, _event) {
2573
+ function transitionAtomicNode(stateNode, stateValue, state, event) {
2550
2574
  var childStateNode = getStateNode(stateNode, stateValue);
2551
- var next = childStateNode.next(state, _event);
2575
+ var next = childStateNode.next(state, event);
2552
2576
  if (!next || !next.length) {
2553
- return stateNode.next(state, _event);
2577
+ return stateNode.next(state, event);
2554
2578
  }
2555
2579
  return next;
2556
2580
  }
2557
- function transitionCompoundNode(stateNode, stateValue, state, _event) {
2581
+ function transitionCompoundNode(stateNode, stateValue, state, event) {
2558
2582
  var subStateKeys = Object.keys(stateValue);
2559
2583
  var childStateNode = getStateNode(stateNode, subStateKeys[0]);
2560
- var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, _event);
2584
+ var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, event);
2561
2585
  if (!next || !next.length) {
2562
- return stateNode.next(state, _event);
2586
+ return stateNode.next(state, event);
2563
2587
  }
2564
2588
  return next;
2565
2589
  }
2566
- function transitionParallelNode(stateNode, stateValue, state, _event) {
2590
+ function transitionParallelNode(stateNode, stateValue, state, event) {
2567
2591
  var allInnerTransitions = [];
2568
2592
  for (var _i3 = 0, _Object$keys2 = Object.keys(stateValue); _i3 < _Object$keys2.length; _i3++) {
2569
2593
  var subStateKey = _Object$keys2[_i3];
@@ -2572,29 +2596,29 @@ function transitionParallelNode(stateNode, stateValue, state, _event) {
2572
2596
  continue;
2573
2597
  }
2574
2598
  var subStateNode = getStateNode(stateNode, subStateKey);
2575
- var innerTransitions = transitionNode(subStateNode, subStateValue, state, _event);
2599
+ var innerTransitions = transitionNode(subStateNode, subStateValue, state, event);
2576
2600
  if (innerTransitions) {
2577
2601
  allInnerTransitions.push.apply(allInnerTransitions, _toConsumableArray(innerTransitions));
2578
2602
  }
2579
2603
  }
2580
2604
  if (!allInnerTransitions.length) {
2581
- return stateNode.next(state, _event);
2605
+ return stateNode.next(state, event);
2582
2606
  }
2583
2607
  return allInnerTransitions;
2584
2608
  }
2585
- function transitionNode(stateNode, stateValue, state, _event) {
2609
+ function transitionNode(stateNode, stateValue, state, event) {
2586
2610
  // leaf node
2587
2611
  if (isString(stateValue)) {
2588
- return transitionAtomicNode(stateNode, stateValue, state, _event);
2612
+ return transitionAtomicNode(stateNode, stateValue, state, event);
2589
2613
  }
2590
2614
 
2591
2615
  // compound node
2592
2616
  if (Object.keys(stateValue).length === 1) {
2593
- return transitionCompoundNode(stateNode, stateValue, state, _event);
2617
+ return transitionCompoundNode(stateNode, stateValue, state, event);
2594
2618
  }
2595
2619
 
2596
2620
  // parallel node
2597
- return transitionParallelNode(stateNode, stateValue, state, _event);
2621
+ return transitionParallelNode(stateNode, stateValue, state, event);
2598
2622
  }
2599
2623
  function getHistoryNodes(stateNode) {
2600
2624
  return Object.keys(stateNode.states).map(function (key) {
@@ -2786,7 +2810,7 @@ function getTransitionDomain(transition, historyValue) {
2786
2810
  if (!targetStates) {
2787
2811
  return null;
2788
2812
  }
2789
- if (!transition.external && transition.source.type === 'compound' && targetStates.every(function (targetStateNode) {
2813
+ if (!transition.reenter && transition.source.type !== 'parallel' && targetStates.every(function (targetStateNode) {
2790
2814
  return isDescendant(targetStateNode, transition.source);
2791
2815
  })) {
2792
2816
  return transition.source;
@@ -2837,7 +2861,7 @@ function computeExitSet(transitions, configuration, historyValue) {
2837
2861
  * @param mutConfiguration
2838
2862
  */
2839
2863
 
2840
- function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2864
+ function microstep(transitions, currentState, actorCtx, event) {
2841
2865
  var machine = currentState.machine;
2842
2866
  // Transition will "apply" if:
2843
2867
  // - the state node is the initial state (there is no current state)
@@ -2846,7 +2870,7 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2846
2870
  var mutConfiguration = new Set(currentState.configuration);
2847
2871
  if (!currentState._initial && !willTransition) {
2848
2872
  var inertState = cloneState(currentState, {
2849
- _event: scxmlEvent,
2873
+ event: event,
2850
2874
  actions: [],
2851
2875
  transitions: []
2852
2876
  });
@@ -2856,11 +2880,11 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2856
2880
  var microstate = microstepProcedure(currentState._initial ? [{
2857
2881
  target: _toConsumableArray(currentState.configuration).filter(isAtomicStateNode),
2858
2882
  source: machine.root,
2859
- external: true,
2883
+ reenter: true,
2860
2884
  actions: [],
2861
2885
  eventType: null,
2862
2886
  toJSON: null // TODO: fix
2863
- }] : transitions, currentState, mutConfiguration, scxmlEvent, actorCtx);
2887
+ }] : transitions, currentState, mutConfiguration, event, actorCtx);
2864
2888
  var context = microstate.context,
2865
2889
  nonRaisedActions = microstate.actions;
2866
2890
  var children = setChildren(currentState, nonRaisedActions);
@@ -2880,12 +2904,12 @@ function setChildren(currentState, nonRaisedActions) {
2880
2904
  try {
2881
2905
  for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
2882
2906
  var action = _step21.value;
2883
- if (action.type === invoke && action.params.ref) {
2907
+ if (action.type === invoke$1 && action.params.ref) {
2884
2908
  var ref = action.params.ref;
2885
2909
  if (ref) {
2886
2910
  children[ref.id] = ref;
2887
2911
  }
2888
- } else if (action.type === stop) {
2912
+ } else if (action.type === stop$1) {
2889
2913
  var _ref = action.params.actor;
2890
2914
  if (_ref) {
2891
2915
  delete children[_ref.id];
@@ -2899,8 +2923,7 @@ function setChildren(currentState, nonRaisedActions) {
2899
2923
  }
2900
2924
  return children;
2901
2925
  }
2902
- function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEvent, actorCtx) {
2903
- var machine = currentState.machine;
2926
+ function microstepProcedure(transitions, currentState, mutConfiguration, event, actorCtx) {
2904
2927
  var actions = [];
2905
2928
  var historyValue = _objectSpread2({}, currentState.historyValue);
2906
2929
  var filteredTransitions = removeConflictingTransitions(transitions, mutConfiguration, historyValue);
@@ -2929,9 +2952,9 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2929
2952
  actions.push.apply(actions, _toConsumableArray(finalActions));
2930
2953
  }
2931
2954
  try {
2932
- var _resolveActionsAndCon = resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx),
2955
+ var _resolveActionsAndCon = resolveActionsAndContext(actions, event, currentState, actorCtx),
2933
2956
  nextState = _resolveActionsAndCon.nextState;
2934
- var output = done ? getOutput(nextConfiguration, nextState.context, scxmlEvent) : undefined;
2957
+ var output = done ? getOutput(nextConfiguration, nextState.context, event) : undefined;
2935
2958
  internalQueue.push.apply(internalQueue, _toConsumableArray(nextState._internalQueue));
2936
2959
  return cloneState(currentState, {
2937
2960
  actions: nextState.actions,
@@ -2939,7 +2962,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2939
2962
  historyValue: historyValue,
2940
2963
  _internalQueue: internalQueue,
2941
2964
  context: nextState.context,
2942
- _event: scxmlEvent,
2965
+ event: event,
2943
2966
  done: done,
2944
2967
  output: output,
2945
2968
  children: nextState.children
@@ -2947,19 +2970,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2947
2970
  } catch (e) {
2948
2971
  // TODO: Refactor this once proper error handling is implemented.
2949
2972
  // See https://github.com/statelyai/rfcs/pull/4
2950
- if (machine.config.scxml) {
2951
- return cloneState(currentState, {
2952
- actions: [],
2953
- configuration: Array.from(mutConfiguration),
2954
- historyValue: historyValue,
2955
- _internalQueue: [toSCXMLEvent({
2956
- type: 'error.execution'
2957
- })],
2958
- context: currentState.context
2959
- });
2960
- } else {
2961
- throw e;
2962
- }
2973
+ throw e;
2963
2974
  }
2964
2975
  }
2965
2976
  function enterStates(filteredTransitions, mutConfiguration, actions, internalQueue, currentState, historyValue) {
@@ -2984,7 +2995,7 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
2984
2995
  try {
2985
2996
  for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
2986
2997
  var invokeDef = _step23.value;
2987
- actions.push(invoke$1(invokeDef));
2998
+ actions.push(invoke(invokeDef));
2988
2999
  }
2989
3000
 
2990
3001
  // Add entry actions
@@ -3014,14 +3025,14 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
3014
3025
  if (!parent.parent) {
3015
3026
  continue;
3016
3027
  }
3017
- internalQueue.push(toSCXMLEvent(done(parent.id, stateNodeToEnter.output ? mapContext(stateNodeToEnter.output, currentState.context, currentState._event) : undefined)));
3028
+ internalQueue.push(done(parent.id, stateNodeToEnter.output ? mapContext(stateNodeToEnter.output, currentState.context, currentState.event) : undefined));
3018
3029
  if (parent.parent) {
3019
3030
  var grandparent = parent.parent;
3020
3031
  if (grandparent.type === 'parallel') {
3021
3032
  if (getChildren(grandparent).every(function (parentNode) {
3022
3033
  return isInFinalState(_toConsumableArray(mutConfiguration), parentNode);
3023
3034
  })) {
3024
- internalQueue.push(toSCXMLEvent(done(grandparent.id)));
3035
+ internalQueue.push(done(grandparent.id));
3025
3036
  }
3026
3037
  }
3027
3038
  }
@@ -3294,7 +3305,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3294
3305
  for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
3295
3306
  var s = _step40.value;
3296
3307
  actions.push.apply(actions, _toConsumableArray(s.exit.flat()).concat(_toConsumableArray(s.invoke.map(function (def) {
3297
- return stop$1(def.id);
3308
+ return stop(def.id);
3298
3309
  }))));
3299
3310
  mutConfiguration["delete"](s);
3300
3311
  }
@@ -3304,7 +3315,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3304
3315
  _iterator40.f();
3305
3316
  }
3306
3317
  }
3307
- function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3318
+ function resolveActionsAndContext(actions, event, currentState, actorCtx) {
3308
3319
  var machine = currentState.machine;
3309
3320
  var resolvedActions = [];
3310
3321
  var raiseActions = [];
@@ -3322,7 +3333,7 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3322
3333
  var executableActionObject = resolveActionObject(actionObject, machine.options.actions);
3323
3334
  if (isDynamicAction(executableActionObject)) {
3324
3335
  var _resolvedAction$param;
3325
- var _executableActionObje = executableActionObject.resolve(scxmlEvent, {
3336
+ var _executableActionObje = executableActionObject.resolve(event, {
3326
3337
  state: intermediateState,
3327
3338
  action: actionObject,
3328
3339
  actorContext: actorCtx
@@ -3332,12 +3343,12 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3332
3343
  resolvedAction = _executableActionObje2[1];
3333
3344
  var matchedActions = (_resolvedAction$param = resolvedAction.params) === null || _resolvedAction$param === void 0 ? void 0 : _resolvedAction$param.actions;
3334
3345
  intermediateState = nextState;
3335
- if ((resolvedAction.type === raise || resolvedAction.type === send && resolvedAction.params.internal) && typeof resolvedAction.params.delay !== 'number') {
3346
+ if ((resolvedAction.type === raise$1 || resolvedAction.type === send$1 && resolvedAction.params.internal) && typeof resolvedAction.params.delay !== 'number') {
3336
3347
  raiseActions.push(resolvedAction);
3337
3348
  }
3338
3349
 
3339
3350
  // TODO: remove the check; just handleAction
3340
- if (resolvedAction.type !== pure) {
3351
+ if (resolvedAction.type !== pure$1) {
3341
3352
  handleAction(resolvedAction);
3342
3353
  }
3343
3354
  toActionObjects(matchedActions).forEach(resolveAction);
@@ -3361,18 +3372,21 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3361
3372
  nextState: cloneState(intermediateState, {
3362
3373
  actions: resolvedActions,
3363
3374
  _internalQueue: raiseActions.map(function (a) {
3364
- return a.params._event;
3375
+ return a.params.event;
3365
3376
  })
3366
3377
  })
3367
3378
  };
3368
3379
  }
3369
- function macrostep(state, scxmlEvent, actorCtx) {
3380
+ function macrostep(state, event, actorCtx) {
3381
+ if (!dev_dist_xstateDev.IS_PRODUCTION && event.type === WILDCARD) {
3382
+ throw new Error("An event cannot have the wildcard type ('".concat(WILDCARD, "')"));
3383
+ }
3370
3384
  var nextState = state;
3371
3385
  var states = [];
3372
3386
 
3373
3387
  // Handle stop event
3374
- if ((scxmlEvent === null || scxmlEvent === void 0 ? void 0 : scxmlEvent.name) === stopSignalType) {
3375
- nextState = stopStep(scxmlEvent, nextState, actorCtx);
3388
+ if (event.type === stopSignalType) {
3389
+ nextState = stopStep(event, nextState, actorCtx);
3376
3390
  states.push(nextState);
3377
3391
  return {
3378
3392
  state: nextState,
@@ -3382,9 +3396,9 @@ function macrostep(state, scxmlEvent, actorCtx) {
3382
3396
 
3383
3397
  // Assume the state is at rest (no raised events)
3384
3398
  // Determine the next state based on the next microstep
3385
- if (scxmlEvent.name !== init) {
3386
- var transitions = selectTransitions(scxmlEvent, nextState);
3387
- nextState = microstep(transitions, state, actorCtx, scxmlEvent);
3399
+ if (event.type !== init) {
3400
+ var transitions = selectTransitions(event, nextState);
3401
+ nextState = microstep(transitions, state, actorCtx, event);
3388
3402
  states.push(nextState);
3389
3403
  }
3390
3404
  while (!nextState.done) {
@@ -3416,21 +3430,21 @@ function macrostep(state, scxmlEvent, actorCtx) {
3416
3430
  if (enabledTransitions.length) {
3417
3431
  var _nextState$actions2;
3418
3432
  var _currentActions = nextState.actions;
3419
- nextState = microstep(enabledTransitions, nextState, actorCtx, nextState._event);
3433
+ nextState = microstep(enabledTransitions, nextState, actorCtx, nextState.event);
3420
3434
  (_nextState$actions2 = nextState.actions).unshift.apply(_nextState$actions2, _toConsumableArray(_currentActions));
3421
3435
  states.push(nextState);
3422
3436
  }
3423
3437
  }
3424
3438
  if (nextState.done) {
3425
3439
  // Perform the stop step to ensure that child actors are stopped
3426
- stopStep(nextState._event, nextState, actorCtx);
3440
+ stopStep(nextState.event, nextState, actorCtx);
3427
3441
  }
3428
3442
  return {
3429
3443
  state: nextState,
3430
3444
  microstates: states
3431
3445
  };
3432
3446
  }
3433
- function stopStep(scxmlEvent, nextState, actorCtx) {
3447
+ function stopStep(event, nextState, actorCtx) {
3434
3448
  var actions = [];
3435
3449
  var _iterator43 = _createForOfIteratorHelper(nextState.configuration.sort(function (a, b) {
3436
3450
  return b.order - a.order;
@@ -3448,14 +3462,14 @@ function stopStep(scxmlEvent, nextState, actorCtx) {
3448
3462
  }
3449
3463
  for (var _i4 = 0, _Object$values = Object.values(nextState.children); _i4 < _Object$values.length; _i4++) {
3450
3464
  var child = _Object$values[_i4];
3451
- actions.push(stop$1(child));
3465
+ actions.push(stop(child));
3452
3466
  }
3453
- var _resolveActionsAndCon2 = resolveActionsAndContext(actions, scxmlEvent, nextState, actorCtx),
3467
+ var _resolveActionsAndCon2 = resolveActionsAndContext(actions, event, nextState, actorCtx),
3454
3468
  stoppedState = _resolveActionsAndCon2.nextState;
3455
3469
  return stoppedState;
3456
3470
  }
3457
- function selectTransitions(scxmlEvent, nextState) {
3458
- return nextState.machine.getTransitionData(nextState, scxmlEvent);
3471
+ function selectTransitions(event, nextState) {
3472
+ return nextState.machine.getTransitionData(nextState, event);
3459
3473
  }
3460
3474
  function selectEventlessTransitions(nextState) {
3461
3475
  var enabledTransitionSet = new Set();
@@ -3478,7 +3492,7 @@ function selectEventlessTransitions(nextState) {
3478
3492
  try {
3479
3493
  for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
3480
3494
  var transition = _step46.value;
3481
- if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, nextState._event, nextState)) {
3495
+ if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, nextState.event, nextState)) {
3482
3496
  enabledTransitionSet.add(transition);
3483
3497
  break loop;
3484
3498
  }
@@ -3572,16 +3586,14 @@ var State = /*#__PURE__*/function () {
3572
3586
  _defineProperty(this, "actions", []);
3573
3587
  _defineProperty(this, "event", void 0);
3574
3588
  _defineProperty(this, "_internalQueue", void 0);
3575
- _defineProperty(this, "_event", void 0);
3576
3589
  _defineProperty(this, "_initial", false);
3577
3590
  _defineProperty(this, "changed", void 0);
3578
3591
  _defineProperty(this, "configuration", void 0);
3579
3592
  _defineProperty(this, "transitions", void 0);
3580
3593
  _defineProperty(this, "children", void 0);
3581
3594
  this.context = config.context;
3582
- this._event = config._event;
3583
3595
  this._internalQueue = (_config$_internalQueu = config._internalQueue) !== null && _config$_internalQueu !== void 0 ? _config$_internalQueu : [];
3584
- this.event = this._event.data;
3596
+ this.event = config.event;
3585
3597
  this.historyValue = config.historyValue || {};
3586
3598
  this.actions = (_config$actions = config.actions) !== null && _config$actions !== void 0 ? _config$actions : [];
3587
3599
  this.matches = this.matches.bind(this);
@@ -3621,11 +3633,11 @@ var State = /*#__PURE__*/function () {
3621
3633
  }, {
3622
3634
  key: "toJSON",
3623
3635
  value: function toJSON() {
3624
- var configuration = this.configuration,
3625
- transitions = this.transitions,
3626
- tags = this.tags,
3627
- machine = this.machine,
3628
- jsonValues = _objectWithoutProperties(this, _excluded);
3636
+ this.configuration;
3637
+ this.transitions;
3638
+ var tags = this.tags;
3639
+ this.machine;
3640
+ var jsonValues = _objectWithoutProperties(this, _excluded);
3629
3641
  return _objectSpread2(_objectSpread2({}, jsonValues), {}, {
3630
3642
  tags: Array.from(tags),
3631
3643
  meta: this.meta
@@ -3663,10 +3675,10 @@ var State = /*#__PURE__*/function () {
3663
3675
  }, {
3664
3676
  key: "can",
3665
3677
  value: function can(event) {
3666
- {
3667
- warn(!!this.machine);
3678
+ if (dev_dist_xstateDev.IS_PRODUCTION) {
3679
+ warn(!!this.machine, "state.can(...) used outside of a machine-created State object; this will always return false.");
3668
3680
  }
3669
- var transitionData = this.machine.getTransitionData(this, toSCXMLEvent(event));
3681
+ var transitionData = this.machine.getTransitionData(this, event);
3670
3682
  return !!(transitionData !== null && transitionData !== void 0 && transitionData.length) &&
3671
3683
  // Check that at least one transition is not forbidden
3672
3684
  transitionData.some(function (t) {
@@ -3743,7 +3755,7 @@ var State = /*#__PURE__*/function () {
3743
3755
  return new State({
3744
3756
  value: stateValue.value,
3745
3757
  context: context,
3746
- _event: stateValue._event,
3758
+ event: stateValue.event,
3747
3759
  actions: [],
3748
3760
  meta: {},
3749
3761
  configuration: [],
@@ -3754,13 +3766,13 @@ var State = /*#__PURE__*/function () {
3754
3766
  }
3755
3767
  return stateValue;
3756
3768
  }
3757
- var _event = createInitEvent({}); // TODO: fix
3769
+ var event = createInitEvent({}); // TODO: fix
3758
3770
 
3759
3771
  var configuration = getConfiguration(getStateNodes(machine.root, stateValue));
3760
3772
  return new State({
3761
3773
  value: stateValue,
3762
3774
  context: context,
3763
- _event: _event,
3775
+ event: event,
3764
3776
  actions: [],
3765
3777
  meta: undefined,
3766
3778
  configuration: Array.from(configuration),
@@ -3776,11 +3788,11 @@ function cloneState(state) {
3776
3788
  return new State(_objectSpread2(_objectSpread2({}, state), config), state.machine);
3777
3789
  }
3778
3790
  function getPersistedState(state) {
3779
- var configuration = state.configuration,
3780
- transitions = state.transitions,
3781
- tags = state.tags,
3782
- machine = state.machine,
3783
- children = state.children,
3791
+ state.configuration;
3792
+ state.transitions;
3793
+ state.tags;
3794
+ state.machine;
3795
+ var children = state.children,
3784
3796
  jsonValues = _objectWithoutProperties(state, _excluded2);
3785
3797
  var childrenJson = {};
3786
3798
  for (var id in children) {
@@ -3795,14 +3807,14 @@ function getPersistedState(state) {
3795
3807
  });
3796
3808
  }
3797
3809
 
3798
- function invoke$1(invokeDef) {
3810
+ function invoke(invokeDef) {
3799
3811
  return createDynamicAction({
3800
- type: invoke,
3812
+ type: invoke$1,
3801
3813
  params: invokeDef
3802
- }, function (_event, _ref) {
3814
+ }, function (event, _ref) {
3803
3815
  var state = _ref.state,
3804
3816
  actorContext = _ref.actorContext;
3805
- var type = invoke;
3817
+ var type = invoke$1;
3806
3818
  var id = invokeDef.id,
3807
3819
  src = invokeDef.src;
3808
3820
  var resolvedInvokeAction;
@@ -3829,7 +3841,7 @@ function invoke$1(invokeDef) {
3829
3841
  systemId: invokeDef.systemId,
3830
3842
  input: typeof input === 'function' ? input({
3831
3843
  context: state.context,
3832
- event: _event.data,
3844
+ event: event,
3833
3845
  self: actorContext === null || actorContext === void 0 ? void 0 : actorContext.self
3834
3846
  }) : input
3835
3847
  });
@@ -3861,7 +3873,7 @@ function invoke$1(invokeDef) {
3861
3873
  var _actorRef$start;
3862
3874
  (_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
3863
3875
  } catch (err) {
3864
- parent.send(error$1(id, err));
3876
+ parent.send(error(id, err));
3865
3877
  return;
3866
3878
  }
3867
3879
  });
@@ -3870,7 +3882,7 @@ function invoke$1(invokeDef) {
3870
3882
  });
3871
3883
  }
3872
3884
 
3873
- function createSpawner(self, machine, context, _event, mutCapturedActions) {
3885
+ function createSpawner(self, machine, context, event, mutCapturedActions) {
3874
3886
  return function (src) {
3875
3887
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3876
3888
  if (isString(src)) {
@@ -3886,11 +3898,11 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3886
3898
  parent: self,
3887
3899
  input: typeof input === 'function' ? input({
3888
3900
  context: context,
3889
- event: _event.data,
3901
+ event: event,
3890
3902
  self: self
3891
3903
  }) : input
3892
3904
  });
3893
- mutCapturedActions.push(invoke$1({
3905
+ mutCapturedActions.push(invoke({
3894
3906
  id: actorRef.id,
3895
3907
  // @ts-ignore TODO: fix types
3896
3908
  src: actorRef,
@@ -3911,7 +3923,7 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3911
3923
  parent: self,
3912
3924
  input: options.input
3913
3925
  });
3914
- mutCapturedActions.push(invoke$1({
3926
+ mutCapturedActions.push(invoke({
3915
3927
  // @ts-ignore TODO: fix types
3916
3928
  src: _actorRef,
3917
3929
  ref: _actorRef,
@@ -3929,13 +3941,13 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3929
3941
  *
3930
3942
  * @param assignment An object that represents the partial context to update.
3931
3943
  */
3932
- function assign$1(assignment) {
3944
+ function assign(assignment) {
3933
3945
  return createDynamicAction({
3934
- type: assign,
3946
+ type: assign$1,
3935
3947
  params: {
3936
3948
  assignment: assignment
3937
3949
  }
3938
- }, function (_event, _ref) {
3950
+ }, function (event, _ref) {
3939
3951
  var _actorContext$self;
3940
3952
  var state = _ref.state,
3941
3953
  action = _ref.action,
@@ -3946,10 +3958,9 @@ function assign$1(assignment) {
3946
3958
  }
3947
3959
  var args = {
3948
3960
  context: state.context,
3949
- event: _event.data,
3961
+ event: event,
3950
3962
  action: action,
3951
- _event: _event,
3952
- spawn: createSpawner(actorContext === null || actorContext === void 0 ? void 0 : actorContext.self, state.machine, state.context, _event, capturedActions),
3963
+ spawn: createSpawner(actorContext === null || actorContext === void 0 ? void 0 : actorContext.self, state.machine, state.context, event, capturedActions),
3953
3964
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
3954
3965
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
3955
3966
  };
@@ -3967,7 +3978,7 @@ function assign$1(assignment) {
3967
3978
  return [cloneState(state, {
3968
3979
  context: updatedContext
3969
3980
  }), {
3970
- type: assign,
3981
+ type: assign$1,
3971
3982
  params: {
3972
3983
  context: updatedContext,
3973
3984
  actions: capturedActions
@@ -3983,15 +3994,15 @@ function assign$1(assignment) {
3983
3994
  * @param eventType The event to raise.
3984
3995
  */
3985
3996
 
3986
- function raise$1(eventOrExpr, options) {
3997
+ function raise(eventOrExpr, options) {
3987
3998
  return createDynamicAction({
3988
- type: raise,
3999
+ type: raise$1,
3989
4000
  params: {
3990
4001
  delay: options ? options.delay : undefined,
3991
4002
  event: eventOrExpr,
3992
4003
  id: options && options.id !== undefined ? options.id : typeof eventOrExpr === 'function' ? eventOrExpr.name : eventOrExpr.type
3993
4004
  }
3994
- }, function (_event, _ref) {
4005
+ }, function (event, _ref) {
3995
4006
  var _actorContext$self;
3996
4007
  var state = _ref.state,
3997
4008
  actorContext = _ref.actorContext;
@@ -4002,15 +4013,17 @@ function raise$1(eventOrExpr, options) {
4002
4013
  };
4003
4014
  var args = {
4004
4015
  context: state.context,
4005
- event: _event.data,
4006
- _event: _event,
4016
+ event: event,
4007
4017
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
4008
4018
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
4009
4019
  };
4010
4020
  var delaysMap = state.machine.options.delays;
4011
4021
 
4012
4022
  // TODO: helper function for resolving Expr
4013
- var resolvedEvent = toSCXMLEvent(typeof eventOrExpr === 'function' ? eventOrExpr(args) : eventOrExpr);
4023
+ if (typeof eventOrExpr === 'string') {
4024
+ throw new Error("Only event objects may be used with raise; use raise({ type: \"".concat(eventOrExpr, "\" }) instead"));
4025
+ }
4026
+ var resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args) : eventOrExpr;
4014
4027
  var resolvedDelay;
4015
4028
  if (typeof params.delay === 'string') {
4016
4029
  var configDelay = delaysMap && delaysMap[params.delay];
@@ -4019,10 +4032,9 @@ function raise$1(eventOrExpr, options) {
4019
4032
  resolvedDelay = typeof params.delay === 'function' ? params.delay(args) : params.delay;
4020
4033
  }
4021
4034
  var resolvedAction = {
4022
- type: raise,
4035
+ type: raise$1,
4023
4036
  params: _objectSpread2(_objectSpread2({}, params), {}, {
4024
- _event: resolvedEvent,
4025
- event: resolvedEvent.data,
4037
+ event: resolvedEvent,
4026
4038
  delay: resolvedDelay
4027
4039
  }),
4028
4040
  execute: function execute(actorCtx) {
@@ -4036,23 +4048,23 @@ function raise$1(eventOrExpr, options) {
4036
4048
  });
4037
4049
  }
4038
4050
 
4039
- function choose$1(guards) {
4051
+ function choose(guards) {
4040
4052
  return createDynamicAction({
4041
- type: choose,
4053
+ type: choose$1,
4042
4054
  params: {
4043
4055
  guards: guards
4044
4056
  }
4045
- }, function (_event, _ref) {
4057
+ }, function (event, _ref) {
4046
4058
  var _guards$find;
4047
4059
  var state = _ref.state;
4048
4060
  var matchedActions = (_guards$find = guards.find(function (condition) {
4049
4061
  var guard = condition.guard && toGuardDefinition(condition.guard, function (guardType) {
4050
4062
  return state.machine.options.guards[guardType];
4051
4063
  });
4052
- return !guard || evaluateGuard(guard, state.context, _event, state);
4064
+ return !guard || evaluateGuard(guard, state.context, event, state);
4053
4065
  })) === null || _guards$find === void 0 ? void 0 : _guards$find.actions;
4054
4066
  return [state, {
4055
- type: choose,
4067
+ type: choose$1,
4056
4068
  params: {
4057
4069
  actions: toActionObjects(matchedActions)
4058
4070
  }
@@ -4060,9 +4072,30 @@ function choose$1(guards) {
4060
4072
  });
4061
4073
  }
4062
4074
 
4063
- var initEvent = toSCXMLEvent({
4075
+ function pure(getActions) {
4076
+ return createDynamicAction({
4077
+ type: pure$1,
4078
+ params: {
4079
+ get: getActions
4080
+ }
4081
+ }, function (event, _ref) {
4082
+ var _toArray;
4083
+ var state = _ref.state;
4084
+ return [state, {
4085
+ type: pure$1,
4086
+ params: {
4087
+ actions: (_toArray = toArray(toActionObjects(getActions({
4088
+ context: state.context,
4089
+ event: event
4090
+ })))) !== null && _toArray !== void 0 ? _toArray : []
4091
+ }
4092
+ }];
4093
+ });
4094
+ }
4095
+
4096
+ var initEvent = {
4064
4097
  type: init
4065
- });
4098
+ };
4066
4099
  function resolveActionObject(actionObject, actionFunctionMap) {
4067
4100
  if (isDynamicAction(actionObject)) {
4068
4101
  return actionObject;
@@ -4073,7 +4106,7 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4073
4106
  return createDynamicAction({
4074
4107
  type: 'xstate.function',
4075
4108
  params: (_actionObject$params = actionObject.params) !== null && _actionObject$params !== void 0 ? _actionObject$params : {}
4076
- }, function (_event, _ref) {
4109
+ }, function (event, _ref) {
4077
4110
  var state = _ref.state;
4078
4111
  var a = {
4079
4112
  type: actionObject.type,
@@ -4081,9 +4114,8 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4081
4114
  execute: function execute(actorCtx) {
4082
4115
  return dereferencedAction({
4083
4116
  context: state.context,
4084
- event: state.event,
4117
+ event: event,
4085
4118
  action: a,
4086
- _event: state._event,
4087
4119
  system: actorCtx.system,
4088
4120
  self: actorCtx.self
4089
4121
  });
@@ -4112,7 +4144,7 @@ function toActionObject(action) {
4112
4144
  return createDynamicAction({
4113
4145
  type: type,
4114
4146
  params: {}
4115
- }, function (_event, _ref2) {
4147
+ }, function (event, _ref2) {
4116
4148
  var state = _ref2.state;
4117
4149
  var actionObject = {
4118
4150
  type: type,
@@ -4122,9 +4154,8 @@ function toActionObject(action) {
4122
4154
  execute: function execute(actorCtx) {
4123
4155
  return action({
4124
4156
  context: state.context,
4125
- event: _event.data,
4157
+ event: event,
4126
4158
  action: actionObject,
4127
- _event: _event,
4128
4159
  self: actorCtx.self,
4129
4160
  system: actorCtx.system
4130
4161
  });
@@ -4152,7 +4183,7 @@ var toActionObjects = function toActionObjects(action) {
4152
4183
  * @param delayRef The delay in milliseconds
4153
4184
  * @param id The state node ID where this event is handled
4154
4185
  */
4155
- function after$1(delayRef, id) {
4186
+ function after(delayRef, id) {
4156
4187
  var idSuffix = id ? "#".concat(id) : '';
4157
4188
  return "".concat(exports.ActionTypes.After, "(").concat(delayRef, ")").concat(idSuffix);
4158
4189
  }
@@ -4196,7 +4227,7 @@ function doneInvoke(invokeId, output) {
4196
4227
  };
4197
4228
  return eventObject;
4198
4229
  }
4199
- function error$1(id, data) {
4230
+ function error(id, data) {
4200
4231
  var type = "".concat(exports.ActionTypes.ErrorPlatform, ".").concat(id);
4201
4232
  var eventObject = {
4202
4233
  type: type,
@@ -4208,10 +4239,10 @@ function error$1(id, data) {
4208
4239
  return eventObject;
4209
4240
  }
4210
4241
  function createInitEvent(input) {
4211
- return toSCXMLEvent({
4242
+ return {
4212
4243
  type: init,
4213
4244
  input: input
4214
- });
4245
+ };
4215
4246
  }
4216
4247
 
4217
4248
  exports.Interpreter = Interpreter;
@@ -4227,18 +4258,18 @@ exports._objectWithoutProperties = _objectWithoutProperties;
4227
4258
  exports._slicedToArray = _slicedToArray;
4228
4259
  exports._toConsumableArray = _toConsumableArray;
4229
4260
  exports.actionTypes = actionTypes;
4230
- exports.after = after$1;
4261
+ exports.after = after;
4231
4262
  exports.and = and;
4232
- exports.assign = assign$1;
4233
- exports.cancel = cancel$1;
4234
- exports.choose = choose$1;
4235
- exports.createDynamicAction = createDynamicAction;
4263
+ exports.assign = assign;
4264
+ exports.cancel = cancel;
4265
+ exports.choose = choose;
4266
+ exports.createEmptyActor = createEmptyActor;
4236
4267
  exports.createInitEvent = createInitEvent;
4237
4268
  exports.createInvokeId = createInvokeId;
4238
4269
  exports.createSpawner = createSpawner;
4239
4270
  exports.done = done;
4240
4271
  exports.doneInvoke = doneInvoke;
4241
- exports.error = error$1;
4272
+ exports.error = error;
4242
4273
  exports.escalate = escalate;
4243
4274
  exports.evaluateGuard = evaluateGuard;
4244
4275
  exports.flatten = flatten;
@@ -4260,14 +4291,14 @@ exports.getStateNodeByPath = getStateNodeByPath;
4260
4291
  exports.getStateNodes = getStateNodes;
4261
4292
  exports.initEvent = initEvent;
4262
4293
  exports.interpret = interpret;
4263
- exports.invoke = invoke;
4294
+ exports.invoke = invoke$1;
4264
4295
  exports.isActorRef = isActorRef;
4296
+ exports.isErrorEvent = isErrorEvent;
4265
4297
  exports.isInFinalState = isInFinalState;
4266
- exports.isSCXMLErrorEvent = isSCXMLErrorEvent;
4267
4298
  exports.isSignal = isSignal;
4268
4299
  exports.isStateId = isStateId;
4269
4300
  exports.isString = isString;
4270
- exports.log = log$1;
4301
+ exports.log = log;
4271
4302
  exports.macrostep = macrostep;
4272
4303
  exports.mapValues = mapValues;
4273
4304
  exports.matchesState = matchesState;
@@ -4277,19 +4308,18 @@ exports.not = not;
4277
4308
  exports.or = or;
4278
4309
  exports.pathToStateValue = pathToStateValue;
4279
4310
  exports.pure = pure;
4280
- exports.raise = raise$1;
4311
+ exports.raise = raise;
4281
4312
  exports.resolveActionObject = resolveActionObject;
4282
4313
  exports.resolveActionsAndContext = resolveActionsAndContext;
4283
4314
  exports.resolveReferencedActor = resolveReferencedActor;
4284
4315
  exports.resolveStateValue = resolveStateValue;
4285
- exports.respond = respond;
4286
- exports.send = send$1;
4316
+ exports.send = send;
4287
4317
  exports.sendParent = sendParent;
4288
4318
  exports.sendTo = sendTo;
4289
4319
  exports.startSignal = startSignal;
4290
4320
  exports.startSignalType = startSignalType;
4291
4321
  exports.stateIn = stateIn;
4292
- exports.stop = stop$1;
4322
+ exports.stop = stop;
4293
4323
  exports.stopSignal = stopSignal;
4294
4324
  exports.stopSignalType = stopSignalType;
4295
4325
  exports.toActionObject = toActionObject;
@@ -4299,6 +4329,5 @@ exports.toArray = toArray;
4299
4329
  exports.toGuardDefinition = toGuardDefinition;
4300
4330
  exports.toInvokeConfig = toInvokeConfig;
4301
4331
  exports.toObserver = toObserver;
4302
- exports.toSCXMLEvent = toSCXMLEvent;
4303
4332
  exports.toTransitionConfigArray = toTransitionConfigArray;
4304
4333
  exports.transitionNode = transitionNode;