@effect/platform-cloudflare 0.0.0 → 4.1.3

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 (237) hide show
  1. package/AGENTS.md +434 -0
  2. package/CLAUDE.md +434 -0
  3. package/LICENSE +21 -0
  4. package/README.md +506 -0
  5. package/ai-docs/README.md +44 -0
  6. package/ai-docs/package.json +36 -0
  7. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  8. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +52 -0
  9. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  10. package/ai-docs/src/01_effect/01_basics/index.md +7 -0
  11. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  12. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  13. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  14. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  15. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  16. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  17. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  18. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  19. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  20. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  21. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  22. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  23. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  24. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  25. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  26. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  27. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  28. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  29. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  30. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  31. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  32. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  33. package/ai-docs/src/03_stream/30_encoding.ts +163 -0
  34. package/ai-docs/src/03_stream/index.md +4 -0
  35. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  36. package/ai-docs/src/04_integration/index.md +5 -0
  37. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  38. package/ai-docs/src/05_batching/index.md +3 -0
  39. package/ai-docs/src/06_schedule/10_schedules.ts +111 -0
  40. package/ai-docs/src/06_schedule/index.md +3 -0
  41. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  42. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  43. package/ai-docs/src/07_datetime/index.md +5 -0
  44. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  45. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  46. package/ai-docs/src/08_observability/index.md +7 -0
  47. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  48. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  49. package/ai-docs/src/09_testing/index.md +1 -0
  50. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  51. package/ai-docs/src/10_predicate/index.md +9 -0
  52. package/ai-docs/src/40_sql/10_basics.ts +175 -0
  53. package/ai-docs/src/40_sql/index.md +6 -0
  54. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  55. package/ai-docs/src/50_http-client/index.md +3 -0
  56. package/ai-docs/src/51_http-server/10_basics.ts +118 -0
  57. package/ai-docs/src/51_http-server/20_testing.ts +100 -0
  58. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  59. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  60. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  61. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
  62. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
  63. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  64. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
  65. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
  66. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
  67. package/ai-docs/src/51_http-server/index.md +3 -0
  68. package/ai-docs/src/52_graphql/10_basics.ts +117 -0
  69. package/ai-docs/src/52_graphql/20_testing.ts +45 -0
  70. package/ai-docs/src/52_graphql/30_batching.ts +118 -0
  71. package/ai-docs/src/52_graphql/40_aliased-batching.ts +124 -0
  72. package/ai-docs/src/52_graphql/50_errors-and-retries.ts +74 -0
  73. package/ai-docs/src/52_graphql/index.md +6 -0
  74. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  75. package/ai-docs/src/60_child-process/index.md +3 -0
  76. package/ai-docs/src/70_cli/10_basics.ts +162 -0
  77. package/ai-docs/src/70_cli/index.md +5 -0
  78. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  79. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  80. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  81. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  82. package/ai-docs/src/71_ai/index.md +5 -0
  83. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  84. package/ai-docs/src/80_cluster/index.md +4 -0
  85. package/ai-docs/src/index.md +10 -0
  86. package/ai-docs/tsconfig.json +28 -0
  87. package/dist/AlchemyCloudflareCluster.d.ts +134 -0
  88. package/dist/AlchemyCloudflareCluster.d.ts.map +1 -0
  89. package/dist/AlchemyCloudflareCluster.js +111 -0
  90. package/dist/AlchemyCloudflareCluster.js.map +1 -0
  91. package/dist/CloudflareCluster.d.ts +196 -0
  92. package/dist/CloudflareCluster.d.ts.map +1 -0
  93. package/dist/CloudflareCluster.js +533 -0
  94. package/dist/CloudflareCluster.js.map +1 -0
  95. package/dist/CloudflareDurableObjectPrograms.d.ts +279 -0
  96. package/dist/CloudflareDurableObjectPrograms.d.ts.map +1 -0
  97. package/dist/CloudflareDurableObjectPrograms.js +295 -0
  98. package/dist/CloudflareDurableObjectPrograms.js.map +1 -0
  99. package/dist/CloudflareDurableObjects.d.ts +149 -0
  100. package/dist/CloudflareDurableObjects.d.ts.map +1 -0
  101. package/dist/CloudflareDurableObjects.js +337 -0
  102. package/dist/CloudflareDurableObjects.js.map +1 -0
  103. package/dist/CloudflarePersistedQueue.d.ts +36 -0
  104. package/dist/CloudflarePersistedQueue.d.ts.map +1 -0
  105. package/dist/CloudflarePersistedQueue.js +122 -0
  106. package/dist/CloudflarePersistedQueue.js.map +1 -0
  107. package/dist/CloudflareWorkflowEngine.d.ts +72 -0
  108. package/dist/CloudflareWorkflowEngine.d.ts.map +1 -0
  109. package/dist/CloudflareWorkflowEngine.js +187 -0
  110. package/dist/CloudflareWorkflowEngine.js.map +1 -0
  111. package/dist/index.d.ts +29 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +33 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/internal/alchemyCluster.d.ts +2 -0
  116. package/dist/internal/alchemyCluster.d.ts.map +1 -0
  117. package/dist/internal/alchemyCluster.js +75 -0
  118. package/dist/internal/alchemyCluster.js.map +1 -0
  119. package/dist/internal/boundedMap.d.ts +3 -0
  120. package/dist/internal/boundedMap.d.ts.map +1 -0
  121. package/dist/internal/boundedMap.js +15 -0
  122. package/dist/internal/boundedMap.js.map +1 -0
  123. package/dist/internal/cluster.d.ts +57 -0
  124. package/dist/internal/cluster.d.ts.map +1 -0
  125. package/dist/internal/cluster.js +2 -0
  126. package/dist/internal/cluster.js.map +1 -0
  127. package/dist/internal/clusterName.d.ts +2 -0
  128. package/dist/internal/clusterName.d.ts.map +1 -0
  129. package/dist/internal/clusterName.js +16 -0
  130. package/dist/internal/clusterName.js.map +1 -0
  131. package/dist/internal/entityKeepAlive.d.ts +2 -0
  132. package/dist/internal/entityKeepAlive.d.ts.map +1 -0
  133. package/dist/internal/entityKeepAlive.js +73 -0
  134. package/dist/internal/entityKeepAlive.js.map +1 -0
  135. package/dist/internal/entityMailbox.d.ts +2 -0
  136. package/dist/internal/entityMailbox.d.ts.map +1 -0
  137. package/dist/internal/entityMailbox.js +160 -0
  138. package/dist/internal/entityMailbox.js.map +1 -0
  139. package/dist/internal/entityRegistry.d.ts +16 -0
  140. package/dist/internal/entityRegistry.d.ts.map +1 -0
  141. package/dist/internal/entityRegistry.js +22 -0
  142. package/dist/internal/entityRegistry.js.map +1 -0
  143. package/dist/internal/entityReply.d.ts +2 -0
  144. package/dist/internal/entityReply.d.ts.map +1 -0
  145. package/dist/internal/entityReply.js +35 -0
  146. package/dist/internal/entityReply.js.map +1 -0
  147. package/dist/internal/entityRuntime.d.ts +2 -0
  148. package/dist/internal/entityRuntime.d.ts.map +1 -0
  149. package/dist/internal/entityRuntime.js +823 -0
  150. package/dist/internal/entityRuntime.js.map +1 -0
  151. package/dist/internal/entitySql.d.ts +2 -0
  152. package/dist/internal/entitySql.d.ts.map +1 -0
  153. package/dist/internal/entitySql.js +29 -0
  154. package/dist/internal/entitySql.js.map +1 -0
  155. package/dist/internal/entityStorage.d.ts +2 -0
  156. package/dist/internal/entityStorage.d.ts.map +1 -0
  157. package/dist/internal/entityStorage.js +98 -0
  158. package/dist/internal/entityStorage.js.map +1 -0
  159. package/dist/internal/entityWire.d.ts +2 -0
  160. package/dist/internal/entityWire.d.ts.map +1 -0
  161. package/dist/internal/entityWire.js +146 -0
  162. package/dist/internal/entityWire.js.map +1 -0
  163. package/dist/internal/queueRuntime.d.ts +2 -0
  164. package/dist/internal/queueRuntime.d.ts.map +1 -0
  165. package/dist/internal/queueRuntime.js +88 -0
  166. package/dist/internal/queueRuntime.js.map +1 -0
  167. package/dist/internal/queueStorage.d.ts +2 -0
  168. package/dist/internal/queueStorage.d.ts.map +1 -0
  169. package/dist/internal/queueStorage.js +129 -0
  170. package/dist/internal/queueStorage.js.map +1 -0
  171. package/dist/internal/registry.d.ts +10 -0
  172. package/dist/internal/registry.d.ts.map +1 -0
  173. package/dist/internal/registry.js +24 -0
  174. package/dist/internal/registry.js.map +1 -0
  175. package/dist/internal/singletonRegistry.d.ts +2 -0
  176. package/dist/internal/singletonRegistry.d.ts.map +1 -0
  177. package/dist/internal/singletonRegistry.js +9 -0
  178. package/dist/internal/singletonRegistry.js.map +1 -0
  179. package/dist/internal/singletonRuntime.d.ts +2 -0
  180. package/dist/internal/singletonRuntime.d.ts.map +1 -0
  181. package/dist/internal/singletonRuntime.js +42 -0
  182. package/dist/internal/singletonRuntime.js.map +1 -0
  183. package/dist/internal/singletonStorage.d.ts +2 -0
  184. package/dist/internal/singletonStorage.d.ts.map +1 -0
  185. package/dist/internal/singletonStorage.js +34 -0
  186. package/dist/internal/singletonStorage.js.map +1 -0
  187. package/dist/internal/transport.d.ts +2 -0
  188. package/dist/internal/transport.d.ts.map +1 -0
  189. package/dist/internal/transport.js +49 -0
  190. package/dist/internal/transport.js.map +1 -0
  191. package/dist/internal/workflowRegistry.d.ts +2 -0
  192. package/dist/internal/workflowRegistry.d.ts.map +1 -0
  193. package/dist/internal/workflowRegistry.js +29 -0
  194. package/dist/internal/workflowRegistry.js.map +1 -0
  195. package/dist/internal/workflowRuntime.d.ts +2 -0
  196. package/dist/internal/workflowRuntime.d.ts.map +1 -0
  197. package/dist/internal/workflowRuntime.js +322 -0
  198. package/dist/internal/workflowRuntime.js.map +1 -0
  199. package/dist/internal/workflowStorage.d.ts +2 -0
  200. package/dist/internal/workflowStorage.d.ts.map +1 -0
  201. package/dist/internal/workflowStorage.js +113 -0
  202. package/dist/internal/workflowStorage.js.map +1 -0
  203. package/dist/internal/workflowWire.d.ts +2 -0
  204. package/dist/internal/workflowWire.d.ts.map +1 -0
  205. package/dist/internal/workflowWire.js +52 -0
  206. package/dist/internal/workflowWire.js.map +1 -0
  207. package/package.json +77 -1
  208. package/src/AlchemyCloudflareCluster.ts +200 -0
  209. package/src/CloudflareCluster.ts +704 -0
  210. package/src/CloudflareDurableObjectPrograms.ts +543 -0
  211. package/src/CloudflareDurableObjects.ts +430 -0
  212. package/src/CloudflarePersistedQueue.ts +189 -0
  213. package/src/CloudflareWorkflowEngine.ts +220 -0
  214. package/src/index.ts +38 -0
  215. package/src/internal/alchemyCluster.ts +120 -0
  216. package/src/internal/boundedMap.ts +15 -0
  217. package/src/internal/cluster.ts +57 -0
  218. package/src/internal/clusterName.ts +19 -0
  219. package/src/internal/entityKeepAlive.ts +121 -0
  220. package/src/internal/entityMailbox.ts +324 -0
  221. package/src/internal/entityRegistry.ts +46 -0
  222. package/src/internal/entityReply.ts +54 -0
  223. package/src/internal/entityRuntime.ts +1318 -0
  224. package/src/internal/entitySql.ts +60 -0
  225. package/src/internal/entityStorage.ts +168 -0
  226. package/src/internal/entityWire.ts +204 -0
  227. package/src/internal/queueRuntime.ts +174 -0
  228. package/src/internal/queueStorage.ts +255 -0
  229. package/src/internal/registry.ts +31 -0
  230. package/src/internal/singletonRegistry.ts +21 -0
  231. package/src/internal/singletonRuntime.ts +88 -0
  232. package/src/internal/singletonStorage.ts +64 -0
  233. package/src/internal/transport.ts +67 -0
  234. package/src/internal/workflowRegistry.ts +78 -0
  235. package/src/internal/workflowRuntime.ts +443 -0
  236. package/src/internal/workflowStorage.ts +234 -0
  237. package/src/internal/workflowWire.ts +123 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityRuntime.js","names":[],"sources":["../../src/internal/entityRuntime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entitySql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitySql.d.ts","sourceRoot":"","sources":["../../src/internal/entitySql.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import * as SqliteClient from "@effect/sql-sqlite-do/SqliteClient";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Reactivity from "effect/reactivity/Reactivity";
