@typeonce/effect-machine 0.1.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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +5 -0
  3. package/README.md +117 -0
  4. package/dist/AtomMachine.d.ts +141 -0
  5. package/dist/AtomMachine.d.ts.map +1 -0
  6. package/dist/AtomMachine.js +191 -0
  7. package/dist/AtomMachine.js.map +1 -0
  8. package/dist/ClusterMachine.d.ts +250 -0
  9. package/dist/ClusterMachine.d.ts.map +1 -0
  10. package/dist/ClusterMachine.js +280 -0
  11. package/dist/ClusterMachine.js.map +1 -0
  12. package/dist/Machine.d.ts +2587 -0
  13. package/dist/Machine.d.ts.map +1 -0
  14. package/dist/Machine.js +923 -0
  15. package/dist/Machine.js.map +1 -0
  16. package/dist/cluster.d.ts +2 -0
  17. package/dist/cluster.d.ts.map +1 -0
  18. package/dist/cluster.js +2 -0
  19. package/dist/cluster.js.map +1 -0
  20. package/dist/index.d.ts +2 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +2 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/internal/machineErrors.d.ts +109 -0
  25. package/dist/internal/machineErrors.d.ts.map +1 -0
  26. package/dist/internal/machineErrors.js +65 -0
  27. package/dist/internal/machineErrors.js.map +1 -0
  28. package/dist/internal/machineModel.d.ts +88 -0
  29. package/dist/internal/machineModel.d.ts.map +1 -0
  30. package/dist/internal/machineModel.js +713 -0
  31. package/dist/internal/machineModel.js.map +1 -0
  32. package/dist/internal/machinePlanner.d.ts +64 -0
  33. package/dist/internal/machinePlanner.d.ts.map +1 -0
  34. package/dist/internal/machinePlanner.js +594 -0
  35. package/dist/internal/machinePlanner.js.map +1 -0
  36. package/dist/internal/machineProcess.d.ts +16 -0
  37. package/dist/internal/machineProcess.d.ts.map +1 -0
  38. package/dist/internal/machineProcess.js +170 -0
  39. package/dist/internal/machineProcess.js.map +1 -0
  40. package/dist/internal/machineRuntime.d.ts +119 -0
  41. package/dist/internal/machineRuntime.d.ts.map +1 -0
  42. package/dist/internal/machineRuntime.js +354 -0
  43. package/dist/internal/machineRuntime.js.map +1 -0
  44. package/dist/reactivity.d.ts +2 -0
  45. package/dist/reactivity.d.ts.map +1 -0
  46. package/dist/reactivity.js +2 -0
  47. package/dist/reactivity.js.map +1 -0
  48. package/package.json +76 -0
