@typeonce/effect-machine 0.12.0 → 0.14.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 (103) hide show
  1. package/README.md +130 -30
  2. package/dist/Machine.d.ts +722 -262
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +130 -62
  5. package/dist/Machine.js.map +1 -1
  6. package/dist/internal/machine/atom.d.ts +1 -0
  7. package/dist/internal/machine/atom.d.ts.map +1 -1
  8. package/dist/internal/machine/atom.js +23 -0
  9. package/dist/internal/machine/atom.js.map +1 -1
  10. package/dist/internal/machine/commandRuntime.d.ts.map +1 -1
  11. package/dist/internal/machine/commandRuntime.js +2 -5
  12. package/dist/internal/machine/commandRuntime.js.map +1 -1
  13. package/dist/internal/machine/configuration.d.ts +5 -0
  14. package/dist/internal/machine/configuration.d.ts.map +1 -1
  15. package/dist/internal/machine/configuration.js +6 -2
  16. package/dist/internal/machine/configuration.js.map +1 -1
  17. package/dist/internal/machine/executionPlan.d.ts +1 -0
  18. package/dist/internal/machine/executionPlan.d.ts.map +1 -1
  19. package/dist/internal/machine/executionPlan.js +57 -24
  20. package/dist/internal/machine/executionPlan.js.map +1 -1
  21. package/dist/internal/machine/initialization.d.ts +5 -0
  22. package/dist/internal/machine/initialization.d.ts.map +1 -0
  23. package/dist/internal/machine/initialization.js +61 -0
  24. package/dist/internal/machine/initialization.js.map +1 -0
  25. package/dist/internal/machine/inspectionRuntime.d.ts +25 -0
  26. package/dist/internal/machine/inspectionRuntime.d.ts.map +1 -0
  27. package/dist/internal/machine/inspectionRuntime.js +79 -0
  28. package/dist/internal/machine/inspectionRuntime.js.map +1 -0
  29. package/dist/internal/machine/invocation.d.ts +2 -1
  30. package/dist/internal/machine/invocation.d.ts.map +1 -1
  31. package/dist/internal/machine/invocation.js +17 -10
  32. package/dist/internal/machine/invocation.js.map +1 -1
  33. package/dist/internal/machine/machine.d.ts +4 -3
  34. package/dist/internal/machine/machine.d.ts.map +1 -1
  35. package/dist/internal/machine/machine.js +327 -32
  36. package/dist/internal/machine/machine.js.map +1 -1
  37. package/dist/internal/machine/planner.d.ts +28 -0
  38. package/dist/internal/machine/planner.d.ts.map +1 -1
  39. package/dist/internal/machine/planner.js +132 -51
  40. package/dist/internal/machine/planner.js.map +1 -1
  41. package/dist/internal/machine/process.d.ts.map +1 -1
  42. package/dist/internal/machine/process.js +4 -2
  43. package/dist/internal/machine/process.js.map +1 -1
  44. package/dist/internal/machine/runtime.d.ts +27 -3
  45. package/dist/internal/machine/runtime.d.ts.map +1 -1
  46. package/dist/internal/machine/runtime.js +440 -64
  47. package/dist/internal/machine/runtime.js.map +1 -1
  48. package/dist/internal/machine/symbols.d.ts +2 -0
  49. package/dist/internal/machine/symbols.d.ts.map +1 -1
  50. package/dist/internal/machine/symbols.js +2 -0
  51. package/dist/internal/machine/symbols.js.map +1 -1
  52. package/dist/internal/machine/topology.d.ts +25 -0
  53. package/dist/internal/machine/topology.d.ts.map +1 -1
  54. package/dist/internal/machine/topology.js +26 -10
  55. package/dist/internal/machine/topology.js.map +1 -1
  56. package/dist/internal/testing/machine/exploration.d.ts.map +1 -1
  57. package/dist/internal/testing/machine/exploration.js +11 -2
  58. package/dist/internal/testing/machine/exploration.js.map +1 -1
  59. package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -1
  60. package/dist/internal/testing/machine/finiteModel.js +75 -69
  61. package/dist/internal/testing/machine/finiteModel.js.map +1 -1
  62. package/dist/internal/testing/machine/transitionCoverage.d.ts +20 -0
  63. package/dist/internal/testing/machine/transitionCoverage.d.ts.map +1 -0
  64. package/dist/internal/testing/machine/transitionCoverage.js +80 -0
  65. package/dist/internal/testing/machine/transitionCoverage.js.map +1 -0
  66. package/dist/internal/testing/machine/verification.d.ts.map +1 -1
  67. package/dist/internal/testing/machine/verification.js +171 -33
  68. package/dist/internal/testing/machine/verification.js.map +1 -1
  69. package/dist/testing/MachineTest.d.ts +97 -22
  70. package/dist/testing/MachineTest.d.ts.map +1 -1
  71. package/dist/testing/MachineTest.js +58 -16
  72. package/dist/testing/MachineTest.js.map +1 -1
  73. package/dist/unstable/cluster/ClusterMachine.d.ts +4 -1
  74. package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -1
  75. package/dist/unstable/cluster/ClusterMachine.js +4 -1
  76. package/dist/unstable/cluster/ClusterMachine.js.map +1 -1
  77. package/dist/unstable/reactivity/AtomMachine.d.ts +21 -3
  78. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -1
  79. package/dist/unstable/reactivity/AtomMachine.js +21 -3
  80. package/dist/unstable/reactivity/AtomMachine.js.map +1 -1
  81. package/docs/agent-guide.md +240 -65
  82. package/package.json +5 -5
  83. package/src/Machine.ts +1240 -495
  84. package/src/internal/machine/atom.ts +26 -0
  85. package/src/internal/machine/commandRuntime.ts +2 -9
  86. package/src/internal/machine/configuration.ts +28 -3
  87. package/src/internal/machine/executionPlan.ts +72 -24
  88. package/src/internal/machine/initialization.ts +73 -0
  89. package/src/internal/machine/inspectionRuntime.ts +102 -0
  90. package/src/internal/machine/invocation.ts +37 -12
  91. package/src/internal/machine/machine.ts +438 -39
  92. package/src/internal/machine/planner.ts +180 -55
  93. package/src/internal/machine/process.ts +4 -2
  94. package/src/internal/machine/runtime.ts +661 -89
  95. package/src/internal/machine/symbols.ts +3 -0
  96. package/src/internal/machine/topology.ts +65 -12
  97. package/src/internal/testing/machine/exploration.ts +10 -2
  98. package/src/internal/testing/machine/finiteModel.ts +114 -80
  99. package/src/internal/testing/machine/transitionCoverage.ts +116 -0
  100. package/src/internal/testing/machine/verification.ts +216 -58
  101. package/src/testing/MachineTest.ts +118 -28
  102. package/src/unstable/cluster/ClusterMachine.ts +4 -1
  103. package/src/unstable/reactivity/AtomMachine.ts +24 -3
