alchemy 2.0.0-beta.22 → 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.
Files changed (47) hide show
  1. package/bin/alchemy.js +3 -3
  2. package/bin/alchemy.js.map +1 -1
  3. package/bin/commands/logs.ts +1 -1
  4. package/bin/commands/tail.ts +1 -1
  5. package/lib/AWS/Lambda/Function.d.ts.map +1 -1
  6. package/lib/AWS/Lambda/Function.js +25 -21
  7. package/lib/AWS/Lambda/Function.js.map +1 -1
  8. package/lib/AWS/Lambda/HttpServer.d.ts.map +1 -1
  9. package/lib/AWS/Lambda/HttpServer.js +3 -1
  10. package/lib/AWS/Lambda/HttpServer.js.map +1 -1
  11. package/lib/Cloudflare/Container/Container.d.ts +55 -2
  12. package/lib/Cloudflare/Container/Container.d.ts.map +1 -1
  13. package/lib/Cloudflare/Container/Container.js +55 -2
  14. package/lib/Cloudflare/Container/Container.js.map +1 -1
  15. package/lib/Cloudflare/D1/D1Export.d.ts.map +1 -1
  16. package/lib/Cloudflare/D1/D1Export.js.map +1 -1
  17. package/lib/Cloudflare/D1/D1SqlFile.d.ts.map +1 -1
  18. package/lib/Cloudflare/D1/D1SqlFile.js.map +1 -1
  19. package/lib/Cloudflare/Queue/Queue.d.ts +34 -4
  20. package/lib/Cloudflare/Queue/Queue.d.ts.map +1 -1
  21. package/lib/Cloudflare/Queue/Queue.js +34 -4
  22. package/lib/Cloudflare/Queue/Queue.js.map +1 -1
  23. package/lib/Cloudflare/Queue/QueueBinding.d.ts +33 -0
  24. package/lib/Cloudflare/Queue/QueueBinding.d.ts.map +1 -1
  25. package/lib/Cloudflare/Queue/QueueBinding.js +33 -0
  26. package/lib/Cloudflare/Queue/QueueBinding.js.map +1 -1
  27. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts +103 -6
  28. package/lib/Cloudflare/Workers/DurableObjectNamespace.d.ts.map +1 -1
  29. package/lib/Cloudflare/Workers/DurableObjectNamespace.js +103 -6
  30. package/lib/Cloudflare/Workers/DurableObjectNamespace.js.map +1 -1
  31. package/lib/Cloudflare/Workers/Workflow.d.ts +94 -0
  32. package/lib/Cloudflare/Workers/Workflow.d.ts.map +1 -1
  33. package/lib/Cloudflare/Workers/Workflow.js +94 -0
  34. package/lib/Cloudflare/Workers/Workflow.js.map +1 -1
  35. package/lib/Platform.js +1 -1
  36. package/lib/Platform.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/AWS/Lambda/Function.ts +30 -24
  39. package/src/AWS/Lambda/HttpServer.ts +3 -1
  40. package/src/Cloudflare/Container/Container.ts +55 -2
  41. package/src/Cloudflare/D1/D1Export.ts +1 -5
  42. package/src/Cloudflare/D1/D1SqlFile.ts +1 -3
  43. package/src/Cloudflare/Queue/Queue.ts +34 -4
  44. package/src/Cloudflare/Queue/QueueBinding.ts +33 -0
  45. package/src/Cloudflare/Workers/DurableObjectNamespace.ts +103 -6
  46. package/src/Cloudflare/Workers/Workflow.ts +94 -0
  47. package/src/Platform.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/Queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/Queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,oCAAoC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAsBjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAQ,kBAAkB,CAAC,CAAC;IACvD,IAAI,EAAE,YAAY,CAAC,IAAI;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE,CAChC,QAAQ,CAAC,MAAM,CACb,KAAK,EACL,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAE5C,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,IAAwB,EAAE,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;YAChC,EAAE;YACF,SAAS,EAAE,EAAE;SACd,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE;YAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBACnD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAW,CAAC;YACxC,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS;gBAC/B,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAW,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;YAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;gBAC/B,SAAS;gBACT,SAAS;aACV,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,gDAAgD;gBAChD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CACjC,CAAC;gBACF,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC9C,OAAO,KAA+C,CAAC;gBACzD,CAAC;gBACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,UAAU,SAAS,yCAAyC,CAC7D,CAAC;YACJ,CAAC,CAAC,CACH,CACF,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAQ;gBACvB,SAAS,EAAE,KAAK,CAAC,SAAU;gBAC3B,SAAS;aACV,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE;YACpD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS;aACV,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAQ;gBACvB,SAAS,EAAE,KAAK,CAAC,SAAU;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACrC,KAAK,CAAC,CAAC,WAAW,CAAC;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YAC7C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC;oBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrB,OAAO,EAAE,KAAK,CAAC,OAAQ;oBACvB,SAAS,EAAE,KAAK,CAAC,SAAU;oBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CAAC,EACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC9C,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YACtE,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC9C,OAAO;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS;iBACV,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -24,6 +24,39 @@ export declare class QueueSendError extends QueueSendError_base<{
24
24
  declare const QueueBinding_base: Binding.Service<QueueBinding, "Cloudflare.Queue", (queue: Queue) => Effect.Effect<QueueSender>> & {
25
25
  bind: (queue: Queue) => Effect.Effect<any, any, any>;
26
26
  };
27
+ /**
28
+ * Binding service that turns a {@link Queue} resource into a typed
29
+ * {@link QueueSender} you can call from a Worker's runtime Effect.
30
+ *
31
+ * @section Sending Messages
32
+ * Bind the queue in the Worker's init phase, then use `send` for
33
+ * single messages or `sendBatch` for many messages in one call.
34
+ * Messages can be any JSON-serializable value.
35
+ *
36
+ * @example Producer route
37
+ * ```typescript
38
+ * const queue = yield* Cloudflare.QueueBinding.bind(Queue);
39
+ *
40
+ * return {
41
+ * fetch: Effect.gen(function* () {
42
+ * yield* queue.send({ text: "hi", sentAt: Date.now() });
43
+ * return HttpServerResponse.empty({ status: 202 });
44
+ * }),
45
+ * };
46
+ * ```
47
+ *
48
+ * @example Sending a batch
49
+ * ```typescript
50
+ * yield* queue.sendBatch([
51
+ * { body: { event: "click", id: 1 } },
52
+ * { body: { event: "click", id: 2 } },
53
+ * { body: "raw text", contentType: "text" },
54
+ * ]);
55
+ * ```
56
+ *
57
+ * Provide {@link QueueBindingLive} in the worker's runtime layer to
58
+ * resolve the underlying Cloudflare queue at request time.
59
+ */
27
60
  export declare class QueueBinding extends QueueBinding_base {
28
61
  }
29
62
  export declare const QueueBindingLive: Layer.Layer<QueueBinding, never, import("../../ExecutionContext.ts").ExecutionContext<import("../../ExecutionContext.ts").BaseExecutionContext> | QueueBindingPolicy>;
@@ -1 +1 @@
1
- {"version":3,"file":"QueueBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueBinding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAClD,IAAI,CACF,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC1D,SAAS,CACP,QAAQ,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC/B,CAAC,GACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;CAC3D;;;;AAID,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;CAAG;2FAIK,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;;;AAF9C,qBAAa,YAAa,SAAQ,iBAGX;CAAG;AAE1B,eAAO,MAAM,gBAAgB,uKAmD5B,CAAC;8GAIQ,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFvC,qBAAa,kBAAmB,SAAQ,uBAGjB;CAAG;AAE1B,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
1
+ {"version":3,"file":"QueueBinding.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueBinding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAY,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAClD,IAAI,CACF,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC1D,SAAS,CACP,QAAQ,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,OAAO,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC/B,CAAC,GACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;CAC3D;;;;AAID,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;CAAG;2FAqCK,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;;;AAnC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,YAAa,SAAQ,iBAGX;CAAG;AAE1B,eAAO,MAAM,gBAAgB,uKAmD5B,CAAC;8GAIQ,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAFvC,qBAAa,kBAAmB,SAAQ,uBAGjB;CAAG;AAE1B,eAAO,MAAM,sBAAsB,+CAkBlC,CAAC"}
@@ -5,6 +5,39 @@ import { isWorker, WorkerEnvironment } from "../Workers/Worker.js";
5
5
  import * as Data from "effect/Data";
6
6
  export class QueueSendError extends Data.TaggedError("QueueSendError") {
7
7
  }
8
+ /**
9
+ * Binding service that turns a {@link Queue} resource into a typed
10
+ * {@link QueueSender} you can call from a Worker's runtime Effect.
11
+ *
12
+ * @section Sending Messages
13
+ * Bind the queue in the Worker's init phase, then use `send` for
14
+ * single messages or `sendBatch` for many messages in one call.
15
+ * Messages can be any JSON-serializable value.
16
+ *
17
+ * @example Producer route
18
+ * ```typescript
19
+ * const queue = yield* Cloudflare.QueueBinding.bind(Queue);
20
+ *
21
+ * return {
22
+ * fetch: Effect.gen(function* () {
23
+ * yield* queue.send({ text: "hi", sentAt: Date.now() });
24
+ * return HttpServerResponse.empty({ status: 202 });
25
+ * }),
26
+ * };
27
+ * ```
28
+ *
29
+ * @example Sending a batch
30
+ * ```typescript
31
+ * yield* queue.sendBatch([
32
+ * { body: { event: "click", id: 1 } },
33
+ * { body: { event: "click", id: 2 } },
34
+ * { body: "raw text", contentType: "text" },
35
+ * ]);
36
+ * ```
37
+ *
38
+ * Provide {@link QueueBindingLive} in the worker's runtime layer to
39
+ * resolve the underlying Cloudflare queue at request time.
40
+ */
8
41
  export class QueueBinding extends Binding.Service()("Cloudflare.Queue") {
9
42
  }
10
43
  export const QueueBindingLive = Layer.effect(QueueBinding, Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"QueueBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueBinding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueueBinding.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueBinding.ts"],"names":[],"mappings":"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"}
@@ -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
- * const state = yield* Cloudflare.DurableObjectState;
269
- * const sockets = yield* state.getWebSockets();
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
- * for (const socket of sockets) {
272
- * const data = socket.deserializeAttachment<{ id: string }>();
273
- * // re-populate your session map
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
- * const state = yield* Cloudflare.DurableObjectState;
223
- * const sockets = yield* state.getWebSockets();
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
- * for (const socket of sockets) {
226
- * const data = socket.deserializeAttachment<{ id: string }>();
227
- * // re-populate your session map
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":"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"}
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