xstate 5.0.0-alpha.5 → 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-96f799fc.cjs.dev.js → actions-109712d3.cjs.dev.js} +397 -379
  29. package/dist/{actions-7678b87b.esm.js → actions-67f1d04e.esm.js} +351 -366
  30. package/dist/{actions-2479953d.cjs.prod.js → actions-d0262a43.cjs.prod.js} +420 -388
  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 +5 -11
  34. package/dist/declarations/src/actions/send.d.ts +0 -7
  35. package/dist/declarations/src/actions.d.ts +13 -12
  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 +15 -14
  44. package/dist/declarations/src/typegenTypes.d.ts +10 -4
  45. package/dist/declarations/src/types.d.ts +27 -101
  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 +125 -111
  54. package/dist/xstate.cjs.mjs +38 -0
  55. package/dist/xstate.cjs.prod.js +123 -112
  56. package/dist/xstate.esm.js +108 -99
  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,13 +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
- var doneData = finalChildStateNode && finalChildStateNode.doneData ? mapContext(finalChildStateNode.doneData, context, _event) : undefined;
2045
- return doneData;
2058
+ return finalChildStateNode && finalChildStateNode.output ? mapContext(finalChildStateNode.output, context, event) : undefined;
2046
2059
  }
2047
2060
  var isAtomicStateNode = function isAtomicStateNode(stateNode) {
2048
2061
  return stateNode.type === 'atomic' || stateNode.type === 'final';
@@ -2206,7 +2219,6 @@ var isStateId = function isStateId(str) {
2206
2219
  return str[0] === STATE_IDENTIFIER;
2207
2220
  };
2208
2221
  function getCandidates(stateNode, receivedEventType) {
2209
- var partialMatch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2210
2222
  var candidates = stateNode.transitions.filter(function (transition) {
2211
2223
  var eventType = transition.eventType;
2212
2224
  // First, check the trivial case: event names are exactly equal
@@ -2219,7 +2231,7 @@ function getCandidates(stateNode, receivedEventType) {
2219
2231
  if (eventType === WILDCARD) {
2220
2232
  return true;
2221
2233
  }
2222
- if (!partialMatch && !eventType.endsWith('.*')) {
2234
+ if (!eventType.endsWith('.*')) {
2223
2235
  return false;
2224
2236
  }
2225
2237
  if (!dev_dist_xstateDev.IS_PRODUCTION) {
@@ -2256,13 +2268,13 @@ function getDelayedTransitions(stateNode) {
2256
2268
  }
2257
2269
  var mutateEntryExit = function mutateEntryExit(delay, i) {
2258
2270
  var delayRef = isFunction(delay) ? "".concat(stateNode.id, ":delay[").concat(i, "]") : delay;
2259
- var eventType = after$1(delayRef, stateNode.id);
2260
- stateNode.entry.push(send$1({
2271
+ var eventType = after(delayRef, stateNode.id);
2272
+ stateNode.entry.push(raise({
2261
2273
  type: eventType
2262
2274
  }, {
2263
2275
  delay: delay
2264
2276
  }));
2265
- stateNode.exit.push(cancel$1(eventType));
2277
+ stateNode.exit.push(cancel(eventType));
2266
2278
  return eventType;
2267
2279
  };
2268
2280
  var delayedTransitions = isArray(afterConfig) ? afterConfig.map(function (transition, i) {
@@ -2292,9 +2304,9 @@ function getDelayedTransitions(stateNode) {
2292
2304
  });
2293
2305
  }
2294
2306
  function formatTransition(stateNode, transitionConfig) {
2295
- var _transitionConfig$ext;
2307
+ var _transitionConfig$ree;
2296
2308
  var normalizedTarget = normalizeTarget(transitionConfig.target);
2297
- 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;
2298
2310
  var guards = stateNode.machine.options.guards;
2299
2311
  var target = resolveTarget(stateNode, normalizedTarget);
2300
2312
 
@@ -2309,7 +2321,7 @@ function formatTransition(stateNode, transitionConfig) {
2309
2321
  }) : undefined,
2310
2322
  target: target,
2311
2323
  source: stateNode,
2312
- external: external,
2324
+ reenter: reenter,
2313
2325
  eventType: transitionConfig.event,
2314
2326
  toJSON: function toJSON() {
2315
2327
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2396,7 +2408,7 @@ function formatInitialTransition(stateNode, _target) {
2396
2408
  source: stateNode,
2397
2409
  actions: [],
2398
2410
  eventType: null,
2399
- external: false,
2411
+ reenter: false,
2400
2412
  target: resolvedTarget,
2401
2413
  toJSON: function toJSON() {
2402
2414
  return _objectSpread2(_objectSpread2({}, transition), {}, {
@@ -2429,6 +2441,9 @@ function resolveTarget(stateNode, targets) {
2429
2441
  if (!isString(target)) {
2430
2442
  return target;
2431
2443
  }
2444
+ if (isStateId(target)) {
2445
+ return stateNode.machine.getStateNodeById(target);
2446
+ }
2432
2447
  var isInternalTarget = target[0] === stateNode.machine.delimiter;
2433
2448
  // If internal target is defined on machine,
2434
2449
  // do not include machine key on target
@@ -2444,7 +2459,7 @@ function resolveTarget(stateNode, targets) {
2444
2459
  throw new Error("Invalid transition definition for state node '".concat(stateNode.id, "':\n").concat(err.message));
2445
2460
  }
2446
2461
  } else {
2447
- return getStateNodeByPath(stateNode, resolvedTarget);
2462
+ throw new Error("Invalid target: \"".concat(target, "\" is not a valid target from the root node. Did you mean \".").concat(target, "\"?"));
2448
2463
  }
2449
2464
  });
2450
2465
  }
@@ -2576,24 +2591,24 @@ function getStateNodes(stateNode, state) {
2576
2591
  return allSubStateNodes.concat(subStateNodes);
2577
2592
  }, []));
2578
2593
  }
2579
- function transitionAtomicNode(stateNode, stateValue, state, _event) {
2594
+ function transitionAtomicNode(stateNode, stateValue, state, event) {
2580
2595
  var childStateNode = getStateNode(stateNode, stateValue);
2581
- var next = childStateNode.next(state, _event);
2596
+ var next = childStateNode.next(state, event);
2582
2597
  if (!next || !next.length) {
2583
- return stateNode.next(state, _event);
2598
+ return stateNode.next(state, event);
2584
2599
  }
2585
2600
  return next;
2586
2601
  }
2587
- function transitionCompoundNode(stateNode, stateValue, state, _event) {
2602
+ function transitionCompoundNode(stateNode, stateValue, state, event) {
2588
2603
  var subStateKeys = Object.keys(stateValue);
2589
2604
  var childStateNode = getStateNode(stateNode, subStateKeys[0]);
2590
- var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, _event);
2605
+ var next = transitionNode(childStateNode, stateValue[subStateKeys[0]], state, event);
2591
2606
  if (!next || !next.length) {
2592
- return stateNode.next(state, _event);
2607
+ return stateNode.next(state, event);
2593
2608
  }
2594
2609
  return next;
2595
2610
  }
2596
- function transitionParallelNode(stateNode, stateValue, state, _event) {
2611
+ function transitionParallelNode(stateNode, stateValue, state, event) {
2597
2612
  var allInnerTransitions = [];
2598
2613
  for (var _i3 = 0, _Object$keys2 = Object.keys(stateValue); _i3 < _Object$keys2.length; _i3++) {
2599
2614
  var subStateKey = _Object$keys2[_i3];
@@ -2602,29 +2617,29 @@ function transitionParallelNode(stateNode, stateValue, state, _event) {
2602
2617
  continue;
2603
2618
  }
2604
2619
  var subStateNode = getStateNode(stateNode, subStateKey);
2605
- var innerTransitions = transitionNode(subStateNode, subStateValue, state, _event);
2620
+ var innerTransitions = transitionNode(subStateNode, subStateValue, state, event);
2606
2621
  if (innerTransitions) {
2607
2622
  allInnerTransitions.push.apply(allInnerTransitions, _toConsumableArray(innerTransitions));
2608
2623
  }
2609
2624
  }
2610
2625
  if (!allInnerTransitions.length) {
2611
- return stateNode.next(state, _event);
2626
+ return stateNode.next(state, event);
2612
2627
  }
2613
2628
  return allInnerTransitions;
2614
2629
  }
2615
- function transitionNode(stateNode, stateValue, state, _event) {
2630
+ function transitionNode(stateNode, stateValue, state, event) {
2616
2631
  // leaf node
2617
2632
  if (isString(stateValue)) {
2618
- return transitionAtomicNode(stateNode, stateValue, state, _event);
2633
+ return transitionAtomicNode(stateNode, stateValue, state, event);
2619
2634
  }
2620
2635
 
2621
2636
  // compound node
2622
2637
  if (Object.keys(stateValue).length === 1) {
2623
- return transitionCompoundNode(stateNode, stateValue, state, _event);
2638
+ return transitionCompoundNode(stateNode, stateValue, state, event);
2624
2639
  }
2625
2640
 
2626
2641
  // parallel node
2627
- return transitionParallelNode(stateNode, stateValue, state, _event);
2642
+ return transitionParallelNode(stateNode, stateValue, state, event);
2628
2643
  }
2629
2644
  function getHistoryNodes(stateNode) {
2630
2645
  return Object.keys(stateNode.states).map(function (key) {
@@ -2816,7 +2831,7 @@ function getTransitionDomain(transition, historyValue) {
2816
2831
  if (!targetStates) {
2817
2832
  return null;
2818
2833
  }
2819
- if (!transition.external && transition.source.type === 'compound' && targetStates.every(function (targetStateNode) {
2834
+ if (!transition.reenter && transition.source.type !== 'parallel' && targetStates.every(function (targetStateNode) {
2820
2835
  return isDescendant(targetStateNode, transition.source);
2821
2836
  })) {
2822
2837
  return transition.source;
@@ -2867,7 +2882,7 @@ function computeExitSet(transitions, configuration, historyValue) {
2867
2882
  * @param mutConfiguration
2868
2883
  */
2869
2884
 
2870
- function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2885
+ function microstep(transitions, currentState, actorCtx, event) {
2871
2886
  var machine = currentState.machine;
2872
2887
  // Transition will "apply" if:
2873
2888
  // - the state node is the initial state (there is no current state)
@@ -2876,7 +2891,7 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2876
2891
  var mutConfiguration = new Set(currentState.configuration);
2877
2892
  if (!currentState._initial && !willTransition) {
2878
2893
  var inertState = cloneState(currentState, {
2879
- _event: scxmlEvent,
2894
+ event: event,
2880
2895
  actions: [],
2881
2896
  transitions: []
2882
2897
  });
@@ -2886,11 +2901,11 @@ function microstep(transitions, currentState, actorCtx, scxmlEvent) {
2886
2901
  var microstate = microstepProcedure(currentState._initial ? [{
2887
2902
  target: _toConsumableArray(currentState.configuration).filter(isAtomicStateNode),
2888
2903
  source: machine.root,
2889
- external: true,
2904
+ reenter: true,
2890
2905
  actions: [],
2891
2906
  eventType: null,
2892
2907
  toJSON: null // TODO: fix
2893
- }] : transitions, currentState, mutConfiguration, scxmlEvent, actorCtx);
2908
+ }] : transitions, currentState, mutConfiguration, event, actorCtx);
2894
2909
  var context = microstate.context,
2895
2910
  nonRaisedActions = microstate.actions;
2896
2911
  var children = setChildren(currentState, nonRaisedActions);
@@ -2910,12 +2925,12 @@ function setChildren(currentState, nonRaisedActions) {
2910
2925
  try {
2911
2926
  for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
2912
2927
  var action = _step21.value;
2913
- if (action.type === invoke && action.params.ref) {
2928
+ if (action.type === invoke$1 && action.params.ref) {
2914
2929
  var ref = action.params.ref;
2915
2930
  if (ref) {
2916
2931
  children[ref.id] = ref;
2917
2932
  }
2918
- } else if (action.type === stop) {
2933
+ } else if (action.type === stop$1) {
2919
2934
  var _ref = action.params.actor;
2920
2935
  if (_ref) {
2921
2936
  delete children[_ref.id];
@@ -2929,8 +2944,7 @@ function setChildren(currentState, nonRaisedActions) {
2929
2944
  }
2930
2945
  return children;
2931
2946
  }
2932
- function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEvent, actorCtx) {
2933
- var machine = currentState.machine;
2947
+ function microstepProcedure(transitions, currentState, mutConfiguration, event, actorCtx) {
2934
2948
  var actions = [];
2935
2949
  var historyValue = _objectSpread2({}, currentState.historyValue);
2936
2950
  var filteredTransitions = removeConflictingTransitions(transitions, mutConfiguration, historyValue);
@@ -2959,9 +2973,9 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2959
2973
  actions.push.apply(actions, _toConsumableArray(finalActions));
2960
2974
  }
2961
2975
  try {
2962
- var _resolveActionsAndCon = resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx),
2976
+ var _resolveActionsAndCon = resolveActionsAndContext(actions, event, currentState, actorCtx),
2963
2977
  nextState = _resolveActionsAndCon.nextState;
2964
- var output = done ? getOutput(nextConfiguration, nextState.context, scxmlEvent) : undefined;
2978
+ var output = done ? getOutput(nextConfiguration, nextState.context, event) : undefined;
2965
2979
  internalQueue.push.apply(internalQueue, _toConsumableArray(nextState._internalQueue));
2966
2980
  return cloneState(currentState, {
2967
2981
  actions: nextState.actions,
@@ -2969,7 +2983,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2969
2983
  historyValue: historyValue,
2970
2984
  _internalQueue: internalQueue,
2971
2985
  context: nextState.context,
2972
- _event: scxmlEvent,
2986
+ event: event,
2973
2987
  done: done,
2974
2988
  output: output,
2975
2989
  children: nextState.children
@@ -2977,19 +2991,7 @@ function microstepProcedure(transitions, currentState, mutConfiguration, scxmlEv
2977
2991
  } catch (e) {
2978
2992
  // TODO: Refactor this once proper error handling is implemented.
2979
2993
  // See https://github.com/statelyai/rfcs/pull/4
2980
- if (machine.config.scxml) {
2981
- return cloneState(currentState, {
2982
- actions: [],
2983
- configuration: Array.from(mutConfiguration),
2984
- historyValue: historyValue,
2985
- _internalQueue: [toSCXMLEvent({
2986
- type: 'error.execution'
2987
- })],
2988
- context: currentState.context
2989
- });
2990
- } else {
2991
- throw e;
2992
- }
2994
+ throw e;
2993
2995
  }
2994
2996
  }
2995
2997
  function enterStates(filteredTransitions, mutConfiguration, actions, internalQueue, currentState, historyValue) {
@@ -3014,7 +3016,7 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
3014
3016
  try {
3015
3017
  for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
3016
3018
  var invokeDef = _step23.value;
3017
- actions.push(invoke$1(invokeDef));
3019
+ actions.push(invoke(invokeDef));
3018
3020
  }
3019
3021
 
3020
3022
  // Add entry actions
@@ -3044,14 +3046,14 @@ function enterStates(filteredTransitions, mutConfiguration, actions, internalQue
3044
3046
  if (!parent.parent) {
3045
3047
  continue;
3046
3048
  }
3047
- internalQueue.push(toSCXMLEvent(done(parent.id, stateNodeToEnter.doneData ? mapContext(stateNodeToEnter.doneData, currentState.context, currentState._event) : undefined)));
3049
+ internalQueue.push(done(parent.id, stateNodeToEnter.output ? mapContext(stateNodeToEnter.output, currentState.context, currentState.event) : undefined));
3048
3050
  if (parent.parent) {
3049
3051
  var grandparent = parent.parent;
3050
3052
  if (grandparent.type === 'parallel') {
3051
3053
  if (getChildren(grandparent).every(function (parentNode) {
3052
3054
  return isInFinalState(_toConsumableArray(mutConfiguration), parentNode);
3053
3055
  })) {
3054
- internalQueue.push(toSCXMLEvent(done(grandparent.id)));
3056
+ internalQueue.push(done(grandparent.id));
3055
3057
  }
3056
3058
  }
3057
3059
  }
@@ -3324,7 +3326,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3324
3326
  for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
3325
3327
  var s = _step40.value;
3326
3328
  actions.push.apply(actions, _toConsumableArray(s.exit.flat()).concat(_toConsumableArray(s.invoke.map(function (def) {
3327
- return stop$1(def.id);
3329
+ return stop(def.id);
3328
3330
  }))));
3329
3331
  mutConfiguration["delete"](s);
3330
3332
  }
@@ -3334,7 +3336,7 @@ function exitStates(transitions, mutConfiguration, historyValue, actions) {
3334
3336
  _iterator40.f();
3335
3337
  }
3336
3338
  }
3337
- function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3339
+ function resolveActionsAndContext(actions, event, currentState, actorCtx) {
3338
3340
  var machine = currentState.machine;
3339
3341
  var resolvedActions = [];
3340
3342
  var raiseActions = [];
@@ -3352,7 +3354,7 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3352
3354
  var executableActionObject = resolveActionObject(actionObject, machine.options.actions);
3353
3355
  if (isDynamicAction(executableActionObject)) {
3354
3356
  var _resolvedAction$param;
3355
- var _executableActionObje = executableActionObject.resolve(scxmlEvent, {
3357
+ var _executableActionObje = executableActionObject.resolve(event, {
3356
3358
  state: intermediateState,
3357
3359
  action: actionObject,
3358
3360
  actorContext: actorCtx
@@ -3362,12 +3364,12 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3362
3364
  resolvedAction = _executableActionObje2[1];
3363
3365
  var matchedActions = (_resolvedAction$param = resolvedAction.params) === null || _resolvedAction$param === void 0 ? void 0 : _resolvedAction$param.actions;
3364
3366
  intermediateState = nextState;
3365
- 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') {
3366
3368
  raiseActions.push(resolvedAction);
3367
3369
  }
3368
3370
 
3369
3371
  // TODO: remove the check; just handleAction
3370
- if (resolvedAction.type !== pure) {
3372
+ if (resolvedAction.type !== pure$1) {
3371
3373
  handleAction(resolvedAction);
3372
3374
  }
3373
3375
  toActionObjects(matchedActions).forEach(resolveAction);
@@ -3391,21 +3393,21 @@ function resolveActionsAndContext(actions, scxmlEvent, currentState, actorCtx) {
3391
3393
  nextState: cloneState(intermediateState, {
3392
3394
  actions: resolvedActions,
3393
3395
  _internalQueue: raiseActions.map(function (a) {
3394
- return a.params._event;
3396
+ return a.params.event;
3395
3397
  })
3396
3398
  })
3397
3399
  };
3398
3400
  }
3399
- function macrostep(state, scxmlEvent, actorCtx) {
3400
- 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) {
3401
3403
  throw new Error("An event cannot have the wildcard type ('".concat(WILDCARD, "')"));
3402
3404
  }
3403
3405
  var nextState = state;
3404
3406
  var states = [];
3405
3407
 
3406
3408
  // Handle stop event
3407
- if ((scxmlEvent === null || scxmlEvent === void 0 ? void 0 : scxmlEvent.name) === stopSignalType) {
3408
- nextState = stopStep(scxmlEvent, nextState, actorCtx);
3409
+ if (event.type === stopSignalType) {
3410
+ nextState = stopStep(event, nextState, actorCtx);
3409
3411
  states.push(nextState);
3410
3412
  return {
3411
3413
  state: nextState,
@@ -3415,9 +3417,9 @@ function macrostep(state, scxmlEvent, actorCtx) {
3415
3417
 
3416
3418
  // Assume the state is at rest (no raised events)
3417
3419
  // Determine the next state based on the next microstep
3418
- if (scxmlEvent.name !== init) {
3419
- var transitions = selectTransitions(scxmlEvent, nextState);
3420
- nextState = microstep(transitions, state, actorCtx, scxmlEvent);
3420
+ if (event.type !== init) {
3421
+ var transitions = selectTransitions(event, nextState);
3422
+ nextState = microstep(transitions, state, actorCtx, event);
3421
3423
  states.push(nextState);
3422
3424
  }
3423
3425
  while (!nextState.done) {
@@ -3449,21 +3451,21 @@ function macrostep(state, scxmlEvent, actorCtx) {
3449
3451
  if (enabledTransitions.length) {
3450
3452
  var _nextState$actions2;
3451
3453
  var _currentActions = nextState.actions;
3452
- nextState = microstep(enabledTransitions, nextState, actorCtx, nextState._event);
3454
+ nextState = microstep(enabledTransitions, nextState, actorCtx, nextState.event);
3453
3455
  (_nextState$actions2 = nextState.actions).unshift.apply(_nextState$actions2, _toConsumableArray(_currentActions));
3454
3456
  states.push(nextState);
3455
3457
  }
3456
3458
  }
3457
3459
  if (nextState.done) {
3458
3460
  // Perform the stop step to ensure that child actors are stopped
3459
- stopStep(nextState._event, nextState, actorCtx);
3461
+ stopStep(nextState.event, nextState, actorCtx);
3460
3462
  }
3461
3463
  return {
3462
3464
  state: nextState,
3463
3465
  microstates: states
3464
3466
  };
3465
3467
  }
3466
- function stopStep(scxmlEvent, nextState, actorCtx) {
3468
+ function stopStep(event, nextState, actorCtx) {
3467
3469
  var actions = [];
3468
3470
  var _iterator43 = _createForOfIteratorHelper(nextState.configuration.sort(function (a, b) {
3469
3471
  return b.order - a.order;
@@ -3481,14 +3483,14 @@ function stopStep(scxmlEvent, nextState, actorCtx) {
3481
3483
  }
3482
3484
  for (var _i4 = 0, _Object$values = Object.values(nextState.children); _i4 < _Object$values.length; _i4++) {
3483
3485
  var child = _Object$values[_i4];
3484
- actions.push(stop$1(child));
3486
+ actions.push(stop(child));
3485
3487
  }
3486
- var _resolveActionsAndCon2 = resolveActionsAndContext(actions, scxmlEvent, nextState, actorCtx),
3488
+ var _resolveActionsAndCon2 = resolveActionsAndContext(actions, event, nextState, actorCtx),
3487
3489
  stoppedState = _resolveActionsAndCon2.nextState;
3488
3490
  return stoppedState;
3489
3491
  }
3490
- function selectTransitions(scxmlEvent, nextState) {
3491
- return nextState.machine.getTransitionData(nextState, scxmlEvent);
3492
+ function selectTransitions(event, nextState) {
3493
+ return nextState.machine.getTransitionData(nextState, event);
3492
3494
  }
3493
3495
  function selectEventlessTransitions(nextState) {
3494
3496
  var enabledTransitionSet = new Set();
@@ -3511,7 +3513,7 @@ function selectEventlessTransitions(nextState) {
3511
3513
  try {
3512
3514
  for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
3513
3515
  var transition = _step46.value;
3514
- 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)) {
3515
3517
  enabledTransitionSet.add(transition);
3516
3518
  break loop;
3517
3519
  }
@@ -3605,16 +3607,14 @@ var State = /*#__PURE__*/function () {
3605
3607
  _defineProperty(this, "actions", []);
3606
3608
  _defineProperty(this, "event", void 0);
3607
3609
  _defineProperty(this, "_internalQueue", void 0);
3608
- _defineProperty(this, "_event", void 0);
3609
3610
  _defineProperty(this, "_initial", false);
3610
3611
  _defineProperty(this, "changed", void 0);
3611
3612
  _defineProperty(this, "configuration", void 0);
3612
3613
  _defineProperty(this, "transitions", void 0);
3613
3614
  _defineProperty(this, "children", void 0);
3614
3615
  this.context = config.context;
3615
- this._event = config._event;
3616
3616
  this._internalQueue = (_config$_internalQueu = config._internalQueue) !== null && _config$_internalQueu !== void 0 ? _config$_internalQueu : [];
3617
- this.event = this._event.data;
3617
+ this.event = config.event;
3618
3618
  this.historyValue = config.historyValue || {};
3619
3619
  this.actions = (_config$actions = config.actions) !== null && _config$actions !== void 0 ? _config$actions : [];
3620
3620
  this.matches = this.matches.bind(this);
@@ -3654,11 +3654,11 @@ var State = /*#__PURE__*/function () {
3654
3654
  }, {
3655
3655
  key: "toJSON",
3656
3656
  value: function toJSON() {
3657
- var configuration = this.configuration,
3658
- transitions = this.transitions,
3659
- tags = this.tags,
3660
- machine = this.machine,
3661
- jsonValues = _objectWithoutProperties(this, _excluded);
3657
+ this.configuration;
3658
+ this.transitions;
3659
+ var tags = this.tags;
3660
+ this.machine;
3661
+ var jsonValues = _objectWithoutProperties(this, _excluded);
3662
3662
  return _objectSpread2(_objectSpread2({}, jsonValues), {}, {
3663
3663
  tags: Array.from(tags),
3664
3664
  meta: this.meta
@@ -3699,7 +3699,7 @@ var State = /*#__PURE__*/function () {
3699
3699
  if (dev_dist_xstateDev.IS_PRODUCTION) {
3700
3700
  warn(!!this.machine, "state.can(...) used outside of a machine-created State object; this will always return false.");
3701
3701
  }
3702
- var transitionData = this.machine.getTransitionData(this, toSCXMLEvent(event));
3702
+ var transitionData = this.machine.getTransitionData(this, event);
3703
3703
  return !!(transitionData !== null && transitionData !== void 0 && transitionData.length) &&
3704
3704
  // Check that at least one transition is not forbidden
3705
3705
  transitionData.some(function (t) {
@@ -3776,7 +3776,7 @@ var State = /*#__PURE__*/function () {
3776
3776
  return new State({
3777
3777
  value: stateValue.value,
3778
3778
  context: context,
3779
- _event: stateValue._event,
3779
+ event: stateValue.event,
3780
3780
  actions: [],
3781
3781
  meta: {},
3782
3782
  configuration: [],
@@ -3787,13 +3787,13 @@ var State = /*#__PURE__*/function () {
3787
3787
  }
3788
3788
  return stateValue;
3789
3789
  }
3790
- var _event = createInitEvent({}); // TODO: fix
3790
+ var event = createInitEvent({}); // TODO: fix
3791
3791
 
3792
3792
  var configuration = getConfiguration(getStateNodes(machine.root, stateValue));
3793
3793
  return new State({
3794
3794
  value: stateValue,
3795
3795
  context: context,
3796
- _event: _event,
3796
+ event: event,
3797
3797
  actions: [],
3798
3798
  meta: undefined,
3799
3799
  configuration: Array.from(configuration),
@@ -3809,11 +3809,11 @@ function cloneState(state) {
3809
3809
  return new State(_objectSpread2(_objectSpread2({}, state), config), state.machine);
3810
3810
  }
3811
3811
  function getPersistedState(state) {
3812
- var configuration = state.configuration,
3813
- transitions = state.transitions,
3814
- tags = state.tags,
3815
- machine = state.machine,
3816
- children = state.children,
3812
+ state.configuration;
3813
+ state.transitions;
3814
+ state.tags;
3815
+ state.machine;
3816
+ var children = state.children,
3817
3817
  jsonValues = _objectWithoutProperties(state, _excluded2);
3818
3818
  var childrenJson = {};
3819
3819
  for (var id in children) {
@@ -3828,14 +3828,14 @@ function getPersistedState(state) {
3828
3828
  });
3829
3829
  }
3830
3830
 
3831
- function invoke$1(invokeDef) {
3831
+ function invoke(invokeDef) {
3832
3832
  return createDynamicAction({
3833
- type: invoke,
3833
+ type: invoke$1,
3834
3834
  params: invokeDef
3835
- }, function (_event, _ref) {
3835
+ }, function (event, _ref) {
3836
3836
  var state = _ref.state,
3837
3837
  actorContext = _ref.actorContext;
3838
- var type = invoke;
3838
+ var type = invoke$1;
3839
3839
  var id = invokeDef.id,
3840
3840
  src = invokeDef.src;
3841
3841
  var resolvedInvokeAction;
@@ -3862,7 +3862,7 @@ function invoke$1(invokeDef) {
3862
3862
  systemId: invokeDef.systemId,
3863
3863
  input: typeof input === 'function' ? input({
3864
3864
  context: state.context,
3865
- event: _event.data,
3865
+ event: event,
3866
3866
  self: actorContext === null || actorContext === void 0 ? void 0 : actorContext.self
3867
3867
  }) : input
3868
3868
  });
@@ -3897,7 +3897,7 @@ function invoke$1(invokeDef) {
3897
3897
  var _actorRef$start;
3898
3898
  (_actorRef$start = actorRef.start) === null || _actorRef$start === void 0 ? void 0 : _actorRef$start.call(actorRef);
3899
3899
  } catch (err) {
3900
- parent.send(error$1(id, err));
3900
+ parent.send(error(id, err));
3901
3901
  return;
3902
3902
  }
3903
3903
  });
@@ -3906,7 +3906,7 @@ function invoke$1(invokeDef) {
3906
3906
  });
3907
3907
  }
3908
3908
 
3909
- function createSpawner(self, machine, context, _event, mutCapturedActions) {
3909
+ function createSpawner(self, machine, context, event, mutCapturedActions) {
3910
3910
  return function (src) {
3911
3911
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3912
3912
  if (isString(src)) {
@@ -3922,11 +3922,11 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3922
3922
  parent: self,
3923
3923
  input: typeof input === 'function' ? input({
3924
3924
  context: context,
3925
- event: _event.data,
3925
+ event: event,
3926
3926
  self: self
3927
3927
  }) : input
3928
3928
  });
3929
- mutCapturedActions.push(invoke$1({
3929
+ mutCapturedActions.push(invoke({
3930
3930
  id: actorRef.id,
3931
3931
  // @ts-ignore TODO: fix types
3932
3932
  src: actorRef,
@@ -3947,7 +3947,7 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3947
3947
  parent: self,
3948
3948
  input: options.input
3949
3949
  });
3950
- mutCapturedActions.push(invoke$1({
3950
+ mutCapturedActions.push(invoke({
3951
3951
  // @ts-ignore TODO: fix types
3952
3952
  src: _actorRef,
3953
3953
  ref: _actorRef,
@@ -3965,13 +3965,13 @@ function createSpawner(self, machine, context, _event, mutCapturedActions) {
3965
3965
  *
3966
3966
  * @param assignment An object that represents the partial context to update.
3967
3967
  */
3968
- function assign$1(assignment) {
3968
+ function assign(assignment) {
3969
3969
  return createDynamicAction({
3970
- type: assign,
3970
+ type: assign$1,
3971
3971
  params: {
3972
3972
  assignment: assignment
3973
3973
  }
3974
- }, function (_event, _ref) {
3974
+ }, function (event, _ref) {
3975
3975
  var _actorContext$self;
3976
3976
  var state = _ref.state,
3977
3977
  action = _ref.action,
@@ -3982,10 +3982,9 @@ function assign$1(assignment) {
3982
3982
  }
3983
3983
  var args = {
3984
3984
  context: state.context,
3985
- event: _event.data,
3985
+ event: event,
3986
3986
  action: action,
3987
- _event: _event,
3988
- 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),
3989
3988
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
3990
3989
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
3991
3990
  };
@@ -4003,7 +4002,7 @@ function assign$1(assignment) {
4003
4002
  return [cloneState(state, {
4004
4003
  context: updatedContext
4005
4004
  }), {
4006
- type: assign,
4005
+ type: assign$1,
4007
4006
  params: {
4008
4007
  context: updatedContext,
4009
4008
  actions: capturedActions
@@ -4019,15 +4018,15 @@ function assign$1(assignment) {
4019
4018
  * @param eventType The event to raise.
4020
4019
  */
4021
4020
 
4022
- function raise$1(eventOrExpr, options) {
4021
+ function raise(eventOrExpr, options) {
4023
4022
  return createDynamicAction({
4024
- type: raise,
4023
+ type: raise$1,
4025
4024
  params: {
4026
4025
  delay: options ? options.delay : undefined,
4027
4026
  event: eventOrExpr,
4028
4027
  id: options && options.id !== undefined ? options.id : typeof eventOrExpr === 'function' ? eventOrExpr.name : eventOrExpr.type
4029
4028
  }
4030
- }, function (_event, _ref) {
4029
+ }, function (event, _ref) {
4031
4030
  var _actorContext$self;
4032
4031
  var state = _ref.state,
4033
4032
  actorContext = _ref.actorContext;
@@ -4038,15 +4037,17 @@ function raise$1(eventOrExpr, options) {
4038
4037
  };
4039
4038
  var args = {
4040
4039
  context: state.context,
4041
- event: _event.data,
4042
- _event: _event,
4040
+ event: event,
4043
4041
  self: (_actorContext$self = actorContext === null || actorContext === void 0 ? void 0 : actorContext.self) !== null && _actorContext$self !== void 0 ? _actorContext$self : {},
4044
4042
  system: actorContext === null || actorContext === void 0 ? void 0 : actorContext.system
4045
4043
  };
4046
4044
  var delaysMap = state.machine.options.delays;
4047
4045
 
4048
4046
  // TODO: helper function for resolving Expr
4049
- 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;
4050
4051
  var resolvedDelay;
4051
4052
  if (typeof params.delay === 'string') {
4052
4053
  var configDelay = delaysMap && delaysMap[params.delay];
@@ -4055,10 +4056,9 @@ function raise$1(eventOrExpr, options) {
4055
4056
  resolvedDelay = typeof params.delay === 'function' ? params.delay(args) : params.delay;
4056
4057
  }
4057
4058
  var resolvedAction = {
4058
- type: raise,
4059
+ type: raise$1,
4059
4060
  params: _objectSpread2(_objectSpread2({}, params), {}, {
4060
- _event: resolvedEvent,
4061
- event: resolvedEvent.data,
4061
+ event: resolvedEvent,
4062
4062
  delay: resolvedDelay
4063
4063
  }),
4064
4064
  execute: function execute(actorCtx) {
@@ -4072,23 +4072,23 @@ function raise$1(eventOrExpr, options) {
4072
4072
  });
4073
4073
  }
4074
4074
 
4075
- function choose$1(guards) {
4075
+ function choose(guards) {
4076
4076
  return createDynamicAction({
4077
- type: choose,
4077
+ type: choose$1,
4078
4078
  params: {
4079
4079
  guards: guards
4080
4080
  }
4081
- }, function (_event, _ref) {
4081
+ }, function (event, _ref) {
4082
4082
  var _guards$find;
4083
4083
  var state = _ref.state;
4084
4084
  var matchedActions = (_guards$find = guards.find(function (condition) {
4085
4085
  var guard = condition.guard && toGuardDefinition(condition.guard, function (guardType) {
4086
4086
  return state.machine.options.guards[guardType];
4087
4087
  });
4088
- return !guard || evaluateGuard(guard, state.context, _event, state);
4088
+ return !guard || evaluateGuard(guard, state.context, event, state);
4089
4089
  })) === null || _guards$find === void 0 ? void 0 : _guards$find.actions;
4090
4090
  return [state, {
4091
- type: choose,
4091
+ type: choose$1,
4092
4092
  params: {
4093
4093
  actions: toActionObjects(matchedActions)
4094
4094
  }
@@ -4096,9 +4096,30 @@ function choose$1(guards) {
4096
4096
  });
4097
4097
  }
4098
4098
 
4099
- 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 = {
4100
4121
  type: init
4101
- });
4122
+ };
4102
4123
  function resolveActionObject(actionObject, actionFunctionMap) {
4103
4124
  if (isDynamicAction(actionObject)) {
4104
4125
  return actionObject;
@@ -4109,7 +4130,7 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4109
4130
  return createDynamicAction({
4110
4131
  type: 'xstate.function',
4111
4132
  params: (_actionObject$params = actionObject.params) !== null && _actionObject$params !== void 0 ? _actionObject$params : {}
4112
- }, function (_event, _ref) {
4133
+ }, function (event, _ref) {
4113
4134
  var state = _ref.state;
4114
4135
  var a = {
4115
4136
  type: actionObject.type,
@@ -4117,9 +4138,8 @@ function resolveActionObject(actionObject, actionFunctionMap) {
4117
4138
  execute: function execute(actorCtx) {
4118
4139
  return dereferencedAction({
4119
4140
  context: state.context,
4120
- event: state.event,
4141
+ event: event,
4121
4142
  action: a,
4122
- _event: state._event,
4123
4143
  system: actorCtx.system,
4124
4144
  self: actorCtx.self
4125
4145
  });
@@ -4148,7 +4168,7 @@ function toActionObject(action) {
4148
4168
  return createDynamicAction({
4149
4169
  type: type,
4150
4170
  params: {}
4151
- }, function (_event, _ref2) {
4171
+ }, function (event, _ref2) {
4152
4172
  var state = _ref2.state;
4153
4173
  var actionObject = {
4154
4174
  type: type,
@@ -4158,9 +4178,8 @@ function toActionObject(action) {
4158
4178
  execute: function execute(actorCtx) {
4159
4179
  return action({
4160
4180
  context: state.context,
4161
- event: _event.data,
4181
+ event: event,
4162
4182
  action: actionObject,
4163
- _event: _event,
4164
4183
  self: actorCtx.self,
4165
4184
  system: actorCtx.system
4166
4185
  });
@@ -4188,7 +4207,7 @@ var toActionObjects = function toActionObjects(action) {
4188
4207
  * @param delayRef The delay in milliseconds
4189
4208
  * @param id The state node ID where this event is handled
4190
4209
  */
4191
- function after$1(delayRef, id) {
4210
+ function after(delayRef, id) {
4192
4211
  var idSuffix = id ? "#".concat(id) : '';
4193
4212
  return "".concat(exports.ActionTypes.After, "(").concat(delayRef, ")").concat(idSuffix);
4194
4213
  }
@@ -4198,13 +4217,13 @@ function after$1(delayRef, id) {
4198
4217
  * has been reached in the parent state node.
4199
4218
  *
4200
4219
  * @param id The final state node's parent state node `id`
4201
- * @param data The data to pass into the event
4220
+ * @param output The data to pass into the event
4202
4221
  */
4203
- function done(id, data) {
4222
+ function done(id, output) {
4204
4223
  var type = "".concat(exports.ActionTypes.DoneState, ".").concat(id);
4205
4224
  var eventObject = {
4206
4225
  type: type,
4207
- data: data
4226
+ output: output
4208
4227
  };
4209
4228
  eventObject.toString = function () {
4210
4229
  return type;
@@ -4219,20 +4238,20 @@ function done(id, data) {
4219
4238
  * but not when it is canceled.
4220
4239
  *
4221
4240
  * @param invokeId The invoked service ID
4222
- * @param data The data to pass into the event
4241
+ * @param output The data to pass into the event
4223
4242
  */
4224
- function doneInvoke(invokeId, data) {
4243
+ function doneInvoke(invokeId, output) {
4225
4244
  var type = "".concat(exports.ActionTypes.DoneInvoke, ".").concat(invokeId);
4226
4245
  var eventObject = {
4227
4246
  type: type,
4228
- data: data
4247
+ output: output
4229
4248
  };
4230
4249
  eventObject.toString = function () {
4231
4250
  return type;
4232
4251
  };
4233
4252
  return eventObject;
4234
4253
  }
4235
- function error$1(id, data) {
4254
+ function error(id, data) {
4236
4255
  var type = "".concat(exports.ActionTypes.ErrorPlatform, ".").concat(id);
4237
4256
  var eventObject = {
4238
4257
  type: type,
@@ -4244,10 +4263,10 @@ function error$1(id, data) {
4244
4263
  return eventObject;
4245
4264
  }
4246
4265
  function createInitEvent(input) {
4247
- return toSCXMLEvent({
4266
+ return {
4248
4267
  type: init,
4249
4268
  input: input
4250
- });
4269
+ };
4251
4270
  }
4252
4271
 
4253
4272
  exports.Interpreter = Interpreter;
@@ -4263,18 +4282,18 @@ exports._objectWithoutProperties = _objectWithoutProperties;
4263
4282
  exports._slicedToArray = _slicedToArray;
4264
4283
  exports._toConsumableArray = _toConsumableArray;
4265
4284
  exports.actionTypes = actionTypes;
4266
- exports.after = after$1;
4285
+ exports.after = after;
4267
4286
  exports.and = and;
4268
- exports.assign = assign$1;
4269
- exports.cancel = cancel$1;
4270
- exports.choose = choose$1;
4271
- exports.createDynamicAction = createDynamicAction;
4287
+ exports.assign = assign;
4288
+ exports.cancel = cancel;
4289
+ exports.choose = choose;
4290
+ exports.createEmptyActor = createEmptyActor;
4272
4291
  exports.createInitEvent = createInitEvent;
4273
4292
  exports.createInvokeId = createInvokeId;
4274
4293
  exports.createSpawner = createSpawner;
4275
4294
  exports.done = done;
4276
4295
  exports.doneInvoke = doneInvoke;
4277
- exports.error = error$1;
4296
+ exports.error = error;
4278
4297
  exports.escalate = escalate;
4279
4298
  exports.evaluateGuard = evaluateGuard;
4280
4299
  exports.flatten = flatten;
@@ -4292,17 +4311,18 @@ exports.getConfiguration = getConfiguration;
4292
4311
  exports.getDelayedTransitions = getDelayedTransitions;
4293
4312
  exports.getInitialConfiguration = getInitialConfiguration;
4294
4313
  exports.getPersistedState = getPersistedState;
4314
+ exports.getStateNodeByPath = getStateNodeByPath;
4295
4315
  exports.getStateNodes = getStateNodes;
4296
4316
  exports.initEvent = initEvent;
4297
4317
  exports.interpret = interpret;
4298
- exports.invoke = invoke;
4318
+ exports.invoke = invoke$1;
4299
4319
  exports.isActorRef = isActorRef;
4320
+ exports.isErrorEvent = isErrorEvent;
4300
4321
  exports.isInFinalState = isInFinalState;
4301
- exports.isSCXMLErrorEvent = isSCXMLErrorEvent;
4302
4322
  exports.isSignal = isSignal;
4303
4323
  exports.isStateId = isStateId;
4304
4324
  exports.isString = isString;
4305
- exports.log = log$1;
4325
+ exports.log = log;
4306
4326
  exports.macrostep = macrostep;
4307
4327
  exports.mapValues = mapValues;
4308
4328
  exports.matchesState = matchesState;
@@ -4312,19 +4332,18 @@ exports.not = not;
4312
4332
  exports.or = or;
4313
4333
  exports.pathToStateValue = pathToStateValue;
4314
4334
  exports.pure = pure;
4315
- exports.raise = raise$1;
4335
+ exports.raise = raise;
4316
4336
  exports.resolveActionObject = resolveActionObject;
4317
4337
  exports.resolveActionsAndContext = resolveActionsAndContext;
4318
4338
  exports.resolveReferencedActor = resolveReferencedActor;
4319
4339
  exports.resolveStateValue = resolveStateValue;
4320
- exports.respond = respond;
4321
- exports.send = send$1;
4340
+ exports.send = send;
4322
4341
  exports.sendParent = sendParent;
4323
4342
  exports.sendTo = sendTo;
4324
4343
  exports.startSignal = startSignal;
4325
4344
  exports.startSignalType = startSignalType;
4326
4345
  exports.stateIn = stateIn;
4327
- exports.stop = stop$1;
4346
+ exports.stop = stop;
4328
4347
  exports.stopSignal = stopSignal;
4329
4348
  exports.stopSignalType = stopSignalType;
4330
4349
  exports.toActionObject = toActionObject;
@@ -4334,6 +4353,5 @@ exports.toArray = toArray;
4334
4353
  exports.toGuardDefinition = toGuardDefinition;
4335
4354
  exports.toInvokeConfig = toInvokeConfig;
4336
4355
  exports.toObserver = toObserver;
4337
- exports.toSCXMLEvent = toSCXMLEvent;
4338
4356
  exports.toTransitionConfigArray = toTransitionConfigArray;
4339
4357
  exports.transitionNode = transitionNode;