@@ -10,6 +10,7 @@ import { type RuntimeCommand } from "./command.js";
10
10
  import { type ActiveConfiguration } from "./configuration.js";
11
11
  import { InfiniteTransitionError, MachineSchemaDecodeError, StartupError } from "./errors.js";
12
12
  import * as InvocationEvent from "./invocationEvent.js";
13
+ import { type InitialTarget as InitialTargetInstruction } from "./topology.js";
13
14
  export type MicrostepPlan<State, Event, E, R> = {
14
15
  readonly next: State;
15
16
  readonly event: Event | MachineInitialEvent;
@@ -17,6 +18,7 @@ export type MicrostepPlan<State, Event, E, R> = {
17
18
  readonly source: string;
18
19
  readonly trigger: Machine.TransitionTrigger;
19
20
  readonly reenter: boolean;
21
+ readonly branchIndex: number;
20
22
  readonly target: string | undefined;
21
23
  readonly resolvedTarget: string | undefined;
22
24
  }>;
@@ -40,18 +42,32 @@ export type MacrostepPlan<State, Event, E, R, Output> = {
40
42
  readonly output: undefined;
41
43
  });
42
44
  export type TransitionHandler<States extends Machine.StateSchemas, E, R, Context> = (context: Context, enqueue: Enqueue<any, any>) => Machine.HandlerResult<States, E, R>;
45
+ type TransitionEvaluation<States extends Machine.StateSchemas, E, R> = {
46
+ readonly result: Machine.HandlerResult<States, E, R>;
47
+ readonly branchIndex: number;
48
+ };
49
+ type TransitionEvaluator<States extends Machine.StateSchemas, E, R, Context> = (context: Context, enqueue: Enqueue<any, any>) => TransitionEvaluation<States, E, R>;
43
50
  export declare const withMachineReferences: (machine: Machine.Any, machineReferences: MachineReferences<any, any>) => Machine.Any;
44
51
  type EventTransition<States extends Machine.StateSchemas, E, R, Context> = TransitionHandler<States, E, R, Context> | {
45
52
  readonly reenter?: boolean;
46
53
  readonly targets?: ReadonlyArray<string>;
47
54
  readonly transition: TransitionHandler<States, E, R, Context>;
55
+ readonly evaluate?: TransitionEvaluator<States, E, R, Context>;
48
56
  };
49
57
  export type MicrostepTransition<States extends Machine.StateSchemas, E, R, Context> = {
50
58
  readonly reenter: boolean;
51
59
  readonly targets: ReadonlyArray<string> | undefined;
52
60
  readonly transition: TransitionHandler<States, E, R, Context>;
61
+ readonly evaluate: TransitionEvaluator<States, E, R, Context> | undefined;
53
62
  };
