@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
@@ -1,13 +1,18 @@
1
- import * as Context from "effect/Context";
2
- import * as Effect from "effect/Effect";
3
- import * as Layer from "effect/Layer";
4
- import * as Option from "effect/Option";
1
+ /**
2
+ * Runs Effect machines as persisted Cluster entities.
3
+ *
4
+ * @since 0.4.0
5
+ */
6
+ import type * as Effect from "effect/Effect";
7
+ import type * as Layer from "effect/Layer";
8
+ import type * as Option from "effect/Option";
5
9
  import * as Schema from "effect/Schema";
6
- import { ClusterError, Entity, EntityAddress, MessageStorage, type Sharding, Snowflake } from "effect/unstable/cluster";
7
- import { Rpc } from "effect/unstable/rpc";
8
- import * as Machine from "./Machine.js";
9
- type EntityAddress = EntityAddress.EntityAddress;
10
- type PersistenceError = ClusterError.PersistenceError;
10
+ import type { Entity, MessageStorage, Sharding, Snowflake } from "effect/unstable/cluster";
11
+ import type { Rpc } from "effect/unstable/rpc";
12
+ import * as internal from "../../internal/machine/cluster.js";
13
+ import { Accepted, Rejected, Storage } from "../../internal/machine/cluster.js";
14
+ import type { EnsureExecutable } from "../../internal/machine/readiness.js";
15
+ import type * as Machine from "../../Machine.js";
11
16
  type Snowflake = Snowflake.Snowflake;
12
17
  /**
13
18
  * Persisted machine checkpoint owned by the Cluster bridge.
@@ -19,7 +24,7 @@ type Snowflake = Snowflake.Snowflake;
19
24
  * checkpoint.
20
25
  *
21
26
  * @category models
22
- * @since 4.0.0
27
+ * @since 0.4.0
23
28
  */
