alchemy 0.67.0 → 0.68.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 (750) hide show
  1. package/bin/alchemy.js +25563 -26265
  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/resource.d.ts +34 -3
  20. package/lib/aws/control/resource.d.ts.map +1 -1
  21. package/lib/aws/control/resource.js +3 -3
  22. package/lib/aws/control/resource.js.map +1 -1
  23. package/lib/aws/ec2/internet-gateway-attachment.d.ts +1 -2
  24. package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -1
  25. package/lib/aws/ec2/internet-gateway-attachment.js +4 -4
  26. package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -1
  27. package/lib/aws/ec2/internet-gateway.d.ts +1 -2
  28. package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
  29. package/lib/aws/ec2/internet-gateway.js +2 -2
  30. package/lib/aws/ec2/internet-gateway.js.map +1 -1
  31. package/lib/aws/ec2/nat-gateway.d.ts +1 -2
  32. package/lib/aws/ec2/nat-gateway.d.ts.map +1 -1
  33. package/lib/aws/ec2/nat-gateway.js +2 -2
  34. package/lib/aws/ec2/nat-gateway.js.map +1 -1
  35. package/lib/aws/ec2/route-table-association.d.ts +1 -2
  36. package/lib/aws/ec2/route-table-association.d.ts.map +1 -1
  37. package/lib/aws/ec2/route-table-association.js +2 -2
  38. package/lib/aws/ec2/route-table-association.js.map +1 -1
  39. package/lib/aws/ec2/route-table.d.ts +1 -2
  40. package/lib/aws/ec2/route-table.d.ts.map +1 -1
  41. package/lib/aws/ec2/route-table.js +2 -2
  42. package/lib/aws/ec2/route-table.js.map +1 -1
  43. package/lib/aws/ec2/route.d.ts +1 -2
  44. package/lib/aws/ec2/route.d.ts.map +1 -1
  45. package/lib/aws/ec2/route.js +2 -2
  46. package/lib/aws/ec2/route.js.map +1 -1
  47. package/lib/aws/ec2/security-group-rule.d.ts +1 -2
  48. package/lib/aws/ec2/security-group-rule.d.ts.map +1 -1
  49. package/lib/aws/ec2/security-group-rule.js +2 -2
  50. package/lib/aws/ec2/security-group-rule.js.map +1 -1
  51. package/lib/aws/ec2/security-group.d.ts +1 -2
  52. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  53. package/lib/aws/ec2/security-group.js +2 -2
  54. package/lib/aws/ec2/security-group.js.map +1 -1
  55. package/lib/aws/ec2/subnet.d.ts +1 -2
  56. package/lib/aws/ec2/subnet.d.ts.map +1 -1
  57. package/lib/aws/ec2/subnet.js +2 -2
  58. package/lib/aws/ec2/subnet.js.map +1 -1
  59. package/lib/aws/ec2/vpc.d.ts +1 -2
  60. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  61. package/lib/aws/ec2/vpc.js +2 -2
  62. package/lib/aws/ec2/vpc.js.map +1 -1
  63. package/lib/aws/function.d.ts +116 -3
  64. package/lib/aws/function.d.ts.map +1 -1
  65. package/lib/aws/function.js +2 -2
  66. package/lib/aws/function.js.map +1 -1
  67. package/lib/aws/oidc/github-oidc-provider.d.ts +13 -2
  68. package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -1
  69. package/lib/aws/oidc/oidc-provider.d.ts +48 -3
  70. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
  71. package/lib/aws/oidc/oidc-provider.js +2 -2
  72. package/lib/aws/oidc/oidc-provider.js.map +1 -1
  73. package/lib/aws/policy-attachment.d.ts +2 -3
  74. package/lib/aws/policy-attachment.d.ts.map +1 -1
  75. package/lib/aws/policy-attachment.js +1 -1
  76. package/lib/aws/policy-attachment.js.map +1 -1
  77. package/lib/aws/policy.d.ts +1 -2
  78. package/lib/aws/policy.d.ts.map +1 -1
  79. package/lib/aws/policy.js +4 -4
  80. package/lib/aws/policy.js.map +1 -1
  81. package/lib/aws/queue.d.ts +1 -2
  82. package/lib/aws/queue.d.ts.map +1 -1
  83. package/lib/aws/queue.js +4 -4
  84. package/lib/aws/queue.js.map +1 -1
  85. package/lib/aws/role.d.ts +1 -2
  86. package/lib/aws/role.d.ts.map +1 -1
  87. package/lib/aws/role.js +2 -2
  88. package/lib/aws/role.js.map +1 -1
  89. package/lib/aws/ses.d.ts +1 -2
  90. package/lib/aws/ses.d.ts.map +1 -1
  91. package/lib/aws/ses.js +2 -2
  92. package/lib/aws/ses.js.map +1 -1
  93. package/lib/aws/ssm-parameter.d.ts +1 -2
  94. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  95. package/lib/aws/ssm-parameter.js +2 -2
  96. package/lib/aws/ssm-parameter.js.map +1 -1
  97. package/lib/aws/table.d.ts +1 -2
  98. package/lib/aws/table.d.ts.map +1 -1
  99. package/lib/aws/table.js +2 -2
  100. package/lib/aws/table.js.map +1 -1
  101. package/lib/cloudflare/account-api-token.d.ts +1 -2
  102. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  103. package/lib/cloudflare/account-api-token.js +2 -2
  104. package/lib/cloudflare/account-api-token.js.map +1 -1
  105. package/lib/cloudflare/ai-gateway.d.ts +1 -2
  106. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  107. package/lib/cloudflare/ai-gateway.js +2 -2
  108. package/lib/cloudflare/ai-gateway.js.map +1 -1
  109. package/lib/cloudflare/api-gateway-operation.d.ts +1 -2
  110. package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -1
  111. package/lib/cloudflare/api-gateway-operation.js +2 -2
  112. package/lib/cloudflare/api-gateway-operation.js.map +1 -1
  113. package/lib/cloudflare/api-schema.d.ts +1 -2
  114. package/lib/cloudflare/api-schema.d.ts.map +1 -1
  115. package/lib/cloudflare/api-schema.js +2 -2
  116. package/lib/cloudflare/api-schema.js.map +1 -1
  117. package/lib/cloudflare/api-shield.d.ts +1 -2
  118. package/lib/cloudflare/api-shield.d.ts.map +1 -1
  119. package/lib/cloudflare/api-shield.js +2 -2
  120. package/lib/cloudflare/api-shield.js.map +1 -1
  121. package/lib/cloudflare/api.d.ts +18 -10
  122. package/lib/cloudflare/api.d.ts.map +1 -1
  123. package/lib/cloudflare/api.js +93 -38
  124. package/lib/cloudflare/api.js.map +1 -1
  125. package/lib/cloudflare/assets.d.ts +21 -43
  126. package/lib/cloudflare/assets.d.ts.map +1 -1
  127. package/lib/cloudflare/assets.js +78 -70
  128. package/lib/cloudflare/assets.js.map +1 -1
  129. package/lib/cloudflare/auth.d.ts +91 -17
  130. package/lib/cloudflare/auth.d.ts.map +1 -1
  131. package/lib/cloudflare/auth.js +141 -62
  132. package/lib/cloudflare/auth.js.map +1 -1
  133. package/lib/cloudflare/bound.d.ts +1 -1
  134. package/lib/cloudflare/bound.d.ts.map +1 -1
  135. package/lib/cloudflare/bucket.d.ts +60 -8
  136. package/lib/cloudflare/bucket.d.ts.map +1 -1
  137. package/lib/cloudflare/bucket.js +161 -18
  138. package/lib/cloudflare/bucket.js.map +1 -1
  139. package/lib/cloudflare/bundle/plugin-wasm.js +4 -2
  140. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
  141. package/lib/cloudflare/certificate-pack.d.ts +1 -2
  142. package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
  143. package/lib/cloudflare/certificate-pack.js +4 -4
  144. package/lib/cloudflare/certificate-pack.js.map +1 -1
  145. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  146. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  147. package/lib/cloudflare/container.d.ts +1 -2
  148. package/lib/cloudflare/container.d.ts.map +1 -1
  149. package/lib/cloudflare/container.js +6 -6
  150. package/lib/cloudflare/container.js.map +1 -1
  151. package/lib/cloudflare/custom-domain.d.ts +1 -2
  152. package/lib/cloudflare/custom-domain.d.ts.map +1 -1
  153. package/lib/cloudflare/custom-domain.js +2 -2
  154. package/lib/cloudflare/custom-domain.js.map +1 -1
  155. package/lib/cloudflare/d1-database.d.ts +2 -3
  156. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  157. package/lib/cloudflare/d1-database.js +5 -5
  158. package/lib/cloudflare/d1-database.js.map +1 -1
  159. package/lib/cloudflare/dispatch-namespace.d.ts +2 -3
  160. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  161. package/lib/cloudflare/dispatch-namespace.js +3 -3
  162. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  163. package/lib/cloudflare/dns-records.d.ts +1 -2
  164. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  165. package/lib/cloudflare/dns-records.js +4 -4
  166. package/lib/cloudflare/dns-records.js.map +1 -1
  167. package/lib/cloudflare/email-address.d.ts +1 -2
  168. package/lib/cloudflare/email-address.d.ts.map +1 -1
  169. package/lib/cloudflare/email-address.js +6 -6
  170. package/lib/cloudflare/email-address.js.map +1 -1
  171. package/lib/cloudflare/email-catch-all.d.ts +1 -2
  172. package/lib/cloudflare/email-catch-all.d.ts.map +1 -1
  173. package/lib/cloudflare/email-catch-all.js +4 -4
  174. package/lib/cloudflare/email-catch-all.js.map +1 -1
  175. package/lib/cloudflare/email-routing.d.ts +1 -2
  176. package/lib/cloudflare/email-routing.d.ts.map +1 -1
  177. package/lib/cloudflare/email-routing.js +4 -4
  178. package/lib/cloudflare/email-routing.js.map +1 -1
  179. package/lib/cloudflare/email-rule.d.ts +1 -2
  180. package/lib/cloudflare/email-rule.d.ts.map +1 -1
  181. package/lib/cloudflare/email-rule.js +4 -4
  182. package/lib/cloudflare/email-rule.js.map +1 -1
  183. package/lib/cloudflare/hyperdrive.d.ts +1 -2
  184. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  185. package/lib/cloudflare/hyperdrive.js +4 -4
  186. package/lib/cloudflare/hyperdrive.js.map +1 -1
  187. package/lib/cloudflare/kv-namespace.d.ts +2 -3
  188. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  189. package/lib/cloudflare/kv-namespace.js +5 -5
  190. package/lib/cloudflare/kv-namespace.js.map +1 -1
  191. package/lib/cloudflare/miniflare/delete.js +1 -1
  192. package/lib/cloudflare/miniflare/delete.js.map +1 -1
  193. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  194. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +2 -7
  195. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  196. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
  197. package/lib/cloudflare/miniflare/remote-binding-proxy.js +15 -4
  198. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
  199. package/lib/cloudflare/permission-groups.d.ts +1 -2
  200. package/lib/cloudflare/permission-groups.d.ts.map +1 -1
  201. package/lib/cloudflare/permission-groups.js +1 -1
  202. package/lib/cloudflare/permission-groups.js.map +1 -1
  203. package/lib/cloudflare/pipeline.d.ts +2 -3
  204. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  205. package/lib/cloudflare/pipeline.js +5 -5
  206. package/lib/cloudflare/pipeline.js.map +1 -1
  207. package/lib/cloudflare/queue-consumer.d.ts +1 -2
  208. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  209. package/lib/cloudflare/queue-consumer.js +4 -4
  210. package/lib/cloudflare/queue-consumer.js.map +1 -1
  211. package/lib/cloudflare/queue.d.ts +1 -2
  212. package/lib/cloudflare/queue.d.ts.map +1 -1
  213. package/lib/cloudflare/queue.js +4 -4
  214. package/lib/cloudflare/queue.js.map +1 -1
  215. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  216. package/lib/cloudflare/react-router/plugin.js +13 -0
  217. package/lib/cloudflare/react-router/plugin.js.map +1 -1
  218. package/lib/cloudflare/redirect-rule.d.ts +1 -2
  219. package/lib/cloudflare/redirect-rule.d.ts.map +1 -1
  220. package/lib/cloudflare/redirect-rule.js +4 -4
  221. package/lib/cloudflare/redirect-rule.js.map +1 -1
  222. package/lib/cloudflare/route.d.ts +1 -2
  223. package/lib/cloudflare/route.d.ts.map +1 -1
  224. package/lib/cloudflare/route.js +4 -4
  225. package/lib/cloudflare/route.js.map +1 -1
  226. package/lib/cloudflare/ruleset.d.ts +1 -2
  227. package/lib/cloudflare/ruleset.d.ts.map +1 -1
  228. package/lib/cloudflare/ruleset.js +2 -2
  229. package/lib/cloudflare/ruleset.js.map +1 -1
  230. package/lib/cloudflare/secret.d.ts +2 -3
  231. package/lib/cloudflare/secret.d.ts.map +1 -1
  232. package/lib/cloudflare/secret.js +3 -3
  233. package/lib/cloudflare/secret.js.map +1 -1
  234. package/lib/cloudflare/secrets-store.d.ts +2 -3
  235. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  236. package/lib/cloudflare/secrets-store.js +3 -3
  237. package/lib/cloudflare/secrets-store.js.map +1 -1
  238. package/lib/cloudflare/tunnel.d.ts +2 -3
  239. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  240. package/lib/cloudflare/tunnel.js +3 -3
  241. package/lib/cloudflare/tunnel.js.map +1 -1
  242. package/lib/cloudflare/user.d.ts +3 -2
  243. package/lib/cloudflare/user.d.ts.map +1 -1
  244. package/lib/cloudflare/user.js +7 -5
  245. package/lib/cloudflare/user.js.map +1 -1
  246. package/lib/cloudflare/vectorize-index.d.ts +2 -3
  247. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  248. package/lib/cloudflare/vectorize-index.js +6 -6
  249. package/lib/cloudflare/vectorize-index.js.map +1 -1
  250. package/lib/cloudflare/vectorize-metadata-index.d.ts +2 -3
  251. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  252. package/lib/cloudflare/vectorize-metadata-index.js +4 -4
  253. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  254. package/lib/cloudflare/website.js +1 -1
  255. package/lib/cloudflare/website.js.map +1 -1
  256. package/lib/cloudflare/worker-assets.d.ts +1 -29
  257. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  258. package/lib/cloudflare/worker-assets.js +9 -42
  259. package/lib/cloudflare/worker-assets.js.map +1 -1
  260. package/lib/cloudflare/worker-stub.d.ts +2 -3
  261. package/lib/cloudflare/worker-stub.d.ts.map +1 -1
  262. package/lib/cloudflare/worker-stub.js +3 -3
  263. package/lib/cloudflare/worker-stub.js.map +1 -1
  264. package/lib/cloudflare/worker-subdomain.d.ts +4 -3
  265. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
  266. package/lib/cloudflare/worker-subdomain.js +5 -5
  267. package/lib/cloudflare/worker-subdomain.js.map +1 -1
  268. package/lib/cloudflare/worker.d.ts +3 -4
  269. package/lib/cloudflare/worker.d.ts.map +1 -1
  270. package/lib/cloudflare/worker.js +6 -5
  271. package/lib/cloudflare/worker.js.map +1 -1
  272. package/lib/cloudflare/zone.d.ts +1 -2
  273. package/lib/cloudflare/zone.d.ts.map +1 -1
  274. package/lib/cloudflare/zone.js +2 -2
  275. package/lib/cloudflare/zone.js.map +1 -1
  276. package/lib/context.d.ts +8 -8
  277. package/lib/context.d.ts.map +1 -1
  278. package/lib/context.js.map +1 -1
  279. package/lib/destroy.d.ts +1 -1
  280. package/lib/destroy.d.ts.map +1 -1
  281. package/lib/destroy.js.map +1 -1
  282. package/lib/dns/import-dns.d.ts +1 -2
  283. package/lib/dns/import-dns.d.ts.map +1 -1
  284. package/lib/dns/import-dns.js +2 -2
  285. package/lib/dns/import-dns.js.map +1 -1
  286. package/lib/docker/container.d.ts +1 -2
  287. package/lib/docker/container.d.ts.map +1 -1
  288. package/lib/docker/container.js +2 -3
  289. package/lib/docker/container.js.map +1 -1
  290. package/lib/docker/image.d.ts +1 -2
  291. package/lib/docker/image.d.ts.map +1 -1
  292. package/lib/docker/image.js +9 -9
  293. package/lib/docker/image.js.map +1 -1
  294. package/lib/docker/network.d.ts +1 -2
  295. package/lib/docker/network.d.ts.map +1 -1
  296. package/lib/docker/network.js +2 -3
  297. package/lib/docker/network.js.map +1 -1
  298. package/lib/docker/remote-image.d.ts +1 -2
  299. package/lib/docker/remote-image.d.ts.map +1 -1
  300. package/lib/docker/remote-image.js +2 -3
  301. package/lib/docker/remote-image.js.map +1 -1
  302. package/lib/docker/volume.d.ts +1 -2
  303. package/lib/docker/volume.d.ts.map +1 -1
  304. package/lib/docker/volume.js +2 -3
  305. package/lib/docker/volume.js.map +1 -1
  306. package/lib/esbuild/bundle.d.ts +1 -2
  307. package/lib/esbuild/bundle.d.ts.map +1 -1
  308. package/lib/esbuild/bundle.js +4 -4
  309. package/lib/esbuild/bundle.js.map +1 -1
  310. package/lib/fs/copy-file.d.ts +1 -2
  311. package/lib/fs/copy-file.d.ts.map +1 -1
  312. package/lib/fs/copy-file.js +2 -2
  313. package/lib/fs/copy-file.js.map +1 -1
  314. package/lib/fs/file.d.ts +1 -2
  315. package/lib/fs/file.d.ts.map +1 -1
  316. package/lib/fs/file.js +2 -2
  317. package/lib/fs/file.js.map +1 -1
  318. package/lib/fs/folder.d.ts +1 -2
  319. package/lib/fs/folder.d.ts.map +1 -1
  320. package/lib/fs/folder.js +2 -2
  321. package/lib/fs/folder.js.map +1 -1
  322. package/lib/github/comment.d.ts +1 -2
  323. package/lib/github/comment.d.ts.map +1 -1
  324. package/lib/github/comment.js +4 -4
  325. package/lib/github/comment.js.map +1 -1
  326. package/lib/github/repository-environment.d.ts +1 -2
  327. package/lib/github/repository-environment.d.ts.map +1 -1
  328. package/lib/github/repository-environment.js +2 -2
  329. package/lib/github/repository-environment.js.map +1 -1
  330. package/lib/github/repository-webhook.d.ts +1 -2
  331. package/lib/github/repository-webhook.d.ts.map +1 -1
  332. package/lib/github/repository-webhook.js +2 -2
  333. package/lib/github/repository-webhook.js.map +1 -1
  334. package/lib/github/secret.d.ts +1 -2
  335. package/lib/github/secret.d.ts.map +1 -1
  336. package/lib/github/secret.js +2 -2
  337. package/lib/github/secret.js.map +1 -1
  338. package/lib/neon/api/client.gen.d.ts +13 -0
  339. package/lib/neon/api/client.gen.d.ts.map +1 -0
  340. package/lib/neon/api/client.gen.js +7 -0
  341. package/lib/neon/api/client.gen.js.map +1 -0
  342. package/lib/neon/api/sdk.gen.d.ts +880 -0
  343. package/lib/neon/api/sdk.gen.d.ts.map +1 -0
  344. package/lib/neon/api/sdk.gen.js +1527 -0
  345. package/lib/neon/api/sdk.gen.js.map +1 -0
  346. package/lib/neon/api/types.gen.d.ts +7250 -0
  347. package/lib/neon/api/types.gen.d.ts.map +1 -0
  348. package/lib/neon/api/types.gen.js +2 -0
  349. package/lib/neon/api/types.gen.js.map +1 -0
  350. package/lib/neon/api.d.ts +14 -49
  351. package/lib/neon/api.d.ts.map +1 -1
  352. package/lib/neon/api.js +36 -114
  353. package/lib/neon/api.js.map +1 -1
  354. package/lib/neon/branch.d.ts +141 -0
  355. package/lib/neon/branch.d.ts.map +1 -0
  356. package/lib/neon/branch.js +112 -0
  357. package/lib/neon/branch.js.map +1 -0
  358. package/lib/neon/index.d.ts +1 -1
  359. package/lib/neon/index.d.ts.map +1 -1
  360. package/lib/neon/index.js +1 -1
  361. package/lib/neon/index.js.map +1 -1
  362. package/lib/neon/project.d.ts +32 -242
  363. package/lib/neon/project.d.ts.map +1 -1
  364. package/lib/neon/project.js +90 -269
  365. package/lib/neon/project.js.map +1 -1
  366. package/lib/neon/utils.d.ts +49 -0
  367. package/lib/neon/utils.d.ts.map +1 -0
  368. package/lib/neon/utils.js +44 -0
  369. package/lib/neon/utils.js.map +1 -0
  370. package/lib/os/exec.d.ts +1 -2
  371. package/lib/os/exec.d.ts.map +1 -1
  372. package/lib/os/exec.js +2 -2
  373. package/lib/os/exec.js.map +1 -1
  374. package/lib/planetscale/api/client.gen.d.ts +12 -1749
  375. package/lib/planetscale/api/client.gen.d.ts.map +1 -1
  376. package/lib/planetscale/api/client.gen.js +6 -2400
  377. package/lib/planetscale/api/client.gen.js.map +1 -1
  378. package/lib/planetscale/api/sdk.gen.d.ts +1582 -0
  379. package/lib/planetscale/api/sdk.gen.d.ts.map +1 -0
  380. package/lib/planetscale/api/sdk.gen.js +2219 -0
  381. package/lib/planetscale/api/sdk.gen.js.map +1 -0
  382. package/lib/planetscale/api/types.gen.d.ts +594 -449
  383. package/lib/planetscale/api/types.gen.d.ts.map +1 -1
  384. package/lib/planetscale/api.d.ts +43 -0
  385. package/lib/planetscale/api.d.ts.map +1 -0
  386. package/lib/planetscale/api.js +53 -0
  387. package/lib/planetscale/api.js.map +1 -0
  388. package/lib/planetscale/branch.d.ts +2 -3
  389. package/lib/planetscale/branch.d.ts.map +1 -1
  390. package/lib/planetscale/branch.js +17 -15
  391. package/lib/planetscale/branch.js.map +1 -1
  392. package/lib/planetscale/database.d.ts +2 -3
  393. package/lib/planetscale/database.d.ts.map +1 -1
  394. package/lib/planetscale/database.js +34 -34
  395. package/lib/planetscale/database.js.map +1 -1
  396. package/lib/planetscale/index.d.ts +1 -1
  397. package/lib/planetscale/index.d.ts.map +1 -1
  398. package/lib/planetscale/index.js +1 -1
  399. package/lib/planetscale/index.js.map +1 -1
  400. package/lib/planetscale/password.d.ts +2 -3
  401. package/lib/planetscale/password.d.ts.map +1 -1
  402. package/lib/planetscale/password.js +11 -11
  403. package/lib/planetscale/password.js.map +1 -1
  404. package/lib/planetscale/role.d.ts +2 -3
  405. package/lib/planetscale/role.d.ts.map +1 -1
  406. package/lib/planetscale/role.js +18 -18
  407. package/lib/planetscale/role.js.map +1 -1
  408. package/lib/planetscale/utils.d.ts +1 -1
  409. package/lib/planetscale/utils.d.ts.map +1 -1
  410. package/lib/planetscale/utils.js +17 -33
  411. package/lib/planetscale/utils.js.map +1 -1
  412. package/lib/random/random-string.d.ts +1 -2
  413. package/lib/random/random-string.d.ts.map +1 -1
  414. package/lib/random/random-string.js +3 -3
  415. package/lib/random/random-string.js.map +1 -1
  416. package/lib/resource.d.ts +4 -1
  417. package/lib/resource.d.ts.map +1 -1
  418. package/lib/resource.js.map +1 -1
  419. package/lib/sentry/client-key.d.ts +1 -2
  420. package/lib/sentry/client-key.d.ts.map +1 -1
  421. package/lib/sentry/client-key.js +2 -2
  422. package/lib/sentry/client-key.js.map +1 -1
  423. package/lib/sentry/project.d.ts +1 -2
  424. package/lib/sentry/project.d.ts.map +1 -1
  425. package/lib/sentry/project.js +2 -2
  426. package/lib/sentry/project.js.map +1 -1
  427. package/lib/sentry/team.d.ts +1 -2
  428. package/lib/sentry/team.d.ts.map +1 -1
  429. package/lib/sentry/team.js +2 -2
  430. package/lib/sentry/team.js.map +1 -1
  431. package/lib/state/r2-rest-state-store.d.ts +1 -0
  432. package/lib/state/r2-rest-state-store.d.ts.map +1 -1
  433. package/lib/state/r2-rest-state-store.js +15 -34
  434. package/lib/state/r2-rest-state-store.js.map +1 -1
  435. package/lib/stripe/card.d.ts +1 -2
  436. package/lib/stripe/card.d.ts.map +1 -1
  437. package/lib/stripe/card.js +2 -2
  438. package/lib/stripe/card.js.map +1 -1
  439. package/lib/stripe/coupon.d.ts +1 -2
  440. package/lib/stripe/coupon.d.ts.map +1 -1
  441. package/lib/stripe/coupon.js +2 -2
  442. package/lib/stripe/coupon.js.map +1 -1
  443. package/lib/stripe/customer.d.ts +1 -2
  444. package/lib/stripe/customer.d.ts.map +1 -1
  445. package/lib/stripe/customer.js +2 -2
  446. package/lib/stripe/customer.js.map +1 -1
  447. package/lib/stripe/entitlements-feature.d.ts +1 -2
  448. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  449. package/lib/stripe/entitlements-feature.js +2 -2
  450. package/lib/stripe/entitlements-feature.js.map +1 -1
  451. package/lib/stripe/file.d.ts +1 -2
  452. package/lib/stripe/file.d.ts.map +1 -1
  453. package/lib/stripe/file.js +2 -2
  454. package/lib/stripe/file.js.map +1 -1
  455. package/lib/stripe/meter.d.ts +1 -2
  456. package/lib/stripe/meter.d.ts.map +1 -1
  457. package/lib/stripe/meter.js +1 -1
  458. package/lib/stripe/meter.js.map +1 -1
  459. package/lib/stripe/portal-configuration.d.ts +1 -2
  460. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  461. package/lib/stripe/portal-configuration.js +2 -2
  462. package/lib/stripe/portal-configuration.js.map +1 -1
  463. package/lib/stripe/price.d.ts +1 -2
  464. package/lib/stripe/price.d.ts.map +1 -1
  465. package/lib/stripe/price.js +2 -2
  466. package/lib/stripe/price.js.map +1 -1
  467. package/lib/stripe/product-feature.d.ts +1 -2
  468. package/lib/stripe/product-feature.d.ts.map +1 -1
  469. package/lib/stripe/product-feature.js +2 -2
  470. package/lib/stripe/product-feature.js.map +1 -1
  471. package/lib/stripe/product.d.ts +1 -2
  472. package/lib/stripe/product.d.ts.map +1 -1
  473. package/lib/stripe/product.js +2 -2
  474. package/lib/stripe/product.js.map +1 -1
  475. package/lib/stripe/promotion-code.d.ts +1 -2
  476. package/lib/stripe/promotion-code.d.ts.map +1 -1
  477. package/lib/stripe/promotion-code.js +2 -2
  478. package/lib/stripe/promotion-code.js.map +1 -1
  479. package/lib/stripe/shipping-rate.d.ts +1 -2
  480. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  481. package/lib/stripe/shipping-rate.js +2 -2
  482. package/lib/stripe/shipping-rate.js.map +1 -1
  483. package/lib/stripe/tax-rate.d.ts +1 -2
  484. package/lib/stripe/tax-rate.d.ts.map +1 -1
  485. package/lib/stripe/tax-rate.js +2 -2
  486. package/lib/stripe/tax-rate.js.map +1 -1
  487. package/lib/stripe/webhook.d.ts +16 -3
  488. package/lib/stripe/webhook.d.ts.map +1 -1
  489. package/lib/stripe/webhook.js +2 -2
  490. package/lib/stripe/webhook.js.map +1 -1
  491. package/lib/test/bun.d.ts.map +1 -1
  492. package/lib/test/bun.js +1 -0
  493. package/lib/test/bun.js.map +1 -1
  494. package/lib/test/options.d.ts +5 -0
  495. package/lib/test/options.d.ts.map +1 -1
  496. package/lib/test/vitest.d.ts.map +1 -1
  497. package/lib/test/vitest.js +1 -0
  498. package/lib/test/vitest.js.map +1 -1
  499. package/lib/upstash/redis.d.ts +1 -2
  500. package/lib/upstash/redis.d.ts.map +1 -1
  501. package/lib/upstash/redis.js.map +1 -1
  502. package/lib/util/api/client/client.gen.d.ts +3 -0
  503. package/lib/util/api/client/client.gen.d.ts.map +1 -0
  504. package/lib/util/api/client/client.gen.js +205 -0
  505. package/lib/util/api/client/client.gen.js.map +1 -0
  506. package/lib/util/api/client/index.d.ts +8 -0
  507. package/lib/util/api/client/index.d.ts.map +1 -0
  508. package/lib/util/api/client/index.js +6 -0
  509. package/lib/util/api/client/index.js.map +1 -0
  510. package/lib/util/api/client/types.gen.d.ts +125 -0
  511. package/lib/util/api/client/types.gen.d.ts.map +1 -0
  512. package/lib/util/api/client/types.gen.js +2 -0
  513. package/lib/util/api/client/types.gen.js.map +1 -0
  514. package/lib/util/api/client/utils.gen.d.ts +34 -0
  515. package/lib/util/api/client/utils.gen.d.ts.map +1 -0
  516. package/lib/util/api/client/utils.gen.js +231 -0
  517. package/lib/util/api/client/utils.gen.js.map +1 -0
  518. package/lib/util/api/core/auth.gen.d.ts +19 -0
  519. package/lib/util/api/core/auth.gen.d.ts.map +1 -0
  520. package/lib/util/api/core/auth.gen.js +15 -0
  521. package/lib/util/api/core/auth.gen.js.map +1 -0
  522. package/lib/util/api/core/bodySerializer.gen.d.ts +18 -0
  523. package/lib/util/api/core/bodySerializer.gen.d.ts.map +1 -0
  524. package/lib/util/api/core/bodySerializer.gen.js +58 -0
  525. package/lib/util/api/core/bodySerializer.gen.js.map +1 -0
  526. package/lib/util/api/core/params.gen.d.ts +34 -0
  527. package/lib/util/api/core/params.gen.d.ts.map +1 -0
  528. package/lib/util/api/core/params.gen.js +89 -0
  529. package/lib/util/api/core/params.gen.js.map +1 -0
  530. package/lib/util/api/core/pathSerializer.gen.d.ts +34 -0
  531. package/lib/util/api/core/pathSerializer.gen.d.ts.map +1 -0
  532. package/lib/util/api/core/pathSerializer.gen.js +115 -0
  533. package/lib/util/api/core/pathSerializer.gen.js.map +1 -0
  534. package/lib/util/api/core/serverSentEvents.gen.d.ts +72 -0
  535. package/lib/util/api/core/serverSentEvents.gen.d.ts.map +1 -0
  536. package/lib/util/api/core/serverSentEvents.gen.js +136 -0
  537. package/lib/util/api/core/serverSentEvents.gen.js.map +1 -0
  538. package/lib/util/api/core/types.gen.d.ts +79 -0
  539. package/lib/util/api/core/types.gen.d.ts.map +1 -0
  540. package/lib/util/api/core/types.gen.js +2 -0
  541. package/lib/util/api/core/types.gen.js.map +1 -0
  542. package/lib/util/api/core/utils.gen.d.ts +20 -0
  543. package/lib/util/api/core/utils.gen.d.ts.map +1 -0
  544. package/lib/util/api/core/utils.gen.js +88 -0
  545. package/lib/util/api/core/utils.gen.js.map +1 -0
  546. package/lib/util/http.d.ts +7 -2
  547. package/lib/util/http.d.ts.map +1 -1
  548. package/lib/util/http.js +29 -11
  549. package/lib/util/http.js.map +1 -1
  550. package/lib/util/lock.d.ts +20 -0
  551. package/lib/util/lock.d.ts.map +1 -0
  552. package/lib/util/lock.js +45 -0
  553. package/lib/util/lock.js.map +1 -0
  554. package/lib/util/memoize.d.ts +6 -0
  555. package/lib/util/memoize.d.ts.map +1 -1
  556. package/lib/util/memoize.js +23 -0
  557. package/lib/util/memoize.js.map +1 -1
  558. package/lib/util/oauth-client.d.ts +71 -0
  559. package/lib/util/oauth-client.d.ts.map +1 -0
  560. package/lib/util/oauth-client.js +188 -0
  561. package/lib/util/oauth-client.js.map +1 -0
  562. package/lib/util/poll.d.ts +33 -0
  563. package/lib/util/poll.d.ts.map +1 -0
  564. package/lib/util/poll.js +19 -0
  565. package/lib/util/poll.js.map +1 -0
  566. package/lib/vercel/project-domain.d.ts +1 -2
  567. package/lib/vercel/project-domain.d.ts.map +1 -1
  568. package/lib/vercel/project-domain.js.map +1 -1
  569. package/lib/vercel/project.d.ts +1 -2
  570. package/lib/vercel/project.d.ts.map +1 -1
  571. package/lib/vercel/project.js +2 -2
  572. package/lib/vercel/project.js.map +1 -1
  573. package/package.json +5 -1
  574. package/src/apply.ts +32 -29
  575. package/src/auth.ts +253 -0
  576. package/src/aws/bucket.ts +3 -3
  577. package/src/aws/control/resource.ts +4 -6
  578. package/src/aws/ec2/internet-gateway-attachment.ts +5 -6
  579. package/src/aws/ec2/internet-gateway.ts +3 -5
  580. package/src/aws/ec2/nat-gateway.ts +3 -5
  581. package/src/aws/ec2/route-table-association.ts +3 -5
  582. package/src/aws/ec2/route-table.ts +3 -5
  583. package/src/aws/ec2/route.ts +3 -3
  584. package/src/aws/ec2/security-group-rule.ts +3 -5
  585. package/src/aws/ec2/security-group.ts +3 -5
  586. package/src/aws/ec2/subnet.ts +3 -3
  587. package/src/aws/ec2/vpc.ts +3 -3
  588. package/src/aws/function.ts +3 -3
  589. package/src/aws/oidc/oidc-provider.ts +3 -5
  590. package/src/aws/policy-attachment.ts +2 -4
  591. package/src/aws/policy.ts +5 -5
  592. package/src/aws/queue.ts +5 -5
  593. package/src/aws/role.ts +3 -3
  594. package/src/aws/ses.ts +3 -3
  595. package/src/aws/ssm-parameter.ts +3 -3
  596. package/src/aws/table.ts +3 -3
  597. package/src/cloudflare/account-api-token.ts +3 -4
  598. package/src/cloudflare/ai-gateway.ts +3 -5
  599. package/src/cloudflare/api-gateway-operation.ts +3 -4
  600. package/src/cloudflare/api-schema.ts +25 -26
  601. package/src/cloudflare/api-shield.ts +3 -4
  602. package/src/cloudflare/api.ts +122 -57
  603. package/src/cloudflare/assets.ts +95 -136
  604. package/src/cloudflare/auth.ts +160 -95
  605. package/src/cloudflare/bound.ts +1 -1
  606. package/src/cloudflare/bucket.ts +321 -58
  607. package/src/cloudflare/bundle/plugin-wasm.ts +5 -5
  608. package/src/cloudflare/certificate-pack.ts +5 -6
  609. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  610. package/src/cloudflare/container.ts +7 -8
  611. package/src/cloudflare/custom-domain.ts +3 -5
  612. package/src/cloudflare/d1-database.ts +33 -34
  613. package/src/cloudflare/dispatch-namespace.ts +5 -6
  614. package/src/cloudflare/dns-records.ts +5 -5
  615. package/src/cloudflare/email-address.ts +7 -7
  616. package/src/cloudflare/email-catch-all.ts +6 -6
  617. package/src/cloudflare/email-routing.ts +5 -5
  618. package/src/cloudflare/email-rule.ts +5 -5
  619. package/src/cloudflare/hyperdrive.ts +35 -36
  620. package/src/cloudflare/kv-namespace.ts +31 -32
  621. package/src/cloudflare/miniflare/delete.ts +1 -1
  622. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +2 -7
  623. package/src/cloudflare/miniflare/remote-binding-proxy.ts +16 -4
  624. package/src/cloudflare/permission-groups.ts +4 -6
  625. package/src/cloudflare/pipeline.ts +29 -30
  626. package/src/cloudflare/queue-consumer.ts +5 -7
  627. package/src/cloudflare/queue.ts +42 -43
  628. package/src/cloudflare/react-router/plugin.ts +20 -0
  629. package/src/cloudflare/redirect-rule.ts +5 -5
  630. package/src/cloudflare/route.ts +5 -5
  631. package/src/cloudflare/ruleset.ts +3 -4
  632. package/src/cloudflare/secret.ts +35 -36
  633. package/src/cloudflare/secrets-store.ts +5 -8
  634. package/src/cloudflare/tunnel.ts +5 -7
  635. package/src/cloudflare/user.ts +12 -9
  636. package/src/cloudflare/vectorize-index.ts +8 -12
  637. package/src/cloudflare/vectorize-metadata-index.ts +6 -8
  638. package/src/cloudflare/website.ts +1 -1
  639. package/src/cloudflare/worker-assets.ts +10 -56
  640. package/src/cloudflare/worker-stub.ts +5 -5
  641. package/src/cloudflare/worker-subdomain.ts +6 -7
  642. package/src/cloudflare/worker.ts +91 -91
  643. package/src/cloudflare/zone.ts +3 -3
  644. package/src/context.ts +9 -7
  645. package/src/destroy.ts +2 -2
  646. package/src/dns/import-dns.ts +3 -5
  647. package/src/docker/container.ts +3 -6
  648. package/src/docker/image.ts +13 -13
  649. package/src/docker/network.ts +3 -4
  650. package/src/docker/remote-image.ts +3 -6
  651. package/src/docker/volume.ts +3 -4
  652. package/src/esbuild/bundle.ts +10 -8
  653. package/src/fs/copy-file.ts +3 -3
  654. package/src/fs/file.ts +3 -3
  655. package/src/fs/folder.ts +3 -3
  656. package/src/github/comment.ts +5 -7
  657. package/src/github/repository-environment.ts +3 -5
  658. package/src/github/repository-webhook.ts +3 -5
  659. package/src/github/secret.ts +3 -5
  660. package/src/neon/api/client.gen.ts +28 -0
  661. package/src/neon/api/sdk.gen.ts +2596 -0
  662. package/src/neon/api/types.gen.ts +8287 -0
  663. package/src/neon/api.ts +51 -147
  664. package/src/neon/branch.ts +278 -0
  665. package/src/neon/index.ts +1 -1
  666. package/src/neon/project.ts +136 -721
  667. package/src/neon/utils.ts +105 -0
  668. package/src/os/exec.ts +3 -3
  669. package/src/planetscale/api/client.gen.ts +28 -2882
  670. package/src/planetscale/api/sdk.gen.ts +3336 -0
  671. package/src/planetscale/api/types.gen.ts +778 -450
  672. package/src/planetscale/api.ts +101 -0
  673. package/src/planetscale/branch.ts +20 -19
  674. package/src/planetscale/database.ts +69 -70
  675. package/src/planetscale/index.ts +1 -1
  676. package/src/planetscale/password.ts +18 -22
  677. package/src/planetscale/role.ts +21 -21
  678. package/src/planetscale/utils.ts +20 -74
  679. package/src/random/random-string.ts +4 -4
  680. package/src/resource.ts +6 -2
  681. package/src/sentry/client-key.ts +3 -5
  682. package/src/sentry/project.ts +3 -5
  683. package/src/sentry/team.ts +3 -3
  684. package/src/state/r2-rest-state-store.ts +15 -57
  685. package/src/stripe/card.ts +3 -3
  686. package/src/stripe/coupon.ts +3 -3
  687. package/src/stripe/customer.ts +3 -3
  688. package/src/stripe/entitlements-feature.ts +3 -5
  689. package/src/stripe/file.ts +3 -3
  690. package/src/stripe/meter.ts +3 -3
  691. package/src/stripe/portal-configuration.ts +3 -5
  692. package/src/stripe/price.ts +3 -3
  693. package/src/stripe/product-feature.ts +3 -5
  694. package/src/stripe/product.ts +3 -3
  695. package/src/stripe/promotion-code.ts +3 -5
  696. package/src/stripe/shipping-rate.ts +3 -5
  697. package/src/stripe/tax-rate.ts +3 -3
  698. package/src/stripe/webhook.ts +3 -5
  699. package/src/test/bun.ts +1 -0
  700. package/src/test/options.ts +6 -0
  701. package/src/test/vitest.ts +1 -0
  702. package/src/upstash/redis.ts +1 -3
  703. package/src/util/api/client/client.gen.ts +268 -0
  704. package/src/util/api/client/index.ts +25 -0
  705. package/src/util/api/client/types.gen.ts +268 -0
  706. package/src/util/api/client/utils.gen.ts +331 -0
  707. package/src/util/api/core/auth.gen.ts +42 -0
  708. package/src/util/api/core/bodySerializer.gen.ts +92 -0
  709. package/src/util/api/core/params.gen.ts +153 -0
  710. package/src/util/api/core/pathSerializer.gen.ts +181 -0
  711. package/src/util/api/core/serverSentEvents.gen.ts +264 -0
  712. package/src/util/api/core/types.gen.ts +118 -0
  713. package/src/util/api/core/utils.gen.ts +143 -0
  714. package/src/util/http.ts +38 -11
  715. package/src/util/lock.ts +48 -0
  716. package/src/util/memoize.ts +26 -0
  717. package/src/util/oauth-client.ts +238 -0
  718. package/src/util/poll.ts +55 -0
  719. package/src/vercel/project-domain.ts +1 -3
  720. package/src/vercel/project.ts +3 -3
  721. package/workers/cloudflare-state-store.js +8 -5619
  722. package/workers/dofs-state-store.js +2 -802
  723. package/workers/remote-binding-proxy.js +3 -39
  724. package/workers/remote-binding-proxy.ts +126 -35
  725. package/workers/tunnel-proxy.js +6 -73
  726. package/lib/cloudflare/asset-manifest.d.ts +0 -15
  727. package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
  728. package/lib/cloudflare/asset-manifest.js +0 -1
  729. package/lib/cloudflare/asset-manifest.js.map +0 -1
  730. package/lib/cloudflare/oauth.d.ts +0 -22
  731. package/lib/cloudflare/oauth.d.ts.map +0 -1
  732. package/lib/cloudflare/oauth.js +0 -214
  733. package/lib/cloudflare/oauth.js.map +0 -1
  734. package/lib/neon/api-error.d.ts +0 -31
  735. package/lib/neon/api-error.d.ts.map +0 -1
  736. package/lib/neon/api-error.js +0 -73
  737. package/lib/neon/api-error.js.map +0 -1
  738. package/lib/planetscale/api/index.d.ts +0 -3
  739. package/lib/planetscale/api/index.d.ts.map +0 -1
  740. package/lib/planetscale/api/index.js +0 -4
  741. package/lib/planetscale/api/index.js.map +0 -1
  742. package/lib/util/neverthrow.d.ts +0 -16
  743. package/lib/util/neverthrow.d.ts.map +0 -1
  744. package/lib/util/neverthrow.js +0 -46
  745. package/lib/util/neverthrow.js.map +0 -1
  746. package/src/cloudflare/asset-manifest.ts +0 -16
  747. package/src/cloudflare/oauth.ts +0 -301
  748. package/src/neon/api-error.ts +0 -81
  749. package/src/planetscale/api/index.ts +0 -4
  750. package/src/util/neverthrow.ts +0 -64