54
63
  export declare const normalizeTransition: <States extends Machine.StateSchemas, E, R, Context>(transition: EventTransition<States, E, R, Context> | undefined) => MicrostepTransition<States, E, R, Context> | undefined;
64
+ export declare function resolveInitialTarget(machine: Machine.Any, configuration: ActiveConfiguration, target: InitialTargetInstruction, event: unknown): {
65
+ target: Machine.Target<Readonly<Record<string, Machine.TaggedSchema | Machine.StateNodeConfig>>, any>;
66
+ commands: import("../../Machine.js").Command[];
67
+ raisedEvents: unknown[];
68
+ emittedEvents: unknown[];
69
+ transitions: ResolvedChoiceTransition[];
70
+ };
55
71
  export type SelectedTransition<States extends Machine.StateSchemas, E, R, Context> = {
56
72
  readonly sourcePath: string;
57
73
  readonly leafPath: string;
@@ -61,6 +77,7 @@ export type SelectedTransition<States extends Machine.StateSchemas, E, R, Contex
61
77
  };
62
78
  export type EvaluatedTransition<States extends Machine.StateSchemas, Event, E, R, Context> = {
63
79
  readonly selection: SelectedTransition<States, E, R, Context>;
80
+ readonly branchIndex: number;
64
81
  readonly unresolvedTarget: Machine.Snapshot<States> | Machine.Target<States, Machine.StateIdentifier<States>> | Machine.HistoryTarget<States, Machine.HistoryIdentifier<States>> | Machine.ChoiceTarget<States, Machine.ChoiceIdentifier<States>> | undefined;
65
82
  readonly target: Machine.Snapshot<States> | Machine.Target<States, Machine.StateIdentifier<States>> | undefined;
66
83
  readonly commands: ReadonlyArray<RuntimeCommand>;
@@ -73,6 +90,7 @@ export type EvaluatedTransition<States extends Machine.StateSchemas, Event, E, R
73
90
  readonly source: string;
74
91
  readonly trigger: Machine.TransitionTrigger;
75
92
  readonly reenter: false;
93
+ readonly branchIndex: number;
76
94
  readonly target: string;
77
95
  readonly resolvedTarget: string;
78
96
  }>;
@@ -87,6 +105,14 @@ export declare const getTargetNodePath: <const States extends Machine.StateSchem
87
105
  export declare const validateDeclaredTransitionTarget: (sourcePath: string, trigger: Machine.TransitionTrigger, declaredTargets: ReadonlyArray<string> | undefined, target: unknown) => void;
88
106
  export declare const sortEvaluatedTransitions: <const States extends Machine.StateSchemas, Event, E, R, Context>(machine: Machine.Any, transitions: Iterable<EvaluatedTransition<States, Event, E, R, Context>>) => ReadonlyArray<EvaluatedTransition<States, Event, E, R, Context>>;
89
107
  export declare const removeConflictingTransitions: <const States extends Machine.StateSchemas, Event, E, R, Context>(machine: Machine.Any, transitions: ReadonlyArray<EvaluatedTransition<States, Event, E, R, Context>>) => ReadonlyArray<EvaluatedTransition<States, Event, E, R, Context>>;
108
+ interface ResolvedChoiceTransition {
109
+ readonly source: string;
110
+ readonly trigger: Machine.TransitionTrigger;
111
+ readonly reenter: false;
112
+ readonly branchIndex: number;
113
+ readonly target: string;
114
+ readonly resolvedTarget: string;
115
+ }
90
116
  export declare const MaxMacrostepIterations = 1000;
91
117
  export declare const InitialEvent: MachineInitialEvent;
92
118
  export declare const isFinalState: (machine: Machine.Any, state: Machine.Snapshot<any>) => boolean;
@@ -107,6 +133,7 @@ export declare const planInitialSync: <const States extends Machine.StateSchemas
107
133
  readonly source: string;
108
134
  readonly trigger: Machine.TransitionTrigger;
109
135
  readonly reenter: boolean;
136
+ readonly branchIndex: number;
110
137
  readonly target: string | undefined;
111
138
  readonly resolvedTarget: string | undefined;
112
139
  }[];
@@ -132,6 +159,7 @@ export declare const planInitialSync: <const States extends Machine.StateSchemas
132
159
  readonly source: string;
133
160
  readonly trigger: Machine.TransitionTrigger;
134
161
  readonly reenter: boolean;
162
+ readonly branchIndex: number;
135
163
  readonly target: string | undefined;
136
164
  readonly resolvedTarget: string | undefined;
137
165
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/internal/machine/planner.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,13 @@
6
6
  import * as Cause from "effect/Cause";
7
7
  import * as Effect from "effect/Effect";
