xstate 4.30.2 → 4.30.3
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.
- package/CHANGELOG.md +16 -0
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Machine.d.ts +1 -2
- package/es/State.js +5 -5
- package/es/StateNode.js +19 -19
- package/es/actions.js +3 -3
- package/es/behaviors.js +2 -2
- package/es/index.d.ts +12 -10
- package/es/index.js +5 -4
- package/es/interpreter.d.ts +2 -0
- package/es/interpreter.js +9 -5
- package/es/invokeUtils.js +2 -2
- package/es/mapState.js +2 -2
- package/es/stateUtils.js +2 -2
- package/es/types.d.ts +5 -3
- package/es/utils.d.ts +1 -4
- package/es/utils.js +9 -27
- package/lib/Machine.d.ts +1 -2
- package/lib/State.js +4 -4
- package/lib/StateNode.js +18 -18
- package/lib/actions.js +2 -2
- package/lib/behaviors.js +2 -2
- package/lib/index.d.ts +12 -10
- package/lib/index.js +15 -10
- package/lib/interpreter.d.ts +2 -0
- package/lib/interpreter.js +9 -5
- package/lib/invokeUtils.js +2 -2
- package/lib/mapState.js +1 -1
- package/lib/scxml.js +1 -1
- package/lib/stateUtils.js +1 -1
- package/lib/types.d.ts +5 -3
- package/lib/utils.d.ts +1 -4
- package/lib/utils.js +7 -26
- package/package.json +1 -1
package/es/types.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare type IndexByType<T extends {
|
|
|
22
22
|
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
23
|
export declare type IsAny<T> = Equals<T, any>;
|
|
24
24
|
export declare type Cast<A, B> = A extends B ? A : B;
|
|
25
|
+
export declare type NoInfer<T> = [T][T extends any ? 0 : any];
|
|
26
|
+
export declare type LowInfer<T> = T & {};
|
|
25
27
|
export declare type EventType = string;
|
|
26
28
|
export declare type ActionType = string;
|
|
27
29
|
export declare type MetaObject = Record<string, any>;
|
|
@@ -524,11 +526,11 @@ export declare type InternalMachineOptions<TContext, TEvent extends EventObject,
|
|
|
524
526
|
activities?: Record<string, ActivityConfig<TContext, TEvent>>;
|
|
525
527
|
};
|
|
526
528
|
export declare type MachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
|
|
527
|
-
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<TContext
|
|
529
|
+
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, TStateSchema, TEvent, TAction> {
|
|
528
530
|
/**
|
|
529
531
|
* The initial context (extended state)
|
|
530
532
|
*/
|
|
531
|
-
context?: TContext | (() => TContext)
|
|
533
|
+
context?: LowInfer<TContext | (() => TContext)>;
|
|
532
534
|
/**
|
|
533
535
|
* The machine's own version.
|
|
534
536
|
*/
|
|
@@ -1009,7 +1011,7 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
|
|
|
1009
1011
|
*/
|
|
1010
1012
|
state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
|
|
1011
1013
|
};
|
|
1012
|
-
export declare type ActorRefFrom<T> = T extends
|
|
1014
|
+
export declare type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : R extends Promise<infer U> ? ActorRef<never, U> : R extends Behavior<infer TEvent, infer TEmitted> ? ActorRef<TEvent, TEmitted> : never : never;
|
|
1013
1015
|
export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
|
|
1014
1016
|
export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : never;
|
|
1015
1017
|
export declare type MachineOptionsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
package/es/utils.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { StateNode } from './StateNode';
|
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { Actor } from './Actor';
|
|
5
5
|
import { AnyStateMachine } from '.';
|
|
6
|
-
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
7
6
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
|
|
8
7
|
export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
|
|
9
8
|
export declare function getActionType(action: Action<any, any>): ActionType;
|
|
@@ -11,9 +10,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
|
|
|
11
10
|
export declare function isStateLike(state: any): state is StateLike<any>;
|
|
12
11
|
export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
|
|
13
12
|
export declare function pathToStateValue(statePath: string[]): StateValue;
|
|
14
|
-
export declare function mapValues<
|
|
15
|
-
[key: string]: T;
|
|
16
|
-
}>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
|
|
13
|
+
export declare function mapValues<P, O extends Record<string, unknown>>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
|
|
17
14
|
[key in keyof O]: P;
|
|
18
15
|
};
|
|
19
16
|
export declare function mapFilterValues<T, P>(collection: {
|
package/es/utils.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { __spreadArray, __read, __values
|
|
1
|
+
import { __assign, __spreadArray, __read, __values } from './_virtual/_tslib.js';
|
|
2
2
|
import { DEFAULT_GUARD_TYPE, TARGETLESS_KEY, STATE_DELIMITER } from './constants.js';
|
|
3
3
|
import { IS_PRODUCTION } from './environment.js';
|
|
4
4
|
|
|
5
5
|
var _a;
|
|
6
|
-
function keys(value) {
|
|
7
|
-
return Object.keys(value);
|
|
8
|
-
}
|
|
9
6
|
function matchesState(parentStateId, childStateId, delimiter) {
|
|
10
7
|
if (delimiter === void 0) {
|
|
11
8
|
delimiter = STATE_DELIMITER;
|
|
@@ -27,7 +24,7 @@ function matchesState(parentStateId, childStateId, delimiter) {
|
|
|
27
24
|
return parentStateValue in childStateValue;
|
|
28
25
|
}
|
|
29
26
|
|
|
30
|
-
return keys(parentStateValue).every(function (key) {
|
|
27
|
+
return Object.keys(parentStateValue).every(function (key) {
|
|
31
28
|
if (!(key in childStateValue)) {
|
|
32
29
|
return false;
|
|
33
30
|
}
|
|
@@ -93,7 +90,7 @@ function pathToStateValue(statePath) {
|
|
|
93
90
|
}
|
|
94
91
|
function mapValues(collection, iteratee) {
|
|
95
92
|
var result = {};
|
|
96
|
-
var collectionKeys = keys(collection);
|
|
93
|
+
var collectionKeys = Object.keys(collection);
|
|
97
94
|
|
|
98
95
|
for (var i = 0; i < collectionKeys.length; i++) {
|
|
99
96
|
var key = collectionKeys[i];
|
|
@@ -108,7 +105,7 @@ function mapFilterValues(collection, iteratee, predicate) {
|
|
|
108
105
|
var result = {};
|
|
109
106
|
|
|
110
107
|
try {
|
|
111
|
-
for (var _b = __values(keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
108
|
+
for (var _b = __values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
112
109
|
var key = _c.value;
|
|
113
110
|
var item = collection[key];
|
|
114
111
|
|
|
@@ -203,7 +200,7 @@ function toStatePaths(stateValue) {
|
|
|
203
200
|
return [[stateValue]];
|
|
204
201
|
}
|
|
205
202
|
|
|
206
|
-
var result = flatten(keys(stateValue).map(function (key) {
|
|
203
|
+
var result = flatten(Object.keys(stateValue).map(function (key) {
|
|
207
204
|
var subStateValue = stateValue[key];
|
|
208
205
|
|
|
209
206
|
if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {
|
|
@@ -362,7 +359,7 @@ function updateContext(context, _event, assignActions, state) {
|
|
|
362
359
|
partialUpdate = assignment(acc, _event.data, meta);
|
|
363
360
|
} else {
|
|
364
361
|
try {
|
|
365
|
-
for (var _b = __values(keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
362
|
+
for (var _b = __values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
366
363
|
var key = _c.value;
|
|
367
364
|
var propAssignment = assignment[key];
|
|
368
365
|
partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;
|
|
@@ -416,18 +413,7 @@ function isFunction(value) {
|
|
|
416
413
|
}
|
|
417
414
|
function isString(value) {
|
|
418
415
|
return typeof value === 'string';
|
|
419
|
-
}
|
|
420
|
-
// o: TP,
|
|
421
|
-
// property: string,
|
|
422
|
-
// getter: () => T
|
|
423
|
-
// ): void {
|
|
424
|
-
// Object.defineProperty(o.prototype, property, {
|
|
425
|
-
// get: getter,
|
|
426
|
-
// enumerable: false,
|
|
427
|
-
// configurable: false
|
|
428
|
-
// });
|
|
429
|
-
// }
|
|
430
|
-
|
|
416
|
+
}
|
|
431
417
|
function toGuard(condition, guardMap) {
|
|
432
418
|
if (!condition) {
|
|
433
419
|
return undefined;
|
|
@@ -468,11 +454,7 @@ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
|
|
|
468
454
|
return this;
|
|
469
455
|
}, _a);
|
|
470
456
|
function isMachine(value) {
|
|
471
|
-
|
|
472
|
-
return '__xstatenode' in value;
|
|
473
|
-
} catch (e) {
|
|
474
|
-
return false;
|
|
475
|
-
}
|
|
457
|
+
return !!value && '__xstatenode' in value;
|
|
476
458
|
}
|
|
477
459
|
function isActor(value) {
|
|
478
460
|
return !!value && typeof value.send === 'function';
|
|
@@ -591,4 +573,4 @@ function createInvokeId(stateNodeId, index) {
|
|
|
591
573
|
return "".concat(stateNodeId, ":invocation[").concat(index, "]");
|
|
592
574
|
}
|
|
593
575
|
|
|
594
|
-
export { createInvokeId, evaluateGuard, flatten, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString,
|
|
576
|
+
export { createInvokeId, evaluateGuard, flatten, getEventType, interopSymbols, isActor, isArray, isBehavior, isBuiltInEvent, isFunction, isMachine, isObservable, isPromiseLike, isStateLike, isString, mapContext, mapFilterValues, mapValues, matchesState, nestedPath, normalizeTarget, partition, path, pathToStateValue, reportUnhandledExceptionOnInvocation, symbolObservable, toArray, toArrayStrict, toEventObject, toGuard, toInvokeSource, toObserver, toSCXMLEvent, toStatePath, toStatePaths, toStateValue, toTransitionConfigArray, uniqueId, updateContext, updateHistoryStates, updateHistoryValue, warn };
|
package/lib/Machine.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Model } from './model.types';
|
|
2
1
|
import { AnyEventObject, BaseActionObject, DefaultContext, EventObject, MachineConfig, InternalMachineOptions, StateMachine, StateSchema, Typestate, ServiceMap } from './types';
|
|
3
2
|
import { TypegenConstraint, TypegenDisabled, ResolveTypegenMeta } from './typegenTypes';
|
|
4
3
|
/**
|
|
@@ -9,5 +8,5 @@ export declare function Machine<TContext = DefaultContext, TStateSchema extends
|
|
|
9
8
|
export declare function createMachine<TContext, TEvent extends EventObject = AnyEventObject, TTypestate extends Typestate<TContext> = {
|
|
10
9
|
value: any;
|
|
11
10
|
context: TContext;
|
|
12
|
-
}, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config:
|
|
11
|
+
}, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled>(config: MachineConfig<TContext, any, TEvent, BaseActionObject, TServiceMap, TTypesMeta>, options?: InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>): StateMachine<TContext, any, TEvent, TTypestate, BaseActionObject, TServiceMap, ResolveTypegenMeta<TTypesMeta, TEvent, BaseActionObject, TServiceMap>>;
|
|
13
12
|
//# sourceMappingURL=Machine.d.ts.map
|
package/lib/State.js
CHANGED
|
@@ -6,8 +6,8 @@ var _tslib = require('./_virtual/_tslib.js');
|
|
|
6
6
|
var constants = require('./constants.js');
|
|
7
7
|
var environment = require('./environment.js');
|
|
8
8
|
var utils = require('./utils.js');
|
|
9
|
-
var stateUtils = require('./stateUtils.js');
|
|
10
9
|
var actions = require('./actions.js');
|
|
10
|
+
var stateUtils = require('./stateUtils.js');
|
|
11
11
|
|
|
12
12
|
function stateValuesEqual(a, b) {
|
|
13
13
|
if (a === b) {
|
|
@@ -22,8 +22,8 @@ function stateValuesEqual(a, b) {
|
|
|
22
22
|
return a === b;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
var aKeys =
|
|
26
|
-
var bKeys =
|
|
25
|
+
var aKeys = Object.keys(a);
|
|
26
|
+
var bKeys = Object.keys(b);
|
|
27
27
|
return aKeys.length === bKeys.length && aKeys.every(function (key) {
|
|
28
28
|
return stateValuesEqual(a[key], b[key]);
|
|
29
29
|
});
|
|
@@ -210,7 +210,7 @@ function () {
|
|
|
210
210
|
return [stateValue];
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
var valueKeys =
|
|
213
|
+
var valueKeys = Object.keys(stateValue);
|
|
214
214
|
return valueKeys.concat.apply(valueKeys, _tslib.__spreadArray([], _tslib.__read(valueKeys.map(function (key) {
|
|
215
215
|
return _this.toStrings(stateValue[key], delimiter).map(function (s) {
|
|
216
216
|
return key + delimiter + s;
|
package/lib/StateNode.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
+
var types = require('./types.js');
|
|
7
|
+
var actionTypes = require('./actionTypes.js');
|
|
6
8
|
var constants = require('./constants.js');
|
|
7
9
|
var environment = require('./environment.js');
|
|
8
10
|
var utils = require('./utils.js');
|
|
9
|
-
var types = require('./types.js');
|
|
10
|
-
var stateUtils = require('./stateUtils.js');
|
|
11
|
-
var actionTypes = require('./actionTypes.js');
|
|
12
11
|
var actions = require('./actions.js');
|
|
13
|
-
var State = require('./State.js');
|
|
14
12
|
var Actor = require('./Actor.js');
|
|
13
|
+
var stateUtils = require('./stateUtils.js');
|
|
14
|
+
var State = require('./State.js');
|
|
15
15
|
var invokeUtils = require('./invokeUtils.js');
|
|
16
16
|
|
|
17
17
|
var NULL_EVENT = '';
|
|
@@ -92,7 +92,7 @@ function () {
|
|
|
92
92
|
this.delimiter = this.config.delimiter || (this.parent ? this.parent.delimiter : constants.STATE_DELIMITER);
|
|
93
93
|
this.id = this.config.id || _tslib.__spreadArray([this.machine.key], _tslib.__read(this.path), false).join(this.delimiter);
|
|
94
94
|
this.version = this.parent ? this.parent.version : this.config.version;
|
|
95
|
-
this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states &&
|
|
95
|
+
this.type = this.config.type || (this.config.parallel ? 'parallel' : this.config.states && Object.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
97
|
this.description = this.config.description;
|
|
98
98
|
|
|
@@ -369,7 +369,7 @@ function () {
|
|
|
369
369
|
return _tslib.__assign(_tslib.__assign({}, transition), {
|
|
370
370
|
event: eventType
|
|
371
371
|
});
|
|
372
|
-
}) : utils.flatten(
|
|
372
|
+
}) : utils.flatten(Object.keys(afterConfig).map(function (delay, i) {
|
|
373
373
|
var configTransition = afterConfig[delay];
|
|
374
374
|
var resolvedTransition = utils.isString(configTransition) ? {
|
|
375
375
|
target: configTransition
|
|
@@ -413,7 +413,7 @@ function () {
|
|
|
413
413
|
return initialStateValue !== undefined ? this.getStateNodes((_a = {}, _a[stateValue] = initialStateValue, _a)) : [this, this.states[stateValue]];
|
|
414
414
|
}
|
|
415
415
|
|
|
416
|
-
var subStateKeys =
|
|
416
|
+
var subStateKeys = Object.keys(stateValue);
|
|
417
417
|
var subStateNodes = [this];
|
|
418
418
|
subStateNodes.push.apply(subStateNodes, _tslib.__spreadArray([], _tslib.__read(utils.flatten(subStateKeys.map(function (subStateKey) {
|
|
419
419
|
return _this.getStateNode(subStateKey).getStateNodes(stateValue[subStateKey]);
|
|
@@ -463,7 +463,7 @@ function () {
|
|
|
463
463
|
};
|
|
464
464
|
|
|
465
465
|
StateNode.prototype.transitionCompoundNode = function (stateValue, state, _event) {
|
|
466
|
-
var subStateKeys =
|
|
466
|
+
var subStateKeys = Object.keys(stateValue);
|
|
467
467
|
var stateNode = this.getStateNode(subStateKeys[0]);
|
|
468
468
|
|
|
469
469
|
var next = stateNode._transition(stateValue[subStateKeys[0]], state, _event);
|
|
@@ -481,7 +481,7 @@ function () {
|
|
|
481
481
|
var transitionMap = {};
|
|
482
482
|
|
|
483
483
|
try {
|
|
484
|
-
for (var _b = _tslib.__values(
|
|
484
|
+
for (var _b = _tslib.__values(Object.keys(stateValue)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
485
485
|
var subStateKey = _c.value;
|
|
486
486
|
var subStateValue = stateValue[subStateKey];
|
|
487
487
|
|
|
@@ -509,7 +509,7 @@ function () {
|
|
|
509
509
|
}
|
|
510
510
|
}
|
|
511
511
|
|
|
512
|
-
var stateTransitions =
|
|
512
|
+
var stateTransitions = Object.keys(transitionMap).map(function (key) {
|
|
513
513
|
return transitionMap[key];
|
|
514
514
|
});
|
|
515
515
|
var enabledTransitions = utils.flatten(stateTransitions.map(function (st) {
|
|
@@ -526,7 +526,7 @@ function () {
|
|
|
526
526
|
var entryNodes = utils.flatten(stateTransitions.map(function (t) {
|
|
527
527
|
return t.entrySet;
|
|
528
528
|
}));
|
|
529
|
-
var configuration = utils.flatten(
|
|
529
|
+
var configuration = utils.flatten(Object.keys(transitionMap).map(function (key) {
|
|
530
530
|
return transitionMap[key].configuration;
|
|
531
531
|
}));
|
|
532
532
|
return {
|
|
@@ -537,7 +537,7 @@ function () {
|
|
|
537
537
|
})),
|
|
538
538
|
configuration: configuration,
|
|
539
539
|
source: state,
|
|
540
|
-
actions: utils.flatten(
|
|
540
|
+
actions: utils.flatten(Object.keys(transitionMap).map(function (key) {
|
|
541
541
|
return transitionMap[key].actions;
|
|
542
542
|
}))
|
|
543
543
|
};
|
|
@@ -550,7 +550,7 @@ function () {
|
|
|
550
550
|
} // hierarchical node
|
|
551
551
|
|
|
552
552
|
|
|
553
|
-
if (
|
|
553
|
+
if (Object.keys(stateValue).length === 1) {
|
|
554
554
|
return this.transitionCompoundNode(stateValue, state, _event);
|
|
555
555
|
} // orthogonal node
|
|
556
556
|
|
|
@@ -1084,7 +1084,7 @@ function () {
|
|
|
1084
1084
|
return stateValue;
|
|
1085
1085
|
}
|
|
1086
1086
|
|
|
1087
|
-
if (!
|
|
1087
|
+
if (!Object.keys(stateValue).length) {
|
|
1088
1088
|
return this.initialStateValue || {};
|
|
1089
1089
|
}
|
|
1090
1090
|
|
|
@@ -1275,7 +1275,7 @@ function () {
|
|
|
1275
1275
|
};
|
|
1276
1276
|
|
|
1277
1277
|
StateNode.prototype.historyValue = function (relativeStateValue) {
|
|
1278
|
-
if (!
|
|
1278
|
+
if (!Object.keys(this.states).length) {
|
|
1279
1279
|
return undefined;
|
|
1280
1280
|
}
|
|
1281
1281
|
|
|
@@ -1335,7 +1335,7 @@ function () {
|
|
|
1335
1335
|
get: function () {
|
|
1336
1336
|
var _this = this;
|
|
1337
1337
|
|
|
1338
|
-
var childStateIds = utils.flatten(
|
|
1338
|
+
var childStateIds = utils.flatten(Object.keys(this.states).map(function (stateKey) {
|
|
1339
1339
|
return _this.states[stateKey].stateIds;
|
|
1340
1340
|
}));
|
|
1341
1341
|
return [this.id].concat(childStateIds);
|
|
@@ -1359,7 +1359,7 @@ function () {
|
|
|
1359
1359
|
|
|
1360
1360
|
if (states) {
|
|
1361
1361
|
try {
|
|
1362
|
-
for (var _c = _tslib.__values(
|
|
1362
|
+
for (var _c = _tslib.__values(Object.keys(states)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
1363
1363
|
var stateId = _d.value;
|
|
1364
1364
|
var state = states[stateId];
|
|
1365
1365
|
|
|
@@ -1502,7 +1502,7 @@ function () {
|
|
|
1502
1502
|
wildcardConfigs = _d === void 0 ? [] : _d,
|
|
1503
1503
|
strictTransitionConfigs_1 = _tslib.__rest(_b, [typeof _c === "symbol" ? _c : _c + ""]);
|
|
1504
1504
|
|
|
1505
|
-
onConfig = utils.flatten(
|
|
1505
|
+
onConfig = utils.flatten(Object.keys(strictTransitionConfigs_1).map(function (key) {
|
|
1506
1506
|
if (!environment.IS_PRODUCTION && key === NULL_EVENT) {
|
|
1507
1507
|
utils.warn(false, "Empty string transition configs (e.g., `{ on: { '': ... }}`) for transient transitions are deprecated. Specify the transition in the `{ always: ... }` property instead. " + "Please check the `on` configuration for \"#".concat(_this.id, "\"."));
|
|
1508
1508
|
}
|
package/lib/actions.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
-
var environment = require('./environment.js');
|
|
7
|
-
var utils = require('./utils.js');
|
|
8
6
|
var types = require('./types.js');
|
|
9
7
|
var actionTypes = require('./actionTypes.js');
|
|
8
|
+
var environment = require('./environment.js');
|
|
9
|
+
var utils = require('./utils.js');
|
|
10
10
|
|
|
11
11
|
var initEvent = /*#__PURE__*/utils.toSCXMLEvent({
|
|
12
12
|
type: actionTypes.init
|
package/lib/behaviors.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('./environment.js');
|
|
6
|
-
var utils = require('./utils.js');
|
|
7
5
|
require('./types.js');
|
|
8
6
|
require('./actionTypes.js');
|
|
7
|
+
require('./environment.js');
|
|
8
|
+
var utils = require('./utils.js');
|
|
9
9
|
var Actor = require('./Actor.js');
|
|
10
10
|
|
|
11
11
|
function spawnBehavior(behavior, options) {
|
package/lib/index.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { matchesState } from './utils';
|
|
2
|
-
import { mapState } from './mapState';
|
|
3
|
-
import { StateNode } from './StateNode';
|
|
4
|
-
import { State } from './State';
|
|
5
|
-
import { Machine, createMachine } from './Machine';
|
|
6
|
-
import { Actor, toActorRef } from './Actor';
|
|
7
1
|
import * as actions from './actions';
|
|
8
|
-
import {
|
|
2
|
+
import { Actor, toActorRef } from './Actor';
|
|
3
|
+
import { interpret, Interpreter, InterpreterStatus, spawn } from './interpreter';
|
|
4
|
+
import { createMachine, Machine } from './Machine';
|
|
5
|
+
import { mapState } from './mapState';
|
|
9
6
|
import { matchState } from './match';
|
|
10
7
|
import { createSchema, t } from './schema';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export
|
|
8
|
+
import { State } from './State';
|
|
9
|
+
import { StateNode } from './StateNode';
|
|
10
|
+
export { spawnBehavior } from './behaviors';
|
|
11
|
+
export { XStateDevInterface } from './devTools';
|
|
14
12
|
export * from './typegenTypes';
|
|
13
|
+
export * from './types';
|
|
14
|
+
export { matchesState, toEventObject, toObserver, toSCXMLEvent } from './utils';
|
|
15
|
+
export { Actor, toActorRef, Machine, StateNode, State, mapState, actions, assign, send, sendParent, sendUpdate, forwardTo, interpret, Interpreter, InterpreterStatus, matchState, spawn, doneInvoke, createMachine, createSchema, t };
|
|
16
|
+
declare const assign: <TContext, TEvent extends import("./types").EventObject = import("./types").EventObject>(assignment: import("./types").Assigner<TContext, TEvent> | import("./types").PropertyAssigner<TContext, TEvent>) => import("./types").AssignAction<TContext, TEvent>, send: typeof actions.send, sendParent: typeof actions.sendParent, sendUpdate: typeof actions.sendUpdate, forwardTo: typeof actions.forwardTo, doneInvoke: typeof actions.doneInvoke;
|
|
15
17
|
declare global {
|
|
16
18
|
interface SymbolConstructor {
|
|
17
19
|
readonly observable: symbol;
|
package/lib/index.js
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var utils = require('./utils.js');
|
|
6
|
-
var mapState = require('./mapState.js');
|
|
7
5
|
var types = require('./types.js');
|
|
6
|
+
var utils = require('./utils.js');
|
|
8
7
|
var actions = require('./actions.js');
|
|
9
|
-
var State = require('./State.js');
|
|
10
8
|
var Actor = require('./Actor.js');
|
|
9
|
+
var State = require('./State.js');
|
|
10
|
+
var behaviors = require('./behaviors.js');
|
|
11
|
+
var interpreter = require('./interpreter.js');
|
|
11
12
|
var StateNode = require('./StateNode.js');
|
|
12
13
|
var Machine = require('./Machine.js');
|
|
13
|
-
var
|
|
14
|
+
var mapState = require('./mapState.js');
|
|
14
15
|
var match = require('./match.js');
|
|
15
16
|
var schema = require('./schema.js');
|
|
16
17
|
|
|
@@ -21,8 +22,6 @@ var assign = actions.assign,
|
|
|
21
22
|
forwardTo = actions.forwardTo,
|
|
22
23
|
doneInvoke = actions.doneInvoke;
|
|
23
24
|
|
|
24
|
-
exports.matchesState = utils.matchesState;
|
|
25
|
-
exports.mapState = mapState.mapState;
|
|
26
25
|
Object.defineProperty(exports, 'ActionTypes', {
|
|
27
26
|
enumerable: true,
|
|
28
27
|
get: function () {
|
|
@@ -35,12 +34,14 @@ Object.defineProperty(exports, 'SpecialTargets', {
|
|
|
35
34
|
return types.SpecialTargets;
|
|
36
35
|
}
|
|
37
36
|
});
|
|
37
|
+
exports.matchesState = utils.matchesState;
|
|
38
|
+
exports.toEventObject = utils.toEventObject;
|
|
39
|
+
exports.toObserver = utils.toObserver;
|
|
40
|
+
exports.toSCXMLEvent = utils.toSCXMLEvent;
|
|
38
41
|
exports.actions = actions;
|
|
39
|
-
exports.State = State.State;
|
|
40
42
|
exports.toActorRef = Actor.toActorRef;
|
|
41
|
-
exports.
|
|
42
|
-
exports.
|
|
43
|
-
exports.createMachine = Machine.createMachine;
|
|
43
|
+
exports.State = State.State;
|
|
44
|
+
exports.spawnBehavior = behaviors.spawnBehavior;
|
|
44
45
|
exports.Interpreter = interpreter.Interpreter;
|
|
45
46
|
Object.defineProperty(exports, 'InterpreterStatus', {
|
|
46
47
|
enumerable: true,
|
|
@@ -50,6 +51,10 @@ Object.defineProperty(exports, 'InterpreterStatus', {
|
|
|
50
51
|
});
|
|
51
52
|
exports.interpret = interpreter.interpret;
|
|
52
53
|
exports.spawn = interpreter.spawn;
|
|
54
|
+
exports.StateNode = StateNode.StateNode;
|
|
55
|
+
exports.Machine = Machine.Machine;
|
|
56
|
+
exports.createMachine = Machine.createMachine;
|
|
57
|
+
exports.mapState = mapState.mapState;
|
|
53
58
|
exports.matchState = match.matchState;
|
|
54
59
|
exports.createSchema = schema.createSchema;
|
|
55
60
|
exports.t = schema.t;
|
package/lib/interpreter.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare enum InterpreterStatus {
|
|
|
23
23
|
Running = 1,
|
|
24
24
|
Stopped = 2
|
|
25
25
|
}
|
|
26
|
+
/** @ts-ignore [symbolObservable] creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
|
|
26
27
|
export declare class Interpreter<TContext, TStateSchema extends StateSchema = any, TEvent extends EventObject = EventObject, TTypestate extends Typestate<TContext> = {
|
|
27
28
|
value: any;
|
|
28
29
|
context: TContext;
|
|
@@ -189,6 +190,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
189
190
|
toJSON(): {
|
|
190
191
|
id: string;
|
|
191
192
|
};
|
|
193
|
+
/** @ts-ignore this creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
|
|
192
194
|
[symbolObservable](): InteropSubscribable<State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>>;
|
|
193
195
|
getSnapshot(): State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>;
|
|
194
196
|
}
|
package/lib/interpreter.js
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
-
var environment = require('./environment.js');
|
|
7
|
-
var utils = require('./utils.js');
|
|
8
6
|
var types = require('./types.js');
|
|
9
|
-
var stateUtils = require('./stateUtils.js');
|
|
10
7
|
var actionTypes = require('./actionTypes.js');
|
|
8
|
+
var environment = require('./environment.js');
|
|
9
|
+
var utils = require('./utils.js');
|
|
11
10
|
var actions = require('./actions.js');
|
|
12
|
-
var State = require('./State.js');
|
|
13
11
|
var serviceScope = require('./serviceScope.js');
|
|
14
12
|
var Actor = require('./Actor.js');
|
|
13
|
+
var stateUtils = require('./stateUtils.js');
|
|
14
|
+
var State = require('./State.js');
|
|
15
15
|
var scheduler = require('./scheduler.js');
|
|
16
16
|
var registry = require('./registry.js');
|
|
17
17
|
var devTools = require('./devTools.js');
|
|
@@ -27,6 +27,8 @@ var DEFAULT_SPAWN_OPTIONS = {
|
|
|
27
27
|
InterpreterStatus[InterpreterStatus["Running"] = 1] = "Running";
|
|
28
28
|
InterpreterStatus[InterpreterStatus["Stopped"] = 2] = "Stopped";
|
|
29
29
|
})(exports.InterpreterStatus || (exports.InterpreterStatus = {}));
|
|
30
|
+
/** @ts-ignore [symbolObservable] creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
|
|
31
|
+
|
|
30
32
|
|
|
31
33
|
var Interpreter =
|
|
32
34
|
/*#__PURE__*/
|
|
@@ -594,7 +596,7 @@ function () {
|
|
|
594
596
|
|
|
595
597
|
try {
|
|
596
598
|
// Cancel all delayed events
|
|
597
|
-
for (var _p = _tslib.__values(
|
|
599
|
+
for (var _p = _tslib.__values(Object.keys(this.delayedEventsMap)), _q = _p.next(); !_q.done; _q = _p.next()) {
|
|
598
600
|
var key = _q.value;
|
|
599
601
|
this.clock.clearTimeout(this.delayedEventsMap[key]);
|
|
600
602
|
}
|
|
@@ -1311,6 +1313,8 @@ function () {
|
|
|
1311
1313
|
id: this.id
|
|
1312
1314
|
};
|
|
1313
1315
|
};
|
|
1316
|
+
/** @ts-ignore this creates problems for people without `skipLibCheck` who are on older versions of TS, remove this comment when we drop support for TS@<4.3 */
|
|
1317
|
+
|
|
1314
1318
|
|
|
1315
1319
|
Interpreter.prototype[utils.symbolObservable] = function () {
|
|
1316
1320
|
return this;
|
package/lib/invokeUtils.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
-
require('./environment.js');
|
|
7
|
-
require('./utils.js');
|
|
8
6
|
require('./types.js');
|
|
9
7
|
var actionTypes = require('./actionTypes.js');
|
|
8
|
+
require('./environment.js');
|
|
9
|
+
require('./utils.js');
|
|
10
10
|
|
|
11
11
|
function toInvokeSource(src) {
|
|
12
12
|
if (typeof src === 'string') {
|
package/lib/mapState.js
CHANGED
|
@@ -11,7 +11,7 @@ function mapState(stateMap, stateId) {
|
|
|
11
11
|
var foundStateId;
|
|
12
12
|
|
|
13
13
|
try {
|
|
14
|
-
for (var _b = _tslib.__values(
|
|
14
|
+
for (var _b = _tslib.__values(Object.keys(stateMap)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
15
15
|
var mappedStateId = _c.value;
|
|
16
16
|
|
|
17
17
|
if (utils.matchesState(mappedStateId, stateId) && (!foundStateId || stateId.length > foundStateId.length)) {
|
package/lib/scxml.js
CHANGED
|
@@ -108,7 +108,7 @@ function delayToMs(delay) {
|
|
|
108
108
|
}
|
|
109
109
|
var evaluateExecutableContent = function (context, _ev, meta, body) {
|
|
110
110
|
var datamodel = context
|
|
111
|
-
?
|
|
111
|
+
? Object.keys(context)
|
|
112
112
|
.map(function (key) { return "const ".concat(key, " = context['").concat(key, "'];"); })
|
|
113
113
|
.join('\n')
|
|
114
114
|
: '';
|
package/lib/stateUtils.js
CHANGED
|
@@ -9,7 +9,7 @@ var isLeafNode = function (stateNode) {
|
|
|
9
9
|
return stateNode.type === 'atomic' || stateNode.type === 'final';
|
|
10
10
|
};
|
|
11
11
|
function getChildren(stateNode) {
|
|
12
|
-
return
|
|
12
|
+
return Object.keys(stateNode.states).map(function (key) {
|
|
13
13
|
return stateNode.states[key];
|
|
14
14
|
});
|
|
15
15
|
}
|
package/lib/types.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare type IndexByType<T extends {
|
|
|
22
22
|
export declare type Equals<A1 extends any, A2 extends any> = (<A>() => A extends A2 ? true : false) extends <A>() => A extends A1 ? true : false ? true : false;
|
|
23
23
|
export declare type IsAny<T> = Equals<T, any>;
|
|
24
24
|
export declare type Cast<A, B> = A extends B ? A : B;
|
|
25
|
+
export declare type NoInfer<T> = [T][T extends any ? 0 : any];
|
|
26
|
+
export declare type LowInfer<T> = T & {};
|
|
25
27
|
export declare type EventType = string;
|
|
26
28
|
export declare type ActionType = string;
|
|
27
29
|
export declare type MetaObject = Record<string, any>;
|
|
@@ -524,11 +526,11 @@ export declare type InternalMachineOptions<TContext, TEvent extends EventObject,
|
|
|
524
526
|
activities?: Record<string, ActivityConfig<TContext, TEvent>>;
|
|
525
527
|
};
|
|
526
528
|
export declare type MachineOptions<TContext, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta extends TypegenConstraint = TypegenDisabled> = InternalMachineOptions<TContext, TEvent, ResolveTypegenMeta<TTypesMeta, TEvent, TAction, TServiceMap>>;
|
|
527
|
-
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<TContext
|
|
529
|
+
export interface MachineConfig<TContext, TStateSchema extends StateSchema, TEvent extends EventObject, TAction extends BaseActionObject = BaseActionObject, TServiceMap extends ServiceMap = ServiceMap, TTypesMeta = TypegenDisabled> extends StateNodeConfig<NoInfer<TContext>, TStateSchema, TEvent, TAction> {
|
|
528
530
|
/**
|
|
529
531
|
* The initial context (extended state)
|
|
530
532
|
*/
|
|
531
|
-
context?: TContext | (() => TContext)
|
|
533
|
+
context?: LowInfer<TContext | (() => TContext)>;
|
|
532
534
|
/**
|
|
533
535
|
* The machine's own version.
|
|
534
536
|
*/
|
|
@@ -1009,7 +1011,7 @@ export declare type ActorRefWithDeprecatedState<TContext, TEvent extends EventOb
|
|
|
1009
1011
|
*/
|
|
1010
1012
|
state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>;
|
|
1011
1013
|
};
|
|
1012
|
-
export declare type ActorRefFrom<T> = T extends
|
|
1014
|
+
export declare type ActorRefFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, any, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? ActorRefWithDeprecatedState<TContext, TEvent, TTypestate, TResolvedTypesMeta> : R extends Promise<infer U> ? ActorRef<never, U> : R extends Behavior<infer TEvent, infer TEmitted> ? ActorRef<TEvent, TEmitted> : never : never;
|
|
1013
1015
|
export declare type AnyInterpreter = Interpreter<any, any, any, any, any>;
|
|
1014
1016
|
export declare type InterpreterFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine)> = T extends StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : T extends (...args: any[]) => StateMachine<infer TContext, infer TStateSchema, infer TEvent, infer TTypestate, any, any, infer TResolvedTypesMeta> ? Interpreter<TContext, TStateSchema, TEvent, TTypestate, TResolvedTypesMeta> : never;
|
|
1015
1017
|
export declare type MachineOptionsFrom<T extends AnyStateMachine | ((...args: any[]) => AnyStateMachine), TRequireMissingImplementations extends boolean = false> = ReturnTypeOrValue<T> extends StateMachine<infer TContext, any, infer TEvent, any, any, any, infer TResolvedTypesMeta> ? InternalMachineOptions<TContext, TEvent, TResolvedTypesMeta, TRequireMissingImplementations> : never;
|
package/lib/utils.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { StateNode } from './StateNode';
|
|
|
3
3
|
import { State } from './State';
|
|
4
4
|
import { Actor } from './Actor';
|
|
5
5
|
import { AnyStateMachine } from '.';
|
|
6
|
-
export declare function keys<T extends object>(value: T): Array<keyof T & string>;
|
|
7
6
|
export declare function matchesState(parentStateId: StateValue, childStateId: StateValue, delimiter?: string): boolean;
|
|
8
7
|
export declare function getEventType<TEvent extends EventObject = EventObject>(event: Event<TEvent>): TEvent['type'];
|
|
9
8
|
export declare function getActionType(action: Action<any, any>): ActionType;
|
|
@@ -11,9 +10,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
|
|
|
11
10
|
export declare function isStateLike(state: any): state is StateLike<any>;
|
|
12
11
|
export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
|
|
13
12
|
export declare function pathToStateValue(statePath: string[]): StateValue;
|
|
14
|
-
export declare function mapValues<
|
|
15
|
-
[key: string]: T;
|
|
16
|
-
}>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
|
|
13
|
+
export declare function mapValues<P, O extends Record<string, unknown>>(collection: O, iteratee: (item: O[keyof O], key: keyof O, collection: O, i: number) => P): {
|
|
17
14
|
[key in keyof O]: P;
|
|
18
15
|
};
|
|
19
16
|
export declare function mapFilterValues<T, P>(collection: {
|