xstate 4.32.1 → 5.0.0-alpha.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 (206) hide show
  1. package/CHANGELOG.md +483 -0
  2. package/actions/ExecutableAction.ts +58 -0
  3. package/actions/dist/xstate-actions.cjs.d.ts +1 -0
  4. package/actions/dist/xstate-actions.cjs.dev.js +32 -0
  5. package/actions/dist/xstate-actions.cjs.js +7 -0
  6. package/actions/dist/xstate-actions.cjs.prod.js +32 -0
  7. package/actions/dist/xstate-actions.esm.js +2 -0
  8. package/actions/dynamicAction.ts +34 -0
  9. package/actions/package.json +4 -0
  10. package/actors/dist/xstate-actors.cjs.d.ts +1 -0
  11. package/actors/dist/xstate-actors.cjs.dev.js +21 -0
  12. package/actors/dist/xstate-actors.cjs.js +7 -0
  13. package/actors/dist/xstate-actors.cjs.prod.js +21 -0
  14. package/actors/dist/xstate-actors.esm.js +2 -0
  15. package/actors/package.json +4 -0
  16. package/dev/dist/xstate-dev.cjs.d.ts +1 -0
  17. package/dev/dist/xstate-dev.cjs.dev.js +11 -0
  18. package/dev/dist/xstate-dev.cjs.js +7 -0
  19. package/{lib/devTools.js → dev/dist/xstate-dev.cjs.prod.js} +17 -10
  20. package/dev/dist/xstate-dev.esm.js +1 -0
  21. package/dev/package.json +4 -0
  22. package/dist/Machine-9ce74c11.cjs.dev.js +755 -0
  23. package/dist/Machine-dca041dc.cjs.prod.js +749 -0
  24. package/dist/Machine-fb2f47f5.esm.js +751 -0
  25. package/dist/actions-6b86876d.cjs.dev.js +4815 -0
  26. package/dist/actions-70094c93.cjs.prod.js +4765 -0
  27. package/dist/actions-ff512f16.esm.js +4757 -0
  28. package/dist/declarations/actions/ExecutableAction.d.ts +23 -0
  29. package/dist/declarations/actions/dynamicAction.d.ts +3 -0
  30. package/dist/declarations/src/Machine.d.ts +4 -0
  31. package/dist/declarations/src/Mailbox.d.ts +12 -0
  32. package/dist/declarations/src/ObservableActorRef.d.ts +25 -0
  33. package/{lib → dist/declarations/src}/SimulatedClock.d.ts +0 -1
  34. package/dist/declarations/src/State.d.ts +104 -0
  35. package/dist/declarations/src/StateMachine.d.ts +112 -0
  36. package/dist/declarations/src/StateNode.d.ts +127 -0
  37. package/{es → dist/declarations/src}/actionTypes.d.ts +0 -3
  38. package/dist/declarations/src/actions/assign.d.ts +7 -0
  39. package/dist/declarations/src/actions/cancel.d.ts +10 -0
  40. package/dist/declarations/src/actions/choose.d.ts +3 -0
  41. package/dist/declarations/src/actions/invoke.d.ts +3 -0
  42. package/dist/declarations/src/actions/log.d.ts +11 -0
  43. package/dist/declarations/src/actions/pure.d.ts +3 -0
  44. package/dist/declarations/src/actions/raise.d.ts +9 -0
  45. package/dist/declarations/src/actions/send.d.ts +55 -0
  46. package/dist/declarations/src/actions/stop.d.ts +8 -0
  47. package/dist/declarations/src/actions.d.ts +44 -0
  48. package/dist/declarations/src/actors.d.ts +38 -0
  49. package/dist/declarations/src/constants.d.ts +5 -0
  50. package/{lib/devTools.d.ts → dist/declarations/src/dev/index.d.ts} +2 -2
  51. package/{es → dist/declarations/src}/environment.d.ts +0 -1
  52. package/dist/declarations/src/guards.d.ts +9 -0
  53. package/dist/declarations/src/index.d.ts +47 -0
  54. package/dist/declarations/src/interpreter.d.ts +147 -0
  55. package/{es → dist/declarations/src}/mapState.d.ts +0 -1
  56. package/dist/declarations/src/match.d.ts +5 -0
  57. package/dist/declarations/src/memo.d.ts +1 -0
  58. package/dist/declarations/src/model.d.ts +5 -0
  59. package/{lib → dist/declarations/src}/model.types.d.ts +6 -9
  60. package/dist/declarations/src/registry.d.ts +8 -0
  61. package/{es → dist/declarations/src}/schema.d.ts +0 -1
  62. package/dist/declarations/src/spawn.d.ts +2 -0
  63. package/dist/declarations/src/stateUtils.d.ts +85 -0
  64. package/{lib → dist/declarations/src}/typegenTypes.d.ts +16 -17
  65. package/dist/declarations/src/types.d.ts +1026 -0
  66. package/dist/declarations/src/utils.d.ts +56 -0
  67. package/{es/devTools.js → dist/index-20b364c4.esm.js} +18 -6
  68. package/dist/index-2a564d03.cjs.dev.js +64 -0
  69. package/dist/xstate.cjs.d.ts +1 -0
  70. package/dist/xstate.cjs.dev.js +217 -0
  71. package/dist/xstate.cjs.js +7 -0
  72. package/dist/xstate.cjs.prod.js +217 -0
  73. package/dist/xstate.esm.js +172 -0
  74. package/guards/dist/xstate-guards.cjs.d.ts +1 -0
  75. package/guards/dist/xstate-guards.cjs.dev.js +15 -0
  76. package/guards/dist/xstate-guards.cjs.js +7 -0
  77. package/guards/dist/xstate-guards.cjs.prod.js +15 -0
  78. package/guards/dist/xstate-guards.esm.js +2 -0
  79. package/guards/package.json +4 -0
  80. package/invoke/package.json +4 -0
  81. package/model/dist/xstate-model.cjs.d.ts +1 -0
  82. package/model/dist/xstate-model.cjs.dev.js +41 -0
  83. package/model/dist/xstate-model.cjs.js +7 -0
  84. package/model/dist/xstate-model.cjs.prod.js +41 -0
  85. package/model/dist/xstate-model.esm.js +37 -0
  86. package/model/package.json +4 -0
  87. package/package.json +21 -30
  88. package/dist/xstate.interpreter.js +0 -15
  89. package/dist/xstate.js +0 -15
  90. package/dist/xstate.web.js +0 -15
  91. package/es/Actor.d.ts +0 -25
  92. package/es/Actor.js +0 -99
  93. package/es/Machine.d.ts +0 -12
  94. package/es/Machine.js +0 -14
  95. package/es/SimulatedClock.d.ts +0 -17
  96. package/es/SimulatedClock.js +0 -81
  97. package/es/State.d.ts +0 -123
  98. package/es/State.js +0 -274
  99. package/es/StateNode.d.ts +0 -287
  100. package/es/StateNode.js +0 -1566
  101. package/es/_virtual/_tslib.js +0 -78
  102. package/es/actionTypes.js +0 -22
  103. package/es/actions.d.ts +0 -154
  104. package/es/actions.js +0 -520
  105. package/es/behaviors.d.ts +0 -37
  106. package/es/behaviors.js +0 -131
  107. package/es/constants.d.ts +0 -6
  108. package/es/constants.js +0 -6
  109. package/es/devTools.d.ts +0 -14
  110. package/es/each.d.ts +0 -4
  111. package/es/each.js +0 -13
  112. package/es/environment.js +0 -3
  113. package/es/index.d.ts +0 -22
  114. package/es/index.js +0 -23
  115. package/es/interpreter.d.ts +0 -209
  116. package/es/interpreter.js +0 -1402
  117. package/es/invoke.d.ts +0 -11
  118. package/es/invokeUtils.d.ts +0 -7
  119. package/es/invokeUtils.js +0 -40
  120. package/es/json.d.ts +0 -31
  121. package/es/json.js +0 -86
  122. package/es/mapState.js +0 -32
  123. package/es/match.d.ts +0 -9
  124. package/es/match.js +0 -34
  125. package/es/model.d.ts +0 -5
  126. package/es/model.js +0 -50
  127. package/es/model.types.d.ts +0 -56
  128. package/es/patterns.d.ts +0 -14
  129. package/es/patterns.js +0 -48
  130. package/es/registry.d.ts +0 -9
  131. package/es/registry.js +0 -19
  132. package/es/scheduler.d.ts +0 -17
  133. package/es/scheduler.js +0 -79
  134. package/es/schema.js +0 -6
  135. package/es/scxml.d.ts +0 -6
  136. package/es/serviceScope.d.ts +0 -4
  137. package/es/serviceScope.js +0 -16
  138. package/es/stateUtils.d.ts +0 -17
  139. package/es/stateUtils.js +0 -259
  140. package/es/typegenTypes.d.ts +0 -133
  141. package/es/types.d.ts +0 -1031
  142. package/es/types.js +0 -33
  143. package/es/utils.d.ts +0 -72
  144. package/es/utils.js +0 -626
  145. package/es/waitFor.d.ts +0 -32
  146. package/es/waitFor.js +0 -71
  147. package/lib/Actor.d.ts +0 -25
  148. package/lib/Actor.js +0 -108
  149. package/lib/Machine.d.ts +0 -12
  150. package/lib/Machine.js +0 -19
  151. package/lib/SimulatedClock.js +0 -85
  152. package/lib/State.d.ts +0 -123
  153. package/lib/State.js +0 -282
  154. package/lib/StateNode.d.ts +0 -287
  155. package/lib/StateNode.js +0 -1570
  156. package/lib/_virtual/_tslib.js +0 -85
  157. package/lib/actionTypes.d.ts +0 -20
  158. package/lib/actionTypes.js +0 -43
  159. package/lib/actions.d.ts +0 -154
  160. package/lib/actions.js +0 -552
  161. package/lib/behaviors.d.ts +0 -37
  162. package/lib/behaviors.js +0 -137
  163. package/lib/constants.d.ts +0 -6
  164. package/lib/constants.js +0 -13
  165. package/lib/each.d.ts +0 -4
  166. package/lib/each.js +0 -17
  167. package/lib/environment.d.ts +0 -2
  168. package/lib/environment.js +0 -7
  169. package/lib/index.d.ts +0 -22
  170. package/lib/index.js +0 -60
  171. package/lib/interpreter.d.ts +0 -209
  172. package/lib/interpreter.js +0 -1408
  173. package/lib/invoke.d.ts +0 -11
  174. package/lib/invoke.js +0 -20
  175. package/lib/invokeUtils.d.ts +0 -7
  176. package/lib/invokeUtils.js +0 -45
  177. package/lib/json.d.ts +0 -31
  178. package/lib/json.js +0 -94
  179. package/lib/mapState.d.ts +0 -4
  180. package/lib/mapState.js +0 -36
  181. package/lib/match.d.ts +0 -9
  182. package/lib/match.js +0 -38
  183. package/lib/model.d.ts +0 -5
  184. package/lib/model.js +0 -54
  185. package/lib/model.types.js +0 -2
  186. package/lib/patterns.d.ts +0 -14
  187. package/lib/patterns.js +0 -53
  188. package/lib/registry.d.ts +0 -9
  189. package/lib/registry.js +0 -23
  190. package/lib/scheduler.d.ts +0 -17
  191. package/lib/scheduler.js +0 -83
  192. package/lib/schema.d.ts +0 -3
  193. package/lib/schema.js +0 -11
  194. package/lib/scxml.d.ts +0 -6
  195. package/lib/scxml.js +0 -350
  196. package/lib/serviceScope.d.ts +0 -4
  197. package/lib/serviceScope.js +0 -21
  198. package/lib/stateUtils.d.ts +0 -17
  199. package/lib/stateUtils.js +0 -273
  200. package/lib/typegenTypes.js +0 -2
  201. package/lib/types.d.ts +0 -1031
  202. package/lib/types.js +0 -35
  203. package/lib/utils.d.ts +0 -72
  204. package/lib/utils.js +0 -673
  205. package/lib/waitFor.d.ts +0 -32
  206. package/lib/waitFor.js +0 -75