8
8
  import { getTargetBuilder, makeCollector } from "./command.js";
9
- import { captureHistory, compareDocumentOrder, completeConfigurationEffect, completeConfigurationSync, configurationFromHistoryRecord, getActiveLeafPathFrom, getActiveLeafPaths, getHistoryRecord, getInitialEntryPaths, getLeafPath, getParentValue, getParentValues, getPathToRoot, getRootPath, isActiveFinalConfiguration, isDescendantOf, isPathInSubtree, normalizeConfiguration, normalizeConfigurationEffect, normalizeConfigurationSync, normalizeTargetConfigurationSync, pathDepth, snapshotFromConfiguration, snapshotFromConfigurationAtPath, validateInitialConfiguration } from "./configuration.js";
9
+ import { captureHistory, compareDocumentOrder, completeConfigurationEffect, completeConfigurationSync, configurationFromHistoryRecord, configurationFromInitialTargetSync, getActiveLeafPathFrom, getActiveLeafPaths, getHistoryRecord, getInitialEntryPaths, getLeafPath, getParentValue, getParentValues, getPathToRoot, getRootPath, isActiveFinalConfiguration, isDescendantOf, isPathInSubtree, normalizeConfiguration, normalizeConfigurationEffect, normalizeConfigurationSync, normalizeTargetConfigurationSync, pathDepth, snapshotFromConfiguration, snapshotFromConfigurationAtPath, validateInitialConfiguration } from "./configuration.js";
10
10
  import { InfiniteTransitionError, MachineSchemaDecodeError, StartupError, StoppedError } from "./errors.js";
11
+ import { getStateInitializeValues, makeStateInitializeBuilder } from "./initialization.js";
11
12
  import * as InvocationEvent from "./invocationEvent.js";
12
13
  import { decodeEventSync, decodeInputSync, decodeStateValueSync } from "./protocol.js";
13
14
  import { InitialEventTypeId } from "./symbols.js";
14
- import { getNode, isChoiceTarget, isHistoryTarget, isNoTarget, isSnapshot, isTarget, makeChoiceTarget, makeTarget, TargetSnapshotTypeId } from "./topology.js";
15
+ import { getNode, isChoiceTarget, isHistoryTarget, isInitialTarget, isNoTarget, isSnapshot, isTarget, makeChoiceTarget, makeTarget, TargetSnapshotTypeId } from "./topology.js";
15
16
  const rootMachineReferences = new WeakMap();
16
17
  const scopedMachineReferences = new WeakMap();
17
18
  export const withMachineReferences = (machine, machineReferences) => {
@@ -43,11 +44,12 @@ export const normalizeTransition = (transition) => {
43
44
  return undefined;
44
45
  }
45
46
  return typeof transition === "function"
46
- ? { reenter: false, targets: undefined, transition }
47
+ ? { reenter: false, targets: undefined, transition, evaluate: undefined }
47
48
  : {
48
49
  reenter: transition.reenter === true,
49
50
  targets: transition.targets,
50
- transition: transition.transition
51
+ transition: transition.transition,
52
+ evaluate: transition.evaluate
51
53
  };
52
54
  };
53
55
  const collectStateAction = (machine, handler, context) => {
@@ -66,11 +68,14 @@ const collectStateAction = (machine, handler, context) => {
66
68
  emittedEvents: collected.emittedEvents
67
69
  };
68
70
  };
