@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":"entityKeepAlive.js","names":[],"sources":["../../src/internal/entityKeepAlive.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;AAYA,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AA6B3C;AACA,OAAO,MAAM,mBAAmB,GAAI,OAA+B,IAAqB;EACtF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;EACpC,IAAI,OAAO,GAAG,CAAC;EACf,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM;EAC3B,IAAI,IAA4C;EAEhD;EACA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,QAAQ,CAAE,KAAK,IAAK,MAAM,CAAC,UAAU,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC,EAC/F,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,QAAQ,CAAC,WAAW,CAAC,CAAC;IAAE;EAAQ,CAAE,KAChC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAClF,EACD,QAAQ,CAAC,QAAQ,CAClB,CACF,CACF;EAED,MAAM,OAAO,GAAG,MAAK;IACnB,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;IACnC,KAAK,CAAC,WAAW,EAAE;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACrC,IAAI,GAAG,KAAK;IACZ,KAAK,CAAC,WAAW,CAAC,MAAK;MACrB,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,SAAS;IACtC,CAAC,CAAC;EACJ,CAAC;EAED,MAAM,OAAO,GAAG,MAAK;IACnB,IAAI,IAAI,KAAK,SAAS,EAAE;IACxB,IAAI,CAAC,eAAe,EAAE;IACtB,IAAI,GAAG,SAAS;IAChB,KAAK,CAAC,UAAU,EAAE;EACpB,CAAC;EAED,MAAM,SAAS,GAAI,IAAa,IAAI;IAClC,IAAI,MAAM,KAAK,IAAI,EAAE;IACrB,MAAM,GAAG,IAAI;IACb;IACA;IACA,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAK;MAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;IACjC,CAAC,CAAC,CAAC,EACH,MAAM,CAAC,UAAU,CAAE,KAAK,IAAK,MAAM,CAAC,QAAQ,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC,CAC7F,CACF;EACH,CAAC;EAED,MAAM,MAAM,GAAI,OAAgB,IAC9B,MAAM,CAAC,IAAI,CAAC,MAAK;IACf,IAAI,OAAO,EAAE;MACX,OAAO,EAAE;MACT,SAAS,CAAC,IAAI,CAAC;MACf;MACA,OAAO,EAAE;MACT;IACF;IACA;IACA;IACA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE;IAC1B,IAAI,OAAO,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;EACrC,CAAC,CAAC;EAEJ,OAAO;IACL,MAAM;IACN,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,YAAY,EAAE,MAAK;MACjB,OAAO,GAAG,CAAC;IACb,CAAC;IACD;GACD;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entityMailbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityMailbox.d.ts","sourceRoot":"","sources":["../../src/internal/entityMailbox.ts"],"names":[],"mappings":""}
@@ -0,0 +1,160 @@
1
+ import * as Effect from "effect/Effect";
2
+ /** @internal */
3
+ export const mailboxCapacity = 4096;
4
+ /** @internal */
5
+ export const maximumEncodedSize = 2 * 1024 * 1024;
6
+ /** @internal */
7
+ export class MailboxFullError extends Error {
8
+ _tag = "MailboxFull";
9
+ }
10
+ /** @internal */
11
+ export class EncodedMessageTooLargeError extends Error {
12
+ _tag = "EncodedMessageTooLarge";
13
+ }
14
+ const textEncoder = /*#__PURE__*/new TextEncoder();
15
+ // A UTF-16 code unit encodes to at most 3 UTF-8 bytes, so most strings skip
16
+ // the byte-length copy.
17
+ const exceedsMaximumEncodedSize = text => text.length * 3 > maximumEncodedSize && textEncoder.encode(text).byteLength > maximumEncodedSize;
18
+ /** @internal */
19
+ export const persistRequest = (sql, envelopeText, primaryKey, discard = false, deliverAt = null, replyTo = null) => Effect.suspend(() => {
20
+ if (exceedsMaximumEncodedSize(envelopeText)) {
21
+ return Effect.fail(new EncodedMessageTooLargeError("Encoded entity request exceeds 2 MB"));
22
+ }
23
+ const envelope = JSON.parse(envelopeText);
24
+ if (envelope._tag !== "Request" || typeof envelope.requestId !== "string") {
25
+ throw new TypeError("Expected an encoded Request envelope");
26
+ }
27
+ const existing = sql.exec(`SELECT m.request_id, m.discard, m.processed, m.reply_to
28
+ FROM cluster_messages m
29
+ WHERE m.request_id = ? OR (? IS NOT NULL AND m.message_id = ?)
30
+ LIMIT 1`, envelope.requestId, primaryKey, primaryKey).toArray()[0];
31
+ if (existing !== undefined) {
32
+ if (replyTo !== null && existing.discard === 0 && existing.processed === 0) {
33
+ const replyTos = decodeReplyTargets(existing.reply_to);
34
+ const requestId = envelope.requestId;
35
+ if (!replyTos.some(target => target.replyTo === replyTo && target.requestId === requestId)) {
36
+ replyTos.push({
37
+ replyTo,
38
+ requestId
39
+ });
40
+ }
41
+ sql.exec("UPDATE cluster_messages SET reply_to = ? WHERE request_id = ?", JSON.stringify(replyTos), existing.request_id);
42
+ }
43
+ return Effect.succeed({
44
+ _tag: "Duplicate",
45
+ originalId: existing.request_id,
46
+ processed: existing.processed === 1
47
+ });
48
+ }
49
+ // A request counts against capacity until it is processed and, for streams,
50
+ // until its chunks are acknowledged. Two indexed counts instead of one
51
+ // `OR EXISTS` scan over the ever-growing dedup history.
52
+ const pending = sql.exec("SELECT COUNT(*) AS count FROM cluster_messages WHERE processed = 0").toArray()[0]?.count ?? 0;
53
+ const unacked = pending >= mailboxCapacity ? 0 : sql.exec(`SELECT COUNT(DISTINCT r.request_id) AS count
54
+ FROM cluster_replies r
55
+ JOIN cluster_messages m ON m.request_id = r.request_id
56
+ WHERE r.kind = 'Chunk' AND r.acked = 0 AND m.processed = 1`).toArray()[0]?.count ?? 0;
57
+ if (pending + unacked >= mailboxCapacity) {
58
+ return Effect.fail(new MailboxFullError("Entity mailbox has reached its 4096 request capacity"));
59
+ }
60
+ sql.exec(`INSERT INTO cluster_messages
61
+ (request_id, message_id, envelope, discard, processed, last_reply_id, deliver_at, reply_to)
62
+ VALUES (?, ?, ?, ?, 0, NULL, ?, ?)`, envelope.requestId, primaryKey, envelopeText, discard ? 1 : 0, deliverAt, replyTo === null ? null : JSON.stringify([{
63
+ replyTo,
64
+ requestId: envelope.requestId
65
+ }]));
66
+ return Effect.succeed({
67
+ _tag: "Success"
68
+ });
69
+ });
70
+ /** @internal */
71
+ export const saveReply = (sql, replyText) => Effect.suspend(() => {
72
+ if (exceedsMaximumEncodedSize(replyText)) {
73
+ return Effect.fail(new EncodedMessageTooLargeError("Encoded entity reply chunk exceeds 2 MB"));
74
+ }
75
+ const reply = JSON.parse(replyText);
76
+ if (reply._tag !== "Chunk" && reply._tag !== "WithExit" || typeof reply.requestId !== "string" || typeof reply.id !== "string") {
77
+ throw new TypeError("Expected an encoded Chunk or WithExit reply");
78
+ }
79
+ sql.exec(`INSERT OR IGNORE INTO cluster_replies
80
+ (reply_id, request_id, reply, kind, sequence, acked)
81
+ VALUES (?, ?, ?, ?, ?, 0)`, reply.id, reply.requestId, replyText, reply._tag, reply._tag === "Chunk" ? reply.sequence : null);
82
+ sql.exec(`UPDATE cluster_messages
83
+ SET last_reply_id = ?, processed = CASE WHEN ? = 'WithExit' THEN 1 ELSE processed END
84
+ WHERE request_id = ?`, reply.id, reply._tag, reply.requestId);
85
+ return Effect.void;
86
+ });
87
+ const isReplyTarget = item => typeof item === "object" && item !== null && typeof item.replyTo === "string" && typeof item.requestId === "string";
88
+ const decodeReplyTargets = value => {
89
+ if (typeof value !== "string") return [];
90
+ try {
91
+ const decoded = JSON.parse(value);
92
+ if (Array.isArray(decoded) && decoded.every(isReplyTarget)) return decoded;
93
+ } catch {
94
+ // Malformed rows deliver nowhere instead of poisoning the replay.
95
+ }
96
+ return [];
97
+ };
98
+ const rowToMessage = row => {
99
+ const replyTos = decodeReplyTargets(row.reply_to);
100
+ const message = {
101
+ requestId: row.request_id,
102
+ envelope: row.envelope,
103
+ lastSentChunk: row.last_reply ?? undefined,
104
+ discard: row.discard === 1,
105
+ ...(row.deliver_at === null ? undefined : {
106
+ deliverAt: row.deliver_at
107
+ }),
108
+ ...(replyTos.length === 0 ? undefined : {
109
+ replyTos
110
+ })
111
+ };
112
+ return message;
113
+ };
114
+ /** @internal */
115
+ export const loadUnprocessed = (sql, now) => Effect.sync(() => sql.exec(`SELECT m.request_id, m.envelope, m.discard, m.deliver_at, m.reply_to, r.reply AS last_reply
116
+ FROM cluster_messages m
117
+ LEFT JOIN cluster_replies r ON r.reply_id = m.last_reply_id
118
+ WHERE m.processed = 0 AND (m.deliver_at IS NULL OR m.deliver_at <= ?)
119
+ ORDER BY m.rowid ASC`, now ?? Date.now()).toArray().map(rowToMessage));
120
+ /** @internal */
121
+ export const loadMessage = (sql, requestId) => Effect.sync(() => {
122
+ const row = sql.exec(`SELECT m.request_id, m.envelope, m.discard, m.deliver_at, m.reply_to, r.reply AS last_reply
123
+ FROM cluster_messages m
124
+ LEFT JOIN cluster_replies r ON r.reply_id = m.last_reply_id
125
+ WHERE m.request_id = ?
126
+ LIMIT 1`, requestId).toArray()[0];
127
+ return row === undefined ? undefined : rowToMessage(row);
128
+ });
129
+ /** @internal */
130
+ export const loadNextReply = (sql, requestId) => Effect.sync(() => {
131
+ const row = sql.exec(`SELECT reply, kind
132
+ FROM cluster_replies
133
+ WHERE request_id = ? AND kind = 'Chunk' AND acked = 0
134
+ ORDER BY sequence ASC
135
+ LIMIT 1`, requestId).toArray()[0] ?? sql.exec(`SELECT reply, kind
136
+ FROM cluster_replies
137
+ WHERE request_id = ? AND kind = 'WithExit'
138
+ LIMIT 1`, requestId).toArray()[0];
139
+ return row;
140
+ });
141
+ /** @internal */
142
+ export const completeTell = (sql, requestId) => Effect.sync(() => {
143
+ sql.exec(`UPDATE cluster_messages
144
+ SET processed = 1, last_reply_id = NULL
145
+ WHERE request_id = ?`, requestId);
146
+ });
147
+ /** @internal */
148
+ export const ackChunk = (sql, requestId, replyId) => Effect.sync(() => {
149
+ sql.exec(`UPDATE cluster_replies
150
+ SET acked = 1
151
+ WHERE request_id = ? AND reply_id = ? AND kind = 'Chunk'`, requestId, replyId);
152
+ });
153
+ /** @internal */
154
+ export const clearReplies = (sql, requestId) => Effect.sync(() => {
155
+ sql.exec("DELETE FROM cluster_replies WHERE request_id = ?", requestId);
156
+ sql.exec(`UPDATE cluster_messages
157
+ SET processed = 0, last_reply_id = NULL
158
+ WHERE request_id = ?`, requestId);
159
+ });
160
+ //# sourceMappingURL=entityMailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityMailbox.js","names":[],"sources":["../../src/internal/entityMailbox.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import type * as Context from "effect/Context";
2
+ import type * as Effect from "effect/Effect";
3
+ export interface EntityRegistration {
4
+ readonly entity: Entity.Entity<any, any>;
5
+ readonly build: Effect.Effect<Record<string, (request: any) => any>, never, never>;
6
+ readonly options: {
7
+ readonly concurrency?: number | "unbounded" | undefined;
8
+ readonly disableFatalDefects?: boolean | undefined;
9
+ readonly defectRetryPolicy?: unknown;
10
+ readonly spanAttributes?: Record<string, string> | undefined;
11
+ } | undefined;
12
+ readonly context: Context.Context<never>;
13
+ /** Interval of the keep-alive heartbeat alarm, in milliseconds. */
14
+ readonly keepAliveHeartbeat: number;
15
+ }
16
+ //# sourceMappingURL=entityRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityRegistry.d.ts","sourceRoot":"","sources":["../../src/internal/entityRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAG5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAA;QACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;QACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAC7D,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,mEAAmE;IACnE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACpC"}
@@ -0,0 +1,22 @@
1
+ import { makeRegistry } from "./registry.js";
2
+ const registry = /*#__PURE__*/makeRegistry();
3
+ /**
4
+ * Default interval of the keep-alive heartbeat alarm.
5
+ *
6
+ * @internal
7
+ */
8
+ export const defaultKeepAliveHeartbeatMillis = 30_000;
9
+ /**
10
+ * The heartbeat interval of an entity type. An alarm can wake an object whose
11
+ * type a deploy removed, so a missing registration falls back to the default.
12
+ *
13
+ * @internal
14
+ */
15
+ export const keepAliveHeartbeatMillis = entityType => registry.get(entityType)?.keepAliveHeartbeat ?? defaultKeepAliveHeartbeatMillis;
16
+ /** @internal */
17
+ export const getEntityRegistration = registry.get;
18
+ /** @internal */
19
+ export const registerEntity = registry.register;
20
+ /** @internal */
21
+ export const unregisterEntity = registry.unregister;
22
+ //# sourceMappingURL=entityRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityRegistry.js","names":[],"sources":["../../src/internal/entityRegistry.ts"],"sourcesContent":[null],"mappings":"AAIA,SAAS,YAAY,QAAQ,eAAe;AAgB5C,MAAM,QAAQ,gBAAG,YAAY,EAAsB;AAEnD;;;;;AAKA,OAAO,MAAM,+BAA+B,GAAG,MAAM;AAErD;;;;;;AAMA,OAAO,MAAM,wBAAwB,GAAI,UAAkB,IACzD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,kBAAkB,IAAI,+BAA+B;AAEjF;AACA,OAAO,MAAM,qBAAqB,GAAqD,QAAQ,CAAC,GAAG;AAEnG;AACA,OAAO,MAAM,cAAc,GAAgE,QAAQ,CAAC,QAAQ;AAE5G;AACA,OAAO,MAAM,gBAAgB,GAA6D,QAAQ,CAAC,UAAU","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entityReply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityReply.d.ts","sourceRoot":"","sources":["../../src/internal/entityReply.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ /** @internal */
2
+ import * as Context from "effect/Context";
3
+ import * as Deferred from "effect/Deferred";
4
+ import * as Effect from "effect/Effect";
5
+ /** @internal */
6
+ export class CurrentEntityName extends /*#__PURE__*/Context.Service()("@effect/platform-cloudflare/CurrentEntityName") {}
7
+ /** @internal */
8
+ export const makeReplyRegistry = () => {
9
+ const waiters = new Map();
10
+ return {
11
+ register(requestId, waiter) {
12
+ const registered = waiters.get(requestId) ?? new Set();
13
+ registered.add(waiter);
14
+ waiters.set(requestId, registered);
15
+ },
16
+ unregister(requestId, waiter) {
17
+ const registered = waiters.get(requestId);
18
+ if (registered === undefined) return;
19
+ registered.delete(waiter);
20
+ if (registered.size === 0) waiters.delete(requestId);
21
+ },
22
+ deliver(requestId, reply) {
23
+ const registered = waiters.get(requestId);
24
+ if (registered === undefined) return false;
25
+ waiters.delete(requestId);
26
+ for (const waiter of registered) {
27
+ Deferred.doneUnsafe(waiter, Effect.succeed(reply));
28
+ }
29
+ return true;
30
+ }
31
+ };
32
+ };
33
+ /** @internal */
34
+ export class CurrentReplyRegistry extends /*#__PURE__*/Context.Service()("@effect/platform-cloudflare/CurrentReplyRegistry") {}
35
+ //# sourceMappingURL=entityReply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityReply.js","names":[],"sources":["../../src/internal/entityReply.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC;AACA,OAAM,MAAO,iBAAkB,sBAAQ,OAAO,CAAC,OAAO,EAA6B,CACjF,+CAA+C,CAChD;AAeD;AACA,OAAO,MAAM,iBAAiB,GAAG,MAA0B;EACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C;EACjE,OAAO;IACL,QAAQ,CAAC,SAAS,EAAE,MAAM;MACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAE;MACtD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;MACtB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC;IACpC,CAAC;IACD,UAAU,CAAC,SAAS,EAAE,MAAM;MAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;MACzC,IAAI,UAAU,KAAK,SAAS,EAAE;MAC9B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;MACzB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,KAAK;MACtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;MACzC,IAAI,UAAU,KAAK,SAAS,EAAE,OAAO,KAAK;MAC1C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;MACzB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;MACpD;MACA,OAAO,IAAI;IACb;GACD;AACH,CAAC;AAED;AACA,OAAM,MAAO,oBAAqB,sBAAQ,OAAO,CAAC,OAAO,EAA6C,CACpG,kDAAkD,CACnD","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entityRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityRuntime.d.ts","sourceRoot":"","sources":["../../src/internal/entityRuntime.ts"],"names":[],"mappings":""}