alchemy 2.0.0-beta.34 → 2.0.0-beta.35

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 (356) hide show
  1. package/bin/cli.js +8 -7
  2. package/bin/exec.js +226 -52
  3. package/bin/exec.js.map +1 -1
  4. package/lib/AWS/AuthProvider.d.ts +7 -6
  5. package/lib/AWS/AuthProvider.d.ts.map +1 -1
  6. package/lib/AWS/AuthProvider.js +143 -134
  7. package/lib/AWS/AuthProvider.js.map +1 -1
  8. package/lib/AWS/Bootstrap.d.ts +2 -2
  9. package/lib/AWS/Bootstrap.d.ts.map +1 -1
  10. package/lib/AWS/EC2/hosted.d.ts +1 -1
  11. package/lib/AWS/Environment.d.ts +25 -3
  12. package/lib/AWS/Environment.d.ts.map +1 -1
  13. package/lib/AWS/Environment.js +47 -3
  14. package/lib/AWS/Environment.js.map +1 -1
  15. package/lib/AWS/IAM/OpenIDConnectProvider.d.ts +14 -6
  16. package/lib/AWS/IAM/OpenIDConnectProvider.d.ts.map +1 -1
  17. package/lib/AWS/IAM/OpenIDConnectProvider.js +6 -3
  18. package/lib/AWS/IAM/OpenIDConnectProvider.js.map +1 -1
  19. package/lib/AWS/IAM/Policy.d.ts +1 -1
  20. package/lib/AWS/IAM/Policy.d.ts.map +1 -1
  21. package/lib/AWS/IAM/Policy.js.map +1 -1
  22. package/lib/AWS/Lambda/BucketEventSource.d.ts +1 -1
  23. package/lib/AWS/Lambda/BucketEventSource.d.ts.map +1 -1
  24. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts +1 -1
  25. package/lib/AWS/Lambda/EventBridgeEventSource.d.ts.map +1 -1
  26. package/lib/AWS/Lambda/QueueEventSource.d.ts +1 -1
  27. package/lib/AWS/Lambda/QueueEventSource.d.ts.map +1 -1
  28. package/lib/AWS/Lambda/StreamEventSource.d.ts +1 -1
  29. package/lib/AWS/Lambda/StreamEventSource.d.ts.map +1 -1
  30. package/lib/AWS/Lambda/TableEventSource.d.ts +1 -1
  31. package/lib/AWS/Lambda/TableEventSource.d.ts.map +1 -1
  32. package/lib/AWS/Lambda/TopicEventSource.d.ts +1 -1
  33. package/lib/AWS/Lambda/TopicEventSource.d.ts.map +1 -1
  34. package/lib/AWS/Providers.d.ts +1 -1
  35. package/lib/AWS/Providers.d.ts.map +1 -1
  36. package/lib/AWS/Providers.js +2 -1
  37. package/lib/AWS/Providers.js.map +1 -1
  38. package/lib/Auth/Credentials.d.ts +21 -6
  39. package/lib/Auth/Credentials.d.ts.map +1 -1
  40. package/lib/Auth/Credentials.js +30 -31
  41. package/lib/Auth/Credentials.js.map +1 -1
  42. package/lib/Auth/Profile.d.ts +31 -34
  43. package/lib/Auth/Profile.d.ts.map +1 -1
  44. package/lib/Auth/Profile.js +46 -31
  45. package/lib/Auth/Profile.js.map +1 -1
  46. package/lib/Axiom/AuthProvider.d.ts +2 -1
  47. package/lib/Axiom/AuthProvider.d.ts.map +1 -1
  48. package/lib/Axiom/AuthProvider.js +149 -143
  49. package/lib/Axiom/AuthProvider.js.map +1 -1
  50. package/lib/Axiom/Credentials.d.ts +2 -1
  51. package/lib/Axiom/Credentials.d.ts.map +1 -1
  52. package/lib/Axiom/Credentials.js +4 -4
  53. package/lib/Axiom/Credentials.js.map +1 -1
  54. package/lib/Axiom/Providers.d.ts +1 -1
  55. package/lib/Axiom/Providers.d.ts.map +1 -1
  56. package/lib/Axiom/Providers.js +3 -1
  57. package/lib/Axiom/Providers.js.map +1 -1
  58. package/lib/Cli/LoggingCli.d.ts.map +1 -1
  59. package/lib/Cli/LoggingCli.js +105 -7
  60. package/lib/Cli/LoggingCli.js.map +1 -1
  61. package/lib/Cli/checkVersion.d.ts +13 -0
  62. package/lib/Cli/checkVersion.d.ts.map +1 -0
  63. package/lib/Cli/checkVersion.js +47 -0
  64. package/lib/Cli/checkVersion.js.map +1 -0
  65. package/lib/Cli/commands/_shared.d.ts +2 -2
  66. package/lib/Cli/commands/_shared.d.ts.map +1 -1
  67. package/lib/Cli/commands/_shared.js +3 -3
  68. package/lib/Cli/commands/_shared.js.map +1 -1
  69. package/lib/Cli/commands/aws.d.ts +6 -0
  70. package/lib/Cli/commands/aws.d.ts.map +1 -0
  71. package/lib/Cli/commands/aws.js +63 -0
  72. package/lib/Cli/commands/aws.js.map +1 -0
  73. package/lib/Cli/commands/cloudflare.d.ts +17 -0
  74. package/lib/Cli/commands/cloudflare.d.ts.map +1 -0
  75. package/lib/Cli/commands/cloudflare.js +111 -0
  76. package/lib/Cli/commands/cloudflare.js.map +1 -0
  77. package/lib/Cli/commands/deploy.d.ts +6 -5
  78. package/lib/Cli/commands/deploy.d.ts.map +1 -1
  79. package/lib/Cli/commands/deploy.js +10 -10
  80. package/lib/Cli/commands/deploy.js.map +1 -1
  81. package/lib/Cli/commands/dev.d.ts.map +1 -1
  82. package/lib/Cli/commands/dev.js +16 -16
  83. package/lib/Cli/commands/dev.js.map +1 -1
  84. package/lib/Cli/commands/login.d.ts +2 -1
  85. package/lib/Cli/commands/login.d.ts.map +1 -1
  86. package/lib/Cli/commands/login.js +9 -8
  87. package/lib/Cli/commands/login.js.map +1 -1
  88. package/lib/Cli/commands/logs.d.ts +1 -1
  89. package/lib/Cli/commands/logs.d.ts.map +1 -1
  90. package/lib/Cli/commands/logs.js +7 -7
  91. package/lib/Cli/commands/logs.js.map +1 -1
  92. package/lib/Cli/commands/profile.d.ts +3 -1
  93. package/lib/Cli/commands/profile.d.ts.map +1 -1
  94. package/lib/Cli/commands/profile.js +14 -11
  95. package/lib/Cli/commands/profile.js.map +1 -1
  96. package/lib/Cli/commands/state.d.ts +1 -1
  97. package/lib/Cli/commands/state.d.ts.map +1 -1
  98. package/lib/Cli/commands/state.js +8 -8
  99. package/lib/Cli/commands/state.js.map +1 -1
  100. package/lib/Cli/commands/tail.d.ts +1 -1
  101. package/lib/Cli/commands/tail.d.ts.map +1 -1
  102. package/lib/Cli/commands/tail.js +7 -7
  103. package/lib/Cli/commands/tail.js.map +1 -1
  104. package/lib/Cli/exec.d.ts.map +1 -1
  105. package/lib/Cli/exec.js +5 -3
  106. package/lib/Cli/exec.js.map +1 -1
  107. package/lib/Cli/main.d.ts.map +1 -1
  108. package/lib/Cli/main.js +17 -5
  109. package/lib/Cli/main.js.map +1 -1
  110. package/lib/Cli/selectCli.d.ts +12 -0
  111. package/lib/Cli/selectCli.d.ts.map +1 -0
  112. package/lib/Cli/selectCli.js +32 -0
  113. package/lib/Cli/selectCli.js.map +1 -0
  114. package/lib/Cloudflare/Auth/AuthProvider.d.ts +2 -1
  115. package/lib/Cloudflare/Auth/AuthProvider.d.ts.map +1 -1
  116. package/lib/Cloudflare/Auth/AuthProvider.js +235 -214
  117. package/lib/Cloudflare/Auth/AuthProvider.js.map +1 -1
  118. package/lib/Cloudflare/CloudflareEnvironment.d.ts +2 -1
  119. package/lib/Cloudflare/CloudflareEnvironment.d.ts.map +1 -1
  120. package/lib/Cloudflare/CloudflareEnvironment.js +3 -2
  121. package/lib/Cloudflare/CloudflareEnvironment.js.map +1 -1
  122. package/lib/Cloudflare/Credentials.d.ts +2 -1
  123. package/lib/Cloudflare/Credentials.d.ts.map +1 -1
  124. package/lib/Cloudflare/Credentials.js +4 -4
  125. package/lib/Cloudflare/Credentials.js.map +1 -1
  126. package/lib/Cloudflare/D1/D1Clone.d.ts +2 -1
  127. package/lib/Cloudflare/D1/D1Clone.d.ts.map +1 -1
  128. package/lib/Cloudflare/D1/D1Database.d.ts +2 -1
  129. package/lib/Cloudflare/D1/D1Database.d.ts.map +1 -1
  130. package/lib/Cloudflare/D1/D1Import.d.ts +3 -1
  131. package/lib/Cloudflare/D1/D1Import.d.ts.map +1 -1
  132. package/lib/Cloudflare/Local/Sidecar.d.ts +11 -4
  133. package/lib/Cloudflare/Local/Sidecar.d.ts.map +1 -1
  134. package/lib/Cloudflare/Local/Sidecar.js +8 -6
  135. package/lib/Cloudflare/Local/Sidecar.js.map +1 -1
  136. package/lib/Cloudflare/Local/SidecarHandlers.d.ts.map +1 -1
  137. package/lib/Cloudflare/Local/SidecarHandlers.js +1 -5
  138. package/lib/Cloudflare/Local/SidecarHandlers.js.map +1 -1
  139. package/lib/Cloudflare/Local/SidecarServer.js +5 -2
  140. package/lib/Cloudflare/Local/SidecarServer.js.map +1 -1
  141. package/lib/Cloudflare/Logs.d.ts +5 -0
  142. package/lib/Cloudflare/Logs.d.ts.map +1 -1
  143. package/lib/Cloudflare/Logs.js +70 -1
  144. package/lib/Cloudflare/Logs.js.map +1 -1
  145. package/lib/Cloudflare/Providers.d.ts +1 -1
  146. package/lib/Cloudflare/Providers.d.ts.map +1 -1
  147. package/lib/Cloudflare/Providers.js +4 -1
  148. package/lib/Cloudflare/Providers.js.map +1 -1
  149. package/lib/Cloudflare/Queue/Queue.d.ts +1 -1
  150. package/lib/Cloudflare/Queue/Queue.js +1 -1
  151. package/lib/Cloudflare/Queue/QueueConsumer.d.ts +6 -2
  152. package/lib/Cloudflare/Queue/QueueConsumer.d.ts.map +1 -1
  153. package/lib/Cloudflare/Queue/QueueConsumer.js +194 -53
  154. package/lib/Cloudflare/Queue/QueueConsumer.js.map +1 -1
  155. package/lib/Cloudflare/Queue/QueueEventSource.d.ts +106 -0
  156. package/lib/Cloudflare/Queue/QueueEventSource.d.ts.map +1 -0
  157. package/lib/Cloudflare/Queue/QueueEventSource.js +145 -0
  158. package/lib/Cloudflare/Queue/QueueEventSource.js.map +1 -0
  159. package/lib/Cloudflare/Queue/index.d.ts +1 -0
  160. package/lib/Cloudflare/Queue/index.d.ts.map +1 -1
  161. package/lib/Cloudflare/Queue/index.js +1 -0
  162. package/lib/Cloudflare/Queue/index.js.map +1 -1
  163. package/lib/Cloudflare/R2/R2Bucket.d.ts +94 -0
  164. package/lib/Cloudflare/R2/R2Bucket.d.ts.map +1 -1
  165. package/lib/Cloudflare/R2/R2Bucket.js +186 -2
  166. package/lib/Cloudflare/R2/R2Bucket.js.map +1 -1
  167. package/lib/Cloudflare/StateStore/State.d.ts +4 -3
  168. package/lib/Cloudflare/StateStore/State.d.ts.map +1 -1
  169. package/lib/Cloudflare/StateStore/State.js +16 -8
  170. package/lib/Cloudflare/StateStore/State.js.map +1 -1
  171. package/lib/Cloudflare/VpcService/VpcServiceRef.d.ts +1 -1
  172. package/lib/Cloudflare/VpcService/VpcServiceRef.d.ts.map +1 -1
  173. package/lib/Cloudflare/Website/StaticSite.d.ts.map +1 -1
  174. package/lib/Cloudflare/Website/StaticSite.js +10 -1
  175. package/lib/Cloudflare/Website/StaticSite.js.map +1 -1
  176. package/lib/Cloudflare/Workers/Assets.d.ts +1 -1
  177. package/lib/Cloudflare/Workers/Assets.d.ts.map +1 -1
  178. package/lib/Cloudflare/Workers/LocalWorkerProvider.d.ts.map +1 -1
  179. package/lib/Cloudflare/Workers/LocalWorkerProvider.js +11 -1
  180. package/lib/Cloudflare/Workers/LocalWorkerProvider.js.map +1 -1
  181. package/lib/Cloudflare/Workers/Worker.d.ts +9 -7
  182. package/lib/Cloudflare/Workers/Worker.d.ts.map +1 -1
  183. package/lib/Cloudflare/Workers/Worker.js +62 -142
  184. package/lib/Cloudflare/Workers/Worker.js.map +1 -1
  185. package/lib/Cloudflare/Workers/WorkerBundle.d.ts +2 -0
  186. package/lib/Cloudflare/Workers/WorkerBundle.d.ts.map +1 -1
  187. package/lib/Cloudflare/Workers/WorkerBundle.js +21 -7
  188. package/lib/Cloudflare/Workers/WorkerBundle.js.map +1 -1
  189. package/lib/Cloudflare/Zone.d.ts +14 -0
  190. package/lib/Cloudflare/Zone.d.ts.map +1 -0
  191. package/lib/Cloudflare/Zone.js +44 -0
  192. package/lib/Cloudflare/Zone.js.map +1 -0
  193. package/lib/Drizzle/Schema.d.ts.map +1 -1
  194. package/lib/Drizzle/Schema.js +20 -5
  195. package/lib/Drizzle/Schema.js.map +1 -1
  196. package/lib/GitHub/AuthProvider.d.ts +3 -1
  197. package/lib/GitHub/AuthProvider.d.ts.map +1 -1
  198. package/lib/GitHub/AuthProvider.js +114 -108
  199. package/lib/GitHub/AuthProvider.js.map +1 -1
  200. package/lib/GitHub/Credentials.d.ts +2 -1
  201. package/lib/GitHub/Credentials.d.ts.map +1 -1
  202. package/lib/GitHub/Credentials.js +4 -4
  203. package/lib/GitHub/Credentials.js.map +1 -1
  204. package/lib/GitHub/Providers.d.ts +1 -1
  205. package/lib/GitHub/Providers.d.ts.map +1 -1
  206. package/lib/GitHub/Providers.js +3 -1
  207. package/lib/GitHub/Providers.js.map +1 -1
  208. package/lib/GitHub/Secrets.d.ts.map +1 -1
  209. package/lib/GitHub/Secrets.js +14 -1
  210. package/lib/GitHub/Secrets.js.map +1 -1
  211. package/lib/GitHub/Variables.d.ts +40 -0
  212. package/lib/GitHub/Variables.d.ts.map +1 -0
  213. package/lib/GitHub/Variables.js +28 -0
  214. package/lib/GitHub/Variables.js.map +1 -0
  215. package/lib/GitHub/index.d.ts +1 -0
  216. package/lib/GitHub/index.d.ts.map +1 -1
  217. package/lib/GitHub/index.js +1 -0
  218. package/lib/GitHub/index.js.map +1 -1
  219. package/lib/Neon/AuthProvider.d.ts +3 -1
  220. package/lib/Neon/AuthProvider.d.ts.map +1 -1
  221. package/lib/Neon/AuthProvider.js +87 -80
  222. package/lib/Neon/AuthProvider.js.map +1 -1
  223. package/lib/Neon/Credentials.d.ts +2 -1
  224. package/lib/Neon/Credentials.d.ts.map +1 -1
  225. package/lib/Neon/Credentials.js +4 -4
  226. package/lib/Neon/Credentials.js.map +1 -1
  227. package/lib/Neon/NeonEnvironment.d.ts +2 -1
  228. package/lib/Neon/NeonEnvironment.d.ts.map +1 -1
  229. package/lib/Neon/NeonEnvironment.js +3 -2
  230. package/lib/Neon/NeonEnvironment.js.map +1 -1
  231. package/lib/Neon/Project.d.ts +16 -0
  232. package/lib/Neon/Project.d.ts.map +1 -1
  233. package/lib/Neon/Project.js +25 -0
  234. package/lib/Neon/Project.js.map +1 -1
  235. package/lib/Neon/Providers.d.ts +1 -1
  236. package/lib/Neon/Providers.d.ts.map +1 -1
  237. package/lib/Neon/Providers.js +3 -1
  238. package/lib/Neon/Providers.js.map +1 -1
  239. package/lib/Neon/api.d.ts +1 -0
  240. package/lib/Neon/api.d.ts.map +1 -1
  241. package/lib/Neon/api.js +1 -0
  242. package/lib/Neon/api.js.map +1 -1
  243. package/lib/Sidecar/RpcClient.d.ts.map +1 -1
  244. package/lib/Sidecar/RpcClient.js +8 -5
  245. package/lib/Sidecar/RpcClient.js.map +1 -1
  246. package/lib/Sidecar/RpcPaths.d.ts +5 -0
  247. package/lib/Sidecar/RpcPaths.d.ts.map +1 -1
  248. package/lib/Sidecar/RpcPaths.js +10 -1
  249. package/lib/Sidecar/RpcPaths.js.map +1 -1
  250. package/lib/Sidecar/RpcServer.d.ts +24 -4
  251. package/lib/Sidecar/RpcServer.d.ts.map +1 -1
  252. package/lib/Sidecar/RpcServer.js +70 -15
  253. package/lib/Sidecar/RpcServer.js.map +1 -1
  254. package/lib/Sidecar/RpcServerBun.d.ts +4 -0
  255. package/lib/Sidecar/RpcServerBun.d.ts.map +1 -0
  256. package/lib/Sidecar/RpcServerBun.js +28 -0
  257. package/lib/Sidecar/RpcServerBun.js.map +1 -0
  258. package/lib/Sidecar/RpcServerNode.d.ts +4 -0
  259. package/lib/Sidecar/RpcServerNode.d.ts.map +1 -0
  260. package/lib/Sidecar/RpcServerNode.js +39 -0
  261. package/lib/Sidecar/RpcServerNode.js.map +1 -0
  262. package/lib/Sidecar/RpcServices.d.ts +6 -0
  263. package/lib/Sidecar/RpcServices.d.ts.map +1 -0
  264. package/lib/Sidecar/RpcServices.js +29 -0
  265. package/lib/Sidecar/RpcServices.js.map +1 -0
  266. package/lib/Stack.d.ts +5 -3
  267. package/lib/Stack.d.ts.map +1 -1
  268. package/lib/Stack.js +3 -1
  269. package/lib/Stack.js.map +1 -1
  270. package/lib/Test/Core.d.ts.map +1 -1
  271. package/lib/Test/Core.js +5 -4
  272. package/lib/Test/Core.js.map +1 -1
  273. package/lib/Util/PlatformServices.js +1 -1
  274. package/lib/tsconfig.test.tsbuildinfo +1 -1
  275. package/package.json +15 -12
  276. package/src/AWS/AuthProvider.ts +269 -259
  277. package/src/AWS/Environment.ts +57 -3
  278. package/src/AWS/IAM/OpenIDConnectProvider.ts +19 -8
  279. package/src/AWS/IAM/Policy.ts +1 -1
  280. package/src/AWS/Providers.ts +2 -0
  281. package/src/Auth/Credentials.ts +82 -46
  282. package/src/Auth/Profile.ts +123 -69
  283. package/src/Axiom/AuthProvider.ts +263 -255
  284. package/src/Axiom/Credentials.ts +3 -4
  285. package/src/Axiom/Providers.ts +4 -0
  286. package/src/Cli/LoggingCli.ts +127 -11
  287. package/src/Cli/checkVersion.ts +57 -0
  288. package/src/Cli/commands/_shared.ts +4 -4
  289. package/src/Cli/commands/aws.ts +127 -0
  290. package/src/Cli/commands/cloudflare.ts +222 -0
  291. package/src/Cli/commands/deploy.ts +11 -10
  292. package/src/Cli/commands/dev.ts +28 -33
  293. package/src/Cli/commands/login.ts +9 -12
  294. package/src/Cli/commands/logs.ts +8 -8
  295. package/src/Cli/commands/profile.ts +14 -16
  296. package/src/Cli/commands/state.ts +8 -8
  297. package/src/Cli/commands/tail.ts +8 -8
  298. package/src/Cli/exec.ts +7 -3
  299. package/src/Cli/main.ts +20 -5
  300. package/src/Cli/selectCli.ts +33 -0
  301. package/src/Cloudflare/Auth/AuthProvider.ts +445 -430
  302. package/src/Cloudflare/CloudflareEnvironment.ts +3 -2
  303. package/src/Cloudflare/Credentials.ts +3 -4
  304. package/src/Cloudflare/Local/Sidecar.ts +13 -10
  305. package/src/Cloudflare/Local/SidecarHandlers.ts +8 -13
  306. package/src/Cloudflare/Local/SidecarServer.ts +6 -1
  307. package/src/Cloudflare/Logs.ts +115 -1
  308. package/src/Cloudflare/Providers.ts +6 -0
  309. package/src/Cloudflare/Queue/Queue.ts +1 -1
  310. package/src/Cloudflare/Queue/QueueConsumer.ts +262 -60
  311. package/src/Cloudflare/Queue/QueueEventSource.ts +234 -0
  312. package/src/Cloudflare/Queue/index.ts +1 -0
  313. package/src/Cloudflare/R2/R2Bucket.ts +337 -2
  314. package/src/Cloudflare/StateStore/State.ts +25 -16
  315. package/src/Cloudflare/Website/StaticSite.ts +11 -1
  316. package/src/Cloudflare/Workers/LocalWorkerProvider.ts +9 -1
  317. package/src/Cloudflare/Workers/Worker.ts +83 -203
  318. package/src/Cloudflare/Workers/WorkerBundle.ts +38 -12
  319. package/src/Cloudflare/Zone.ts +88 -0
  320. package/src/Drizzle/Schema.ts +21 -5
  321. package/src/GitHub/AuthProvider.ts +221 -217
  322. package/src/GitHub/Credentials.ts +3 -4
  323. package/src/GitHub/Providers.ts +4 -0
  324. package/src/GitHub/Secrets.ts +25 -1
  325. package/src/GitHub/Variables.ts +54 -0
  326. package/src/GitHub/index.ts +1 -0
  327. package/src/Neon/AuthProvider.ts +160 -154
  328. package/src/Neon/Credentials.ts +3 -4
  329. package/src/Neon/NeonEnvironment.ts +3 -2
  330. package/src/Neon/Project.ts +42 -0
  331. package/src/Neon/Providers.ts +4 -0
  332. package/src/Neon/api.ts +2 -0
  333. package/src/Sidecar/RpcClient.ts +8 -7
  334. package/src/Sidecar/RpcPaths.ts +11 -1
  335. package/src/Sidecar/RpcServer.ts +97 -24
  336. package/src/Sidecar/RpcServerBun.ts +41 -0
  337. package/src/Sidecar/RpcServerNode.ts +51 -0
  338. package/src/Sidecar/RpcServices.ts +48 -0
  339. package/src/Stack.ts +8 -0
  340. package/src/Test/Core.ts +10 -4
  341. package/src/Util/PlatformServices.ts +1 -1
  342. package/lib/Cli/commands/bootstrap.d.ts +0 -20
  343. package/lib/Cli/commands/bootstrap.d.ts.map +0 -1
  344. package/lib/Cli/commands/bootstrap.js +0 -107
  345. package/lib/Cli/commands/bootstrap.js.map +0 -1
  346. package/lib/Sidecar/RpcTransport.d.ts +0 -22
  347. package/lib/Sidecar/RpcTransport.d.ts.map +0 -1
  348. package/lib/Sidecar/RpcTransport.js +0 -81
  349. package/lib/Sidecar/RpcTransport.js.map +0 -1
  350. package/lib/Test/TestCli.d.ts +0 -19
  351. package/lib/Test/TestCli.d.ts.map +0 -1
  352. package/lib/Test/TestCli.js +0 -175
  353. package/lib/Test/TestCli.js.map +0 -1
  354. package/src/Cli/commands/bootstrap.ts +0 -216
  355. package/src/Sidecar/RpcTransport.ts +0 -85
  356. package/src/Test/TestCli.ts +0 -221