69
- const collectTransition = (machine, transition, context) => {
71
+ const collectTransition = (machine, transition, context, evaluate) => {
70
72
  const collected = makeCollector(machine);
71
- const result = transition(context, collected.enqueue);
73
+ const evaluated = evaluate === undefined
74
+ ? { result: transition(context, collected.enqueue), branchIndex: 0 }
75
+ : evaluate(context, collected.enqueue);
72
76
  return {
73
- state: isNoTarget(result) ? undefined : result,
77
+ state: isNoTarget(evaluated.result) ? undefined : evaluated.result,
78
+ branchIndex: evaluated.branchIndex,
74
79
  commands: collected.commands,
75
80
  raisedEvents: collected.raisedEvents,
76
81
  emittedEvents: collected.emittedEvents
@@ -94,6 +99,7 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
94
99
  const commands = [];
95
100
  const raisedEvents = [];
96
101
  const emittedEvents = [];
102
+ const transitions = [];
97
103
  let changed = true;
98
104
  while (changed) {
99
105
  changed = false;
@@ -111,9 +117,40 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
111
117
  history: configuration.history,
112
118
  machineReferences: configuration.machineReferences
113
119
  };
120
+ if (child.type === "choice") {
121
+ const choice = resolveChoiceTarget(machine, current, makeChoiceTarget(child.path, path, Object.fromEntries(values)), event);
122
+ let next = current;
123
+ for (const routed of [choice.target, ...choice.additionalTargets]) {
124
+ if (routed === undefined || isHistoryTarget(routed)) {
125
+ throw new Error(`Machine initial choice "${child.path}" must resolve to an active state target`);
126
+ }
127
+ const resolved = isInitialTarget(routed)
128
+ ? resolveInitialTarget(machine, next, routed, event)
129
+ : undefined;
130
+ next = normalizeTargetConfigurationSync(machine, next, (resolved?.target ?? routed));
131
+ if (resolved !== undefined) {
132
+ commands.push(...resolved.commands);
133
+ raisedEvents.push(...resolved.raisedEvents);
134
+ emittedEvents.push(...resolved.emittedEvents);
135
+ transitions.push(...resolved.transitions);
136
+ }
137
+ }
138
+ active.clear();
139
+ values.clear();
140
+ for (const activePath of next.active)
141
+ active.add(activePath);
142
+ for (const [valuePath, stateValue] of next.values)
143
+ values.set(valuePath, stateValue);
144
+ commands.push(...choice.commands);
145
+ raisedEvents.push(...choice.raisedEvents);
146
+ emittedEvents.push(...choice.emittedEvents);
147
+ transitions.push(...choice.transitions);
148
+ changed = true;
149
+ continue;
150
+ }
114
151
  active.add(child.path);
115
152
  if (child.schema !== undefined) {
116
- const initializer = machine.handlers[path]?.initial;
153
+ const initializer = machine.handlers[path]?.initialize;
117
154
  if (initializer === undefined) {
118
155
  throw new Error(`Machine shallow history requires an initial value implementation for state "${path}"`);
119
156
  }
@@ -122,9 +159,11 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
122
159
  state: current.values.get(path),
123
160
  containingState: getParentValue(machine, current, path),
124
161
  ancestors: getParentValues(machine, current, path),
125
- event
162
+ event,
163
+ builder: makeStateInitializeBuilder(machine, path)
126
164
  });
127
- values.set(child.path, decodeStateValueSync(machine, child, initialized.value));
165
+ const initializedValues = getStateInitializeValues(path, initialized.value);
166
+ values.set(child.path, decodeStateValueSync(machine, child, initializedValues[child.key]));
128
167
  commands.push(...initialized.commands);
129
168
  raisedEvents.push(...initialized.raisedEvents);
130
169
  emittedEvents.push(...initialized.emittedEvents);
@@ -142,7 +181,7 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
142
181
  history: configuration.history,
143
182
  machineReferences: configuration.machineReferences
144
183
  };
145
- const initializer = valuedMissing.length === 0 ? undefined : machine.handlers[path]?.initial;
184
+ const initializer = valuedMissing.length === 0 ? undefined : machine.handlers[path]?.initialize;
146
185
  if (valuedMissing.length > 0 && initializer === undefined) {
147
186
  throw new Error(`Machine shallow history requires an initial value implementation for state "${path}"`);
148
187
  }
@@ -151,20 +190,21 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
151
190
  state: current.values.get(path),
152
191
  containingState: getParentValue(machine, current, path),
153
192
  ancestors: getParentValues(machine, current, path),
154
- event
193
+ event,
194
+ builder: makeStateInitializeBuilder(machine, path)
155
195
  });
156
- if (initialized !== undefined && (typeof initialized.value !== "object" || initialized.value === null)) {
157
- throw new Error(`Machine parallel state initializer for "${path}" must return its region values`);
158
- }
196
+ const initializedValues = initialized === undefined
197
+ ? undefined
198
+ : getStateInitializeValues(path, initialized.value);
159
199
  for (const childPath of missing) {
160
200
  const child = getNode(machine, childPath);
161
201
  active.add(child.path);
162
202
  if (child.schema !== undefined) {
163
203
  if (initialized === undefined ||
164
- !Object.prototype.hasOwnProperty.call(initialized.value, child.key)) {
204
+ initializedValues === undefined || !Object.prototype.hasOwnProperty.call(initializedValues, child.key)) {
165
205
  throw new Error(`Machine parallel state initializer for "${path}" must return region "${child.key}"`);
166
206
  }
167
- values.set(child.path, decodeStateValueSync(machine, child, initialized.value[child.key]));
207
+ values.set(child.path, decodeStateValueSync(machine, child, initializedValues[child.key]));
168
208
  }
169
209
  }
170
210
  if (initialized !== undefined) {
@@ -186,10 +226,26 @@ const completeHistoryConfiguration = (machine, configuration, event) => {
186
226
  },
187
227
  commands,
188
228
  raisedEvents,
189
- emittedEvents
229
+ emittedEvents,
230
+ transitions
190
231
  };
191
232
  };
