alchemy 0.67.0 → 0.69.0

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 (803) hide show
  1. package/bin/alchemy.js +25580 -26264
  2. package/bin/alchemy.ts +6 -2
  3. package/bin/commands/configure.ts +194 -0
  4. package/bin/commands/login.ts +99 -55
  5. package/bin/commands/logout.ts +66 -0
  6. package/bin/trpc.ts +27 -2
  7. package/lib/apply.d.ts +2 -2
  8. package/lib/apply.d.ts.map +1 -1
  9. package/lib/apply.js +18 -15
  10. package/lib/apply.js.map +1 -1
  11. package/lib/auth.d.ts +72 -0
  12. package/lib/auth.d.ts.map +1 -0
  13. package/lib/auth.js +163 -0
  14. package/lib/auth.js.map +1 -0
  15. package/lib/aws/bucket.d.ts +12 -3
  16. package/lib/aws/bucket.d.ts.map +1 -1
  17. package/lib/aws/bucket.js +2 -2
  18. package/lib/aws/bucket.js.map +1 -1
  19. package/lib/aws/control/properties.d.ts +64 -0
  20. package/lib/aws/control/properties.d.ts.map +1 -1
  21. package/lib/aws/control/properties.js +554 -39
  22. package/lib/aws/control/properties.js.map +1 -1
  23. package/lib/aws/control/resource.d.ts +34 -3
  24. package/lib/aws/control/resource.d.ts.map +1 -1
  25. package/lib/aws/control/resource.js +36 -3
  26. package/lib/aws/control/resource.js.map +1 -1
  27. package/lib/aws/control/types.d.ts +5451 -1587
  28. package/lib/aws/control/types.d.ts.map +1 -1
  29. package/lib/aws/control/types.js.map +1 -1
  30. package/lib/aws/control/update-types.d.ts +12913 -0
  31. package/lib/aws/control/update-types.d.ts.map +1 -0
  32. package/lib/aws/control/update-types.js +12916 -0
  33. package/lib/aws/control/update-types.js.map +1 -0
  34. package/lib/aws/ec2/internet-gateway-attachment.d.ts +1 -2
  35. package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -1
  36. package/lib/aws/ec2/internet-gateway-attachment.js +4 -4
  37. package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -1
  38. package/lib/aws/ec2/internet-gateway.d.ts +1 -2
  39. package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
  40. package/lib/aws/ec2/internet-gateway.js +2 -2
  41. package/lib/aws/ec2/internet-gateway.js.map +1 -1
  42. package/lib/aws/ec2/nat-gateway.d.ts +1 -2
  43. package/lib/aws/ec2/nat-gateway.d.ts.map +1 -1
  44. package/lib/aws/ec2/nat-gateway.js +2 -2
  45. package/lib/aws/ec2/nat-gateway.js.map +1 -1
  46. package/lib/aws/ec2/route-table-association.d.ts +1 -2
  47. package/lib/aws/ec2/route-table-association.d.ts.map +1 -1
  48. package/lib/aws/ec2/route-table-association.js +2 -2
  49. package/lib/aws/ec2/route-table-association.js.map +1 -1
  50. package/lib/aws/ec2/route-table.d.ts +1 -2
  51. package/lib/aws/ec2/route-table.d.ts.map +1 -1
  52. package/lib/aws/ec2/route-table.js +2 -2
  53. package/lib/aws/ec2/route-table.js.map +1 -1
  54. package/lib/aws/ec2/route.d.ts +1 -2
  55. package/lib/aws/ec2/route.d.ts.map +1 -1
  56. package/lib/aws/ec2/route.js +2 -2
  57. package/lib/aws/ec2/route.js.map +1 -1
  58. package/lib/aws/ec2/security-group-rule.d.ts +1 -2
  59. package/lib/aws/ec2/security-group-rule.d.ts.map +1 -1
  60. package/lib/aws/ec2/security-group-rule.js +2 -2
  61. package/lib/aws/ec2/security-group-rule.js.map +1 -1
  62. package/lib/aws/ec2/security-group.d.ts +1 -2
  63. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  64. package/lib/aws/ec2/security-group.js +2 -2
  65. package/lib/aws/ec2/security-group.js.map +1 -1
  66. package/lib/aws/ec2/subnet.d.ts +1 -2
  67. package/lib/aws/ec2/subnet.d.ts.map +1 -1
  68. package/lib/aws/ec2/subnet.js +2 -2
  69. package/lib/aws/ec2/subnet.js.map +1 -1
  70. package/lib/aws/ec2/vpc.d.ts +1 -2
  71. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  72. package/lib/aws/ec2/vpc.js +2 -2
  73. package/lib/aws/ec2/vpc.js.map +1 -1
  74. package/lib/aws/function.d.ts +116 -3
  75. package/lib/aws/function.d.ts.map +1 -1
  76. package/lib/aws/function.js +2 -2
  77. package/lib/aws/function.js.map +1 -1
  78. package/lib/aws/oidc/github-oidc-provider.d.ts +13 -2
  79. package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -1
  80. package/lib/aws/oidc/oidc-provider.d.ts +48 -3
  81. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
  82. package/lib/aws/oidc/oidc-provider.js +2 -2
  83. package/lib/aws/oidc/oidc-provider.js.map +1 -1
  84. package/lib/aws/policy-attachment.d.ts +2 -3
  85. package/lib/aws/policy-attachment.d.ts.map +1 -1
  86. package/lib/aws/policy-attachment.js +1 -1
  87. package/lib/aws/policy-attachment.js.map +1 -1
  88. package/lib/aws/policy.d.ts +1 -2
  89. package/lib/aws/policy.d.ts.map +1 -1
  90. package/lib/aws/policy.js +4 -4
  91. package/lib/aws/policy.js.map +1 -1
  92. package/lib/aws/queue.d.ts +1 -2
  93. package/lib/aws/queue.d.ts.map +1 -1
  94. package/lib/aws/queue.js +4 -4
  95. package/lib/aws/queue.js.map +1 -1
  96. package/lib/aws/role.d.ts +1 -2
  97. package/lib/aws/role.d.ts.map +1 -1
  98. package/lib/aws/role.js +2 -2
  99. package/lib/aws/role.js.map +1 -1
  100. package/lib/aws/ses.d.ts +1 -2
  101. package/lib/aws/ses.d.ts.map +1 -1
  102. package/lib/aws/ses.js +2 -2
  103. package/lib/aws/ses.js.map +1 -1
  104. package/lib/aws/ssm-parameter.d.ts +1 -2
  105. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  106. package/lib/aws/ssm-parameter.js +2 -2
  107. package/lib/aws/ssm-parameter.js.map +1 -1
  108. package/lib/aws/table.d.ts +1 -2
  109. package/lib/aws/table.d.ts.map +1 -1
  110. package/lib/aws/table.js +2 -2
  111. package/lib/aws/table.js.map +1 -1
  112. package/lib/cloudflare/account-api-token.d.ts +1 -2
  113. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  114. package/lib/cloudflare/account-api-token.js +2 -2
  115. package/lib/cloudflare/account-api-token.js.map +1 -1
  116. package/lib/cloudflare/ai-gateway.d.ts +1 -2
  117. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  118. package/lib/cloudflare/ai-gateway.js +2 -2
  119. package/lib/cloudflare/ai-gateway.js.map +1 -1
  120. package/lib/cloudflare/api-gateway-operation.d.ts +1 -2
  121. package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -1
  122. package/lib/cloudflare/api-gateway-operation.js +2 -2
  123. package/lib/cloudflare/api-gateway-operation.js.map +1 -1
  124. package/lib/cloudflare/api-schema.d.ts +1 -2
  125. package/lib/cloudflare/api-schema.d.ts.map +1 -1
  126. package/lib/cloudflare/api-schema.js +2 -2
  127. package/lib/cloudflare/api-schema.js.map +1 -1
  128. package/lib/cloudflare/api-shield.d.ts +1 -2
  129. package/lib/cloudflare/api-shield.d.ts.map +1 -1
  130. package/lib/cloudflare/api-shield.js +2 -2
  131. package/lib/cloudflare/api-shield.js.map +1 -1
  132. package/lib/cloudflare/api.d.ts +18 -10
  133. package/lib/cloudflare/api.d.ts.map +1 -1
  134. package/lib/cloudflare/api.js +92 -38
  135. package/lib/cloudflare/api.js.map +1 -1
  136. package/lib/cloudflare/assets.d.ts +21 -43
  137. package/lib/cloudflare/assets.d.ts.map +1 -1
  138. package/lib/cloudflare/assets.js +78 -70
  139. package/lib/cloudflare/assets.js.map +1 -1
  140. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  141. package/lib/cloudflare/astro/astro.js +3 -3
  142. package/lib/cloudflare/astro/astro.js.map +1 -1
  143. package/lib/cloudflare/auth.d.ts +91 -17
  144. package/lib/cloudflare/auth.d.ts.map +1 -1
  145. package/lib/cloudflare/auth.js +141 -62
  146. package/lib/cloudflare/auth.js.map +1 -1
  147. package/lib/cloudflare/bound.d.ts +1 -1
  148. package/lib/cloudflare/bound.d.ts.map +1 -1
  149. package/lib/cloudflare/bucket-object.d.ts +81 -0
  150. package/lib/cloudflare/bucket-object.d.ts.map +1 -0
  151. package/lib/cloudflare/bucket-object.js +67 -0
  152. package/lib/cloudflare/bucket-object.js.map +1 -0
  153. package/lib/cloudflare/bucket.d.ts +87 -8
  154. package/lib/cloudflare/bucket.d.ts.map +1 -1
  155. package/lib/cloudflare/bucket.js +246 -19
  156. package/lib/cloudflare/bucket.js.map +1 -1
  157. package/lib/cloudflare/bundle/plugin-wasm.js +4 -2
  158. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
  159. package/lib/cloudflare/certificate-pack.d.ts +1 -2
  160. package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
  161. package/lib/cloudflare/certificate-pack.js +4 -4
  162. package/lib/cloudflare/certificate-pack.js.map +1 -1
  163. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  164. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  165. package/lib/cloudflare/container.d.ts +1 -2
  166. package/lib/cloudflare/container.d.ts.map +1 -1
  167. package/lib/cloudflare/container.js +7 -7
  168. package/lib/cloudflare/container.js.map +1 -1
  169. package/lib/cloudflare/custom-domain.d.ts +1 -2
  170. package/lib/cloudflare/custom-domain.d.ts.map +1 -1
  171. package/lib/cloudflare/custom-domain.js +2 -2
  172. package/lib/cloudflare/custom-domain.js.map +1 -1
  173. package/lib/cloudflare/d1-database.d.ts +2 -3
  174. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  175. package/lib/cloudflare/d1-database.js +5 -5
  176. package/lib/cloudflare/d1-database.js.map +1 -1
  177. package/lib/cloudflare/dispatch-namespace.d.ts +2 -3
  178. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  179. package/lib/cloudflare/dispatch-namespace.js +3 -3
  180. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  181. package/lib/cloudflare/dns-records.d.ts +1 -2
  182. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  183. package/lib/cloudflare/dns-records.js +4 -4
  184. package/lib/cloudflare/dns-records.js.map +1 -1
  185. package/lib/cloudflare/email-address.d.ts +1 -2
  186. package/lib/cloudflare/email-address.d.ts.map +1 -1
  187. package/lib/cloudflare/email-address.js +6 -6
  188. package/lib/cloudflare/email-address.js.map +1 -1
  189. package/lib/cloudflare/email-catch-all.d.ts +1 -2
  190. package/lib/cloudflare/email-catch-all.d.ts.map +1 -1
  191. package/lib/cloudflare/email-catch-all.js +4 -4
  192. package/lib/cloudflare/email-catch-all.js.map +1 -1
  193. package/lib/cloudflare/email-routing.d.ts +1 -2
  194. package/lib/cloudflare/email-routing.d.ts.map +1 -1
  195. package/lib/cloudflare/email-routing.js +4 -4
  196. package/lib/cloudflare/email-routing.js.map +1 -1
  197. package/lib/cloudflare/email-rule.d.ts +1 -2
  198. package/lib/cloudflare/email-rule.d.ts.map +1 -1
  199. package/lib/cloudflare/email-rule.js +4 -4
  200. package/lib/cloudflare/email-rule.js.map +1 -1
  201. package/lib/cloudflare/hyperdrive.d.ts +1 -2
  202. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  203. package/lib/cloudflare/hyperdrive.js +4 -4
  204. package/lib/cloudflare/hyperdrive.js.map +1 -1
  205. package/lib/cloudflare/index.d.ts +1 -0
  206. package/lib/cloudflare/index.d.ts.map +1 -1
  207. package/lib/cloudflare/index.js +1 -0
  208. package/lib/cloudflare/index.js.map +1 -1
  209. package/lib/cloudflare/kv-namespace.d.ts +2 -3
  210. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  211. package/lib/cloudflare/kv-namespace.js +5 -5
  212. package/lib/cloudflare/kv-namespace.js.map +1 -1
  213. package/lib/cloudflare/miniflare/delete.js +1 -1
  214. package/lib/cloudflare/miniflare/delete.js.map +1 -1
  215. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  216. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +2 -7
  217. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  218. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
  219. package/lib/cloudflare/miniflare/remote-binding-proxy.js +15 -4
  220. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
  221. package/lib/cloudflare/next.js.map +1 -1
  222. package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -1
  223. package/lib/cloudflare/nuxt/nuxt.js +3 -3
  224. package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
  225. package/lib/cloudflare/permission-groups.d.ts +1 -2
  226. package/lib/cloudflare/permission-groups.d.ts.map +1 -1
  227. package/lib/cloudflare/permission-groups.js +1 -1
  228. package/lib/cloudflare/permission-groups.js.map +1 -1
  229. package/lib/cloudflare/pipeline.d.ts +2 -3
  230. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  231. package/lib/cloudflare/pipeline.js +5 -5
  232. package/lib/cloudflare/pipeline.js.map +1 -1
  233. package/lib/cloudflare/queue-consumer.d.ts +1 -2
  234. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  235. package/lib/cloudflare/queue-consumer.js +4 -4
  236. package/lib/cloudflare/queue-consumer.js.map +1 -1
  237. package/lib/cloudflare/queue.d.ts +1 -2
  238. package/lib/cloudflare/queue.d.ts.map +1 -1
  239. package/lib/cloudflare/queue.js +4 -4
  240. package/lib/cloudflare/queue.js.map +1 -1
  241. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  242. package/lib/cloudflare/react-router/plugin.js +13 -0
  243. package/lib/cloudflare/react-router/plugin.js.map +1 -1
  244. package/lib/cloudflare/redirect-rule.d.ts +1 -2
  245. package/lib/cloudflare/redirect-rule.d.ts.map +1 -1
  246. package/lib/cloudflare/redirect-rule.js +4 -4
  247. package/lib/cloudflare/redirect-rule.js.map +1 -1
  248. package/lib/cloudflare/route.d.ts +1 -2
  249. package/lib/cloudflare/route.d.ts.map +1 -1
  250. package/lib/cloudflare/route.js +4 -4
  251. package/lib/cloudflare/route.js.map +1 -1
  252. package/lib/cloudflare/ruleset.d.ts +1 -2
  253. package/lib/cloudflare/ruleset.d.ts.map +1 -1
  254. package/lib/cloudflare/ruleset.js +2 -2
  255. package/lib/cloudflare/ruleset.js.map +1 -1
  256. package/lib/cloudflare/secret.d.ts +2 -3
  257. package/lib/cloudflare/secret.d.ts.map +1 -1
  258. package/lib/cloudflare/secret.js +3 -3
  259. package/lib/cloudflare/secret.js.map +1 -1
  260. package/lib/cloudflare/secrets-store.d.ts +2 -3
  261. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  262. package/lib/cloudflare/secrets-store.js +3 -3
  263. package/lib/cloudflare/secrets-store.js.map +1 -1
  264. package/lib/cloudflare/tunnel.d.ts +2 -3
  265. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  266. package/lib/cloudflare/tunnel.js +3 -3
  267. package/lib/cloudflare/tunnel.js.map +1 -1
  268. package/lib/cloudflare/user.d.ts +3 -2
  269. package/lib/cloudflare/user.d.ts.map +1 -1
  270. package/lib/cloudflare/user.js +7 -5
  271. package/lib/cloudflare/user.js.map +1 -1
  272. package/lib/cloudflare/vectorize-index.d.ts +2 -3
  273. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  274. package/lib/cloudflare/vectorize-index.js +6 -6
  275. package/lib/cloudflare/vectorize-index.js.map +1 -1
  276. package/lib/cloudflare/vectorize-metadata-index.d.ts +2 -3
  277. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  278. package/lib/cloudflare/vectorize-metadata-index.js +4 -4
  279. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  280. package/lib/cloudflare/vite/vite.d.ts.map +1 -1
  281. package/lib/cloudflare/vite/vite.js +3 -3
  282. package/lib/cloudflare/vite/vite.js.map +1 -1
  283. package/lib/cloudflare/website.d.ts +7 -1
  284. package/lib/cloudflare/website.d.ts.map +1 -1
  285. package/lib/cloudflare/website.js +20 -2
  286. package/lib/cloudflare/website.js.map +1 -1
  287. package/lib/cloudflare/worker-assets.d.ts +1 -29
  288. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  289. package/lib/cloudflare/worker-assets.js +9 -42
  290. package/lib/cloudflare/worker-assets.js.map +1 -1
  291. package/lib/cloudflare/worker-stub.d.ts +2 -3
  292. package/lib/cloudflare/worker-stub.d.ts.map +1 -1
  293. package/lib/cloudflare/worker-stub.js +3 -3
  294. package/lib/cloudflare/worker-stub.js.map +1 -1
  295. package/lib/cloudflare/worker-subdomain.d.ts +4 -3
  296. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
  297. package/lib/cloudflare/worker-subdomain.js +5 -5
  298. package/lib/cloudflare/worker-subdomain.js.map +1 -1
  299. package/lib/cloudflare/worker.d.ts +3 -4
  300. package/lib/cloudflare/worker.d.ts.map +1 -1
  301. package/lib/cloudflare/worker.js +6 -5
  302. package/lib/cloudflare/worker.js.map +1 -1
  303. package/lib/cloudflare/wrangler.json.d.ts +27 -8
  304. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  305. package/lib/cloudflare/wrangler.json.js +3 -1
  306. package/lib/cloudflare/wrangler.json.js.map +1 -1
  307. package/lib/cloudflare/zone.d.ts +1 -2
  308. package/lib/cloudflare/zone.d.ts.map +1 -1
  309. package/lib/cloudflare/zone.js +2 -2
  310. package/lib/cloudflare/zone.js.map +1 -1
  311. package/lib/context.d.ts +8 -8
  312. package/lib/context.d.ts.map +1 -1
  313. package/lib/context.js.map +1 -1
  314. package/lib/destroy.d.ts +1 -1
  315. package/lib/destroy.d.ts.map +1 -1
  316. package/lib/destroy.js.map +1 -1
  317. package/lib/dns/import-dns.d.ts +1 -2
  318. package/lib/dns/import-dns.d.ts.map +1 -1
  319. package/lib/dns/import-dns.js +2 -2
  320. package/lib/dns/import-dns.js.map +1 -1
  321. package/lib/docker/container.d.ts +1 -2
  322. package/lib/docker/container.d.ts.map +1 -1
  323. package/lib/docker/container.js +2 -3
  324. package/lib/docker/container.js.map +1 -1
  325. package/lib/docker/image.d.ts +1 -2
  326. package/lib/docker/image.d.ts.map +1 -1
  327. package/lib/docker/image.js +9 -9
  328. package/lib/docker/image.js.map +1 -1
  329. package/lib/docker/network.d.ts +1 -2
  330. package/lib/docker/network.d.ts.map +1 -1
  331. package/lib/docker/network.js +2 -3
  332. package/lib/docker/network.js.map +1 -1
  333. package/lib/docker/remote-image.d.ts +1 -2
  334. package/lib/docker/remote-image.d.ts.map +1 -1
  335. package/lib/docker/remote-image.js +2 -3
  336. package/lib/docker/remote-image.js.map +1 -1
  337. package/lib/docker/volume.d.ts +1 -2
  338. package/lib/docker/volume.d.ts.map +1 -1
  339. package/lib/docker/volume.js +2 -3
  340. package/lib/docker/volume.js.map +1 -1
  341. package/lib/esbuild/bundle.d.ts +1 -2
  342. package/lib/esbuild/bundle.d.ts.map +1 -1
  343. package/lib/esbuild/bundle.js +4 -4
  344. package/lib/esbuild/bundle.js.map +1 -1
  345. package/lib/fs/copy-file.d.ts +1 -2
  346. package/lib/fs/copy-file.d.ts.map +1 -1
  347. package/lib/fs/copy-file.js +2 -2
  348. package/lib/fs/copy-file.js.map +1 -1
  349. package/lib/fs/file.d.ts +1 -2
  350. package/lib/fs/file.d.ts.map +1 -1
  351. package/lib/fs/file.js +2 -2
  352. package/lib/fs/file.js.map +1 -1
  353. package/lib/fs/folder.d.ts +1 -2
  354. package/lib/fs/folder.d.ts.map +1 -1
  355. package/lib/fs/folder.js +2 -2
  356. package/lib/fs/folder.js.map +1 -1
  357. package/lib/github/comment.d.ts +1 -2
  358. package/lib/github/comment.d.ts.map +1 -1
  359. package/lib/github/comment.js +4 -4
  360. package/lib/github/comment.js.map +1 -1
  361. package/lib/github/repository-environment.d.ts +1 -2
  362. package/lib/github/repository-environment.d.ts.map +1 -1
  363. package/lib/github/repository-environment.js +2 -2
  364. package/lib/github/repository-environment.js.map +1 -1
  365. package/lib/github/repository-webhook.d.ts +1 -2
  366. package/lib/github/repository-webhook.d.ts.map +1 -1
  367. package/lib/github/repository-webhook.js +2 -2
  368. package/lib/github/repository-webhook.js.map +1 -1
  369. package/lib/github/secret.d.ts +1 -2
  370. package/lib/github/secret.d.ts.map +1 -1
  371. package/lib/github/secret.js +2 -2
  372. package/lib/github/secret.js.map +1 -1
  373. package/lib/llms.cloudflare.txt +2 -2
  374. package/lib/neon/api/client.gen.d.ts +13 -0
  375. package/lib/neon/api/client.gen.d.ts.map +1 -0
  376. package/lib/neon/api/client.gen.js +7 -0
  377. package/lib/neon/api/client.gen.js.map +1 -0
  378. package/lib/neon/api/sdk.gen.d.ts +880 -0
  379. package/lib/neon/api/sdk.gen.d.ts.map +1 -0
  380. package/lib/neon/api/sdk.gen.js +1527 -0
  381. package/lib/neon/api/sdk.gen.js.map +1 -0
  382. package/lib/neon/api/types.gen.d.ts +7250 -0
  383. package/lib/neon/api/types.gen.d.ts.map +1 -0
  384. package/lib/neon/api/types.gen.js +2 -0
  385. package/lib/neon/api/types.gen.js.map +1 -0
  386. package/lib/neon/api.d.ts +14 -49
  387. package/lib/neon/api.d.ts.map +1 -1
  388. package/lib/neon/api.js +36 -114
  389. package/lib/neon/api.js.map +1 -1
  390. package/lib/neon/branch.d.ts +157 -0
  391. package/lib/neon/branch.d.ts.map +1 -0
  392. package/lib/neon/branch.js +112 -0
  393. package/lib/neon/branch.js.map +1 -0
  394. package/lib/neon/index.d.ts +1 -1
  395. package/lib/neon/index.d.ts.map +1 -1
  396. package/lib/neon/index.js +1 -1
  397. package/lib/neon/index.js.map +1 -1
  398. package/lib/neon/project.d.ts +49 -243
  399. package/lib/neon/project.d.ts.map +1 -1
  400. package/lib/neon/project.js +90 -269
  401. package/lib/neon/project.js.map +1 -1
  402. package/lib/neon/utils.d.ts +49 -0
  403. package/lib/neon/utils.d.ts.map +1 -0
  404. package/lib/neon/utils.js +44 -0
  405. package/lib/neon/utils.js.map +1 -0
  406. package/lib/os/exec.d.ts +1 -2
  407. package/lib/os/exec.d.ts.map +1 -1
  408. package/lib/os/exec.js +2 -2
  409. package/lib/os/exec.js.map +1 -1
  410. package/lib/planetscale/api/client.gen.d.ts +12 -1749
  411. package/lib/planetscale/api/client.gen.d.ts.map +1 -1
  412. package/lib/planetscale/api/client.gen.js +6 -2400
  413. package/lib/planetscale/api/client.gen.js.map +1 -1
  414. package/lib/planetscale/api/sdk.gen.d.ts +1582 -0
  415. package/lib/planetscale/api/sdk.gen.d.ts.map +1 -0
  416. package/lib/planetscale/api/sdk.gen.js +2219 -0
  417. package/lib/planetscale/api/sdk.gen.js.map +1 -0
  418. package/lib/planetscale/api/types.gen.d.ts +594 -449
  419. package/lib/planetscale/api/types.gen.d.ts.map +1 -1
  420. package/lib/planetscale/api.d.ts +43 -0
  421. package/lib/planetscale/api.d.ts.map +1 -0
  422. package/lib/planetscale/api.js +53 -0
  423. package/lib/planetscale/api.js.map +1 -0
  424. package/lib/planetscale/branch.d.ts +2 -3
  425. package/lib/planetscale/branch.d.ts.map +1 -1
  426. package/lib/planetscale/branch.js +17 -15
  427. package/lib/planetscale/branch.js.map +1 -1
  428. package/lib/planetscale/database.d.ts +2 -3
  429. package/lib/planetscale/database.d.ts.map +1 -1
  430. package/lib/planetscale/database.js +34 -34
  431. package/lib/planetscale/database.js.map +1 -1
  432. package/lib/planetscale/index.d.ts +1 -1
  433. package/lib/planetscale/index.d.ts.map +1 -1
  434. package/lib/planetscale/index.js +1 -1
  435. package/lib/planetscale/index.js.map +1 -1
  436. package/lib/planetscale/password.d.ts +2 -3
  437. package/lib/planetscale/password.d.ts.map +1 -1
  438. package/lib/planetscale/password.js +11 -11
  439. package/lib/planetscale/password.js.map +1 -1
  440. package/lib/planetscale/role.d.ts +2 -3
  441. package/lib/planetscale/role.d.ts.map +1 -1
  442. package/lib/planetscale/role.js +18 -18
  443. package/lib/planetscale/role.js.map +1 -1
  444. package/lib/planetscale/utils.d.ts +1 -1
  445. package/lib/planetscale/utils.d.ts.map +1 -1
  446. package/lib/planetscale/utils.js +17 -33
  447. package/lib/planetscale/utils.js.map +1 -1
  448. package/lib/random/random-string.d.ts +1 -2
  449. package/lib/random/random-string.d.ts.map +1 -1
  450. package/lib/random/random-string.js +3 -3
  451. package/lib/random/random-string.js.map +1 -1
  452. package/lib/resource.d.ts +4 -1
  453. package/lib/resource.d.ts.map +1 -1
  454. package/lib/resource.js.map +1 -1
  455. package/lib/sentry/client-key.d.ts +1 -2
  456. package/lib/sentry/client-key.d.ts.map +1 -1
  457. package/lib/sentry/client-key.js +2 -2
  458. package/lib/sentry/client-key.js.map +1 -1
  459. package/lib/sentry/project.d.ts +1 -2
  460. package/lib/sentry/project.d.ts.map +1 -1
  461. package/lib/sentry/project.js +2 -2
  462. package/lib/sentry/project.js.map +1 -1
  463. package/lib/sentry/team.d.ts +1 -2
  464. package/lib/sentry/team.d.ts.map +1 -1
  465. package/lib/sentry/team.js +2 -2
  466. package/lib/sentry/team.js.map +1 -1
  467. package/lib/serde.d.ts +3 -0
  468. package/lib/serde.d.ts.map +1 -1
  469. package/lib/serde.js +40 -0
  470. package/lib/serde.js.map +1 -1
  471. package/lib/state/r2-rest-state-store.d.ts +1 -0
  472. package/lib/state/r2-rest-state-store.d.ts.map +1 -1
  473. package/lib/state/r2-rest-state-store.js +15 -34
  474. package/lib/state/r2-rest-state-store.js.map +1 -1
  475. package/lib/stripe/card.d.ts +1 -2
  476. package/lib/stripe/card.d.ts.map +1 -1
  477. package/lib/stripe/card.js +2 -2
  478. package/lib/stripe/card.js.map +1 -1
  479. package/lib/stripe/coupon.d.ts +1 -2
  480. package/lib/stripe/coupon.d.ts.map +1 -1
  481. package/lib/stripe/coupon.js +2 -2
  482. package/lib/stripe/coupon.js.map +1 -1
  483. package/lib/stripe/customer.d.ts +1 -2
  484. package/lib/stripe/customer.d.ts.map +1 -1
  485. package/lib/stripe/customer.js +2 -2
  486. package/lib/stripe/customer.js.map +1 -1
  487. package/lib/stripe/entitlements-feature.d.ts +1 -2
  488. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  489. package/lib/stripe/entitlements-feature.js +2 -2
  490. package/lib/stripe/entitlements-feature.js.map +1 -1
  491. package/lib/stripe/file.d.ts +1 -2
  492. package/lib/stripe/file.d.ts.map +1 -1
  493. package/lib/stripe/file.js +2 -2
  494. package/lib/stripe/file.js.map +1 -1
  495. package/lib/stripe/meter.d.ts +1 -2
  496. package/lib/stripe/meter.d.ts.map +1 -1
  497. package/lib/stripe/meter.js +1 -1
  498. package/lib/stripe/meter.js.map +1 -1
  499. package/lib/stripe/portal-configuration.d.ts +1 -2
  500. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  501. package/lib/stripe/portal-configuration.js +2 -2
  502. package/lib/stripe/portal-configuration.js.map +1 -1
  503. package/lib/stripe/price.d.ts +1 -2
  504. package/lib/stripe/price.d.ts.map +1 -1
  505. package/lib/stripe/price.js +2 -2
  506. package/lib/stripe/price.js.map +1 -1
  507. package/lib/stripe/product-feature.d.ts +1 -2
  508. package/lib/stripe/product-feature.d.ts.map +1 -1
  509. package/lib/stripe/product-feature.js +2 -2
  510. package/lib/stripe/product-feature.js.map +1 -1
  511. package/lib/stripe/product.d.ts +1 -2
  512. package/lib/stripe/product.d.ts.map +1 -1
  513. package/lib/stripe/product.js +2 -2
  514. package/lib/stripe/product.js.map +1 -1
  515. package/lib/stripe/promotion-code.d.ts +1 -2
  516. package/lib/stripe/promotion-code.d.ts.map +1 -1
  517. package/lib/stripe/promotion-code.js +2 -2
  518. package/lib/stripe/promotion-code.js.map +1 -1
  519. package/lib/stripe/shipping-rate.d.ts +1 -2
  520. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  521. package/lib/stripe/shipping-rate.js +2 -2
  522. package/lib/stripe/shipping-rate.js.map +1 -1
  523. package/lib/stripe/tax-rate.d.ts +1 -2
  524. package/lib/stripe/tax-rate.d.ts.map +1 -1
  525. package/lib/stripe/tax-rate.js +2 -2
  526. package/lib/stripe/tax-rate.js.map +1 -1
  527. package/lib/stripe/webhook.d.ts +16 -3
  528. package/lib/stripe/webhook.d.ts.map +1 -1
  529. package/lib/stripe/webhook.js +2 -2
  530. package/lib/stripe/webhook.js.map +1 -1
  531. package/lib/test/bun.d.ts.map +1 -1
  532. package/lib/test/bun.js +1 -0
  533. package/lib/test/bun.js.map +1 -1
  534. package/lib/test/options.d.ts +5 -0
  535. package/lib/test/options.d.ts.map +1 -1
  536. package/lib/test/vitest.d.ts.map +1 -1
  537. package/lib/test/vitest.js +1 -0
  538. package/lib/test/vitest.js.map +1 -1
  539. package/lib/upstash/redis.d.ts +1 -2
  540. package/lib/upstash/redis.d.ts.map +1 -1
  541. package/lib/upstash/redis.js.map +1 -1
  542. package/lib/util/api/client/client.gen.d.ts +3 -0
  543. package/lib/util/api/client/client.gen.d.ts.map +1 -0
  544. package/lib/util/api/client/client.gen.js +205 -0
  545. package/lib/util/api/client/client.gen.js.map +1 -0
  546. package/lib/util/api/client/index.d.ts +8 -0
  547. package/lib/util/api/client/index.d.ts.map +1 -0
  548. package/lib/util/api/client/index.js +6 -0
  549. package/lib/util/api/client/index.js.map +1 -0
  550. package/lib/util/api/client/types.gen.d.ts +125 -0
  551. package/lib/util/api/client/types.gen.d.ts.map +1 -0
  552. package/lib/util/api/client/types.gen.js +2 -0
  553. package/lib/util/api/client/types.gen.js.map +1 -0
  554. package/lib/util/api/client/utils.gen.d.ts +34 -0
  555. package/lib/util/api/client/utils.gen.d.ts.map +1 -0
  556. package/lib/util/api/client/utils.gen.js +231 -0
  557. package/lib/util/api/client/utils.gen.js.map +1 -0
  558. package/lib/util/api/core/auth.gen.d.ts +19 -0
  559. package/lib/util/api/core/auth.gen.d.ts.map +1 -0
  560. package/lib/util/api/core/auth.gen.js +15 -0
  561. package/lib/util/api/core/auth.gen.js.map +1 -0
  562. package/lib/util/api/core/bodySerializer.gen.d.ts +18 -0
  563. package/lib/util/api/core/bodySerializer.gen.d.ts.map +1 -0
  564. package/lib/util/api/core/bodySerializer.gen.js +58 -0
  565. package/lib/util/api/core/bodySerializer.gen.js.map +1 -0
  566. package/lib/util/api/core/params.gen.d.ts +34 -0
  567. package/lib/util/api/core/params.gen.d.ts.map +1 -0
  568. package/lib/util/api/core/params.gen.js +89 -0
  569. package/lib/util/api/core/params.gen.js.map +1 -0
  570. package/lib/util/api/core/pathSerializer.gen.d.ts +34 -0
  571. package/lib/util/api/core/pathSerializer.gen.d.ts.map +1 -0
  572. package/lib/util/api/core/pathSerializer.gen.js +115 -0
  573. package/lib/util/api/core/pathSerializer.gen.js.map +1 -0
  574. package/lib/util/api/core/serverSentEvents.gen.d.ts +72 -0
  575. package/lib/util/api/core/serverSentEvents.gen.d.ts.map +1 -0
  576. package/lib/util/api/core/serverSentEvents.gen.js +136 -0
  577. package/lib/util/api/core/serverSentEvents.gen.js.map +1 -0
  578. package/lib/util/api/core/types.gen.d.ts +79 -0
  579. package/lib/util/api/core/types.gen.d.ts.map +1 -0
  580. package/lib/util/api/core/types.gen.js +2 -0
  581. package/lib/util/api/core/types.gen.js.map +1 -0
  582. package/lib/util/api/core/utils.gen.d.ts +20 -0
  583. package/lib/util/api/core/utils.gen.d.ts.map +1 -0
  584. package/lib/util/api/core/utils.gen.js +88 -0
  585. package/lib/util/api/core/utils.gen.js.map +1 -0
  586. package/lib/util/http.d.ts +7 -2
  587. package/lib/util/http.d.ts.map +1 -1
  588. package/lib/util/http.js +29 -11
  589. package/lib/util/http.js.map +1 -1
  590. package/lib/util/lock.d.ts +20 -0
  591. package/lib/util/lock.d.ts.map +1 -0
  592. package/lib/util/lock.js +45 -0
  593. package/lib/util/lock.js.map +1 -0
  594. package/lib/util/memoize.d.ts +6 -0
  595. package/lib/util/memoize.d.ts.map +1 -1
  596. package/lib/util/memoize.js +23 -0
  597. package/lib/util/memoize.js.map +1 -1
  598. package/lib/util/oauth-client.d.ts +71 -0
  599. package/lib/util/oauth-client.d.ts.map +1 -0
  600. package/lib/util/oauth-client.js +188 -0
  601. package/lib/util/oauth-client.js.map +1 -0
  602. package/lib/util/poll.d.ts +33 -0
  603. package/lib/util/poll.d.ts.map +1 -0
  604. package/lib/util/poll.js +19 -0
  605. package/lib/util/poll.js.map +1 -0
  606. package/lib/vercel/project-domain.d.ts +1 -2
  607. package/lib/vercel/project-domain.d.ts.map +1 -1
  608. package/lib/vercel/project-domain.js.map +1 -1
  609. package/lib/vercel/project.d.ts +1 -2
  610. package/lib/vercel/project.d.ts.map +1 -1
  611. package/lib/vercel/project.js +2 -2
  612. package/lib/vercel/project.js.map +1 -1
  613. package/package.json +5 -1
  614. package/src/apply.ts +32 -29
  615. package/src/auth.ts +253 -0
  616. package/src/aws/bucket.ts +3 -3
  617. package/src/aws/control/properties.ts +554 -39
  618. package/src/aws/control/resource.ts +62 -6
  619. package/src/aws/control/types.ts +85281 -84914
  620. package/src/aws/control/update-types.ts +12917 -0
  621. package/src/aws/ec2/internet-gateway-attachment.ts +5 -6
  622. package/src/aws/ec2/internet-gateway.ts +3 -5
  623. package/src/aws/ec2/nat-gateway.ts +3 -5
  624. package/src/aws/ec2/route-table-association.ts +3 -5
  625. package/src/aws/ec2/route-table.ts +3 -5
  626. package/src/aws/ec2/route.ts +3 -3
  627. package/src/aws/ec2/security-group-rule.ts +3 -5
  628. package/src/aws/ec2/security-group.ts +3 -5
  629. package/src/aws/ec2/subnet.ts +3 -3
  630. package/src/aws/ec2/vpc.ts +3 -3
  631. package/src/aws/function.ts +3 -3
  632. package/src/aws/oidc/oidc-provider.ts +3 -5
  633. package/src/aws/policy-attachment.ts +2 -4
  634. package/src/aws/policy.ts +5 -5
  635. package/src/aws/queue.ts +5 -5
  636. package/src/aws/role.ts +3 -3
  637. package/src/aws/ses.ts +3 -3
  638. package/src/aws/ssm-parameter.ts +3 -3
  639. package/src/aws/table.ts +3 -3
  640. package/src/cloudflare/account-api-token.ts +3 -4
  641. package/src/cloudflare/ai-gateway.ts +3 -5
  642. package/src/cloudflare/api-gateway-operation.ts +3 -4
  643. package/src/cloudflare/api-schema.ts +25 -26
  644. package/src/cloudflare/api-shield.ts +3 -4
  645. package/src/cloudflare/api.ts +121 -57
  646. package/src/cloudflare/assets.ts +95 -136
  647. package/src/cloudflare/astro/astro.ts +8 -3
  648. package/src/cloudflare/auth.ts +160 -95
  649. package/src/cloudflare/bound.ts +1 -1
  650. package/src/cloudflare/bucket-object.ts +117 -0
  651. package/src/cloudflare/bucket.ts +452 -55
  652. package/src/cloudflare/bundle/plugin-wasm.ts +5 -5
  653. package/src/cloudflare/certificate-pack.ts +5 -6
  654. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  655. package/src/cloudflare/container.ts +9 -11
  656. package/src/cloudflare/custom-domain.ts +3 -5
  657. package/src/cloudflare/d1-database.ts +33 -34
  658. package/src/cloudflare/dispatch-namespace.ts +5 -6
  659. package/src/cloudflare/dns-records.ts +5 -5
  660. package/src/cloudflare/email-address.ts +7 -7
  661. package/src/cloudflare/email-catch-all.ts +6 -6
  662. package/src/cloudflare/email-routing.ts +5 -5
  663. package/src/cloudflare/email-rule.ts +5 -5
  664. package/src/cloudflare/hyperdrive.ts +35 -36
  665. package/src/cloudflare/index.ts +1 -0
  666. package/src/cloudflare/kv-namespace.ts +31 -32
  667. package/src/cloudflare/miniflare/delete.ts +1 -1
  668. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +2 -7
  669. package/src/cloudflare/miniflare/remote-binding-proxy.ts +16 -4
  670. package/src/cloudflare/next.ts +2 -2
  671. package/src/cloudflare/nuxt/nuxt.ts +8 -3
  672. package/src/cloudflare/permission-groups.ts +4 -6
  673. package/src/cloudflare/pipeline.ts +29 -30
  674. package/src/cloudflare/queue-consumer.ts +5 -7
  675. package/src/cloudflare/queue.ts +42 -43
  676. package/src/cloudflare/react-router/plugin.ts +20 -0
  677. package/src/cloudflare/redirect-rule.ts +5 -5
  678. package/src/cloudflare/route.ts +5 -5
  679. package/src/cloudflare/ruleset.ts +3 -4
  680. package/src/cloudflare/secret.ts +35 -36
  681. package/src/cloudflare/secrets-store.ts +5 -8
  682. package/src/cloudflare/tunnel.ts +5 -7
  683. package/src/cloudflare/user.ts +12 -9
  684. package/src/cloudflare/vectorize-index.ts +8 -12
  685. package/src/cloudflare/vectorize-metadata-index.ts +6 -8
  686. package/src/cloudflare/vite/vite.ts +8 -3
  687. package/src/cloudflare/website.ts +29 -3
  688. package/src/cloudflare/worker-assets.ts +10 -56
  689. package/src/cloudflare/worker-stub.ts +5 -5
  690. package/src/cloudflare/worker-subdomain.ts +6 -7
  691. package/src/cloudflare/worker.ts +91 -91
  692. package/src/cloudflare/wrangler.json.ts +32 -17
  693. package/src/cloudflare/zone.ts +3 -3
  694. package/src/context.ts +9 -7
  695. package/src/destroy.ts +2 -2
  696. package/src/dns/import-dns.ts +3 -5
  697. package/src/docker/container.ts +3 -6
  698. package/src/docker/image.ts +13 -13
  699. package/src/docker/network.ts +3 -4
  700. package/src/docker/remote-image.ts +3 -6
  701. package/src/docker/volume.ts +3 -4
  702. package/src/esbuild/bundle.ts +10 -8
  703. package/src/fs/copy-file.ts +3 -3
  704. package/src/fs/file.ts +3 -3
  705. package/src/fs/folder.ts +3 -3
  706. package/src/github/comment.ts +5 -7
  707. package/src/github/repository-environment.ts +3 -5
  708. package/src/github/repository-webhook.ts +3 -5
  709. package/src/github/secret.ts +3 -5
  710. package/src/llms.cloudflare.txt +2 -2
  711. package/src/neon/api/client.gen.ts +28 -0
  712. package/src/neon/api/sdk.gen.ts +2596 -0
  713. package/src/neon/api/types.gen.ts +8287 -0
  714. package/src/neon/api.ts +51 -147
  715. package/src/neon/branch.ts +279 -0
  716. package/src/neon/index.ts +1 -1
  717. package/src/neon/project.ts +136 -721
  718. package/src/neon/utils.ts +105 -0
  719. package/src/os/exec.ts +3 -3
  720. package/src/planetscale/api/client.gen.ts +28 -2882
  721. package/src/planetscale/api/sdk.gen.ts +3336 -0
  722. package/src/planetscale/api/types.gen.ts +778 -450
  723. package/src/planetscale/api.ts +101 -0
  724. package/src/planetscale/branch.ts +20 -19
  725. package/src/planetscale/database.ts +69 -70
  726. package/src/planetscale/index.ts +1 -1
  727. package/src/planetscale/password.ts +18 -22
  728. package/src/planetscale/role.ts +21 -21
  729. package/src/planetscale/utils.ts +20 -74
  730. package/src/random/random-string.ts +4 -4
  731. package/src/resource.ts +6 -2
  732. package/src/sentry/client-key.ts +3 -5
  733. package/src/sentry/project.ts +3 -5
  734. package/src/sentry/team.ts +3 -3
  735. package/src/serde.ts +50 -0
  736. package/src/state/r2-rest-state-store.ts +15 -57
  737. package/src/stripe/card.ts +3 -3
  738. package/src/stripe/coupon.ts +3 -3
  739. package/src/stripe/customer.ts +3 -3
  740. package/src/stripe/entitlements-feature.ts +3 -5
  741. package/src/stripe/file.ts +3 -3
  742. package/src/stripe/meter.ts +3 -3
  743. package/src/stripe/portal-configuration.ts +3 -5
  744. package/src/stripe/price.ts +3 -3
  745. package/src/stripe/product-feature.ts +3 -5
  746. package/src/stripe/product.ts +3 -3
  747. package/src/stripe/promotion-code.ts +3 -5
  748. package/src/stripe/shipping-rate.ts +3 -5
  749. package/src/stripe/tax-rate.ts +3 -3
  750. package/src/stripe/webhook.ts +3 -5
  751. package/src/test/bun.ts +2 -1
  752. package/src/test/options.ts +6 -0
  753. package/src/test/vitest.ts +1 -0
  754. package/src/upstash/redis.ts +1 -3
  755. package/src/util/api/client/client.gen.ts +268 -0
  756. package/src/util/api/client/index.ts +25 -0
  757. package/src/util/api/client/types.gen.ts +268 -0
  758. package/src/util/api/client/utils.gen.ts +331 -0
  759. package/src/util/api/core/auth.gen.ts +42 -0
  760. package/src/util/api/core/bodySerializer.gen.ts +92 -0
  761. package/src/util/api/core/params.gen.ts +153 -0
  762. package/src/util/api/core/pathSerializer.gen.ts +181 -0
  763. package/src/util/api/core/serverSentEvents.gen.ts +264 -0
  764. package/src/util/api/core/types.gen.ts +118 -0
  765. package/src/util/api/core/utils.gen.ts +143 -0
  766. package/src/util/http.ts +38 -11
  767. package/src/util/lock.ts +48 -0
  768. package/src/util/memoize.ts +26 -0
  769. package/src/util/oauth-client.ts +238 -0
  770. package/src/util/poll.ts +55 -0
  771. package/src/vercel/project-domain.ts +1 -3
  772. package/src/vercel/project.ts +3 -3
  773. package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +2 -2
  774. package/workers/cloudflare-state-store.js +8 -5619
  775. package/workers/dofs-state-store.js +2 -802
  776. package/workers/remote-binding-proxy.js +3 -39
  777. package/workers/remote-binding-proxy.ts +126 -35
  778. package/workers/tunnel-proxy.js +6 -73
  779. package/lib/cloudflare/asset-manifest.d.ts +0 -15
  780. package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
  781. package/lib/cloudflare/asset-manifest.js +0 -1
  782. package/lib/cloudflare/asset-manifest.js.map +0 -1
  783. package/lib/cloudflare/oauth.d.ts +0 -22
  784. package/lib/cloudflare/oauth.d.ts.map +0 -1
  785. package/lib/cloudflare/oauth.js +0 -214
  786. package/lib/cloudflare/oauth.js.map +0 -1
  787. package/lib/neon/api-error.d.ts +0 -31
  788. package/lib/neon/api-error.d.ts.map +0 -1
  789. package/lib/neon/api-error.js +0 -73
  790. package/lib/neon/api-error.js.map +0 -1
  791. package/lib/planetscale/api/index.d.ts +0 -3
  792. package/lib/planetscale/api/index.d.ts.map +0 -1
  793. package/lib/planetscale/api/index.js +0 -4
  794. package/lib/planetscale/api/index.js.map +0 -1
  795. package/lib/util/neverthrow.d.ts +0 -16
  796. package/lib/util/neverthrow.d.ts.map +0 -1
  797. package/lib/util/neverthrow.js +0 -46
  798. package/lib/util/neverthrow.js.map +0 -1
  799. package/src/cloudflare/asset-manifest.ts +0 -16
  800. package/src/cloudflare/oauth.ts +0 -301
  801. package/src/neon/api-error.ts +0 -81
  802. package/src/planetscale/api/index.ts +0 -4
  803. package/src/util/neverthrow.ts +0 -64
