xstate 4.30.2 → 4.30.5
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 +32 -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/SimulatedClock.js +81 -0
- package/es/State.js +18 -13
- package/es/StateNode.js +22 -22
- package/es/actions.js +3 -3
- package/es/behaviors.js +71 -5
- package/es/each.js +13 -0
- package/es/index.d.ts +12 -10
- package/es/index.js +7 -6
- package/es/interpreter.d.ts +2 -0
- package/es/interpreter.js +11 -7
- package/es/invokeUtils.js +5 -5
- package/es/json.js +86 -0
- package/es/mapState.js +2 -2
- package/es/model.js +50 -0
- package/es/patterns.js +48 -0
- package/es/stateUtils.js +2 -2
- package/es/types.d.ts +7 -5
- package/es/utils.d.ts +1 -3
- package/es/utils.js +56 -24
- package/lib/Machine.d.ts +1 -2
- package/lib/SimulatedClock.js +83 -81
- package/lib/State.js +16 -10
- package/lib/StateNode.js +18 -18
- package/lib/actions.js +2 -2
- package/lib/behaviors.js +72 -4
- package/lib/each.js +14 -12
- package/lib/index.d.ts +12 -10
- package/lib/index.js +26 -27
- package/lib/interpreter.d.ts +2 -0
- package/lib/interpreter.js +12 -7
- package/lib/invokeUtils.js +5 -5
- package/lib/json.js +81 -72
- package/lib/mapState.js +1 -1
- package/lib/model.js +49 -69
- package/lib/patterns.js +45 -53
- package/lib/scxml.js +1 -1
- package/lib/stateUtils.js +1 -1
- package/lib/types.d.ts +7 -5
- package/lib/types.js +4 -0
- package/lib/utils.d.ts +1 -3
- package/lib/utils.js +56 -22
- package/package.json +3 -2
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;
|
|
@@ -1026,10 +1028,10 @@ export interface Behavior<TEvent extends EventObject, TEmitted = any> {
|
|
|
1026
1028
|
start?: (actorCtx: ActorContext<TEvent, TEmitted>) => TEmitted;
|
|
1027
1029
|
}
|
|
1028
1030
|
export declare type EmittedFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends ActorRef<infer _, infer TEmitted> ? TEmitted : R extends Behavior<infer _, infer TEmitted> ? TEmitted : R extends ActorContext<infer _, infer TEmitted> ? TEmitted : never : never;
|
|
1029
|
-
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ____> ? TEvent : R extends Model<infer _, infer TEvent, infer
|
|
1031
|
+
declare type ResolveEventType<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer _, infer __, infer TEvent, infer ___, infer ____, infer _____, infer ______> ? TEvent : R extends Model<infer _, infer TEvent, infer __, infer ___> ? TEvent : R extends State<infer _, infer TEvent, infer __, infer ___, infer ____> ? TEvent : R extends Interpreter<infer _, infer __, infer TEvent, infer ___, infer ____> ? TEvent : R extends ActorRef<infer TEvent, infer _> ? TEvent : never : never;
|
|
1030
1032
|
export declare type EventFrom<T, K extends Prop<TEvent, 'type'> = never, TEvent = ResolveEventType<T>> = IsNever<K> extends true ? TEvent : Extract<TEvent, {
|
|
1031
1033
|
type: K;
|
|
1032
1034
|
}>;
|
|
1033
|
-
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___> ? TContext : never : never;
|
|
1035
|
+
export declare type ContextFrom<T> = ReturnTypeOrValue<T> extends infer R ? R extends StateMachine<infer TContext, infer _, infer __, infer ___, infer ____, infer _____, infer ______> ? TContext : R extends Model<infer TContext, infer _, infer __, infer ___> ? TContext : R extends State<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : R extends Interpreter<infer TContext, infer _, infer __, infer ___, infer ____> ? TContext : never : never;
|
|
1034
1036
|
export {};
|
|
1035
1037
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
exports.ActionTypes = void 0;
|
|
6
|
+
|
|
5
7
|
(function (ActionTypes) {
|
|
6
8
|
ActionTypes["Start"] = "xstate.start";
|
|
7
9
|
ActionTypes["Stop"] = "xstate.stop";
|
|
@@ -25,6 +27,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
25
27
|
ActionTypes["Choose"] = "xstate.choose";
|
|
26
28
|
})(exports.ActionTypes || (exports.ActionTypes = {}));
|
|
27
29
|
|
|
30
|
+
exports.SpecialTargets = void 0;
|
|
31
|
+
|
|
28
32
|
(function (SpecialTargets) {
|
|
29
33
|
SpecialTargets["Parent"] = "#_parent";
|
|
30
34
|
SpecialTargets["Internal"] = "#_internal";
|
package/lib/utils.d.ts
CHANGED
|
@@ -11,9 +11,7 @@ export declare function toStatePath(stateId: string | string[], delimiter: strin
|
|
|
11
11
|
export declare function isStateLike(state: any): state is StateLike<any>;
|
|
12
12
|
export declare function toStateValue(stateValue: StateLike<any> | StateValue | string[], delimiter: string): StateValue;
|
|
13
13
|
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): {
|
|
14
|
+
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
15
|
[key in keyof O]: P;
|
|
18
16
|
};
|
|
19
17
|
export declare function mapFilterValues<T, P>(collection: {
|
package/lib/utils.js
CHANGED
|
@@ -31,7 +31,7 @@ function matchesState(parentStateId, childStateId, delimiter) {
|
|
|
31
31
|
return parentStateValue in childStateValue;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
return keys(parentStateValue).every(function (key) {
|
|
34
|
+
return Object.keys(parentStateValue).every(function (key) {
|
|
35
35
|
if (!(key in childStateValue)) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
@@ -46,6 +46,13 @@ function getEventType(event) {
|
|
|
46
46
|
throw new Error('Events must be strings or objects with a string event.type property.');
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
function getActionType(action) {
|
|
50
|
+
try {
|
|
51
|
+
return isString(action) || typeof action === 'number' ? "".concat(action) : isFunction(action) ? action.name : action.type;
|
|
52
|
+
} catch (e) {
|
|
53
|
+
throw new Error('Actions must be strings or objects with a string action.type property.');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
49
56
|
function toStatePath(stateId, delimiter) {
|
|
50
57
|
try {
|
|
51
58
|
if (isArray(stateId)) {
|
|
@@ -97,7 +104,7 @@ function pathToStateValue(statePath) {
|
|
|
97
104
|
}
|
|
98
105
|
function mapValues(collection, iteratee) {
|
|
99
106
|
var result = {};
|
|
100
|
-
var collectionKeys = keys(collection);
|
|
107
|
+
var collectionKeys = Object.keys(collection);
|
|
101
108
|
|
|
102
109
|
for (var i = 0; i < collectionKeys.length; i++) {
|
|
103
110
|
var key = collectionKeys[i];
|
|
@@ -112,7 +119,7 @@ function mapFilterValues(collection, iteratee, predicate) {
|
|
|
112
119
|
var result = {};
|
|
113
120
|
|
|
114
121
|
try {
|
|
115
|
-
for (var _b = _tslib.__values(keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
122
|
+
for (var _b = _tslib.__values(Object.keys(collection)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
116
123
|
var key = _c.value;
|
|
117
124
|
var item = collection[key];
|
|
118
125
|
|
|
@@ -207,7 +214,7 @@ function toStatePaths(stateValue) {
|
|
|
207
214
|
return [[stateValue]];
|
|
208
215
|
}
|
|
209
216
|
|
|
210
|
-
var result = flatten(keys(stateValue).map(function (key) {
|
|
217
|
+
var result = flatten(Object.keys(stateValue).map(function (key) {
|
|
211
218
|
var subStateValue = stateValue[key];
|
|
212
219
|
|
|
213
220
|
if (typeof subStateValue !== 'string' && (!subStateValue || !Object.keys(subStateValue).length)) {
|
|
@@ -220,6 +227,46 @@ function toStatePaths(stateValue) {
|
|
|
220
227
|
}));
|
|
221
228
|
return result;
|
|
222
229
|
}
|
|
230
|
+
function pathsToStateValue(paths) {
|
|
231
|
+
var e_4, _a;
|
|
232
|
+
|
|
233
|
+
var result = {};
|
|
234
|
+
|
|
235
|
+
if (paths && paths.length === 1 && paths[0].length === 1) {
|
|
236
|
+
return paths[0][0];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
for (var paths_1 = _tslib.__values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
241
|
+
var currentPath = paths_1_1.value;
|
|
242
|
+
var marker = result; // tslint:disable-next-line:prefer-for-of
|
|
243
|
+
|
|
244
|
+
for (var i = 0; i < currentPath.length; i++) {
|
|
245
|
+
var subPath = currentPath[i];
|
|
246
|
+
|
|
247
|
+
if (i === currentPath.length - 2) {
|
|
248
|
+
marker[subPath] = currentPath[i + 1];
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
marker[subPath] = marker[subPath] || {};
|
|
253
|
+
marker = marker[subPath];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
} catch (e_4_1) {
|
|
257
|
+
e_4 = {
|
|
258
|
+
error: e_4_1
|
|
259
|
+
};
|
|
260
|
+
} finally {
|
|
261
|
+
try {
|
|
262
|
+
if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
|
|
263
|
+
} finally {
|
|
264
|
+
if (e_4) throw e_4.error;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
223
270
|
function flatten(array) {
|
|
224
271
|
var _a;
|
|
225
272
|
|
|
@@ -366,7 +413,7 @@ function updateContext(context, _event, assignActions, state) {
|
|
|
366
413
|
partialUpdate = assignment(acc, _event.data, meta);
|
|
367
414
|
} else {
|
|
368
415
|
try {
|
|
369
|
-
for (var _b = _tslib.__values(keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
416
|
+
for (var _b = _tslib.__values(Object.keys(assignment)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
370
417
|
var key = _c.value;
|
|
371
418
|
var propAssignment = assignment[key];
|
|
372
419
|
partialUpdate[key] = isFunction(propAssignment) ? propAssignment(acc, _event.data, meta) : propAssignment;
|
|
@@ -420,18 +467,7 @@ function isFunction(value) {
|
|
|
420
467
|
}
|
|
421
468
|
function isString(value) {
|
|
422
469
|
return typeof value === 'string';
|
|
423
|
-
}
|
|
424
|
-
// o: TP,
|
|
425
|
-
// property: string,
|
|
426
|
-
// getter: () => T
|
|
427
|
-
// ): void {
|
|
428
|
-
// Object.defineProperty(o.prototype, property, {
|
|
429
|
-
// get: getter,
|
|
430
|
-
// enumerable: false,
|
|
431
|
-
// configurable: false
|
|
432
|
-
// });
|
|
433
|
-
// }
|
|
434
|
-
|
|
470
|
+
}
|
|
435
471
|
function toGuard(condition, guardMap) {
|
|
436
472
|
if (!condition) {
|
|
437
473
|
return undefined;
|
|
@@ -472,11 +508,7 @@ var interopSymbols = (_a = {}, _a[symbolObservable] = function () {
|
|
|
472
508
|
return this;
|
|
473
509
|
}, _a);
|
|
474
510
|
function isMachine(value) {
|
|
475
|
-
|
|
476
|
-
return '__xstatenode' in value;
|
|
477
|
-
} catch (e) {
|
|
478
|
-
return false;
|
|
479
|
-
}
|
|
511
|
+
return !!value && '__xstatenode' in value;
|
|
480
512
|
}
|
|
481
513
|
function isActor(value) {
|
|
482
514
|
return !!value && typeof value.send === 'function';
|
|
@@ -598,6 +630,7 @@ function createInvokeId(stateNodeId, index) {
|
|
|
598
630
|
exports.createInvokeId = createInvokeId;
|
|
599
631
|
exports.evaluateGuard = evaluateGuard;
|
|
600
632
|
exports.flatten = flatten;
|
|
633
|
+
exports.getActionType = getActionType;
|
|
601
634
|
exports.getEventType = getEventType;
|
|
602
635
|
exports.interopSymbols = interopSymbols;
|
|
603
636
|
exports.isActor = isActor;
|
|
@@ -620,6 +653,7 @@ exports.normalizeTarget = normalizeTarget;
|
|
|
620
653
|
exports.partition = partition;
|
|
621
654
|
exports.path = path;
|
|
622
655
|
exports.pathToStateValue = pathToStateValue;
|
|
656
|
+
exports.pathsToStateValue = pathsToStateValue;
|
|
623
657
|
exports.reportUnhandledExceptionOnInvocation = reportUnhandledExceptionOnInvocation;
|
|
624
658
|
exports.symbolObservable = symbolObservable;
|
|
625
659
|
exports.toArray = toArray;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xstate",
|
|
3
|
-
"version": "4.30.
|
|
3
|
+
"version": "4.30.5",
|
|
4
4
|
"description": "Finite State Machines and Statecharts for the Modern Web.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -48,12 +48,13 @@
|
|
|
48
48
|
"@rollup/plugin-babel": "^5.3.0",
|
|
49
49
|
"@scion-scxml/test-framework": "^2.0.15",
|
|
50
50
|
"babel-plugin-annotate-pure-calls": "^0.4.0",
|
|
51
|
+
"fast-glob": "^3.2.11",
|
|
51
52
|
"jest": "^26.6.3",
|
|
52
53
|
"jsdom": "^14.0.0",
|
|
53
54
|
"jsdom-global": "^3.0.2",
|
|
54
55
|
"lerna-alias": "3.0.3-0",
|
|
55
56
|
"pkg-up": "^3.1.0",
|
|
56
|
-
"rollup": "^2.
|
|
57
|
+
"rollup": "^2.69.0",
|
|
57
58
|
"rollup-plugin-filesize": "^6.2.1",
|
|
58
59
|
"rollup-plugin-replace": "^2.2.0",
|
|
59
60
|
"rollup-plugin-terser": "^5.1.2",
|