@durable-effect/jobs 0.0.1-next.1

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 (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/dist/client/client.d.ts +34 -0
  4. package/dist/client/client.d.ts.map +1 -0
  5. package/dist/client/client.js +427 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/index.d.ts +4 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +4 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/response.d.ts +99 -0
  12. package/dist/client/response.d.ts.map +1 -0
  13. package/dist/client/response.js +92 -0
  14. package/dist/client/response.js.map +1 -0
  15. package/dist/client/types.d.ts +242 -0
  16. package/dist/client/types.d.ts.map +1 -0
  17. package/dist/client/types.js +3 -0
  18. package/dist/client/types.js.map +1 -0
  19. package/dist/definitions/continuous.d.ts +110 -0
  20. package/dist/definitions/continuous.d.ts.map +1 -0
  21. package/dist/definitions/continuous.js +79 -0
  22. package/dist/definitions/continuous.js.map +1 -0
  23. package/dist/definitions/debounce.d.ts +67 -0
  24. package/dist/definitions/debounce.d.ts.map +1 -0
  25. package/dist/definitions/debounce.js +28 -0
  26. package/dist/definitions/debounce.js.map +1 -0
  27. package/dist/definitions/index.d.ts +4 -0
  28. package/dist/definitions/index.d.ts.map +1 -0
  29. package/dist/definitions/index.js +5 -0
  30. package/dist/definitions/index.js.map +1 -0
  31. package/dist/definitions/task.d.ts +234 -0
  32. package/dist/definitions/task.d.ts.map +1 -0
  33. package/dist/definitions/task.js +106 -0
  34. package/dist/definitions/task.js.map +1 -0
  35. package/dist/engine/engine.d.ts +60 -0
  36. package/dist/engine/engine.d.ts.map +1 -0
  37. package/dist/engine/engine.js +89 -0
  38. package/dist/engine/engine.js.map +1 -0
  39. package/dist/engine/index.d.ts +3 -0
  40. package/dist/engine/index.d.ts.map +1 -0
  41. package/dist/engine/index.js +3 -0
  42. package/dist/engine/index.js.map +1 -0
  43. package/dist/engine/types.d.ts +53 -0
  44. package/dist/engine/types.d.ts.map +1 -0
  45. package/dist/engine/types.js +3 -0
  46. package/dist/engine/types.js.map +1 -0
  47. package/dist/errors.d.ts +119 -0
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/errors.js +80 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/factory.d.ts +97 -0
  52. package/dist/factory.d.ts.map +1 -0
  53. package/dist/factory.js +94 -0
  54. package/dist/factory.js.map +1 -0
  55. package/dist/handlers/continuous/context.d.ts +25 -0
  56. package/dist/handlers/continuous/context.d.ts.map +1 -0
  57. package/dist/handlers/continuous/context.js +38 -0
  58. package/dist/handlers/continuous/context.js.map +1 -0
  59. package/dist/handlers/continuous/executor.d.ts +10 -0
  60. package/dist/handlers/continuous/executor.d.ts.map +1 -0
  61. package/dist/handlers/continuous/executor.js +83 -0
  62. package/dist/handlers/continuous/executor.js.map +1 -0
  63. package/dist/handlers/continuous/handler.d.ts +14 -0
  64. package/dist/handlers/continuous/handler.d.ts.map +1 -0
  65. package/dist/handlers/continuous/handler.js +283 -0
  66. package/dist/handlers/continuous/handler.js.map +1 -0
  67. package/dist/handlers/continuous/index.d.ts +4 -0
  68. package/dist/handlers/continuous/index.d.ts.map +1 -0
  69. package/dist/handlers/continuous/index.js +4 -0
  70. package/dist/handlers/continuous/index.js.map +1 -0
  71. package/dist/handlers/continuous/types.d.ts +36 -0
  72. package/dist/handlers/continuous/types.d.ts.map +1 -0
  73. package/dist/handlers/continuous/types.js +3 -0
  74. package/dist/handlers/continuous/types.js.map +1 -0
  75. package/dist/handlers/debounce/handler.d.ts +14 -0
  76. package/dist/handlers/debounce/handler.d.ts.map +1 -0
  77. package/dist/handlers/debounce/handler.js +261 -0
  78. package/dist/handlers/debounce/handler.js.map +1 -0
  79. package/dist/handlers/debounce/index.d.ts +3 -0
  80. package/dist/handlers/debounce/index.d.ts.map +1 -0
  81. package/dist/handlers/debounce/index.js +3 -0
  82. package/dist/handlers/debounce/index.js.map +1 -0
  83. package/dist/handlers/debounce/types.d.ts +10 -0
  84. package/dist/handlers/debounce/types.d.ts.map +1 -0
  85. package/dist/handlers/debounce/types.js +3 -0
  86. package/dist/handlers/debounce/types.js.map +1 -0
  87. package/dist/handlers/index.d.ts +14 -0
  88. package/dist/handlers/index.d.ts.map +1 -0
  89. package/dist/handlers/index.js +25 -0
  90. package/dist/handlers/index.js.map +1 -0
  91. package/dist/handlers/task/context.d.ts +35 -0
  92. package/dist/handlers/task/context.d.ts.map +1 -0
  93. package/dist/handlers/task/context.js +156 -0
  94. package/dist/handlers/task/context.js.map +1 -0
  95. package/dist/handlers/task/handler.d.ts +13 -0
  96. package/dist/handlers/task/handler.d.ts.map +1 -0
  97. package/dist/handlers/task/handler.js +280 -0
  98. package/dist/handlers/task/handler.js.map +1 -0
  99. package/dist/handlers/task/index.d.ts +3 -0
  100. package/dist/handlers/task/index.d.ts.map +1 -0
  101. package/dist/handlers/task/index.js +2 -0
  102. package/dist/handlers/task/index.js.map +1 -0
  103. package/dist/handlers/task/types.d.ts +10 -0
  104. package/dist/handlers/task/types.d.ts.map +1 -0
  105. package/dist/handlers/task/types.js +3 -0
  106. package/dist/handlers/task/types.js.map +1 -0
  107. package/dist/index.d.ts +28 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +79 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/registry/index.d.ts +5 -0
  112. package/dist/registry/index.d.ts.map +1 -0
  113. package/dist/registry/index.js +4 -0
  114. package/dist/registry/index.js.map +1 -0
  115. package/dist/registry/registry.d.ts +74 -0
  116. package/dist/registry/registry.d.ts.map +1 -0
  117. package/dist/registry/registry.js +159 -0
  118. package/dist/registry/registry.js.map +1 -0
  119. package/dist/registry/typed.d.ts +146 -0
  120. package/dist/registry/typed.d.ts.map +1 -0
  121. package/dist/registry/typed.js +29 -0
  122. package/dist/registry/typed.js.map +1 -0
  123. package/dist/registry/types.d.ts +497 -0
  124. package/dist/registry/types.d.ts.map +1 -0
  125. package/dist/registry/types.js +3 -0
  126. package/dist/registry/types.js.map +1 -0
  127. package/dist/retry/errors.d.ts +31 -0
  128. package/dist/retry/errors.d.ts.map +1 -0
  129. package/dist/retry/errors.js +22 -0
  130. package/dist/retry/errors.js.map +1 -0
  131. package/dist/retry/executor.d.ts +53 -0
  132. package/dist/retry/executor.d.ts.map +1 -0
  133. package/dist/retry/executor.js +112 -0
  134. package/dist/retry/executor.js.map +1 -0
  135. package/dist/retry/index.d.ts +4 -0
  136. package/dist/retry/index.d.ts.map +1 -0
  137. package/dist/retry/index.js +4 -0
  138. package/dist/retry/index.js.map +1 -0
  139. package/dist/retry/types.d.ts +29 -0
  140. package/dist/retry/types.d.ts.map +1 -0
  141. package/dist/retry/types.js +3 -0
  142. package/dist/retry/types.js.map +1 -0
  143. package/dist/runtime/dispatcher.d.ts +39 -0
  144. package/dist/runtime/dispatcher.d.ts.map +1 -0
  145. package/dist/runtime/dispatcher.js +76 -0
  146. package/dist/runtime/dispatcher.js.map +1 -0
  147. package/dist/runtime/index.d.ts +4 -0
  148. package/dist/runtime/index.d.ts.map +1 -0
  149. package/dist/runtime/index.js +6 -0
  150. package/dist/runtime/index.js.map +1 -0
  151. package/dist/runtime/runtime.d.ts +88 -0
  152. package/dist/runtime/runtime.d.ts.map +1 -0
  153. package/dist/runtime/runtime.js +116 -0
  154. package/dist/runtime/runtime.js.map +1 -0
  155. package/dist/runtime/types.d.ts +182 -0
  156. package/dist/runtime/types.d.ts.map +1 -0
  157. package/dist/runtime/types.js +3 -0
  158. package/dist/runtime/types.js.map +1 -0
  159. package/dist/services/alarm.d.ts +37 -0
  160. package/dist/services/alarm.d.ts.map +1 -0
  161. package/dist/services/alarm.js +39 -0
  162. package/dist/services/alarm.js.map +1 -0
  163. package/dist/services/cleanup.d.ts +27 -0
  164. package/dist/services/cleanup.d.ts.map +1 -0
  165. package/dist/services/cleanup.js +25 -0
  166. package/dist/services/cleanup.js.map +1 -0
  167. package/dist/services/entity-state.d.ts +49 -0
  168. package/dist/services/entity-state.d.ts.map +1 -0
  169. package/dist/services/entity-state.js +72 -0
  170. package/dist/services/entity-state.js.map +1 -0
  171. package/dist/services/execution.d.ts +70 -0
  172. package/dist/services/execution.d.ts.map +1 -0
  173. package/dist/services/execution.js +159 -0
  174. package/dist/services/execution.js.map +1 -0
  175. package/dist/services/execution_test.d.ts +13 -0
  176. package/dist/services/execution_test.d.ts.map +1 -0
  177. package/dist/services/execution_test.js +11 -0
  178. package/dist/services/execution_test.js.map +1 -0
  179. package/dist/services/idempotency.d.ts +36 -0
  180. package/dist/services/idempotency.d.ts.map +1 -0
  181. package/dist/services/idempotency.js +48 -0
  182. package/dist/services/idempotency.js.map +1 -0
  183. package/dist/services/index.d.ts +19 -0
  184. package/dist/services/index.d.ts.map +1 -0
  185. package/dist/services/index.js +33 -0
  186. package/dist/services/index.js.map +1 -0
  187. package/dist/services/metadata.d.ts +64 -0
  188. package/dist/services/metadata.d.ts.map +1 -0
  189. package/dist/services/metadata.js +56 -0
  190. package/dist/services/metadata.js.map +1 -0
  191. package/dist/services/registry.d.ts +19 -0
  192. package/dist/services/registry.d.ts.map +1 -0
  193. package/dist/services/registry.js +17 -0
  194. package/dist/services/registry.js.map +1 -0
  195. package/dist/storage-keys.d.ts +38 -0
  196. package/dist/storage-keys.d.ts.map +1 -0
  197. package/dist/storage-keys.js +47 -0
  198. package/dist/storage-keys.js.map +1 -0
  199. package/package.json +35 -0
@@ -0,0 +1,427 @@
1
+ // packages/jobs/src/client/client.ts
2
+ import { Effect } from "effect";
3
+ import { narrowResponseEffect } from "./response";
4
+ // =============================================================================
5
+ // Instance ID Resolution
6
+ // =============================================================================
7
+ /**
8
+ * Create instance ID for a job.
9
+ *
10
+ * Format: {jobType}:{jobName}:{userProvidedId}
11
+ */
12
+ function createInstanceId(type, name, id) {
13
+ return `${type}:${name}:${id}`;
14
+ }
15
+ /**
16
+ * Consistent hash for partition key routing.
17
+ */
18
+ function consistentHash(key, buckets) {
19
+ let hash = 0;
20
+ for (let i = 0; i < key.length; i++) {
21
+ const char = key.charCodeAt(i);
22
+ hash = (hash << 5) - hash + char;
23
+ hash = hash & hash; // Convert to 32-bit integer
24
+ }
25
+ return Math.abs(hash) % buckets;
26
+ }
27
+ // =============================================================================
28
+ // DO Stub Helper
29
+ // =============================================================================
30
+ /**
31
+ * Get a typed DO stub for an instance.
32
+ *
33
+ * Note: We use a runtime cast here because Cloudflare's DurableObjectNamespace
34
+ * generic typing doesn't work well with the DurableObjectBranded constraint.
35
+ * The call() method signature is validated by our response narrowing.
36
+ */
37
+ function getStub(binding, instanceId) {
38
+ const id = binding.idFromName(instanceId);
39
+ // The DO stub implements our interface; we validate responses at runtime
40
+ return binding.get(id);
41
+ }
42
+ // =============================================================================
43
+ // Client Factory
44
+ // =============================================================================
45
+ /**
46
+ * Create a jobs client from a Durable Object binding.
47
+ *
48
+ * The client provides typed access to all registered jobs and
49
+ * handles instance ID resolution and routing.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const client = createJobsClient(env.JOBS, registry);
54
+ *
55
+ * // Access continuous job
56
+ * await client.continuous("tokenRefresher").start({
57
+ * id: "user-123",
58
+ * input: { refreshToken: "rt_abc" },
59
+ * });
60
+ *
61
+ * // Access debounce job
62
+ * await client.debounce("webhookDebounce").add({
63
+ * id: "contact-456",
64
+ * event: { type: "contact.updated", data: {...} },
65
+ * });
66
+ *
67
+ * // Access workerPool job (auto-routes to instance)
68
+ * await client.workerPool("emailWorkerPool").enqueue({
69
+ * id: "email-789",
70
+ * event: { to: "user@example.com", template: "welcome" },
71
+ * });
72
+ * ```
73
+ */
74
+ export function createJobsClient(binding, registry) {
75
+ return {
76
+ // -------------------------------------------------------------------------
77
+ // Continuous Client
78
+ // -------------------------------------------------------------------------
79
+ continuous: (name) => {
80
+ const client = {
81
+ start: ({ id, input }) => {
82
+ const instanceId = createInstanceId("continuous", name, id);
83
+ const stub = getStub(binding, instanceId);
84
+ return narrowResponseEffect(stub.call({
85
+ type: "continuous",
86
+ action: "start",
87
+ name,
88
+ id,
89
+ input,
90
+ }), "continuous.start");
91
+ },
92
+ terminate: (id, options) => {
93
+ const instanceId = createInstanceId("continuous", name, id);
94
+ const stub = getStub(binding, instanceId);
95
+ return narrowResponseEffect(stub.call({
96
+ type: "continuous",
97
+ action: "terminate",
98
+ name,
99
+ id,
100
+ reason: options?.reason,
101
+ }), "continuous.terminate");
102
+ },
103
+ trigger: (id) => {
104
+ const instanceId = createInstanceId("continuous", name, id);
105
+ const stub = getStub(binding, instanceId);
106
+ return narrowResponseEffect(stub.call({
107
+ type: "continuous",
108
+ action: "trigger",
109
+ name,
110
+ id,
111
+ }), "continuous.trigger");
112
+ },
113
+ status: (id) => {
114
+ const instanceId = createInstanceId("continuous", name, id);
115
+ const stub = getStub(binding, instanceId);
116
+ return narrowResponseEffect(stub.call({
117
+ type: "continuous",
118
+ action: "status",
119
+ name,
120
+ id,
121
+ }), "continuous.status");
122
+ },
123
+ getState: (id) => {
124
+ const instanceId = createInstanceId("continuous", name, id);
125
+ const stub = getStub(binding, instanceId);
126
+ return narrowResponseEffect(stub.call({
127
+ type: "continuous",
128
+ action: "getState",
129
+ name,
130
+ id,
131
+ }), "continuous.getState");
132
+ },
133
+ };
134
+ return client;
135
+ },
136
+ // -------------------------------------------------------------------------
137
+ // Debounce Client
138
+ // -------------------------------------------------------------------------
139
+ debounce: (name) => {
140
+ const client = {
141
+ add: ({ id, event }) => {
142
+ const instanceId = createInstanceId("debounce", name, id);
143
+ const stub = getStub(binding, instanceId);
144
+ return narrowResponseEffect(stub.call({
145
+ type: "debounce",
146
+ action: "add",
147
+ name,
148
+ id,
149
+ event,
150
+ }), "debounce.add");
151
+ },
152
+ flush: (id) => {
153
+ const instanceId = createInstanceId("debounce", name, id);
154
+ const stub = getStub(binding, instanceId);
155
+ return narrowResponseEffect(stub.call({
156
+ type: "debounce",
157
+ action: "flush",
158
+ name,
159
+ id,
160
+ }), "debounce.flush");
161
+ },
162
+ clear: (id) => {
163
+ const instanceId = createInstanceId("debounce", name, id);
164
+ const stub = getStub(binding, instanceId);
165
+ return narrowResponseEffect(stub.call({
166
+ type: "debounce",
167
+ action: "clear",
168
+ name,
169
+ id,
170
+ }), "debounce.clear");
171
+ },
172
+ status: (id) => {
173
+ const instanceId = createInstanceId("debounce", name, id);
174
+ const stub = getStub(binding, instanceId);
175
+ return narrowResponseEffect(stub.call({
176
+ type: "debounce",
177
+ action: "status",
178
+ name,
179
+ id,
180
+ }), "debounce.status");
181
+ },
182
+ getState: (id) => {
183
+ const instanceId = createInstanceId("debounce", name, id);
184
+ const stub = getStub(binding, instanceId);
185
+ return narrowResponseEffect(stub.call({
186
+ type: "debounce",
187
+ action: "getState",
188
+ name,
189
+ id,
190
+ }), "debounce.getState");
191
+ },
192
+ };
193
+ return client;
194
+ },
195
+ // -------------------------------------------------------------------------
196
+ // WorkerPool Client
197
+ // -------------------------------------------------------------------------
198
+ workerPool: (name) => {
199
+ const def = registry.workerPool[name];
200
+ const concurrency = def?.concurrency ?? 1;
201
+ // Round-robin counter for load distribution
202
+ let roundRobinCounter = 0;
203
+ const client = {
204
+ enqueue: ({ id, event, partitionKey, priority }) => {
205
+ // Route to specific instance based on partitionKey or round-robin
206
+ const instanceIndex = partitionKey
207
+ ? consistentHash(partitionKey, concurrency)
208
+ : roundRobinCounter++ % concurrency;
209
+ const instanceId = createInstanceId("workerPool", name, instanceIndex);
210
+ const stub = getStub(binding, instanceId);
211
+ return narrowResponseEffect(stub.call({
212
+ type: "workerPool",
213
+ action: "enqueue",
214
+ name,
215
+ instanceIndex,
216
+ eventId: id,
217
+ event,
218
+ partitionKey,
219
+ priority,
220
+ }), "workerPool.enqueue");
221
+ },
222
+ pause: (instanceIndex) => {
223
+ if (instanceIndex !== undefined) {
224
+ const instanceId = createInstanceId("workerPool", name, instanceIndex);
225
+ const stub = getStub(binding, instanceId);
226
+ return narrowResponseEffect(stub.call({
227
+ type: "workerPool",
228
+ action: "pause",
229
+ name,
230
+ instanceIndex,
231
+ }), "workerPool.pause");
232
+ }
233
+ // Pause all instances
234
+ return Effect.gen(function* () {
235
+ const results = yield* Effect.all(Array.from({ length: concurrency }, (_, i) => {
236
+ const instanceId = createInstanceId("workerPool", name, i);
237
+ const stub = getStub(binding, instanceId);
238
+ return narrowResponseEffect(stub.call({
239
+ type: "workerPool",
240
+ action: "pause",
241
+ name,
242
+ instanceIndex: i,
243
+ }), "workerPool.pause");
244
+ }), { concurrency: "unbounded" });
245
+ return {
246
+ _type: "workerPool.pause",
247
+ paused: results.every((r) => r.paused),
248
+ };
249
+ });
250
+ },
251
+ resume: (instanceIndex) => {
252
+ if (instanceIndex !== undefined) {
253
+ const instanceId = createInstanceId("workerPool", name, instanceIndex);
254
+ const stub = getStub(binding, instanceId);
255
+ return narrowResponseEffect(stub.call({
256
+ type: "workerPool",
257
+ action: "resume",
258
+ name,
259
+ instanceIndex,
260
+ }), "workerPool.resume");
261
+ }
262
+ // Resume all instances
263
+ return Effect.gen(function* () {
264
+ const results = yield* Effect.all(Array.from({ length: concurrency }, (_, i) => {
265
+ const instanceId = createInstanceId("workerPool", name, i);
266
+ const stub = getStub(binding, instanceId);
267
+ return narrowResponseEffect(stub.call({
268
+ type: "workerPool",
269
+ action: "resume",
270
+ name,
271
+ instanceIndex: i,
272
+ }), "workerPool.resume");
273
+ }), { concurrency: "unbounded" });
274
+ return {
275
+ _type: "workerPool.resume",
276
+ resumed: results.every((r) => r.resumed),
277
+ };
278
+ });
279
+ },
280
+ cancel: (eventId) => {
281
+ // Cancel needs to find the right instance
282
+ // For now, broadcast to all instances
283
+ return Effect.gen(function* () {
284
+ const results = yield* Effect.all(Array.from({ length: concurrency }, (_, i) => {
285
+ const instanceId = createInstanceId("workerPool", name, i);
286
+ const stub = getStub(binding, instanceId);
287
+ return narrowResponseEffect(stub.call({
288
+ type: "workerPool",
289
+ action: "cancel",
290
+ name,
291
+ instanceIndex: i,
292
+ eventId,
293
+ }), "workerPool.cancel");
294
+ }), { concurrency: "unbounded" });
295
+ // Return first success or last result
296
+ const success = results.find((r) => r.cancelled);
297
+ return success ?? results[results.length - 1];
298
+ });
299
+ },
300
+ status: () => {
301
+ // Aggregate status from all instances
302
+ return Effect.gen(function* () {
303
+ const instances = yield* Effect.all(Array.from({ length: concurrency }, (_, i) => {
304
+ const instanceId = createInstanceId("workerPool", name, i);
305
+ const stub = getStub(binding, instanceId);
306
+ return narrowResponseEffect(stub.call({
307
+ type: "workerPool",
308
+ action: "status",
309
+ name,
310
+ instanceIndex: i,
311
+ }), "workerPool.status");
312
+ }), { concurrency: "unbounded" });
313
+ const aggregated = {
314
+ instances,
315
+ totalPending: instances.reduce((sum, i) => sum + (i.pendingCount ?? 0), 0),
316
+ totalProcessed: instances.reduce((sum, i) => sum + (i.processedCount ?? 0), 0),
317
+ activeInstances: instances.filter((i) => i.status === "processing" || i.status === "idle").length,
318
+ pausedInstances: instances.filter((i) => i.status === "paused")
319
+ .length,
320
+ };
321
+ return aggregated;
322
+ });
323
+ },
324
+ instanceStatus: (instanceIndex) => {
325
+ const instanceId = createInstanceId("workerPool", name, instanceIndex);
326
+ const stub = getStub(binding, instanceId);
327
+ return narrowResponseEffect(stub.call({
328
+ type: "workerPool",
329
+ action: "status",
330
+ name,
331
+ instanceIndex,
332
+ }), "workerPool.status");
333
+ },
334
+ drain: (instanceIndex) => {
335
+ if (instanceIndex !== undefined) {
336
+ const instanceId = createInstanceId("workerPool", name, instanceIndex);
337
+ const stub = getStub(binding, instanceId);
338
+ return narrowResponseEffect(stub.call({
339
+ type: "workerPool",
340
+ action: "drain",
341
+ name,
342
+ instanceIndex,
343
+ }), "workerPool.drain");
344
+ }
345
+ // Drain all instances
346
+ return Effect.gen(function* () {
347
+ const results = yield* Effect.all(Array.from({ length: concurrency }, (_, i) => {
348
+ const instanceId = createInstanceId("workerPool", name, i);
349
+ const stub = getStub(binding, instanceId);
350
+ return narrowResponseEffect(stub.call({
351
+ type: "workerPool",
352
+ action: "drain",
353
+ name,
354
+ instanceIndex: i,
355
+ }), "workerPool.drain");
356
+ }), { concurrency: "unbounded" });
357
+ return {
358
+ _type: "workerPool.drain",
359
+ drained: results.every((r) => r.drained),
360
+ };
361
+ });
362
+ },
363
+ };
364
+ return client;
365
+ },
366
+ // -------------------------------------------------------------------------
367
+ // Task Client
368
+ // -------------------------------------------------------------------------
369
+ task: (name) => {
370
+ const client = {
371
+ send: ({ id, event }) => {
372
+ const instanceId = createInstanceId("task", name, id);
373
+ const stub = getStub(binding, instanceId);
374
+ return narrowResponseEffect(stub.call({
375
+ type: "task",
376
+ action: "send",
377
+ name,
378
+ id,
379
+ event,
380
+ }), "task.send");
381
+ },
382
+ trigger: (id) => {
383
+ const instanceId = createInstanceId("task", name, id);
384
+ const stub = getStub(binding, instanceId);
385
+ return narrowResponseEffect(stub.call({
386
+ type: "task",
387
+ action: "trigger",
388
+ name,
389
+ id,
390
+ }), "task.trigger");
391
+ },
392
+ terminate: (id) => {
393
+ const instanceId = createInstanceId("task", name, id);
394
+ const stub = getStub(binding, instanceId);
395
+ return narrowResponseEffect(stub.call({
396
+ type: "task",
397
+ action: "terminate",
398
+ name,
399
+ id,
400
+ }), "task.terminate");
401
+ },
402
+ status: (id) => {
403
+ const instanceId = createInstanceId("task", name, id);
404
+ const stub = getStub(binding, instanceId);
405
+ return narrowResponseEffect(stub.call({
406
+ type: "task",
407
+ action: "status",
408
+ name,
409
+ id,
410
+ }), "task.status");
411
+ },
412
+ getState: (id) => {
413
+ const instanceId = createInstanceId("task", name, id);
414
+ const stub = getStub(binding, instanceId);
415
+ return narrowResponseEffect(stub.call({
416
+ type: "task",
417
+ action: "getState",
418
+ name,
419
+ id,
420
+ }), "task.getState");
421
+ },
422
+ };
423
+ return client;
424
+ },
425
+ };
426
+ }
427
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { createJobsClient } from "./client";
2
+ export { narrowResponse, narrowResponseAsync, narrowResponseEffect, isResponseType, UnexpectedResponseError, jobCallError, type JobCallError, type ClientError, type ResponseTypeMap, type ResponseType, } from "./response";
3
+ export type { ContinuousClient, DebounceClient, WorkerPoolClient, WorkerPoolAggregatedStatus, JobsClient, JobsClientFactory, ContinuousKeys, DebounceKeys, WorkerPoolKeys, ContinuousStateType, DebounceEventType, DebounceStateType, WorkerPoolEventType, } from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAEV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAE1B,UAAU,EACV,iBAAiB,EAEjB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ // packages/jobs/src/client/index.ts
2
+ export { createJobsClient } from "./client";
3
+ export { narrowResponse, narrowResponseAsync, narrowResponseEffect, isResponseType, UnexpectedResponseError, jobCallError, } from "./response";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,YAAY,GAKb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { Effect } from "effect";
2
+ import type { JobResponse, ContinuousStartResponse, ContinuousTerminateResponse, ContinuousTriggerResponse, ContinuousStatusResponse, ContinuousGetStateResponse, DebounceAddResponse, DebounceFlushResponse, DebounceClearResponse, DebounceStatusResponse, DebounceGetStateResponse, WorkerPoolEnqueueResponse, WorkerPoolPauseResponse, WorkerPoolResumeResponse, WorkerPoolCancelResponse, WorkerPoolStatusResponse, WorkerPoolDrainResponse, TaskSendResponse, TaskTriggerResponse, TaskTerminateResponse, TaskStatusResponse, TaskGetStateResponse } from "../runtime/types";
3
+ /**
4
+ * Error when DO call fails.
5
+ */
6
+ export interface JobCallError {
7
+ readonly _tag: "JobCallError";
8
+ readonly cause: unknown;
9
+ }
10
+ /**
11
+ * Create a JobCallError.
12
+ */
13
+ export declare const jobCallError: (cause: unknown) => JobCallError;
14
+ /**
15
+ * Maps response _type discriminants to their full types.
16
+ */
17
+ export interface ResponseTypeMap {
18
+ "continuous.start": ContinuousStartResponse;
19
+ "continuous.terminate": ContinuousTerminateResponse;
20
+ "continuous.trigger": ContinuousTriggerResponse;
21
+ "continuous.status": ContinuousStatusResponse;
22
+ "continuous.getState": ContinuousGetStateResponse;
23
+ "debounce.add": DebounceAddResponse;
24
+ "debounce.flush": DebounceFlushResponse;
25
+ "debounce.clear": DebounceClearResponse;
26
+ "debounce.status": DebounceStatusResponse;
27
+ "debounce.getState": DebounceGetStateResponse;
28
+ "workerPool.enqueue": WorkerPoolEnqueueResponse;
29
+ "workerPool.pause": WorkerPoolPauseResponse;
30
+ "workerPool.resume": WorkerPoolResumeResponse;
31
+ "workerPool.cancel": WorkerPoolCancelResponse;
32
+ "workerPool.status": WorkerPoolStatusResponse;
33
+ "workerPool.drain": WorkerPoolDrainResponse;
34
+ "task.send": TaskSendResponse;
35
+ "task.trigger": TaskTriggerResponse;
36
+ "task.terminate": TaskTerminateResponse;
37
+ "task.status": TaskStatusResponse;
38
+ "task.getState": TaskGetStateResponse;
39
+ }
40
+ /**
41
+ * All valid response type discriminants.
42
+ */
43
+ export type ResponseType = keyof ResponseTypeMap;
44
+ /**
45
+ * Runtime error for unexpected response types.
46
+ */
47
+ export declare class UnexpectedResponseError extends Error {
48
+ readonly _tag = "UnexpectedResponseError";
49
+ readonly expected: ResponseType;
50
+ readonly actual: string;
51
+ constructor(expected: ResponseType, actual: string);
52
+ }
53
+ /**
54
+ * Type guard to check if a response has a specific _type.
55
+ */
56
+ export declare function isResponseType<T extends ResponseType>(response: JobResponse, expectedType: T): response is ResponseTypeMap[T];
57
+ /**
58
+ * Narrow a response to a specific type with runtime validation.
59
+ *
60
+ * This provides both compile-time type safety AND runtime validation,
61
+ * unlike raw type casts which only provide compile-time types.
62
+ *
63
+ * @throws UnexpectedResponseError if the response type doesn't match
64
+ */
65
+ export declare function narrowResponse<T extends ResponseType>(response: JobResponse, expectedType: T): ResponseTypeMap[T];
66
+ /**
67
+ * Narrow a Promise<JobResponse> to a specific type.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const response = await narrowResponseAsync(
72
+ * stub.call({ type: "continuous", action: "start", ... }),
73
+ * "continuous.start"
74
+ * );
75
+ * // response is typed as ContinuousStartResponse
76
+ * ```
77
+ */
78
+ export declare function narrowResponseAsync<T extends ResponseType>(promise: Promise<JobResponse>, expectedType: T): Promise<ResponseTypeMap[T]>;
79
+ /**
80
+ * Combined error type for client operations.
81
+ */
82
+ export type ClientError = JobCallError | UnexpectedResponseError;
83
+ /**
84
+ * Narrow a Promise<JobResponse> to a specific type, returning an Effect.
85
+ *
86
+ * This is the Effect-based version that properly handles errors and can be used
87
+ * with Effect.gen and yield*.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const response = yield* narrowResponseEffect(
92
+ * stub.call({ type: "continuous", action: "start", ... }),
93
+ * "continuous.start"
94
+ * );
95
+ * // response is typed as ContinuousStartResponse
96
+ * ```
97
+ */
98
+ export declare function narrowResponseEffect<T extends ResponseType>(promise: Promise<JobResponse>, expectedType: T): Effect.Effect<ResponseTypeMap[T], ClientError>;
99
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/client/response.ts"],"names":[],"mappings":"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"}