@@ -0,0 +1,88 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ import { serializeArrayParam, serializeObjectParam, serializePrimitiveParam, } from './pathSerializer.gen';
3
+ export const PATH_PARAM_RE = /\{[^{}]+\}/g;
4
+ export const defaultPathSerializer = ({ path, url: _url }) => {
5
+ let url = _url;
6
+ const matches = _url.match(PATH_PARAM_RE);
7
+ if (matches) {
8
+ for (const match of matches) {
9
+ let explode = false;
10
+ let name = match.substring(1, match.length - 1);
11
+ let style = 'simple';
12
+ if (name.endsWith('*')) {
13
+ explode = true;
14
+ name = name.substring(0, name.length - 1);
15
+ }
16
+ if (name.startsWith('.')) {
17
+ name = name.substring(1);
18
+ style = 'label';
19
+ }
20
+ else if (name.startsWith(';')) {
21
+ name = name.substring(1);
22
+ style = 'matrix';
23
+ }
24
+ const value = path[name];
25
+ if (value === undefined || value === null) {
26
+ continue;
27
+ }
28
+ if (Array.isArray(value)) {
29
+ url = url.replace(match, serializeArrayParam({ explode, name, style, value }));
30
+ continue;
31
+ }
32
+ if (typeof value === 'object') {
33
+ url = url.replace(match, serializeObjectParam({
34
+ explode,
35
+ name,
36
+ style,
37
+ value: value,
38
+ valueOnly: true,
39
+ }));
40
+ continue;
41
+ }
42
+ if (style === 'matrix') {
43
+ url = url.replace(match, `;${serializePrimitiveParam({
44
+ name,
45
+ value: value,
46
+ })}`);
47
+ continue;
48
+ }
49
+ const replaceValue = encodeURIComponent(style === 'label' ? `.${value}` : value);
50
+ url = url.replace(match, replaceValue);
51
+ }
52
+ }
53
+ return url;
54
+ };
55
+ export const getUrl = ({ baseUrl, path, query, querySerializer, url: _url, }) => {
56
+ const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;
57
+ let url = (baseUrl ?? '') + pathUrl;
58
+ if (path) {
59
+ url = defaultPathSerializer({ path, url });
60
+ }
61
+ let search = query ? querySerializer(query) : '';
62
+ if (search.startsWith('?')) {
63
+ search = search.substring(1);
64
+ }
65
+ if (search) {
66
+ url += `?${search}`;
67
+ }
68
+ return url;
69
+ };
70
+ export function getValidRequestBody(options) {
71
+ const hasBody = options.body !== undefined;
72
+ const isSerializedBody = hasBody && options.bodySerializer;
73
+ if (isSerializedBody) {
74
+ if ('serializedBody' in options) {
75
+ const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== '';
76
+ return hasSerializedBody ? options.serializedBody : null;
77
+ }
78
+ // not all clients implement a serializedBody property (i.e. client-axios)
79
+ return options.body !== '' ? options.body : null;
80
+ }
81
+ // plain/text body
82
+ if (hasBody) {
83
+ return options.body;
84
+ }
85
+ // no body was provided
86
+ return undefined;
87
+ }
88
+ //# sourceMappingURL=utils.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.gen.js","sourceRoot":"","sources":["../../../../src/util/api/core/utils.gen.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
1
  import http from "node:http";
