xstate 4.25.0 → 4.27.0-pr2674-2021926101023

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 (50) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/xstate.cjs.d.ts +11 -0
  3. package/dist/xstate.cjs.js +16 -0
  4. package/dist/xstate.interpreter.js +1 -1
  5. package/dist/xstate.js +1 -1
  6. package/dist/xstate.web.js +2 -2
  7. package/es/Actor.d.ts +1 -2
  8. package/es/Machine.d.ts +5 -4
  9. package/es/State.d.ts +11 -9
  10. package/es/StateNode.d.ts +21 -15
  11. package/es/StateNode.js +15 -13
  12. package/es/actions.d.ts +4 -5
  13. package/es/behaviors.d.ts +1 -1
  14. package/es/devTools.d.ts +1 -1
  15. package/es/each.d.ts +1 -1
  16. package/es/index.d.ts +1 -0
  17. package/es/interpreter.d.ts +35 -25
  18. package/es/interpreter.js +2 -1
  19. package/es/model.d.ts +2 -2
  20. package/es/model.types.d.ts +8 -9
  21. package/es/scxml.d.ts +2 -2
  22. package/es/stateUtils.d.ts +7 -5
  23. package/es/stateUtils.js +7 -2
  24. package/es/typegenTypes.d.ts +92 -0
  25. package/es/types.d.ts +111 -50
  26. package/es/utils.d.ts +1 -1
  27. package/es/utils.js +1 -1
  28. package/lib/Actor.d.ts +1 -2
  29. package/lib/Machine.d.ts +5 -4
  30. package/lib/State.d.ts +11 -9
  31. package/lib/StateNode.d.ts +21 -15
  32. package/lib/StateNode.js +14 -12
  33. package/lib/actions.d.ts +4 -5
  34. package/lib/behaviors.d.ts +1 -1
  35. package/lib/devTools.d.ts +1 -1
  36. package/lib/each.d.ts +1 -1
  37. package/lib/index.d.ts +1 -0
  38. package/lib/interpreter.d.ts +35 -25
  39. package/lib/interpreter.js +2 -1
  40. package/lib/model.d.ts +2 -2
  41. package/lib/model.types.d.ts +8 -9
  42. package/lib/scxml.d.ts +2 -2
  43. package/lib/stateUtils.d.ts +7 -5
  44. package/lib/stateUtils.js +6 -0
  45. package/lib/typegenTypes.d.ts +92 -0
  46. package/lib/typegenTypes.js +2 -0
  47. package/lib/types.d.ts +111 -50
  48. package/lib/utils.d.ts +1 -1
  49. package/lib/utils.js +1 -1
  50. package/package.json +1 -1
