xstate 4.27.0-pr2674-2021926101023 → 4.27.0

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 (65) hide show
  1. package/CHANGELOG.md +24 -12
  2. package/dist/xstate.interpreter.js +1 -1
  3. package/dist/xstate.js +1 -1
  4. package/dist/xstate.web.js +2 -2
  5. package/es/Actor.d.ts +2 -1
  6. package/es/Machine.d.ts +4 -5
  7. package/es/State.d.ts +14 -13
  8. package/es/State.js +10 -3
  9. package/es/StateNode.d.ts +16 -20
  10. package/es/StateNode.js +51 -57
  11. package/es/_virtual/_tslib.js +8 -4
  12. package/es/actions.d.ts +20 -3
  13. package/es/actions.js +7 -7
  14. package/es/behaviors.d.ts +1 -1
  15. package/es/devTools.d.ts +2 -3
  16. package/es/devTools.js +4 -0
  17. package/es/each.d.ts +1 -1
  18. package/es/index.d.ts +0 -1
  19. package/es/interpreter.d.ts +25 -35
  20. package/es/interpreter.js +21 -16
  21. package/es/model.d.ts +2 -2
  22. package/es/model.types.d.ts +9 -8
  23. package/es/registry.js +1 -1
  24. package/es/scxml.d.ts +2 -2
  25. package/es/stateUtils.d.ts +5 -6
  26. package/es/stateUtils.js +1 -1
  27. package/es/types.d.ts +52 -104
  28. package/es/utils.d.ts +1 -1
  29. package/es/utils.js +10 -10
  30. package/lib/Actor.d.ts +2 -1
  31. package/lib/Machine.d.ts +4 -5
  32. package/lib/SimulatedClock.js +9 -5
  33. package/lib/State.d.ts +14 -13
  34. package/lib/State.js +10 -3
  35. package/lib/StateNode.d.ts +16 -20
  36. package/lib/StateNode.js +49 -55
  37. package/lib/_virtual/_tslib.js +8 -4
  38. package/lib/actions.d.ts +20 -3
  39. package/lib/actions.js +7 -7
  40. package/lib/behaviors.d.ts +1 -1
  41. package/lib/devTools.d.ts +2 -3
  42. package/lib/devTools.js +4 -0
  43. package/lib/each.d.ts +1 -1
  44. package/lib/index.d.ts +0 -1
  45. package/lib/interpreter.d.ts +25 -35
  46. package/lib/interpreter.js +21 -16
  47. package/lib/json.js +7 -7
  48. package/lib/model.d.ts +2 -2
  49. package/lib/model.js +14 -10
  50. package/lib/model.types.d.ts +9 -8
  51. package/lib/patterns.js +2 -2
  52. package/lib/registry.js +1 -1
  53. package/lib/scxml.d.ts +2 -2
  54. package/lib/scxml.js +29 -25
  55. package/lib/stateUtils.d.ts +5 -6
  56. package/lib/stateUtils.js +1 -1
  57. package/lib/types.d.ts +52 -104
  58. package/lib/utils.d.ts +1 -1
  59. package/lib/utils.js +10 -10
  60. package/package.json +4 -8
  61. package/dist/xstate.cjs.d.ts +0 -11
  62. package/dist/xstate.cjs.js +0 -16
  63. package/es/typegenTypes.d.ts +0 -92
  64. package/lib/typegenTypes.d.ts +0 -92
  65. package/lib/typegenTypes.js +0 -2
@@ -1,10 +1,9 @@
1
1
  import { StateMachine, Event, EventObject, DefaultContext, StateSchema, StateValue, InterpreterOptions, SingleOrArray, Subscribable, DoneEvent, MachineOptions, SCXML, EventData, Observer, Spawnable, Typestate, ActorRef, ActorRefFrom, Behavior, Subscription } from './types';
2
2
  import { State } from './State';
3
- import { AreAllImplementationsAssumedToBeProvided, TypegenDisabled } from './typegenTypes';
4
3
  export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
5
4
  value: any;
6
5
  context: TContext;