2
+ import { type Duplex } from "node:stream";
3
+ import { WebSocketServer, type WebSocket } from "ws";
2
4
  export declare class HTTPServer {
3
- httpServer: http.Server;
5
+ httpServer: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
6
+ webSocketServer?: WebSocketServer;
4
7
  constructor(options: {
8
+ websocket?: (request: Request) => Promise<WebSocket>;
5
9
  fetch: (request: Request) => Promise<Response>;
6
10
  });
7
11
  listen(port?: number): Promise<this>;
8
12
  get url(): string;
9
- close(): Promise<unknown>;
13
+ close(): Promise<void>;
10
14
  }
15
+ export declare function coupleWebSocket(wss: WebSocketServer, req: http.IncomingMessage, socket: Duplex, head: Buffer, server: WebSocket): void;
11
16
  export declare function toWebRequest(req: http.IncomingMessage, host?: string): Request;
12
17
  export declare function writeNodeResponse(res: http.ServerResponse, response: Response): Promise<void>;
13
18
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,qBAAa,UAAU;IACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBAEZ,OAAO,EAAE;QACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAChD;IAQD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;IAYpB,IAAI,GAAG,WAON;IAED,KAAK;CAWN;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAeT;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,QAAQ,EAAE,QAAQ,iBAoBnB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAErD,qBAAa,UAAU;IACrB,UAAU,uEAAuB;IACjC,eAAe,CAAC,EAAE,eAAe,CAAC;gBAEtB,OAAO,EAAE;QACnB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAChD;IAgBD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM;IAYpB,IAAI,GAAG,WAON;IAEK,KAAK;CAWZ;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,QASlB;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAeT;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,QAAQ,EAAE,QAAQ,iBAoBnB"}
package/lib/util/http.js CHANGED
@@ -1,13 +1,23 @@
1
1
  import http from "node:http";
