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
@@ -3,6 +3,38 @@
3
3
  var dev_dist_xstateDev = require('./index-ebaab3c9.cjs.dev.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('./index-ebaab3c9.cjs.dev.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];
@@ -407,22 +440,8 @@ function isFunction(value) {
407
440
  function isString(value) {
408
441
  return typeof value === 'string';
409
442
  }
410
- function isSCXMLEvent(event) {
411
- return '$$type' in event && event.$$type === 'scxml';
412
- }
413
- function isSCXMLErrorEvent(event) {
414
- return typeof event.name === 'string' && (event.name === errorExecution || event.name.startsWith(errorPlatform));
415
- }
416
- function toSCXMLEvent(event, scxmlEvent) {
417
- if (isSCXMLEvent(event)) {
418
- return event;
419
- }
420
- return _objectSpread2({
421
- name: event.type,
422
- data: event,
423
- $$type: 'scxml',
424
- type: 'external'
425
- }, scxmlEvent);
443
+ function isErrorEvent(event) {
444
+ return typeof event.type === 'string' && (event.type === errorExecution || event.type.startsWith(errorPlatform));
426
445
  }
427
446
  function toTransitionConfigArray(event, configLike) {
428
447
  var transitions = toArrayStrict(configLike).map(function (transitionLike) {
@@ -504,16 +523,16 @@ function isDynamicAction(action) {
504
523
  * - `delay` - The number of milliseconds to delay the sending of the event.
505
524
  * - `to` - The target of this event (by default, the machine the event was sent from).
506
525
  */
507
- function send$1(eventOrExpr, options) {
526
+ function send(eventOrExpr, options) {
508
527
  return createDynamicAction({
509
- type: send,
528
+ type: send$1,
510
529
  params: {
511
530
  to: options ? options.to : undefined,
512
531
  delay: options ? options.delay : undefined,
513
532
  event: eventOrExpr,
514
533
  id: options && options.id !== undefined ? options.id : isFunction(eventOrExpr) ? eventOrExpr.name : eventOrExpr.type
515
534
  }
516
- }, function (_event, _ref) {
535
+ }, function (event, _ref) {
517
536
  var _actorContext$self;
518
537
  var actorContext = _ref.actorContext,
519
538
  state = _ref.state;
@@ -527,15 +546,17 @@ function send$1(eventOrExpr, options) {
527
546
  };
528
547
  var args = {
529
548
  context: state.context,
530
- event: _event.data,
531
- _event: _event,
549
+ event: event,
532
550
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : null,
533
551
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
534
552
  };
535
553
  var delaysMap = state.machine.options.delays;
536
554
 
537
555
  // TODO: helper function for resolving Expr
538
- 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;
539
560
  var resolvedDelay;
540
561
  if (isString(params.delay)) {
541
562
  var configDelay = delaysMap && delaysMap[params.delay];
@@ -564,11 +585,10 @@ function send$1(eventOrExpr, options) {
564
585
  targetActorRef = resolvedTarget || (actorContext === null || actorContext === void 0 ? void 0 : actorContext.self);
565
586
  }
566
587
  var resolvedAction = {
567
- type: send,
588
+ type: send$1,
568
589
  params: _objectSpread2(_objectSpread2({}, params), {}, {
569
590
  to: targetActorRef,
570
- _event: resolvedEvent,
571
- event: resolvedEvent.data,
591
+ event: resolvedEvent,
572
592
  delay: resolvedDelay,
573
593
  internal: resolvedTarget === exports.SpecialTargets.Internal
574
594
  }),
@@ -579,14 +599,12 @@ function send$1(eventOrExpr, options) {
579
599
  return;
580
600
  } else {
581
601
  var target = sendAction.params.to;
582
- var _event2 = sendAction.params._event;
602
+ var sentEvent = sendAction.params.event;
583
603
  actorCtx.defer(function () {
584
- var origin = actorCtx.self;
585
- var resolvedEvent = _objectSpread2(_objectSpread2({}, _event2), {}, {
586
- name: _event2.name === error ? "".concat(error$1(origin.id)) : _event2.name,
587
- origin: origin
588
- });
589
- 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);
590
608
  });
591
609
  }
592
610
  }
@@ -602,26 +620,11 @@ function send$1(eventOrExpr, options) {
602
620
  * @param options Options to pass into the send event.
603
621
  */
604
622
  function sendParent(event, options) {
605
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
623
+ return send(event, _objectSpread2(_objectSpread2({}, options), {}, {
606
624
  to: exports.SpecialTargets.Parent
607
625
  }));
608
626
  }
609
627
 
610
- /**
611
- * Sends an event back to the sender of the original event.
612
- *
613
- * @param event The event to send back to the sender
614
- * @param options Options to pass into the send event
615
- */
616
- function respond(event, options) {
617
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
618
- to: function to(_ref2) {
619
- var _event = _ref2._event;
620
- return _event.origin; // TODO: handle when _event.origin is undefined
621
- }
622
- }));
623
- }
624
-
625
628
  /**
626
629
  * Forwards (sends) an event to a specified service.
627
630
  *
@@ -629,7 +632,7 @@ function respond(event, options) {
629
632
  * @param options Options to pass into the send action creator.
630
633
  */
631
634
  function forwardTo(target, options) {
632
- if (process.env.NODE_END !== 'production' && (!target || typeof target === 'function')) {
635
+ if (process.env.NODE_ENV !== 'production' && (!target || typeof target === 'function')) {
633
636
  var originalTarget = target;
634
637
  target = function target() {
635
638
  var resolvedTarget = typeof originalTarget === 'function' ? originalTarget.apply(void 0, arguments) : originalTarget;
@@ -639,8 +642,8 @@ function forwardTo(target, options) {
639
642
  return resolvedTarget;
640
643
  };
641
644
  }
642
- return send$1(function (_ref3) {
643
- var event = _ref3.event;
645
+ return send(function (_ref2) {
646
+ var event = _ref2.event;
644
647
  return event;
645
648
  }, _objectSpread2(_objectSpread2({}, options), {}, {
646
649
  to: target
@@ -657,7 +660,7 @@ function forwardTo(target, options) {
657
660
  function escalate(errorData, options) {
658
661
  return sendParent(function (arg) {
659
662
  return {
660
- type: error,
663
+ type: error$1,
661
664
  data: isFunction(errorData) ? errorData(arg) : errorData
662
665
  };
663
666
  }, _objectSpread2(_objectSpread2({}, options), {}, {
@@ -674,7 +677,7 @@ function escalate(errorData, options) {
674
677
  * @returns An XState send action object
675
678
  */
676
679
  function sendTo(actor, event, options) {
677
- return send$1(event, _objectSpread2(_objectSpread2({}, options), {}, {
680
+ return send(event, _objectSpread2(_objectSpread2({}, options), {}, {
678
681
  to: actor
679
682
  }));
680
683
  }
@@ -798,11 +801,9 @@ var symbolObservable = function () {
798
801
  */
799
802
  function fromTransition(_transition, initialState) {
800
803
  var behavior = {
804
+ config: _transition,
801
805
  transition: function transition(state, event, actorContext) {
802
- // @ts-ignore TODO
803
- var resolvedEvent = isSCXMLEvent(event) ? event.data : event;
804
- // @ts-ignore TODO
805
- return _transition(state, resolvedEvent, actorContext);
806
+ return _transition(state, event, actorContext);
806
807
  },
807
808
  getInitialState: function getInitialState(_, input) {
808
809
  return typeof initialState === 'function' ? initialState({
@@ -830,27 +831,29 @@ promiseCreator) {
830
831
 
831
832
  // TODO: add event types
832
833
  var behavior = {
834
+ config: promiseCreator,
833
835
  transition: function transition(state, event) {
834
- var _event = toSCXMLEvent(event);
835
- if (state.canceled) {
836
+ if (state.status !== 'active') {
836
837
  return state;
837
838
  }
838
- var eventObject = _event.data;
839
- switch (_event.name) {
839
+ switch (event.type) {
840
840
  case resolveEventType:
841
- state.status = 'done';
842
- state.data = eventObject.data;
843
- delete state.input;
844
- return state;
841
+ return _objectSpread2(_objectSpread2({}, state), {}, {
842
+ status: 'done',
843
+ data: event.data,
844
+ input: undefined
845
+ });
845
846
  case rejectEventType:
846
- state.status = 'error';
847
- state.data = eventObject.data;
848
- delete state.input;
849
- return state;
847
+ return _objectSpread2(_objectSpread2({}, state), {}, {
848
+ status: 'error',
849
+ data: event.data,
850
+ input: undefined
851
+ });
850
852
  case stopSignalType:
851
- state.canceled = true;
852
- delete state.input;
853
- return state;
853
+ return _objectSpread2(_objectSpread2({}, state), {}, {
854
+ status: 'canceled',
855
+ input: undefined
856
+ });
854
857
  default:
855
858
  return state;
856
859
  }
@@ -866,11 +869,19 @@ promiseCreator) {
866
869
  input: state.input
867
870
  }));
868
871
  resolvedPromise.then(function (response) {
872
+ // TODO: remove this condition once dead letter queue lands
873
+ if (self._state.status !== 'active') {
874
+ return;
875
+ }
869
876
  self.send({
870
877
  type: resolveEventType,
871
878
  data: response
872
879
  });
873
880
  }, function (errorData) {
881
+ // TODO: remove this condition once dead letter queue lands
882
+ if (self._state.status !== 'active') {
883
+ return;
884
+ }
874
885
  self.send({
875
886
  type: rejectEventType,
876
887
  data: errorData
@@ -879,7 +890,6 @@ promiseCreator) {
879
890
  },
880
891
  getInitialState: function getInitialState(_, input) {
881
892
  return {
882
- canceled: false,
883
893
  status: 'active',
884
894
  data: undefined,
885
895
  input: input
@@ -909,43 +919,48 @@ function fromObservable(observableCreator) {
909
919
 
910
920
  // TODO: add event types
911
921
  var behavior = {
922
+ config: observableCreator,
912
923
  transition: function transition(state, event, _ref) {
913
924
  var self = _ref.self,
914
925
  id = _ref.id,
915
926
  defer = _ref.defer;
916
- var _event = toSCXMLEvent(event);
917
- if (state.canceled) {
927
+ if (state.status !== 'active') {
918
928
  return state;
919
929
  }
920
- switch (_event.name) {
930
+ switch (event.type) {
921
931
  case nextEventType:
922
- state.data = event.data.data;
923
932
  // match the exact timing of events sent by machines
924
933
  // send actions are not executed immediately
925
934
  defer(function () {
926
935
  var _self$_parent;
927
- (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(toSCXMLEvent({
936
+ (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send({
928
937
  type: "xstate.snapshot.".concat(id),
929
- data: _event.data.data
930
- }, {
931
- origin: self
932
- }));
938
+ data: event.data
939
+ });
940
+ });
941
+ return _objectSpread2(_objectSpread2({}, state), {}, {
942
+ data: event.data
933
943
  });
934
- return state;
935
944
  case errorEventType:
936
- state.status = 'error';
937
- delete state.input;
938
- state.data = _event.data.data;
939
- return state;
945
+ return _objectSpread2(_objectSpread2({}, state), {}, {
946
+ status: 'error',
947
+ input: undefined,
948
+ data: event.data,
949
+ subscription: undefined
950
+ });
940
951
  case completeEventType:
941
- state.status = 'done';
942
- delete state.input;
943
- return state;
952
+ return _objectSpread2(_objectSpread2({}, state), {}, {
953
+ status: 'done',
954
+ input: undefined,
955
+ subscription: undefined
956
+ });
944
957
  case stopSignalType:
945
- state.canceled = true;
946
- delete state.input;
947
958
  state.subscription.unsubscribe();
948
- return state;
959
+ return _objectSpread2(_objectSpread2({}, state), {}, {
960
+ status: 'canceled',
961
+ input: undefined,
962
+ subscription: undefined
963
+ });
949
964
  default:
950
965
  return state;
951
966
  }
@@ -953,7 +968,6 @@ function fromObservable(observableCreator) {
953
968
  getInitialState: function getInitialState(_, input) {
954
969
  return {
955
970
  subscription: undefined,
956
- canceled: false,
957
971
  status: 'active',
958
972
  data: undefined,
959
973
  input: input
@@ -991,12 +1005,10 @@ function fromObservable(observableCreator) {
991
1005
  return state.data;
992
1006
  },
993
1007
  getPersistedState: function getPersistedState(_ref3) {
994
- var canceled = _ref3.canceled,
995
- status = _ref3.status,
1008
+ var status = _ref3.status,
996
1009
  data = _ref3.data,
997
1010
  input = _ref3.input;
998
1011
  return {
999
- canceled: canceled,
1000
1012
  status: status,
1001
1013
  data: data,
1002
1014
  input: input
@@ -1029,26 +1041,32 @@ function fromEventObservable(lazyObservable) {
1029
1041
 
1030
1042
  // TODO: event types
1031
1043
  var behavior = {
1044
+ config: lazyObservable,
1032
1045
  transition: function transition(state, event) {
1033
- var _event = toSCXMLEvent(event);
1034
- if (state.canceled) {
1046
+ if (state.status !== 'active') {
1035
1047
  return state;
1036
1048
  }
1037
- switch (_event.name) {
1049
+ switch (event.type) {
1038
1050
  case errorEventType:
1039
- state.status = 'error';
1040
- delete state.input;
1041
- state.data = _event.data.data;
1042
- return state;
1051
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1052
+ status: 'error',
1053
+ input: undefined,
1054
+ data: event.data,
1055
+ subscription: undefined
1056
+ });
1043
1057
  case completeEventType:
1044
- state.status = 'done';
1045
- delete state.input;
1046
- return state;
1058
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1059
+ status: 'done',
1060
+ input: undefined,
1061
+ subscription: undefined
1062
+ });
1047
1063
  case stopSignalType:
1048
- state.canceled = true;
1049
- delete state.input;
1050
1064
  state.subscription.unsubscribe();
1051
- return state;
1065
+ return _objectSpread2(_objectSpread2({}, state), {}, {
1066
+ status: 'canceled',
1067
+ input: undefined,
1068
+ subscription: undefined
1069
+ });
1052
1070
  default:
1053
1071
  return state;
1054
1072
  }
@@ -1056,7 +1074,6 @@ function fromEventObservable(lazyObservable) {
1056
1074
  getInitialState: function getInitialState() {
1057
1075
  return {
1058
1076
  subscription: undefined,
1059
- canceled: false,
1060
1077
  status: 'active',
1061
1078
  data: undefined
1062
1079
  };
@@ -1072,9 +1089,7 @@ function fromEventObservable(lazyObservable) {
1072
1089
  }).subscribe({
1073
1090
  next: function next(value) {
1074
1091
  var _self$_parent2;
1075
- (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(toSCXMLEvent(value, {
1076
- origin: self
1077
- }));
1092
+ (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(value);
1078
1093
  },
1079
1094
  error: function error(err) {
1080
1095
  self.send({
@@ -1093,12 +1108,10 @@ function fromEventObservable(lazyObservable) {
1093
1108
  return undefined;
1094
1109
  },
1095
1110
  getPersistedState: function getPersistedState(_ref5) {
1096
- var canceled = _ref5.canceled,
1097
- status = _ref5.status,
1111
+ var status = _ref5.status,
1098
1112
  data = _ref5.data,
1099
1113
  input = _ref5.input;
1100
1114
  return {
1101
- canceled: canceled,
1102
1115
  status: status,
1103
1116
  data: data,
1104
1117
  input: input
@@ -1118,6 +1131,7 @@ function fromEventObservable(lazyObservable) {
1118
1131
 
1119
1132
  function fromCallback(invokeCallback) {
1120
1133
  var behavior = {
1134
+ config: invokeCallback,
1121
1135
  start: function start(_state, _ref) {
1122
1136
  var self = _ref.self;
1123
1137
  self.send({
@@ -1127,16 +1141,13 @@ function fromCallback(invokeCallback) {
1127
1141
  transition: function transition(state, event, _ref2) {
1128
1142
  var self = _ref2.self,
1129
1143
  id = _ref2.id;
1130
- var _event = toSCXMLEvent(event);
1131
- if (_event.name === startSignalType) {
1144
+ if (event.type === startSignalType) {
1132
1145
  var sender = function sender(eventForParent) {
1133
1146
  var _self$_parent;
1134
1147
  if (state.canceled) {
1135
- return state;
1148
+ return;
1136
1149
  }
1137
- (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(toSCXMLEvent(eventForParent, {
1138
- origin: self
1139
- }));
1150
+ (_self$_parent = self._parent) === null || _self$_parent === void 0 ? void 0 : _self$_parent.send(eventForParent);
1140
1151
  };
1141
1152
  var receiver = function receiver(newListener) {
1142
1153
  state.receivers.add(newListener);
@@ -1147,36 +1158,30 @@ function fromCallback(invokeCallback) {
1147
1158
  if (isPromiseLike(state.dispose)) {
1148
1159
  state.dispose.then(function (resolved) {
1149
1160
  var _self$_parent2;
1150
- (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(toSCXMLEvent(doneInvoke(id, resolved), {
1151
- origin: self
1152
- }));
1161
+ (_self$_parent2 = self._parent) === null || _self$_parent2 === void 0 ? void 0 : _self$_parent2.send(doneInvoke(id, resolved));
1153
1162
  state.canceled = true;
1154
1163
  }, function (errorData) {
1155
1164
  var _self$_parent3;
1156
- var errorEvent = error$1(id, errorData);
1157
- (_self$_parent3 = self._parent) === null || _self$_parent3 === void 0 ? void 0 : _self$_parent3.send(toSCXMLEvent(errorEvent, {
1158
- origin: self
1159
- }));
1160
1165
  state.canceled = true;
1166
+ (_self$_parent3 = self._parent) === null || _self$_parent3 === void 0 ? void 0 : _self$_parent3.send(error(id, errorData));
1161
1167
  });
1162
1168
  }
1163
1169
  return state;
1164
1170
  }
1165
- if (_event.name === stopSignalType) {
1171
+ if (event.type === stopSignalType) {
1166
1172
  state.canceled = true;
1167
1173
  if (isFunction(state.dispose)) {
1168
1174
  state.dispose();
1169
1175
  }
1170
1176
  return state;
1171
1177
  }
1172
- if (isSignal(_event.name)) {
1178
+ if (isSignal(event.type)) {
1173
1179
  // TODO: unrecognized signal
1174
1180
  return state;
1175
1181
  }
1176
- var plainEvent = isSCXMLEvent(event) ? event.data : event;
1177
- if (!isSignal(plainEvent.type)) {
1182
+ if (!isSignal(event.type)) {
1178
1183
  state.receivers.forEach(function (receiver) {
1179
- return receiver(plainEvent);
1184
+ return receiver(event);
1180
1185
  });
1181
1186
  }
1182
1187
  return state;
@@ -1247,6 +1252,12 @@ function toActorRef(actorRefLike) {
1247
1252
  return void 0;
1248
1253
  }), _objectSpread2$1), actorRefLike);
1249
1254
  }
1255
+ var emptyBehavior = fromTransition(function (_) {
1256
+ return undefined;
1257
+ }, undefined);
1258
+ function createEmptyActor() {
1259
+ return interpret(emptyBehavior);
1260
+ }
1250
1261
 
1251
1262
  function createSystem() {
1252
1263
  var sessionIdCounter = 0;
@@ -1284,6 +1295,7 @@ function createSystem() {
1284
1295
  return system;
1285
1296
  }
1286
1297
 
1298
+ exports.ActorStatus = void 0;
1287
1299
  (function (ActorStatus) {
1288
1300
  ActorStatus[ActorStatus["NotStarted"] = 0] = "NotStarted";
1289
1301
  ActorStatus[ActorStatus["Running"] = 1] = "Running";
@@ -1439,9 +1451,9 @@ var Interpreter = /*#__PURE__*/function () {
1439
1451
  _step;
1440
1452
  try {
1441
1453
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
1442
- var _observer2$next;
1443
- var _observer2 = _step.value;
1444
- (_observer2$next = _observer2.next) === null || _observer2$next === void 0 ? void 0 : _observer2$next.call(_observer2, snapshot);
1454
+ var _observer$next;
1455
+ var _observer = _step.value;
1456
+ (_observer$next = _observer.next) === null || _observer$next === void 0 ? void 0 : _observer$next.call(_observer, snapshot);
1445
1457
  }
1446
1458
  } catch (err) {
1447
1459
  _iterator.e(err);
@@ -1451,30 +1463,15 @@ var Interpreter = /*#__PURE__*/function () {
1451
1463
  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);
1452
1464
  switch (status === null || status === void 0 ? void 0 : status.status) {
1453
1465
  case 'done':
1454
- this._doneEvent = doneInvoke(this.id, status.data);
1455
- (_this$_parent = this._parent) === null || _this$_parent === void 0 ? void 0 : _this$_parent.send(toSCXMLEvent(this._doneEvent, {
1456
- origin: this,
1457
- invokeid: this.id
1458
- }));
1459
1466
  this._stopProcedure();
1467
+ this._doneEvent = doneInvoke(this.id, status.data);
1468
+ (_this$_parent = this._parent) === null || _this$_parent === void 0 ? void 0 : _this$_parent.send(this._doneEvent);
1469
+ this._complete();
1460
1470
  break;
1461
1471
  case 'error':
1462
- (_this$_parent2 = this._parent) === null || _this$_parent2 === void 0 ? void 0 : _this$_parent2.send(toSCXMLEvent(error$1(this.id, status.data), {
1463
- origin: this
1464
- }));
1465
- var _iterator2 = _createForOfIteratorHelper(this.observers),
1466
- _step2;
1467
- try {
1468
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1469
- var _observer$error;
1470
- var _observer = _step2.value;
1471
- (_observer$error = _observer.error) === null || _observer$error === void 0 ? void 0 : _observer$error.call(_observer, status.data);
1472
- }
1473
- } catch (err) {
1474
- _iterator2.e(err);
1475
- } finally {
1476
- _iterator2.f();
1477
- }
1472
+ this._stopProcedure();
1473
+ (_this$_parent2 = this._parent) === null || _this$_parent2 === void 0 ? void 0 : _this$_parent2.send(error(this.id, status.data));
1474
+ this._error(status.data);
1478
1475
  break;
1479
1476
  }
1480
1477
  }
@@ -1553,15 +1550,16 @@ var Interpreter = /*#__PURE__*/function () {
1553
1550
  try {
1554
1551
  var nextState = this.behavior.transition(this._state, event, this._actorContext);
1555
1552
  this.update(nextState);
1556
- if (event.name === stopSignalType) {
1553
+ if (event.type === stopSignalType) {
1557
1554
  this._stopProcedure();
1555
+ this._complete();
1558
1556
  }
1559
1557
  } catch (err) {
1560
1558
  // TODO: properly handle errors
1561
1559
  if (this.observers.size > 0) {
1562
1560
  this.observers.forEach(function (observer) {
1563
- var _observer$error2;
1564
- (_observer$error2 = observer.error) === null || _observer$error2 === void 0 ? void 0 : _observer$error2.call(observer, err);
1561
+ var _observer$error;
1562
+ (_observer$error = observer.error) === null || _observer$error === void 0 ? void 0 : _observer$error.call(observer, err);
1565
1563
  });
1566
1564
  this.stop();
1567
1565
  } else {
@@ -1580,9 +1578,9 @@ var Interpreter = /*#__PURE__*/function () {
1580
1578
  this.status = exports.ActorStatus.Stopped;
1581
1579
  return this;
1582
1580
  }
1583
- this.mailbox.enqueue(toSCXMLEvent({
1581
+ this.mailbox.enqueue({
1584
1582
  type: stopSignalType
1585
- }));
1583
+ });
1586
1584
  return this;
1587
1585
  }
1588
1586
 
@@ -1600,13 +1598,31 @@ var Interpreter = /*#__PURE__*/function () {
1600
1598
  }, {
1601
1599
  key: "_complete",
1602
1600
  value: function _complete() {
1601
+ var _iterator2 = _createForOfIteratorHelper(this.observers),
1602
+ _step2;
1603
+ try {
1604
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1605
+ var _observer2$complete;
1606
+ var _observer2 = _step2.value;
1607
+ (_observer2$complete = _observer2.complete) === null || _observer2$complete === void 0 ? void 0 : _observer2$complete.call(_observer2);
1608
+ }
1609
+ } catch (err) {
1610
+ _iterator2.e(err);
1611
+ } finally {
1612
+ _iterator2.f();
1613
+ }
1614
+ this.observers.clear();
1615
+ }
1616
+ }, {
1617
+ key: "_error",
1618
+ value: function _error(data) {
1603
1619
  var _iterator3 = _createForOfIteratorHelper(this.observers),
1604
1620
  _step3;
1605
1621
  try {
1606
1622
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1607
- var _observer3$complete;
1623
+ var _observer3$error;
1608
1624
  var _observer3 = _step3.value;
1609
- (_observer3$complete = _observer3.complete) === null || _observer3$complete === void 0 ? void 0 : _observer3$complete.call(_observer3);
1625
+ (_observer3$error = _observer3.error) === null || _observer3$error === void 0 ? void 0 : _observer3$error.call(_observer3, data);
1610
1626
  }
1611
1627
  } catch (err) {
1612
1628
  _iterator3.e(err);
@@ -1618,7 +1634,6 @@ var Interpreter = /*#__PURE__*/function () {
1618
1634
  }, {
1619
1635
  key: "_stopProcedure",
1620
1636
  value: function _stopProcedure() {
1621
- this._complete();
1622
1637
  if (this.status !== exports.ActorStatus.Running) {
1623
1638
  // Interpreter already stopped; do nothing
1624
1639
  return this;
@@ -1650,21 +1665,23 @@ var Interpreter = /*#__PURE__*/function () {
1650
1665
  }, {
1651
1666
  key: "send",
1652
1667
  value: function send(event) {
1653
- var _event = toSCXMLEvent(event);
1668
+ if (typeof event === 'string') {
1669
+ throw new Error("Only event objects may be sent to actors; use .send({ type: \"".concat(event, "\" }) instead"));
1670
+ }
1654
1671
  if (this.status === exports.ActorStatus.Stopped) {
1655
1672
  // do nothing
1656
1673
  if (!dev_dist_xstateDev.IS_PRODUCTION) {
1657
- var eventString = JSON.stringify(_event.data);
1658
- warn(false, "Event \"".concat(_event.name.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));
1674
+ var eventString = JSON.stringify(event);
1675
+ 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));
1659
1676
  }
1660
1677
  return;
1661
1678
  }
1662
1679
  if (this.status !== exports.ActorStatus.Running && !this.options.deferEvents) {
1663
- throw new Error("Event \"".concat(_event.name, "\" was sent to uninitialized actor \"").concat(this.id
1680
+ throw new Error("Event \"".concat(event.type, "\" was sent to uninitialized actor \"").concat(this.id
1664
1681
  // tslint:disable-next-line:max-line-length
1665
- , "\". Make sure .start() is called for this actor, or set { deferEvents: true } in the actor options.\nEvent: ").concat(JSON.stringify(_event.data)));
1682
+ , "\". Make sure .start() is called for this actor, or set { deferEvents: true } in the actor options.\nEvent: ").concat(JSON.stringify(event)));
1666
1683
  }
1667
- this.mailbox.enqueue(_event);
1684
+ this.mailbox.enqueue(event);
1668
1685
  }
1669
1686
 
1670
1687
  // TODO: make private (and figure out a way to do this within the machine)
@@ -1674,9 +1691,9 @@ var Interpreter = /*#__PURE__*/function () {
1674
1691
  var _this4 = this;
1675
1692
  this.delayedEventsMap[sendAction.params.id] = this.clock.setTimeout(function () {
1676
1693
  if ('to' in sendAction.params && sendAction.params.to) {
1677
- sendAction.params.to.send(sendAction.params._event);
1694
+ sendAction.params.to.send(sendAction.params.event);
1678
1695
  } else {
1679
- _this4.send(sendAction.params._event);
1696
+ _this4.send(sendAction.params.event);
1680
1697
  }
1681
1698
  }, sendAction.params.delay);
1682
1699
  }
@@ -1742,18 +1759,18 @@ function interpret(behavior, options) {
1742
1759
  * @param actorRef The actor to stop.
1743
1760
  */
1744
1761
 
1745
- function stop$1(actorRef) {
1762
+ function stop(actorRef) {
1746
1763
  var actor = actorRef;
1747
1764
  return createDynamicAction({
1748
- type: stop,
1765
+ type: stop$1,
1749
1766
  params: {
1750
1767
  actor: actor
1751
1768
  }
1752
- }, function (_event, _ref) {
1769
+ }, function (event, _ref) {
1753
1770
  var state = _ref.state;
1754
1771
  var actorRefOrString = isFunction(actor) ? actor({
1755
1772
  context: state.context,
1756
- event: _event.data
1773
+ event: event
1757
1774
  }) : actor;
1758
1775
  var actorRef = typeof actorRefOrString === 'string' ? state.children[actorRefOrString] : actorRefOrString;
1759
1776
  return [state, {
@@ -1795,23 +1812,22 @@ var defaultLogExpr = function defaultLogExpr(_ref) {
1795
1812
  * @param label The label to give to the logged expression.
1796
1813
  */
1797
1814
 
1798
- function log$1() {
1815
+ function log() {
1799
1816
  var expr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultLogExpr;
1800
1817
  var label = arguments.length > 1 ? arguments[1] : undefined;
1801
1818
  return createDynamicAction({
1802
- type: log,
1819
+ type: log$1,
1803
1820
  params: {
1804
1821
  label: label,
1805
1822
  expr: expr
1806
1823
  }
1807
- }, function (_event, _ref2) {
1824
+ }, function (event, _ref2) {
1808
1825
  var _actorContext$self;
1809
1826
  var state = _ref2.state,
1810
1827
  actorContext = _ref2.actorContext;
1811
1828
  var resolvedValue = typeof expr === 'function' ? expr({
1812
1829
  context: state.context,
1813
- event: _event.data,
1814
- _event: _event,
1830
+ event: event,
1815
1831
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
1816
1832
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
1817
1833
  }) : expr;
@@ -1842,20 +1858,19 @@ function log$1() {
1842
1858
  * @param sendId The `id` of the `send(...)` action to cancel.
1843
1859
  */
1844
1860
 
1845
- function cancel$1(sendId) {
1861
+ function cancel(sendId) {
1846
1862
  return createDynamicAction({
1847
- type: cancel,
1863
+ type: cancel$1,
1848
1864
  params: {
1849
1865
  sendId: sendId
1850
1866
  }
1851
- }, function (_event, _ref) {
1867
+ }, function (event, _ref) {
1852
1868
  var _actorContext$self;
1853
1869
  var state = _ref.state,
1854
1870
  actorContext = _ref.actorContext;
1855
1871
  var resolvedSendId = isFunction(sendId) ? sendId({
1856
1872
  context: state.context,
1857
- event: _event.data,
1858
- _event: _event,
1873
+ event: event,
1859
1874
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
1860
1875
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
1861
1876
  }) : sendId;
@@ -1941,9 +1956,9 @@ function not(guard) {
1941
1956
  var evaluate = _ref2.evaluate,
1942
1957
  guard = _ref2.guard,
1943
1958
  context = _ref2.context,
1944
- _event = _ref2._event,
1959
+ event = _ref2.event,
1945
1960
  state = _ref2.state;
1946
- return !evaluate(guard.children[0], context, _event, state);
1961
+ return !evaluate(guard.children[0], context, event, state);
1947
1962
  }
1948
1963
  };
1949
1964
  }
@@ -1960,10 +1975,10 @@ function and(guards) {
1960
1975
  var evaluate = _ref3.evaluate,
1961
1976
  guard = _ref3.guard,
1962
1977
  context = _ref3.context,
1963
- _event = _ref3._event,
1978
+ event = _ref3.event,
1964
1979
  state = _ref3.state;
1965
1980
  return guard.children.every(function (childGuard) {
1966
- return evaluate(childGuard, context, _event, state);
1981
+ return evaluate(childGuard, context, event, state);
1967
1982
  });
1968
1983
  }
1969
1984
  };
@@ -1981,15 +1996,15 @@ function or(guards) {
1981
1996
  var evaluate = _ref4.evaluate,
1982
1997
  guard = _ref4.guard,
1983
1998
  context = _ref4.context,
1984
- _event = _ref4._event,
1999
+ event = _ref4.event,
1985
2000
  state = _ref4.state;
1986
2001
  return guard.children.some(function (childGuard) {
1987
- return evaluate(childGuard, context, _event, state);
2002
+ return evaluate(childGuard, context, event, state);
1988
2003
  });
1989
2004
  }
1990
2005
  };
1991
2006
  }
1992
- function evaluateGuard(guard, context, _event, state) {
2007
+ function evaluateGuard(guard, context, event, state) {
1993
2008
  var _machine$options$guar, _machine$options, _machine$options$guar2;
1994
2009
  var machine = state.machine;
1995
2010
  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;
@@ -1998,10 +2013,9 @@ function evaluateGuard(guard, context, _event, state) {
1998
2013
  }
1999
2014
  return predicate({
2000
2015
  context: context,
2001
- event: _event.data,
2016
+ event: event,
2002
2017
  state: state,
2003
2018
  guard: guard,
2004
- _event: _event,
2005
2019
  evaluate: evaluateGuard
2006
2020
  });
2007
2021
  }
@@ -2036,12 +2050,12 @@ function toGuardDefinition(guardConfig, getPredicate) {
2036
2050
  };
2037
2051
  }
2038
2052
 
2039
- function getOutput(configuration, context, _event) {
2053
+ function getOutput(configuration, context, event) {
2040
2054
  var machine = configuration[0].machine;
2041
2055
  var finalChildStateNode = configuration.find(function (stateNode) {
2042
2056
  return stateNode.type === 'final' && stateNode.parent === machine.root;
2043
2057
  });
2044
- return finalChildStateNode && finalChildStateNode.output ? mapContext(finalChildStateNode.output, context, _event) : undefined;
2058
+ return finalChildStateNode && finalChildStateNode.output ? mapContext(finalChildStateNode.output, context, event) : undefined;
2045
2059
  }
2046
2060
  var isAtomicStateNode = function isAtomicStateNode(stateNode) {
2047
2061
  return stateNode.type === 'atomic' || stateNode.type === 'final';
@@ -2205,7 +2219,6 @@ var isStateId = function isStateId(str) {
2205
2219
  return str[0] === STATE_IDENTIFIER;
2206
2220
  };
2207
2221
  function getCandidates(stateNode, receivedEventType) {
2208
- var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2209
2222
  var candidates = stateNode.transitions.filter(function (transition) {
2210
2223
  var eventType = transition.eventType;
2211
2224
  // First, check the trivial case: event names are exactly equal
@@ -2218,7 +2231,7 @@ function getCandidates(stateNode, receivedEventType) {
2218
2231
  if (eventType === WILDCARD) {
2219
2232
  return true;
2220
2233
  }
2221
- if (!partialMatch && !eventType.endsWith('.*')) {
2234
+ if (!eventType.endsWith('.*')) {
2222
2235
  return false;
2223
2236
  }
2224
2237
  if (!dev_dist_xstateDev.IS_PRODUCTION) {
@@ -2255,13 +2268,13 @@ function getDelayedTransitions(stateNode) {
2255
2268
  }
2256
2269
  var mutateEntryExit = function mutateEntryExit(delay, i) {
2257
2270
  var delayRef = isFunction(delay) ? "".concat(stateNode.id, ":delay[").concat(i, "]") : delay;
2258
- var eventType = after$1(delayRef, stateNode.id);
2259
- stateNode.entry.push(send$1({
2271
+ var eventType = after(delayRef, stateNode.id);
2272
+ stateNode.entry.push(raise({
2260
2273
  type: eventType
2261
2274
  }, {
2262
2275
  delay: delay
2263
2276
  }));
2264
- stateNode.exit.push(cancel$1(eventType));
2277
+ stateNode.exit.push(cancel(eventType));
2265
2278
  return eventType;
2266
2279
  };
2267
2280
  var delayedTransitions = isArray(afterConfig) ? afterConfig.map(function (transition, i) {
@@ -2291,9 +2304,9 @@ function getDelayedTransitions(stateNode) {
2291
2304
  });
2292
2305
  }
2293
2306
  function formatTransition(stateNode, transitionConfig) {
2294
- var _transitionConfig$ext;
2307
+ var _transitionConfig$ree;
2295
2308
  var normalizedTarget = normalizeTarget(transitionConfig.target);
2296
- var external = (_transitionConfig$ext = transitionConfig.external) !== null && _transitionConfig$ext !== void 0 ? _transitionConfig$ext : false;
2309
+ var reenter = (_transitionConfig$ree = transitionConfig.reenter) !== null && _transitionConfig$ree !== void 0 ? _transitionConfig$ree : false;
2297
2310
  var guards = stateNode.machine.options.guards;
2298
2311
  var target = resolveTarget(stateNode, normalizedTarget);
2299
2312
 
@@ -2308,7 +2321,7 @@ function formatTransition(stateNode, transitionConfig) {
2308
2321
  }) : undefined,
2309
2322
  target: target,
2310
2323
  source: stateNode,
2311
- external: external,
2324
+ reenter: reenter,
2312
2325
  eventType: transitionConfig.event,
2313
2326
  toJSON: function toJSON() {
2314
2327
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2395,7 +2408,7 @@ function formatInitialTransition(stateNode, _target) {
2395
2408
  source: stateNode,
2396
2409
  actions: [],
2397
2410
  eventType: null,
2398
- external: false,
2411
+ reenter: false,
2399
2412
  target: resolvedTarget,
2400
2413
  toJSON: function toJSON() {
2401
2414
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2578,24 +2591,24 @@ function getStateNodes(stateNode, state) {
2578
2591
  return allSubStateNodes.concat(subStateNodes);
2579
2592
  }, []));
2580
2593
  }
2581
- function transitionAtomicNode(stateNode, stateValue, state, _event) {
2594
+ function transitionAtomicNode(stateNode, stateValue, state, event) {
2582
2595
  var childStateNode = getStateNode(stateNode, stateValue);
2583
- var next = childStateNode.next(state, _event);
2596
+ var next = childStateNode.next(state, event);
2584
2597
  if (!next || !next.length) {
2585
- return stateNode.next(state, _event);
2598
+ return stateNode.next(state, event);
2586
2599
  }
2587
2600
  return next;
2588
2601
  }
2589
- function transitionCompoundNode(stateNode, stateValue, state, _event) {
2602
+ function transitionCompoundNode(stateNode, stateValue, state, event) {
2590
2603
  var subStateKeys = Object.keys(stateValue);
2591
2604
  var childStateNode = getStateNode(stateNode, subStateKeys[0]);
2592
- var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, _event);
2605
+ var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, event);
2593
2606
  if (!next || !next.length) {
2594
- return stateNode.next(state, _event);
2607
+ return stateNode.next(state, event);
2595
2608
  }
2596
2609
  return next;
2597
2610
  }
2598
- function transitionParallelNode(stateNode, stateValue, state, _event) {
2611
+ function transitionParallelNode(stateNode, stateValue, state, event) {
2599
2612
  var allInnerTransitions = [];
2600
2613
  for (var _i3 = 0, _Object$keys2 = Object.keys(stateValue); _i3 < _Object$keys2.length; _i3++) {
2601
2614
  var subStateKey = _Object$keys2[_i3];
@@ -2604,29 +2617,29 @@ function transitionParallelNode(stateNode, stateValue, state, _event) {
2604
2617
  continue;
2605
2618
  }
2606
2619
  var subStateNode = getStateNode(stateNode, subStateKey);
2607
- var innerTransitions = transitionNode(subStateNode, subStateValue, state, _event);
2620
+ var innerTransitions = transitionNode(subStateNode, subStateValue, state, event);
2608
2621
  if (innerTransitions) {
2609
2622
  allInnerTransitions.push.apply(allInnerTransitions, _toConsumableArray(innerTransitions));
2610
2623
  }
2611
2624
  }
2612
2625
  if (!allInnerTransitions.length) {
2613
- return stateNode.next(state, _event);
2626
+ return stateNode.next(state, event);
2614
2627
  }
2615
2628
  return allInnerTransitions;
2616
2629
  }
2617
- function transitionNode(stateNode, stateValue, state, _event) {
2630
+ function transitionNode(stateNode, stateValue, state, event) {
2618
2631
  // leaf node
2619
2632
  if (isString(stateValue)) {
2620
- return transitionAtomicNode(stateNode, stateValue, state, _event);
2633
+ return transitionAtomicNode(stateNode, stateValue, state, event);
2621
2634
  }
2622
2635
 
2623
2636
  // compound node
2624
2637
  if (Object.keys(stateValue).length === 1) {
2625
- return transitionCompoundNode(stateNode, stateValue, state, _event);
2638
+ return transitionCompoundNode(stateNode, stateValue, state, event);
2626
2639
  }
2627
2640
 
2628
2641
  // parallel node
2629
- return transitionParallelNode(stateNode, stateValue, state, _event);
2642
+ return transitionParallelNode(stateNode, stateValue, state, event);
2630
2643
  }
2631
2644
  function getHistoryNodes(stateNode) {
2632
2645
  return Object.keys(stateNode.states).map(function (key) {
@@ -2818,7 +2831,7 @@ function getTransitionDomain(transition, historyValue) {
2818
2831
  if (!targetStates) {
2819
2832
  return null;
2820
2833
  }
2821
- if (!transition.external && transition.source.type === 'compound' && targetStates.every(function (targetStateNode) {
2834
+ if (!transition.reenter && transition.source.type !== 'parallel' && targetStates.every(function (targetStateNode) {
2822
2835
  return isDescendant(targetStateNode, transition.source);
2823
2836
  })) {
2824
2837
  return transition.source;
@@ -2869,7 +2882,7 @@ function computeExitSet(transitions, configuration, historyValue) {
2869
2882
  * @param mutConfiguration
2870
2883
  */
2871
2884
 
2872
- function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2885
+ function microstep(transitions, currentState, actorCtx, event) {
2873
2886
  var machine = currentState.machine;
2874
2887
  // Transition will "apply" if:
2875
2888
  // - the state node is the initial state (there is no current state)
@@ -2878,7 +2891,7 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2878
2891
  var mutConfiguration = new Set(currentState.configuration);
2879
2892
  if (!currentState._initial && !willTransition) {
2880
2893
  var inertState = cloneState(currentState, {
2881
- _event: scxmlEvent,
2894
+ event: event,
2882
2895
  actions: [],
2883
2896
  transitions: []
2884
2897
  });
@@ -2888,11 +2901,11 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2888
2901
  var microstate = microstepProcedure(currentState._initial ? [{
2889
2902
  target: _toConsumableArray(currentState.configuration).filter(isAtomicStateNode),
2890
2903
  source: machine.root,
2891
- external: true,
2904
+ reenter: true,
2892
2905
  actions: [],
2893
2906
  eventType: null,
2894
2907
  toJSON: null // TODO: fix
2895
- }] : transitions, currentState, mutConfiguration, scxmlEvent, actorCtx);
2908
+ }] : transitions, currentState, mutConfiguration, event, actorCtx);
2896
2909
  var context = microstate.context,
2897
2910
  nonRaisedActions = microstate.actions;
2898
2911
  var children = setChildren(currentState, nonRaisedActions);
@@ -2912,12 +2925,12 @@ function setChildren(currentState, nonRaisedActions) {
2912
2925
  try {
2913
2926
  for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
2914
2927
  var action = _step21.value;
2915
- if (action.type === invoke && action.params.ref) {
2928
+ if (action.type === invoke$1 && action.params.ref) {
2916
2929
  var ref = action.params.ref;
2917
2930
  if (ref) {
2918
2931
  children[ref.id] = ref;
2919
2932
  }
2920
- } else if (action.type === stop) {
2933
+ } else if (action.type === stop$1) {
2921
2934
  var _ref = action.params.actor;
2922
2935
  if (_ref) {
2923
2936
  delete children[_ref.id];
@@ -2931,8 +2944,7 @@ function setChildren(currentState, nonRaisedActions) {
2931
2944
  }
2932
2945
  return children;
2933
2946
  }
2934
- function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEvent, actorCtx) {
2935
- var machine = currentState.machine;
2947
+ function microstepProcedure(transitions, currentState, mutConfiguration, event, actorCtx) {
2936
2948
  var actions = [];
2937
2949
  var historyValue = _objectSpread2({}, currentState.historyValue);
2938
2950
  var filteredTransitions = removeConflictingTransitions(transitions, mutConfiguration, historyValue);
@@ -2961,9 +2973,9 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2961
2973
  actions.push.apply(actions, _toConsumableArray(finalActions));
2962
2974
  }
2963
2975
  try {
2964
- var _resolveActionsAndCon = resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx),
2976
+ var _resolveActionsAndCon = resolveActionsAndContext(actions, event, currentState, actorCtx),
2965
2977
  nextState = _resolveActionsAndCon.nextState;
2966
- var output = done ? getOutput(nextConfiguration, nextState.context, scxmlEvent) : undefined;
2978
+ var output = done ? getOutput(nextConfiguration, nextState.context, event) : undefined;
2967
2979
  internalQueue.push.apply(internalQueue, _toConsumableArray(nextState._internalQueue));
2968
2980
  return cloneState(currentState, {
2969
2981
  actions: nextState.actions,
@@ -2971,7 +2983,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2971
2983
  historyValue: historyValue,
2972
2984
  _internalQueue: internalQueue,
2973
2985
  context: nextState.context,
2974
- _event: scxmlEvent,
2986
+ event: event,
2975
2987
  done: done,
2976
2988
  output: output,
2977
2989
  children: nextState.children
@@ -2979,19 +2991,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2979
2991
  } catch (e) {
2980
2992
  // TODO: Refactor this once proper error handling is implemented.
2981
2993
  // See https://github.com/statelyai/rfcs/pull/4
2982
- if (machine.config.scxml) {
2983
- return cloneState(currentState, {
2984
- actions: [],
2985
- configuration: Array.from(mutConfiguration),
2986
- historyValue: historyValue,
2987
- _internalQueue: [toSCXMLEvent({
2988
- type: 'error.execution'
2989
- })],
2990
- context: currentState.context
2991
- });
2992
- } else {
2993
- throw e;
2994
- }
2994
+ throw e;
2995
2995
  }
2996
2996
  }
2997
2997
  function enterStates(filteredTransitions, mutConfiguration, actions, internalQueue, currentState, historyValue) {
@@ -3016,7 +3016,7 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
3016
3016
  try {
3017
3017
  for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
3018
3018
  var invokeDef = _step23.value;
3019
- actions.push(invoke$1(invokeDef));
3019
+ actions.push(invoke(invokeDef));
3020
3020
  }
3021
3021
 
3022
3022
  // Add entry actions
@@ -3046,14 +3046,14 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
3046
3046
  if (!parent.parent) {
3047
3047
  continue;
3048
3048
  }
3049
- internalQueue.push(toSCXMLEvent(done(parent.id, stateNodeToEnter.output ? mapContext(stateNodeToEnter.output, currentState.context, currentState._event) : undefined)));
3049
+ internalQueue.push(done(parent.id, stateNodeToEnter.output ? mapContext(stateNodeToEnter.output, currentState.context, currentState.event) : undefined));
3050
3050
  if (parent.parent) {
3051
3051
  var grandparent = parent.parent;
3052
3052
  if (grandparent.type === 'parallel') {
3053
3053
  if (getChildren(grandparent).every(function (parentNode) {
3054
3054
  return isInFinalState(_toConsumableArray(mutConfiguration), parentNode);
3055
3055
  })) {
3056
- internalQueue.push(toSCXMLEvent(done(grandparent.id)));
3056
+ internalQueue.push(done(grandparent.id));
3057
3057
  }
3058
3058
  }
3059
3059
  }
@@ -3326,7 +3326,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3326
3326
  for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
3327
3327
  var s = _step40.value;
3328
3328
  actions.push.apply(actions, _toConsumableArray(s.exit.flat()).concat(_toConsumableArray(s.invoke.map(function (def) {
3329
- return stop$1(def.id);
3329
+ return stop(def.id);
3330
3330
  }))));
3331
3331
  mutConfiguration["delete"](s);
3332
3332
  }
@@ -3336,7 +3336,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3336
3336
  _iterator40.f();
3337
3337
  }
3338
3338
  }
3339
- function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3339
+ function resolveActionsAndContext(actions, event, currentState, actorCtx) {
3340
3340
  var machine = currentState.machine;
3341
3341
  var resolvedActions = [];
3342
3342
  var raiseActions = [];
@@ -3354,7 +3354,7 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3354
3354
  var executableActionObject = resolveActionObject(actionObject, machine.options.actions);
3355
3355
  if (isDynamicAction(executableActionObject)) {
3356
3356
  var _resolvedAction$param;
3357
- var _executableActionObje = executableActionObject.resolve(scxmlEvent, {
3357
+ var _executableActionObje = executableActionObject.resolve(event, {
3358
3358
  state: intermediateState,
3359
3359
  action: actionObject,
3360
3360
  actorContext: actorCtx
@@ -3364,12 +3364,12 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3364
3364
  resolvedAction = _executableActionObje2[1];
3365
3365
  var matchedActions = (_resolvedAction$param = resolvedAction.params) === null || _resolvedAction$param === void 0 ? void 0 : _resolvedAction$param.actions;
3366
3366
  intermediateState = nextState;
3367
- if ((resolvedAction.type === raise || resolvedAction.type === send && resolvedAction.params.internal) && typeof resolvedAction.params.delay !== 'number') {
3367
+ if ((resolvedAction.type === raise$1 || resolvedAction.type === send$1 && resolvedAction.params.internal) && typeof resolvedAction.params.delay !== 'number') {
3368
3368
  raiseActions.push(resolvedAction);
3369
3369
  }
3370
3370
 
3371
3371
  // TODO: remove the check; just handleAction
3372
- if (resolvedAction.type !== pure) {
3372
+ if (resolvedAction.type !== pure$1) {
3373
3373
  handleAction(resolvedAction);
3374
3374
  }
3375
3375
  toActionObjects(matchedActions).forEach(resolveAction);
@@ -3393,21 +3393,21 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3393
3393
  nextState: cloneState(intermediateState, {
3394
3394
  actions: resolvedActions,
3395
3395
  _internalQueue: raiseActions.map(function (a) {
3396
- return a.params._event;
3396
+ return a.params.event;
3397
3397
  })
3398
3398
  })
3399
3399
  };
3400
3400
  }
3401
- function macrostep(state, scxmlEvent, actorCtx) {
3402
- if (!dev_dist_xstateDev.IS_PRODUCTION && scxmlEvent.name === WILDCARD) {
3401
+ function macrostep(state, event, actorCtx) {
3402
+ if (!dev_dist_xstateDev.IS_PRODUCTION && event.type === WILDCARD) {
3403
3403
  throw new Error("An event cannot have the wildcard type ('".concat(WILDCARD, "')"));
3404
3404
  }
3405
3405
  var nextState = state;
3406
3406
  var states = [];
3407
3407
 
3408
3408
  // Handle stop event
3409
- if ((scxmlEvent === null || scxmlEvent === void 0 ? void 0 : scxmlEvent.name) === stopSignalType) {
3410
- nextState = stopStep(scxmlEvent, nextState, actorCtx);
3409
+ if (event.type === stopSignalType) {
3410
+ nextState = stopStep(event, nextState, actorCtx);
3411
3411
  states.push(nextState);
3412
3412
  return {
3413
3413
  state: nextState,
@@ -3417,9 +3417,9 @@ function macrostep(state, scxmlEvent, actorCtx) {
3417
3417
 
3418
3418
  // Assume the state is at rest (no raised events)
3419
3419
  // Determine the next state based on the next microstep
3420
- if (scxmlEvent.name !== init) {
3421
- var transitions = selectTransitions(scxmlEvent, nextState);
3422
- nextState = microstep(transitions, state, actorCtx, scxmlEvent);
3420
+ if (event.type !== init) {
3421
+ var transitions = selectTransitions(event, nextState);
3422
+ nextState = microstep(transitions, state, actorCtx, event);
3423
3423
  states.push(nextState);
3424
3424
  }
3425
3425
  while (!nextState.done) {
@@ -3451,21 +3451,21 @@ function macrostep(state, scxmlEvent, actorCtx) {
3451
3451
  if (enabledTransitions.length) {
3452
3452
  var _nextState$actions2;
3453
3453
  var _currentActions = nextState.actions;
3454
- nextState = microstep(enabledTransitions, nextState, actorCtx, nextState._event);
3454
+ nextState = microstep(enabledTransitions, nextState, actorCtx, nextState.event);
3455
3455
  (_nextState$actions2 = nextState.actions).unshift.apply(_nextState$actions2, _toConsumableArray(_currentActions));
3456
3456
  states.push(nextState);
3457
3457
  }
3458
3458
  }
3459
3459
  if (nextState.done) {
3460
3460
  // Perform the stop step to ensure that child actors are stopped
3461
- stopStep(nextState._event, nextState, actorCtx);
3461
+ stopStep(nextState.event, nextState, actorCtx);
3462
3462
  }
3463
3463
  return {
3464
3464
  state: nextState,
3465
3465
  microstates: states
3466
3466
  };
3467
3467
  }
3468
- function stopStep(scxmlEvent, nextState, actorCtx) {
3468
+ function stopStep(event, nextState, actorCtx) {
3469
3469
  var actions = [];
3470
3470
  var _iterator43 = _createForOfIteratorHelper(nextState.configuration.sort(function (a, b) {
3471
3471
  return b.order - a.order;
@@ -3483,14 +3483,14 @@ function stopStep(scxmlEvent, nextState, actorCtx) {
3483
3483
  }
3484
3484
  for (var _i4 = 0, _Object$values = Object.values(nextState.children); _i4 < _Object$values.length; _i4++) {
3485
3485
  var child = _Object$values[_i4];
3486
- actions.push(stop$1(child));
3486
+ actions.push(stop(child));
3487
3487
  }
3488
- var _resolveActionsAndCon2 = resolveActionsAndContext(actions, scxmlEvent, nextState, actorCtx),
3488
+ var _resolveActionsAndCon2 = resolveActionsAndContext(actions, event, nextState, actorCtx),
3489
3489
  stoppedState = _resolveActionsAndCon2.nextState;
3490
3490
  return stoppedState;
3491
3491
  }
3492
- function selectTransitions(scxmlEvent, nextState) {
3493
- return nextState.machine.getTransitionData(nextState, scxmlEvent);
3492
+ function selectTransitions(event, nextState) {
3493
+ return nextState.machine.getTransitionData(nextState, event);
3494
3494
  }
3495
3495
  function selectEventlessTransitions(nextState) {
3496
3496
  var enabledTransitionSet = new Set();
@@ -3513,7 +3513,7 @@ function selectEventlessTransitions(nextState) {
3513
3513
  try {
3514
3514
  for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
3515
3515
  var transition = _step46.value;
3516
- if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, nextState._event, nextState)) {
3516
+ if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, nextState.event, nextState)) {
3517
3517
  enabledTransitionSet.add(transition);
3518
3518
  break loop;
3519
3519
  }
@@ -3607,16 +3607,14 @@ var State = /*#__PURE__*/function () {
3607
3607
  _defineProperty(this, "actions", []);
3608
3608
  _defineProperty(this, "event", void 0);
3609
3609
  _defineProperty(this, "_internalQueue", void 0);
3610
- _defineProperty(this, "_event", void 0);
3611
3610
  _defineProperty(this, "_initial", false);
3612
3611
  _defineProperty(this, "changed", void 0);
3613
3612
  _defineProperty(this, "configuration", void 0);
3614
3613
  _defineProperty(this, "transitions", void 0);
3615
3614
  _defineProperty(this, "children", void 0);
3616
3615
  this.context = config.context;
3617
- this._event = config._event;
3618
3616
  this._internalQueue = (_config$_internalQueu = config._internalQueue) !== null && _config$_internalQueu !== void 0 ? _config$_internalQueu : [];
3619
- this.event = this._event.data;
3617
+ this.event = config.event;
3620
3618
  this.historyValue = config.historyValue || {};
3621
3619
  this.actions = (_config$actions = config.actions) !== null && _config$actions !== void 0 ? _config$actions : [];
3622
3620
  this.matches = this.matches.bind(this);
@@ -3656,11 +3654,11 @@ var State = /*#__PURE__*/function () {
3656
3654
  }, {
3657
3655
  key: "toJSON",
3658
3656
  value: function toJSON() {
3659
- var configuration = this.configuration,
3660
- transitions = this.transitions,
3661
- tags = this.tags,
3662
- machine = this.machine,
3663
- jsonValues = _objectWithoutProperties(this, _excluded);
3657
+ this.configuration;
3658
+ this.transitions;
3659
+ var tags = this.tags;
3660
+ this.machine;
3661
+ var jsonValues = _objectWithoutProperties(this, _excluded);
3664
3662
  return _objectSpread2(_objectSpread2({}, jsonValues), {}, {
3665
3663
  tags: Array.from(tags),
3666
3664
  meta: this.meta
@@ -3701,7 +3699,7 @@ var State = /*#__PURE__*/function () {
3701
3699
  if (dev_dist_xstateDev.IS_PRODUCTION) {
3702
3700
  warn(!!this.machine, "state.can(...) used outside of a machine-created State object; this will always return false.");
3703
3701
  }
3704
- var transitionData = this.machine.getTransitionData(this, toSCXMLEvent(event));
3702
+ var transitionData = this.machine.getTransitionData(this, event);
3705
3703
  return !!(transitionData !== null && transitionData !== void 0 && transitionData.length) &&
3706
3704
  // Check that at least one transition is not forbidden
3707
3705
  transitionData.some(function (t) {
@@ -3778,7 +3776,7 @@ var State = /*#__PURE__*/function () {
3778
3776
  return new State({
3779
3777
  value: stateValue.value,
3780
3778
  context: context,
3781
- _event: stateValue._event,
3779
+ event: stateValue.event,
3782
3780
  actions: [],
3783
3781
  meta: {},
3784
3782
  configuration: [],
@@ -3789,13 +3787,13 @@ var State = /*#__PURE__*/function () {
3789
3787
  }
3790
3788
  return stateValue;
3791
3789
  }
3792
- var _event = createInitEvent({}); // TODO: fix
3790
+ var event = createInitEvent({}); // TODO: fix
3793
3791
 
3794
3792
  var configuration = getConfiguration(getStateNodes(machine.root, stateValue));
3795
3793
  return new State({
3796
3794
  value: stateValue,
3797
3795
  context: context,
3798
- _event: _event,
3796
+ event: event,
3799
3797
  actions: [],
3800
3798
  meta: undefined,
3801
3799
  configuration: Array.from(configuration),
@@ -3811,11 +3809,11 @@ function cloneState(state) {
3811
3809
  return new State(_objectSpread2(_objectSpread2({}, state), config), state.machine);
3812
3810
  }
3813
3811
  function getPersistedState(state) {
3814
- var configuration = state.configuration,
3815
- transitions = state.transitions,
3816
- tags = state.tags,
3817
- machine = state.machine,
3818
- children = state.children,
3812
+ state.configuration;
3813
+ state.transitions;
3814
+ state.tags;
3815
+ state.machine;
3816
+ var children = state.children,
3819
3817
  jsonValues = _objectWithoutProperties(state, _excluded2);
3820
3818
  var childrenJson = {};
3821
3819
  for (var id in children) {
@@ -3830,14 +3828,14 @@ function getPersistedState(state) {
3830
3828
  });
3831
3829
  }
3832
3830
 
3833
- function invoke$1(invokeDef) {
3831
+ function invoke(invokeDef) {
3834
3832
  return createDynamicAction({
3835
- type: invoke,
3833
+ type: invoke$1,
3836
3834
  params: invokeDef
3837
- }, function (_event, _ref) {
3835
+ }, function (event, _ref) {
3838
3836
  var state = _ref.state,
3839
3837
  actorContext = _ref.actorContext;
3840
- var type = invoke;
3838
+ var type = invoke$1;
3841
3839
  var id = invokeDef.id,
3842
3840
  src = invokeDef.src;
3843
3841
  var resolvedInvokeAction;
@@ -3864,7 +3862,7 @@ function invoke$1(invokeDef) {
3864
3862
  systemId: invokeDef.systemId,
3865
3863
  input: typeof input === 'function' ? input({
3866
3864
  context: state.context,
3867
- event: _event.data,
3865
+ event: event,
3868
3866
  self: actorContext === null || actorContext === void 0 ? void 0 : actorContext.self
3869
3867
  }) : input
3870
3868
  });
@@ -3899,7 +3897,7 @@ function invoke$1(invokeDef) {
3899
3897
  var _actorRef$start;
3900
3898
  (_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
3901
3899
  } catch (err) {
3902
- parent.send(error$1(id, err));
3900
+ parent.send(error(id, err));
3903
3901
  return;
3904
3902
  }
3905
3903
  });
@@ -3908,7 +3906,7 @@ function invoke$1(invokeDef) {
3908
3906
  });
3909
3907
  }
3910
3908
 
3911
- function createSpawner(self, machine, context, _event, mutCapturedActions) {
3909
+ function createSpawner(self, machine, context, event, mutCapturedActions) {
3912
3910
  return function (src) {
3913
3911
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3914
3912
  if (isString(src)) {
@@ -3924,11 +3922,11 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3924
3922
  parent: self,
3925
3923
  input: typeof input === 'function' ? input({
3926
3924
  context: context,
3927
- event: _event.data,
3925
+ event: event,
3928
3926
  self: self
3929
3927
  }) : input
3930
3928
  });
3931
- mutCapturedActions.push(invoke$1({
3929
+ mutCapturedActions.push(invoke({
3932
3930
  id: actorRef.id,
3933
3931
  // @ts-ignore TODO: fix types
3934
3932
  src: actorRef,
@@ -3949,7 +3947,7 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3949
3947
  parent: self,
3950
3948
  input: options.input
3951
3949
  });
3952
- mutCapturedActions.push(invoke$1({
3950
+ mutCapturedActions.push(invoke({
3953
3951
  // @ts-ignore TODO: fix types
3954
3952
  src: _actorRef,
3955
3953
  ref: _actorRef,
@@ -3967,13 +3965,13 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3967
3965
  *
3968
3966
  * @param assignment An object that represents the partial context to update.
3969
3967
  */
3970
- function assign$1(assignment) {
3968
+ function assign(assignment) {
3971
3969
  return createDynamicAction({
3972
- type: assign,
3970
+ type: assign$1,
3973
3971
  params: {
3974
3972
  assignment: assignment
3975
3973
  }
3976
- }, function (_event, _ref) {
3974
+ }, function (event, _ref) {
3977
3975
  var _actorContext$self;
3978
3976
  var state = _ref.state,
3979
3977
  action = _ref.action,
@@ -3984,10 +3982,9 @@ function assign$1(assignment) {
3984
3982
  }
3985
3983
  var args = {
3986
3984
  context: state.context,
3987
- event: _event.data,
3985
+ event: event,
3988
3986
  action: action,
3989
- _event: _event,
3990
- spawn: createSpawner(actorContext === null || actorContext === void 0 ? void 0 : actorContext.self, state.machine, state.context, _event, capturedActions),
3987
+ spawn: createSpawner(actorContext === null || actorContext === void 0 ? void 0 : actorContext.self, state.machine, state.context, event, capturedActions),
3991
3988
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
3992
3989
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
3993
3990
  };
@@ -4005,7 +4002,7 @@ function assign$1(assignment) {
4005
4002
  return [cloneState(state, {
4006
4003
  context: updatedContext
4007
4004
  }), {
4008
- type: assign,
4005
+ type: assign$1,
4009
4006
  params: {
4010
4007
  context: updatedContext,
4011
4008
  actions: capturedActions
@@ -4021,15 +4018,15 @@ function assign$1(assignment) {
4021
4018
  * @param eventType The event to raise.
4022
4019
  */
4023
4020
 
4024
- function raise$1(eventOrExpr, options) {
4021
+ function raise(eventOrExpr, options) {
4025
4022
  return createDynamicAction({
4026
- type: raise,
4023
+ type: raise$1,
4027
4024
  params: {
4028
4025
  delay: options ? options.delay : undefined,
4029
4026
  event: eventOrExpr,
4030
4027
  id: options && options.id !== undefined ? options.id : typeof eventOrExpr === 'function' ? eventOrExpr.name : eventOrExpr.type
4031
4028
  }
4032
- }, function (_event, _ref) {
4029
+ }, function (event, _ref) {
4033
4030
  var _actorContext$self;
4034
4031
  var state = _ref.state,
4035
4032
  actorContext = _ref.actorContext;
@@ -4040,15 +4037,17 @@ function raise$1(eventOrExpr, options) {
4040
4037
  };
4041
4038
  var args = {
4042
4039
  context: state.context,
4043
- event: _event.data,
4044
- _event: _event,
4040
+ event: event,
4045
4041
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
4046
4042
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
4047
4043
  };
4048
4044
  var delaysMap = state.machine.options.delays;
4049
4045
 
4050
4046
  // TODO: helper function for resolving Expr
4051
- var resolvedEvent = toSCXMLEvent(typeof eventOrExpr === 'function' ? eventOrExpr(args) : eventOrExpr);
4047
+ if (typeof eventOrExpr === 'string') {
4048
+ throw new Error("Only event objects may be used with raise; use raise({ type: \"".concat(eventOrExpr, "\" }) instead"));
4049
+ }
4050
+ var resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args) : eventOrExpr;
4052
4051
  var resolvedDelay;
4053
4052
  if (typeof params.delay === 'string') {
4054
4053
  var configDelay = delaysMap && delaysMap[params.delay];
@@ -4057,10 +4056,9 @@ function raise$1(eventOrExpr, options) {
4057
4056
  resolvedDelay = typeof params.delay === 'function' ? params.delay(args) : params.delay;
4058
4057
  }
4059
4058
  var resolvedAction = {
4060
- type: raise,
4059
+ type: raise$1,
4061
4060
  params: _objectSpread2(_objectSpread2({}, params), {}, {
4062
- _event: resolvedEvent,
4063
- event: resolvedEvent.data,
4061
+ event: resolvedEvent,
4064
4062
  delay: resolvedDelay
4065
4063
  }),
4066
4064
  execute: function execute(actorCtx) {
@@ -4074,23 +4072,23 @@ function raise$1(eventOrExpr, options) {
4074
4072
  });
4075
4073
  }
4076
4074
 
4077
- function choose$1(guards) {
4075
+ function choose(guards) {
4078
4076
  return createDynamicAction({
4079
- type: choose,
4077
+ type: choose$1,
4080
4078
  params: {
4081
4079
  guards: guards
4082
4080
  }
4083
- }, function (_event, _ref) {
4081
+ }, function (event, _ref) {
4084
4082
  var _guards$find;
4085
4083
  var state = _ref.state;
4086
4084
  var matchedActions = (_guards$find = guards.find(function (condition) {
4087
4085
  var guard = condition.guard && toGuardDefinition(condition.guard, function (guardType) {
4088
4086
  return state.machine.options.guards[guardType];
4089
4087
  });
4090
- return !guard || evaluateGuard(guard, state.context, _event, state);
4088
+ return !guard || evaluateGuard(guard, state.context, event, state);
4091
4089
  })) === null || _guards$find === void 0 ? void 0 : _guards$find.actions;
4092
4090
  return [state, {
4093
- type: choose,
4091
+ type: choose$1,
4094
4092
  params: {
4095
4093
  actions: toActionObjects(matchedActions)
4096
4094
  }
@@ -4098,9 +4096,30 @@ function choose$1(guards) {
4098
4096
  });
4099
4097
  }
4100
4098
 
4101
- var initEvent = toSCXMLEvent({
4099
+ function pure(getActions) {
4100
+ return createDynamicAction({
4101
+ type: pure$1,
4102
+ params: {
4103
+ get: getActions
4104
+ }
4105
+ }, function (event, _ref) {
4106
+ var _toArray;
4107
+ var state = _ref.state;
4108
+ return [state, {
4109
+ type: pure$1,
4110
+ params: {
4111
+ actions: (_toArray = toArray(toActionObjects(getActions({
4112
+ context: state.context,
4113
+ event: event
4114
+ })))) !== null && _toArray !== void 0 ? _toArray : []
4115
+ }
4116
+ }];
4117
+ });
4118
+ }
4119
+
4120
+ var initEvent = {
4102
4121
  type: init
4103
- });
4122
+ };
4104
4123
  function resolveActionObject(actionObject, actionFunctionMap) {
4105
4124
  if (isDynamicAction(actionObject)) {
4106
4125
  return actionObject;
@@ -4111,7 +4130,7 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4111
4130
  return createDynamicAction({
4112
4131
  type: 'xstate.function',
4113
4132
  params: (_actionObject$params = actionObject.params) !== null && _actionObject$params !== void 0 ? _actionObject$params : {}
4114
- }, function (_event, _ref) {
4133
+ }, function (event, _ref) {
4115
4134
  var state = _ref.state;
4116
4135
  var a = {
4117
4136
  type: actionObject.type,
@@ -4119,9 +4138,8 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4119
4138
  execute: function execute(actorCtx) {
4120
4139
  return dereferencedAction({
4121
4140
  context: state.context,
4122
- event: state.event,
4141
+ event: event,
4123
4142
  action: a,
4124
- _event: state._event,
4125
4143
  system: actorCtx.system,
4126
4144
  self: actorCtx.self
4127
4145
  });
@@ -4150,7 +4168,7 @@ function toActionObject(action) {
4150
4168
  return createDynamicAction({
4151
4169
  type: type,
4152
4170
  params: {}
4153
- }, function (_event, _ref2) {
4171
+ }, function (event, _ref2) {
4154
4172
  var state = _ref2.state;
4155
4173
  var actionObject = {
4156
4174
  type: type,
@@ -4160,9 +4178,8 @@ function toActionObject(action) {
4160
4178
  execute: function execute(actorCtx) {
4161
4179
  return action({
4162
4180
  context: state.context,
4163
- event: _event.data,
4181
+ event: event,
4164
4182
  action: actionObject,
4165
- _event: _event,
4166
4183
  self: actorCtx.self,
4167
4184
  system: actorCtx.system
4168
4185
  });
@@ -4190,7 +4207,7 @@ var toActionObjects = function toActionObjects(action) {
4190
4207
  * @param delayRef The delay in milliseconds
4191
4208
  * @param id The state node ID where this event is handled
4192
4209
  */
4193
- function after$1(delayRef, id) {
4210
+ function after(delayRef, id) {
4194
4211
  var idSuffix = id ? "#".concat(id) : '';
4195
4212
  return "".concat(exports.ActionTypes.After, "(").concat(delayRef, ")").concat(idSuffix);
4196
4213
  }
@@ -4234,7 +4251,7 @@ function doneInvoke(invokeId, output) {
4234
4251
  };
4235
4252
  return eventObject;
4236
4253
  }
4237
- function error$1(id, data) {
4254
+ function error(id, data) {
4238
4255
  var type = "".concat(exports.ActionTypes.ErrorPlatform, ".").concat(id);
4239
4256
  var eventObject = {
4240
4257
  type: type,
@@ -4246,10 +4263,10 @@ function error$1(id, data) {
4246
4263
  return eventObject;
4247
4264
  }
4248
4265
  function createInitEvent(input) {
4249
- return toSCXMLEvent({
4266
+ return {
4250
4267
  type: init,
4251
4268
  input: input
4252
- });
4269
+ };
4253
4270
  }
4254
4271
 
4255
4272
  exports.Interpreter = Interpreter;
@@ -4265,18 +4282,18 @@ exports._objectWithoutProperties = _objectWithoutProperties;
4265
4282
  exports._slicedToArray = _slicedToArray;
4266
4283
  exports._toConsumableArray = _toConsumableArray;
4267
4284
  exports.actionTypes = actionTypes;
4268
- exports.after = after$1;
4285
+ exports.after = after;
4269
4286
  exports.and = and;
4270
- exports.assign = assign$1;
4271
- exports.cancel = cancel$1;
4272
- exports.choose = choose$1;
4273
- exports.createDynamicAction = createDynamicAction;
4287
+ exports.assign = assign;
4288
+ exports.cancel = cancel;
4289
+ exports.choose = choose;
4290
+ exports.createEmptyActor = createEmptyActor;
4274
4291
  exports.createInitEvent = createInitEvent;
4275
4292
  exports.createInvokeId = createInvokeId;
4276
4293
  exports.createSpawner = createSpawner;
4277
4294
  exports.done = done;
4278
4295
  exports.doneInvoke = doneInvoke;
4279
- exports.error = error$1;
4296
+ exports.error = error;
4280
4297
  exports.escalate = escalate;
4281
4298
  exports.evaluateGuard = evaluateGuard;
4282
4299
  exports.flatten = flatten;
@@ -4298,14 +4315,14 @@ exports.getStateNodeByPath = getStateNodeByPath;
4298
4315
  exports.getStateNodes = getStateNodes;
4299
4316
  exports.initEvent = initEvent;
4300
4317
  exports.interpret = interpret;
4301
- exports.invoke = invoke;
4318
+ exports.invoke = invoke$1;
4302
4319
  exports.isActorRef = isActorRef;
4320
+ exports.isErrorEvent = isErrorEvent;
4303
4321
  exports.isInFinalState = isInFinalState;
4304
- exports.isSCXMLErrorEvent = isSCXMLErrorEvent;
4305
4322
  exports.isSignal = isSignal;
4306
4323
  exports.isStateId = isStateId;
4307
4324
  exports.isString = isString;
4308
- exports.log = log$1;
4325
+ exports.log = log;
4309
4326
  exports.macrostep = macrostep;
4310
4327
  exports.mapValues = mapValues;
4311
4328
  exports.matchesState = matchesState;
@@ -4315,19 +4332,18 @@ exports.not = not;
4315
4332
  exports.or = or;
4316
4333
  exports.pathToStateValue = pathToStateValue;
4317
4334
  exports.pure = pure;
4318
- exports.raise = raise$1;
4335
+ exports.raise = raise;
4319
4336
  exports.resolveActionObject = resolveActionObject;
4320
4337
  exports.resolveActionsAndContext = resolveActionsAndContext;
4321
4338
  exports.resolveReferencedActor = resolveReferencedActor;
4322
4339
  exports.resolveStateValue = resolveStateValue;
4323
- exports.respond = respond;
4324
- exports.send = send$1;
4340
+ exports.send = send;
4325
4341
  exports.sendParent = sendParent;
4326
4342
  exports.sendTo = sendTo;
4327
4343
  exports.startSignal = startSignal;
4328
4344
  exports.startSignalType = startSignalType;
4329
4345
  exports.stateIn = stateIn;
4330
- exports.stop = stop$1;
4346
+ exports.stop = stop;
4331
4347
  exports.stopSignal = stopSignal;
4332
4348
  exports.stopSignalType = stopSignalType;
4333
4349
  exports.toActionObject = toActionObject;
@@ -4337,6 +4353,5 @@ exports.toArray = toArray;
4337
4353
  exports.toGuardDefinition = toGuardDefinition;
4338
4354
  exports.toInvokeConfig = toInvokeConfig;
4339
4355
  exports.toObserver = toObserver;
4340
- exports.toSCXMLEvent = toSCXMLEvent;
4341
4356
  exports.toTransitionConfigArray = toTransitionConfigArray;
4342
4357
  exports.transitionNode = transitionNode;