7
- }, TResolvedTypesMeta = TypegenDisabled> = (state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, event: TEvent) => void;
6
+ }> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
8
7
  export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
9
8
  export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
10
9
  export declare type Listener = () => void;
@@ -30,24 +29,15 @@ declare global {
30
29
  export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
31
30
  value: any;
32
31
  context: TContext;
33
- }, TResolvedTypesMeta = TypegenDisabled> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>> {
34
- machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, TResolvedTypesMeta>;
32
+ }> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate>> {
33
+ machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
35
34
  /**
36
35
  * The default interpreter options:
37
36
  *
38
37
  * - `clock` uses the global `setTimeout` and `clearTimeout` functions
39
38
  * - `logger` uses the global `console.log()` method
40
39
  */
41
- static defaultOptions: {
42
- execute: boolean;
43
- deferEvents: boolean;
44
- clock: {
45
- setTimeout: (fn: any, ms: any) => number;
46
- clearTimeout: (id: any) => void;
47
- };
48
- logger: any;
49
- devTools: boolean;
50
- };
40
+ static defaultOptions: InterpreterOptions;
51
41
  /**
52
42
  * The current state of the interpreted machine.
53
43
  */
@@ -87,9 +77,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
87
77
  * @param machine The machine to be interpreted
88
78
  * @param options Interpreter options
89
79
  */
90
- constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, TResolvedTypesMeta>, options?: InterpreterOptions);
91
- get initialState(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
92
- get state(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
80
+ constructor(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?: Partial<InterpreterOptions>);
81
+ get initialState(): State<TContext, TEvent, TStateSchema, TTypestate>;
82
+ get state(): State<TContext, TEvent, TStateSchema, TTypestate>;
93
83
  static interpret: typeof interpret;
94
84
  /**
95
85
  * Executes the actions of the given state, with that state's `context` and `event`.
@@ -97,56 +87,56 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
97
87
  * @param state The state whose actions will be executed
98
88
  * @param actionsConfig The action implementations to use
99
89
  */
100
- execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
90
+ execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
101
91
  private update;
102
- onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
103
- subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
104
- subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>): Subscription;
92
+ onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate>): this;
93
+ subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
94
+ subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate>>): Subscription;
105
95
  /**
106
96
  * Adds an event listener that is notified whenever an event is sent to the running interpreter.
107
97
  * @param listener The event listener
108
98
  */