@@ -1,15 +1,26 @@
1
1
  import * as queues from "@distilled.cloud/cloudflare/queues";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as Option from "effect/Option";
4
+ import * as Schedule from "effect/Schedule";
5
+ import * as Stream from "effect/Stream";
3
6
  import { isResolved } from "../../Diff.js";
4
7
  import * as Provider from "../../Provider.js";
5
8
  import { Resource } from "../../Resource.js";
6
9
  import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
10
+ // ~60s budget — Worker reconcile uploads typically land in 2–10s,
11
+ // but a fresh container/asset deploy can stretch that.
12
+ const queueHandlerReadinessSchedule = Schedule.spaced("2 seconds").pipe(Schedule.both(Schedule.recurs(30)));
7
13
  /**
8
14
  * A Cloudflare Queue Consumer that processes messages from a Queue.
9
15
  *
10
16
  * Register a Worker as a consumer of a Queue. The Worker's `queue()`
11
17
  * handler will be invoked with batches of messages.
12
18
  *
19
+ * Cloudflare allows at most one Worker consumer per queue (HTTP-pull
20
+ * consumers can coexist). The reconciler enforces this: if the queue
21
+ * already has a Worker consumer pointing at a different script, the
22
+ * deploy fails with a clear error rather than silently adopting it.
23
+ *
13
24
  * @section Registering a Consumer
14
25
  * @example Basic consumer
15
26
  * ```typescript
@@ -36,13 +47,20 @@ import { CloudflareEnvironment } from "../CloudflareEnvironment.js";
36
47
  * ```
37
48
  */
