xstate 4.31.0 → 4.33.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.
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Machine.js +7 -0
- package/es/State.d.ts +3 -3
- package/es/StateNode.d.ts +3 -8
- package/es/StateNode.js +53 -57
- package/es/actions.d.ts +3 -3
- package/es/actions.js +43 -9
- package/es/interpreter.d.ts +4 -1
- package/es/interpreter.js +303 -253
- package/es/model.types.d.ts +6 -2
- package/es/stateUtils.d.ts +1 -0
- package/es/stateUtils.js +6 -3
- package/es/typegenTypes.d.ts +13 -10
- package/es/types.d.ts +22 -18
- package/es/utils.d.ts +1 -1
- package/es/utils.js +6 -10
- package/es/waitFor.js +6 -1
- package/lib/Machine.js +7 -0
- package/lib/State.d.ts +3 -3
- package/lib/StateNode.d.ts +3 -8
- package/lib/StateNode.js +51 -55
- package/lib/actions.d.ts +3 -3
- package/lib/actions.js +43 -9
- package/lib/interpreter.d.ts +4 -1
- package/lib/interpreter.js +298 -248
- package/lib/model.types.d.ts +6 -2
- package/lib/stateUtils.d.ts +1 -0
- package/lib/stateUtils.js +6 -2
- package/lib/typegenTypes.d.ts +13 -10
- package/lib/types.d.ts +22 -18
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +6 -10
- package/lib/waitFor.js +6 -1
- package/package.json +1 -1
- package/CHANGELOG.md +0 -1460
package/lib/actions.js
CHANGED
|
@@ -378,6 +378,26 @@ function pure(getActions) {
|
|
|
378
378
|
*/
|
|
379
379
|
|
|
380
380
|
function forwardTo(target, options) {
|
|
381
|
+
if (!environment.IS_PRODUCTION && (!target || typeof target === 'function')) {
|
|
382
|
+
var originalTarget_1 = target;
|
|
383
|
+
|
|
384
|
+
target = function () {
|
|
385
|
+
var args = [];
|
|
386
|
+
|
|
387
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
388
|
+
args[_i] = arguments[_i];
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
var resolvedTarget = typeof originalTarget_1 === 'function' ? originalTarget_1.apply(void 0, _tslib.__spreadArray([], _tslib.__read(args), false)) : originalTarget_1;
|
|
392
|
+
|
|
393
|
+
if (!resolvedTarget) {
|
|
394
|
+
throw new Error("Attempted to forward event to undefined actor. This risks an infinite loop in the sender.");
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return resolvedTarget;
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
|
|
381
401
|
return send(function (_, event) {
|
|
382
402
|
return event;
|
|
383
403
|
}, _tslib.__assign(_tslib.__assign({}, options), {
|
|
@@ -408,7 +428,7 @@ function choose(conds) {
|
|
|
408
428
|
conds: conds
|
|
409
429
|
};
|
|
410
430
|
}
|
|
411
|
-
function resolveActions(machine, currentState, currentContext, _event, actions, preserveActionOrder) {
|
|
431
|
+
function resolveActions(machine, currentState, currentContext, _event, actions, predictableExec, preserveActionOrder) {
|
|
412
432
|
if (preserveActionOrder === void 0) {
|
|
413
433
|
preserveActionOrder = false;
|
|
414
434
|
}
|
|
@@ -426,7 +446,9 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
|
|
|
426
446
|
|
|
427
447
|
switch (actionObject.type) {
|
|
428
448
|
case actionTypes.raise:
|
|
429
|
-
|
|
449
|
+
{
|
|
450
|
+
return resolveRaise(actionObject);
|
|
451
|
+
}
|
|
430
452
|
|
|
431
453
|
case actionTypes.send:
|
|
432
454
|
var sendAction = resolveSend(actionObject, updatedContext, _event, machine.options.delays); // TODO: fix ActionTypes.Init
|
|
@@ -437,24 +459,32 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
|
|
|
437
459
|
"No delay reference for delay expression '".concat(actionObject.delay, "' was found on machine '").concat(machine.id, "'"));
|
|
438
460
|
}
|
|
439
461
|
|
|
462
|
+
if (sendAction.to !== types.SpecialTargets.Internal) {
|
|
463
|
+
predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(sendAction, updatedContext, _event);
|
|
464
|
+
}
|
|
465
|
+
|
|
440
466
|
return sendAction;
|
|
441
467
|
|
|
442
468
|
case actionTypes.log:
|
|
443
|
-
|
|
469
|
+
{
|
|
470
|
+
var resolved = resolveLog(actionObject, updatedContext, _event);
|
|
471
|
+
predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, updatedContext, _event);
|
|
472
|
+
return resolved;
|
|
473
|
+
}
|
|
444
474
|
|
|
445
475
|
case actionTypes.choose:
|
|
446
476
|
{
|
|
447
477
|
var chooseAction = actionObject;
|
|
448
478
|
var matchedActions = (_a = chooseAction.conds.find(function (condition) {
|
|
449
479
|
var guard = utils.toGuard(condition.cond, machine.options.guards);
|
|
450
|
-
return !guard || utils.evaluateGuard(machine, guard, updatedContext, _event, currentState);
|
|
480
|
+
return !guard || utils.evaluateGuard(machine, guard, updatedContext, _event, !predictableExec ? currentState : undefined);
|
|
451
481
|
})) === null || _a === void 0 ? void 0 : _a.actions;
|
|
452
482
|
|
|
453
483
|
if (!matchedActions) {
|
|
454
484
|
return [];
|
|
455
485
|
}
|
|
456
486
|
|
|
457
|
-
var _b = _tslib.__read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(utils.toArray(matchedActions), machine.options.actions), preserveActionOrder), 2),
|
|
487
|
+
var _b = _tslib.__read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(utils.toArray(matchedActions), machine.options.actions), predictableExec, preserveActionOrder), 2),
|
|
458
488
|
resolvedActionsFromChoose = _b[0],
|
|
459
489
|
resolvedContextFromChoose = _b[1];
|
|
460
490
|
|
|
@@ -471,7 +501,7 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
|
|
|
471
501
|
return [];
|
|
472
502
|
}
|
|
473
503
|
|
|
474
|
-
var _c = _tslib.__read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(utils.toArray(matchedActions), machine.options.actions), preserveActionOrder), 2),
|
|
504
|
+
var _c = _tslib.__read(resolveActions(machine, currentState, updatedContext, _event, toActionObjects(utils.toArray(matchedActions), machine.options.actions), predictableExec, preserveActionOrder), 2),
|
|
475
505
|
resolvedActionsFromPure = _c[0],
|
|
476
506
|
resolvedContext = _c[1];
|
|
477
507
|
|
|
@@ -482,12 +512,14 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
|
|
|
482
512
|
|
|
483
513
|
case actionTypes.stop:
|
|
484
514
|
{
|
|
485
|
-
|
|
515
|
+
var resolved = resolveStop(actionObject, updatedContext, _event);
|
|
516
|
+
predictableExec === null || predictableExec === void 0 ? void 0 : predictableExec(resolved, updatedContext, _event);
|
|
517
|
+
return resolved;
|
|
486
518
|
}
|
|
487
519
|
|
|
488
520
|
case actionTypes.assign:
|
|
489
521
|
{
|
|
490
|
-
updatedContext = utils.updateContext(updatedContext, _event, [actionObject], currentState);
|
|
522
|
+
updatedContext = utils.updateContext(updatedContext, _event, [actionObject], !predictableExec ? currentState : undefined);
|
|
491
523
|
preservedContexts === null || preservedContexts === void 0 ? void 0 : preservedContexts.push(updatedContext);
|
|
492
524
|
break;
|
|
493
525
|
}
|
|
@@ -496,7 +528,9 @@ function resolveActions(machine, currentState, currentContext, _event, actions,
|
|
|
496
528
|
var resolvedActionObject = toActionObject(actionObject, machine.options.actions);
|
|
497
529
|
var exec_1 = resolvedActionObject.exec;
|
|
498
530
|
|
|
499
|
-
if (
|
|
531
|
+
if (predictableExec) {
|
|
532
|
+
predictableExec(resolvedActionObject, updatedContext, _event);
|
|
533
|
+
} else if (exec_1 && preservedContexts) {
|
|
500
534
|
var contextIndex_1 = preservedContexts.length - 1;
|
|
501
535
|
resolvedActionObject = _tslib.__assign(_tslib.__assign({}, resolvedActionObject), {
|
|
502
536
|
exec: function (_ctx) {
|
package/lib/interpreter.d.ts
CHANGED
|
@@ -93,7 +93,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
93
93
|
execute(state: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>, actionsConfig?: MachineOptions<TContext, TEvent>['actions']): void;
|
|
94
94
|
private update;
|
|
95
95
|
onTransition(listener: StateListener<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta>): this;
|
|
96
|
-
subscribe(observer: Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta
|
|
96
|
+
subscribe(observer: Partial<Observer<State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>>>): Subscription;
|
|
97
97
|
subscribe(nextListener?: (state: State<TContext, TEvent, any, TTypestate, TResolvedTypesMeta>) => void, errorListener?: (error: any) => void, completeListener?: () => void): Subscription;
|
|
98
98
|
/**
|
|
99
99
|
* Adds an event listener that is notified whenever an event is sent to the running interpreter.
|
|
@@ -134,6 +134,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
134
134
|
* @param initialState The state to start the statechart from
|
|
135
135
|
*/
|
|
136
136
|
start(initialState?: State<TContext, TEvent, TStateSchema, TTypestate, TResolvedTypesMeta> | StateConfig<TContext, TEvent> | StateValue): this;
|
|
137
|
+
private _stop;
|
|
137
138
|
/**
|
|
138
139
|
* Stops the interpreter and unsubscribe all listeners.
|
|
139
140
|
*
|
|
@@ -158,6 +159,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
158
159
|
*/
|
|
159
160
|
sender(event: Event<TEvent>): () => State<TContext, TEvent, TStateSchema, TTypestate>;
|
|
160
161
|
private sendTo;
|
|
162
|
+
private _nextState;
|
|
161
163
|
/**
|
|
162
164
|
* Returns the next state given the interpreter's current state and the event.
|
|
163
165
|
*
|
|
@@ -169,6 +171,7 @@ export declare class Interpreter<TContext, TStateSchema extends StateSchema = an
|
|
|
169
171
|
private forward;
|
|
170
172
|
private defer;
|
|
171
173
|
private cancel;
|
|
174
|
+
private _exec;
|
|
172
175
|
private exec;
|
|
173
176
|
private removeChild;
|
|
174
177
|
private stopChild;
|