192
- const resolveHistoryTarget = (machine, configuration, target, event) => {
233
+ export function resolveInitialTarget(machine, configuration, target, event) {
234
+ const partial = configurationFromInitialTargetSync(machine, configuration, target);
235
+ const completed = completeHistoryConfiguration(machine, partial, event);
236
+ const snapshot = snapshotFromConfigurationAtPath(machine, completed.configuration, target.path);
237
+ return {
238
+ target: makeTarget(target.path, snapshot.value, {
239
+ snapshot: snapshot,
240
+ values: Object.fromEntries(completed.configuration.values)
241
+ }),
242
+ commands: completed.commands,
243
+ raisedEvents: completed.raisedEvents,
244
+ emittedEvents: completed.emittedEvents,
245
+ transitions: completed.transitions
246
+ };
247
+ }
248
+ function resolveHistoryTarget(machine, configuration, target, event) {
193
249
  const node = getNode(machine, target.path);
194
250
  if (node.type !== "history" || node.parent !== target.parent) {
195
251
  throw new Error(`Machine expected history target "${target.path}" to resolve to its declared parent`);
@@ -211,7 +267,7 @@ const resolveHistoryTarget = (machine, configuration, target, event) => {
211
267
  commands: completed.commands,
212
268
  raisedEvents: completed.raisedEvents,
213
269
  emittedEvents: completed.emittedEvents,
214
- transitions: []
270
+ transitions: completed.transitions
215
271
  };
216
272
  }
217
273
  const key = node.key;
@@ -262,7 +318,7 @@ const resolveHistoryTarget = (machine, configuration, target, event) => {
262
318
  emittedEvents: [...collected.emittedEvents, ...(choiceResolution?.emittedEvents ?? [])],
263
319
  transitions: choiceResolution?.transitions ?? []
264
320
  };
265
- };
321
+ }
266
322
  const getCandidatePaths = (machine, configuration) => Array.from(configuration.active)
267
323
  .sort((left, right) => {
268
324
  const depth = pathDepth(machine, right) - pathDepth(machine, left);
@@ -563,7 +619,7 @@ const withChoiceValues = (target, values) => {
563
619
  values: { ...values, ...(target.values ?? {}) }
564
620
  });
565
621
  };
566
- const resolveChoiceTarget = (machine, configuration, initialTarget, event) => {
622
+ function resolveChoiceTarget(machine, configuration, initialTarget, event) {
567
623
  const pending = [initialTarget];
568
624
  const resolvedTargets = [];
569
625
  const commands = [];
@@ -614,7 +670,7 @@ const resolveChoiceTarget = (machine, configuration, initialTarget, event) => {
614
670
  ancestors: getParentValues(machine, provisional, node.path),
615
671
  event,
616
672
  target: getTargetBuilder(machine, node.path)
617
- });
673
+ }, choice.evaluate);
618
674
  if (collected.state === undefined) {
619
675
  throw new Error(`Machine choice resolver for "${node.path}" must return a target`);
620
676
  }
@@ -626,6 +682,7 @@ const resolveChoiceTarget = (machine, configuration, initialTarget, event) => {
626
682
  source: node.path,
627
683
  trigger: { type: "choice" },
628
684
  reenter: false,
685
+ branchIndex: collected.branchIndex,
629
686
  target: returnedPath,
630
687
  resolvedTarget: nested?.target.path ?? returnedPath
631
688
  });
@@ -633,7 +690,7 @@ const resolveChoiceTarget = (machine, configuration, initialTarget, event) => {
633
690
  raisedEvents.push(...collected.raisedEvents);
634
691
  emittedEvents.push(...collected.emittedEvents);
635
692
  }
636
- if (!isTarget(current) && !isSnapshot(current) && !isHistoryTarget(current)) {
693
+ if (!isTarget(current) && !isSnapshot(current) && !isHistoryTarget(current) && !isInitialTarget(current)) {
637
694
  throw new Error("Machine choice resolver must return a concrete typed target");
638
695
  }
639
696
  resolvedTargets.push(current);
@@ -646,10 +703,10 @@ const resolveChoiceTarget = (machine, configuration, initialTarget, event) => {
646
703
  emittedEvents,
647
704
  transitions
648
705
  };
649
- };
706
+ }
650
707
  const collectEvaluatedTransition = (machine, state, selection) => {
651
708
  const stateIdentifier = selection.leafPath;
652
- const transitionResult = collectTransition(machine, selection.transition.transition, selection.context);
709
+ const transitionResult = collectTransition(machine, selection.transition.transition, selection.context, selection.transition.evaluate);
653
710
  const unresolvedTarget = transitionResult.state === undefined
654
711
  ? undefined
655
712
  : transitionResult.state;
@@ -658,45 +715,58 @@ const collectEvaluatedTransition = (machine, state, selection) => {
658
715
  ? undefined
659
716
  : resolveChoiceTarget(machine, state, unresolvedTarget, selection.context.event);
660
717
  const choiceResolvedTarget = choiceResolution?.target ?? unresolvedTarget;
718
+ const initialResolution = choiceResolvedTarget !== undefined && isInitialTarget(choiceResolvedTarget)
719
+ ? resolveInitialTarget(machine, state, choiceResolvedTarget, selection.context.event)
720
+ : undefined;
721
+ const routedTarget = initialResolution?.target ?? choiceResolvedTarget;
661
722
  let historyResolution;
662
- const reenteredHistoryTarget = isHistoryTarget(choiceResolvedTarget) && selection.transition.reenter &&
663
- state.active.has(choiceResolvedTarget.parent)
664
- ? choiceResolvedTarget
723
+ const reenteredHistoryTarget = isHistoryTarget(routedTarget) && selection.transition.reenter &&
724
+ state.active.has(routedTarget.parent)
725
+ ? routedTarget
665
726
  : undefined;
666
- if (choiceResolvedTarget !== undefined && isHistoryTarget(choiceResolvedTarget)) {
727
+ if (routedTarget !== undefined && isHistoryTarget(routedTarget)) {
667
728
  // A reentering transition may exit the history node's own parent. SCXML
668
729
  // history observes that same exit, so resolve against a provisional
669
730
  // capture rather than an older record (or the default).
670
731
  const provisionalBoundary = selection.transition.reenter
671
732
  ? getNode(machine, selection.sourcePath).parent
672
- : getLeastCommonAncestor(machine, stateIdentifier, choiceResolvedTarget.parent);
733
+ : getLeastCommonAncestor(machine, stateIdentifier, routedTarget.parent);
673
734
  const provisionalExitPaths = reenteredHistoryTarget !== undefined
674
- ? sortExitPaths(machine, Array.from(state.active).filter((path) => isPathInSubtree(path, choiceResolvedTarget.parent)))
735
+ ? sortExitPaths(machine, Array.from(state.active).filter((path) => isPathInSubtree(path, routedTarget.parent)))
675
736
  : getExitPaths(machine, state, provisionalBoundary);
676
- const stateAtHistoryResolution = provisionalExitPaths.includes(choiceResolvedTarget.parent)
737
+ const stateAtHistoryResolution = provisionalExitPaths.includes(routedTarget.parent)
677
738
  ? captureHistory(machine, state, state, provisionalExitPaths)
678
739
  : state;
679
- historyResolution = resolveHistoryTarget(machine, stateAtHistoryResolution, choiceResolvedTarget, selection.context.event);
740
+ historyResolution = resolveHistoryTarget(machine, stateAtHistoryResolution, routedTarget, selection.context.event);
680
741
  }
681
742
  const target = historyResolution === undefined
682
- ? choiceResolvedTarget
743
+ ? routedTarget
683
744
  : historyResolution.target;
684
- const additionalHistoryActions = [];
685
- const additionalHistoryRaisedEvents = [];
686
- const additionalHistoryEmittedEvents = [];
687
- const additionalHistoryChoiceTransitions = [];
745
+ const additionalTargetActions = [];
746
+ const additionalTargetRaisedEvents = [];
747
+ const additionalTargetEmittedEvents = [];
748
+ const additionalTargetChoiceTransitions = [];
688
749
  const additionalChoiceTargets = [];
689
750
  for (const additionalTarget of choiceResolution?.additionalTargets ?? []) {
751
+ if (isInitialTarget(additionalTarget)) {
752
+ const resolved = resolveInitialTarget(machine, state, additionalTarget, selection.context.event);
753
+ additionalChoiceTargets.push(resolved.target);
754
+ additionalTargetActions.push(...resolved.commands);
755
+ additionalTargetRaisedEvents.push(...resolved.raisedEvents);
756
+ additionalTargetEmittedEvents.push(...resolved.emittedEvents);
757
+ additionalTargetChoiceTransitions.push(...resolved.transitions);
758
+ continue;
759
+ }
690
760
  if (!isHistoryTarget(additionalTarget)) {
691
761
  additionalChoiceTargets.push(additionalTarget);
692
762
  continue;
693
763
  }
694
764
  const resolved = resolveHistoryTarget(machine, state, additionalTarget, selection.context.event);
695
765
  additionalChoiceTargets.push(resolved.target);
696
- additionalHistoryActions.push(...resolved.commands);
697
- additionalHistoryRaisedEvents.push(...resolved.raisedEvents);
698
- additionalHistoryEmittedEvents.push(...resolved.emittedEvents);
699
- additionalHistoryChoiceTransitions.push(...resolved.transitions);
766
+ additionalTargetActions.push(...resolved.commands);
767
+ additionalTargetRaisedEvents.push(...resolved.raisedEvents);
768
+ additionalTargetEmittedEvents.push(...resolved.emittedEvents);
769
+ additionalTargetChoiceTransitions.push(...resolved.transitions);
700
770
  }
701
771
  const targetPath = target === undefined
702
772
  ? undefined
@@ -713,33 +783,38 @@ const collectEvaluatedTransition = (machine, state, selection) => {
713
783
  if (!changed) {
714
784
  return {
715
785
  selection,
786
+ branchIndex: transitionResult.branchIndex,
716
787
  unresolvedTarget,
717
788
  target,
718
789
  commands: [
719
790
  ...transitionResult.commands,
720
791
  ...(choiceResolution?.commands ?? []),
792
+ ...(initialResolution?.commands ?? []),
721
793
  ...(historyResolution?.commands ?? []),
722
- ...additionalHistoryActions
794
+ ...additionalTargetActions
723
795
  ],
724
796
  raisedEvents: [
725
797
  ...transitionResult.raisedEvents,
726
798
  ...(choiceResolution?.raisedEvents ?? []),
799
+ ...(initialResolution?.raisedEvents ?? []),
727
800
  ...(historyResolution?.raisedEvents ?? []),
728
- ...additionalHistoryRaisedEvents
801
+ ...additionalTargetRaisedEvents
729
802
  ],
730
803
  emittedEvents: [
731
804
  ...transitionResult.emittedEvents,
732
805
  ...(choiceResolution?.emittedEvents ?? []),
806
+ ...(initialResolution?.emittedEvents ?? []),
733
807
  ...(historyResolution?.emittedEvents ?? []),
734
- ...additionalHistoryEmittedEvents
808
+ ...additionalTargetEmittedEvents
735
809
  ],
736
810
  changed,
737
811
  exitPaths: [],
738
812
  entryPaths: [],
739
813
  choiceTransitions: [
740
814
  ...(choiceResolution?.transitions ?? []),
815
+ ...(initialResolution?.transitions ?? []),
741
816
  ...(historyResolution?.transitions ?? []),
742
- ...additionalHistoryChoiceTransitions
817
+ ...additionalTargetChoiceTransitions
743
818
  ]
744
819
  };
745
820
  }
@@ -752,25 +827,29 @@ const collectEvaluatedTransition = (machine, state, selection) => {
752
827
  : naturalBoundary;
753
828
  return {
754
829
  selection,
830
+ branchIndex: transitionResult.branchIndex,
755
831
  unresolvedTarget,
756
832
  target,
757
833
  commands: [
758
834
  ...transitionResult.commands,
759
835
  ...(choiceResolution?.commands ?? []),
836
+ ...(initialResolution?.commands ?? []),
760
837
  ...(historyResolution?.commands ?? []),
761
- ...additionalHistoryActions
838
+ ...additionalTargetActions
762
839
  ],
763
840
  raisedEvents: [
764
841
  ...transitionResult.raisedEvents,
765
842
  ...(choiceResolution?.raisedEvents ?? []),
843
+ ...(initialResolution?.raisedEvents ?? []),
766
844
  ...(historyResolution?.raisedEvents ?? []),
767
- ...additionalHistoryRaisedEvents
845
+ ...additionalTargetRaisedEvents
768
846
  ],
769
847
  emittedEvents: [
770
848
  ...transitionResult.emittedEvents,
771
849
  ...(choiceResolution?.emittedEvents ?? []),
850
+ ...(initialResolution?.emittedEvents ?? []),
772
851
  ...(historyResolution?.emittedEvents ?? []),
773
- ...additionalHistoryEmittedEvents
852
+ ...additionalTargetEmittedEvents
774
853
  ],
775
854
  changed,
776
855
  exitPaths: reenteredHistoryTarget !== undefined
@@ -781,8 +860,9 @@ const collectEvaluatedTransition = (machine, state, selection) => {
781
860
  : getEntryPaths(machine, stateAfterTransition, boundary),
782
861
  choiceTransitions: [
783
862
  ...(choiceResolution?.transitions ?? []),
863
+ ...(initialResolution?.transitions ?? []),
784
864
  ...(historyResolution?.transitions ?? []),
785
- ...additionalHistoryChoiceTransitions
865
+ ...additionalTargetChoiceTransitions
786
866
  ]
787
867
  };
788
868
  };
@@ -939,6 +1019,7 @@ const microstep = (machine, state, event, selections) => {
939
1019
  source: transition.selection.sourcePath,
940
1020
  trigger: transition.selection.trigger,
941
1021
  reenter: transition.selection.transition.reenter,
1022
+ branchIndex: transition.branchIndex,
942
1023
  target: transition.unresolvedTarget === undefined ? undefined : getTargetNodePath(transition.unresolvedTarget),
943
1024
  resolvedTarget: transition.target === undefined ? undefined : getTargetNodePath(transition.target)
944
1025
  },