xstate 4.30.4 → 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 +6 -0
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/SimulatedClock.js +81 -0
- package/es/State.js +15 -10
- package/es/StateNode.js +8 -8
- package/es/actions.js +1 -1
- package/es/behaviors.js +71 -5
- package/es/each.js +13 -0
- package/es/index.js +5 -5
- package/es/interpreter.js +4 -4
- package/es/invokeUtils.js +4 -4
- package/es/json.js +86 -0
- package/es/model.js +50 -0
- package/es/patterns.js +48 -0
- package/es/utils.js +52 -2
- package/lib/SimulatedClock.js +83 -81
- package/lib/State.js +14 -8
- package/lib/StateNode.js +5 -5
- package/lib/actions.js +1 -1
- package/lib/behaviors.js +72 -4
- package/lib/each.js +14 -12
- package/lib/index.js +21 -27
- package/lib/interpreter.js +5 -4
- package/lib/invokeUtils.js +4 -4
- package/lib/json.js +81 -72
- package/lib/model.js +49 -69
- package/lib/patterns.js +45 -53
- package/lib/types.js +4 -0
- package/lib/utils.js +53 -0
- package/package.json +3 -2
package/lib/index.js
CHANGED
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var types = require('./types.js');
|
|
6
|
-
var utils = require('./utils.js');
|
|
7
5
|
var actions = require('./actions.js');
|
|
8
6
|
var Actor = require('./Actor.js');
|
|
9
|
-
var State = require('./State.js');
|
|
10
|
-
var behaviors = require('./behaviors.js');
|
|
11
7
|
var interpreter = require('./interpreter.js');
|
|
12
|
-
var StateNode = require('./StateNode.js');
|
|
13
8
|
var Machine = require('./Machine.js');
|
|
14
9
|
var mapState = require('./mapState.js');
|
|
15
10
|
var match = require('./match.js');
|
|
16
11
|
var schema = require('./schema.js');
|
|
12
|
+
var State = require('./State.js');
|
|
13
|
+
var StateNode = require('./StateNode.js');
|
|
14
|
+
var behaviors = require('./behaviors.js');
|
|
15
|
+
var types = require('./types.js');
|
|
16
|
+
var utils = require('./utils.js');
|
|
17
17
|
|
|
18
18
|
var assign = actions.assign,
|
|
19
19
|
send = actions.send,
|
|
@@ -22,42 +22,36 @@ var assign = actions.assign,
|
|
|
22
22
|
forwardTo = actions.forwardTo,
|
|
23
23
|
doneInvoke = actions.doneInvoke;
|
|
24
24
|
|
|
25
|
-
Object.defineProperty(exports, 'ActionTypes', {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
get: function () {
|
|
28
|
-
return types.ActionTypes;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
Object.defineProperty(exports, 'SpecialTargets', {
|
|
32
|
-
enumerable: true,
|
|
33
|
-
get: function () {
|
|
34
|
-
return types.SpecialTargets;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
exports.matchesState = utils.matchesState;
|
|
38
|
-
exports.toEventObject = utils.toEventObject;
|
|
39
|
-
exports.toObserver = utils.toObserver;
|
|
40
|
-
exports.toSCXMLEvent = utils.toSCXMLEvent;
|
|
41
25
|
exports.actions = actions;
|
|
42
26
|
exports.toActorRef = Actor.toActorRef;
|
|
43
|
-
exports.State = State.State;
|
|
44
|
-
exports.spawnBehavior = behaviors.spawnBehavior;
|
|
45
27
|
exports.Interpreter = interpreter.Interpreter;
|
|
46
28
|
Object.defineProperty(exports, 'InterpreterStatus', {
|
|
47
29
|
enumerable: true,
|
|
48
|
-
get: function () {
|
|
49
|
-
return interpreter.InterpreterStatus;
|
|
50
|
-
}
|
|
30
|
+
get: function () { return interpreter.InterpreterStatus; }
|
|
51
31
|
});
|
|
52
32
|
exports.interpret = interpreter.interpret;
|
|
53
33
|
exports.spawn = interpreter.spawn;
|
|
54
|
-
exports.StateNode = StateNode.StateNode;
|
|
55
34
|
exports.Machine = Machine.Machine;
|
|
56
35
|
exports.createMachine = Machine.createMachine;
|
|
57
36
|
exports.mapState = mapState.mapState;
|
|
58
37
|
exports.matchState = match.matchState;
|
|
59
38
|
exports.createSchema = schema.createSchema;
|
|
60
39
|
exports.t = schema.t;
|
|
40
|
+
exports.State = State.State;
|
|
41
|
+
exports.StateNode = StateNode.StateNode;
|
|
42
|
+
exports.spawnBehavior = behaviors.spawnBehavior;
|
|
43
|
+
Object.defineProperty(exports, 'ActionTypes', {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () { return types.ActionTypes; }
|
|
46
|
+
});
|
|
47
|
+
Object.defineProperty(exports, 'SpecialTargets', {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
get: function () { return types.SpecialTargets; }
|
|
50
|
+
});
|
|
51
|
+
exports.matchesState = utils.matchesState;
|
|
52
|
+
exports.toEventObject = utils.toEventObject;
|
|
53
|
+
exports.toObserver = utils.toObserver;
|
|
54
|
+
exports.toSCXMLEvent = utils.toSCXMLEvent;
|
|
61
55
|
exports.assign = assign;
|
|
62
56
|
exports.doneInvoke = doneInvoke;
|
|
63
57
|
exports.forwardTo = forwardTo;
|
package/lib/interpreter.js
CHANGED
|
@@ -4,23 +4,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
6
|
var types = require('./types.js');
|
|
7
|
+
var State = require('./State.js');
|
|
7
8
|
var actionTypes = require('./actionTypes.js');
|
|
9
|
+
var actions = require('./actions.js');
|
|
8
10
|
var environment = require('./environment.js');
|
|
9
11
|
var utils = require('./utils.js');
|
|
10
|
-
var
|
|
11
|
-
var serviceScope = require('./serviceScope.js');
|
|
12
|
+
var scheduler = require('./scheduler.js');
|
|
12
13
|
var Actor = require('./Actor.js');
|
|
13
14
|
var stateUtils = require('./stateUtils.js');
|
|
14
|
-
var State = require('./State.js');
|
|
15
|
-
var scheduler = require('./scheduler.js');
|
|
16
15
|
var registry = require('./registry.js');
|
|
17
16
|
var devTools = require('./devTools.js');
|
|
17
|
+
var serviceScope = require('./serviceScope.js');
|
|
18
18
|
var behaviors = require('./behaviors.js');
|
|
19
19
|
|
|
20
20
|
var DEFAULT_SPAWN_OPTIONS = {
|
|
21
21
|
sync: false,
|
|
22
22
|
autoForward: false
|
|
23
23
|
};
|
|
24
|
+
exports.InterpreterStatus = void 0;
|
|
24
25
|
|
|
25
26
|
(function (InterpreterStatus) {
|
|
26
27
|
InterpreterStatus[InterpreterStatus["NotStarted"] = 0] = "NotStarted";
|
package/lib/invokeUtils.js
CHANGED
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _tslib = require('./_virtual/_tslib.js');
|
|
6
6
|
require('./types.js');
|
|
7
7
|
var actionTypes = require('./actionTypes.js');
|
|
8
|
-
require('./environment.js');
|
|
9
8
|
require('./utils.js');
|
|
9
|
+
require('./environment.js');
|
|
10
10
|
|
|
11
11
|
function toInvokeSource(src) {
|
|
12
12
|
if (typeof src === 'string') {
|
|
@@ -29,9 +29,9 @@ function toInvokeDefinition(invokeConfig) {
|
|
|
29
29
|
type: actionTypes.invoke
|
|
30
30
|
}, invokeConfig), {
|
|
31
31
|
toJSON: function () {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
invokeDef = _tslib.__rest(invokeConfig, ["onDone", "onError"]);
|
|
32
|
+
invokeConfig.onDone;
|
|
33
|
+
invokeConfig.onError;
|
|
34
|
+
var invokeDef = _tslib.__rest(invokeConfig, ["onDone", "onError"]);
|
|
35
35
|
|
|
36
36
|
return _tslib.__assign(_tslib.__assign({}, invokeDef), {
|
|
37
37
|
type: actionTypes.invoke,
|
package/lib/json.js
CHANGED
|
@@ -1,85 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils = require('./utils.js');
|
|
6
|
+
|
|
6
7
|
function stringifyFunction(fn) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
return {
|
|
9
|
+
$function: fn.toString()
|
|
10
|
+
};
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
|
|
12
13
|
function getStateNodeId(stateNode) {
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
14
|
+
return "#".concat(stateNode.id);
|
|
15
|
+
} // derive config from machine
|
|
16
|
+
|
|
17
|
+
|
|
16
18
|
function machineToJSON(stateNode) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
var config = {
|
|
20
|
+
type: stateNode.type,
|
|
21
|
+
initial: stateNode.initial === undefined ? undefined : String(stateNode.initial),
|
|
22
|
+
id: stateNode.id,
|
|
23
|
+
key: stateNode.key,
|
|
24
|
+
entry: stateNode.onEntry,
|
|
25
|
+
exit: stateNode.onExit,
|
|
26
|
+
on: utils.mapValues(stateNode.on, function (transition) {
|
|
27
|
+
return transition.map(function (t) {
|
|
28
|
+
return {
|
|
29
|
+
target: t.target ? t.target.map(getStateNodeId) : [],
|
|
30
|
+
source: getStateNodeId(t.source),
|
|
31
|
+
actions: t.actions,
|
|
32
|
+
cond: t.cond,
|
|
33
|
+
eventType: t.eventType
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
}),
|
|
37
|
+
invoke: stateNode.invoke,
|
|
38
|
+
states: {}
|
|
39
|
+
};
|
|
40
|
+
Object.values(stateNode.states).forEach(function (sn) {
|
|
41
|
+
config.states[sn.key] = machineToJSON(sn);
|
|
42
|
+
});
|
|
43
|
+
return config;
|
|
42
44
|
}
|
|
43
|
-
exports.machineToJSON = machineToJSON;
|
|
44
45
|
function stringify(machine) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
46
|
+
return JSON.stringify(machineToJSON(machine), function (_, value) {
|
|
47
|
+
if (utils.isFunction(value)) {
|
|
48
|
+
return {
|
|
49
|
+
$function: value.toString()
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return value;
|
|
54
|
+
});
|
|
51
55
|
}
|
|
52
|
-
exports.stringify = stringify;
|
|
53
56
|
function parse(machineString) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
var config = JSON.parse(machineString, function (_, value) {
|
|
58
|
+
if (typeof value === 'object' && '$function' in value) {
|
|
59
|
+
return new Function(value.value);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return value;
|
|
63
|
+
});
|
|
64
|
+
return config;
|
|
61
65
|
}
|
|
62
|
-
exports.parse = parse;
|
|
63
66
|
function jsonify(value) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
return subValue;
|
|
80
|
-
});
|
|
67
|
+
Object.defineProperty(value, 'toJSON', {
|
|
68
|
+
value: function () {
|
|
69
|
+
return utils.mapValues(value, function (subValue) {
|
|
70
|
+
if (utils.isFunction(subValue)) {
|
|
71
|
+
return stringifyFunction(subValue);
|
|
72
|
+
} else if (typeof subValue === 'object' && !Array.isArray(subValue)) {
|
|
73
|
+
// mostly for assignments
|
|
74
|
+
return utils.mapValues(subValue, function (subSubValue) {
|
|
75
|
+
if (utils.isFunction(subSubValue)) {
|
|
76
|
+
return stringifyFunction(subSubValue);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return subSubValue;
|
|
80
|
+
});
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
|
|
83
|
+
return subValue;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return value;
|
|
84
88
|
}
|
|
89
|
+
|
|
85
90
|
exports.jsonify = jsonify;
|
|
91
|
+
exports.machineToJSON = machineToJSON;
|
|
92
|
+
exports.parse = parse;
|
|
93
|
+
exports.stringify = stringify;
|
|
94
|
+
exports.stringifyFunction = stringifyFunction;
|
package/lib/model.js
CHANGED
|
@@ -1,74 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
+
var actions = require('./actions.js');
|
|
7
|
+
var Machine = require('./Machine.js');
|
|
8
|
+
var utils = require('./utils.js');
|
|
9
|
+
|
|
10
|
+
function createModel(initialContext, creators) {
|
|
11
|
+
var eventCreators = creators === null || creators === void 0 ? void 0 : creators.events;
|
|
12
|
+
var actionCreators = creators === null || creators === void 0 ? void 0 : creators.actions;
|
|
13
|
+
var model = {
|
|
14
|
+
initialContext: initialContext,
|
|
15
|
+
assign: actions.assign,
|
|
16
|
+
events: eventCreators ? utils.mapValues(eventCreators, function (fn, eventType) {
|
|
17
|
+
return function () {
|
|
18
|
+
var args = [];
|
|
19
|
+
|
|
20
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
21
|
+
args[_i] = arguments[_i];
|
|
24
22
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
|
|
24
|
+
return _tslib.__assign(_tslib.__assign({}, fn.apply(void 0, _tslib.__spreadArray([], _tslib.__read(args), false))), {
|
|
25
|
+
type: eventType
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
}) : undefined,
|
|
29
|
+
actions: actionCreators ? utils.mapValues(actionCreators, function (fn, actionType) {
|
|
30
|
+
return function () {
|
|
31
|
+
var args = [];
|
|
32
|
+
|
|
33
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
34
|
+
args[_i] = arguments[_i];
|
|
34
35
|
}
|
|
36
|
+
|
|
37
|
+
return _tslib.__assign(_tslib.__assign({}, fn.apply(void 0, _tslib.__spreadArray([], _tslib.__read(args), false))), {
|
|
38
|
+
type: actionType
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
}) : undefined,
|
|
42
|
+
reset: function () {
|
|
43
|
+
return actions.assign(initialContext);
|
|
44
|
+
},
|
|
45
|
+
createMachine: function (config, implementations) {
|
|
46
|
+
return Machine.createMachine('context' in config ? config : _tslib.__assign(_tslib.__assign({}, config), {
|
|
47
|
+
context: initialContext
|
|
48
|
+
}), implementations);
|
|
35
49
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.createModel = void 0;
|
|
40
|
-
var actions_1 = require("./actions");
|
|
41
|
-
var Machine_1 = require("./Machine");
|
|
42
|
-
var utils_1 = require("./utils");
|
|
43
|
-
function createModel(initialContext, creators) {
|
|
44
|
-
var eventCreators = creators === null || creators === void 0 ? void 0 : creators.events;
|
|
45
|
-
var actionCreators = creators === null || creators === void 0 ? void 0 : creators.actions;
|
|
46
|
-
var model = {
|
|
47
|
-
initialContext: initialContext,
|
|
48
|
-
assign: actions_1.assign,
|
|
49
|
-
events: (eventCreators
|
|
50
|
-
? (0, utils_1.mapValues)(eventCreators, function (fn, eventType) { return function () {
|
|
51
|
-
var args = [];
|
|
52
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
53
|
-
args[_i] = arguments[_i];
|
|
54
|
-
}
|
|
55
|
-
return (__assign(__assign({}, fn.apply(void 0, __spreadArray([], __read(args), false))), { type: eventType }));
|
|
56
|
-
}; })
|
|
57
|
-
: undefined),
|
|
58
|
-
actions: actionCreators
|
|
59
|
-
? (0, utils_1.mapValues)(actionCreators, function (fn, actionType) { return function () {
|
|
60
|
-
var args = [];
|
|
61
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
62
|
-
args[_i] = arguments[_i];
|
|
63
|
-
}
|
|
64
|
-
return (__assign(__assign({}, fn.apply(void 0, __spreadArray([], __read(args), false))), { type: actionType }));
|
|
65
|
-
}; })
|
|
66
|
-
: undefined,
|
|
67
|
-
reset: function () { return (0, actions_1.assign)(initialContext); },
|
|
68
|
-
createMachine: function (config, implementations) {
|
|
69
|
-
return (0, Machine_1.createMachine)('context' in config ? config : __assign(__assign({}, config), { context: initialContext }), implementations);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
return model;
|
|
50
|
+
};
|
|
51
|
+
return model;
|
|
73
52
|
}
|
|
53
|
+
|
|
74
54
|
exports.createModel = createModel;
|
package/lib/patterns.js
CHANGED
|
@@ -1,61 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.sequence = exports.toggle = void 0;
|
|
15
|
-
var utils_1 = require("./utils");
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _tslib = require('./_virtual/_tslib.js');
|
|
6
|
+
var utils = require('./utils.js');
|
|
7
|
+
|
|
16
8
|
function toggle(onState, offState, eventType) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
_a;
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
|
|
11
|
+
return _a = {}, _a[onState] = {
|
|
12
|
+
on: (_b = {}, _b[eventType] = offState, _b)
|
|
13
|
+
}, _a[offState] = {
|
|
14
|
+
on: (_c = {}, _c[eventType] = onState, _c)
|
|
15
|
+
}, _a;
|
|
26
16
|
}
|
|
27
|
-
exports.toggle = toggle;
|
|
28
17
|
var defaultSequencePatternOptions = {
|
|
29
|
-
|
|
30
|
-
|
|
18
|
+
nextEvent: 'NEXT',
|
|
19
|
+
prevEvent: 'PREV'
|
|
31
20
|
};
|
|
32
21
|
function sequence(items, options) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
items.forEach(function (item, i) {
|
|
42
|
-
var state = {
|
|
43
|
-
on: {}
|
|
44
|
-
};
|
|
45
|
-
if (i + 1 === items.length) {
|
|
46
|
-
state.type = 'final';
|
|
47
|
-
}
|
|
48
|
-
if (nextEventObject && i + 1 < items.length) {
|
|
49
|
-
state.on[nextEventObject.type] = items[i + 1];
|
|
50
|
-
}
|
|
51
|
-
if (prevEventObject && i > 0) {
|
|
52
|
-
state.on[prevEventObject.type] = items[i - 1];
|
|
53
|
-
}
|
|
54
|
-
states[item] = state;
|
|
55
|
-
});
|
|
56
|
-
return {
|
|
57
|
-
initial: items[0],
|
|
58
|
-
states: states
|
|
22
|
+
var resolvedOptions = _tslib.__assign(_tslib.__assign({}, defaultSequencePatternOptions), options);
|
|
23
|
+
|
|
24
|
+
var states = {};
|
|
25
|
+
var nextEventObject = resolvedOptions.nextEvent === undefined ? undefined : utils.toEventObject(resolvedOptions.nextEvent);
|
|
26
|
+
var prevEventObject = resolvedOptions.prevEvent === undefined ? undefined : utils.toEventObject(resolvedOptions.prevEvent);
|
|
27
|
+
items.forEach(function (item, i) {
|
|
28
|
+
var state = {
|
|
29
|
+
on: {}
|
|
59
30
|
};
|
|
31
|
+
|
|
32
|
+
if (i + 1 === items.length) {
|
|
33
|
+
state.type = 'final';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (nextEventObject && i + 1 < items.length) {
|
|
37
|
+
state.on[nextEventObject.type] = items[i + 1];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (prevEventObject && i > 0) {
|
|
41
|
+
state.on[prevEventObject.type] = items[i - 1];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
states[item] = state;
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
initial: items[0],
|
|
48
|
+
states: states
|
|
49
|
+
};
|
|
60
50
|
}
|
|
51
|
+
|
|
61
52
|
exports.sequence = sequence;
|
|
53
|
+
exports.toggle = toggle;
|
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.js
CHANGED
|
@@ -7,6 +7,9 @@ var constants = require('./constants.js');
|
|
|
7
7
|
var environment = require('./environment.js');
|
|
8
8
|
|
|
9
9
|
var _a;
|
|
10
|
+
function keys(value) {
|
|
11
|
+
return Object.keys(value);
|
|
12
|
+
}
|
|
10
13
|
function matchesState(parentStateId, childStateId, delimiter) {
|
|
11
14
|
if (delimiter === void 0) {
|
|
12
15
|
delimiter = constants.STATE_DELIMITER;
|
|
@@ -43,6 +46,13 @@ function getEventType(event) {
|
|
|
43
46
|
throw new Error('Events must be strings or objects with a string event.type property.');
|
|
44
47
|
}
|
|
45
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
|
+
}
|
|
46
56
|
function toStatePath(stateId, delimiter) {
|
|
47
57
|
try {
|
|
48
58
|
if (isArray(stateId)) {
|
|
@@ -217,6 +227,46 @@ function toStatePaths(stateValue) {
|
|
|
217
227
|
}));
|
|
218
228
|
return result;
|
|
219
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
|
+
}
|
|
220
270
|
function flatten(array) {
|
|
221
271
|
var _a;
|
|
222
272
|
|
|
@@ -580,6 +630,7 @@ function createInvokeId(stateNodeId, index) {
|
|
|
580
630
|
exports.createInvokeId = createInvokeId;
|
|
581
631
|
exports.evaluateGuard = evaluateGuard;
|
|
582
632
|
exports.flatten = flatten;
|
|
633
|
+
exports.getActionType = getActionType;
|
|
583
634
|
exports.getEventType = getEventType;
|
|
584
635
|
exports.interopSymbols = interopSymbols;
|
|
585
636
|
exports.isActor = isActor;
|
|
@@ -592,6 +643,7 @@ exports.isObservable = isObservable;
|
|
|
592
643
|
exports.isPromiseLike = isPromiseLike;
|
|
593
644
|
exports.isStateLike = isStateLike;
|
|
594
645
|
exports.isString = isString;
|
|
646
|
+
exports.keys = keys;
|
|
595
647
|
exports.mapContext = mapContext;
|
|
596
648
|
exports.mapFilterValues = mapFilterValues;
|
|
597
649
|
exports.mapValues = mapValues;
|
|
@@ -601,6 +653,7 @@ exports.normalizeTarget = normalizeTarget;
|
|
|
601
653
|
exports.partition = partition;
|
|
602
654
|
exports.path = path;
|
|
603
655
|
exports.pathToStateValue = pathToStateValue;
|
|
656
|
+
exports.pathsToStateValue = pathsToStateValue;
|
|
604
657
|
exports.reportUnhandledExceptionOnInvocation = reportUnhandledExceptionOnInvocation;
|
|
605
658
|
exports.symbolObservable = symbolObservable;
|
|
606
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",
|