109
- onEvent(listener: EventListener): this;
99
+ onEvent(listener: EventListener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
110
100
  /**
111
101
  * Adds an event listener that is notified whenever a `send` event occurs.
112
102
  * @param listener The event listener
113
103
  */
114
- onSend(listener: EventListener): this;
104
+ onSend(listener: EventListener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
115
105
  /**
116
106
  * Adds a context listener that is notified whenever the state context changes.
117
107
  * @param listener The context listener
118
108
  */
119
- onChange(listener: ContextListener<TContext>): this;
109
+ onChange(listener: ContextListener<TContext>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
120
110
  /**
121
111
  * Adds a listener that is notified when the machine is stopped.
122
112
  * @param listener The listener
123
113
  */
124
- onStop(listener: Listener): this;
114
+ onStop(listener: Listener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
125
115
  /**
126
116
  * Adds a state listener that is notified when the statechart has reached its final state.
127
117
  * @param listener The state listener
128
118
  */
129
- onDone(listener: EventListener<DoneEvent>): this;
119
+ onDone(listener: EventListener<DoneEvent>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
130
120
  /**
131
121
  * Removes a listener.
132
122
  * @param listener The listener to remove
133
123
  */
134
- off(listener: (...args: any[]) => void): this;
124
+ off(listener: (...args: any[]) => void): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
135
125
  /**
136
126
  * Alias for Interpreter.prototype.start
137
127
  */
138
- init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | undefined) => this;
128
+ init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate> | undefined) => Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
139
129
  /**
140
130
  * Starts the interpreter from the given state, or the initial state.
141
131
  * @param initialState The state to start the statechart from
142
132
  */
143
- start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateValue): this;
133
+ start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
144
134
  /**
145
135
  * Stops the interpreter and unsubscribe all listeners.
146
136
  *
147
137
  * This will also notify the `onStop` listeners.
148
138
  */
149
- stop(): this;
139
+ stop(): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
150
140
  /**
151
141
  * Sends an event to the running interpreter to trigger a transition.
152
142
  *
@@ -156,7 +146,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
156
146
  *
157
147
  * @param event The event(s) to send
158
148
  */
159
- send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
149
+ send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
160
150
  private batch;
161
151
  /**
162
152
  * Returns a send function bound to this interpreter instance.
@@ -172,7 +162,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
172
162
  *
173
163
  * @param event The event to determine the next state
174
164
  */
175
- nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
165
+ nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
176
166
  private forward;
177
167
  private defer;
178
168
  private cancel;
@@ -196,8 +186,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
196
186
  toJSON(): {
197
187
  id: string;
198
188
  };
199
- [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
200
- getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
189
+ [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate>>;
190
+ getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate>;
201
191
  }
202
192
  export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
203
193
  export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE>>;
@@ -211,6 +201,6 @@ export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnO
211
201
  export declare function interpret<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
212
202
  value: any;
213
203
  context: TContext;
214
- }, TResolvedTypesMeta = TypegenDisabled>(machine: AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta> extends true ? StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, TResolvedTypesMeta> : 'Some implementations missing', options?: InterpreterOptions): Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta>;
204
+ }>(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?: Partial<InterpreterOptions>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
215
205
  export {};
216
206
  //# sourceMappingURL=interpreter.d.ts.map
package/es/interpreter.js CHANGED
@@ -87,14 +87,15 @@ function () {
87
87
  if (_this.status === InterpreterStatus.Stopped) {
88
88
  // do nothing
89
89
  if (!IS_PRODUCTION) {
90
- warn(false, "Event \"" + _event.name + "\" was sent to stopped service \"" + _this.machine.id + "\". This service has already reached its final state, and will not transition.\nEvent: " + JSON.stringify(_event.data));
90
+ warn(false, "Event \"".concat(_event.name, "\" was sent to stopped service \"").concat(_this.machine.id, "\". This service has already reached its final state, and will not transition.\nEvent: ").concat(JSON.stringify(_event.data)));
91
91
  }
92
92
 
93
93
  return _this.state;
94
94
  }
95
95
 
96
96
  if (_this.status !== InterpreterStatus.Running && !_this.options.deferEvents) {
97
- throw new Error("Event \"" + _event.name + "\" was sent to uninitialized service \"" + _this.machine.id + "\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: " + JSON.stringify(_event.data));
97
+ throw new Error("Event \"".concat(_event.name, "\" was sent to uninitialized service \"").concat(_this.machine.id // tslint:disable-next-line:max-line-length
98
+ , "\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ").concat(JSON.stringify(_event.data)));
98
99
  }
99
100
 
100
101
  _this.scheduler.schedule(function () {
@@ -116,12 +117,12 @@ function () {
116
117
 
117
118
  if (!target) {
118
119
  if (!isParent) {
119
- throw new Error("Unable to send event to child '" + to + "' from service '" + _this.id + "'.");
120
+ throw new Error("Unable to send event to child '".concat(to, "' from service '").concat(_this.id, "'."));
120
121
  } // tslint:disable-next-line:no-console
121
122
 
122
123
 
123
124
  if (!IS_PRODUCTION) {
124
- warn(false, "Service '" + _this.id + "' has no parent: unable to send event " + event.type);
125
+ warn(false, "Service '".concat(_this.id, "' has no parent: unable to send event ").concat(event.type));
125
126
  }
126
127
 
127
128
  return;
@@ -130,7 +131,7 @@ function () {
130
131
  if ('machine' in target) {
131
132
  // Send SCXML events to machines
132
133
  target.send(__assign(__assign({}, event), {
133
- name: event.name === error$1 ? "" + error(_this.id) : event.name,
134
+ name: event.name === error$1 ? "".concat(error(_this.id)) : event.name,
134
135
  origin: _this.sessionId
135
136
  }));
136
137
  } else {
@@ -176,7 +177,7 @@ function () {
176
177
  Object.defineProperty(Interpreter.prototype, "state", {
177
178
  get: function () {
178
179
  if (!IS_PRODUCTION) {
179
- warn(this.status !== InterpreterStatus.NotStarted, "Attempted to read state from uninitialized service '" + this.id + "'. Make sure the service is started first.");
180
+ warn(this.status !== InterpreterStatus.NotStarted, "Attempted to read state from uninitialized service '".concat(this.id, "'. Make sure the service is started first."));
180
181
  }
181
182
 
182
183
  return this._state;
@@ -616,11 +617,11 @@ function () {
616
617
  if (this.status === InterpreterStatus.NotStarted && this.options.deferEvents) {
617
618
  // tslint:disable-next-line:no-console
618
619
  if (!IS_PRODUCTION) {
619
- warn(false, events.length + " event(s) were sent to uninitialized service \"" + this.machine.id + "\" and are deferred. Make sure .start() is called for this service.\nEvent: " + JSON.stringify(event));
620
+ warn(false, "".concat(events.length, " event(s) were sent to uninitialized service \"").concat(this.machine.id, "\" and are deferred. Make sure .start() is called for this service.\nEvent: ").concat(JSON.stringify(event)));
620
621
  }
621
622
  } else if (this.status !== InterpreterStatus.Running) {
622
623
  throw new Error( // tslint:disable-next-line:max-line-length
623
- events.length + " event(s) were sent to uninitialized service \"" + this.machine.id + "\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.");
624
+ "".concat(events.length, " event(s) were sent to uninitialized service \"").concat(this.machine.id, "\". Make sure .start() is called for this service, or set { deferEvents: true } in the service options."));
624
625
  }
625
626
 
626
627
  this.scheduler.schedule(function () {
@@ -640,7 +641,7 @@ function () {
640
641
  });
641
642
  batchedActions.push.apply(batchedActions, __spreadArray([], __read(nextState.actions.map(function (a) {
642
643
  return bindActionToState(a, nextState);
643
- }))));
644
+ })), false));
644
645
  batchChanged = batchChanged || !!nextState.changed;
645
646
  };
646
647
 
@@ -713,7 +714,7 @@ function () {
713
714
  var child = this.children.get(id);
714
715
 
715
716
  if (!child) {
716
- throw new Error("Unable to forward event '" + event + "' from interpreter '" + this.id + "' to nonexistant child '" + id + "'.");
717
+ throw new Error("Unable to forward event '".concat(event, "' from interpreter '").concat(this.id, "' to nonexistant child '").concat(id, "'."));
717
718
  }
718
719
 
719
720
  child.send(event);
@@ -800,6 +801,10 @@ function () {
800
801
 
801
802
  case start:
802
803
  {
804
+ if (this.status !== InterpreterStatus.Running) {
805
+ return;
806
+ }
807
+
803
808
  var activity = action.activity; // If the activity will be stopped right after it's started
804
809
  // (such as in transient states)
805
810
  // don't bother starting the activity.
@@ -817,7 +822,7 @@ function () {
817
822
 
818
823
  if (!IS_PRODUCTION) {
819
824
  warn(!('forward' in activity), // tslint:disable-next-line:max-line-length
820
- "`forward` property is deprecated (found in invocation of '" + activity.src + "' in in machine '" + this.machine.id + "'). " + "Please use `autoForward` instead.");
825
+ "`forward` property is deprecated (found in invocation of '".concat(activity.src, "' in in machine '").concat(this.machine.id, "'). ") + "Please use `autoForward` instead.");
821
826
  }
822
827
 
823
828
  var autoForward = 'autoForward' in activity ? activity.autoForward : !!activity.forward;
@@ -825,7 +830,7 @@ function () {
825
830
  if (!serviceCreator) {
826
831
  // tslint:disable-next-line:no-console
827
832
  if (!IS_PRODUCTION) {
828
- warn(false, "No service found for invocation '" + activity.src + "' in machine '" + this.machine.id + "'.");
833
+ warn(false, "No service found for invocation '".concat(activity.src, "' in machine '").concat(this.machine.id, "'."));
829
834
  }
830
835
 
831
836
  return;
@@ -886,7 +891,7 @@ function () {
886
891
 
887
892
  default:
888
893
  if (!IS_PRODUCTION) {
889
- warn(false, "No implementation found for action type '" + action.type + "'");
894
+ warn(false, "No implementation found for action type '".concat(action.type, "'"));
890
895
  }
891
896
 
892
897
  break;
@@ -935,7 +940,7 @@ function () {
935
940
  } else if (isBehavior(entity)) {
936
941
  return this.spawnBehavior(entity, name);
937
942
  } else {
938
- throw new Error("Unable to spawn entity \"" + name + "\" of type \"" + typeof entity + "\".");
943
+ throw new Error("Unable to spawn entity \"".concat(name, "\" of type \"").concat(typeof entity, "\"."));
939
944
  }
940
945
  };
941
946
 
@@ -1211,7 +1216,7 @@ function () {
1211
1216
 
1212
1217
  if (!implementation) {
1213
1218
  if (!IS_PRODUCTION) {
1214
- warn(false, "No implementation found for activity '" + activity.type + "'");
1219
+ warn(false, "No implementation found for activity '".concat(activity.type, "'"));
1215
1220
  } // tslint:disable-next-line:no-console
1216
1221
 
1217
1222
 
@@ -1343,7 +1348,7 @@ function spawn(entity, nameOrOptions) {
1343
1348
  return consume(function (service) {
1344
1349
  if (!IS_PRODUCTION) {
1345
1350
  var isLazyEntity = isMachine(entity) || isFunction(entity);
1346
- warn(!!service || isLazyEntity, "Attempted to spawn an Actor (ID: \"" + (isMachine(entity) ? entity.id : 'undefined') + "\") outside of a service. This will have no effect.");
1351
+ warn(!!service || isLazyEntity, "Attempted to spawn an Actor (ID: \"".concat(isMachine(entity) ? entity.id : 'undefined', "\") outside of a service. This will have no effect."));
1347
1352
  }
1348
1353
 
1349
1354
  if (service) {
package/es/model.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Cast, EventObject, BaseActionObject, Prop, IsNever } from './types';
2
- import { UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators } from './model.types';
1
+ import type { EventObject, BaseActionObject } from './types';
2
+ import { Cast, UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators, Prop, IsNever } from './model.types';
3
3
  export declare function createModel<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject>(initialContext: TContext): Model<TContext, TEvent, TAction, void>;
4
4
  export declare function createModel<TContext, TModelCreators extends ModelCreators<TModelCreators>, TFinalModelCreators = FinalModelCreators<TModelCreators>, TComputedEvent = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'events'>>, TComputedAction = UnionFromCreatorsReturnTypes<Prop<TFinalModelCreators, 'actions'>>>(initialContext: TContext, creators: TModelCreators): Model<TContext, Cast<TComputedEvent, EventObject>, IsNever<TComputedAction> extends true ? BaseActionObject : Cast<TComputedAction, BaseActionObject>, TFinalModelCreators>;
5
5
  //# sourceMappingURL=model.d.ts.map
@@ -1,17 +1,18 @@
1
- import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, ExtractEvent, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions } from './types';
2
- import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
1
+ import { EventObject, Assigner, ExtractEvent, PropertyAssigner, AssignAction, MachineConfig, MachineOptions, StateMachine, BaseActionObject } from './types';
2
+ export declare type AnyFunction = (...args: any[]) => any;
3
+ export declare type IsNever<T> = [T] extends [never] ? true : false;
4
+ export declare type Cast<T extends any, TCastType extends any> = T extends TCastType ? T : TCastType;
5
+ export declare type Compute<A extends any> = {
6
+ [K in keyof A]: A[K];
7
+ } & unknown;
8
+ export declare type Prop<T, K> = K extends keyof T ? T[K] : never;
3
9
  export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
4
10
  initialContext: TContext;
5
11
  assign: <TEventType extends TEvent['type'] = TEvent['type']>(assigner: Assigner<TContext, ExtractEvent<TEvent, TEventType>> | PropertyAssigner<TContext, ExtractEvent<TEvent, TEventType>>, eventType?: TEventType) => AssignAction<TContext, ExtractEvent<TEvent, TEventType>>;
6
12
  events: Prop<TModelCreators, 'events'>;
7
13
  actions: Prop<TModelCreators, 'actions'>;
8
14
  reset: () => AssignAction<TContext, any>;
9
- createMachine: {
10
- <TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, any, TEvent, TAction, TTypesMeta>, implementations?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction>>): StateMachine<TContext, any, TEvent, {
11
- value: any;
12
- context: TContext;
13
- }, TAction, ResolveTypegenMeta<TTypesMeta, TEvent, TAction>>;
14
- };
15
+ createMachine: (config: MachineConfig<TContext, any, TEvent, TAction>, implementations?: Partial<MachineOptions<TContext, TEvent, TAction>>) => StateMachine<TContext, any, TEvent>;
15
16
  }
16
17
  export declare type ModelContextFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<infer TContext, any, any, any> ? TContext : never;
17
18
  export declare type ModelEventsFrom<TModel extends Model<any, any, any, any> | undefined> = TModel extends Model<any, infer TEvent, any, any> ? TEvent : EventObject;
package/es/registry.js CHANGED
@@ -2,7 +2,7 @@ var children = /*#__PURE__*/new Map();
2
2
  var sessionIdIndex = 0;
3
3
  var registry = {
4
4
  bookId: function () {
5
- return "x:" + sessionIdIndex++;
5
+ return "x:".concat(sessionIdIndex++);
6
6
  },
7
7
  register: function (id, actor) {
8
8
  children.set(id, actor);
package/es/scxml.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { StateMachine } from './index';
1
+ import { StateNode } from './index';
2
2
  export interface ScxmlToMachineOptions {
3
3
  delimiter?: string;
4
4
  }
5
- export declare function toMachine(xml: string, options: ScxmlToMachineOptions): StateMachine<any, any, any>;
5
+ export declare function toMachine(xml: string, options: ScxmlToMachineOptions): StateNode;
6
6
  //# sourceMappingURL=scxml.d.ts.map
@@ -1,16 +1,15 @@
1
- import { EventObject, StateValue } from './types';
2
- import { StateNode } from './StateNode';
1
+ import { EventObject, StateNode, StateValue } from '.';
3
2
  declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
4
3
  declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
5
- export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any>) => boolean;
4
+ export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
6
5
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
7
- export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any, any>): Array<StateNode<TC, any, TE, any, any>>;
8
- export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any, any>>): Iterable<StateNode<TC, any, TE, any, any>>;
6
+ export declare function getAllStateNodes<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE, any>): Array<StateNode<TC, any, TE, any>>;
7
+ export declare function getConfiguration<TC, TE extends EventObject>(prevStateNodes: Iterable<StateNode<TC, any, TE, any>>, stateNodes: Iterable<StateNode<TC, any, TE, any>>): Set<StateNode<TC, any, TE, any>>;
9
8
  export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
10
9
  export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
11
10
  export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
12
11
  export declare function nextEvents<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE>>): Array<TE['type']>;
13
- export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any, any>>, stateNode: StateNode<TC, any, TE, any, any>): boolean;
12
+ export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any>>, stateNode: StateNode<TC, any, TE, any>): boolean;
14
13
  export declare function getMeta(configuration?: StateNode[]): Record<string, any>;
15
14
  export declare function getTagsFromConfiguration(configuration: StateNode<any, any, any, any>[]): Set<string>;
16
15
  export {};
package/es/stateUtils.js CHANGED
@@ -222,7 +222,7 @@ function has(iterable, item) {
222
222
  function nextEvents(configuration) {
223
223
  return __spreadArray([], __read(new Set(flatten(__spreadArray([], __read(configuration.map(function (sn) {
224
224
  return sn.ownEvents;
225
- })))))));
225
+ })), false)))), false);
226
226
  }
227
227
  function isInFinalState(configuration, stateNode) {
228
228
  if (stateNode.type === 'compound') {