38
49
  export const QueueConsumer = Resource("Cloudflare.QueueConsumer");
50
+ const toObserved = (c) => c.consumerId && c.type === "worker"
51
+ ? { consumerId: c.consumerId, script: c.script ?? undefined }
52
+ : undefined;
39
53
  export const QueueConsumerProvider = () => Provider.effect(QueueConsumer, Effect.gen(function* () {
40
54
  const { accountId } = yield* CloudflareEnvironment;
41
55
  const createConsumer = yield* queues.createConsumer;
42
56
  const getConsumer = yield* queues.getConsumer;
43
57
  const updateConsumer = yield* queues.updateConsumer;
44
58
  const deleteConsumer = yield* queues.deleteConsumer;
45
- const listConsumers = yield* queues.listConsumers;
59
+ // Cloudflare allows a single Worker consumer per queue, so the
60
+ // first match in the paginated stream is the only one. Using
61
+ // `.items` defeats single-page lookups that would otherwise
62
+ // miss late-arriving consumers under eventual consistency.
63
+ const findWorkerConsumer = (acct, queueId) => queues.listConsumers.items({ accountId: acct, queueId }).pipe(Stream.map(toObserved), Stream.filter((c) => c !== undefined), Stream.runHead, Effect.map(Option.getOrUndefined));
46
64
  return {
47
65
  stables: ["consumerId", "accountId"],
48
66
  diff: Effect.fn(function* ({ olds, news, output }) {
@@ -51,45 +69,109 @@ export const QueueConsumerProvider = () => Provider.effect(QueueConsumer, Effect
51
69
  if ((output?.accountId ?? accountId) !== accountId) {
52
70
  return { action: "replace" };
53
71
  }
54
- // Queue change requires replacement
72
+ // Queue change requires replacement — consumerId is bound
73
+ // to a queue and the API has no "move consumer" verb.
55
74
  if (output?.queueId && news.queueId !== output.queueId) {
56
- return { action: "replace" };
57
- }
58
- // Script change requires replacement
59
- if (output?.scriptName && news.scriptName !== output.scriptName) {
60
- return { action: "replace" };
75
+ return { action: "replace", deleteFirst: true };
61
76
  }
62
- // Settings change is an update
77
+ // Settings / DLQ / script drift is an update. We DON'T
78
+ // escalate scriptName changes to `replace` because the
79
+ // engine resolves cross-resource Output<string> refs (a
80
+ // sibling Worker's `workerName`) lazily — when the upstream
81
+ // Worker is created in the same plan, `news` is partially
82
+ // unresolved at diff time and `isResolved(news)` short-
83
+ // circuits up top. Falling through to "update" lets the
84
+ // engine call reconcile with fully-resolved `news`, where
85
+ // we detect script drift and rebuild the consumer in
86
+ // place (Cloudflare's PUT silently ignores `script_name`
87
+ // changes, so reconcile does delete-then-create).
63
88
  if (JSON.stringify(olds.settings ?? {}) !==
64
- JSON.stringify(news.settings ?? {})) {
89
+ JSON.stringify(news.settings ?? {}) ||
90
+ (olds.deadLetterQueue ?? undefined) !==
91
+ (news.deadLetterQueue ?? undefined) ||
92
+ (output?.scriptName !== undefined &&
93
+ news.scriptName !== output.scriptName)) {
65
94
  return { action: "update" };
66
95
  }
67
96
  }),
68
97
  reconcile: Effect.fn(function* ({ news, output }) {
69
98
  const acct = output?.accountId ?? accountId;
70
99
  const queueId = output?.queueId ?? news.queueId;
71
- // Observe — re-fetch the cached consumer; fall back to a list
72
- // scan filtered by script so we recover from out-of-band
73
- // deletes or partial state-persistence failures (the create
74
- // call may have written the consumer but lost the response).
100
+ // Observe — prefer the cached consumerId, then fall back to
101
+ // listConsumers (paginated) to recover from out-of-band
102
+ // deletes or partial state-persistence failures. Track
103
+ // whether the observation came from the cached id or the
104
+ // list scan: a different-script worker consumer found via
105
+ // the list scan is potentially foreign (state was lost,
106
+ // someone else attached the consumer), and silently
107
+ // updating it could clobber another team's wiring.
75
108
  let observed;
109
+ let owned = false;
76
110
  if (output?.consumerId) {
77
- observed = yield* getConsumer({
111
+ const fetched = yield* getConsumer({
78
112
  accountId: acct,
79
- queueId: output.queueId,
113
+ queueId,
80
114
  consumerId: output.consumerId,
81
- }).pipe(Effect.catch(() => Effect.succeed(undefined)));
115
+ }).pipe(Effect.catchTag("ConsumerNotFound", () => Effect.succeed(undefined)));
116
+ if (fetched) {
117
+ observed = toObserved(fetched);
118
+ owned = observed !== undefined;
119
+ }
82
120
  }
83
121
  if (!observed) {
84
- const existing = yield* listConsumers({
122
+ observed = yield* findWorkerConsumer(acct, queueId);
123
+ }
124
+ // Owned consumer pointing at a different script: rebuild
125
+ // it in place. Cloudflare's PUT consumer silently ignores
126
+ // `script_name` changes on existing consumers (the live
127
+ // record stays pinned to the original worker), and the
128
+ // platform allows only one Worker consumer per queue, so
129
+ // the only path to re-point is delete-then-create.
130
+ if (owned &&
131
+ observed &&
132
+ observed.script !== undefined &&
133
+ observed.script !== news.scriptName) {
134
+ yield* deleteConsumer({
85
135
  accountId: acct,
86
136
  queueId,
87
- });
88
- observed = existing.result.find((c) => "script" in c && c.script === news.scriptName);
137
+ consumerId: observed.consumerId,
138
+ }).pipe(Effect.catchTag("ConsumerNotFound", () => Effect.void));
139
+ // Wait for Cloudflare's worker subsystem to drop its
140
+ // claim on the old script so createConsumer below
141
+ // doesn't race the queue↔script propagation lag.
142
+ yield* getConsumer({
143
+ accountId: acct,
144
+ queueId,
145
+ consumerId: observed.consumerId,
146
+ }).pipe(Effect.flatMap(() => Effect.fail("still-attached")), Effect.catchTag("ConsumerNotFound", () => Effect.void), Effect.retry({
147
+ while: (e) => e === "still-attached",
148
+ schedule: Schedule.spaced("1 second").pipe(Schedule.both(Schedule.recurs(30))),
149
+ }), Effect.ignore);
150
+ observed = undefined;
151
+ owned = false;
89
152
  }
90
- // Ensure — create if missing. The Cloudflare API rejects a
91
- // duplicate consumer (same queue + script), so we tolerate
92
- // that race by adopting the existing one via list.
153
+ // Refuse to take over a foreign consumer on the state-loss
154
+ // path. With `owned=false` we found this via the list scan
155
+ // and the script mismatch means it belongs to another
156
+ // resource or was created out-of-band — silent adoption
157
+ // would clobber that.
158
+ if (observed &&
159
+ !owned &&
160
+ observed.script !== undefined &&
161
+ observed.script !== news.scriptName) {
162
+ return yield* Effect.die(`Cloudflare queue "${queueId}" already has a worker ` +
163
+ `consumer for script "${observed.script}", but this ` +
164
+ `resource is configured for "${news.scriptName}" and ` +
165
+ `local state for the consumer was missing. Each queue ` +
166
+ `can have only one worker consumer — delete the ` +
167
+ `existing one, update scriptName to match, or restore ` +
168
+ `the consumer's state entry before redeploying.`);
169
+ }
170
+ // Ensure — create if missing. ConsumerAlreadyExists is the
171
+ // race signal: another reconcile or peer beat us to it.
172
+ // Re-run the lookup; the paginated stream tolerates the
173
+ // single-page eventual-consistency window the previous
174
+ // implementation missed.
93
175
  let consumerId;
94
176
  if (!observed) {
95
177
  const created = yield* createConsumer({
@@ -99,34 +181,62 @@ export const QueueConsumerProvider = () => Provider.effect(QueueConsumer, Effect
99
181
  type: "worker",
100
182
  deadLetterQueue: news.deadLetterQueue,
101
183
  settings: news.settings,
102
- }).pipe(Effect.catch(() => Effect.gen(function* () {
103
- const existing = yield* listConsumers({
104
- accountId: acct,
105
- queueId,
106
- });
107
- const match = existing.result.find((c) => "script" in c && c.script === news.scriptName);
108
- if (match && match.consumerId) {
109
- return match;
184
+ }).pipe(
185
+ // The sibling Worker resource pre-creates a placeholder
186
+ // script with no `queue` handler; Cloudflare returns
187
+ // code 11001 until the real reconcile uploads the
188
+ // handler. Retry until the upload propagates (capped),
189
+ // then surface a real failure if it never does.
190
+ Effect.tapError((e) => e._tag === "QueueHandlerMissing"
191
+ ? Effect.logDebug(`QueueConsumer create: worker ` +
192
+ `"${news.scriptName}" has no queue handler ` +
193
+ `yet (code 11001), retrying`)
194
+ : Effect.void), Effect.retry({
195
+ while: (e) => e._tag === "QueueHandlerMissing",
196
+ schedule: queueHandlerReadinessSchedule,
197
+ }), Effect.catchTag("ConsumerAlreadyExists", (cause) => Effect.gen(function* () {
198
+ const match = yield* findWorkerConsumer(acct, queueId);
199
+ if (!match) {
200
+ return yield* Effect.die(`Cloudflare reported a worker consumer already ` +
201
+ `exists on queue "${queueId}", but listConsumers ` +
202
+ `returned none. Retry the deploy; if this ` +
203
+ `persists, the queue is in an inconsistent ` +
204
+ `state. Underlying error: ${cause.message}`);
205
+ }
206
+ if (match.script !== undefined &&
207
+ match.script !== news.scriptName) {
208
+ return yield* Effect.die(`Cloudflare queue "${queueId}" already has a ` +
209
+ `worker consumer for script "${match.script}", ` +
210
+ `but this resource is configured for ` +
211
+ `"${news.scriptName}". Each queue can have only ` +
212
+ `one worker consumer — delete the existing one ` +
213
+ `or update scriptName to match before redeploying.`);
110
214
  }
111
- return yield* Effect.die(`Consumer for script "${news.scriptName}" on queue "${queueId}" already exists but could not be found`);
215
+ return match;
112
216
  })));
113
217
  consumerId = created.consumerId;
114
218
  }
115
219
  else {
116
220
  consumerId = observed.consumerId;
117
- // Sync — update settings and dead-letter target on the
118
- // existing consumer. The Cloudflare API replaces all mutable
119
- // fields per call, so always issue this so adoption converges.
120
- yield* updateConsumer({
121
- accountId: acct,
122
- queueId,
123
- consumerId,
124
- scriptName: news.scriptName,
125
- type: "worker",
126
- settings: news.settings,
127
- deadLetterQueue: news.deadLetterQueue,
128
- });
129
221
  }
222
+ // Sync — Cloudflare replaces all mutable fields on
223
+ // updateConsumer, so always issue this so adoption converges
224
+ // and settings drift gets corrected on every reconcile.
225
+ // updateConsumer hits the same "queue handler missing" race
226
+ // window as create when the worker is mid-upload, so apply
227
+ // the same bounded retry.
228
+ yield* updateConsumer({
229
+ accountId: acct,
230
+ queueId,
231
+ consumerId,
232
+ scriptName: news.scriptName,
233
+ type: "worker",
234
+ settings: news.settings,
235
+ deadLetterQueue: news.deadLetterQueue,
236
+ }).pipe(Effect.retry({
237
+ while: (e) => e._tag === "QueueHandlerMissing",
238
+ schedule: queueHandlerReadinessSchedule,
239
+ }));
130
240
  return {
131
241
  consumerId,
132
242
  queueId,
@@ -139,22 +249,53 @@ export const QueueConsumerProvider = () => Provider.effect(QueueConsumer, Effect
139
249
  accountId: output.accountId,
140
250
  queueId: output.queueId,
141
251
  consumerId: output.consumerId,
142
- }).pipe(Effect.catch(() => Effect.void));
252
+ }).pipe(Effect.catchTag("ConsumerNotFound", () => Effect.void));
253
+ // Block until Cloudflare's worker subsystem stops claiming
254
+ // the script as a queue consumer. Without this the
255
+ // sibling Worker.delete races on `QueueConsumerConflict`
256
+ // (code 10064) — `deleteConsumer` returns success on the
257
+ // queue subsystem before the script-side view propagates.
258
+ yield* getConsumer({
259
+ accountId: output.accountId,
260
+ queueId: output.queueId,
261
+ consumerId: output.consumerId,
262
+ }).pipe(Effect.flatMap(() => Effect.fail("still-attached")), Effect.catchTag("ConsumerNotFound", () => Effect.void), Effect.retry({
263
+ while: (e) => e === "still-attached",
264
+ schedule: Schedule.spaced("1 second").pipe(Schedule.both(Schedule.recurs(30))),
265
+ }), Effect.ignore);
143
266
  }),
144
267
  read: Effect.fn(function* ({ output }) {
145
268
  if (output?.consumerId) {
146
- return yield* getConsumer({
269
+ const fetched = yield* getConsumer({
147
270
  accountId: output.accountId,
148
271
  queueId: output.queueId,
149
272
  consumerId: output.consumerId,
150
- }).pipe(Effect.map((consumer) => ({
151
- consumerId: consumer.consumerId,
152
- queueId: output.queueId,
153
- scriptName: ("script" in consumer
154
- ? consumer.script
155
- : output.scriptName) ?? output.scriptName,
156
- accountId: output.accountId,
157
- })), Effect.catch(() => Effect.succeed(undefined)));
273
+ }).pipe(Effect.catchTag("ConsumerNotFound", () => Effect.succeed(undefined)));
274
+ if (fetched) {
275
+ return {
276
+ consumerId: fetched.consumerId,
277
+ queueId: output.queueId,
278
+ scriptName: ("script" in fetched && typeof fetched.script === "string"
279
+ ? fetched.script
280
+ : output.scriptName) ?? output.scriptName,
281
+ accountId: output.accountId,
282
+ };
283
+ }
284
+ }
285
+ // Fallback: a state loss can leave us without a consumerId
286
+ // even though the consumer is still alive on Cloudflare. The
287
+ // queue allows only one worker consumer, so finding it via
288
+ // listConsumers is unambiguous.
289
+ if (output?.queueId && output?.accountId) {
290
+ const match = yield* findWorkerConsumer(output.accountId, output.queueId);
291
+ if (match) {
292
+ return {
293
+ consumerId: match.consumerId,
294
+ queueId: output.queueId,
295
+ scriptName: match.script ?? output.scriptName,
296
+ accountId: output.accountId,
297
+ };
298
+ }
158
299
  }
159
300
  return undefined;
160
301
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"QueueConsumer.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueConsumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueueConsumer.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueConsumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,oCAAoC,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,kEAAkE;AAClE,uDAAuD;AACvD,MAAM,6BAA6B,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACrE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CACnC,CAAC;AA0DF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CACnC,0BAA0B,CAC3B,CAAC;AAOF,MAAM,UAAU,GAAG,CAAC,CAInB,EAAgC,EAAE,CACjC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;IACjC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE;IAC7D,CAAC,CAAC,SAAS,CAAC;AAEhB,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CACxC,QAAQ,CAAC,MAAM,CACb,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC;IACnD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IACpD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;IAEpD,+DAA+D;IAC/D,6DAA6D;IAC7D,4DAA4D;IAC5D,2DAA2D;IAC3D,MAAM,kBAAkB,GAAG,CACzB,IAAY,EACZ,OAAe,EACwC,EAAE,CACzD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAC3D,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EAC5D,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAClC,CAAC;IAEJ,OAAO;QACL,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;YAC/C,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,0DAA0D;YAC1D,sDAAsD;YACtD,IAAI,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAW,CAAC;YAC3D,CAAC;YACD,uDAAuD;YACvD,uDAAuD;YACvD,wDAAwD;YACxD,4DAA4D;YAC5D,0DAA0D;YAC1D,wDAAwD;YACxD,wDAAwD;YACxD,0DAA0D;YAC1D,qDAAqD;YACrD,yDAAyD;YACzD,kDAAkD;YAClD,IACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACrC,CAAC,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC;oBACjC,CAAC,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC;gBACrC,CAAC,MAAM,EAAE,UAAU,KAAK,SAAS;oBAC/B,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,EACxC,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAW,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QACF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC;YAC5C,MAAM,OAAO,GACX,MAAM,EAAE,OAAO,IAAK,IAAI,CAAC,OAA6B,CAAC;YAEzD,4DAA4D;YAC5D,wDAAwD;YACxD,uDAAuD;YACvD,yDAAyD;YACzD,0DAA0D;YAC1D,wDAAwD;YACxD,oDAAoD;YACpD,mDAAmD;YACnD,IAAI,QAAsC,CAAC;YAC3C,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;oBACjC,SAAS,EAAE,IAAI;oBACf,OAAO;oBACP,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1B,CACF,CAAC;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;oBAC/B,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAED,yDAAyD;YACzD,0DAA0D;YAC1D,wDAAwD;YACxD,uDAAuD;YACvD,yDAAyD;YACzD,mDAAmD;YACnD,IACE,KAAK;gBACL,QAAQ;gBACR,QAAQ,CAAC,MAAM,KAAK,SAAS;gBAC7B,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EACnC,CAAC;gBACD,KAAK,CAAC,CAAC,cAAc,CAAC;oBACpB,SAAS,EAAE,IAAI;oBACf,OAAO;oBACP,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChE,qDAAqD;gBACrD,kDAAkD;gBAClD,iDAAiD;gBACjD,KAAK,CAAC,CAAC,WAAW,CAAC;oBACjB,SAAS,EAAE,IAAI;oBACf,OAAO;oBACP,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAyB,CAAC,CAAC,EAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACtD,MAAM,CAAC,KAAK,CAAC;oBACX,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB;oBACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACxC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CACnC;iBACF,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CAAC;gBACF,QAAQ,GAAG,SAAS,CAAC;gBACrB,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YAED,2DAA2D;YAC3D,2DAA2D;YAC3D,sDAAsD;YACtD,wDAAwD;YACxD,sBAAsB;YACtB,IACE,QAAQ;gBACR,CAAC,KAAK;gBACN,QAAQ,CAAC,MAAM,KAAK,SAAS;gBAC7B,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EACnC,CAAC;gBACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,qBAAqB,OAAO,yBAAyB;oBACnD,wBAAwB,QAAQ,CAAC,MAAM,cAAc;oBACrD,+BAA+B,IAAI,CAAC,UAAU,QAAQ;oBACtD,uDAAuD;oBACvD,iDAAiD;oBACjD,uDAAuD;oBACvD,gDAAgD,CACnD,CAAC;YACJ,CAAC;YAED,2DAA2D;YAC3D,wDAAwD;YACxD,wDAAwD;YACxD,uDAAuD;YACvD,yBAAyB;YACzB,IAAI,UAAkB,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;oBACpC,SAAS,EAAE,IAAI;oBACf,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,IAAI,EAAE,QAAQ;oBACd,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC,IAAI;gBACL,wDAAwD;gBACxD,qDAAqD;gBACrD,kDAAkD;gBAClD,uDAAuD;gBACvD,gDAAgD;gBAChD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,IAAI,KAAK,qBAAqB;oBAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,CACb,+BAA+B;wBAC7B,IAAI,IAAI,CAAC,UAAU,yBAAyB;wBAC5C,4BAA4B,CAC/B;oBACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,EACD,MAAM,CAAC,KAAK,CAAC;oBACX,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB;oBAC9C,QAAQ,EAAE,6BAA6B;iBACxC,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,EAAE,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,gDAAgD;4BAC9C,oBAAoB,OAAO,uBAAuB;4BAClD,2CAA2C;4BAC3C,4CAA4C;4BAC5C,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAC9C,CAAC;oBACJ,CAAC;oBACD,IACE,KAAK,CAAC,MAAM,KAAK,SAAS;wBAC1B,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAChC,CAAC;wBACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,qBAAqB,OAAO,kBAAkB;4BAC5C,+BAA+B,KAAK,CAAC,MAAM,KAAK;4BAChD,sCAAsC;4BACtC,IAAI,IAAI,CAAC,UAAU,8BAA8B;4BACjD,gDAAgD;4BAChD,mDAAmD,CACtD,CAAC;oBACJ,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC,CACH,CACF,CAAC;gBACF,UAAU,GAAG,OAAO,CAAC,UAAW,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;YACnC,CAAC;YAED,mDAAmD;YACnD,6DAA6D;YAC7D,wDAAwD;YACxD,4DAA4D;YAC5D,2DAA2D;YAC3D,0BAA0B;YAC1B,KAAK,CAAC,CAAC,cAAc,CAAC;gBACpB,SAAS,EAAE,IAAI;gBACf,OAAO;gBACP,UAAU;gBACV,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,eAAe;aACtC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB;gBAC9C,QAAQ,EAAE,6BAA6B;aACxC,CAAC,CACH,CAAC;YAEF,OAAO;gBACL,UAAU;gBACV,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,UAAW;gBAC5B,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACrC,KAAK,CAAC,CAAC,cAAc,CAAC;gBACpB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhE,2DAA2D;YAC3D,mDAAmD;YACnD,yDAAyD;YACzD,yDAAyD;YACzD,0DAA0D;YAC1D,KAAK,CAAC,CAAC,WAAW,CAAC;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAyB,CAAC,CAAC,EAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EACtD,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB;gBACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACxC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CACnC;aACF,CAAC,EACF,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE;YACnC,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;oBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1B,CACF,CAAC;gBACF,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO;wBACL,UAAU,EAAE,OAAO,CAAC,UAAW;wBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,UAAU,EACR,CAAC,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;4BACxD,CAAC,CAAC,OAAO,CAAC,MAAM;4BAChB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU;wBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,2DAA2D;YAC3D,6DAA6D;YAC7D,2DAA2D;YAC3D,gCAAgC;YAChC,IAAI,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,kBAAkB,CACrC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,CACf,CAAC;gBACF,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO;wBACL,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU;wBAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -0,0 +1,106 @@
1
+ import type * as cf from "@cloudflare/workers-types";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Stream from "effect/Stream";
6
+ import * as Binding from "../../Binding.ts";
7
+ import { RuntimeContext } from "../../RuntimeContext.ts";
8
+ import type { Queue } from "./Queue.ts";
9
+ /**
10
+ * Subscriber settings — the same shape Cloudflare's `QueueConsumer`
11
+ * accepts. `messages(queue, props).subscribe(...)` passes these
12
+ * through to the auto-created `Cloudflare.QueueConsumer` so a single
13
+ * call captures both runtime and deploy-time intent.
14
+ */
15
+ export interface MessagesProps {
16
+ /** Maximum messages per batch. */
17
+ batchSize?: number;
18
+ /** Maximum concurrent invocations. */
19
+ maxConcurrency?: number;
20
+ /** Maximum delivery attempts before dead-lettering. */
21
+ maxRetries?: number;
22
+ /** Wait time, in ms, before flushing a partial batch. */
23
+ maxWaitTimeMs?: number;
24
+ /** Backoff, in seconds, applied to a retry. */
25
+ retryDelay?: number;
26
+ /** Optional dead-letter queue name. */
27
+ deadLetterQueue?: string;
28
+ }
29
+ /**
30
+ * A single queue message handed to the subscribe handler. Mirrors
31
+ * Cloudflare's runtime `Message<Body>` shape so per-message
32
+ * `ack()` / `retry()` semantics match the platform docs.
33
+ */
34
+ export type QueueMessage<Body = unknown> = cf.Message<Body>;
35
+ /**
36
+ * Subscribe to a Cloudflare Queue with an Effect stream handler.
37
+ *
38
+ * Mirrors `AWS.SQS.messages(queue).subscribe(...)` on the
39
+ * Cloudflare side. Wires both halves of the consumer in one call:
40
+ *
41
+ * - **Runtime**: registers a `queue` event listener on the Worker.
42
+ * Each batch is piped through `process` as a `Stream.Stream`.
43
+ * - **Deploy-time**: yields a `Cloudflare.QueueConsumer` resource
44
+ * so Cloudflare actually dispatches messages from `queue` to
45
+ * this Worker. No manual `QueueConsumer` wiring needed in
46
+ * `alchemy.run.ts`.
47
+ *
48
+ * Acking semantics: if `process` succeeds, every message in the
49
+ * batch is `ack()`ed; if it fails, every message is `retry()`ed
50
+ * and Cloudflare applies `maxRetries` / `retryDelay` from the
51
+ * settings before dead-lettering. Per-message control is still
52
+ * available by calling `msg.ack()` / `msg.retry()` inside the
53
+ * handler.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import * as Cloudflare from "alchemy/Cloudflare";
58
+ * import * as Effect from "effect/Effect";
59
+ * import * as Stream from "effect/Stream";
60
+ *
61
+ * yield* Cloudflare.messages<MyEvent>(queueResource, {
62
+ * batchSize: 25,
63
+ * maxRetries: 3,
64
+ * }).subscribe((stream) =>
65
+ * Stream.runForEach(stream, (msg) =>
66
+ * Effect.log(`event ${msg.body.id}`),
67
+ * ),
68
+ * );
69
+ * ```
70
+ */
71
+ export declare const messages: <Body = unknown>(queue: Queue, props?: MessagesProps) => {
72
+ subscribe: <Req = never>(process: (stream: Stream.Stream<QueueMessage<Body>>) => Effect.Effect<void, unknown, Req>) => Effect.Effect<void, never, QueueEventSource>;
73
+ };
74
+ export type QueueEventSourceService = <Body = unknown, Req = never>(queue: Queue, props: MessagesProps, process: (stream: Stream.Stream<QueueMessage<Body>>) => Effect.Effect<void, unknown, Req>) => Effect.Effect<void, never, never>;
75
+ declare const QueueEventSource_base: Context.ServiceClass<QueueEventSource, "Cloudflare.Queue.QueueEventSource", QueueEventSourceService>;
76
+ /**
77
+ * Service tag for the Cloudflare Queue event source. Provided by
78
+ * {@link QueueEventSourceLive} on the Worker's runtime layer.
79
+ */
80
+ export declare class QueueEventSource extends QueueEventSource_base {
81
+ }
82
+ declare const QueueEventSourcePolicy_base: Binding.Policy<QueueEventSourcePolicy, "Policy<Cloudflare.Queue.QueueEventSource>", (queue: Queue, props: MessagesProps) => Effect.Effect<void>>;
83
+ /**
84
+ * Deploy-time policy that yields a `Cloudflare.QueueConsumer`
85
+ * resource pointing the host Worker at the queue. Provided in
86
+ * `Cloudflare.providers()` and used by {@link QueueEventSourceLive}
87
+ * via `yield* QueueEventSourcePolicy(...)`. At runtime the policy
88
+ * is absent, so the call is a no-op.
89
+ */
90
+ export declare class QueueEventSourcePolicy extends QueueEventSourcePolicy_base {
91
+ }
92
+ export declare const QueueEventSourcePolicyLive: Layer.Layer<QueueEventSourcePolicy, never, never>;
93
+ /**
94
+ * Runtime layer for {@link messages}. Wires each
95
+ * `messages(queue).subscribe(...)` call in the Worker init phase to
96
+ * a `queue` event listener on the runtime context, and asks the
97
+ * deploy-time policy ({@link QueueEventSourcePolicy}, provided in
98
+ * `Cloudflare.providers()`) to yield the matching
99
+ * `Cloudflare.QueueConsumer` resource.
100
+ *
101
+ * Provide alongside other Cloudflare runtime layers (e.g.
102
+ * `QueueBindingLive`) on the Worker effect.
103
+ */
104
+ export declare const QueueEventSourceLive: Layer.Layer<QueueEventSource, never, RuntimeContext<import("../../RuntimeContext.ts").BaseRuntimeContext> | QueueEventSourcePolicy>;
105
+ export {};
106
+ //# sourceMappingURL=QueueEventSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueEventSource.d.ts","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueEventSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,QAAQ,GAAI,IAAI,GAAG,OAAO,EACrC,OAAO,KAAK,EACZ,QAAO,aAAkB;gBAEb,GAAG,mBACJ,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC;CAGxC,CAAC;AAQH,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,GAAG,KAAK,EAChE,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;;AAEvC;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGE;CAAG;uIAWjC,KAAK,SAAS,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAT7D;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,2BAGJ;CAAG;AAE3C,eAAO,MAAM,0BAA0B,mDAiCtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,qIA8DhC,CAAC"}
@@ -0,0 +1,145 @@
1
+ import * as Cause from "effect/Cause";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Stream from "effect/Stream";
6
+ import * as Binding from "../../Binding.js";
7
+ import { RuntimeContext } from "../../RuntimeContext.js";
8
+ import { isWorker, isWorkerEvent } from "../Workers/Worker.js";
9
+ import { QueueConsumer } from "./QueueConsumer.js";
10
+ /**
11
+ * Subscribe to a Cloudflare Queue with an Effect stream handler.
12
+ *
13
+ * Mirrors `AWS.SQS.messages(queue).subscribe(...)` on the
14
+ * Cloudflare side. Wires both halves of the consumer in one call:
15
+ *
16
+ * - **Runtime**: registers a `queue` event listener on the Worker.
17
+ * Each batch is piped through `process` as a `Stream.Stream`.
18
+ * - **Deploy-time**: yields a `Cloudflare.QueueConsumer` resource
19
+ * so Cloudflare actually dispatches messages from `queue` to
20
+ * this Worker. No manual `QueueConsumer` wiring needed in
21
+ * `alchemy.run.ts`.
22
+ *
23
+ * Acking semantics: if `process` succeeds, every message in the
24
+ * batch is `ack()`ed; if it fails, every message is `retry()`ed
25
+ * and Cloudflare applies `maxRetries` / `retryDelay` from the
26
+ * settings before dead-lettering. Per-message control is still
27
+ * available by calling `msg.ack()` / `msg.retry()` inside the
28
+ * handler.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * import * as Cloudflare from "alchemy/Cloudflare";
33
+ * import * as Effect from "effect/Effect";
34
+ * import * as Stream from "effect/Stream";
35
+ *
36
+ * yield* Cloudflare.messages<MyEvent>(queueResource, {
37
+ * batchSize: 25,
38
+ * maxRetries: 3,
39
+ * }).subscribe((stream) =>
40
+ * Stream.runForEach(stream, (msg) =>
41
+ * Effect.log(`event ${msg.body.id}`),
42
+ * ),
43
+ * );
44
+ * ```
45
+ */
46
+ export const messages = (queue, props = {}) => ({
47
+ subscribe: (process) => QueueEventSource.use((source) => source(queue, props, process)),
48
+ });
49
+ /**
50
+ * Service tag for the Cloudflare Queue event source. Provided by
51
+ * {@link QueueEventSourceLive} on the Worker's runtime layer.
52
+ */
53
+ export class QueueEventSource extends Context.Service()("Cloudflare.Queue.QueueEventSource") {
54
+ }
55
+ /**
56
+ * Deploy-time policy that yields a `Cloudflare.QueueConsumer`
57
+ * resource pointing the host Worker at the queue. Provided in
58
+ * `Cloudflare.providers()` and used by {@link QueueEventSourceLive}
59
+ * via `yield* QueueEventSourcePolicy(...)`. At runtime the policy
60
+ * is absent, so the call is a no-op.
61
+ */
62
+ export class QueueEventSourcePolicy extends Binding.Policy()("Cloudflare.Queue.QueueEventSource") {
63
+ }
64
+ export const QueueEventSourcePolicyLive = QueueEventSourcePolicy.layer.succeed(
65
+ // Cast: yielding `QueueConsumer(...)` requires the Cloudflare
66
+ // `Providers` services, which the deploy-time stack provides
67
+ // when this policy runs (the worker's init scope inherits the
68
+ // stack's services). `Binding.Policy.layer.succeed` types the
69
+ // body as `Effect<void, never, never>` to keep most policies
70
+ // simple; we step around that constraint here because we
71
+ // genuinely need to spawn a sibling resource at deploy time.
72
+ ((host, queue, props) => Effect.gen(function* () {
73
+ if (!isWorker(host)) {
74
+ return yield* Effect.die(`Cloudflare.messages(...).subscribe(...) is only supported on ` +
75
+ `Cloudflare.Worker hosts (got '${host.Type}').`);
76
+ }
77
+ // Yield the QueueConsumer resource as a sibling of the
78
+ // Worker. The engine creates / updates / destroys it
79
+ // alongside the Worker's lifecycle; the consumer's
80
+ // reconciler waits for the Worker upload to expose the
81
+ // `queue` handler before completing (see PR #257 for the
82
+ // 11001 retry).
83
+ yield* QueueConsumer(`${queue.LogicalId}Consumer`, {
84
+ queueId: queue.queueId,
85
+ scriptName: host.workerName,
86
+ settings: props,
87
+ deadLetterQueue: props.deadLetterQueue,
88
+ });
89
+ })));
90
+ /**
91
+ * Runtime layer for {@link messages}. Wires each
92
+ * `messages(queue).subscribe(...)` call in the Worker init phase to
93
+ * a `queue` event listener on the runtime context, and asks the
94
+ * deploy-time policy ({@link QueueEventSourcePolicy}, provided in
95
+ * `Cloudflare.providers()`) to yield the matching
96
+ * `Cloudflare.QueueConsumer` resource.
97
+ *
98
+ * Provide alongside other Cloudflare runtime layers (e.g.
99
+ * `QueueBindingLive`) on the Worker effect.
100
+ */
101
+ export const QueueEventSourceLive = Layer.effect(QueueEventSource, Effect.gen(function* () {
102
+ const policy = yield* QueueEventSourcePolicy;
103
+ return Effect.fn(function* (queue, props, process) {
104
+ // Deploy-time: ensure the QueueConsumer resource exists. At
105
+ // runtime this Layer's `policy` resolves to the no-op variant
106
+ // (Binding.Policy provides that automatically via
107
+ // `Effect.serviceOption`), so this becomes a no-op.
108
+ yield* policy(queue, props);
109
+ // Resolve the runtime context per-call rather than at layer
110
+ // construction. Capturing it on the layer would leak the
111
+ // requirement past `PlatformServices` exclusion when the
112
+ // Worker typechecks its init effect.
113
+ const ctx = (yield* RuntimeContext);
114
+ // Capture the queue-name accessor once; the listener body
115
+ // re-resolves it per event via `yield* QueueName`. A worker
116
+ // can consume multiple queues — each subscribe registers its
117
+ // own listener and they all see every queue event, so the
118
+ // queue-name match is what scopes the handler.
119
+ const QueueName = yield* queue.queueName;
120
+ yield* ctx.listen((event) => {
121
+ if (!isWorkerEvent(event) || event.type !== "queue")
122
+ return;
123
+ const batch = event.input;
124
+ return Effect.gen(function* () {
125
+ const queueName = yield* QueueName;
126
+ if (batch.queue !== queueName)
127
+ return;
128
+ yield* process(Stream.fromIterable(batch.messages)).pipe(Effect.tap(() => Effect.sync(() => {
129
+ for (const msg of batch.messages)
130
+ msg.ack();
131
+ })), Effect.onError((cause) => Effect.sync(() => {
132
+ // Surface the failure so the operator sees what
133
+ // tripped the retry path; without this the only
134
+ // signal is the message reappearing on the next
135
+ // attempt.
136
+ console.error(`[QueueEventSource] handler failed on queue ` +
137
+ `"${queueName}": ${Cause.pretty(cause)}`);
138
+ for (const msg of batch.messages)
139
+ msg.retry();
140
+ })), Effect.catchCause(() => Effect.void));
141
+ });
142
+ });
143
+ });
144
+ }));
145
+ //# sourceMappingURL=QueueEventSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueueEventSource.js","sourceRoot":"","sources":["../../../src/Cloudflare/Queue/QueueEventSource.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from "./Queue.ts";
2
2
  export * from "./QueueBinding.ts";
3
3
  export * from "./QueueConsumer.ts";
4
+ export * from "./QueueEventSource.ts";
4
5
  //# sourceMappingURL=index.d.ts.map