alchemy 2.0.0-beta.21 → 2.0.0-beta.23
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.
- package/bin/alchemy.js +3 -3
- package/bin/alchemy.js.map +1 -1
- package/bin/commands/logs.ts +1 -1
- package/bin/commands/tail.ts +1 -1
- package/lib/AWS/Lambda/Function.d.ts.map +1 -1
- package/lib/AWS/Lambda/Function.js +25 -21
- package/lib/AWS/Lambda/Function.js.map +1 -1
- package/lib/AWS/Lambda/HttpServer.d.ts.map +1 -1
- package/lib/AWS/Lambda/HttpServer.js +3 -1
- package/lib/AWS/Lambda/HttpServer.js.map +1 -1
- package/lib/Cloudflare/Container/Container.d.ts +55 -2
- package/lib/Cloudflare/Container/Container.d.ts.map +1 -1
- package/lib/Cloudflare/Container/Container.js +55 -2
- package/lib/Cloudflare/Container/Container.js.map +1 -1
- package/lib/Cloudflare/D1/D1Clone.d.ts +13 -0
- package/lib/Cloudflare/D1/D1Clone.d.ts.map +1 -0
- package/lib/Cloudflare/D1/D1Clone.js +31 -0
- package/lib/Cloudflare/D1/D1Clone.js.map +1 -0
- package/lib/Cloudflare/D1/D1Database.d.ts +150 -5
- package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
- package/lib/Cloudflare/D1/D1Database.js +253 -0
- package/lib/Cloudflare/D1/D1Database.js.map +1 -1
- package/lib/Cloudflare/D1/D1Export.d.ts +24 -0
- package/lib/Cloudflare/D1/D1Export.d.ts.map +1 -0
- package/lib/Cloudflare/D1/D1Export.js +34 -0
- package/lib/Cloudflare/D1/D1Export.js.map +1 -0
- package/lib/Cloudflare/D1/D1Import.d.ts +21 -0
- package/lib/Cloudflare/D1/D1Import.d.ts.map +1 -0
- package/lib/Cloudflare/D1/D1Import.js +87 -0
- package/lib/Cloudflare/D1/D1Import.js.map +1 -0
- package/lib/Cloudflare/D1/D1Migrations.d.ts +16 -0
- package/lib/Cloudflare/D1/D1Migrations.d.ts.map +1 -0
- package/lib/Cloudflare/D1/D1Migrations.js +110 -0
- package/lib/Cloudflare/D1/D1Migrations.js.map +1 -0
- package/lib/Cloudflare/D1/D1SqlFile.d.ts +20 -0
- package/lib/Cloudflare/D1/D1SqlFile.d.ts.map +1 -0
- package/lib/Cloudflare/D1/D1SqlFile.js +46 -0
- package/lib/Cloudflare/D1/D1SqlFile.js.map +1 -0
- package/lib/Cloudflare/Providers.d.ts +1 -1
- package/lib/Cloudflare/Providers.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/Queue.d.ts +34 -4
- package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/Queue.js +34 -4
- package/lib/Cloudflare/Queue/Queue.js.map +1 -1
- package/lib/Cloudflare/Queue/QueueBinding.d.ts +33 -0
- package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -1
- package/lib/Cloudflare/Queue/QueueBinding.js +33 -0
- package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts +103 -6
- package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/DurableObjectNamespace.js +103 -6
- package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
- package/lib/Cloudflare/Workers/Workflow.d.ts +94 -0
- package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
- package/lib/Cloudflare/Workers/Workflow.js +94 -0
- package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
- package/lib/Platform.js +1 -1
- package/lib/Platform.js.map +1 -1
- package/package.json +1 -1
- package/src/AWS/Lambda/Function.ts +30 -24
- package/src/AWS/Lambda/HttpServer.ts +3 -1
- package/src/Cloudflare/Container/Container.ts +55 -2
- package/src/Cloudflare/D1/D1Clone.ts +42 -0
- package/src/Cloudflare/D1/D1Database.ts +386 -3
- package/src/Cloudflare/D1/D1Export.ts +66 -0
- package/src/Cloudflare/D1/D1Import.ts +156 -0
- package/src/Cloudflare/D1/D1Migrations.ts +229 -0
- package/src/Cloudflare/D1/D1SqlFile.ts +55 -0
- package/src/Cloudflare/Queue/Queue.ts +34 -4
- package/src/Cloudflare/Queue/QueueBinding.ts +33 -0
- package/src/Cloudflare/Workers/DurableObjectNamespace.ts +103 -6
- package/src/Cloudflare/Workers/Workflow.ts +94 -0
- package/src/Platform.ts +1 -1
|
@@ -209,6 +209,51 @@ export declare class DurableObjectNamespaceScope extends DurableObjectNamespaceS
|
|
|
209
209
|
* };
|
|
210
210
|
* ```
|
|
211
211
|
*
|
|
212
|
+
* @section Returning Streams from RPC
|
|
213
|
+
* RPC methods can return an Effect `Stream` and the caller will see
|
|
214
|
+
* the chunks as they're produced. Combine with `Stream.schedule` to
|
|
215
|
+
* pace emission, or with `Stream.fromQueue` to bridge an inbound
|
|
216
|
+
* subscription.
|
|
217
|
+
*
|
|
218
|
+
* @example Streaming sequential numbers
|
|
219
|
+
* ```typescript
|
|
220
|
+
* import * as Schedule from "effect/Schedule";
|
|
221
|
+
* import * as Stream from "effect/Stream";
|
|
222
|
+
*
|
|
223
|
+
* return {
|
|
224
|
+
* tick: (n: number) =>
|
|
225
|
+
* Stream.iterate(0, (i) => i + 1).pipe(
|
|
226
|
+
* Stream.take(n),
|
|
227
|
+
* Stream.schedule(Schedule.spaced("100 millis")),
|
|
228
|
+
* ),
|
|
229
|
+
* };
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
232
|
+
* @example Forwarding the stream as a chunked HTTP response
|
|
233
|
+
* ```typescript
|
|
234
|
+
* // in a Worker fetch handler
|
|
235
|
+
* const counter = counters.getByName("tick");
|
|
236
|
+
* const stream = counter.tick(5).pipe(
|
|
237
|
+
* Stream.map((i) => `${i}\n`),
|
|
238
|
+
* Stream.encodeText,
|
|
239
|
+
* );
|
|
240
|
+
* return HttpServerResponse.stream(stream, {
|
|
241
|
+
* headers: { "content-type": "text/plain" },
|
|
242
|
+
* });
|
|
243
|
+
* ```
|
|
244
|
+
*
|
|
245
|
+
* @section Worker → DO HTTP forwarding
|
|
246
|
+
* In addition to RPC methods, the typed stub exposes a `fetch`
|
|
247
|
+
* method that forwards an `HttpServerRequest` straight to the DO.
|
|
248
|
+
* The DO's own `fetch` Effect produces the response — useful for
|
|
249
|
+
* WebSocket upgrades and other request-shaped interactions.
|
|
250
|
+
*
|
|
251
|
+
* @example Forwarding an HTTP request to a DO
|
|
252
|
+
* ```typescript
|
|
253
|
+
* const room = rooms.getByName(roomId);
|
|
254
|
+
* return yield* room.fetch(request);
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
212
257
|
* @section Accessing Instance State
|
|
213
258
|
* Each Durable Object instance has its own transactional key-value
|
|
214
259
|
* storage via `Cloudflare.DurableObjectState`. Use `storage.get` and
|
|
@@ -264,14 +309,66 @@ export declare class DurableObjectNamespaceScope extends DurableObjectNamespaceS
|
|
|
264
309
|
* ```
|
|
265
310
|
*
|
|
266
311
|
* @example Recovering sessions after hibernation
|
|
312
|
+
* Place the rehydration loop **inside the inner `Effect.gen`** so
|
|
313
|
+
* it runs every time the DO instance is reconstructed (including
|
|
314
|
+
* after Cloudflare wakes the DO from hibernation).
|
|
315
|
+
*
|
|
267
316
|
* ```typescript
|
|
268
|
-
*
|
|
269
|
-
*
|
|
317
|
+
* return Effect.gen(function* () {
|
|
318
|
+
* const state = yield* Cloudflare.DurableObjectState;
|
|
319
|
+
* const sessions = new Map<string, Cloudflare.DurableWebSocket>();
|
|
320
|
+
*
|
|
321
|
+
* // Rehydrate the in-memory session map after hibernation.
|
|
322
|
+
* for (const socket of yield* state.getWebSockets()) {
|
|
323
|
+
* const data = socket.deserializeAttachment<{ id: string }>();
|
|
324
|
+
* if (data) sessions.set(data.id, socket);
|
|
325
|
+
* }
|
|
270
326
|
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
327
|
+
* return {
|
|
328
|
+
* fetch: Effect.gen(function* () {
|
|
329
|
+
* const [response, socket] = yield* Cloudflare.upgrade();
|
|
330
|
+
* const id = crypto.randomUUID();
|
|
331
|
+
* socket.serializeAttachment({ id });
|
|
332
|
+
* sessions.set(id, socket);
|
|
333
|
+
* return response;
|
|
334
|
+
* }),
|
|
335
|
+
* webSocketMessage: Effect.fnUntraced(function* (socket, message) {
|
|
336
|
+
* const text =
|
|
337
|
+
* typeof message === "string" ? message : new TextDecoder().decode(message);
|
|
338
|
+
* for (const peer of sessions.values()) {
|
|
339
|
+
* yield* peer.send(text);
|
|
340
|
+
* }
|
|
341
|
+
* }),
|
|
342
|
+
* };
|
|
343
|
+
* });
|
|
344
|
+
* ```
|
|
345
|
+
*
|
|
346
|
+
* @section Scheduled Alarms
|
|
347
|
+
* Each Durable Object can have a single alarm timestamp. Alchemy
|
|
348
|
+
* layers a small SQLite-backed scheduler on top via
|
|
349
|
+
* `Cloudflare.scheduleEvent` and `Cloudflare.processScheduledEvents`,
|
|
350
|
+
* so you can register many named events with arbitrary payloads and
|
|
351
|
+
* fire them from a single `alarm` handler.
|
|
352
|
+
*
|
|
353
|
+
* @example Scheduling and processing events
|
|
354
|
+
* ```typescript
|
|
355
|
+
* // schedule from a request or message handler
|
|
356
|
+
* yield* Cloudflare.scheduleEvent(
|
|
357
|
+
* "reminder-1",
|
|
358
|
+
* new Date(Date.now() + 60_000),
|
|
359
|
+
* { message: "your meeting starts in a minute" },
|
|
360
|
+
* );
|
|
361
|
+
*
|
|
362
|
+
* return {
|
|
363
|
+
* alarm: () =>
|
|
364
|
+
* Effect.gen(function* () {
|
|
365
|
+
* const fired = yield* Cloudflare.processScheduledEvents;
|
|
366
|
+
* for (const event of fired) {
|
|
367
|
+
* const payload = event.payload as { message: string };
|
|
368
|
+
* // dispatch / broadcast / persist...
|
|
369
|
+
* }
|
|
370
|
+
* }),
|
|
371
|
+
* };
|
|
275
372
|
* ```
|
|
276
373
|
*
|
|
277
374
|
* @section Using from a Worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObjectNamespace.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectNamespace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DurableObjectNamespace.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectNamespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,6 +163,51 @@ export class DurableObjectNamespaceScope extends Context.Service()("Cloudflare.D
|
|
|
163
163
|
* };
|
|
164
164
|
* ```
|
|
165
165
|
*
|
|
166
|
+
* @section Returning Streams from RPC
|
|
167
|
+
* RPC methods can return an Effect `Stream` and the caller will see
|
|
168
|
+
* the chunks as they're produced. Combine with `Stream.schedule` to
|
|
169
|
+
* pace emission, or with `Stream.fromQueue` to bridge an inbound
|
|
170
|
+
* subscription.
|
|
171
|
+
*
|
|
172
|
+
* @example Streaming sequential numbers
|
|
173
|
+
* ```typescript
|
|
174
|
+
* import * as Schedule from "effect/Schedule";
|
|
175
|
+
* import * as Stream from "effect/Stream";
|
|
176
|
+
*
|
|
177
|
+
* return {
|
|
178
|
+
* tick: (n: number) =>
|
|
179
|
+
* Stream.iterate(0, (i) => i + 1).pipe(
|
|
180
|
+
* Stream.take(n),
|
|
181
|
+
* Stream.schedule(Schedule.spaced("100 millis")),
|
|
182
|
+
* ),
|
|
183
|
+
* };
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @example Forwarding the stream as a chunked HTTP response
|
|
187
|
+
* ```typescript
|
|
188
|
+
* // in a Worker fetch handler
|
|
189
|
+
* const counter = counters.getByName("tick");
|
|
190
|
+
* const stream = counter.tick(5).pipe(
|
|
191
|
+
* Stream.map((i) => `${i}\n`),
|
|
192
|
+
* Stream.encodeText,
|
|
193
|
+
* );
|
|
194
|
+
* return HttpServerResponse.stream(stream, {
|
|
195
|
+
* headers: { "content-type": "text/plain" },
|
|
196
|
+
* });
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @section Worker → DO HTTP forwarding
|
|
200
|
+
* In addition to RPC methods, the typed stub exposes a `fetch`
|
|
201
|
+
* method that forwards an `HttpServerRequest` straight to the DO.
|
|
202
|
+
* The DO's own `fetch` Effect produces the response — useful for
|
|
203
|
+
* WebSocket upgrades and other request-shaped interactions.
|
|
204
|
+
*
|
|
205
|
+
* @example Forwarding an HTTP request to a DO
|
|
206
|
+
* ```typescript
|
|
207
|
+
* const room = rooms.getByName(roomId);
|
|
208
|
+
* return yield* room.fetch(request);
|
|
209
|
+
* ```
|
|
210
|
+
*
|
|
166
211
|
* @section Accessing Instance State
|
|
167
212
|
* Each Durable Object instance has its own transactional key-value
|
|
168
213
|
* storage via `Cloudflare.DurableObjectState`. Use `storage.get` and
|
|
@@ -218,14 +263,66 @@ export class DurableObjectNamespaceScope extends Context.Service()("Cloudflare.D
|
|
|
218
263
|
* ```
|
|
219
264
|
*
|
|
220
265
|
* @example Recovering sessions after hibernation
|
|
266
|
+
* Place the rehydration loop **inside the inner `Effect.gen`** so
|
|
267
|
+
* it runs every time the DO instance is reconstructed (including
|
|
268
|
+
* after Cloudflare wakes the DO from hibernation).
|
|
269
|
+
*
|
|
221
270
|
* ```typescript
|
|
222
|
-
*
|
|
223
|
-
*
|
|
271
|
+
* return Effect.gen(function* () {
|
|
272
|
+
* const state = yield* Cloudflare.DurableObjectState;
|
|
273
|
+
* const sessions = new Map<string, Cloudflare.DurableWebSocket>();
|
|
274
|
+
*
|
|
275
|
+
* // Rehydrate the in-memory session map after hibernation.
|
|
276
|
+
* for (const socket of yield* state.getWebSockets()) {
|
|
277
|
+
* const data = socket.deserializeAttachment<{ id: string }>();
|
|
278
|
+
* if (data) sessions.set(data.id, socket);
|
|
279
|
+
* }
|
|
224
280
|
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
281
|
+
* return {
|
|
282
|
+
* fetch: Effect.gen(function* () {
|
|
283
|
+
* const [response, socket] = yield* Cloudflare.upgrade();
|
|
284
|
+
* const id = crypto.randomUUID();
|
|
285
|
+
* socket.serializeAttachment({ id });
|
|
286
|
+
* sessions.set(id, socket);
|
|
287
|
+
* return response;
|
|
288
|
+
* }),
|
|
289
|
+
* webSocketMessage: Effect.fnUntraced(function* (socket, message) {
|
|
290
|
+
* const text =
|
|
291
|
+
* typeof message === "string" ? message : new TextDecoder().decode(message);
|
|
292
|
+
* for (const peer of sessions.values()) {
|
|
293
|
+
* yield* peer.send(text);
|
|
294
|
+
* }
|
|
295
|
+
* }),
|
|
296
|
+
* };
|
|
297
|
+
* });
|
|
298
|
+
* ```
|
|
299
|
+
*
|
|
300
|
+
* @section Scheduled Alarms
|
|
301
|
+
* Each Durable Object can have a single alarm timestamp. Alchemy
|
|
302
|
+
* layers a small SQLite-backed scheduler on top via
|
|
303
|
+
* `Cloudflare.scheduleEvent` and `Cloudflare.processScheduledEvents`,
|
|
304
|
+
* so you can register many named events with arbitrary payloads and
|
|
305
|
+
* fire them from a single `alarm` handler.
|
|
306
|
+
*
|
|
307
|
+
* @example Scheduling and processing events
|
|
308
|
+
* ```typescript
|
|
309
|
+
* // schedule from a request or message handler
|
|
310
|
+
* yield* Cloudflare.scheduleEvent(
|
|
311
|
+
* "reminder-1",
|
|
312
|
+
* new Date(Date.now() + 60_000),
|
|
313
|
+
* { message: "your meeting starts in a minute" },
|
|
314
|
+
* );
|
|
315
|
+
*
|
|
316
|
+
* return {
|
|
317
|
+
* alarm: () =>
|
|
318
|
+
* Effect.gen(function* () {
|
|
319
|
+
* const fired = yield* Cloudflare.processScheduledEvents;
|
|
320
|
+
* for (const event of fired) {
|
|
321
|
+
* const payload = event.payload as { message: string };
|
|
322
|
+
* // dispatch / broadcast / persist...
|
|
323
|
+
* }
|
|
324
|
+
* }),
|
|
325
|
+
* };
|
|
229
326
|
* ```
|
|
230
327
|
*
|
|
231
328
|
* @section Using from a Worker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurableObjectNamespace.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectNamespace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,iBAAiB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAyB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAU7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAc,EACgB,EAAE,CAChC,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAa,CAAC,IAAI,KAAK,eAAe,CAAC;AAU1C,MAAM,MAAM,GAAG,mCAAmC,CAAC;AAEnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,KAAc,EACuB,EAAE,CACvC,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACf,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;AAwGxB,MAAM,OAAO,2BAA4B,SAAQ,OAAO,CAAC,OAAO,EAG7D,CAAC,mCAAmC,CAAC;CAAG;AAE3C
|
|
1
|
+
{"version":3,"file":"DurableObjectNamespace.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/DurableObjectNamespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -170,6 +170,36 @@ export declare class WorkflowScope extends WorkflowScope_base {
|
|
|
170
170
|
* yield* Cloudflare.sleep("cooldown", "30 seconds");
|
|
171
171
|
* ```
|
|
172
172
|
*
|
|
173
|
+
* @example Accessing env bindings inside a step
|
|
174
|
+
* `Cloudflare.WorkerEnvironment` is the same service available
|
|
175
|
+
* inside a Worker — it gives you typed access to env bindings (KV,
|
|
176
|
+
* R2, etc.) from inside a workflow body. Wrap any side-effecting
|
|
177
|
+
* call in `task` so the result is persisted across replays.
|
|
178
|
+
*
|
|
179
|
+
* ```typescript
|
|
180
|
+
* Effect.gen(function* () {
|
|
181
|
+
* const env = yield* Cloudflare.WorkerEnvironment;
|
|
182
|
+
* const event = yield* Cloudflare.WorkflowEvent;
|
|
183
|
+
* const { roomId, message } = event.payload as {
|
|
184
|
+
* roomId: string;
|
|
185
|
+
* message: string;
|
|
186
|
+
* };
|
|
187
|
+
*
|
|
188
|
+
* const stored = yield* Cloudflare.task(
|
|
189
|
+
* "kv-roundtrip",
|
|
190
|
+
* Effect.tryPromise({
|
|
191
|
+
* try: async () => {
|
|
192
|
+
* await env.KV.put(`workflow:${roomId}`, message);
|
|
193
|
+
* return await env.KV.get(`workflow:${roomId}`);
|
|
194
|
+
* },
|
|
195
|
+
* catch: (cause) =>
|
|
196
|
+
* cause instanceof Error ? cause : new Error(String(cause)),
|
|
197
|
+
* }).pipe(Effect.orDie),
|
|
198
|
+
* );
|
|
199
|
+
* return stored;
|
|
200
|
+
* });
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
173
203
|
* @section Starting and Monitoring Instances
|
|
174
204
|
* @example Creating an instance from a Worker
|
|
175
205
|
* ```typescript
|
|
@@ -183,6 +213,70 @@ export declare class WorkflowScope extends WorkflowScope_base {
|
|
|
183
213
|
* const handle = yield* workflow.get(instanceId);
|
|
184
214
|
* const status = yield* handle.status();
|
|
185
215
|
* ```
|
|
216
|
+
*
|
|
217
|
+
* @section Triggering from a Worker
|
|
218
|
+
* Wire the workflow into HTTP routes so callers can fire instances
|
|
219
|
+
* and poll for completion.
|
|
220
|
+
*
|
|
221
|
+
* @example Workflow start + status routes
|
|
222
|
+
* ```typescript
|
|
223
|
+
* // src/worker.ts
|
|
224
|
+
* const notifier = yield* MyWorkflow;
|
|
225
|
+
*
|
|
226
|
+
* return {
|
|
227
|
+
* fetch: Effect.gen(function* () {
|
|
228
|
+
* const request = yield* HttpServerRequest;
|
|
229
|
+
*
|
|
230
|
+
* if (request.url.startsWith("/workflow/start/")) {
|
|
231
|
+
* const id = request.url.split("/").pop()!;
|
|
232
|
+
* const instance = yield* notifier.create({ id });
|
|
233
|
+
* return HttpServerResponse.json({ instanceId: instance.id });
|
|
234
|
+
* }
|
|
235
|
+
*
|
|
236
|
+
* if (request.url.startsWith("/workflow/status/")) {
|
|
237
|
+
* const id = request.url.split("/").pop()!;
|
|
238
|
+
* const instance = yield* notifier.get(id);
|
|
239
|
+
* return HttpServerResponse.json(yield* instance.status());
|
|
240
|
+
* }
|
|
241
|
+
*
|
|
242
|
+
* return HttpServerResponse.text("Not Found", { status: 404 });
|
|
243
|
+
* }),
|
|
244
|
+
* };
|
|
245
|
+
* ```
|
|
246
|
+
*
|
|
247
|
+
* @section Testing Workflows
|
|
248
|
+
* Workflows run asynchronously, so tests start an instance and
|
|
249
|
+
* poll until it reaches a terminal status. A simple recipe with
|
|
250
|
+
* `alchemy/Test/Bun`:
|
|
251
|
+
*
|
|
252
|
+
* @example Polling for workflow completion
|
|
253
|
+
* ```typescript
|
|
254
|
+
* test(
|
|
255
|
+
* "workflow completes",
|
|
256
|
+
* Effect.gen(function* () {
|
|
257
|
+
* const { url } = yield* stack;
|
|
258
|
+
*
|
|
259
|
+
* const start = yield* HttpClient.post(`${url}/workflow/start/x`);
|
|
260
|
+
* const { instanceId } = (yield* start.json) as { instanceId: string };
|
|
261
|
+
*
|
|
262
|
+
* let status: { status: string } | undefined;
|
|
263
|
+
* const deadline = Date.now() + 60_000;
|
|
264
|
+
* while (Date.now() < deadline) {
|
|
265
|
+
* const res = yield* HttpClient.get(
|
|
266
|
+
* `${url}/workflow/status/${instanceId}`,
|
|
267
|
+
* );
|
|
268
|
+
* status = (yield* res.json) as { status: string };
|
|
269
|
+
* if (status.status === "complete" || status.status === "errored") {
|
|
270
|
+
* break;
|
|
271
|
+
* }
|
|
272
|
+
* yield* Effect.sleep("2 seconds");
|
|
273
|
+
* }
|
|
274
|
+
*
|
|
275
|
+
* expect(status?.status).toBe("complete");
|
|
276
|
+
* }),
|
|
277
|
+
* { timeout: 120_000 },
|
|
278
|
+
* );
|
|
279
|
+
* ```
|
|
186
280
|
*/
|
|
187
281
|
export declare const Workflow: WorkflowClass;
|
|
188
282
|
export interface WorkflowResourceProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Workflow.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,6 +104,36 @@ export class WorkflowScope extends Context.Service()("Cloudflare.Workflow") {
|
|
|
104
104
|
* yield* Cloudflare.sleep("cooldown", "30 seconds");
|
|
105
105
|
* ```
|
|
106
106
|
*
|
|
107
|
+
* @example Accessing env bindings inside a step
|
|
108
|
+
* `Cloudflare.WorkerEnvironment` is the same service available
|
|
109
|
+
* inside a Worker — it gives you typed access to env bindings (KV,
|
|
110
|
+
* R2, etc.) from inside a workflow body. Wrap any side-effecting
|
|
111
|
+
* call in `task` so the result is persisted across replays.
|
|
112
|
+
*
|
|
113
|
+
* ```typescript
|
|
114
|
+
* Effect.gen(function* () {
|
|
115
|
+
* const env = yield* Cloudflare.WorkerEnvironment;
|
|
116
|
+
* const event = yield* Cloudflare.WorkflowEvent;
|
|
117
|
+
* const { roomId, message } = event.payload as {
|
|
118
|
+
* roomId: string;
|
|
119
|
+
* message: string;
|
|
120
|
+
* };
|
|
121
|
+
*
|
|
122
|
+
* const stored = yield* Cloudflare.task(
|
|
123
|
+
* "kv-roundtrip",
|
|
124
|
+
* Effect.tryPromise({
|
|
125
|
+
* try: async () => {
|
|
126
|
+
* await env.KV.put(`workflow:${roomId}`, message);
|
|
127
|
+
* return await env.KV.get(`workflow:${roomId}`);
|
|
128
|
+
* },
|
|
129
|
+
* catch: (cause) =>
|
|
130
|
+
* cause instanceof Error ? cause : new Error(String(cause)),
|
|
131
|
+
* }).pipe(Effect.orDie),
|
|
132
|
+
* );
|
|
133
|
+
* return stored;
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
107
137
|
* @section Starting and Monitoring Instances
|
|
108
138
|
* @example Creating an instance from a Worker
|
|
109
139
|
* ```typescript
|
|
@@ -117,6 +147,70 @@ export class WorkflowScope extends Context.Service()("Cloudflare.Workflow") {
|
|
|
117
147
|
* const handle = yield* workflow.get(instanceId);
|
|
118
148
|
* const status = yield* handle.status();
|
|
119
149
|
* ```
|
|
150
|
+
*
|
|
151
|
+
* @section Triggering from a Worker
|
|
152
|
+
* Wire the workflow into HTTP routes so callers can fire instances
|
|
153
|
+
* and poll for completion.
|
|
154
|
+
*
|
|
155
|
+
* @example Workflow start + status routes
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // src/worker.ts
|
|
158
|
+
* const notifier = yield* MyWorkflow;
|
|
159
|
+
*
|
|
160
|
+
* return {
|
|
161
|
+
* fetch: Effect.gen(function* () {
|
|
162
|
+
* const request = yield* HttpServerRequest;
|
|
163
|
+
*
|
|
164
|
+
* if (request.url.startsWith("/workflow/start/")) {
|
|
165
|
+
* const id = request.url.split("/").pop()!;
|
|
166
|
+
* const instance = yield* notifier.create({ id });
|
|
167
|
+
* return HttpServerResponse.json({ instanceId: instance.id });
|
|
168
|
+
* }
|
|
169
|
+
*
|
|
170
|
+
* if (request.url.startsWith("/workflow/status/")) {
|
|
171
|
+
* const id = request.url.split("/").pop()!;
|
|
172
|
+
* const instance = yield* notifier.get(id);
|
|
173
|
+
* return HttpServerResponse.json(yield* instance.status());
|
|
174
|
+
* }
|
|
175
|
+
*
|
|
176
|
+
* return HttpServerResponse.text("Not Found", { status: 404 });
|
|
177
|
+
* }),
|
|
178
|
+
* };
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @section Testing Workflows
|
|
182
|
+
* Workflows run asynchronously, so tests start an instance and
|
|
183
|
+
* poll until it reaches a terminal status. A simple recipe with
|
|
184
|
+
* `alchemy/Test/Bun`:
|
|
185
|
+
*
|
|
186
|
+
* @example Polling for workflow completion
|
|
187
|
+
* ```typescript
|
|
188
|
+
* test(
|
|
189
|
+
* "workflow completes",
|
|
190
|
+
* Effect.gen(function* () {
|
|
191
|
+
* const { url } = yield* stack;
|
|
192
|
+
*
|
|
193
|
+
* const start = yield* HttpClient.post(`${url}/workflow/start/x`);
|
|
194
|
+
* const { instanceId } = (yield* start.json) as { instanceId: string };
|
|
195
|
+
*
|
|
196
|
+
* let status: { status: string } | undefined;
|
|
197
|
+
* const deadline = Date.now() + 60_000;
|
|
198
|
+
* while (Date.now() < deadline) {
|
|
199
|
+
* const res = yield* HttpClient.get(
|
|
200
|
+
* `${url}/workflow/status/${instanceId}`,
|
|
201
|
+
* );
|
|
202
|
+
* status = (yield* res.json) as { status: string };
|
|
203
|
+
* if (status.status === "complete" || status.status === "errored") {
|
|
204
|
+
* break;
|
|
205
|
+
* }
|
|
206
|
+
* yield* Effect.sleep("2 seconds");
|
|
207
|
+
* }
|
|
208
|
+
*
|
|
209
|
+
* expect(status?.status).toBe("complete");
|
|
210
|
+
* }),
|
|
211
|
+
* { timeout: 120_000 },
|
|
212
|
+
* );
|
|
213
|
+
* ```
|
|
120
214
|
*/
|
|
121
215
|
export const Workflow = taggedFunction(WorkflowScope, ((...args) => args.length === 0
|
|
122
216
|
? Workflow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Workflow.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,uCAAuC,CAAC;AACnE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAG7E,MAAM,cAAc,GAAmB,qBAAqB,CAAC;AAE7D,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAO/C,CAAC,0BAA0B,CAAC;CAAG;AAElC;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,OAAO,EAO9C,CAAC,yBAAyB,CAAC;CAAG;AAEjC,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,IAAY,EACZ,MAAwB,EACe,EAAE,CACzC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAY,EACZ,QAAyB,EACiB,EAAE,CAC5C,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EACpD,MAAM,CAAC,KAAK,CACb,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAY,EACZ,SAAwB,EACkB,EAAE,CAC5C,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAC1D,MAAM,CAAC,KAAK,CACb,CAAC;AAuCJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE,CAC1E,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,IAAI,KAAK;IACd,KAAa,CAAC,IAAI,KAAK,UAAU,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAEjC,EAMC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC;AAsDjC,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAG/C,CAAC,qBAAqB,CAAC;CAAG;AAE7B
|
|
1
|
+
{"version":3,"file":"Workflow.js","sourceRoot":"","sources":["../../../src/Cloudflare/Workers/Workflow.ts"],"names":[],"mappings":"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"}
|
package/lib/Platform.js
CHANGED
|
@@ -95,7 +95,7 @@ export const Platform = (type, hooks, methods) => {
|
|
|
95
95
|
.onCreate?.(resource, props)
|
|
96
96
|
.pipe(Effect.map(() => resource)) ??
|
|
97
97
|
Effect.succeed(resource))), executionContext);
|
|
98
|
-
yield* impl.pipe(Effect.flatMap((impl) => impl
|
|
98
|
+
yield* impl.pipe(Effect.flatMap((impl) => impl?.fetch
|
|
99
99
|
? (executionContext.serve?.(impl.fetch) ??
|
|
100
100
|
Effect.die("No serve handler"))
|
|
101
101
|
: Effect.void), Effect.provide(Layer.provideMerge(Layer.mergeAll(Layer.succeed(Platform.Platform, executionContext), Layer.succeed(PlatformContext, executionContext), Layer.succeed(ExecutionContext, executionContext), Layer.succeed(resource.Self, instance), Layer.succeed(Platform.Self, instance), Layer.succeed(Self, instance)), Layer.succeedContext(outerServices))));
|
package/lib/Platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../src/Platform.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../src/Platform.ts"],"names":[],"mappings":"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"}
|