2
2
  import { Readable } from "node:stream";
3
+ import { WebSocketServer } from "ws";
3
4
  export class HTTPServer {
4
- httpServer;
5
+ httpServer = http.createServer();
6
+ webSocketServer;
5
7
  constructor(options) {
6
- this.httpServer = http.createServer();
7
8
  this.httpServer.on("request", async (req, res) => {
8
9
  const response = await options.fetch(toWebRequest(req));
9
10
  await writeNodeResponse(res, response);
10
11
  });
12
+ const websocket = options.websocket;
13
+ if (websocket) {
14
+ const webSocketServer = new WebSocketServer({ noServer: true });
15
+ this.webSocketServer = webSocketServer;
16
+ this.httpServer.on("upgrade", async (req, socket, head) => {
17
+ const ws = await websocket(toWebRequest(req));
18
+ coupleWebSocket(webSocketServer, req, socket, head, ws);
19
+ });
20
+ }
11
21
  }
12
22
  listen(port) {
13
23
  return new Promise((resolve, reject) => {
@@ -28,19 +38,27 @@ export class HTTPServer {
28
38
  const hostname = address.address === "::" ? "localhost" : address.address;
29
39
  return `http://${hostname}:${address.port}`;
30
40
  }
31
- close() {
32
- return new Promise((resolve, reject) => {
33
- this.httpServer.close((err) => {
34
- if (err) {
35
- reject(err);
36
- }
37
- else {
38
- resolve(undefined);
39
- }
41
+ async close() {
42
+ const webSocketServer = this.webSocketServer;
43
+ if (webSocketServer) {
44
+ await new Promise((resolve, reject) => {
45
+ webSocketServer.close((err) => (err ? reject(err) : resolve()));
40
46
  });
47
+ }
48
+ await new Promise((resolve, reject) => {
49
+ this.httpServer.close((err) => (err ? reject(err) : resolve()));
41
50
  });
42
51
  }
43
52
  }
53
+ export function coupleWebSocket(wss, req, socket, head, server) {
54
+ wss.handleUpgrade(req, socket, head, (client) => {
55
+ client.on("message", (event, binary) => server.send(event, { binary }));
56
+ client.on("close", (code, reason) => server.close(code, reason));
57
+ server.on("message", (event, binary) => client.send(event, { binary }));
58
+ server.on("close", (code, reason) => client.close(code, reason));
59
+ wss.emit("connection", client, req);
60
+ });
61
+ }
44
62
  export function toWebRequest(req, host) {
45
63
  const method = req.method ?? "GET";
46
64
  const url = new URL(req.url ?? "/", `http://${host ?? req.headers.host}`);
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/util/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare class Lock {
2
+ private path;
3
+ constructor(key: string);
4
+ /**
5
+ * Acquires the lock.
6
+ * @returns A function to release the lock, or null if the lock is already acquired.
7
+ */
8
+ acquire(): Promise<(() => Promise<void>) | null>;
9
+ /**
10
+ * Checks if the lock is active.
11
+ * @returns True if the lock is active, false otherwise.
12
+ */
13
+ check(): Promise<boolean>;
14
+ /**
15
+ * Waits for the lock to be released.
16
+ * @param interval The interval to wait between checks.
17
+ */
18
+ wait(interval?: number): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/util/lock.ts"],"names":[],"mappings":"AAOA,qBAAa,IAAI;IACf,OAAO,CAAC,IAAI,CAAS;gBACT,GAAG,EAAE,MAAM;IAIvB;;;OAGG;IACG,OAAO;IAWb;;;OAGG;IACG,KAAK;IAMX;;;OAGG;IACG,IAAI,CAAC,QAAQ,SAAM;CAK1B"}
@@ -0,0 +1,45 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import lockfile from "proper-lockfile";
5
+ const LOCK_DIR = path.join(os.homedir(), ".alchemy", "lock");
6
+ export class Lock {
7
+ path;
8
+ constructor(key) {
9
+ this.path = path.join(LOCK_DIR, encodeURIComponent(key));
10
+ }
11
+ /**
12
+ * Acquires the lock.
13
+ * @returns A function to release the lock, or null if the lock is already acquired.
14
+ */
15
+ async acquire() {
16
+ try {
17
+ await fs.mkdir(LOCK_DIR, { recursive: true });
18
+ return await lockfile.lock(LOCK_DIR, {
19
+ lockfilePath: this.path,
20
+ });
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /**
27
+ * Checks if the lock is active.
28
+ * @returns True if the lock is active, false otherwise.
29
+ */
30
+ async check() {
31
+ return await lockfile.check(LOCK_DIR, {
32
+ lockfilePath: this.path,
33
+ });
34
+ }
35
+ /**
36
+ * Waits for the lock to be released.
37
+ * @param interval The interval to wait between checks.
38
+ */
39
+ async wait(interval = 100) {
40
+ while (await this.check()) {
41
+ await new Promise((resolve) => setTimeout(resolve, interval));
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/util/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAE7D,MAAM,OAAO,IAAI;IACP,IAAI,CAAS;IACrB,YAAY,GAAW;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnC,YAAY,EAAE,IAAI,CAAC,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;YACpC,YAAY,EAAE,IAAI,CAAC,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG;QACvB,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,11 @@
1
1
  type AsyncReturnType<T> = T extends (...args: any[]) => Promise<infer R> ? R : T;
2
2
  export declare function memoize<F extends (...args: any[]) => Promise<any>>(fn: F, keyFn?: (...args: Parameters<F>) => string): (...args: Parameters<F>) => Promise<AsyncReturnType<F>>;
3
+ /**
4
+ * Single flight memoization.
5
+ * Ensures only one instance of the function is executed at a time.
6
+ * If another instance is already executing, returns the in-flight promise.
7
+ */
8
+ export declare function singleFlight<F extends (...args: any[]) => Promise<any>>(fn: F, keyFn?: (...args: Parameters<F>) => string): (...args: Parameters<F>) => Promise<AsyncReturnType<F>>;
3
9
  export declare function defaultKeyFn(...args: any[]): string;
4
10
  export {};
5
11
  //# sourceMappingURL=memoize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/util/memoize.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GACpE,CAAC,GACD,CAAC,CAAC;AAEN,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,GAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAqB,IAG1C,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAanE;AAED,wBAAgB,YAAY,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAanD"}
1
+ {"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/util/memoize.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GACpE,CAAC,GACD,CAAC,CAAC;AAEN,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAChE,EAAE,EAAE,CAAC,EACL,KAAK,GAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAqB,IAG1C,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAanE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACrE,EAAE,EAAE,CAAC,EACL,KAAK,GAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,MAAqB,IAG1C,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAcnE;AAED,wBAAgB,YAAY,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAanD"}
@@ -16,6 +16,29 @@ export function memoize(fn, keyFn = defaultKeyFn) {
16
16
  return await promise;
17
17
  };
18
18
  }
19
+ /**
20
+ * Single flight memoization.
21
+ * Ensures only one instance of the function is executed at a time.
22
+ * If another instance is already executing, returns the in-flight promise.
23
+ */
24
+ export function singleFlight(fn, keyFn = defaultKeyFn) {
25
+ const cache = new Map();
26
+ return async (...args) => {
27
+ const key = keyFn(...args);
28
+ const cached = cache.get(key);
29
+ if (cached) {
30
+ return await cached;
31
+ }
32
+ const promise = fn(...args);
33
+ cache.set(key, promise);
34
+ try {
35
+ return await promise;
36
+ }
37
+ finally {
38
+ cache.delete(key);
39
+ }
40
+ };
41
+ }
19
42
  export function defaultKeyFn(...args) {
20
43
  return createHash("sha256")
21
44
  .update(JSON.stringify(args, (_, value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/util/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMxC,MAAM,UAAU,OAAO,CACrB,EAAK,EACL,QAA4C,YAAY;IAExD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC7D,OAAO,KAAK,EAAE,GAAG,IAAmB,EAA+B,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,MAAM,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,MAAM,OAAO,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,IAAW;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChC,kDAAkD;QAClD,iDAAiD;QACjD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH;SACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/util/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMxC,MAAM,UAAU,OAAO,CACrB,EAAK,EACL,QAA4C,YAAY;IAExD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC7D,OAAO,KAAK,EAAE,GAAG,IAAmB,EAA+B,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,MAAM,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO,MAAM,OAAO,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAK,EACL,QAA4C,YAAY;IAExD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC7D,OAAO,KAAK,EAAE,GAAG,IAAmB,EAA+B,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,MAAM,CAAC;QACtB,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC;QACvB,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,IAAW;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAChC,kDAAkD;QAClD,iDAAiD;QACjD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH;SACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { Credentials } from "../auth.ts";
2
+ export declare class OAuthError extends Error {
3
+ readonly error: string;
4
+ constructor({ error, error_description, ...rest }: OAuthClient.ErrorResponse);
5
+ }
6
+ /**
7
+ * Generic OAuth 2.0 client.
8
+ *
9
+ * Currently only handles the subset required for Cloudflare, but can be modified easily:
10
+ * - authorization and refresh code flow
11
+ * - S256 code challenge
12
+ * - no client secret
13
+ */
14
+ export declare class OAuthClient {
15
+ private readonly options;
16
+ constructor(options: {
17
+ clientId: string;
18
+ redirectUri: string;
19
+ endpoints: {
20
+ authorize: string;
21
+ token: string;
22
+ revoke: string;
23
+ };
24
+ });
25
+ /**
26
+ * Generate an authorization URL, state, and verifier for the given scopes.
27
+ */
28
+ authorize(scopes: string[]): OAuthClient.Authorization;
29
+ /**
30
+ * Exchange an authorization code for credentials.
31
+ */
32
+ exchange(code: string, verifier: string): Promise<Credentials.OAuth>;
33
+ /**
34
+ * Refresh OAuth 2.0 credentials.
35
+ */
36
+ refresh(credentials: Credentials.OAuth): Promise<Credentials.OAuth>;
37
+ /**
38
+ * Revoke OAuth 2.0 credentials.
39
+ */
40
+ revoke(credentials: Credentials.OAuth): Promise<void>;
41
+ /**
42
+ * Make a POST request to the OAuth provider with the given urlencoded body.
43
+ */
44
+ private request;
45
+ /**
46
+ * Listens for the callback from the provider by starting a local HTTP server and exchanges the authorization code for credentials.
47
+ * Should be called with the authorization object returned by {@link authorize}.
48
+ * Listens for the callback on the client's redirect URI.
49
+ * Throws if the request is invalid, the code exchange fails, or if no callback is received within 5 minutes.
50
+ */
51
+ callback(authorization: OAuthClient.Authorization): Promise<Credentials.OAuth>;
52
+ }
53
+ export declare namespace OAuthClient {
54
+ interface ErrorResponse {
55
+ error: string;
56
+ error_description: string;
57
+ }
58
+ interface SuccessResponse {
59
+ access_token: string;
60
+ refresh_token: string;
61
+ expires_in: number;
62
+ scope: string;
63
+ token_type: string;
64
+ }
65
+ interface Authorization {
66
+ url: string;
67
+ state: string;
68
+ verifier: string;
69
+ }
70
+ }
71
+ //# sourceMappingURL=oauth-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client.d.ts","sourceRoot":"","sources":["../../src/util/oauth-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,EACV,KAAK,EACL,iBAAiB,EACjB,GAAG,IAAI,EACR,EAAE,WAAW,CAAC,aAAa;CAM7B;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE;YACT,SAAS,EAAE,MAAM,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH;IAGH;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,aAAa;IActD;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;IAW1E;;OAEG;IACG,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;IAUzE;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D;;OAEG;YACW,OAAO;IAgBrB;;;;;OAKG;IACG,QAAQ,CACZ,aAAa,EAAE,WAAW,CAAC,aAAa,GACvC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;CAoE9B;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,UAAiB,aAAa;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IAED,UAAiB,eAAe;QAC9B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB;IAED,UAAiB,aAAa;QAC5B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB;CACF"}
@@ -0,0 +1,188 @@
1
+ import crypto from "node:crypto";
2
+ import { DeferredPromise } from "./deferred-promise.js";
3
+ import { HTTPServer } from "./http.js";
4
+ export class OAuthError extends Error {
5
+ error;
6
+ constructor({ error, error_description, ...rest }) {
7
+ super(error_description);
8
+ this.error = error;
9
+ this.name = "OAuthError";
10
+ Object.assign(this, rest);
11
+ }
12
+ }
13
+ /**
14
+ * Generic OAuth 2.0 client.
15
+ *
16
+ * Currently only handles the subset required for Cloudflare, but can be modified easily:
17
+ * - authorization and refresh code flow
18
+ * - S256 code challenge
19
+ * - no client secret
20
+ */
21
+ export class OAuthClient {
22
+ options;
23
+ constructor(options) {
24
+ this.options = options;
25
+ }
26
+ /**
27
+ * Generate an authorization URL, state, and verifier for the given scopes.
28
+ */
29
+ authorize(scopes) {
30
+ const state = generateState();
31
+ const pkce = generatePKCE();
32
+ const url = new URL(this.options.endpoints.authorize);
33
+ url.searchParams.set("client_id", this.options.clientId);
34
+ url.searchParams.set("redirect_uri", this.options.redirectUri);
35
+ url.searchParams.set("response_type", "code");
36
+ url.searchParams.set("scope", scopes.join(" "));
37
+ url.searchParams.set("state", state);
38
+ url.searchParams.set("code_challenge", pkce.challenge);
39
+ url.searchParams.set("code_challenge_method", "S256");
40
+ return { url: url.toString(), state, verifier: pkce.verifier };
41
+ }
42
+ /**
43
+ * Exchange an authorization code for credentials.
44
+ */
45
+ async exchange(code, verifier) {
46
+ const res = await this.request(this.options.endpoints.token, {
47
+ grant_type: "authorization_code",
48
+ code,
49
+ code_verifier: verifier,
50
+ client_id: this.options.clientId,
51
+ redirect_uri: this.options.redirectUri,
52
+ });
53
+ return await extractCredentialsFromResponse(res);
54
+ }
55
+ /**
56
+ * Refresh OAuth 2.0 credentials.
57
+ */
58
+ async refresh(credentials) {
59
+ const res = await this.request(this.options.endpoints.token, {
60
+ grant_type: "refresh_token",
61
+ refresh_token: credentials.refresh,
62
+ client_id: this.options.clientId,
63
+ redirect_uri: this.options.redirectUri,
64
+ });
65
+ return await extractCredentialsFromResponse(res);
66
+ }
67
+ /**
68
+ * Revoke OAuth 2.0 credentials.
69
+ */
70
+ async revoke(credentials) {
71
+ await this.request(this.options.endpoints.revoke, {
72
+ refresh_token: credentials.refresh,
73
+ client_id: this.options.clientId,
74
+ redirect_uri: this.options.redirectUri,
75
+ });
76
+ }
77
+ /**
78
+ * Make a POST request to the OAuth provider with the given urlencoded body.
79
+ */
80
+ async request(url, body) {
81
+ const res = await fetch(url, {
82
+ method: "POST",
83
+ headers: {
84
+ Accept: "application/json",
85
+ "Content-Type": "application/x-www-form-urlencoded",
86
+ },
87
+ body: new URLSearchParams(body).toString(),
88
+ });
89
+ if (!res.ok) {
90
+ const json = await res.json();
91
+ throw new OAuthError(json);
92
+ }
93
+ return res;
94
+ }
95
+ /**
96
+ * Listens for the callback from the provider by starting a local HTTP server and exchanges the authorization code for credentials.
97
+ * Should be called with the authorization object returned by {@link authorize}.
98
+ * Listens for the callback on the client's redirect URI.
99
+ * Throws if the request is invalid, the code exchange fails, or if no callback is received within 5 minutes.
100
+ */
101
+ async callback(authorization) {
102
+ const { pathname, port } = new URL(this.options.redirectUri);
103
+ const promise = new DeferredPromise();
104
+ const handle = async (request) => {
105
+ const url = new URL(request.url);
106
+ if (url.pathname !== pathname) {
107
+ throw new OAuthError({
108
+ error: "invalid_request",
109
+ error_description: "Invalid redirect URI",
110
+ });
111
+ }
112
+ const error = url.searchParams.get("error");
113
+ const errorDescription = url.searchParams.get("error_description");
114
+ if (error) {
115
+ throw new OAuthError({
116
+ error,
117
+ error_description: errorDescription ?? "An unknown error occurred.",
118
+ });
119
+ }
120
+ const code = url.searchParams.get("code");
121
+ const state = url.searchParams.get("state");
122
+ if (!code || !state) {
123
+ throw new OAuthError({
124
+ error: "invalid_request",
125
+ error_description: "Missing code or state",
126
+ });
127
+ }
128
+ if (state !== authorization.state) {
129
+ throw new OAuthError({
130
+ error: "invalid_request",
131
+ error_description: "Invalid state",
132
+ });
133
+ }
134
+ return await this.exchange(code, authorization.verifier);
135
+ };
136
+ const server = new HTTPServer({
137
+ fetch: async (req) => {
138
+ try {
139
+ const result = await handle(req);
140
+ promise.resolve(result);
141
+ return Response.redirect("http://alchemy.run/auth/success");
142
+ }
143
+ catch (error) {
144
+ promise.reject(error);
145
+ return Response.redirect("http://alchemy.run/auth/error");
146
+ }
147
+ },
148
+ });
149
+ await server.listen(Number(port));
150
+ const timeout = setTimeout(() => {
151
+ promise.reject(new OAuthError({
152
+ error: "timeout",
153
+ error_description: "The authorization process timed out.",
154
+ }));
155
+ }, 1000 * 60 * 5);
156
+ try {
157
+ const result = await promise.value;
158
+ clearTimeout(timeout);
159
+ return result;
160
+ }
161
+ finally {
162
+ // Not awaited because the server can take a few seconds to close, don't want to block the login process from completing
163
+ void server.close();
164
+ }
165
+ }
166
+ }
167
+ async function extractCredentialsFromResponse(response) {
168
+ const json = (await response.json());
169
+ return {
170
+ type: "oauth",
171
+ access: json.access_token,
172
+ refresh: json.refresh_token,
173
+ expires: Date.now() + json.expires_in * 1000,
174
+ scopes: json.scope.split(" "),
175
+ };
176
+ }
177
+ function generateState(length = 32) {
178
+ return crypto.randomBytes(length).toString("base64url");
179
+ }
180
+ function generatePKCE(length = 96) {
181
+ const verifier = crypto.randomBytes(length).toString("base64url");
182
+ const challenge = crypto
183
+ .createHash("sha256")
184
+ .update(verifier)
185
+ .digest("base64url");
186
+ return { verifier, challenge };
187
+ }
188
+ //# sourceMappingURL=oauth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/util/oauth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Polls a function until it returns a result that satisfies the predicate.
3
+ */
4
+ export declare function poll<T>(input: {
5
+ /**
6
+ * A description of the operation being polled.
7
+ */
8
+ description: string;
9
+ /**
10
+ * The function to poll.
11
+ */
12
+ fn: () => Promise<T>;
13
+ /**
14
+ * A predicate that determines if the operation has completed.
15
+ */
16
+ predicate: (result: T) => boolean;
17
+ /**
18
+ * The initial delay between polls.
19
+ * @default 250ms
20
+ */
21
+ initialDelay?: number;
22
+ /**
23
+ * The maximum delay between polls.
24
+ * @default 2_500ms (2.5 seconds)
25
+ */
26
+ maxDelay?: number;
27
+ /**
28
+ * The timeout for the poll in milliseconds.
29
+ * @default 1_000_000 (~16 minutes)
30
+ */
31
+ timeout?: number;
32
+ }): Promise<T>;
33
+ //# sourceMappingURL=poll.d.ts.map