@@ -0,0 +1,594 @@
1
+ /**
2
+ * Internal machine planning helpers.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Cause from "effect/Cause";
7
+ import * as Context from "effect/Context";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Option from "effect/Option";
10
+ import { InfiniteTransitionError, MachineSchemaDecodeError, StartupError } from "./machineErrors.js";
11
+ import { compareDocumentOrder, completeConfigurationEffect, decodeEmit, decodeEvent, decodeInput, getActiveLeafPathFrom, getActiveLeafPaths, getActiveValue, getInitialEntryPaths, getLeafPath, getNode, getParentValues, getPathToRoot, getRootPath, isActiveFinalConfiguration, isDescendantOf, isSnapshot, isTarget, normalizeConfiguration, normalizeConfigurationEffect, normalizeTargetConfigurationEffect, pathDepth, snapshotFromConfiguration, validateInitialConfiguration } from "./machineModel.js";
12
+ class DeferredActions extends Context.Service()("effect/Machine/DeferredActions") {
13
+ }
14
+ class DeferredRaisedEvents extends Context.Service()("effect/Machine/DeferredRaisedEvents") {
15
+ }
16
+ class RuntimeContext extends Context.Service()("effect/Machine/Runtime") {
17
+ }
18
+ const makeDeferredQueue = () => Effect.sync(() => {
19
+ const values = [];
20
+ return {
21
+ read: Effect.sync(() => values),
22
+ add: (value) => Effect.sync(() => {
23
+ values.push(value);
24
+ })
25
+ };
26
+ });
27
+ const makeDeferredActions = Effect.map(makeDeferredQueue(), (queue) => DeferredActions.of({
28
+ read: queue.read,
29
+ add: (effect) => queue.add(effect)
30
+ }));
31
+ const makeDeferredRaisedEvents = Effect.gen(function* () {
32
+ const raised = yield* makeDeferredQueue();
33
+ const emitted = yield* makeDeferredQueue();
34
+ return (DeferredRaisedEvents.of({
35
+ read: raised.read,
36
+ readEmitted: emitted.read,
37
+ add: (event) => raised.add(event),
38
+ addEmitted: (event) => emitted.add(event)
39
+ }));
40
+ });
41
+ const provideDeferredServices = (effect, machine, deferredActions, deferredRaisedEvents) => effect.pipe(Effect.provideService(DeferredActions, deferredActions), Effect.provideService(DeferredRaisedEvents, deferredRaisedEvents), Effect.provideService(RuntimeContext, makePlanningRuntime(machine, deferredRaisedEvents)));
42
+ const provideRuntimeContext = (effect, runtime) => Effect.provideService(effect, RuntimeContext, runtime);
43
+ const makePlanningRuntime = (machine, deferredRaisedEvents) => RuntimeContext.of({
44
+ raise: (event) => decodeEvent(machine, event).pipe(Effect.flatMap((event) => deferredRaisedEvents.add(event))),
45
+ sendParent: (event) => decodeEmit(machine, event).pipe(Effect.flatMap((event) => deferredRaisedEvents.addEmitted(event)))
46
+ });
47
+ export const makeLiveRuntime = (machine, scope) => RuntimeContext.of({
48
+ raise: (event) => decodeEvent(machine, event).pipe(Effect.flatMap((event) => scope.self.send(event))),
49
+ sendParent: (event) => decodeEmit(machine, event).pipe(Effect.flatMap((event) => scope.sendParent(event)))
50
+ });
51
+ export const runActions = (actions, runtime) => Effect.all(Array.from(actions, (action) => provideRuntimeContext(action, runtime)), { discard: true });
52
+ export const runEmittedEvents = (events, runtime) => Effect.all(Array.from(events, (event) => runtime.sendParent(event)), { discard: true });
53
+ export const runtimeFor = () => runtime();
54
+ const normalizeEventTransition = (transition) => {
55
+ if (transition === undefined) {
56
+ return undefined;
57
+ }
58
+ return typeof transition === "function"
59
+ ? { reenter: false, transition }
60
+ : { reenter: transition.reenter === true, transition: transition.transition };
61
+ };
62
+ const collectStateAction = Effect.fnUntraced(function* (machine, handler, context) {
63
+ const deferredActions = yield* makeDeferredActions;
64
+ const deferredRaisedEvents = yield* makeDeferredRaisedEvents;
65
+ if (handler !== undefined) {
66
+ const result = handler(context);
67
+ if (Effect.isEffect(result)) {
68
+ yield* provideDeferredServices(result, machine, deferredActions, deferredRaisedEvents);
69
+ }
70
+ }
71
+ const actions = yield* deferredActions.read;
72
+ const raisedEvents = yield* deferredRaisedEvents.read;
73
+ const emittedEvents = yield* deferredRaisedEvents.readEmitted;
74
+ return {
75
+ actions: actions,
76
+ raisedEvents: raisedEvents,
77
+ emittedEvents
78
+ };
79
+ });
80
+ const collectTransition = Effect.fnUntraced(function* (machine, transition, context) {
81
+ const deferredActions = yield* makeDeferredActions;
82
+ const deferredRaisedEvents = yield* makeDeferredRaisedEvents;
83
+ const result = transition(context);
84
+ const state = Effect.isEffect(result)
85
+ ? yield* provideDeferredServices(result, machine, deferredActions, deferredRaisedEvents)
86
+ : result;
87
+ const actions = yield* deferredActions.read;
88
+ const raisedEvents = yield* deferredRaisedEvents.read;
89
+ const emittedEvents = yield* deferredRaisedEvents.readEmitted;
90
+ return {
91
+ state,
92
+ actions: actions,
93
+ raisedEvents: raisedEvents,
94
+ emittedEvents
95
+ };
96
+ });
97
+ const getCandidatePaths = (machine, configuration) => Array.from(configuration.active)
98
+ .sort((left, right) => {
99
+ const depth = pathDepth(machine, right) - pathDepth(machine, left);
100
+ return depth === 0 ? compareDocumentOrder(machine, left, right) : depth;
101
+ });
102
+ const getLeafCandidatePaths = (machine, leaf) => [...getPathToRoot(machine, leaf)].reverse();
103
+ const getLeastCommonAncestor = (machine, left, right) => {
104
+ const leftPath = getPathToRoot(machine, left);
105
+ const rightPath = getPathToRoot(machine, right);
106
+ let ancestor = undefined;
107
+ const length = Math.min(leftPath.length, rightPath.length);
108
+ for (let index = 0; index < length; index++) {
109
+ if (leftPath[index] !== rightPath[index]) {
110
+ break;
111
+ }
112
+ ancestor = leftPath[index];
113
+ }
114
+ return ancestor;
115
+ };
116
+ const getExitPaths = (machine, configuration, boundary) => sortExitPaths(machine, Array.from(configuration.active)
117
+ .filter((path) => boundary === undefined || isDescendantOf(path, boundary)));
118
+ const getEntryPaths = (machine, configuration, boundary) => sortEntryPaths(machine, Array.from(configuration.active).filter((path) => boundary === undefined || isDescendantOf(path, boundary)));
119
+ const hasSameActivePaths = (left, right) => left.active.size === right.active.size && Array.from(left.active).every((path) => right.active.has(path));
120
+ export const sortExitPaths = (machine, paths) => Array.from(new Set(paths))
121
+ .sort((left, right) => {
122
+ const depth = getPathToRoot(machine, right).length - getPathToRoot(machine, left).length;
123
+ return depth === 0 ? getNode(machine, right).order - getNode(machine, left).order : depth;
124
+ });
125
+ export const sortEntryPaths = (machine, paths) => Array.from(new Set(paths))
126
+ .sort((left, right) => {
127
+ const depth = getPathToRoot(machine, left).length - getPathToRoot(machine, right).length;
128
+ return depth === 0 ? compareDocumentOrder(machine, left, right) : depth;
129
+ });
130
+ const makePlanningCapabilities = () => {
131
+ const runtimeEffect = runtimeFor();
132
+ return {
133
+ action,
134
+ runtime: runtimeEffect,
135
+ raise: (event) => Effect.flatMap(runtimeEffect, (runtime) => runtime.raise(event)),
136
+ emit: (event) => Effect.flatMap(runtimeEffect, (runtime) => runtime.sendParent(event))
137
+ };
138
+ };
139
+ const makeStateActionContext = (machine, configuration, path, event) => ({
140
+ state: getActiveValue(configuration, path),
141
+ parents: getParentValues(machine, configuration, path),
142
+ event,
143
+ ...makePlanningCapabilities()
144
+ });
145
+ const makeTransitionContext = (machine, configuration, path, event) => ({
146
+ state: getActiveValue(configuration, path),
147
+ parents: getParentValues(machine, configuration, path),
148
+ event,
149
+ ...makePlanningCapabilities(),
150
+ target: machine.makeTargetBuilder(path)
151
+ });
152
+ const makeDoneContext = (machine, configuration, path, event, output) => ({
153
+ state: getActiveValue(configuration, path),
154
+ parents: getParentValues(machine, configuration, path),
155
+ event,
156
+ output: output,
157
+ ...makePlanningCapabilities(),
158
+ target: machine.makeTargetBuilder(path)
159
+ });
160
+ const collectStateActions = Effect.fnUntraced(function* (machine, configuration, paths, event, key) {
161
+ const actions = [];
162
+ const raisedEvents = [];
163
+ const emittedEvents = [];
164
+ for (const path of paths) {
165
+ const collected = yield* collectStateAction(machine, machine.handlers[path]?.[key], makeStateActionContext(machine, configuration, path, event));
166
+ actions.push(...collected.actions);
167
+ raisedEvents.push(...collected.raisedEvents);
168
+ emittedEvents.push(...collected.emittedEvents);
169
+ }
170
+ return { actions, emittedEvents, raisedEvents };
171
+ });
172
+ const selectAlwaysTransitions = (machine, configuration, event) => {
173
+ const selected = [];
174
+ const selectedSources = new Set();
175
+ for (const leaf of getActiveLeafPaths(machine, configuration)) {
176
+ for (const path of getLeafCandidatePaths(machine, leaf)) {
177
+ const always = machine.handlers[path]?.always;
178
+ if (always !== undefined) {
179
+ if (!selectedSources.has(path)) {
180
+ selectedSources.add(path);
181
+ selected.push({
182
+ sourcePath: path,
183
+ leafPath: leaf,
184
+ transition: { reenter: false, transition: always },
185
+ context: {
186
+ state: getActiveValue(configuration, path),
187
+ parents: getParentValues(machine, configuration, path),
188
+ event,
189
+ ...makePlanningCapabilities(),
190
+ target: machine.makeTargetBuilder(path)
191
+ }
192
+ });
193
+ }
194
+ break;
195
+ }
196
+ }
197
+ }
198
+ return selected;
199
+ };
200
+ const selectDoneTransitions = (machine, configuration, event, completions) => {
201
+ const selected = [];
202
+ const selectedSources = new Set();
203
+ for (const completion of completions) {
204
+ const onDone = machine.handlers[completion.path]?.onDone;
205
+ if (onDone !== undefined && !selectedSources.has(completion.path)) {
206
+ selectedSources.add(completion.path);
207
+ selected.push({
208
+ sourcePath: completion.path,
209
+ leafPath: getActiveLeafPathFrom(machine, configuration, completion.path),
210
+ transition: { reenter: false, transition: onDone },
211
+ context: makeDoneContext(machine, configuration, completion.path, event, completion.output)
212
+ });
213
+ }
214
+ }
215
+ return selected;
216
+ };
217
+ const selectEventTransitions = (machine, configuration, event) => {
218
+ const selected = [];
219
+ const selectedSources = new Set();
220
+ for (const leaf of getActiveLeafPaths(machine, configuration)) {
221
+ for (const path of getLeafCandidatePaths(machine, leaf)) {
222
+ const transition = normalizeEventTransition(machine.handlers[path]?.on?.[event._tag]);
223
+ if (transition !== undefined) {
224
+ if (!selectedSources.has(path)) {
225
+ selectedSources.add(path);
226
+ selected.push({
227
+ sourcePath: path,
228
+ leafPath: leaf,
229
+ transition: transition,
230
+ context: makeTransitionContext(machine, configuration, path, event)
231
+ });
232
+ }
233
+ break;
234
+ }
235
+ }
236
+ }
237
+ return selected;
238
+ };
239
+ const getTargetNodePath = (target) => {
240
+ if (isTarget(target)) {
241
+ return String(target.path);
242
+ }
243
+ if (isSnapshot(target)) {
244
+ return String(target.path);
245
+ }
246
+ throw new Error("Machine expected transition target to be a snapshot or target builder result");
247
+ };
248
+ const hasPathIntersection = (left, right) => {
249
+ for (const path of left) {
250
+ if (right.includes(path)) {
251
+ return true;
252
+ }
253
+ }
254
+ return false;
255
+ };
256
+ const sortEvaluatedTransitions = (machine, transitions) => Array.from(transitions)
257
+ .sort((left, right) => compareDocumentOrder(machine, left.selection.sourcePath, right.selection.sourcePath));
258
+ const removePreemptedAncestorSelections = (selections) => selections.filter((selection) => !selections.some((other) => other.sourcePath !== selection.sourcePath && isDescendantOf(other.sourcePath, selection.sourcePath)));
259
+ const removeConflictingTransitions = (machine, transitions) => {
260
+ const filtered = [];
261
+ for (const transition of sortEvaluatedTransitions(machine, transitions)) {
262
+ let preempted = false;
263
+ const transitionsToRemove = new Set();
264
+ for (const selected of filtered) {
265
+ if (hasPathIntersection(transition.exitPaths, selected.exitPaths)) {
266
+ if (isDescendantOf(transition.selection.sourcePath, selected.selection.sourcePath)) {
267
+ transitionsToRemove.add(selected);
268
+ }
269
+ else {
270
+ preempted = true;
271
+ break;
272
+ }
273
+ }
274
+ }
275
+ if (!preempted) {
276
+ for (const removed of transitionsToRemove) {
277
+ const index = filtered.indexOf(removed);
278
+ if (index >= 0) {
279
+ filtered.splice(index, 1);
280
+ }
281
+ }
282
+ filtered.push(transition);
283
+ }
284
+ }
285
+ return filtered;
286
+ };
287
+ const collectEvaluatedTransition = Effect.fnUntraced(function* (machine, state, selection) {
288
+ const stateIdentifier = selection.leafPath;
289
+ const transitionResult = yield* collectTransition(machine, selection.transition.transition, selection.context);
290
+ const target = transitionResult.state === undefined
291
+ ? undefined
292
+ : transitionResult.state;
293
+ const targetPath = target === undefined ? undefined : getTargetNodePath(target);
294
+ const stateAfterTransition = target === undefined
295
+ ? state
296
+ : yield* normalizeTargetConfigurationEffect(machine, state, target);
297
+ const changed = selection.transition.reenter || !hasSameActivePaths(state, stateAfterTransition);
298
+ if (!changed) {
299
+ return {
300
+ selection,
301
+ target,
302
+ actions: transitionResult.actions,
303
+ raisedEvents: transitionResult.raisedEvents,
304
+ emittedEvents: transitionResult.emittedEvents,
305
+ changed,
306
+ exitPaths: [],
307
+ entryPaths: []
308
+ };
309
+ }
310
+ const boundary = selection.transition.reenter
311
+ ? getNode(machine, selection.sourcePath).parent
312
+ : getLeastCommonAncestor(machine, stateIdentifier, targetPath);
313
+ return {
314
+ selection,
315
+ target,
316
+ actions: transitionResult.actions,
317
+ raisedEvents: transitionResult.raisedEvents,
318
+ emittedEvents: transitionResult.emittedEvents,
319
+ changed,
320
+ exitPaths: getExitPaths(machine, state, boundary),
321
+ entryPaths: getEntryPaths(machine, stateAfterTransition, boundary)
322
+ };
323
+ });
324
+ const MaxMacrostepIterations = 1000;
325
+ export const InitialEventTypeId = Symbol("effect/Machine/InitialEvent");
326
+ export const InitialEvent = { _tag: InitialEventTypeId };
327
+ const catchStartup = (effect) => Effect.catchCause(effect, (cause) => {
328
+ const error = Cause.findErrorOption(cause);
329
+ return Option.isSome(error) && error.value instanceof MachineSchemaDecodeError
330
+ ? Effect.fail(error.value)
331
+ : Effect.fail(new StartupError({ cause }));
332
+ });
333
+ export const isFinalState = (machine, state) => isActiveFinalConfiguration(machine, normalizeConfiguration(machine, state));
334
+ export const getFinalOutputEffect = (machine, state, event) => normalizeConfigurationEffect(machine, state).pipe(Effect.flatMap((configuration) => completeConfigurationEffect(machine, configuration, event)), Effect.map((completed) => {
335
+ const root = getRootPath(machine, completed.configuration);
336
+ return isActiveFinalConfiguration(machine, completed.configuration)
337
+ ? completed.configuration.outputs.get(root)
338
+ : undefined;
339
+ }));
340
+ export const isFinal = (machine, state) => isFinalState(machine, state);
341
+ export const planInitial = Effect.fnUntraced(function* (machine, ...args) {
342
+ const deferredActions = yield* makeDeferredActions;
343
+ const deferredRaisedEvents = yield* makeDeferredRaisedEvents;
344
+ const inputArgs = machine.input === undefined
345
+ ? args
346
+ : args.length === 0
347
+ ? (yield* decodeInput(machine, machine.input, undefined), args)
348
+ : [yield* decodeInput(machine, machine.input, args[0])];
349
+ const result = machine.initial(...inputArgs);
350
+ const state = Effect.isEffect(result)
351
+ ? yield* provideDeferredServices(result, machine, deferredActions, deferredRaisedEvents)
352
+ : result;
353
+ const configuration = yield* normalizeConfigurationEffect(machine, state);
354
+ validateInitialConfiguration(machine, configuration);
355
+ const actions = yield* deferredActions.read;
356
+ const raisedEvents = yield* deferredRaisedEvents.read;
357
+ const emittedEvents = yield* deferredRaisedEvents.readEmitted;
358
+ const settled = yield* catchStartup(Effect.gen(function* () {
359
+ const entry = yield* collectStateActions(machine, configuration, getInitialEntryPaths(machine, configuration), InitialEvent, "entry");
360
+ return yield* settle(machine, configuration, InitialEvent, [...entry.actions], [...raisedEvents, ...entry.raisedEvents], [...emittedEvents, ...entry.emittedEvents], []);
361
+ }));
362
+ return {
363
+ state: snapshotFromConfiguration(machine, settled.next),
364
+ actions: [
365
+ ...actions,
366
+ ...settled.actions
367
+ ],
368
+ emittedEvents: settled.emittedEvents,
369
+ output: settled.output
370
+ };
371
+ });
372
+ export const enabled = (machine, state) => {
373
+ if (isFinalState(machine, state)) {
374
+ return [];
375
+ }
376
+ const configuration = normalizeConfiguration(machine, state);
377
+ const tags = [];
378
+ const seen = new Set();
379
+ for (const path of getCandidatePaths(machine, configuration)) {
380
+ for (const tag of Reflect.ownKeys(machine.handlers[path]?.on ?? {})) {
381
+ if (!seen.has(tag)) {
382
+ seen.add(tag);
383
+ tags.push(tag);
384
+ }
385
+ }
386
+ }
387
+ return tags;
388
+ };
389
+ const microstep = Effect.fnUntraced(function* (machine, state, event, selections) {
390
+ if (selections.length === 0) {
391
+ return {
392
+ next: state,
393
+ event,
394
+ actions: [],
395
+ raisedEvents: [],
396
+ emittedEvents: [],
397
+ exitPaths: [],
398
+ entryPaths: [],
399
+ changed: false
400
+ };
401
+ }
402
+ const activeSelections = removePreemptedAncestorSelections(selections);
403
+ const evaluatedTransitions = [];
404
+ for (const selection of activeSelections) {
405
+ evaluatedTransitions.push(yield* collectEvaluatedTransition(machine, state, selection));
406
+ }
407
+ const transitions = removeConflictingTransitions(machine, evaluatedTransitions);
408
+ const sortedTransitions = sortEvaluatedTransitions(machine, transitions);
409
+ let stateAfterTransition = state;
410
+ for (const transition of sortedTransitions) {
411
+ if (transition.target !== undefined) {
412
+ stateAfterTransition = yield* normalizeTargetConfigurationEffect(machine, stateAfterTransition, transition.target);
413
+ }
414
+ }
415
+ const changed = transitions.some((transition) => transition.changed);
416
+ const transitionActions = sortedTransitions
417
+ .flatMap((transition) => transition.actions);
418
+ const transitionRaisedEvents = sortedTransitions
419
+ .flatMap((transition) => transition.raisedEvents);
420
+ const transitionEmittedEvents = sortedTransitions
421
+ .flatMap((transition) => transition.emittedEvents);
422
+ if (!changed) {
423
+ return {
424
+ next: stateAfterTransition,
425
+ event,
426
+ actions: transitionActions,
427
+ raisedEvents: transitionRaisedEvents,
428
+ emittedEvents: transitionEmittedEvents,
429
+ exitPaths: [],
430
+ entryPaths: [],
431
+ changed: false
432
+ };
433
+ }
434
+ const exitPaths = sortExitPaths(machine, sortedTransitions.flatMap((transition) => transition.exitPaths));
435
+ const entryPaths = sortEntryPaths(machine, sortedTransitions.flatMap((transition) => transition.entryPaths));
436
+ const exit = yield* collectStateActions(machine, state, exitPaths, event, "exit");
437
+ const entry = yield* collectStateActions(machine, stateAfterTransition, entryPaths, event, "entry");
438
+ return {
439
+ next: stateAfterTransition,
440
+ event,
441
+ actions: [...exit.actions, ...transitionActions, ...entry.actions],
442
+ raisedEvents: [...exit.raisedEvents, ...transitionRaisedEvents, ...entry.raisedEvents],
443
+ emittedEvents: [...exit.emittedEvents, ...transitionEmittedEvents, ...entry.emittedEvents],
444
+ exitPaths,
445
+ entryPaths,
446
+ changed: true
447
+ };
448
+ });
449
+ const settle = Effect.fnUntraced(function* (machine, state, event, actions, raisedEvents, emittedEvents, microsteps) {
450
+ let currentState = state;
451
+ let currentEvent = event;
452
+ let shouldRunAlways = true;
453
+ let iterations = 0;
454
+ let raisedEventIndex = 0;
455
+ let finalOutput = undefined;
456
+ const pendingCompletions = [];
457
+ while (true) {
458
+ iterations += 1;
459
+ if (iterations > MaxMacrostepIterations) {
460
+ return yield* new InfiniteTransitionError({
461
+ machineId: machine.id,
462
+ state: String(getLeafPath(machine, currentState)),
463
+ maxIterations: MaxMacrostepIterations
464
+ });
465
+ }
466
+ const completed = yield* completeConfigurationEffect(machine, currentState, currentEvent);
467
+ currentState = completed.configuration;
468
+ pendingCompletions.push(...completed.completions.filter((completion) => machine.handlers[completion.path]?.onDone !== undefined));
469
+ while (pendingCompletions.length > 0 && !currentState.active.has(pendingCompletions[0].path)) {
470
+ pendingCompletions.shift();
471
+ }
472
+ const done = selectDoneTransitions(machine, currentState, currentEvent, pendingCompletions.length === 0 ? [] : [pendingCompletions.shift()]);
473
+ if (done.length > 0) {
474
+ const doneStep = yield* microstep(machine, currentState, currentEvent, done);
475
+ actions.push(...doneStep.actions);
476
+ raisedEvents.push(...doneStep.raisedEvents);
477
+ emittedEvents.push(...doneStep.emittedEvents);
478
+ microsteps.push(doneStep);
479
+ currentState = doneStep.next;
480
+ shouldRunAlways = doneStep.changed;
481
+ continue;
482
+ }
483
+ if (isActiveFinalConfiguration(machine, currentState)) {
484
+ const root = getRootPath(machine, currentState);
485
+ finalOutput = currentState.outputs.get(root);
486
+ break;
487
+ }
488
+ const always = shouldRunAlways
489
+ ? selectAlwaysTransitions(machine, currentState, currentEvent)
490
+ : [];
491
+ if (always.length > 0) {
492
+ const alwaysStep = yield* microstep(machine, currentState, currentEvent, always);
493
+ actions.push(...alwaysStep.actions);
494
+ raisedEvents.push(...alwaysStep.raisedEvents);
495
+ emittedEvents.push(...alwaysStep.emittedEvents);
496
+ microsteps.push(alwaysStep);
497
+ currentState = alwaysStep.next;
498
+ shouldRunAlways = alwaysStep.changed;
499
+ continue;
500
+ }
501
+ const raisedEventValue = raisedEvents[raisedEventIndex];
502
+ if (raisedEventValue === undefined) {
503
+ break;
504
+ }
505
+ raisedEventIndex += 1;
506
+ const raisedEvent = yield* decodeEvent(machine, raisedEventValue);
507
+ currentEvent = raisedEvent;
508
+ const raisedSelections = selectEventTransitions(machine, currentState, raisedEvent);
509
+ if (raisedSelections.length === 0) {
510
+ shouldRunAlways = true;
511
+ continue;
512
+ }
513
+ const raisedStep = yield* microstep(machine, currentState, raisedEvent, raisedSelections);
514
+ actions.push(...raisedStep.actions);
515
+ raisedEvents.push(...raisedStep.raisedEvents);
516
+ emittedEvents.push(...raisedStep.emittedEvents);
517
+ microsteps.push(raisedStep);
518
+ currentState = raisedStep.next;
519
+ shouldRunAlways = true;
520
+ }
521
+ return {
522
+ next: currentState,
523
+ actions,
524
+ emittedEvents,
525
+ microsteps,
526
+ output: finalOutput
527
+ };
528
+ });
529
+ const macrostep = Effect.fnUntraced(function* (machine, state, event) {
530
+ const configuration = yield* normalizeConfigurationEffect(machine, state);
531
+ const snapshot = snapshotFromConfiguration(machine, configuration);
532
+ if (isActiveFinalConfiguration(machine, configuration)) {
533
+ return {
534
+ next: snapshot,
535
+ actions: [],
536
+ emittedEvents: [],
537
+ microsteps: [],
538
+ output: undefined
539
+ };
540
+ }
541
+ const decodedEvent = yield* decodeEvent(machine, event);
542
+ const selections = selectEventTransitions(machine, configuration, decodedEvent);
543
+ if (selections.length === 0) {
544
+ return {
545
+ next: snapshot,
546
+ actions: [],
547
+ emittedEvents: [],
548
+ microsteps: [],
549
+ output: undefined
550
+ };
551
+ }
552
+ const step = yield* microstep(machine, configuration, decodedEvent, selections);
553
+ const actions = [...step.actions];
554
+ const raisedEvents = [...step.raisedEvents];
555
+ const emittedEvents = [...step.emittedEvents];
556
+ const microsteps = [step];
557
+ const settled = yield* settle(machine, step.next, decodedEvent, actions, raisedEvents, emittedEvents, microsteps);
558
+ return {
559
+ next: snapshotFromConfiguration(machine, settled.next),
560
+ actions: settled.actions,
561
+ emittedEvents: settled.emittedEvents,
562
+ microsteps: settled.microsteps.map((step) => ({
563
+ next: snapshotFromConfiguration(machine, step.next),
564
+ event: step.event,
565
+ actions: step.actions,
566
+ raisedEvents: step.raisedEvents,
567
+ emittedEvents: step.emittedEvents,
568
+ exitPaths: step.exitPaths,
569
+ entryPaths: step.entryPaths,
570
+ changed: step.changed
571
+ })),
572
+ output: settled.output
573
+ };
574
+ });
575
+ export const plan = macrostep;
576
+ const actionUnsafe = Effect.fnUntraced(function* (effect) {
577
+ const actions = yield* DeferredActions;
578
+ yield* actions.add(effect);
579
+ });
580
+ /**
581
+ * Defers an effectful action until the current machine step is planned.
582
+ *
583
+ * @category combinators
584
+ * @since 4.0.0
585
+ */
586
+ export const action = (effect) => actionUnsafe(effect);
587
+ /**
588
+ * Returns the typed runtime capability for the current machine.
589
+ *
590
+ * @category combinators
591
+ * @since 4.0.0
592
+ */
593
+ export const runtime = () => RuntimeContext;
594
+ //# sourceMappingURL=machinePlanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machinePlanner.js","sourceRoot":"","sources":["../../src/internal/machinePlanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal machine process integration.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import type * as Schema from "effect/Schema";
8
+ import type { ActionError, ExecutionServices, Machine, Runtime } from "../Machine.js";
9
+ import type { InfiniteTransitionError, MachineSchemaDecodeError, StartupError, StoppedError } from "./machineErrors.js";
10
+ import * as internalRuntime from "./machineRuntime.js";
11
+ type IsAny<A> = 0 extends (1 & A) ? true : false;
12
+ type ExcludeCompatibleRuntime<Requirements, Events, Emits> = Requirements extends Runtime.Requirement<infer RequiredEvents, infer RequiredEmits> ? IsAny<Requirements> extends true ? Requirements : [RequiredEvents] extends [Events] ? [RequiredEmits] extends [Emits] ? never : Requirements : Requirements : Requirements;
13
+ export declare const toProcessLogic: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits>, ...args: [...Machine.InputArgs<Input>]) => internalRuntime.ProcessLogic<Machine.Snapshot<States>, Machine.EventOf<Events>, E | ActionError<R> | InfiniteTransitionError | MachineSchemaDecodeError | StoppedError, ExcludeCompatibleRuntime<Exclude<ExecutionServices<InitialR | R>, internalRuntime.MachineRuntime>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>, Output | undefined, InitialE | ActionError<InitialR | R> | MachineSchemaDecodeError | StartupError | StoppedError>;
14
+ export declare const start: <const States extends Machine.StateSchemas, const Events extends ReadonlyArray<Machine.TaggedSchema>, const Emits extends ReadonlyArray<Machine.TaggedSchema> = readonly [], const Input extends Schema.Top = typeof Schema.Void, UnhandledStates extends Machine.StateIdentifier<States> = Machine.StateIdentifier<States>, E = never, R = never, InitialE = never, InitialR = never, FinalStates extends Machine.StateIdentifier<States> = never, Output = never>(machine: Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits>, ...args: [...Machine.InputArgs<Input>]) => Effect.Effect<internalRuntime.MachineRef<Machine.Snapshot<States>, Machine.EventOf<Events>, E | InitialE | ActionError<R | InitialR> | InfiniteTransitionError | MachineSchemaDecodeError | StartupError | StoppedError, Output | undefined>, InitialE | ActionError<InitialR | R> | MachineSchemaDecodeError | StartupError | StoppedError, ExcludeCompatibleRuntime<Exclude<ExecutionServices<InitialR | R>, internalRuntime.MachineRuntime>, Machine.EventOf<Events>, Machine.EmitOf<Emits>>>;
15
+ export {};
16
+ //# sourceMappingURL=machineProcess.d.ts.map