package/es/State.d.ts DELETED
@@ -1,123 +0,0 @@
1
- import { StateValue, ActivityMap, EventObject, HistoryValue, ActionObject, EventType, StateConfig, SCXML, StateSchema, TransitionDefinition, Typestate, ActorRef, StateMachine, SimpleEventsOf } from './types';
2
- import { StateNode } from './StateNode';
3
- import { TypegenDisabled, TypegenEnabled } from './typegenTypes';
4
- import { BaseActionObject, Prop } from './types';
5
- export declare function stateValuesEqual(a: StateValue | undefined, b: StateValue | undefined): boolean;
6
- export declare function isStateConfig<TContext, TEvent extends EventObject>(state: any): state is StateConfig<TContext, TEvent>;
7
- /**
8
- * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.
9
- */
10
- export declare const isState: typeof isStateConfig;
11
- export declare function bindActionToState<TC, TE extends EventObject>(action: ActionObject<TC, TE>, state: State<TC, TE, any, any, any>): ActionObject<TC, TE>;
12
- export declare class State<TContext, TEvent extends EventObject = EventObject, TStateSchema extends StateSchema<TContext> = any, TTypestate extends Typestate<TContext> = {
13
- value: any;
14
- context: TContext;
15
- }, TResolvedTypesMeta = TypegenDisabled> {
16
- value: StateValue;
17
- context: TContext;
18
- historyValue?: HistoryValue | undefined;
19
- history?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
20
- actions: Array<ActionObject<TContext, TEvent>>;
21
- activities: ActivityMap;
22
- meta: any;
23
- events: TEvent[];
24
- event: TEvent;
25
- _event: SCXML.Event<TEvent>;
26
- _sessionid: string | null;
27
- /**
28
- * Indicates whether the state has changed from the previous state. A state is considered "changed" if:
29
- *
30
- * - Its value is not equal to its previous value, or:
31
- * - It has any new actions (side-effects) to execute.
32
- *
33
- * An initial state (with no history) will return `undefined`.
34
- */
35
- changed: boolean | undefined;
36
- /**
37
- * Indicates whether the state is a final state.
38
- */
39
- done: boolean | undefined;
40
- /**
41
- * The enabled state nodes representative of the state value.
42
- */
43
- configuration: Array<StateNode<TContext, any, TEvent, any, any>>;
44
- /**
45
- * The next events that will cause a transition from the current state.
46
- */
47
- nextEvents: EventType[];
48
- /**
49
- * The transition definitions that resulted in this state.
50
- */
51
- transitions: Array<TransitionDefinition<TContext, TEvent>>;
52
- /**
53
- * An object mapping actor IDs to spawned actors/invoked services.
54
- */
55
- children: Record<string, ActorRef<any>>;
56
- tags: Set<string>;
57
- machine: StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, any, TResolvedTypesMeta> | undefined;
58
- /**
59
- * Creates a new State instance for the given `stateValue` and `context`.
60
- * @param stateValue
61
- * @param context
62
- */
63
- static from<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE, any, any, any> | StateValue, context?: TC | undefined): State<TC, TE, any, any, any>;
64
- /**
65
- * Creates a new State instance for the given `config`.
66
- * @param config The state config
67
- */
68
- static create<TC, TE extends EventObject = EventObject>(config: StateConfig<TC, TE>): State<TC, TE, any, any, any>;
69
- /**
70
- * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).
71
- * @param stateValue
72
- * @param context
73
- */
74
- static inert<TC, TE extends EventObject = EventObject>(stateValue: State<TC, TE, any, any, any> | StateValue, context: TC): State<TC, TE>;
75
- /**
76
- * Creates a new State instance.
77
- * @param value The state value
78
- * @param context The extended state
79
- * @param historyValue The tree representing historical values of the state nodes
80
- * @param history The previous state
81
- * @param actions An array of action objects to execute as side-effects
82
- * @param activities A mapping of activities and whether they are started (`true`) or stopped (`false`).
83
- * @param meta
84
- * @param events Internal event queue. Should be empty with run-to-completion semantics.
85
- * @param configuration
86
- */
87
- constructor(config: StateConfig<TContext, TEvent>);
88
- /**
89
- * Returns an array of all the string leaf state node paths.
90
- * @param stateValue
91
- * @param delimiter The character(s) that separate each subpath in the string state node path.
92
- */
93
- toStrings(stateValue?: StateValue, delimiter?: string): string[];
94
- toJSON(): Omit<this, "machine" | "configuration" | "transitions" | "tags"> & {
95
- tags: string[];
96
- };
97
- /**
98
- * Whether the current state value is a subset of the given parent state value.
99
- * @param parentStateValue
100
- */
101
- matches<TSV extends TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'matchesStates'> : never>(parentStateValue: TSV): boolean;
102
- matches<TSV extends TResolvedTypesMeta extends TypegenDisabled ? TTypestate['value'] : never>(parentStateValue: TSV): this is State<(TTypestate extends any ? {
103
- value: TSV;
104
- context: any;
105
- } extends TTypestate ? TTypestate : never : never)['context'], TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> & {
106
- value: TSV;
107
- };
108
- /**
109
- * Whether the current state configuration has a state node with the specified `tag`.
110
- * @param tag
111
- */
112
- hasTag(tag: TResolvedTypesMeta extends TypegenEnabled ? Prop<Prop<TResolvedTypesMeta, 'resolved'>, 'tags'> : string): boolean;
113
- /**
114
- * Determines whether sending the `event` will cause a non-forbidden transition
115
- * to be selected, even if the transitions have no actions nor
116
- * change the state value.
117
- *
118
- * @param event The event to test
119
- * @returns Whether the event will cause a transition
120
- */
121
- can(event: TEvent | SimpleEventsOf<TEvent>['type']): boolean;
122
- }
123
- //# sourceMappingURL=State.d.ts.map
package/es/State.js DELETED
@@ -1,274 +0,0 @@
1
- import { __assign, __spreadArray, __read, __rest } from './_virtual/_tslib.js';
2
- import { EMPTY_ACTIVITY_MAP } from './constants.js';
3
- import { isString, matchesState, warn } from './utils.js';
4
- import { getMeta, nextEvents } from './stateUtils.js';
5
- import { initEvent } from './actions.js';
6
- import { IS_PRODUCTION } from './environment.js';
7
-
8
- function stateValuesEqual(a, b) {
9
- if (a === b) {
10
- return true;
11
- }
12
-
13
- if (a === undefined || b === undefined) {
14
- return false;
15
- }
16
-
17
- if (isString(a) || isString(b)) {
18
- return a === b;
19
- }
20
-
21
- var aKeys = Object.keys(a);
22
- var bKeys = Object.keys(b);
23
- return aKeys.length === bKeys.length && aKeys.every(function (key) {
24
- return stateValuesEqual(a[key], b[key]);
25
- });
26
- }
27
- function isStateConfig(state) {
28
- if (typeof state !== 'object' || state === null) {
29
- return false;
30
- }
31
-
32
- return 'value' in state && '_event' in state;
33
- }
34
- /**
35
- * @deprecated Use `isStateConfig(object)` or `state instanceof State` instead.
36
- */
37
-
38
- var isState = isStateConfig;
39
- function bindActionToState(action, state) {
40
- var exec = action.exec;
41
-
42
- var boundAction = __assign(__assign({}, action), {
43
- exec: exec !== undefined ? function () {
44
- return exec(state.context, state.event, {
45
- action: action,
46
- state: state,
47
- _event: state._event
48
- });
49
- } : undefined
50
- });
51
-
52
- return boundAction;
53
- }
54
-
55
- var State =
56
- /*#__PURE__*/
57
-
58
- /** @class */
59
- function () {
60
- /**
61
- * Creates a new State instance.
62
- * @param value The state value
63
- * @param context The extended state
64
- * @param historyValue The tree representing historical values of the state nodes
65
- * @param history The previous state
66
- * @param actions An array of action objects to execute as side-effects
67
- * @param activities A mapping of activities and whether they are started (`true`) or stopped (`false`).
68
- * @param meta
69
- * @param events Internal event queue. Should be empty with run-to-completion semantics.
70
- * @param configuration
71
- */
72
- function State(config) {
73
- var _this = this;
74
-
75
- var _a;
76
-
77
- this.actions = [];
78
- this.activities = EMPTY_ACTIVITY_MAP;
79
- this.meta = {};
80
- this.events = [];
81
- this.value = config.value;
82
- this.context = config.context;
83
- this._event = config._event;
84
- this._sessionid = config._sessionid;
85
- this.event = this._event.data;
86
- this.historyValue = config.historyValue;
87
- this.history = config.history;
88
- this.actions = config.actions || [];
89
- this.activities = config.activities || EMPTY_ACTIVITY_MAP;
90
- this.meta = getMeta(config.configuration);
91
- this.events = config.events || [];
92
- this.matches = this.matches.bind(this);
93
- this.toStrings = this.toStrings.bind(this);
94
- this.configuration = config.configuration;
95
- this.transitions = config.transitions;
96
- this.children = config.children;
97
- this.done = !!config.done;
98
- this.tags = (_a = Array.isArray(config.tags) ? new Set(config.tags) : config.tags) !== null && _a !== void 0 ? _a : new Set();
99
- this.machine = config.machine;
100
- Object.defineProperty(this, 'nextEvents', {
101
- get: function () {
102
- return nextEvents(_this.configuration);
103
- }
104
- });
105
- }
106
- /**
107
- * Creates a new State instance for the given `stateValue` and `context`.
108
- * @param stateValue
109
- * @param context
110
- */
111
-
112
-
113
- State.from = function (stateValue, context) {
114
- if (stateValue instanceof State) {
115
- if (stateValue.context !== context) {
116
- return new State({
117
- value: stateValue.value,
118
- context: context,
119
- _event: stateValue._event,
120
- _sessionid: null,
121
- historyValue: stateValue.historyValue,
122
- history: stateValue.history,
123
- actions: [],
124
- activities: stateValue.activities,
125
- meta: {},
126
- events: [],
127
- configuration: [],
128
- transitions: [],
129
- children: {}
130
- });
131
- }
132
-
133
- return stateValue;
134
- }
135
-
136
- var _event = initEvent;
137
- return new State({
138
- value: stateValue,
139
- context: context,
140
- _event: _event,
141
- _sessionid: null,
142
- historyValue: undefined,
143
- history: undefined,
144
- actions: [],
145
- activities: undefined,
146
- meta: undefined,
147
- events: [],
148
- configuration: [],
149
- transitions: [],
150
- children: {}
151
- });
152
- };
153
- /**
154
- * Creates a new State instance for the given `config`.
155
- * @param config The state config
156
- */
157
-
158
-
159
- State.create = function (config) {
160
- return new State(config);
161
- };
162
- /**
163
- * Creates a new `State` instance for the given `stateValue` and `context` with no actions (side-effects).
164
- * @param stateValue
165
- * @param context
166
- */
167
-
168
-
169
- State.inert = function (stateValue, context) {
170
- if (stateValue instanceof State) {
171
- if (!stateValue.actions.length) {
172
- return stateValue;
173
- }
174
-
175
- var _event = initEvent;
176
- return new State({
177
- value: stateValue.value,
178
- context: context,
179
- _event: _event,
180
- _sessionid: null,
181
- historyValue: stateValue.historyValue,
182
- history: stateValue.history,
183
- activities: stateValue.activities,
184
- configuration: stateValue.configuration,
185
- transitions: [],
186
- children: {}
187
- });
188
- }
189
-
190
- return State.from(stateValue, context);
191
- };
192
- /**
193
- * Returns an array of all the string leaf state node paths.
194
- * @param stateValue
195
- * @param delimiter The character(s) that separate each subpath in the string state node path.
196
- */
197
-
198
-
199
- State.prototype.toStrings = function (stateValue, delimiter) {
200
- var _this = this;
201
-
202
- if (stateValue === void 0) {
203
- stateValue = this.value;
204
- }
205
-
206
- if (delimiter === void 0) {
207
- delimiter = '.';
208
- }
209
-
210
- if (isString(stateValue)) {
211
- return [stateValue];
212
- }
213
-
214
- var valueKeys = Object.keys(stateValue);
215
- return valueKeys.concat.apply(valueKeys, __spreadArray([], __read(valueKeys.map(function (key) {
216
- return _this.toStrings(stateValue[key], delimiter).map(function (s) {
217
- return key + delimiter + s;
218
- });
219
- })), false));
220
- };
221
-
222
- State.prototype.toJSON = function () {
223
- var _a = this;
224
- _a.configuration;
225
- _a.transitions;
226
- var tags = _a.tags;
227
- _a.machine;
228
- var jsonValues = __rest(_a, ["configuration", "transitions", "tags", "machine"]);
229
-
230
- return __assign(__assign({}, jsonValues), {
231
- tags: Array.from(tags)
232
- });
233
- };
234
-
235
- State.prototype.matches = function (parentStateValue) {
236
- return matchesState(parentStateValue, this.value);
237
- };
238
- /**
239
- * Whether the current state configuration has a state node with the specified `tag`.
240
- * @param tag
241
- */
242
-
243
-
244
- State.prototype.hasTag = function (tag) {
245
- return this.tags.has(tag);
246
- };
247
- /**
248
- * Determines whether sending the `event` will cause a non-forbidden transition
249
- * to be selected, even if the transitions have no actions nor
250
- * change the state value.
251
- *
252
- * @param event The event to test
253
- * @returns Whether the event will cause a transition
254
- */
255
-
256
-
257
- State.prototype.can = function (event) {
258
- var _a;
259
-
260
- if (IS_PRODUCTION) {
261
- warn(!!this.machine, "state.can(...) used outside of a machine-created State object; this will always return false.");
262
- }
263
-
264
- var transitionData = (_a = this.machine) === null || _a === void 0 ? void 0 : _a.getTransitionData(this, event);
265
- return !!(transitionData === null || transitionData === void 0 ? void 0 : transitionData.transitions.length) && // Check that at least one transition is not forbidden
266
- transitionData.transitions.some(function (t) {
267
- return t.target !== undefined || t.actions.length;
268
- });
269
- };
270
-
271
- return State;
272
- }();
273
-
274
- export { State, bindActionToState, isState, isStateConfig, stateValuesEqual };
package/es/StateNode.d.ts DELETED
@@ -1,287 +0,0 @@
1
- import { Event, StateValue, StateTransition, MachineOptions, EventObject, HistoryValue, StateNodeDefinition, TransitionDefinition, DelayedTransitionDefinition, ActivityDefinition, StateNodeConfig, StateSchema, StateNodesConfig, InvokeDefinition, ActionObject, Mapper, PropertyMapper, SCXML, Typestate, TransitionDefinitionMap, MachineSchema, InternalMachineOptions, ServiceMap, StateConfig } from './types';
2
- import { State } from './State';
3
- import { TypegenDisabled } from './typegenTypes';
4
- declare class StateNode<TContext = any, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
5
- value: any;
6
- context: TContext;
7
- }, TServiceMap extends ServiceMap = ServiceMap, TResolvedTypesMeta = TypegenDisabled> {
8
- /**
9
- * The raw config used to create the machine.
10
- */
11
- config: StateNodeConfig<TContext, TStateSchema, TEvent>;
12
- /**
13
- * The initial extended state
14
- */
15
- private _context;
16
- /**
17
- * The relative key of the state node, which represents its location in the overall state value.
18
- */
19
- key: string;
20
- /**
21
- * The unique ID of the state node.
22
- */
23
- id: string;
24
- /**
25
- * The machine's own version.
26
- */
27
- version?: string;
28
- /**
29
- * The type of this state node:
30
- *
31
- * - `'atomic'` - no child state nodes
32
- * - `'compound'` - nested child state nodes (XOR)
33
- * - `'parallel'` - orthogonal nested child state nodes (AND)
34
- * - `'history'` - history state node
35
- * - `'final'` - final state node
36
- */
37
- type: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';
38
- /**
39
- * The string path from the root machine node to this node.
40
- */
41
- path: string[];
42
- /**
43
- * The initial state node key.
44
- */
45
- initial?: keyof TStateSchema['states'];
46
- /**
47
- * (DEPRECATED) Whether the state node is a parallel state node.
48
- *
49
- * Use `type: 'parallel'` instead.
50
- */
51
- parallel?: boolean;
52
- /**
53
- * Whether the state node is "transient". A state node is considered transient if it has
54
- * an immediate transition from a "null event" (empty string), taken upon entering the state node.
55
- */
56
- private _transient;
57
- /**
58
- * The child state nodes.
59
- */
60
- states: StateNodesConfig<TContext, TStateSchema, TEvent>;
61
- /**
62
- * The type of history on this state node. Can be:
63
- *
64
- * - `'shallow'` - recalls only top-level historical state value
65
- * - `'deep'` - recalls historical state value at all levels
66
- */
67
- history: false | 'shallow' | 'deep';
68
- /**
69
- * The action(s) to be executed upon entering the state node.
70
- */
71
- onEntry: Array<ActionObject<TContext, TEvent>>;
72
- /**
73
- * The action(s) to be executed upon exiting the state node.
74
- */
75
- onExit: Array<ActionObject<TContext, TEvent>>;
76
- /**
77
- * The activities to be started upon entering the state node,
78
- * and stopped upon exiting the state node.
79
- */
80
- activities: Array<ActivityDefinition<TContext, TEvent>>;
81
- strict: boolean;
82
- /**
83
- * The parent state node.
84
- */
85
- parent?: StateNode<TContext, any, TEvent, any, any, any>;
86
- /**
87
- * The root machine node.
88
- */
89
- machine: StateNode<TContext, any, TEvent, TTypestate>;
90
- /**
91
- * The meta data associated with this state node, which will be returned in State instances.
92
- */
93
- meta?: TStateSchema extends {
94
- meta: infer D;
95
- } ? D : any;
96
- /**
97
- * The data sent with the "done.state._id_" event if this is a final state node.
98
- */
99
- doneData?: Mapper<TContext, TEvent, any> | PropertyMapper<TContext, TEvent, any>;
100
- /**
101
- * The string delimiter for serializing the path to a string. The default is "."
102
- */
103
- delimiter: string;
104
- /**
105
- * The order this state node appears. Corresponds to the implicit SCXML document order.
106
- */
107
- order: number;
108
- /**
109
- * The services invoked by this state node.
110
- */
111
- invoke: Array<InvokeDefinition<TContext, TEvent>>;
112
- options: MachineOptions<TContext, TEvent>;
113
- schema: MachineSchema<TContext, TEvent>;
114
- __xstatenode: true;
115
- description?: string;
116
- private __cache;
117
- private idMap;
118
- tags: string[];
119
- constructor(
120
- /**
121
- * The raw config used to create the machine.
122
- */
123
- config: StateNodeConfig<TContext, TStateSchema, TEvent>, options?: MachineOptions<TContext, TEvent>,
124
- /**
125
- * The initial extended state
126
- */
127
- _context?: Readonly<TContext> | (() => Readonly<TContext>), // TODO: this is unsafe, but we're removing it in v5 anyway
128
- _stateInfo?: {
129
- parent: StateNode<any, any, any, any, any, any>;
130
- key: string;
131
- });
132
- private _init;
133
- /**
134
- * Clones this state machine with custom options and context.
135
- *
136
- * @param options Options (actions, guards, activities, services) to recursively merge with the existing options.
137
- * @param context Custom context (will override predefined context)
138
- */
139
- withConfig(options: InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, true>, context?: TContext | (() => TContext)): StateNode<TContext, TStateSchema, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>;
140
- /**
141
- * Clones this state machine with custom context.
142
- *
143
- * @param context Custom context (will override predefined context, not recursive)
144
- */
145
- withContext(context: TContext | (() => TContext)): StateNode<TContext, TStateSchema, TEvent, TTypestate>;
146
- get context(): TContext;
147
- /**
148
- * The well-structured state node definition.
149
- */
150
- get definition(): StateNodeDefinition<TContext, TStateSchema, TEvent>;
151
- toJSON(): StateNodeDefinition<TContext, TStateSchema, TEvent>;
152
- /**
153
- * The mapping of events to transitions.
154
- */
155
- get on(): TransitionDefinitionMap<TContext, TEvent>;
156
- get after(): Array<DelayedTransitionDefinition<TContext, TEvent>>;
157
- /**
158
- * All the transitions that can be taken from this state node.
159
- */
160
- get transitions(): Array<TransitionDefinition<TContext, TEvent>>;
161
- private getCandidates;
162
- /**
163
- * All delayed transitions from the config.
164
- */
165
- private getDelayedTransitions;
166
- /**
167
- * Returns the state nodes represented by the current state value.
168
- *
169
- * @param state The state value or State instance
170
- */
171
- getStateNodes(state: StateValue | State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>): Array<StateNode<TContext, any, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>>;
172
- /**
173
- * Returns `true` if this state node explicitly handles the given event.
174
- *
175
- * @param event The event in question
176
- */
177
- handles(event: Event<TEvent>): boolean;
178
- /**
179
- * Resolves the given `state` to a new `State` instance relative to this machine.
180
- *
181
- * This ensures that `.events` and `.nextEvents` represent the correct values.
182
- *
183
- * @param state The state to resolve
184
- */
185
- resolveState(state: State<TContext, TEvent, any, any> | StateConfig<TContext, TEvent>): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
186
- private transitionLeafNode;
187
- private transitionCompoundNode;
188
- private transitionParallelNode;
189
- private _transition;
190
- getTransitionData(state: State<TContext, TEvent, any, any, any>, event: Event<TEvent> | SCXML.Event<TEvent>): StateTransition<TContext, TEvent> | undefined;
191
- private next;
192
- private nodesFromChild;
193
- /**
194
- * Whether the given state node "escapes" this state node. If the `stateNode` is equal to or the parent of
195
- * this state node, it does not escape.
196
- */
197
- private escapes;
198
- private getActions;
199
- /**
200
- * Determines the next state given the current `state` and sent `event`.
201
- *
202
- * @param state The current State instance or state value
203
- * @param event The event that was sent at the current state
204
- * @param context The current context (extended state) of the current state
205
- */
206
- transition(state: StateValue | State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta> | undefined, event: Event<TEvent> | SCXML.Event<TEvent>, context?: TContext): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
207
- private resolveRaisedTransition;
208
- private resolveTransition;
209
- /**
210
- * Returns the child state node from its relative `stateKey`, or throws.
211
- */
212
- getStateNode(stateKey: string): StateNode<TContext, any, TEvent, TTypestate, TServiceMap, TResolvedTypesMeta>;
213
- /**
214
- * Returns the state node with the given `stateId`, or throws.
215
- *
216
- * @param stateId The state ID. The prefix "#" is removed.
217
- */
218
- getStateNodeById(stateId: string): StateNode<TContext, any, TEvent, any, TServiceMap, TResolvedTypesMeta>;
219
- /**
220
- * Returns the relative state node from the given `statePath`, or throws.
221
- *
222
- * @param statePath The string or string array relative path to the state node.
223
- */
224
- getStateNodeByPath(statePath: string | string[]): StateNode<TContext, any, TEvent, any, any, any>;
225
- /**
226
- * Resolves a partial state value with its full representation in this machine.
227
- *
228
- * @param stateValue The partial state value to resolve.
229
- */
230
- resolve(stateValue: StateValue): StateValue;
231
- private getResolvedPath;
232
- private get initialStateValue();
233
- getInitialState(stateValue: StateValue, context?: TContext): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
234
- /**
235
- * The initial State instance, which includes all actions to be executed from
236
- * entering the initial state.
237
- */
238
- get initialState(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
239
- /**
240
- * The target state value of the history state node, if it exists. This represents the
241
- * default state value to transition to if no history value exists yet.
242
- */
243
- get target(): StateValue | undefined;
244
- /**
245
- * Returns the leaf nodes from a state path relative to this state node.
246
- *
247
- * @param relativeStateId The relative state path to retrieve the state nodes
248
- * @param history The previous state to retrieve history
249
- * @param resolve Whether state nodes should resolve to initial child state nodes
250
- */
251
- getRelativeStateNodes(relativeStateId: StateNode<TContext, any, TEvent>, historyValue?: HistoryValue, resolve?: boolean): Array<StateNode<TContext, any, TEvent>>;
252
- get initialStateNodes(): Array<StateNode<TContext, any, TEvent, any, any, any>>;
253
- /**
254
- * Retrieves state nodes from a relative path to this state node.
255
- *
256
- * @param relativePath The relative path from this state node
257
- * @param historyValue
258
- */
259
- getFromRelativePath(relativePath: string[]): Array<StateNode<TContext, any, TEvent, any, any, any>>;
260
- private historyValue;
261
- /**
262
- * Resolves to the historical value(s) of the parent state node,
263
- * represented by state nodes.
264
- *
265
- * @param historyValue
266
- */
267
- private resolveHistory;
268
- /**
269
- * All the state node IDs of this state node and its descendant state nodes.
270
- */
271
- get stateIds(): string[];
272
- /**
273
- * All the event types accepted by this state node and its descendants.
274
- */
275
- get events(): Array<TEvent['type']>;
276
- /**
277
- * All the events that have transitions directly from this state node.
278
- *
279
- * Excludes any inert events.
280
- */
281
- get ownEvents(): Array<TEvent['type']>;
282
- private resolveTarget;
283
- private formatTransition;
284
- private formatTransitions;
285
- }
286
- export { StateNode };
287
- //# sourceMappingURL=StateNode.d.ts.map