@@ -3,7 +3,7 @@ import type { Context } from "../context.ts";
3
3
  import { Resource } from "../resource.ts";
4
4
  import type { Secret } from "../secret.ts";
5
5
  import { logger } from "../util/logger.ts";
6
- import { PlanetScaleClient, type PlanetScaleProps } from "./api/client.gen.ts";
6
+ import { createPlanetScaleClient, type PlanetScaleProps } from "./api.ts";
7
7
  import type { CreateRoleData } from "./api/types.gen.ts";
8
8
  import type { Branch } from "./branch.ts";
9
9
  import type { Database } from "./database.ts";
@@ -63,9 +63,7 @@ export type InheritedRole =
63
63
  | "pg_write_all_data"
64
64
  | (string & {});
65
65
 
66
- export interface Role
67
- extends Resource<"planetscale::Role">,
68
- Omit<RoleProps, "inheritedRoles"> {
66
+ export interface Role extends Omit<RoleProps, "inheritedRoles"> {
69
67
  /**
70
68
  * The unique identifier for the role
71
69
  */
@@ -165,7 +163,7 @@ export const Role = Resource(
165
163
  id: string,
166
164
  props: RoleProps,
167
165
  ): Promise<Role> {
168
- const api = new PlanetScaleClient(props);
166
+ const api = createPlanetScaleClient(props);
169
167
  const organization =
170
168
  typeof props.branch === "object"
171
169
  ? props.branch.organizationId
@@ -188,17 +186,17 @@ export const Role = Resource(
188
186
  switch (this.phase) {
189
187
  case "delete": {
190
188
  if (this.output?.id) {
191
- const res = await api.organizations.databases.branches.roles.delete({
189
+ const res = await api.deleteRole({
192
190
  path: {
193
191
  organization,
194
192
  database,
195
193
  branch,
196
194
  id: this.output.id,
197
195
  },
198
- result: "full",
196
+ throwOnError: false,
199
197
  });
200
198
  if (res.error) {
201
- switch (res.error.status) {
199
+ switch (res.response.status) {
202
200
  case 404:
203
201
  break;
204
202
  case 422:
@@ -223,7 +221,9 @@ export const Role = Resource(
223
221
  return this.destroy();
224
222
  }
225
223
  case "create": {
226
- const { kind, ready } = await api.organizations.databases.branches.get({
224
+ const {
225
+ data: { kind, ready },
226
+ } = await api.getBranch({
227
227
  path: {
228
228
  organization,
229
229
  database,
@@ -239,7 +239,7 @@ export const Role = Resource(
239
239
  if (!ready) {
240
240
  await waitForBranchReady(api, organization, database, branch);
241
241
  }
242
- const role = await api.organizations.databases.branches.roles.post({
242
+ const { data } = await api.createRole({
243
243
  path: {
244
244
  organization,
245
245
  database,
@@ -250,23 +250,23 @@ export const Role = Resource(
250
250
  inherited_roles: inheritedRoles,
251
251
  } as CreateRoleData["body"],
252
252
  });
253
- return this({
253
+ return {
254
254
  ...props,
255
- id: role.id,
256
- name: role.name,
257
- host: role.access_host_url,
258
- username: role.username,
259
- password: alchemy.secret(role.password),
260
- expiresAt: role.expires_at,
261
- databaseName: role.database_name,
255
+ id: data.id,
256
+ name: data.name,
257
+ host: data.access_host_url,
258
+ username: data.username,
259
+ password: alchemy.secret(data.password),
260
+ expiresAt: data.expires_at,
261
+ databaseName: data.database_name,
262
262
  inheritedRoles,
263
263
  connectionUrl: alchemy.secret(
264
- `postgresql://${role.username}:${role.password}@${role.access_host_url}:5432/${role.database_name}?sslmode=verify-full`,
264
+ `postgresql://${data.username}:${data.password}@${data.access_host_url}:5432/${data.database_name}?sslmode=verify-full`,
265
265
  ),
266
266
  connectionUrlPooled: alchemy.secret(
267
- `postgresql://${role.username}:${role.password}@${role.access_host_url}:6432/${role.database_name}?sslmode=verify-full`,
267
+ `postgresql://${data.username}:${data.password}@${data.access_host_url}:6432/${data.database_name}?sslmode=verify-full`,
268
268
  ),
269
- });
269
+ };
270
270
  }
271
271
  case "update": {
272
272
  // According to the types, the only property that can be updated is the name.
@@ -1,4 +1,5 @@
1
- import type { PlanetScaleClient } from "./api/client.gen.ts";
1
+ import { poll } from "../util/poll.ts";
2
+ import type { PlanetScaleClient } from "./api/sdk.gen.ts";
2
3
  import type { DatabaseBranch } from "./api/types.gen.ts";
3
4
 
4
5
  export type PlanetScaleClusterSize =
@@ -54,14 +55,15 @@ export async function waitForBranchReady(
54
55
  database: string,
55
56
  branch: string,
56
57
  ): Promise<DatabaseBranch> {
57
- return await poll({
58
+ const { data } = await poll({
58
59
  description: `branch "${branch}" ready`,
59
60
  fn: () =>
60
- api.organizations.databases.branches.get({
61
+ api.getBranch({
61
62
  path: { organization, database, name: branch },
62
63
  }),
63
- predicate: (branch) => branch.ready,
64
+ predicate: ({ data }) => data.ready,
64
65
  });
66
+ return data;
65
67
  }
66
68
 
67
69
  /**
@@ -75,10 +77,10 @@ export async function waitForDatabaseReady(
75
77
  await poll({
76
78
  description: `database "${database}" ready`,
77
79
  fn: () =>
78
- api.organizations.databases.get({
80
+ api.getDatabase({
79
81
  path: { organization, name: database },
80
82
  }),
81
- predicate: (database) => database.ready,
83
+ predicate: ({ data }) => data.ready,
82
84
  });
83
85
  }
84
86
 
@@ -95,11 +97,11 @@ export async function waitForKeyspaceReady(
95
97
  await poll({
96
98
  description: `keyspace "${keyspace}" ready`,
97
99
  fn: () =>
98
- api.organizations.databases.branches.keyspaces.resizes.list({
100
+ api.listKeyspaceResizes({
99
101
  path: { organization, database, branch, name: keyspace },
100
102
  }),
101
- predicate: (response) =>
102
- response.data.every((item) => item.state !== "resizing"),
103
+ predicate: ({ data }) =>
104
+ data.data.every((item) => item.state !== "resizing"),
103
105
  initialDelay: 100,
104
106
  maxDelay: 1000,
105
107
  });
@@ -155,7 +157,7 @@ async function ensureProductionBranch(
155
157
  database: string,
156
158
  name: string,
157
159
  ): Promise<void> {
158
- const data = await api.organizations.databases.branches.get({
160
+ const { data } = await api.getBranch({
159
161
  path: {
160
162
  organization,
161
163
  database,
@@ -166,7 +168,7 @@ async function ensureProductionBranch(
166
168
  if (!data.ready) {
167
169
  await waitForBranchReady(api, organization, database, name);
168
170
  }
169
- await api.organizations.databases.branches.promote.post({
171
+ await api.promoteBranch({
170
172
  path: { organization, database, name },
171
173
  });
172
174
  }
@@ -183,7 +185,7 @@ async function ensureMySQLClusterSize(
183
185
  expectedClusterSize: PlanetScaleClusterSize,
184
186
  ): Promise<void> {
185
187
  // 1. Load default keyspace
186
- const keyspaces = await api.organizations.databases.branches.keyspaces.list({
188
+ const { data: keyspaces } = await api.listKeyspaces({
187
189
  path: {
188
190
  organization,
189
191
  database,
@@ -207,7 +209,7 @@ async function ensureMySQLClusterSize(
207
209
  // 3. If size mismatch, trigger resize and wait again
208
210
  // Ideally this would use the undocumented Keyspaces API, but there seems to be a missing oauth scope that we cannot add via the console yet
209
211
  if (defaultKeyspace.cluster_name !== expectedClusterSize) {
210
- await api.organizations.databases.branches.cluster.patch({
212
+ await api.updateBranchClusterConfig({
211
213
  path: {
212
214
  organization,
213
215
  database,
@@ -237,7 +239,7 @@ async function ensurePostgresClusterSize(
237
239
  branch: string,
238
240
  expectedClusterSize: PlanetScaleClusterSize,
239
241
  ): Promise<void> {
240
- const data = await api.organizations.databases.branches.get({
242
+ const { data } = await api.getBranch({
241
243
  path: {
242
244
  organization,
243
245
  database,
@@ -248,7 +250,7 @@ async function ensurePostgresClusterSize(
248
250
  return;
249
251
  }
250
252
  await waitForPendingPostgresChanges(api, organization, database, branch);
251
- const change = await api.organizations.databases.branches.changes.patch({
253
+ const { data: change } = await api.updateBranchChangeRequest({
252
254
  path: {
253
255
  organization,
254
256
  database,
@@ -280,11 +282,11 @@ async function waitForPendingPostgresChanges(
280
282
  await poll({
281
283
  description: `changes for branch "${branch}"`,
282
284
  fn: () =>
283
- api.organizations.databases.branches.changes.list({
285
+ api.listBranchChangeRequests({
284
286
  path: { organization, database, branch },
285
287
  }),
286
- predicate: (response) =>
287
- response.data.every(
288
+ predicate: ({ data }) =>
289
+ data.data.every(
288
290
  (change) =>
289
291
  change.state === "completed" ||
290
292
  change.state === "canceled" ||
@@ -292,59 +294,3 @@ async function waitForPendingPostgresChanges(
292
294
  ),
293
295
  });
294
296
  }
295
-
296
- /**
297
- * Polls a function until it returns a result that satisfies the predicate.
298
- */
299
- async function poll<T>(input: {
300
- /**
301
- * A description of the operation being polled.
302
- */
303
- description: string;
304
-
305
- /**
306
- * The function to poll.
307
- */
308
- fn: () => Promise<T>;
309
-
310
- /**
311
- * A predicate that determines if the operation has completed.
312
- */
313
- predicate: (result: T) => boolean;
314
-
315
- /**
316
- * The initial delay between polls.
317
- * @default 250ms
318
- */
319
- initialDelay?: number;
320
-
321
- /**
322
- * The maximum delay between polls.
323
- * @default 2_500ms (2.5 seconds)
324
- */
325
- maxDelay?: number;
326
-
327
- /**
328
- * The timeout for the poll in milliseconds.
329
- * @default 1_000_000 (~16 minutes)
330
- */
331
- timeout?: number;
332
- }): Promise<T> {
333
- const start = Date.now();
334
- let delay = input.initialDelay ?? 250;
335
- while (true) {
336
- const result = await input.fn();
337
- if (input.predicate(result)) {
338
- return result;
339
- }
340
- if (Date.now() - start >= (input.timeout ?? 1_000_000)) {
341
- throw new Error(
342
- `Timed out waiting for ${input.description} after ${Math.round(
343
- (input.timeout ?? 1_000_000) / 1000,
344
- )}s`,
345
- );
346
- }
347
- await new Promise((resolve) => setTimeout(resolve, delay));
348
- delay = Math.min(delay * 2, input.maxDelay ?? 5_000);
349
- }
350
- }
@@ -27,7 +27,7 @@ export interface RandomStringProps {
27
27
  /**
28
28
  * A cryptographically secure random string resource
29
29
  */
30
- export interface RandomString extends Resource<"random::String"> {
30
+ export interface RandomString {
31
31
  /**
32
32
  * The generated random string value, stored as a secret
33
33
  */
@@ -110,10 +110,10 @@ export const RandomString = Resource(
110
110
  // this is an update (input props changed)
111
111
  // but the length and encoding did not change
112
112
  // so, we can just return the existing output (no-op)
113
- return this(this.output);
113
+ return this.output;
114
114
  }
115
115
  const crypto = await import("node:crypto");
116
- return this({
116
+ return {
117
117
  length,
118
118
  encoding,
119
119
  value: alchemy.secret(
@@ -121,6 +121,6 @@ export const RandomString = Resource(
121
121
  .randomBytes(props.length ?? 32)
122
122
  .toString(props.encoding ?? "hex"),
123
123
  ),
124
- });
124
+ };
125
125
  },
126
126
  );
package/src/resource.ts CHANGED
@@ -79,6 +79,10 @@ export type ResourceProps = {
79
79
  [key: string]: any;
80
80
  };
81
81
 
82
+ export type ResourceAttributes = {
83
+ [key: string]: any;
84
+ };
85
+
82
86
  export type Provider<
83
87
  Type extends string = string,
84
88
  F extends ResourceLifecycleHandler = ResourceLifecycleHandler,
@@ -116,7 +120,7 @@ type ResourceLifecycleHandler = (
116
120
  this: Context<any, any>,
117
121
  id: string,
118
122
  props: any,
119
- ) => Promise<Resource<string>>;
123
+ ) => Promise<ResourceAttributes>;
120
124
 
121
125
  // see: https://x.com/samgoodwin89/status/1904640134097887653
122
126
  type Handler<F extends (...args: any[]) => any> =
@@ -157,7 +161,7 @@ export function Resource<
157
161
  const provider = (async (
158
162
  resourceID: string,
159
163
  props: ResourceProps,
160
- ): Promise<Resource<string>> => {
164
+ ): Promise<ResourceAttributes> => {
161
165
  const scope = _Scope.current;
162
166
 
163
167
  if (resourceID.includes(":")) {
@@ -62,9 +62,7 @@ export interface ClientKeyProps {
62
62
  /**
63
63
  * Output returned after ClientKey creation/update
64
64
  */
65
- export interface ClientKey
66
- extends Resource<"sentry::ClientKey">,
67
- ClientKeyProps {
65
+ export interface ClientKey extends ClientKeyProps {
68
66
  /**
69
67
  * The ID of the key
70
68
  */
@@ -295,7 +293,7 @@ export const ClientKey = Resource(
295
293
  ClientKey,
296
294
  keyof ClientKeyProps
297
295
  >;
298
- return this({
296
+ return {
299
297
  ...props,
300
298
  id: data.id,
301
299
  name: clientKeyName,
@@ -309,7 +307,7 @@ export const ClientKey = Resource(
309
307
  browserSdk: data.browserSdk,
310
308
  dateCreated: data.dateCreated,
311
309
  dynamicSdkLoaderOptions: data.dynamicSdkLoaderOptions,
312
- });
310
+ };
313
311
  } catch (error) {
314
312
  logger.error("Error creating/updating client key:", error);
315
313
  throw error;
@@ -57,9 +57,7 @@ export interface ProjectProps {
57
57
  /**
58
58
  * Output returned after Project creation/update
59
59
  */
60
- export interface Project
61
- extends Omit<Resource<"sentry::Project">, "team">,
62
- Omit<ProjectProps, "team"> {
60
+ export interface Project extends Omit<ProjectProps, "team"> {
63
61
  /**
64
62
  * The ID of the project
65
63
  */
@@ -393,7 +391,7 @@ export const Project = Resource(
393
391
  Project,
394
392
  keyof ProjectProps
395
393
  > & { team: Project["team"] };
396
- return this({
394
+ return {
397
395
  ...props,
398
396
  id: data.id,
399
397
  name: projectName,
@@ -430,7 +428,7 @@ export const Project = Resource(
430
428
  latestRelease: data.latestRelease,
431
429
  hasUserReports: data.hasUserReports,
432
430
  latestDeploys: data.latestDeploys,
433
- });
431
+ } satisfies Project;
434
432
  } catch (error) {
435
433
  logger.error("Error creating/updating project:", error);
436
434
  throw error;
@@ -42,7 +42,7 @@ export interface TeamProps {
42
42
  /**
43
43
  * Output returned after Team creation/update
44
44
  */
45
- export interface Team extends Resource<"sentry::Team">, TeamProps {
45
+ export interface Team extends TeamProps {
46
46
  /**
47
47
  * The ID of the team
48
48
  */
@@ -230,7 +230,7 @@ export const Team = Resource(
230
230
  }
231
231
 
232
232
  const data = (await response.json()) as Omit<Team, keyof TeamProps>;
233
- return this({
233
+ return {
234
234
  ...props,
235
235
  id: data.id,
236
236
  name: teamName,
@@ -243,7 +243,7 @@ export const Team = Resource(
243
243
  isPending: data.isPending,
244
244
  memberCount: data.memberCount,
245
245
  avatar: data.avatar,
246
- });
246
+ };
247
247
  } catch (error) {
248
248
  logger.error("Error creating/updating team:", error);
249
249
  throw error;
@@ -4,6 +4,7 @@ import {
4
4
  type CloudflareApiOptions,
5
5
  createCloudflareApi,
6
6
  } from "../cloudflare/api.ts";
7
+ import { deleteObject, getObject, putObject } from "../cloudflare/bucket.ts";
7
8
  import { ResourceScope } from "../resource.ts";
8
9
  import type { Scope } from "../scope.ts";
9
10
  import { deserialize, serialize } from "../serde.ts";
@@ -192,23 +193,10 @@ export class R2RestStateStore implements StateStore {
192
193
  await this.ensureInitialized();
193
194
 
194
195
  try {
195
- const response = await withExponentialBackoff(
196
- async () => {
197
- const response = await this.api.get(
198
- `/accounts/${this.api.accountId}/r2/buckets/${this.bucketName}/objects/${this.getObjectKey(key)}`,
199
- );
200
-
201
- if (!response.ok && response.status !== 404) {
202
- await handleApiError(response, "get", "object", key);
203
- }
204
-
205
- return response;
206
- },
207
- // Retry on transient errors
208
- isRetryableError,
209
- 5, // 5 retry attempts
210
- 1000, // Start with 1 second delay
211
- );
196
+ const response = await getObject(this.api, {
197
+ bucketName: this.bucketName,
198
+ key: this.getObjectKey(key),
199
+ });
212
200
 
213
201
  if (response.status === 404) {
214
202
  return undefined;
@@ -281,29 +269,11 @@ export class R2RestStateStore implements StateStore {
281
269
  // Serialize the state to handle cyclic structures
282
270
  const serializedData = await serialize(this.scope, value);
283
271
 
284
- // Using withExponentialBackoff for reliability
285
- await withExponentialBackoff(
286
- async () => {
287
- const response = await this.api.put(
288
- `/accounts/${this.api.accountId}/r2/buckets/${this.bucketName}/objects/${objectKey}`,
289
- serializedData,
290
- {
291
- headers: {
292
- "Content-Type": "application/json",
293
- },
294
- },
295
- );
296
-
297
- if (!response.ok) {
298
- await handleApiError(response, "put", "object", objectKey);
299
- }
300
- return response;
301
- },
302
- // Retry on transient errors
303
- isRetryableError,
304
- 5, // 5 retry attempts
305
- 1000, // Start with 1 second delay
306
- );
272
+ await putObject(this.api, {
273
+ bucketName: this.bucketName,
274
+ key: objectKey,
275
+ object: serializedData,
276
+ });
307
277
  }
308
278
 
309
279
  /**
@@ -314,22 +284,10 @@ export class R2RestStateStore implements StateStore {
314
284
  async delete(key: string): Promise<void> {
315
285
  await this.ensureInitialized();
316
286
 
317
- await withExponentialBackoff(
318
- async () => {
319
- const response = await this.api.delete(
320
- `/accounts/${this.api.accountId}/r2/buckets/${this.bucketName}/objects/${this.getObjectKey(key)}`,
321
- );
322
-
323
- if (!response.ok && response.status !== 404) {
324
- await handleApiError(response, "delete", "object", key);
325
- }
326
-
327
- return response;
328
- },
329
- isRetryableError,
330
- 5, // 5 retry attempts
331
- 1000, // Start with 1 second delay
332
- );
287
+ await deleteObject(this.api, {
288
+ bucketName: this.bucketName,
289
+ key: this.getObjectKey(key),
290
+ });
333
291
  }
334
292
 
335
293
  /**
@@ -373,7 +331,7 @@ export class R2RestStateStore implements StateStore {
373
331
  }
374
332
  }
375
333
 
376
- function isRetryableError(error: any): boolean {
334
+ export function isRetryableError(error: any): boolean {
377
335
  if (error instanceof CloudflareApiError) {
378
336
  return (
379
337
  error.status === 500 ||
@@ -107,7 +107,7 @@ export interface CardProps {
107
107
  /**
108
108
  * Output from the Stripe card
109
109
  */
110
- export interface Card extends Resource<"stripe::Card">, CardProps {
110
+ export interface Card extends CardProps {
111
111
  /**
112
112
  * The ID of the card
113
113
  */
@@ -292,7 +292,7 @@ export const Card = Resource(
292
292
  }
293
293
  }
294
294
 
295
- return this({
295
+ return {
296
296
  id: card.id,
297
297
  object: card.object,
298
298
  customer: props.customer,
@@ -315,7 +315,7 @@ export const Card = Resource(
315
315
  defaultForCurrency: card.default_for_currency || undefined,
316
316
  metadata: card.metadata || undefined,
317
317
  tokenizationMethod: card.tokenization_method || undefined,
318
- });
318
+ };
319
319
  } catch (error) {
320
320
  logger.error("Error creating/updating card:", error);
321
321
  throw error;
@@ -89,7 +89,7 @@ export interface CouponProps {
89
89
  /**
90
90
  * Output from the Stripe coupon
91
91
  */
92
- export interface Coupon extends Resource<"stripe::Coupon">, CouponProps {
92
+ export interface Coupon extends CouponProps {
93
93
  /**
94
94
  * The ID of the coupon
95
95
  */
@@ -257,7 +257,7 @@ export const Coupon = Resource(
257
257
  }
258
258
  }
259
259
 
260
- return this({
260
+ return {
261
261
  id: coupon.id,
262
262
  object: coupon.object,
263
263
  duration: coupon.duration as CouponDuration,
@@ -273,7 +273,7 @@ export const Coupon = Resource(
273
273
  metadata: coupon.metadata || undefined,
274
274
  created: coupon.created,
275
275
  livemode: coupon.livemode,
276
- });
276
+ };
277
277
  } catch (error) {
278
278
  logger.error("Error creating/updating coupon:", error);
279
279
  throw error;
@@ -163,7 +163,7 @@ export interface CustomerProps {
163
163
  /**
164
164
  * Output from the Stripe customer
165
165
  */
166
- export interface Customer extends Resource<"stripe::Customer">, CustomerProps {
166
+ export interface Customer extends CustomerProps {
167
167
  /**
168
168
  * The ID of the customer
169
169
  */
@@ -432,7 +432,7 @@ export const Customer = Resource(
432
432
  }
433
433
  }
434
434
 
435
- return this({
435
+ return {
436
436
  id: customer.id,
437
437
  object: customer.object,
438
438
  address: customer.address
@@ -506,7 +506,7 @@ export const Customer = Resource(
506
506
  subscriptions: customer.subscriptions || undefined,
507
507
  taxExempt: customer.tax_exempt || undefined,
508
508
  taxIds: customer.tax_ids || undefined,
509
- });
509
+ };
510
510
  } catch (error) {
511
511
  logger.error("Error creating/updating customer:", error);
512
512
  throw error;
@@ -38,9 +38,7 @@ export interface EntitlementsFeatureProps {
38
38
  /**
39
39
  * Output from the Stripe entitlements feature
40
40
  */
41
- export interface EntitlementsFeature
42
- extends Resource<"stripe::EntitlementsFeature">,
43
- EntitlementsFeatureProps {
41
+ export interface EntitlementsFeature extends EntitlementsFeatureProps {
44
42
  /**
45
43
  * The ID of the feature
46
44
  */
@@ -157,14 +155,14 @@ export const EntitlementsFeature = Resource(
157
155
  }
158
156
  }
159
157
 
160
- return this({
158
+ return {
161
159
  id: feature.id,
162
160
  object: feature.object,
163
161
  name: feature.name,
164
162
  lookupKey: feature.lookup_key || undefined,
165
163
  metadata: feature.metadata || undefined,
166
164
  livemode: feature.livemode,
167
- });
165
+ };
168
166
  } catch (error) {
169
167
  logger.error("Error creating/updating entitlements feature:", error);
170
168
  throw error;
@@ -49,7 +49,7 @@ export interface FileProps {
49
49
  /**
50
50
  * Output from the Stripe file
51
51
  */
52
- export interface File extends Resource<"stripe::File"> {
52
+ export interface File {
53
53
  /**
54
54
  * The ID of the file
55
55
  */
@@ -182,7 +182,7 @@ export const File = Resource(
182
182
  }
183
183
  }
184
184
 
185
- return this({
185
+ return {
186
186
  id: file.id,
187
187
  object: file.object,
188
188
  created: file.created,
@@ -212,7 +212,7 @@ export const File = Resource(
212
212
  type: file.type || undefined,
213
213
  url: file.url || undefined,
214
214
  livemode: true,
215
- });
215
+ };
216
216
  } catch (error) {
217
217
  logger.error("Error creating/retrieving file:", error);
218
218
  throw error;