5
+ import * as Semaphore from "effect/Semaphore";
6
+ import { DurableObjectSqlClient } from "../CloudflareCluster.js";
7
+ const InUserTransaction = /*#__PURE__*/Context.Reference("@effect/platform-cloudflare/internal/entitySql/InUserTransaction", {
8
+ defaultValue: () => false
9
+ });
10
+ /** @internal */
11
+ export const makeEntitySql = storage => {
12
+ const gate = Semaphore.makeUnsafe(1);
13
+ const make = Effect.map(Effect.provideServiceEffect(SqliteClient.make({
14
+ storage
15
+ }), Reactivity.Reactivity, Reactivity.make), client => {
16
+ // Nested transactions reuse the outer storage transaction, so only the
17
+ // outermost one takes the gate.
18
+ const withTransaction = client.withTransaction;
19
+ const gated = effect => Effect.withFiber(fiber => fiber.getRef(InUserTransaction) ? withTransaction(effect) : Semaphore.withPermit(gate, withTransaction(Effect.provideService(effect, InUserTransaction, true))));
20
+ return Context.make(DurableObjectSqlClient, Object.assign(client, {
21
+ withTransaction: gated
22
+ }));
23
+ });
24
+ return {
25
+ make,
26
+ guard: effect => Semaphore.withPermit(gate, effect)
27
+ };
28
+ };
29
+ //# sourceMappingURL=entitySql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitySql.js","names":[],"sources":["../../src/internal/entitySql.ts"],"sourcesContent":[null],"mappings":"AAaA,OAAO,KAAK,YAAY,MAAM,oCAAoC;AAClE,OAAO,KAAK,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe;AACvC,OAAO,KAAK,UAAU,MAAM,8BAA8B;AAE1D,OAAO,KAAK,SAAS,MAAM,kBAAkB;AAE7C,SAAS,sBAAsB,QAAQ,yBAAyB;AAUhE,MAAM,iBAAiB,gBAAG,OAAO,CAAC,SAAS,CACzC,kEAAkE,EAClE;EAAE,YAAY,EAAE,MAAM;AAAK,CAAE,CAC9B;AAED;AACA,OAAO,MAAM,aAAa,GAAI,OAA6B,IAAe;EACxE,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;EAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CACrB,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC;IAAE;EAAO,CAAE,CAAC,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,EAClG,MAAM,IAAI;IACT;IACA;IACA,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe;IAC9C,MAAM,KAAK,GAA4C,MAAM,IAC3D,MAAM,CAAC,SAAS,CAAE,KAAK,IACrB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAC3B,eAAe,CAAC,MAAM,CAAC,GACvB,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,CACxG;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;MAAE,eAAe,EAAE;IAAK,CAAE,CAAC,CAAC;EAChG,CAAC,CACF;EAED,OAAO;IACL,IAAI;IACJ,KAAK,EAAG,MAAM,IAAK,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;GACrD;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entityStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityStorage.d.ts","sourceRoot":"","sources":["../../src/internal/entityStorage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Result from "effect/Result";
3
+ /**
4
+ * Runs a synchronous storage effect inside `transactionSync`. A defect throws
5
+ * out of the callback and rolls the transaction back; a typed failure happens
6
+ * before any write in the mailbox operations, so it is carried out as a plain
7
+ * failure.
8
+ *
9
+ * @internal
10
+ */
11
+ export const withTransaction = (storage, effect) => Effect.suspend(() => {
12
+ const result = storage.transactionSync(() => Effect.runSync(Effect.result(effect)));
13
+ return Result.isSuccess(result) ? Effect.succeed(result.success) : Effect.fail(result.failure);
14
+ });
15
+ const ddl = [`CREATE TABLE IF NOT EXISTS cluster_messages (
16
+ request_id TEXT PRIMARY KEY,
17
+ message_id TEXT UNIQUE,
18
+ envelope TEXT NOT NULL,
19
+ discard INTEGER NOT NULL DEFAULT 0,
20
+ processed INTEGER NOT NULL DEFAULT 0,
21
+ last_reply_id TEXT,
22
+ deliver_at INTEGER,
23
+ reply_to TEXT
24
+ )`, `CREATE TABLE IF NOT EXISTS cluster_replies (
25
+ reply_id TEXT PRIMARY KEY,
26
+ request_id TEXT NOT NULL,
27
+ reply TEXT NOT NULL,
28
+ kind TEXT NOT NULL,
29
+ sequence INTEGER,
30
+ acked INTEGER NOT NULL DEFAULT 0,
31
+ UNIQUE (request_id, sequence)
32
+ )`, `CREATE INDEX IF NOT EXISTS cluster_messages_deliver_at_idx
33
+ ON cluster_messages (processed, deliver_at)`, `CREATE INDEX IF NOT EXISTS cluster_replies_unacked_idx
34
+ ON cluster_replies (request_id) WHERE kind = 'Chunk' AND acked = 0`,
35
+ // One row: whether the entity wants keep-alive across restarts, and the
36
+ // encoded name for wakes that arrive without one.
37
+ `CREATE TABLE IF NOT EXISTS cluster_entity_state (
38
+ id INTEGER PRIMARY KEY CHECK (id = 0),
39
+ keep_alive INTEGER NOT NULL DEFAULT 0,
40
+ name TEXT
41
+ )`];
42
+ /** @internal */
43
+ export const ensureEntityStorage = sql => {
44
+ for (const statement of ddl) {
45
+ sql.exec(statement);
46
+ }
47
+ };
48
+ /** @internal */
49
+ export const earliestDeliverAt = sql => {
50
+ const rows = sql.exec("SELECT min(deliver_at) AS deliver_at FROM cluster_messages WHERE processed = 0 AND deliver_at IS NOT NULL").toArray();
51
+ return rows[0]?.deliver_at ?? undefined;
52
+ };
53
+ /** @internal */
54
+ export const armAlarm = (alarm, deliverAt) => Effect.promise(() => alarm.getAlarm()).pipe(Effect.flatMap(current => current === null || current > deliverAt ? Effect.promise(() => alarm.setAlarm(deliverAt)) : Effect.void));
55
+ /** @internal */
56
+ export const loadEntityState = sql => {
57
+ const row = sql.exec("SELECT keep_alive, name FROM cluster_entity_state WHERE id = 0").toArray()[0];
58
+ return {
59
+ keepAlive: row?.keep_alive === 1,
60
+ name: row?.name ?? undefined
61
+ };
62
+ };
63
+ /** @internal */
64
+ export const saveKeepAlive = (sql, enabled) => Effect.sync(() => {
65
+ sql.exec(`INSERT INTO cluster_entity_state (id, keep_alive) VALUES (0, ?)
66
+ ON CONFLICT (id) DO UPDATE SET keep_alive = excluded.keep_alive`, enabled ? 1 : 0);
67
+ });
68
+ /** @internal */
69
+ export const rememberEntityName = (sql, name) => {
70
+ sql.exec(`INSERT INTO cluster_entity_state (id, name) VALUES (0, ?)
71
+ ON CONFLICT (id) DO UPDATE SET name = excluded.name`, name);
72
+ };
73
+ /**
74
+ * The single alarm time covering every reason to wake this entity: the
75
+ * earliest due row, `now` for an unprocessed row nothing is running, and a
76
+ * heartbeat while a row is in flight or keep-alive is wanted. An in-flight row
77
+ * counts as a heartbeat rather than `now`, so a long handler does not keep
78
+ * re-firing the alarm.
79
+ *
80
+ * @internal
81
+ */
82
+ export const nextAlarmAt = (sql, options) => {
83
+ let next = Infinity;
84
+ let heartbeat = loadEntityState(sql).keepAlive;
85
+ const rows = sql.exec("SELECT request_id, deliver_at FROM cluster_messages WHERE processed = 0").toArray();
86
+ for (const row of rows) {
87
+ if (options.isRunning(row.request_id)) {
88
+ heartbeat = true;
89
+ continue;
90
+ }
91
+ next = Math.min(next, row.deliver_at === null ? options.now : Math.max(row.deliver_at, options.now));
92
+ }
93
+ if (heartbeat) {
94
+ next = Math.min(next, options.now + options.heartbeatMillis);
95
+ }
96
+ return Number.isFinite(next) ? next : undefined;
97
+ };
98
+ //# sourceMappingURL=entityStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityStorage.js","names":[],"sources":["../../src/internal/entityStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entityWire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityWire.d.ts","sourceRoot":"","sources":["../../src/internal/entityWire.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ /** @internal */
2
+ import * as EntityAddress from "effect/cluster/EntityAddress";
3
+ import * as EntityId from "effect/cluster/EntityId";
4
+ import * as EntityType from "effect/cluster/EntityType";
5
+ import * as Envelope from "effect/cluster/Envelope";
6
+ import * as Reply from "effect/cluster/Reply";
7
+ import * as ShardId from "effect/cluster/ShardId";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Headers from "effect/http/Headers";
10
+ import * as Rpc from "effect/rpc/Rpc";
11
+ import * as RpcSchema from "effect/rpc/RpcSchema";
12
+ import * as Schema from "effect/Schema";
13
+ /**
14
+ * The result of a `ClusterEntity.invoke` RPC. Constructed in the Durable
15
+ * Object as this schema's `Type` (its JSON encoding is the identity) and
16
+ * decoded once on the Worker side.
17
+ *
18
+ * @internal
19
+ */
20
+ export const InvokeResult = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Struct({
21
+ _tag: /*#__PURE__*/Schema.Literal("Success"),
22
+ requestId: Schema.String,
23
+ replies: /*#__PURE__*/Schema.Array(Schema.String)
24
+ }), /*#__PURE__*/Schema.Struct({
25
+ _tag: /*#__PURE__*/Schema.Literal("MailboxFull")
26
+ }), /*#__PURE__*/Schema.Struct({
27
+ _tag: /*#__PURE__*/Schema.Literal("EncodedMessageTooLarge")
28
+ }), /*#__PURE__*/Schema.Struct({
29
+ _tag: /*#__PURE__*/Schema.Literal("AskDeduplicatedToTell")
30
+ })]);
31
+ /** @internal */
32
+ export const decodeInvokeResult = value => Effect.orDie(Schema.decodeUnknownEffect(InvokeResult)(value));
33
+ const EnvelopePeek = /*#__PURE__*/Schema.Struct({
34
+ tag: /*#__PURE__*/Schema.optional(Schema.String)
35
+ });
36
+ /**
37
+ * Reads the RPC tag out of a stored envelope without decoding the payload,
38
+ * for rows whose full decode already failed.
39
+ *
40
+ * @internal
41
+ */
42
+ export const peekEnvelopeTag = envelopeText => Schema.decodeUnknownEffect(EnvelopePeek)(JSON.parse(envelopeText)).pipe(Effect.match({
43
+ onFailure: () => undefined,
44
+ onSuccess: ({
45
+ tag
46
+ }) => tag
47
+ }));
48
+ /** @internal */
49
+ export const runWith = (effect, context) => effect.pipe(Effect.provideContext(context), Effect.orDie);
50
+ // Cached per rpc so the derived AST stays stable and the memoized parser
51
+ // compiler can hit on repeated chunks.
52
+ const chunkValuesCache = /*#__PURE__*/new WeakMap();
53
+ const chunkValuesCodec = rpc => {
54
+ if (chunkValuesCache.has(rpc)) return chunkValuesCache.get(rpc);
55
+ const codec = RpcSchema.isStreamSchema(rpc.successSchema) ? Schema.toCodecJson(Schema.NonEmptyArray(rpc.successSchema.success)) : undefined;
56
+ chunkValuesCache.set(rpc, codec);
57
+ return codec;
58
+ };
59
+ /** @internal */
60
+ export const encodeRequest = options => JSON.stringify({
61
+ _tag: "Request",
62
+ requestId: options.requestId,
63
+ address: {
64
+ shardId: options.address.shardId,
65
+ entityType: options.address.entityType,
66
+ entityId: options.address.entityId
67
+ },
68
+ tag: options.tag,
69
+ payload: options.payload,
70
+ headers: options.headers,
71
+ ...(options.traceId === undefined ? undefined : {
72
+ traceId: options.traceId,
73
+ spanId: options.spanId,
74
+ sampled: options.sampled
75
+ })
76
+ });
77
+ /** @internal */
78
+ export const decodeRequest = (registration, envelopeText) => runWith(Effect.gen(function* () {
79
+ const encoded = JSON.parse(envelopeText);
80
+ if (encoded._tag !== "Request" || typeof encoded.requestId !== "string") {
81
+ return yield* Effect.die("Expected an encoded Request envelope");
82
+ }
83
+ const rpc = registration.entity.protocol.requests.get(encoded.tag);
84
+ if (rpc === undefined) return yield* Effect.die(`Unknown entity RPC tag: ${encoded.tag}`);
85
+ const payload = yield* Schema.decodeUnknownEffect(Schema.toCodecJson(rpc.payloadSchema))(encoded.payload);
86
+ return Envelope.makeRequest({
87
+ requestId: encoded.requestId,
88
+ address: EntityAddress.make({
89
+ shardId: ShardId.make(encoded.address.shardId.group, encoded.address.shardId.id),
90
+ entityType: EntityType.make(encoded.address.entityType),
91
+ entityId: EntityId.make(encoded.address.entityId)
92
+ }),
93
+ tag: encoded.tag,
94
+ payload,
95
+ headers: Headers.fromInput(encoded.headers),
96
+ ...(encoded.traceId === undefined ? undefined : {
97
+ traceId: encoded.traceId,
98
+ spanId: encoded.spanId,
99
+ sampled: encoded.sampled
100
+ })
101
+ });
102
+ }), registration.context);
103
+ /** @internal */
104
+ export const encodeReplyFor = (registration, rpc, reply) => {
105
+ if (reply._tag === "WithExit") {
106
+ return runWith(Effect.map(Schema.encodeUnknownEffect(Schema.toCodecJson(Rpc.exitSchema(rpc)))(reply.exit), exit => JSON.stringify({
107
+ _tag: "WithExit",
108
+ requestId: String(reply.requestId),
109
+ id: String(reply.id),
110
+ exit
111
+ })), registration.context);
112
+ }
113
+ const codec = chunkValuesCodec(rpc);
114
+ if (codec === undefined) {
115
+ return Effect.die(`Expected a stream RPC: ${rpc._tag}`);
116
+ }
117
+ return runWith(Effect.map(Schema.encodeUnknownEffect(codec)(reply.values), values => JSON.stringify({
118
+ _tag: "Chunk",
119
+ requestId: String(reply.requestId),
120
+ id: String(reply.id),
121
+ sequence: reply.sequence,
122
+ values
123
+ })), registration.context);
124
+ };
125
+ /** @internal */
126
+ export const decodeReplyFor = (rpc, context, replyText) => {
127
+ const encoded = JSON.parse(replyText);
128
+ if (encoded._tag === "WithExit") {
129
+ return runWith(Effect.map(Schema.decodeUnknownEffect(Schema.toCodecJson(Rpc.exitSchema(rpc)))(encoded.exit), exit => new Reply.WithExit({
130
+ requestId: encoded.requestId,
131
+ id: encoded.id,
132
+ exit: exit
133
+ })), context);
134
+ }
135
+ const codec = chunkValuesCodec(rpc);
136
+ if (codec === undefined) {
137
+ return Effect.die(`Expected a stream RPC: ${rpc._tag}`);
138
+ }
139
+ return runWith(Effect.map(Schema.decodeUnknownEffect(codec)(encoded.values), values => new Reply.Chunk({
140
+ requestId: encoded.requestId,
141
+ id: encoded.id,
142
+ sequence: encoded.sequence,
143
+ values: values
144
+ })), context);
145
+ };
146
+ //# sourceMappingURL=entityWire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityWire.js","names":[],"sources":["../../src/internal/entityWire.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=queueRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueRuntime.d.ts","sourceRoot":"","sources":["../../src/internal/queueRuntime.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { armAlarm } from "./entityStorage.js";
3
+ import { completeItem, earliestLeaseExpiry, ensureQueueStorage, expireLeases, extendLease, failItem, leasedItem, leaseNextItem, offerItem, releaseItem, releaseOwnedItem } from "./queueStorage.js";
4
+ /** @internal */
5
+ export const makeQueueRuntime = options => {
6
+ const sql = options.sql;
7
+ ensureQueueStorage(sql);
8
+ const waiters = [];
9
+ // Waiters differ in maxAttempts, so one waiter finding nothing does not mean
10
+ // a later one will; every waiter gets its own lease attempt. Leasing stays
11
+ // fully synchronous so concurrent wake-ups cannot interleave on the waiter
12
+ // list; only the final alarm arm is asynchronous.
13
+ const wakeWaiters = Effect.suspend(() => {
14
+ const now = options.now();
15
+ let index = 0;
16
+ while (index < waiters.length) {
17
+ const waiter = waiters[index];
18
+ const item = leaseNextItem(sql, now, now + waiter.leaseMillis, waiter.maxAttempts, waiter.takerId);
19
+ if (item === undefined) {
20
+ index++;
21
+ continue;
22
+ }
23
+ waiters.splice(index, 1);
24
+ waiter.resolve(item);
25
+ }
26
+ // Include initial visibility deadlines even when no taker is waiting.
27
+ const earliest = earliestLeaseExpiry(sql);
28
+ return earliest === undefined ? Effect.void : armAlarm(options.alarm, earliest);
29
+ });
30
+ const mutateAndWake = mutate => Effect.runPromise(Effect.suspend(() => {
31
+ mutate();
32
+ return wakeWaiters;
33
+ }));
34
+ return {
35
+ offer: (id, element, delayMillis = 0, deduplicate) => mutateAndWake(() => {
36
+ offerItem(sql, id, element, delayMillis > 0 ? options.now() + delayMillis : null, deduplicate);
37
+ }),
38
+ // The taker joins the waiter list and the shared wake pass leases to it,
39
+ // so an immediate take and a woken one follow the same code path.
40
+ take: (takerId, maxAttempts, leaseMillis) => {
41
+ // A broken take RPC is retried with the same taker id. The retry must
42
+ // not leave a second waiter that leases an item nobody handles.
43
+ const leased = leasedItem(sql, takerId, options.now());
44
+ if (leased !== undefined) return Promise.resolve(leased);
45
+ const existing = waiters.find(waiter => waiter.takerId === takerId);
46
+ const item = new Promise(resolve => {
47
+ if (existing === undefined) {
48
+ waiters.push({
49
+ takerId,
50
+ maxAttempts,
51
+ leaseMillis,
52
+ resolve
53
+ });
54
+ } else {
55
+ existing.resolve = resolve;
56
+ }
57
+ });
58
+ return Effect.runPromise(wakeWaiters).then(() => item);
59
+ },
60
+ cancelTake: takerId => {
61
+ const index = waiters.findIndex(waiter => waiter.takerId === takerId);
62
+ if (index >= 0) {
63
+ waiters.splice(index, 1);
64
+ return Promise.resolve();
65
+ }
66
+ // The cancel can race the delivery; release an item already leased to
67
+ // the taker instead of stranding it.
68
+ return mutateAndWake(() => {
69
+ releaseOwnedItem(sql, takerId, options.now());
70
+ });
71
+ },
72
+ complete: (id, takerId) => Promise.resolve(completeItem(sql, id, takerId)),
73
+ fail: (id, lastFailure, takerId, terminal = false, retryDelayMillis = 0) => mutateAndWake(() => {
74
+ failItem(sql, id, lastFailure, takerId, terminal, retryDelayMillis > 0 ? options.now() + retryDelayMillis : null);
75
+ }),
76
+ release: (id, takerId) => mutateAndWake(() => {
77
+ releaseItem(sql, id, takerId);
78
+ }),
79
+ extend: (id, leaseMillis, takerId) => Promise.resolve(extendLease(sql, id, options.now() + leaseMillis, takerId)),
80
+ runAlarm: () => Effect.runPromise(Effect.gen(function* () {
81
+ expireLeases(sql, options.now());
82
+ yield* wakeWaiters;
83
+ const next = earliestLeaseExpiry(sql);
84
+ if (next !== undefined) yield* armAlarm(options.alarm, next);
85
+ }))
86
+ };
87
+ };
88
+ //# sourceMappingURL=queueRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueRuntime.js","names":[],"sources":["../../src/internal/queueRuntime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=queueStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueStorage.d.ts","sourceRoot":"","sources":["../../src/internal/queueStorage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ const ddl = [`CREATE TABLE IF NOT EXISTS queue_items (
2
+ id TEXT PRIMARY KEY,
3
+ element TEXT NOT NULL,
4
+ position INTEGER NOT NULL,
5
+ attempts INTEGER NOT NULL DEFAULT 0,
6
+ completed INTEGER NOT NULL DEFAULT 0,
7
+ lease_until INTEGER,
8
+ lease_owner TEXT,
9
+ max_attempts INTEGER,
10
+ last_failure TEXT
11
+ )`, `CREATE INDEX IF NOT EXISTS queue_items_take_idx
12
+ ON queue_items (completed, position)`, `CREATE INDEX IF NOT EXISTS queue_items_lease_idx
13
+ ON queue_items (lease_until)`,
14
+ // MAX(position) in offerItem/failItem needs a bare position index; the
15
+ // (completed, position) index cannot serve it and completed rows are
16
+ // retained forever for dedup.
17
+ `CREATE INDEX IF NOT EXISTS queue_items_position_idx
18
+ ON queue_items (position)`,
19
+ // A retried take and a cancel look the taker's row up by owner.
20
+ `CREATE INDEX IF NOT EXISTS queue_items_owner_idx
21
+ ON queue_items (lease_owner)`];
22
+ /** @internal */
23
+ export const ensureQueueStorage = sql => {
24
+ for (const statement of ddl) {
25
+ sql.exec(statement);
26
+ }
27
+ };
28
+ /** @internal */
29
+ export const offerItem = (sql, id, element, visibleAt, deduplicate) => {
30
+ if (deduplicate === "untilExecuted") {
31
+ // A completed or failed row releases the id. Deleting it lets the insert
32
+ // below store the offer as new work after every existing row. Both
33
+ // statements run synchronously, so no other offer can interleave.
34
+ sql.exec("DELETE FROM queue_items WHERE id = ? AND completed <> 0", id);
35
+ }
36
+ // Reuse lease_until for initial visibility; INSERT OR IGNORE preserves the
37
+ // original deadline and payload when an id is offered again.
38
+ sql.exec(`INSERT OR IGNORE INTO queue_items (id, element, position, lease_until)
39
+ VALUES (?, ?, (SELECT IFNULL(MAX(position), 0) + 1 FROM queue_items), ?)`, id, element, visibleAt);
40
+ };
41
+ /**
42
+ * Leases the next available item and counts the attempt. The returned
43
+ * `attempts` is the number of earlier attempts, not counting this one.
44
+ *
45
+ * @internal
46
+ */
47
+ export const leaseNextItem = (sql, now, leaseUntil, maxAttempts, owner) => {
48
+ const row = sql.exec(`SELECT id, element, attempts FROM queue_items
49
+ WHERE completed = 0 AND attempts < ? AND (lease_until IS NULL OR lease_until <= ?)
50
+ ORDER BY position ASC LIMIT 1`, maxAttempts, now).toArray()[0];
51
+ if (row === undefined) return undefined;
52
+ sql.exec(`UPDATE queue_items SET attempts = attempts + 1, lease_until = ?, lease_owner = ?, max_attempts = ?
53
+ WHERE id = ?`, leaseUntil, owner, maxAttempts, row.id);
54
+ return row;
55
+ };
56
+ /**
57
+ * The item still leased to `owner` under a live lease, so a retried take can
58
+ * return it. `attempts` counts earlier attempts, as `leaseNextItem` returns.
59
+ *
60
+ * @internal
61
+ */
62
+ export const leasedItem = (sql, owner, now) => sql.exec(`SELECT id, element, attempts - 1 AS attempts FROM queue_items
63
+ WHERE lease_owner = ? AND completed = 0 AND lease_until > ?
64
+ LIMIT 1`, owner, now).toArray()[0];
65
+ /** @internal */
66
+ export const completeItem = (sql, id, owner) => {
67
+ sql.exec("UPDATE queue_items SET completed = 1, lease_until = NULL WHERE id = ? AND lease_owner = ?", id, owner);
68
+ };
69
+ /**
70
+ * Records a failed attempt, which the lease already counted. When the attempt
71
+ * reaches the `max_attempts` stored with the lease, or the failure is
72
+ * `terminal`, the row moves to the failed state (2). A row that is already
73
+ * completed is left alone, even when the caller was its last owner.
74
+ * A row that stays pending is hidden until `visibleAt` (null for no delay).
75
+ * Clearing `lease_owner` makes a replayed call a no-op until the next lease
76
+ * assigns a new owner.
77
+ *
78
+ * @internal
79
+ */
80
+ export const failItem = (sql, id, lastFailure, owner, terminal, visibleAt) => {
81
+ const failed = "? OR attempts >= max_attempts";
82
+ sql.exec(`UPDATE queue_items
83
+ SET lease_until = CASE WHEN ${failed} THEN NULL ELSE ? END, lease_owner = NULL, last_failure = ?,
84
+ completed = CASE WHEN ${failed} THEN 2 ELSE 0 END,
85
+ position = (SELECT IFNULL(MAX(position), 0) + 1 FROM queue_items)
86
+ WHERE id = ? AND lease_owner = ? AND completed = 0`, terminal ? 1 : 0, visibleAt, lastFailure, terminal ? 1 : 0, id, owner);
87
+ };
88
+ /**
89
+ * Returns the item to the queue and refunds the attempt its lease counted.
90
+ *
91
+ * @internal
92
+ */
93
+ export const releaseItem = (sql, id, owner) => {
94
+ sql.exec(`UPDATE queue_items SET attempts = attempts - 1, lease_until = NULL, lease_owner = NULL
95
+ WHERE id = ? AND lease_owner = ? AND completed = 0`, id, owner);
96
+ };
97
+ /**
98
+ * Releases the item `owner` holds under a live lease, as `releaseItem` does.
99
+ * An expired lease can still carry the same owner until its alarm runs; it
100
+ * keeps its spent attempt so it can fail on its own.
101
+ *
102
+ * @internal
103
+ */
104
+ export const releaseOwnedItem = (sql, owner, now) => {
105
+ sql.exec(`UPDATE queue_items SET attempts = attempts - 1, lease_until = NULL, lease_owner = NULL
106
+ WHERE lease_owner = ? AND completed = 0 AND lease_until > ?`, owner, now);
107
+ };
108
+ /** @internal */
109
+ export const extendLease = (sql, id, leaseUntil, owner) => {
110
+ sql.exec("UPDATE queue_items SET lease_until = ? WHERE id = ? AND lease_owner = ? AND lease_until IS NOT NULL", leaseUntil, id, owner);
111
+ };
112
+ /**
113
+ * Expires due leases and initial visibility deadlines. A lease that used the
114
+ * row's last attempt moves the row to the failed state (2).
115
+ *
116
+ * @internal
117
+ */
118
+ export const expireLeases = (sql, now) => {
119
+ sql.exec(`UPDATE queue_items
120
+ SET lease_until = NULL,
121
+ completed = CASE WHEN lease_owner IS NOT NULL AND attempts >= max_attempts THEN 2 ELSE 0 END
122
+ WHERE lease_until IS NOT NULL AND lease_until <= ? AND completed = 0`, now);
123
+ };
124
+ /** @internal */
125
+ export const earliestLeaseExpiry = sql => {
126
+ const row = sql.exec("SELECT min(lease_until) AS lease_until FROM queue_items WHERE lease_until IS NOT NULL").toArray()[0];
127
+ return row?.lease_until ?? undefined;
128
+ };
129
+ //# sourceMappingURL=queueStorage.js.map