24
29
  export interface Checkpoint {
25
30
  /** Stable identity of the machine definition that produced the snapshot. */
@@ -41,7 +46,7 @@ export interface Checkpoint {
41
46
  * redelivery even after later requests have advanced the checkpoint.
42
47
  *
43
48
  * @category models
44
- * @since 4.0.0
49
+ * @since 0.4.0
45
50
  */
46
51
  export interface LoadResult {
47
52
  /** Latest checkpoint for the entity, when one has been committed. */
@@ -53,14 +58,14 @@ export interface LoadResult {
53
58
  * Result of atomically committing a Cluster machine request.
54
59
  *
55
60
  * @category models
56
- * @since 4.0.0
61
+ * @since 0.4.0
57
62
  */
58
63
  export type CommitResult = CommitResult.Committed | CommitResult.Duplicate;
59
64
  /**
60
65
  * Constructors and types for Cluster machine commit results.
61
66
  *
62
67
  * @category models
63
- * @since 4.0.0
68
+ * @since 0.4.0
64
69
  */
65
70
  export declare const CommitResult: {
66
71
  Committed: () => CommitResult.Committed;
@@ -69,14 +74,15 @@ export declare const CommitResult: {
69
74
  /**
70
75
  * Types for Cluster machine commit results.
71
76
  *
72
- * @since 4.0.0
77
+ * @category models
78
+ * @since 0.4.0
73
79
  */
74
80
  export declare namespace CommitResult {
75
81
  /**
76
82
  * Indicates that the request id and checkpoint were committed atomically.
77
83
  *
78
84
  * @category models
79
- * @since 4.0.0
85
+ * @since 0.4.0
80
86
  */
81
87
  interface Committed {
82
88
  readonly _tag: "Committed";
@@ -85,16 +91,12 @@ export declare namespace CommitResult {
85
91
  * Indicates that the request id was already committed.
86
92
  *
87
93
  * @category models
88
- * @since 4.0.0
94
+ * @since 0.4.0
89
95
  */
90
96
  interface Duplicate {
91
97
  readonly _tag: "Duplicate";
92
98
  }
93
99
  }
94
- declare const Storage_base: Context.ServiceClass<Storage, "effect/cluster/ClusterMachine/Storage", {
95
- readonly load: (address: EntityAddress, requestId: Snowflake) => Effect.Effect<LoadResult, PersistenceError>;
96
- readonly commit: (address: EntityAddress, checkpoint: Checkpoint) => Effect.Effect<CommitResult, PersistenceError>;
97
- }>;
98
100
  /**
99
101
  * Checkpoint persistence service used by Cluster machines.
100
102
  *
@@ -113,55 +115,47 @@ declare const Storage_base: Context.ServiceClass<Storage, "effect/cluster/Cluste
113
115
  * provide checkpoint-and-emission atomicity.
114
116
  *
115
117
  * @category services
116
- * @since 4.0.0
118
+ * @since 0.4.0
117
119
  */
118
- export declare class Storage extends Storage_base {
119
- }
120
- declare const Accepted_base: Schema.Class<Accepted, Schema.TaggedStruct<"Accepted", {}>, {}>;
120
+ export { Storage };
121
121
  /**
122
122
  * Successful result returned after a Cluster machine request is committed or
123
123
  * recognized as a redelivery.
124
124
  *
125
125
  * @category models
126
- * @since 4.0.0
126
+ * @since 0.4.0
127
127
  */
128
- export declare class Accepted extends Accepted_base {
129
- }
128
+ export { Accepted };
130
129
  /**
131
130
  * Schema for reasons a Cluster machine request can be rejected without
132
131
  * advancing its checkpoint.
133
132
  *
134
133
  * @category models
135
- * @since 4.0.0
134
+ * @since 0.4.0
136
135
  */
137
136
  export declare const RejectionReason: Schema.Literals<readonly ["MachineIdMismatch", "VersionMismatch", "InvalidCheckpoint", "UnsupportedProcessLocal", "TransitionFailure", "PersistenceFailure", "EmissionFailure"]>;
138
137
  /**
139
138
  * Type of {@link RejectionReason}.
140
139
  *
141
140
  * @category models
142
- * @since 4.0.0
141
+ * @since 0.4.0
143
142
  */
144
143
  export type RejectionReason = typeof RejectionReason.Type;
145
- declare const Rejected_base: Schema.Class<Rejected, Schema.TaggedStruct<"Rejected", {
146
- readonly reason: Schema.Literals<readonly ["MachineIdMismatch", "VersionMismatch", "InvalidCheckpoint", "UnsupportedProcessLocal", "TransitionFailure", "PersistenceFailure", "EmissionFailure"]>;
147
- readonly message: Schema.String;
148
- }>, {}>;
149
144
  /**
150
145
  * Rejected Cluster machine request. Transaction-participating durable storage
151
146
  * leaves the previous checkpoint in place and suppresses emitted events.
152
147
  *
153
148
  * @category models
154
- * @since 4.0.0
149
+ * @since 0.4.0
155
150
  */
156
- export declare class Rejected extends Rejected_base {
157
- }
151
+ export { Rejected };
158
152
  /**
159
153
  * Schema for Cluster machine request outcomes.
160
154
  *
161
155
  * @category schemas
162
- * @since 4.0.0
156
+ * @since 0.4.0
163
157
  */
164
- export declare const SendResult: Schema.Union<readonly [typeof Accepted, typeof Rejected]>;
158
+ export declare const SendResult: Schema.Union<readonly [typeof internal.Accepted, typeof internal.Rejected]>;
165
159
  type SendRpc<Events extends ReadonlyArray<Machine.Machine.TaggedSchema>> = Rpc.Rpc<"send", Schema.Union<Events>, typeof SendResult>;
166
160
  type MachineEvents<M extends Machine.Machine.Any> = Machine.Machine.InputEvents<M>;
167
161
  type MachineEmits<M extends Machine.Machine.Any> = Machine.Machine.Emits<M>;
@@ -175,7 +169,7 @@ type MachineEmits<M extends Machine.Machine.Any> = Machine.Machine.Emits<M>;
175
169
  * the checkpoint at most once.
176
170
  *
177
171
  * @category models
178
- * @since 4.0.0
172
+ * @since 0.4.0
179
173
  */
180
174
  export interface ClusterMachine<in out Type extends string, in out M extends Machine.Machine.Any, out Services = MachineServices<M>> {
181
175
  /** Machine definition executed by each entity instance. */
@@ -193,7 +187,7 @@ export interface ClusterMachine<in out Type extends string, in out M extends Mac
193
187
  * is persisted after commit and recovered through request-id deduplication if
194
188
  * delivery is interrupted. Machines that never emit may omit `enqueue`.
195
189
  *
196
- * @since 4.0.0
190
+ * @since 0.4.0
197
191
  */
198
192
  readonly toLayer: <R = never>(options?: {
199
193
  readonly enqueue?: (event: Machine.Machine.EmitOf<MachineEmits<M>>) => Effect.Effect<void, unknown, R>;
@@ -216,14 +210,14 @@ type ExcludeCompatibleRuntime<Requirements, Events, Emits> = Requirements extend
216
210
  * `MessageStorage` transaction marker.
217
211
  *
218
212
  * @category constructors
219
- * @since 4.0.0
213
+ * @since 0.4.0
220
214
  */
221
215
  export declare const makeMemory: Effect.Effect<Storage["Service"]>;
222
216
  /**
223
217
  * Layer providing the in-memory Cluster machine checkpoint store.
224
218
  *
225
219
  * @category layers
226
- * @since 4.0.0
220
+ * @since 0.4.0
227
221
  */
228
222
  export declare const layerMemory: Layer.Layer<Storage>;
229
223
  /**
@@ -250,11 +244,28 @@ export declare const layerMemory: Layer.Layer<Storage>;
250
244
  * Arbitrary action effects may run again after a crash before checkpoint
251
245
  * commit, so the bridge does not provide exactly-once external effects.
252
246
  *
247
+ * **Example**
248
+ *
249
+ * ```ts
250
+ * import { Schema } from "effect"
251
+ * import { Machine } from "@typeonce/effect-machine"
252
+ * import { ClusterMachine } from "@typeonce/effect-machine/cluster"
253
+ *
254
+ * class Idle extends Schema.TaggedClass<Idle>("Idle")("Idle", {}) {}
255
+ * const States = Machine.defineStates({ Idle })
256
+ * const machine = Machine.make({
257
+ * states: States.states,
258
+ * events: [],
259
+ * initial: () => States.initial.Idle.from()
260
+ * }).handle({ Idle: {} })
261
+ *
262
+ * const adapter = ClusterMachine.make("IdleMachine", machine, { version: "1" })
263
+ * ```
264
+ *
253
265
  * @category constructors
254
- * @since 4.0.0
266
+ * @since 0.4.0
255
267
  */
256
- export declare const make: <const Type extends string, States extends Machine.Machine.StateSchemas, Events extends ReadonlyArray<Machine.Machine.TaggedSchema>, Input extends Schema.Top, UnhandledStates extends Machine.Machine.StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends Machine.Machine.StateIdentifier<States>, Output, Emits extends ReadonlyArray<Machine.Machine.TaggedSchema>, OutputStates extends Machine.Machine.StateIdentifier<States>, InputEvents extends ReadonlyArray<Machine.Machine.TaggedSchema> = Events>(type: Type, machine: Machine.Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & Machine.Machine.EnsureOutputImplementations<States, OutputStates>, options: {
268
+ export declare const make: <const Type extends string, States extends Machine.Machine.StateSchemas, Events extends ReadonlyArray<Machine.Machine.TaggedSchema>, Input extends Schema.Top, UnhandledStates extends Machine.Machine.StateIdentifier<States>, E, R, InitialE, InitialR, FinalStates extends Machine.Machine.StateIdentifier<States>, Output, Emits extends ReadonlyArray<Machine.Machine.TaggedSchema>, OutputStates extends Machine.Machine.StateIdentifier<States>, InputEvents extends ReadonlyArray<Machine.Machine.TaggedSchema> = Events>(type: Type, machine: Machine.Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents> & EnsureExecutable<States, UnhandledStates, OutputStates>, options: {
257
269
  readonly version: string;
258
270
  }, ...input: [...Machine.Machine.InputArgs<Input>]) => ClusterMachine<Type, Machine.Machine<States, Events, Input, UnhandledStates, E, R, InitialE, InitialR, FinalStates, Output, Emits, OutputStates, InputEvents>, ExcludeCompatibleRuntime<Machine.ExecutionServices<R | InitialR>, Machine.Machine.EventOf<Events>, Machine.Machine.EmitOf<Emits>> | Machine.Machine.SnapshotDecodingServices<States> | Machine.Machine.SnapshotEncodingServices<States>>;
259
- export {};
260
271
  //# sourceMappingURL=ClusterMachine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterMachine.d.ts","sourceRoot":"","sources":["../../../src/unstable/cluster/ClusterMachine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ import * as Schema from "effect/Schema";
2
+ import * as internal from "../../internal/machine/cluster.js";
3
+ import { Accepted, Rejected, Storage } from "../../internal/machine/cluster.js";
4
+ /**
5
+ * Constructors and types for Cluster machine commit results.
6
+ *
7
+ * @category models
8
+ * @since 0.4.0
9
+ */
10
+ export const CommitResult = {
11
+ Committed: () => ({ _tag: "Committed" }),
12
+ Duplicate: () => ({ _tag: "Duplicate" })
13
+ };
14
+ /**
15
+ * Checkpoint persistence service used by Cluster machines.
16
+ *
17
+ * **When to use**
18
+ *
19
+ * Use to connect `ClusterMachine` to a durable checkpoint store that can
20
+ * atomically deduplicate request ids and replace the current checkpoint.
21
+ *
22
+ * **Gotchas**
23
+ *
24
+ * For checkpoint and emitted-message persistence to commit atomically, this
25
+ * service must join the transaction opened through the configured
26
+ * `MessageStorage`. The reply is persisted after that transaction; storing the
27
+ * request id with the checkpoint makes a redelivery recover that reply without
28
+ * applying the transition again. A separate transaction or database cannot
29
+ * provide checkpoint-and-emission atomicity.
30
+ *
31
+ * @category services
32
+ * @since 0.4.0
33
+ */
34
+ export { Storage };
35
+ /**
36
+ * Successful result returned after a Cluster machine request is committed or
37
+ * recognized as a redelivery.
38
+ *
39
+ * @category models
40
+ * @since 0.4.0
41
+ */
42
+ export { Accepted };
43
+ /**
44
+ * Schema for reasons a Cluster machine request can be rejected without
45
+ * advancing its checkpoint.
46
+ *
47
+ * @category models
48
+ * @since 0.4.0
49
+ */
50
+ export const RejectionReason = Schema.Literals([
51
+ "MachineIdMismatch",
52
+ "VersionMismatch",
53
+ "InvalidCheckpoint",
54
+ "UnsupportedProcessLocal",
55
+ "TransitionFailure",
56
+ "PersistenceFailure",
57
+ "EmissionFailure"
58
+ ]);
59
+ /**
60
+ * Rejected Cluster machine request. Transaction-participating durable storage
61
+ * leaves the previous checkpoint in place and suppresses emitted events.
62
+ *
63
+ * @category models
64
+ * @since 0.4.0
65
+ */
66
+ export { Rejected };
67
+ /**
68
+ * Schema for Cluster machine request outcomes.
69
+ *
70
+ * @category schemas
71
+ * @since 0.4.0
72
+ */
73
+ export const SendResult = Schema.Union([Accepted, Rejected]);
74
+ /**
75
+ * Creates an in-memory Cluster machine checkpoint store.
76
+ *
77
+ * **When to use**
78
+ *
79
+ * Use when you test or run a local process that does not require checkpoints
80
+ * to survive a restart.
81
+ *
82
+ * **Gotchas**
83
+ *
84
+ * This store is not durable and does not provide rollback with the in-memory
85
+ * `MessageStorage` transaction marker.
86
+ *
87
+ * @category constructors
88
+ * @since 0.4.0
89
+ */
90
+ export const makeMemory = internal.makeMemory;
91
+ /**
92
+ * Layer providing the in-memory Cluster machine checkpoint store.
93
+ *
94
+ * @category layers
95
+ * @since 0.4.0
96
+ */
97
+ export const layerMemory = internal.layerMemory;
98
+ /**
99
+ * Creates a persisted Cluster entity adapter for a machine.
100
+ *
101
+ * **When to use**
102
+ *
103
+ * Use when each Cluster entity id should own one durable machine snapshot and
104
+ * accept schema-validated machine events through a persisted `send` RPC.
105
+ *
106
+ * **Details**
107
+ *
108
+ * A missing checkpoint runs initial planning before the first event. Existing
109
+ * checkpoints are identity-checked, version-checked, decoded, and resumed
110
+ * without rerunning initial entry behavior. Final checkpoints accept later
111
+ * requests as no-ops. The stable bridge identity is `machine.id` when present,
112
+ * otherwise the Cluster entity type.
113
+ *
114
+ * **Gotchas**
115
+ *
116
+ * Invoked processes, spawned children, action-time `runtime.raise`, timers,
117
+ * subscriptions, and other process-local state are not durable and are
118
+ * rejected. Planning-time raised events remain part of the current macrostep.
119
+ * Arbitrary action effects may run again after a crash before checkpoint
120
+ * commit, so the bridge does not provide exactly-once external effects.
121
+ *
122
+ * **Example**
123
+ *
124
+ * ```ts
125
+ * import { Schema } from "effect"
126
+ * import { Machine } from "@typeonce/effect-machine"
127
+ * import { ClusterMachine } from "@typeonce/effect-machine/cluster"
128
+ *
129
+ * class Idle extends Schema.TaggedClass<Idle>("Idle")("Idle", {}) {}
130
+ * const States = Machine.defineStates({ Idle })
131
+ * const machine = Machine.make({
132
+ * states: States.states,
133
+ * events: [],
134
+ * initial: () => States.initial.Idle.from()
135
+ * }).handle({ Idle: {} })
136
+ *
137
+ * const adapter = ClusterMachine.make("IdleMachine", machine, { version: "1" })
138
+ * ```
139
+ *
140
+ * @category constructors
141
+ * @since 0.4.0
142
+ */
143
+ export const make = internal.make;
144
+ //# sourceMappingURL=ClusterMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusterMachine.js","sourceRoot":"","sources":["../../../src/unstable/cluster/ClusterMachine.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,QAAQ,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AA4D/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,GAA2B,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAChE,SAAS,EAAE,GAA2B,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;CACjE,CAAA;AA8BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,OAAO,EAAE,CAAA;AAElB;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC7C,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,iBAAiB;CAClB,CAAC,CAAA;AAUF;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AA0E5D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,UAAU,GAAsC,QAAQ,CAAC,UAAU,CAAA;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB,QAAQ,CAAC,WAAW,CAAA;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,CAAC,MAAM,IAAI,GA8Db,QAAQ,CAAC,IAAI,CAAA"}
@@ -1,2 +1,2 @@
1
1
  export * as ClusterMachine from "./ClusterMachine.js";
2
- //# sourceMappingURL=cluster.js.map
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unstable/cluster/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"}
@@ -1,2 +1,2 @@
1
1
  export * as ClusterMachine from "./ClusterMachine.js";
2
- //# sourceMappingURL=cluster.d.ts.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/unstable/cluster/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"}