package/lib/StateNode.js CHANGED
@@ -54,8 +54,8 @@ function () {
54
54
  /**
55
55
  * The initial extended state
56
56
  */
57
- _context // TODO: this is unsafe, but we're removing it in v5 anyway
58
- ) {
57
+ _context, // TODO: this is unsafe, but we're removing it in v5 anyway
58
+ _stateInfo) {
59
59
  var _this = this;
60
60
 
61
61
  if (_context === void 0) {
@@ -85,8 +85,8 @@ function () {
85
85
  this.idMap = {};
86
86
  this.tags = [];
87
87
  this.options = Object.assign(createDefaultOptions(), options);
88
- this.parent = this.options._parent;
89
- this.key = this.config.key || this.options._key || this.config.id || '(machine)';
88
+ this.parent = _stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.parent;
89
+ this.key = this.config.key || (_stateInfo === null || _stateInfo === void 0 ? void 0 : _stateInfo.key) || this.config.id || '(machine)';
90
90
  this.machine = this.parent ? this.parent.machine : this;
91
91
  this.path = this.parent ? this.parent.path.concat(this.key) : [];
92
92
  this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : constants.STATE_DELIMITER);
@@ -94,6 +94,7 @@ function () {
94
94
  this.version = this.parent ? this.parent.version : this.config.version;
95
95
  this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && utils.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');
96
96
  this.schema = this.parent ? this.machine.schema : (_a = this.config.schema) !== null && _a !== void 0 ? _a : {};
97
+ this.description = this.config.description;
97
98
 
98
99
  if (!environment.IS_PRODUCTION) {
99
100
  utils.warn(!('parallel' in this.config), "The \"parallel\" property is deprecated and will be removed in version 4.1. " + (this.config.parallel ? "Replace with `type: 'parallel'`" : "Use `type: '" + this.type + "'`") + " in the config for state node '" + this.id + "' instead.");
@@ -103,9 +104,9 @@ function () {
103
104
  this.states = this.config.states ? utils.mapValues(this.config.states, function (stateConfig, key) {
104
105
  var _a;
105
106
 
106
- var stateNode = new StateNode(stateConfig, {
107
- _parent: _this,
108
- _key: key
107
+ var stateNode = new StateNode(stateConfig, {}, undefined, {
108
+ parent: _this,
109
+ key: key
109
110
  });
110
111
  Object.assign(_this.idMap, _tslib.__assign((_a = {}, _a[stateNode.id] = stateNode, _a), stateNode.idMap));
111
112
  return stateNode;
@@ -271,7 +272,9 @@ function () {
271
272
  meta: this.meta,
272
273
  order: this.order || -1,
273
274
  data: this.doneData,
274
- invoke: this.invoke
275
+ invoke: this.invoke,
276
+ description: this.description,
277
+ tags: this.tags
275
278
  };
276
279
  },
277
280
  enumerable: false,
@@ -445,7 +448,8 @@ function () {
445
448
  return new State.State(_tslib.__assign(_tslib.__assign({}, state), {
446
449
  value: this.resolve(state.value),
447
450
  configuration: configuration,
448
- done: stateUtils.isInFinalState(configuration, this)
451
+ done: stateUtils.isInFinalState(configuration, this),
452
+ tags: stateUtils.getTagsFromConfiguration(configuration)
449
453
  }));
450
454
  };
451
455
 
@@ -978,9 +982,7 @@ function () {
978
982
  maybeNextState.changed = changed; // Preserve original history after raised events
979
983
 
980
984
  maybeNextState.history = history;
981
- maybeNextState.tags = new Set(utils.flatten(maybeNextState.configuration.map(function (sn) {
982
- return sn.tags;
983
- })));
985
+ maybeNextState.tags = stateUtils.getTagsFromConfiguration(maybeNextState.configuration);
984
986
  return maybeNextState;
985
987
  };
986
988
  /**
package/lib/actions.d.ts CHANGED
@@ -1,15 +1,14 @@
1
- import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseConditon, ChooseAction, AnyEventObject, Expr } from './types';
1
+ import { Action, Event, EventObject, SingleOrArray, SendAction, SendActionOptions, CancelAction, ActionObject, ActionType, Assigner, PropertyAssigner, AssignAction, ActionFunction, ActionFunctionMap, ActivityActionObject, ActionTypes, ActivityDefinition, RaiseAction, RaiseActionObject, DoneEvent, ErrorPlatformEvent, DoneEventObject, SendExpr, SendActionObject, PureAction, LogExpr, LogAction, LogActionObject, DelayFunctionMap, SCXML, ExprWithMeta, ChooseCondition, ChooseAction, AnyEventObject, Expr, StopAction, StopActionObject } from './types';
2
2
  import * as actionTypes from './actionTypes';
3
3
  import { State } from './State';
4
4
  import { StateNode } from './StateNode';
5
- import { StopAction, StopActionObject } from '.';
6
5
  export { actionTypes };
7
6
  export declare const initEvent: SCXML.Event<{
8
7
  type: ActionTypes;
9
8
  }>;
10
9
  export declare function getActionFunction<TContext, TEvent extends EventObject>(actionType: ActionType, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent> | ActionFunction<TContext, TEvent> | undefined;
11
10
  export declare function toActionObject<TContext, TEvent extends EventObject>(action: Action<TContext, TEvent>, actionFunctionMap?: ActionFunctionMap<TContext, TEvent>): ActionObject<TContext, TEvent>;
12
- export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: SingleOrArray<Action<TContext, TEvent>> | undefined, actionFunctionMap?: ActionFunctionMap<TContext, TEvent, ActionObject<TContext, TEvent>> | undefined) => ActionObject<TContext, TEvent>[];
11
+ export declare const toActionObjects: <TContext, TEvent extends EventObject>(action?: SingleOrArray<Action<TContext, TEvent>> | undefined, actionFunctionMap?: ActionFunctionMap<TContext, TEvent, import("./types").BaseActionObject> | undefined) => ActionObject<TContext, TEvent>[];
13
12
  export declare function toActivityDefinition<TContext, TEvent extends EventObject>(action: string | ActivityDefinition<TContext, TEvent>): ActivityDefinition<TContext, TEvent>;
14
13
  /**
15
14
  * Raises an event. This places the event in the internal event queue, so that
@@ -134,6 +133,6 @@ export declare function forwardTo<TContext, TEvent extends EventObject>(target:
134
133
  * @param options Options to pass into the send action creator.
135
134
  */
136
135
  export declare function escalate<TContext, TEvent extends EventObject, TErrorData = any>(errorData: TErrorData | ExprWithMeta<TContext, TEvent, TErrorData>, options?: SendActionOptions<TContext, TEvent>): SendAction<TContext, TEvent, AnyEventObject>;
137
- export declare function choose<TContext, TEvent extends EventObject>(conds: Array<ChooseConditon<TContext, TEvent>>): ChooseAction<TContext, TEvent>;
138
- export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any>, currentState: State<TContext, TEvent> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actions: Array<ActionObject<TContext, TEvent>>, preserveActionOrder?: boolean): [Array<ActionObject<TContext, TEvent>>, TContext];
136
+ export declare function choose<TContext, TEvent extends EventObject>(conds: Array<ChooseCondition<TContext, TEvent>>): ChooseAction<TContext, TEvent>;
137
+ export declare function resolveActions<TContext, TEvent extends EventObject>(machine: StateNode<TContext, any, TEvent, any, any>, currentState: State<TContext, TEvent> | undefined, currentContext: TContext, _event: SCXML.Event<TEvent>, actions: Array<ActionObject<TContext, TEvent>>, preserveActionOrder?: boolean): [Array<ActionObject<TContext, TEvent>>, TContext];
139
138
  //# sourceMappingURL=actions.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ActorContext, ActorRef, Behavior, EventObject } from '.';
1
+ import { ActorContext, ActorRef, Behavior, EventObject } from './types';
2
2
  /**
3
3
  * Returns an actor behavior from a reducer and its initial state.
4
4
  *
package/lib/devTools.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
- import { Interpreter } from '.';
3
2
  import { AnyInterpreter } from './types';
3
+ import { Interpreter } from './interpreter';
4
4
  declare type ServiceListener = (service: AnyInterpreter) => void;
5
5
  export interface XStateDevInterface {
6
6
  register: (service: Interpreter<any>) => void;
package/lib/each.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { EventObject, SingleOrArray, ActionObject } from '.';
1
+ import { EventObject, SingleOrArray, ActionObject } from './types';
2
2
  export declare function each<TContext, TEvent extends EventObject>(collection: keyof TContext, item: keyof TContext, actions: SingleOrArray<ActionObject<TContext, TEvent>>): ActionObject<TContext, TEvent>;
3
3
  export declare function each<TContext, TEvent extends EventObject>(collection: keyof TContext, item: keyof TContext, index: keyof TContext, actions: SingleOrArray<ActionObject<TContext, TEvent>>): ActionObject<TContext, TEvent>;
4
4
  //# sourceMappingURL=each.d.ts.map
package/lib/index.d.ts CHANGED
@@ -28,4 +28,5 @@ declare const actions: {
28
28
  };
29
29
  export { Actor, Machine, StateNode, State, matchesState, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema };
30
30
  export * from './types';
31
+ export * from './typegenTypes';
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,10 @@
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';
3
4
  export declare type StateListener<TContext, TEvent extends EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
4
5
  value: any;
5
6
  context: TContext;
6
- }> = (state: State<TContext, TEvent, TStateSchema, TTypestate>, event: TEvent) => void;
7
+ }, TResolvedTypesMeta = TypegenDisabled> = (state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, event: TEvent) => void;
7
8
  export declare type ContextListener<TContext = DefaultContext> = (context: TContext, prevContext: TContext | undefined) => void;
8
9
  export declare type EventListener<TEvent extends EventObject = EventObject> = (event: TEvent) => void;
9
10
  export declare type Listener = () => void;
@@ -29,15 +30,24 @@ declare global {
29
30
  export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
30
31
  value: any;
31
32
  context: TContext;
32
- }> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate>> {
33
- machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>;
33
+ }, TResolvedTypesMeta = TypegenDisabled> implements ActorRef<TEvent, State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>> {
34
+ machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate, any, TResolvedTypesMeta>;
34
35
  /**
35
36
  * The default interpreter options:
36
37
  *
37
38
  * - `clock` uses the global `setTimeout` and `clearTimeout` functions
38
39
  * - `logger` uses the global `console.log()` method
39
40
  */
40
- static defaultOptions: InterpreterOptions;
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
+ };
41
51
  /**
42
52
  * The current state of the interpreted machine.
43
53
  */
@@ -77,9 +87,9 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
77
87
  * @param machine The machine to be interpreted
78
88
  * @param options Interpreter options
79
89
  */
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>;
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>;
83
93
  static interpret: typeof interpret;
84
94
  /**
85
95
  * Executes the actions of the given state, with that state's `context` and `event`.
@@ -87,56 +97,56 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
87
97
  * @param state The state whose actions will be executed
88
98
  * @param actionsConfig The action implementations to use
89
99
  */
90
- execute(state: State<TContext, TEvent, TStateSchema, TTypestate>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
100
+ execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
91
101
  private update;
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;
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;
95
105
  /**
96
106
  * Adds an event listener that is notified whenever an event is sent to the running interpreter.
97
107
  * @param listener The event listener
98
108
  */
99
- onEvent(listener: EventListener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
109
+ onEvent(listener: EventListener): this;
100
110
  /**
101
111
  * Adds an event listener that is notified whenever a `send` event occurs.
102
112
  * @param listener The event listener
103
113
  */
104
- onSend(listener: EventListener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
114
+ onSend(listener: EventListener): this;
105
115
  /**
106
116
  * Adds a context listener that is notified whenever the state context changes.
107
117
  * @param listener The context listener
108
118
  */
109
- onChange(listener: ContextListener<TContext>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
119
+ onChange(listener: ContextListener<TContext>): this;
110
120
  /**
111
121
  * Adds a listener that is notified when the machine is stopped.
112
122
  * @param listener The listener
113
123
  */
114
- onStop(listener: Listener): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
124
+ onStop(listener: Listener): this;
115
125
  /**
116
126
  * Adds a state listener that is notified when the statechart has reached its final state.
117
127
  * @param listener The state listener
118
128
  */
119
- onDone(listener: EventListener<DoneEvent>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
129
+ onDone(listener: EventListener<DoneEvent>): this;
120
130
  /**
121
131
  * Removes a listener.
122
132
  * @param listener The listener to remove
123
133
  */
124
- off(listener: (...args: any[]) => void): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
134
+ off(listener: (...args: any[]) => void): this;
125
135
  /**
126
136
  * Alias for Interpreter.prototype.start
127
137
  */
128
- init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate> | undefined) => Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
138
+ init: (initialState?: StateValue | State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | undefined) => this;
129
139
  /**
130
140
  * Starts the interpreter from the given state, or the initial state.
131
141
  * @param initialState The state to start the statechart from
132
142
  */
133
- start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate> | StateValue): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
143
+ start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateValue): this;
134
144
  /**
135
145
  * Stops the interpreter and unsubscribe all listeners.
136
146
  *
137
147
  * This will also notify the `onStop` listeners.
138
148
  */
139
- stop(): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
149
+ stop(): this;
140
150
  /**
141
151
  * Sends an event to the running interpreter to trigger a transition.
142
152
  *
@@ -146,7 +156,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
146
156
  *
147
157
  * @param event The event(s) to send
148
158
  */
149
- send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate>;
159
+ send: (event: SingleOrArray<Event<TEvent>> | SCXML.Event<TEvent>, payload?: EventData | undefined) => State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
150
160
  private batch;
151
161
  /**
152
162
  * Returns a send function bound to this interpreter instance.
@@ -162,7 +172,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
162
172
  *
163
173
  * @param event The event to determine the next state
164
174
  */
165
- nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate>;
175
+ nextState(event: Event<TEvent> | SCXML.Event<TEvent>): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
166
176
  private forward;
167
177
  private defer;
168
178
  private cancel;
@@ -186,8 +196,8 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
186
196
  toJSON(): {
187
197
  id: string;
188
198
  };
189
- [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate>>;
190
- getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate>;
199
+ [Symbol.observable](): Subscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
200
+ getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
191
201
  }
192
202
  export declare function spawn<T extends Behavior<any, any>>(entity: T, nameOrOptions?: string | SpawnOptions): ActorRefFrom<T>;
193
203
  export declare function spawn<TC, TE extends EventObject>(entity: StateMachine<TC, any, TE>, nameOrOptions?: string | SpawnOptions): ActorRefFrom<StateMachine<TC, any, TE>>;
@@ -201,6 +211,6 @@ export declare function spawn(entity: Spawnable, nameOrOptions?: string | SpawnO
201
211
  export declare function interpret<TContext = DefaultContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
202
212
  value: any;
203
213
  context: TContext;
204
- }>(machine: StateMachine<TContext, TStateSchema, TEvent, TTypestate>, options?: Partial<InterpreterOptions>): Interpreter<TContext, TStateSchema, TEvent, TTypestate>;
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>;
205
215
  export {};
206
216
  //# sourceMappingURL=interpreter.d.ts.map
@@ -843,7 +843,8 @@ function () {
843
843
 
844
844
  var source = utils.isFunction(serviceCreator) ? serviceCreator(context, _event.data, {
845
845
  data: resolvedData,
846
- src: invokeSource
846
+ src: invokeSource,
847
+ meta: activity.meta
847
848
  }) : serviceCreator;
848
849
 
849
850
  if (!source) {
package/lib/model.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { EventObject, BaseActionObject } from './types';
2
- import { Cast, UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators, Prop, IsNever } from './model.types';
1
+ import type { Cast, EventObject, BaseActionObject, Prop, IsNever } from './types';
2
+ import { UnionFromCreatorsReturnTypes, FinalModelCreators, Model, ModelCreators } 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,18 +1,17 @@
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;
1
+ import { AnyFunction, AssignAction, Assigner, BaseActionObject, Compute, EventObject, ExtractEvent, MachineConfig, Prop, PropertyAssigner, StateMachine, InternalMachineOptions } from './types';
2
+ import { ResolveTypegenMeta, TypegenConstraint, TypegenDisabled } from './typegenTypes';
9
3
  export interface Model<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TModelCreators = void> {
10
4
  initialContext: TContext;
11
5
  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>>;
12
6
  events: Prop<TModelCreators, 'events'>;
13
7
  actions: Prop<TModelCreators, 'actions'>;
14
8
  reset: () => AssignAction<TContext, any>;
15
- createMachine: (config: MachineConfig<TContext, any, TEvent, TAction>, implementations?: Partial<MachineOptions<TContext, TEvent, TAction>>) => StateMachine<TContext, any, TEvent>;
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
+ };
16
15
  }
17
16
  export declare type ModelContextFrom<TModel extends Model<any, any, any, any>> = TModel extends Model<infer TContext, any, any, any> ? TContext : never;
18
17
  export declare type ModelEventsFrom<TModel extends Model<any, any, any, any> | undefined> = TModel extends Model<any, infer TEvent, any, any> ? TEvent : EventObject;
package/lib/scxml.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { StateNode } from './index';
1
+ import { StateMachine } from './index';
2
2
  export interface ScxmlToMachineOptions {
3
3
  delimiter?: string;
4
4
  }
5
- export declare function toMachine(xml: string, options: ScxmlToMachineOptions): StateNode;
5
+ export declare function toMachine(xml: string, options: ScxmlToMachineOptions): StateMachine<any, any, any>;
6
6
  //# sourceMappingURL=scxml.d.ts.map
@@ -1,15 +1,17 @@
1
- import { EventObject, StateNode, StateValue } from '.';
1
+ import { EventObject, StateValue } from './types';
2
+ import { StateNode } from './StateNode';
2
3
  declare type Configuration<TC, TE extends EventObject> = Iterable<StateNode<TC, any, TE>>;
3
4
  declare type AdjList<TC, TE extends EventObject> = Map<StateNode<TC, any, TE>, Array<StateNode<TC, any, TE>>>;
4
- export declare const isLeafNode: (stateNode: StateNode<any, any, any, any>) => boolean;
5
+ export declare const isLeafNode: (stateNode: StateNode<any, any, any, any, any>) => boolean;
5
6
  export declare function getChildren<TC, TE extends EventObject>(stateNode: StateNode<TC, any, TE>): Array<StateNode<TC, any, TE>>;
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>>): Iterable<StateNode<TC, any, TE, any>>;
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>>;
8
9
  export declare function getAdjList<TC, TE extends EventObject>(configuration: Configuration<TC, TE>): AdjList<TC, TE>;
9
10
  export declare function getValue<TC, TE extends EventObject>(rootNode: StateNode<TC, any, TE, any>, configuration: Configuration<TC, TE>): StateValue;
10
11
  export declare function has<T>(iterable: Iterable<T>, item: T): boolean;
11
12
  export declare function nextEvents<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE>>): Array<TE['type']>;
12
- export declare function isInFinalState<TC, TE extends EventObject>(configuration: Array<StateNode<TC, any, TE, any>>, stateNode: StateNode<TC, any, TE, any>): boolean;
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;
13
14
  export declare function getMeta(configuration?: StateNode[]): Record<string, any>;
15
+ export declare function getTagsFromConfiguration(configuration: StateNode<any, any, any, any>[]): Set<string>;
14
16
  export {};
15
17
  //# sourceMappingURL=stateUtils.d.ts.map
package/lib/stateUtils.js CHANGED
@@ -256,12 +256,18 @@ function getMeta(configuration) {
256
256
  return acc;
257
257
  }, {});
258
258
  }
259
+ function getTagsFromConfiguration(configuration) {
260
+ return new Set(utils.flatten(configuration.map(function (sn) {
261
+ return sn.tags;
262
+ })));
263
+ }
259
264
 
260
265
  exports.getAdjList = getAdjList;
261
266
  exports.getAllStateNodes = getAllStateNodes;
262
267
  exports.getChildren = getChildren;
263
268
  exports.getConfiguration = getConfiguration;
264
269
  exports.getMeta = getMeta;
270
+ exports.getTagsFromConfiguration = getTagsFromConfiguration;
265
271
  exports.getValue = getValue;
266
272
  exports.has = has;
267
273
  exports.isInFinalState = isInFinalState;
@@ -0,0 +1,92 @@
1
+ import { ActionObject, ActionFunction, Cast, ConditionPredicate, BaseActionObject, DelayConfig, EventObject, InvokeCreator, IndexByType, IsNever, MachineOptions, Prop, Values } from './types';
2
+ export interface TypegenDisabled {
3
+ '@@xstate/typegen': false;
4
+ }
5
+ export interface TypegenEnabled {
6
+ '@@xstate/typegen': true;
7
+ }
8
+ export interface TypegenMeta extends TypegenEnabled {
9
+ matchesStates: string;
10
+ tags: string;
11
+ missingImplementations: {
12
+ actions: string;
13
+ delays: string;
14
+ guards: string;
15
+ services: string;
16
+ };
17
+ internalEvents: {};
18
+ invokeSrcNameMap: Record<string, string>;
19
+ eventsCausingActions: Record<string, string>;
20
+ eventsCausingDelays: Record<string, string>;
21
+ eventsCausingGuards: Record<string, string>;
22
+ eventsCausingServices: Record<string, string>;
23
+ }
24
+ export interface ResolvedTypegenMeta extends TypegenMeta {
25
+ indexedActions: Record<string, BaseActionObject>;
26
+ indexedEvents: Record<string, EventObject>;
27
+ }
28
+ export declare type TypegenConstraint = TypegenEnabled | TypegenDisabled;
29
+ export declare type AreAllImplementationsAssumedToBeProvided<TResolvedTypesMeta, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = TResolvedTypesMeta extends TypegenEnabled ? IsNever<Values<{
30
+ [K in keyof TMissingImplementations]: TMissingImplementations[K];
31
+ }>> extends true ? true : false : true;
32
+ export declare type MarkAllImplementationsAsProvided<TResolvedTypesMeta> = TResolvedTypesMeta & {
33
+ missingImplementations: {
34
+ actions: never;
35
+ delays: never;
36
+ guards: never;
37
+ services: never;
38
+ };
39
+ };
40
+ declare type MergeWithInternalEvents<TIndexedEvents, TInternalEvents> = TIndexedEvents & Pick<TInternalEvents, Exclude<keyof TInternalEvents, keyof TIndexedEvents>>;
41
+ declare type AllowAllEvents = {
42
+ eventsCausingActions: Record<string, string>;
43
+ eventsCausingDelays: Record<string, string>;
44
+ eventsCausingGuards: Record<string, string>;
45
+ eventsCausingServices: Record<string, string>;
46
+ };
47
+ export declare type ResolveTypegenMeta<TTypesMeta extends TypegenConstraint, TEvent extends EventObject, TAction extends BaseActionObject> = TTypesMeta extends TypegenEnabled ? TTypesMeta & {
48
+ indexedActions: IndexByType<TAction>;
49
+ indexedEvents: MergeWithInternalEvents<IndexByType<TEvent>, Prop<TTypesMeta, 'internalEvents'>>;
50
+ } : MarkAllImplementationsAsProvided<TypegenDisabled> & AllowAllEvents & {
51
+ indexedActions: IndexByType<TAction>;
52
+ indexedEvents: Record<string, TEvent> & {
53
+ __XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__: {
54
+ data: any;
55
+ };
56
+ };
57
+ invokeSrcNameMap: Record<string, '__XSTATE_ALLOW_ANY_INVOKE_DATA_HACK__'>;
58
+ };
59
+ export declare type TypegenMachineOptionsActions<TContext, TResolvedTypesMeta, TEventsCausingActions = Prop<TResolvedTypesMeta, 'eventsCausingActions'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TIndexedActions = Prop<TResolvedTypesMeta, 'indexedActions'>> = {
60
+ [K in keyof TEventsCausingActions]?: ActionObject<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>> | ActionFunction<TContext, Cast<Prop<TIndexedEvents, TEventsCausingActions[K]>, EventObject>, Cast<Prop<TIndexedActions, K>, BaseActionObject>>;
61
+ };
62
+ export declare type TypegenMachineOptionsDelays<TContext, TResolvedTypesMeta, TEventsCausingDelays = Prop<TResolvedTypesMeta, 'eventsCausingDelays'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
63
+ [K in keyof TEventsCausingDelays]?: DelayConfig<TContext, Cast<Prop<TIndexedEvents, TEventsCausingDelays[K]>, EventObject>>;
64
+ };
65
+ export declare type TypegenMachineOptionsGuards<TContext, TResolvedTypesMeta, TEventsCausingGuards = Prop<TResolvedTypesMeta, 'eventsCausingGuards'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>> = {
66
+ [K in keyof TEventsCausingGuards]?: ConditionPredicate<TContext, Cast<Prop<TIndexedEvents, TEventsCausingGuards[K]>, EventObject>>;
67
+ };
68
+ export declare type TypegenMachineOptionsServices<TContext, TResolvedTypesMeta, TEventsCausingServices = Prop<TResolvedTypesMeta, 'eventsCausingServices'>, TIndexedEvents = Prop<TResolvedTypesMeta, 'indexedEvents'>, TInvokeSrcNameMap = Prop<TResolvedTypesMeta, 'invokeSrcNameMap'>> = {
69
+ [K in keyof TEventsCausingServices]?: InvokeCreator<TContext, Cast<Prop<TIndexedEvents, TEventsCausingServices[K]>, EventObject>, Prop<Prop<TIndexedEvents, Prop<TInvokeSrcNameMap, K>>, 'data'>>;
70
+ };
71
+ declare type MakeKeysRequired<T extends string> = {
72
+ [K in T]: unknown;
73
+ };
74
+ declare type MaybeMakeMissingImplementationsRequired<TImplementationType, TMissingImplementationsForType, TRequireMissingImplementations> = TRequireMissingImplementations extends true ? IsNever<TMissingImplementationsForType> extends true ? {} : {
75
+ [K in Cast<TImplementationType, string>]: MakeKeysRequired<Cast<TMissingImplementationsForType, string>>;
76
+ } : {};
77
+ declare type GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'actions', Prop<TMissingImplementations, 'actions'>, TRequireMissingImplementations> & {
78
+ actions?: TypegenMachineOptionsActions<TContext, TResolvedTypesMeta>;
79
+ };
80
+ declare type GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'delays', Prop<TMissingImplementations, 'delays'>, TRequireMissingImplementations> & {
81
+ delays?: TypegenMachineOptionsDelays<TContext, TResolvedTypesMeta>;
82
+ };
83
+ declare type GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'guards', Prop<TMissingImplementations, 'guards'>, TRequireMissingImplementations> & {
84
+ guards?: TypegenMachineOptionsGuards<TContext, TResolvedTypesMeta>;
85
+ };
86
+ declare type GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> = MaybeMakeMissingImplementationsRequired<'services', Prop<TMissingImplementations, 'services'>, TRequireMissingImplementations> & {
87
+ services?: TypegenMachineOptionsServices<TContext, TResolvedTypesMeta>;
88
+ };
89
+ export declare type TypegenMachineOptions<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations = Prop<TResolvedTypesMeta, 'missingImplementations'>> = GenerateActionsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateDelaysConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateGuardsConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations> & GenerateServicesConfigPart<TContext, TResolvedTypesMeta, TRequireMissingImplementations, TMissingImplementations>;
90
+ export declare type MaybeTypegenMachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TResolvedTypesMeta = TypegenDisabled, TRequireMissingImplementations extends boolean = false> = TResolvedTypesMeta extends TypegenEnabled ? TypegenMachineOptions<TContext, TResolvedTypesMeta, TRequireMissingImplementations> : MachineOptions<TContext, TEvent, TAction>;
91
+ export {};
92
+ //# sourceMappingURL=typegenTypes.d.ts.map
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });