@typeonce/effect-machine 0.3.0 → 0.5.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 (170) hide show
  1. package/README.md +410 -17
  2. package/dist/Machine.d.ts +1191 -510
  3. package/dist/Machine.d.ts.map +1 -1
  4. package/dist/Machine.js +371 -565
  5. package/dist/Machine.js.map +1 -1
  6. package/dist/internal/machine/activities.d.ts +57 -0
  7. package/dist/internal/machine/activities.d.ts.map +1 -0
  8. package/dist/internal/machine/activities.js +49 -0
  9. package/dist/internal/machine/activities.js.map +1 -0
  10. package/dist/internal/machine/atom.d.ts +69 -0
  11. package/dist/internal/machine/atom.d.ts.map +1 -0
  12. package/dist/{AtomMachine.js → internal/machine/atom.js} +20 -95
  13. package/dist/internal/machine/atom.js.map +1 -0
  14. package/dist/internal/machine/cluster.d.ts +63 -0
  15. package/dist/internal/machine/cluster.d.ts.map +1 -0
  16. package/dist/{ClusterMachine.js → internal/machine/cluster.js} +15 -119
  17. package/dist/internal/machine/cluster.js.map +1 -0
  18. package/dist/internal/machine/command.d.ts +16 -0
  19. package/dist/internal/machine/command.d.ts.map +1 -0
  20. package/dist/internal/machine/command.js +45 -0
  21. package/dist/internal/machine/command.js.map +1 -0
  22. package/dist/internal/machine/commandRuntime.d.ts +13 -0
  23. package/dist/internal/machine/commandRuntime.d.ts.map +1 -0
  24. package/dist/internal/machine/commandRuntime.js +16 -0
  25. package/dist/internal/machine/commandRuntime.js.map +1 -0
  26. package/dist/internal/{machineModel.d.ts → machine/configuration.d.ts} +12 -61
  27. package/dist/internal/machine/configuration.d.ts.map +1 -0
  28. package/dist/internal/{machineModel.js → machine/configuration.js} +250 -545
  29. package/dist/internal/machine/configuration.js.map +1 -0
  30. package/dist/internal/{machineErrors.d.ts → machine/errors.d.ts} +8 -8
  31. package/dist/internal/machine/errors.d.ts.map +1 -0
  32. package/dist/internal/{machineErrors.js → machine/errors.js} +8 -8
  33. package/dist/internal/machine/errors.js.map +1 -0
  34. package/dist/internal/machine/executionPlan.d.ts +49 -0
  35. package/dist/internal/machine/executionPlan.d.ts.map +1 -0
  36. package/dist/internal/machine/executionPlan.js +676 -0
  37. package/dist/internal/machine/executionPlan.js.map +1 -0
  38. package/dist/internal/machine/invocation.d.ts +23 -0
  39. package/dist/internal/machine/invocation.d.ts.map +1 -0
  40. package/dist/internal/machine/invocation.js +77 -0
  41. package/dist/internal/machine/invocation.js.map +1 -0
  42. package/dist/internal/machine/machine.d.ts +183 -0
  43. package/dist/internal/machine/machine.d.ts.map +1 -0
  44. package/dist/internal/machine/machine.js +552 -0
  45. package/dist/internal/machine/machine.js.map +1 -0
  46. package/dist/internal/machine/planner.d.ts +182 -0
  47. package/dist/internal/machine/planner.d.ts.map +1 -0
  48. package/dist/internal/machine/planner.js +1082 -0
  49. package/dist/internal/machine/planner.js.map +1 -0
  50. package/dist/internal/{machineProcess.d.ts → machine/process.d.ts} +11 -5
  51. package/dist/internal/machine/process.d.ts.map +1 -0
  52. package/dist/internal/machine/process.js +498 -0
  53. package/dist/internal/machine/process.js.map +1 -0
  54. package/dist/internal/machine/protocol.d.ts +34 -0
  55. package/dist/internal/machine/protocol.d.ts.map +1 -0
  56. package/dist/internal/machine/protocol.js +182 -0
  57. package/dist/internal/machine/protocol.js.map +1 -0
  58. package/dist/internal/machine/readiness.d.ts +4 -0
  59. package/dist/internal/machine/readiness.d.ts.map +1 -0
  60. package/dist/internal/machine/readiness.js +2 -0
  61. package/dist/internal/machine/readiness.js.map +1 -0
  62. package/dist/internal/machine/runtime.d.ts +255 -0
  63. package/dist/internal/machine/runtime.d.ts.map +1 -0
  64. package/dist/internal/machine/runtime.js +1489 -0
  65. package/dist/internal/machine/runtime.js.map +1 -0
  66. package/dist/internal/machine/serialization.d.ts +14 -0
  67. package/dist/internal/machine/serialization.d.ts.map +1 -0
  68. package/dist/internal/machine/serialization.js +338 -0
  69. package/dist/internal/machine/serialization.js.map +1 -0
  70. package/dist/internal/machine/stateDefinition.d.ts +15 -0
  71. package/dist/internal/machine/stateDefinition.d.ts.map +1 -0
  72. package/dist/internal/machine/stateDefinition.js +210 -0
  73. package/dist/internal/machine/stateDefinition.js.map +1 -0
  74. package/dist/internal/machine/symbols.d.ts +3 -0
  75. package/dist/internal/machine/symbols.d.ts.map +1 -0
  76. package/dist/internal/machine/symbols.js +3 -0
  77. package/dist/internal/machine/symbols.js.map +1 -0
  78. package/dist/internal/machine/topology.d.ts +98 -0
  79. package/dist/internal/machine/topology.d.ts.map +1 -0
  80. package/dist/internal/machine/topology.js +347 -0
  81. package/dist/internal/machine/topology.js.map +1 -0
  82. package/dist/internal/testing/machine/arbitrary.d.ts +36 -0
  83. package/dist/internal/testing/machine/arbitrary.d.ts.map +1 -0
  84. package/dist/internal/testing/machine/arbitrary.js +68 -0
  85. package/dist/internal/testing/machine/arbitrary.js.map +1 -0
  86. package/dist/internal/testing/machine/exploration.d.ts +30 -0
  87. package/dist/internal/testing/machine/exploration.d.ts.map +1 -0
  88. package/dist/internal/testing/machine/exploration.js +237 -0
  89. package/dist/internal/testing/machine/exploration.js.map +1 -0
  90. package/dist/internal/testing/machine/finiteModel.d.ts +322 -0
  91. package/dist/internal/testing/machine/finiteModel.d.ts.map +1 -0
  92. package/dist/internal/testing/machine/finiteModel.js +976 -0
  93. package/dist/internal/testing/machine/finiteModel.js.map +1 -0
  94. package/dist/internal/testing/machine/invariant.d.ts +31 -0
  95. package/dist/internal/testing/machine/invariant.d.ts.map +1 -0
  96. package/dist/internal/testing/machine/invariant.js +214 -0
  97. package/dist/internal/testing/machine/invariant.js.map +1 -0
  98. package/dist/internal/testing/machine/probe.d.ts +26 -0
  99. package/dist/internal/testing/machine/probe.d.ts.map +1 -0
  100. package/dist/internal/testing/machine/probe.js +45 -0
  101. package/dist/internal/testing/machine/probe.js.map +1 -0
  102. package/dist/internal/testing/machine/referenceModel.d.ts +203 -0
  103. package/dist/internal/testing/machine/referenceModel.d.ts.map +1 -0
  104. package/dist/internal/testing/machine/referenceModel.js +1012 -0
  105. package/dist/internal/testing/machine/referenceModel.js.map +1 -0
  106. package/dist/internal/testing/machine/runtime.d.ts +631 -0
  107. package/dist/internal/testing/machine/runtime.d.ts.map +1 -0
  108. package/dist/internal/testing/machine/runtime.js +726 -0
  109. package/dist/internal/testing/machine/runtime.js.map +1 -0
  110. package/dist/internal/testing/machine/runtimeInvariant.d.ts +32 -0
  111. package/dist/internal/testing/machine/runtimeInvariant.d.ts.map +1 -0
  112. package/dist/internal/testing/machine/runtimeInvariant.js +334 -0
  113. package/dist/internal/testing/machine/runtimeInvariant.js.map +1 -0
  114. package/dist/internal/testing/machine/trace.d.ts +17 -0
  115. package/dist/internal/testing/machine/trace.d.ts.map +1 -0
  116. package/dist/internal/testing/machine/trace.js +94 -0
  117. package/dist/internal/testing/machine/trace.js.map +1 -0
  118. package/dist/internal/testing/machine/verification.d.ts +36 -0
  119. package/dist/internal/testing/machine/verification.d.ts.map +1 -0
  120. package/dist/internal/testing/machine/verification.js +1375 -0
  121. package/dist/internal/testing/machine/verification.js.map +1 -0
  122. package/dist/testing/MachineTest.d.ts +1588 -0
  123. package/dist/testing/MachineTest.d.ts.map +1 -0
  124. package/dist/testing/MachineTest.js +406 -0
  125. package/dist/testing/MachineTest.js.map +1 -0
  126. package/dist/testing/index.d.ts +7 -0
  127. package/dist/testing/index.d.ts.map +1 -0
  128. package/dist/testing/index.js +7 -0
  129. package/dist/testing/index.js.map +1 -0
  130. package/dist/{ClusterMachine.d.ts → unstable/cluster/ClusterMachine.d.ts} +56 -45
  131. package/dist/unstable/cluster/ClusterMachine.d.ts.map +1 -0
  132. package/dist/unstable/cluster/ClusterMachine.js +144 -0
  133. package/dist/unstable/cluster/ClusterMachine.js.map +1 -0
  134. package/dist/{cluster.js → unstable/cluster/index.d.ts} +1 -1
  135. package/dist/unstable/cluster/index.d.ts.map +1 -0
  136. package/dist/{cluster.d.ts → unstable/cluster/index.js} +1 -1
  137. package/dist/unstable/cluster/index.js.map +1 -0
  138. package/dist/{AtomMachine.d.ts → unstable/reactivity/AtomMachine.d.ts} +116 -50
  139. package/dist/unstable/reactivity/AtomMachine.d.ts.map +1 -0
  140. package/dist/unstable/reactivity/AtomMachine.js +164 -0
  141. package/dist/unstable/reactivity/AtomMachine.js.map +1 -0
  142. package/dist/{reactivity.js → unstable/reactivity/index.d.ts} +1 -1
  143. package/dist/unstable/reactivity/index.d.ts.map +1 -0
  144. package/dist/{reactivity.d.ts → unstable/reactivity/index.js} +1 -1
  145. package/dist/unstable/reactivity/index.js.map +1 -0
  146. package/docs/agent-guide.md +316 -31
  147. package/package.json +28 -10
  148. package/dist/AtomMachine.d.ts.map +0 -1
  149. package/dist/AtomMachine.js.map +0 -1
  150. package/dist/ClusterMachine.d.ts.map +0 -1
  151. package/dist/ClusterMachine.js.map +0 -1
  152. package/dist/cluster.d.ts.map +0 -1
  153. package/dist/cluster.js.map +0 -1
  154. package/dist/internal/machineErrors.d.ts.map +0 -1
  155. package/dist/internal/machineErrors.js.map +0 -1
  156. package/dist/internal/machineModel.d.ts.map +0 -1
  157. package/dist/internal/machineModel.js.map +0 -1
  158. package/dist/internal/machinePlanner.d.ts +0 -74
  159. package/dist/internal/machinePlanner.d.ts.map +0 -1
  160. package/dist/internal/machinePlanner.js +0 -797
  161. package/dist/internal/machinePlanner.js.map +0 -1
  162. package/dist/internal/machineProcess.d.ts.map +0 -1
  163. package/dist/internal/machineProcess.js +0 -181
  164. package/dist/internal/machineProcess.js.map +0 -1
  165. package/dist/internal/machineRuntime.d.ts +0 -125
  166. package/dist/internal/machineRuntime.d.ts.map +0 -1
  167. package/dist/internal/machineRuntime.js +0 -365
  168. package/dist/internal/machineRuntime.js.map +0 -1
  169. package/dist/reactivity.d.ts.map +0 -1
  170. package/dist/reactivity.js.map +0 -1
@@ -0,0 +1,552 @@
1
+ import * as Duration from "effect/Duration";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Inspectable from "effect/Inspectable";
4
+ import * as Option from "effect/Option";
5
+ import { Prototype as PipeablePrototype } from "effect/Pipeable";
6
+ import { hasProperty } from "effect/Predicate";
7
+ import * as Activities from "./activities.js";
8
+ import * as Configuration from "./configuration.js";
9
+ import * as internalPlanner from "./planner.js";
10
+ import * as internalProcess from "./process.js";
11
+ import * as Protocol from "./protocol.js";
12
+ import * as internalRuntime from "./runtime.js";
13
+ import * as Serialization from "./serialization.js";
14
+ import * as StateDefinition from "./stateDefinition.js";
15
+ import * as Topology from "./topology.js";
16
+ export { ChildAlreadyExistsError, InfiniteTransitionError, MachineSchemaDecodeError, MachineSchemaEncodeError, ProcessLocalError, StartupError, StoppedError } from "./errors.js";
17
+ export { InitialEventTypeId } from "./symbols.js";
18
+ const TypeId = "~effect/Machine";
19
+ export const SnapshotBuilderStateTypeId = Symbol("effect/Machine/SnapshotBuilderState");
20
+ export const InvokeTypeId = Symbol.for("effect/Machine/Invoke");
21
+ const ChildMachineTypeId = "~effect/Machine/ChildMachine";
22
+ const Proto = {
23
+ ...Inspectable.BaseProto,
24
+ ...PipeablePrototype,
25
+ [TypeId]: TypeId,
26
+ toJSON() {
27
+ return {
28
+ _id: "Machine"
29
+ };
30
+ }
31
+ };
32
+ const cloneWithHandlers = (self, handlers) => {
33
+ const machine = Object.create(Proto);
34
+ machine.states = self.states;
35
+ machine.events = self.events;
36
+ machine.internalEvents = self.internalEvents;
37
+ machine.emits = self.emits;
38
+ machine.input = self.input;
39
+ machine.id = self.id;
40
+ machine.initial = self.initial;
41
+ machine.stateNodes = self.stateNodes;
42
+ machine.makeTargetBuilder = self.makeTargetBuilder;
43
+ machine.handlers = handlers;
44
+ machine.handle = makeHandle(machine);
45
+ Protocol.copyProtocol(self, machine);
46
+ return machine;
47
+ };
48
+ const validateTransitionTargets = (stateNodes, path, trigger, transition) => {
49
+ if (typeof transition !== "object" || transition === null || !hasProperty(transition, "targets")) {
50
+ return;
51
+ }
52
+ if (!Array.isArray(transition.targets)) {
53
+ throw new Error(`Machine expected transition targets for state "${path}" on "${String(trigger)}" to be an array`);
54
+ }
55
+ for (const target of transition.targets) {
56
+ if (typeof target !== "string" || !stateNodes.byPath.has(target)) {
57
+ throw new Error(`Machine transition for state "${path}" on "${String(trigger)}" declares unknown target "${String(target)}"`);
58
+ }
59
+ }
60
+ };
61
+ const captureTransition = (transition) => {
62
+ if (typeof transition !== "object" || transition === null) {
63
+ return transition;
64
+ }
65
+ const captured = { ...transition };
66
+ if (Array.isArray(captured.targets)) {
67
+ captured.targets = captured.targets.slice();
68
+ }
69
+ return captured;
70
+ };
71
+ const captureEventHandlers = (on) => {
72
+ // The machine owns its dispatch table. Compiled plans may snapshot these
73
+ // definitions, so retaining caller-owned containers would let strategies
74
+ // observe different handlers after an unsafe external mutation.
75
+ const captured = Object.create(null);
76
+ for (const event of Reflect.ownKeys(on)) {
77
+ captured[event] = captureTransition(on[event]);
78
+ }
79
+ return captured;
80
+ };
81
+ const flattenHandlers = (handlers, stateNodes, states, prefix, config) => {
82
+ for (const key of Object.keys(config)) {
83
+ const path = prefix === "" ? key : `${prefix}.${key}`;
84
+ if (!hasProperty(states, key)) {
85
+ throw new Error(`Machine received handler for unknown state "${path}"`);
86
+ }
87
+ const nodeConfig = config[key];
88
+ if (typeof nodeConfig !== "object" || nodeConfig === null) {
89
+ throw new Error(`Machine expected state "${path}" handler to be an object`);
90
+ }
91
+ const { states: childConfig, ...stateConfig } = nodeConfig;
92
+ const on = stateConfig.on;
93
+ if (typeof on === "object" && on !== null) {
94
+ const capturedOn = captureEventHandlers(on);
95
+ stateConfig.on = capturedOn;
96
+ for (const event of Reflect.ownKeys(capturedOn)) {
97
+ validateTransitionTargets(stateNodes, path, event, capturedOn[event]);
98
+ }
99
+ }
100
+ validateTransitionTargets(stateNodes, path, "always", stateConfig.always);
101
+ validateTransitionTargets(stateNodes, path, "done", stateConfig.onDone);
102
+ validateTransitionTargets(stateNodes, path, "choice", stateConfig.choice);
103
+ const node = stateNodes.byPath.get(path);
104
+ if (node?.type === "choice") {
105
+ if (typeof stateConfig.choice !== "object" || stateConfig.choice === null ||
106
+ !hasProperty(stateConfig.choice, "transition") || typeof stateConfig.choice.transition !== "function" ||
107
+ !hasProperty(stateConfig.choice, "targets") || !Array.isArray(stateConfig.choice.targets) ||
108
+ stateConfig.choice.targets.length === 0) {
109
+ throw new Error(`Machine choice state "${path}" requires a transition and at least one declared target`);
110
+ }
111
+ }
112
+ handlers[path] = stateConfig;
113
+ if (childConfig !== undefined) {
114
+ const node = Topology.getStateNodeDefinition(path, states[key]);
115
+ if (node.states === undefined) {
116
+ throw new Error(`Machine expected state "${path}" to declare child states`);
117
+ }
118
+ if (typeof childConfig !== "object" || childConfig === null) {
119
+ throw new Error(`Machine expected state "${path}" child handlers to be an object`);
120
+ }
121
+ flattenHandlers(handlers, stateNodes, node.states, path, childConfig);
122
+ }
123
+ }
124
+ };
125
+ const makeHandle = (self) => ((config) => {
126
+ const handlers = Object.assign(Object.create(null), self.handlers);
127
+ flattenHandlers(handlers, self.stateNodes, self.states, "", config);
128
+ return cloneWithHandlers(self, handlers);
129
+ });
130
+ export const isMachine = (u) => hasProperty(u, TypeId) && u[TypeId] === TypeId;
131
+ export const isFinal = (machine, state) => internalPlanner.isFinal(machine, state);
132
+ const withFrom = (method, kind) => {
133
+ Object.defineProperty(method, "from", {
134
+ value: (...args) => {
135
+ const omitted = args.length === 0 || (kind === "nested" && args.length === 1 && typeof args[0] === "function");
136
+ const input = omitted ? {} : args[0];
137
+ const rest = omitted ? args : args.slice(1);
138
+ return method(Topology.makeStateInput(input), ...rest);
139
+ },
140
+ enumerable: false
141
+ });
142
+ return method;
143
+ };
144
+ const makeSnapshotBuilder = (states, options) => {
145
+ const builder = {};
146
+ for (const key of Object.keys(states)) {
147
+ const definition = states[key];
148
+ const pseudoType = definition.type;
149
+ if (pseudoType === "history") {
150
+ continue;
151
+ }
152
+ const path = options.prefix === "" ? key : `${options.prefix}.${key}`;
153
+ if (pseudoType === "choice") {
154
+ builder[key] = () => Topology.makeChoiceTarget(path, getParentPathRuntime(path));
155
+ continue;
156
+ }
157
+ const node = Topology.getStateNodeDefinition(path, definition);
158
+ builder[key] = withFrom((value, selector) => makeSnapshotForNode(definition, key, value, selector, options), node.states === undefined ? "leaf" : "nested");
159
+ }
160
+ return builder;
161
+ };
162
+ const makeParallelSnapshotBuilder = (states, options, regions) => {
163
+ const builder = {};
164
+ Object.defineProperty(builder, SnapshotBuilderStateTypeId, {
165
+ value: regions,
166
+ enumerable: false
167
+ });
168
+ for (const key of Object.keys(states)) {
169
+ const definition = states[key];
170
+ const pseudoType = definition.type;
171
+ if (pseudoType === "history" || pseudoType === "choice") {
172
+ continue;
173
+ }
174
+ if (hasProperty(regions, key)) {
175
+ continue;
176
+ }
177
+ const path = options.prefix === "" ? key : `${options.prefix}.${key}`;
178
+ const node = Topology.getStateNodeDefinition(path, definition);
179
+ builder[key] = withFrom((value, selector) => {
180
+ const nextRegions = {};
181
+ for (const regionKey of Object.keys(regions)) {
182
+ nextRegions[regionKey] = regions[regionKey];
183
+ }
184
+ nextRegions[key] = makeSnapshotForNode(definition, key, value, selector, options);
185
+ return makeParallelSnapshotBuilder(states, options, nextRegions);
186
+ }, node.states === undefined ? "leaf" : "nested");
187
+ }
188
+ return builder;
189
+ };
190
+ const getParallelSnapshotBuilderRegions = (path, states, builder) => {
191
+ if (typeof builder !== "object" || builder === null || !hasProperty(builder, SnapshotBuilderStateTypeId)) {
192
+ throw new Error(`Machine expected parallel state "${path}" builder callback to return a builder`);
193
+ }
194
+ const regions = builder[SnapshotBuilderStateTypeId];
195
+ for (const key of Object.keys(states)) {
196
+ const pseudoType = states[key].type;
197
+ if (pseudoType === "history" || pseudoType === "choice") {
198
+ continue;
199
+ }
200
+ if (!hasProperty(regions, key)) {
201
+ throw new Error(`Machine expected parallel state "${path}" builder callback to provide region "${key}"`);
202
+ }
203
+ }
204
+ return regions;
205
+ };
206
+ const makeSnapshotForNode = (definition, key, value, selector, options) => {
207
+ const path = options.prefix === "" ? key : `${options.prefix}.${key}`;
208
+ const node = Topology.getStateNodeDefinition(path, definition);
209
+ const snapshot = {
210
+ path,
211
+ value
212
+ };
213
+ if (node.states === undefined) {
214
+ return snapshot;
215
+ }
216
+ if (selector === undefined) {
217
+ throw new Error(`Machine expected state "${path}" builder to provide active child states`);
218
+ }
219
+ if (node.type === "parallel") {
220
+ const builder = makeParallelSnapshotBuilder(node.states, { ...options, prefix: path }, {});
221
+ const selected = selector(builder);
222
+ snapshot.states = getParallelSnapshotBuilderRegions(path, node.states, selected);
223
+ return snapshot;
224
+ }
225
+ const childStates = options.mode === "initial" && node.initial !== undefined
226
+ ? { [node.initial]: node.states[node.initial] }
227
+ : node.states;
228
+ const selected = selector(makeSnapshotBuilder(childStates, { ...options, prefix: path }));
229
+ snapshot.state = selected;
230
+ return snapshot;
231
+ };
232
+ const getTargetBuilderNode = (stateNodes, path) => {
233
+ const node = stateNodes.byPath.get(path);
234
+ if (node === undefined) {
235
+ throw new Error(`Machine expected state path "${path}" to exist`);
236
+ }
237
+ return node;
238
+ };
239
+ const getLocalTargetScope = (stateNodes, source) => {
240
+ let current = source;
241
+ while (current !== undefined) {
242
+ const node = stateNodes.byPath.get(current);
243
+ if (node === undefined) {
244
+ return undefined;
245
+ }
246
+ if (node.type === "compound") {
247
+ return node.path;
248
+ }
249
+ current = node.parent;
250
+ }
251
+ return undefined;
252
+ };
253
+ const hasTargetValues = (values) => values !== undefined && Object.keys(values).length > 0;
254
+ const makeTargetWithValues = (path, value, values) => hasTargetValues(values)
255
+ ? Topology.makeTarget(path, value, { values: values })
256
+ : Topology.makeTarget(path, value);
257
+ const getTargetBuilderDefinition = (states, targetPath) => {
258
+ let children = states;
259
+ let path = "";
260
+ let definition;
261
+ for (const key of targetPath.split(".")) {
262
+ if (!hasProperty(children, key)) {
263
+ throw new Error(`Machine expected state path "${targetPath}" to exist`);
264
+ }
265
+ definition = children[key];
266
+ path = path === "" ? key : `${path}.${key}`;
267
+ const node = Topology.getStateNodeDefinition(path, definition);
268
+ children = node.states ?? {};
269
+ }
270
+ return definition;
271
+ };
272
+ const makeParallelTarget = (states, node, value, selector, values) => {
273
+ if (selector === undefined) {
274
+ throw new Error(`Machine expected parallel target "${node.path}" builder to provide every active region`);
275
+ }
276
+ const snapshot = makeSnapshotForNode(getTargetBuilderDefinition(states, node.path), node.key, value, selector, { mode: "full", prefix: node.parent ?? "" });
277
+ return Topology.makeTarget(node.path, value, {
278
+ snapshot: snapshot,
279
+ values: values
280
+ });
281
+ };
282
+ const extendTargetValues = (values, path, value) => {
283
+ const next = {};
284
+ if (values !== undefined) {
285
+ for (const key of Object.keys(values)) {
286
+ next[key] = values[key];
287
+ }
288
+ }
289
+ next[path] = value;
290
+ return next;
291
+ };
292
+ const makeLocalTargetChildBuilder = (states, stateNodes, parentPath, values, source) => {
293
+ const parent = getTargetBuilderNode(stateNodes, parentPath);
294
+ const builder = {};
295
+ for (const childPath of Array.from(stateNodes.byPath.values())
296
+ .filter((node) => node.parent === parent.path && node.type !== "history")
297
+ .map((node) => node.path)) {
298
+ const child = getTargetBuilderNode(stateNodes, childPath);
299
+ if (child.type === "choice") {
300
+ builder[child.key] = () => Topology.makeChoiceTarget(child.path, parent.path, values);
301
+ continue;
302
+ }
303
+ builder[child.key] = withFrom((value, selector) => {
304
+ if (child.type === "atomic" || child.type === "final") {
305
+ return makeTargetWithValues(child.path, value, values);
306
+ }
307
+ if (child.type === "parallel") {
308
+ if (source !== child.path && !source.startsWith(`${child.path}.`)) {
309
+ return makeParallelTarget(states, child, value, selector, values);
310
+ }
311
+ if (selector === undefined) {
312
+ throw new Error(`Machine expected target "${child.path}" builder to provide an active child state`);
313
+ }
314
+ return selector(makeLocalTargetChildBuilder(states, stateNodes, child.path, extendTargetValues(values, child.path, value), source));
315
+ }
316
+ if (selector === undefined) {
317
+ throw new Error(`Machine expected target "${child.path}" builder to provide an active child state`);
318
+ }
319
+ return selector(makeLocalTargetChildBuilder(states, stateNodes, child.path, extendTargetValues(values, child.path, value), source));
320
+ }, child.type === "atomic" || child.type === "final" ? "leaf" : "nested");
321
+ }
322
+ return builder;
323
+ };
324
+ const makeLocalTargetBuilder = (states, stateNodes, source) => {
325
+ const scope = getLocalTargetScope(stateNodes, source);
326
+ if (scope === undefined) {
327
+ return {};
328
+ }
329
+ const builder = makeLocalTargetChildBuilder(states, stateNodes, scope, undefined, source);
330
+ builder.with = withFrom((value, selector) => {
331
+ if (selector === undefined) {
332
+ throw new Error(`Machine expected target "${scope}" builder to provide an active child state`);
333
+ }
334
+ return selector(makeLocalTargetChildBuilder(states, stateNodes, scope, { [scope]: value }, source));
335
+ }, "nested");
336
+ return builder;
337
+ };
338
+ const addBranchTargetChildren = (builder, states, stateNodes, parentPath, values, source) => {
339
+ const parent = getTargetBuilderNode(stateNodes, parentPath);
340
+ for (const childPath of Array.from(stateNodes.byPath.values())
341
+ .filter((node) => node.parent === parent.path && node.type !== "history")
342
+ .map((node) => node.path)) {
343
+ const child = getTargetBuilderNode(stateNodes, childPath);
344
+ if (child.type === "choice") {
345
+ builder[child.key] = () => Topology.makeChoiceTarget(child.path, parent.path, values);
346
+ continue;
347
+ }
348
+ builder[child.key] = makeBranchTargetNodeBuilder(states, stateNodes, child.path, values, source);
349
+ }
350
+ };
351
+ const makeBranchTargetNodeBuilder = (states, stateNodes, path, values, source) => {
352
+ const node = getTargetBuilderNode(stateNodes, path);
353
+ if (node.type === "atomic" || node.type === "final") {
354
+ return withFrom((value) => makeTargetWithValues(node.path, value, values), "leaf");
355
+ }
356
+ const builder = withFrom((value, selector) => {
357
+ if (node.type === "parallel") {
358
+ if (source !== node.path && !source.startsWith(`${node.path}.`)) {
359
+ return makeParallelTarget(states, node, value, selector, values);
360
+ }
361
+ if (selector === undefined) {
362
+ throw new Error(`Machine expected target "${node.path}" builder to provide an active child state`);
363
+ }
364
+ const nextBuilder = {};
365
+ addBranchTargetChildren(nextBuilder, states, stateNodes, node.path, extendTargetValues(values, node.path, value), source);
366
+ return selector(nextBuilder);
367
+ }
368
+ if (selector === undefined) {
369
+ throw new Error(`Machine expected target "${node.path}" builder to provide an active child state`);
370
+ }
371
+ const nextBuilder = {};
372
+ addBranchTargetChildren(nextBuilder, states, stateNodes, node.path, extendTargetValues(values, node.path, value), source);
373
+ return selector(nextBuilder);
374
+ }, "nested");
375
+ if (node.type !== "parallel" || source === node.path || source.startsWith(`${node.path}.`)) {
376
+ addBranchTargetChildren(builder, states, stateNodes, node.path, values, source);
377
+ }
378
+ return builder;
379
+ };
380
+ const makeBranchTargetBuilder = (states, stateNodes, source) => {
381
+ const rootPath = source.split(".")[0];
382
+ const root = getTargetBuilderNode(stateNodes, rootPath);
383
+ return {
384
+ [root.key]: makeBranchTargetNodeBuilder(states, stateNodes, root.path, undefined, source)
385
+ };
386
+ };
387
+ const makeHistoryTargetBuilder = (states, prefix) => {
388
+ const builder = {};
389
+ for (const key of Object.keys(states)) {
390
+ const path = prefix === "" ? key : `${prefix}.${key}`;
391
+ const definition = Topology.getStateNodeDefinition(path, states[key]);
392
+ if (definition.type === "history") {
393
+ const parent = getParentPathRuntime(path);
394
+ builder[key] = () => Topology.makeHistoryTarget(path, parent);
395
+ continue;
396
+ }
397
+ if (definition.states !== undefined) {
398
+ builder[key] = makeHistoryTargetBuilder(definition.states, path);
399
+ }
400
+ }
401
+ return builder;
402
+ };
403
+ const getParentPathRuntime = (path) => {
404
+ const separator = path.lastIndexOf(".");
405
+ if (separator < 0) {
406
+ throw new Error(`Machine expected history state "${path}" to have an active parent`);
407
+ }
408
+ return path.slice(0, separator);
409
+ };
410
+ const makeTargetBuilder = (states, stateNodes) => {
411
+ const full = makeSnapshotBuilder(states, { mode: "full", prefix: "" });
412
+ const history = makeHistoryTargetBuilder(states, "");
413
+ return (source) => ({
414
+ local: makeLocalTargetBuilder(states, stateNodes, source),
415
+ branch: makeBranchTargetBuilder(states, stateNodes, source),
416
+ full,
417
+ history
418
+ });
419
+ };
420
+ export const defineStates = ((states) => {
421
+ StateDefinition.validateStateDefinitions(states, "Machine.defineStates");
422
+ return {
423
+ states,
424
+ initial: makeSnapshotBuilder(states, { mode: "initial", prefix: "" }),
425
+ get: ((snapshot, path) => Topology.getSnapshotByPath(snapshot, path).pipe(Option.map((snapshot) => snapshot.value))),
426
+ getWithParents: ((snapshot, path) => {
427
+ const parents = {};
428
+ return Topology.getSnapshotByPath(snapshot, path, parents).pipe(Option.map((snapshot) => ({ value: snapshot.value, parents })));
429
+ }),
430
+ getSnapshot: Topology.getSnapshotByPath,
431
+ matches: (snapshot, path) => Option.isSome(Topology.getSnapshotByPath(snapshot, path))
432
+ };
433
+ });
434
+ export const make = ((config) => {
435
+ StateDefinition.validateStateDefinitions(config.states, "Machine.make");
436
+ const self = Object.create(Proto);
437
+ self.states = config.states;
438
+ self.events = config.events;
439
+ self.internalEvents = config.internalEvents ?? [];
440
+ self.emits = config.emits ?? [];
441
+ self.input = config.input;
442
+ self.id = config.id;
443
+ self.initial = config.initial;
444
+ self.stateNodes = Topology.compileStateNodes(config.states);
445
+ self.makeTargetBuilder = makeTargetBuilder(config.states, self.stateNodes);
446
+ self.handlers = Object.create(null);
447
+ self.handle = makeHandle(self);
448
+ Protocol.setProtocol(self);
449
+ return self;
450
+ });
451
+ export const event = (machine, schema, ...args) => Protocol.makeEvent(machine, schema, args.length === 0 ? {} : args[0]);
452
+ export const encodeSnapshot = Serialization.encodeSnapshot;
453
+ export const decodeSnapshot = Serialization.decodeSnapshot;
454
+ export const invoke = (config) => ({
455
+ ...config,
456
+ [InvokeTypeId]: undefined,
457
+ [Activities.ActivityMetadataTypeId]: { type: "process" }
458
+ });
459
+ export const invokeEffect = (config) => ((config) => ({
460
+ ...invoke({
461
+ id: config.id,
462
+ src: () => effect(config.onFailure === undefined
463
+ ? Effect.map(config.effect, config.onSuccess)
464
+ : Effect.matchEffect(config.effect, {
465
+ onFailure: (error) => Effect.succeed(config.onFailure(error)),
466
+ onSuccess: (value) => Effect.succeed(config.onSuccess(value))
467
+ }))
468
+ }),
469
+ [Activities.ActivityMetadataTypeId]: {
470
+ type: "effect",
471
+ outcomes: {
472
+ success: "dynamic",
473
+ failure: config.onFailure === undefined ? "none" : "dynamic"
474
+ }
475
+ }
476
+ }))(config);
477
+ export const after = (duration, event, options) => ({
478
+ ...invoke({
479
+ id: options?.id ?? `Machine.after:${String(event._tag)}`,
480
+ src: () => effect(Effect.as(Effect.sleep(duration), event))
481
+ }),
482
+ [Activities.ActivityMetadataTypeId]: {
483
+ type: "timer",
484
+ duration: Duration.format(Duration.fromInputUnsafe(duration)),
485
+ event: String(event._tag)
486
+ }
487
+ });
488
+ export const retag = (target, source, patch) => {
489
+ const { _tag: _, ...fields } = source;
490
+ return target.make({ ...fields, ...(patch ?? {}) });
491
+ };
492
+ export const invokeMachine = ((config) => {
493
+ const machine = config.child.machine;
494
+ // An invoke descriptor fixes both its machine and input. Compile its process
495
+ // logic once; all mutable execution state belongs to the process instance.
496
+ const logic = machine.input === undefined
497
+ ? internalProcess.toProcessLogic(machine)
498
+ : internalProcess.toProcessLogic(machine, config.input);
499
+ return {
500
+ id: config.child.id,
501
+ address: config.child.id,
502
+ descriptor: config.child,
503
+ src: () => logic,
504
+ snapshot: config.snapshot,
505
+ onDone: config.onDone,
506
+ [Activities.ActivityMetadataTypeId]: {
507
+ type: "machine",
508
+ child: {
509
+ id: config.child.id,
510
+ machineId: machine.id ?? null
511
+ }
512
+ },
513
+ [InvokeTypeId]: undefined
514
+ };
515
+ });
516
+ export const planInitial = internalPlanner.planInitial;
517
+ export const stateNodes = (machine) => Array.from(machine.stateNodes.byPath.values());
518
+ export const transitionDefinitions = (machine) => Topology.transitionDefinitions(machine);
519
+ export const activityDefinitions = (machine) => Activities.activityDefinitions(machine);
520
+ export const configuration = (machine, state) => {
521
+ const active = Configuration.normalizeConfiguration(machine, state).active;
522
+ return stateNodes(machine).filter((node) => node.type !== "history" && node.type !== "choice" && active.has(node.path));
523
+ };
524
+ export const enabled = (machine, state) => internalPlanner.enabled(machine, state);
525
+ export const plan = internalPlanner.plan;
526
+ export const effect = (effect) => ({
527
+ initial: () => Effect.void,
528
+ run: () => effect
529
+ });
530
+ export const logic = (options) => ({
531
+ initial: (scope) => typeof options.initial === "function"
532
+ ? options.initial(scope)
533
+ : Effect.succeed(options.initial),
534
+ run: options.run
535
+ });
536
+ export const transition = (initial, transition) => logic({
537
+ initial,
538
+ run: ({ receive, updateState }) => receive.pipe(Effect.flatMap((event) => updateState((state) => transition(state, event))), Effect.forever)
539
+ });
540
+ export const child = (id, machine) => ({
541
+ [ChildMachineTypeId]: ChildMachineTypeId,
542
+ id,
543
+ machine
544
+ });
545
+ export const childAddress = (id) => id;
546
+ export const spawn = ((logic, options) => Effect.flatMap(internalRuntime.MachineRuntime, (runtime) => options === undefined ? runtime.spawn(logic) : runtime.spawn(logic, options)));
547
+ export const sendTo = ((child, event) => Effect.flatMap(internalRuntime.MachineRuntime, (runtime) => runtime.sendTo(child, event)));
548
+ export const stopChild = ((child) => Effect.flatMap(internalRuntime.MachineRuntime, (runtime) => runtime.stopChild(child)));
549
+ export const watch = (ref) => internalRuntime.watch(ref);
550
+ export const start = internalProcess.start;
551
+ export const resume = internalProcess.resume;
552
+ //# sourceMappingURL=machine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../src/internal/machine/machine.ts"],"names":[],"mappings":"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"}