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
@@ -2,8 +2,9 @@ import { isDeepStrictEqual } from "node:util";
2
2
  import type { Context } from "../context.ts";
3
3
  import { Resource, ResourceKind } from "../resource.ts";
4
4
  import { Scope } from "../scope.ts";
5
+ import { isRetryableError } from "../state/r2-rest-state-store.ts";
5
6
  import { withExponentialBackoff } from "../util/retry.ts";
6
- import { CloudflareApiError } from "./api-error.ts";
7
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
7
8
  import {
8
9
  extractCloudflareResult,
9
10
  type CloudflareApiErrorPayload,
@@ -239,55 +240,107 @@ interface R2BucketCORSRule {
239
240
  maxAgeSeconds?: number;
240
241
  }
241
242
 
243
+ export type R2ObjectMetadata = {
244
+ key: string;
245
+ etag: string;
246
+ uploaded: Date;
247
+ size: number;
248
+ };
249
+
250
+ export type R2Object = R2ObjectMetadata & {
251
+ arrayBuffer(): Promise<ArrayBuffer>;
252
+ bytes(): Promise<Uint8Array>;
253
+ text(): Promise<string>;
254
+ json<T>(): Promise<T>;
255
+ blob(): Promise<Blob>;
256
+ };
257
+
258
+ export type PutR2ObjectResponse = {
259
+ key: string;
260
+ etag: string;
261
+ uploaded: Date;
262
+ version: string;
263
+ size: number;
264
+ };
265
+
266
+ export type R2Objects = {
267
+ objects: R2ObjectMetadata[];
268
+ } & (
269
+ | {
270
+ truncated: true;
271
+ cursor: string;
272
+ }
273
+ | {
274
+ truncated: false;
275
+ cursor?: never;
276
+ }
277
+ );
278
+
279
+ export type R2Bucket = _R2Bucket & {
280
+ head(key: string): Promise<R2ObjectMetadata | null>;
281
+ get(key: string): Promise<R2Object | null>;
282
+ put(
283
+ key: string,
284
+ value:
285
+ | ReadableStream
286
+ | ArrayBuffer
287
+ | ArrayBufferView
288
+ | string
289
+ | null
290
+ | Blob,
291
+ ): Promise<PutR2ObjectResponse>;
292
+ delete(key: string): Promise<Response>;
293
+ list(options?: R2ListOptions): Promise<R2Objects>;
294
+ };
295
+
242
296
  /**
243
297
  * Output returned after R2 Bucket creation/update
244
298
  */
245
- export type R2Bucket = Resource<"cloudflare::R2Bucket"> &
246
- Omit<BucketProps, "delete" | "dev"> & {
247
- /**
248
- * Resource type identifier
249
- */
250
- type: "r2_bucket";
299
+ type _R2Bucket = Omit<BucketProps, "delete" | "dev"> & {
300
+ /**
301
+ * Resource type identifier
302
+ */
303
+ type: "r2_bucket";
251
304
 
252
- /**
253
- * The name of the bucket
254
- */
255
- name: string;
305
+ /**
306
+ * The name of the bucket
307
+ */
308
+ name: string;
256
309
 
257
- /**
258
- * Location of the bucket
259
- */
260
- location: string;
310
+ /**
311
+ * Location of the bucket
312
+ */
313
+ location: string;
261
314
 
262
- /**
263
- * Time at which the bucket was created
264
- */
265
- creationDate: Date;
315
+ /**
316
+ * Time at which the bucket was created
317
+ */
318
+ creationDate: Date;
266
319
 
320
+ /**
321
+ * The `r2.dev` subdomain for the bucket, if `allowPublicAccess` is true
322
+ */
323
+ domain: string | undefined;
324
+
325
+ /**
326
+ * Development mode properties
327
+ * @internal
328
+ */
329
+ dev: {
267
330
  /**
268
- * The `r2.dev` subdomain for the bucket, if `allowPublicAccess` is true
331
+ * The ID of the bucket in development mode
269
332
  */
270
- domain: string | undefined;
333
+ id: string;
271
334
 
272
335
  /**
273
- * Development mode properties
274
- * @internal
336
+ * Whether the bucket is running remotely
275
337
  */
276
- dev: {
277
- /**
278
- * The ID of the bucket in development mode
279
- */
280
- id: string;
281
-
282
- /**
283
- * Whether the bucket is running remotely
284
- */
285
- remote: boolean;
286
- };
338
+ remote: boolean;
287
339
  };
340
+ };
288
341
 
289
- export function isBucket(resource: Resource): resource is R2Bucket {
290
- return resource[ResourceKind] === "cloudflare::R2Bucket";
342
+ export function isBucket(resource: any): resource is R2Bucket {
343
+ return resource?.[ResourceKind] === "cloudflare::R2Bucket";
291
344
  }
292
345
 
293
346
  /**
@@ -338,22 +391,95 @@ export async function R2Bucket(
338
391
  id: string,
339
392
  props: BucketProps = {},
340
393
  ): Promise<R2Bucket> {
341
- return await _R2Bucket(id, {
394
+ const api = await createCloudflareApi(props);
395
+ const bucket = await _R2Bucket(id, {
342
396
  ...props,
343
397
  dev: {
344
398
  ...(props.dev ?? {}),
345
399
  force: Scope.current.local,
346
400
  },
347
401
  });
402
+ return {
403
+ ...bucket,
404
+ head: async (key: string) =>
405
+ headObject(api, {
406
+ bucketName: bucket.name,
407
+ key,
408
+ }),
409
+ get: async (key: string) => {
410
+ const response = await getObject(api, {
411
+ bucketName: bucket.name,
412
+ key,
413
+ });
414
+ if (response.ok) {
415
+ return parseR2Object(key, response);
416
+ } else if (response.status === 404) {
417
+ return null;
418
+ } else {
419
+ throw await handleApiError(response, "get", "object", key);
420
+ }
421
+ },
422
+ list: async (options?: R2ListOptions): Promise<R2Objects> =>
423
+ listObjects(api, bucket.name, {
424
+ ...options,
425
+ jurisdiction: bucket.jurisdiction,
426
+ }),
427
+ put: async (
428
+ key: string,
429
+ value: PutObjectObject,
430
+ ): Promise<PutR2ObjectResponse> => {
431
+ const response = await putObject(api, {
432
+ bucketName: bucket.name,
433
+ key: key,
434
+ object: value,
435
+ });
436
+ const body = (await response.json()) as {
437
+ result: {
438
+ key: string;
439
+ etag: string;
440
+ uploaded: string;
441
+ version: string;
442
+ size: string;
443
+ };
444
+ };
445
+ return {
446
+ key: body.result.key,
447
+ etag: body.result.etag,
448
+ uploaded: new Date(body.result.uploaded),
449
+ version: body.result.version,
450
+ size: Number(body.result.size),
451
+ };
452
+ },
453
+ delete: async (key: string) =>
454
+ deleteObject(api, {
455
+ bucketName: bucket.name,
456
+ key: key,
457
+ }),
458
+ };
348
459
  }
349
460
 
461
+ const parseR2Object = (key: string, response: Response): R2Object => ({
462
+ etag: response.headers.get("ETag")!,
463
+ uploaded: parseDate(response.headers),
464
+ key,
465
+ size: Number(response.headers.get("Content-Length")),
466
+ arrayBuffer: () => response.arrayBuffer(),
467
+ bytes: () => response.bytes(),
468
+ text: () => response.text(),
469
+ json: () => response.json(),
470
+ blob: () => response.blob(),
471
+ });
472
+
473
+ const parseDate = (headers: Headers) =>
474
+ new Date(headers.get("Last-Modified") ?? headers.get("Date")!);
475
+
350
476
  const _R2Bucket = Resource(
351
477
  "cloudflare::R2Bucket",
352
478
  async function (
353
- this: Context<R2Bucket>,
479
+ this: Context<_R2Bucket>,
354
480
  id: string,
355
481
  props: BucketProps = {},
356
- ): Promise<R2Bucket> {
482
+ ): Promise<_R2Bucket> {
357
483
  const bucketName =
358
484
  props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
359
485
 
@@ -369,7 +495,7 @@ const _R2Bucket = Resource(
369
495
  const adopt = props.adopt ?? this.scope.adopt;
370
496
 
371
497
  if (this.scope.local && !props.dev?.remote) {
372
- return this({
498
+ return {
373
499
  name: this.output?.name ?? "",
374
500
  location: this.output?.location ?? "",
375
501
  creationDate: this.output?.creationDate ?? new Date(),
@@ -380,7 +506,7 @@ const _R2Bucket = Resource(
380
506
  accountId: this.output?.accountId ?? "",
381
507
  cors: props.cors,
382
508
  dev,
383
- });
509
+ };
384
510
  }
385
511
 
386
512
  const api = await createCloudflareApi(props);
@@ -426,7 +552,7 @@ const _R2Bucket = Resource(
426
552
  if (props.lock?.length) {
427
553
  await putBucketLockRules(api, bucketName, props);
428
554
  }
429
- return this({
555
+ return {
430
556
  name: bucketName,
431
557
  location: bucket.location,
432
558
  creationDate: new Date(bucket.creation_date),
@@ -439,7 +565,7 @@ const _R2Bucket = Resource(
439
565
  lock: props.lock,
440
566
  cors: props.cors,
441
567
  dev,
442
- });
568
+ };
443
569
  } else {
444
570
  if (bucketName !== this.output.name) {
445
571
  throw new Error(
@@ -466,7 +592,7 @@ const _R2Bucket = Resource(
466
592
  if (!isDeepStrictEqual(this.output.lock ?? [], props.lock ?? [])) {
467
593
  await putBucketLockRules(api, bucketName, props);
468
594
  }
469
- return this({
595
+ return {
470
596
  ...this.output,
471
597
  allowPublicAccess,
472
598
  dev,
@@ -474,7 +600,7 @@ const _R2Bucket = Resource(
474
600
  lifecycle: props.lifecycle,
475
601
  lock: props.lock,
476
602
  domain,
477
- });
603
+ };
478
604
  }
479
605
  },
480
606
  );
@@ -613,17 +739,20 @@ async function emptyBucket(
613
739
  ) {
614
740
  let cursor: string | undefined;
615
741
  while (true) {
616
- const result = await listObjects(api, bucketName, props, cursor);
617
- if (result.keys.length) {
742
+ const result = await listObjects(api, bucketName, {
743
+ jurisdiction: props.jurisdiction,
744
+ cursor,
745
+ });
746
+ if (result.objects.length) {
618
747
  // Another undocumented API! But it lets us delete multiple objects at once instead of one by one.
619
748
  await extractCloudflareResult(
620
- `delete ${result.keys.length} objects from bucket "${bucketName}"`,
749
+ `delete ${result.objects.length} objects from bucket "${bucketName}"`,
621
750
  api.delete(
622
751
  `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects`,
623
752
  {
624
753
  headers: withJurisdiction(props),
625
754
  method: "DELETE",
626
- body: JSON.stringify(result.keys),
755
+ body: JSON.stringify(result.objects.map((object) => object.key)),
627
756
  },
628
757
  ),
629
758
  );
@@ -642,21 +771,39 @@ async function emptyBucket(
642
771
  export async function listObjects(
643
772
  api: CloudflareApi,
644
773
  bucketName: string,
645
- props: { jurisdiction?: string },
646
- cursor?: string,
647
- ) {
774
+ props: R2ListOptions & {
775
+ jurisdiction?: string;
776
+ },
777
+ ): Promise<R2Objects> {
648
778
  const params = new URLSearchParams({
649
779
  per_page: "1000",
650
780
  });
651
- if (cursor) {
652
- params.set("cursor", cursor);
781
+ if (props.cursor) {
782
+ params.set("cursor", props.cursor);
783
+ }
784
+ if (props.delimiter) {
785
+ params.set("delimiter", props.delimiter);
786
+ }
787
+ if (props.prefix) {
788
+ params.set("prefix", props.prefix);
789
+ }
790
+ if (props.startAfter) {
791
+ params.set("start_after", props.startAfter);
792
+ }
793
+ if (props.limit) {
794
+ params.set("limit", props.limit.toString());
653
795
  }
654
796
  const response = await api.get(
655
797
  `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects?${params.toString()}`,
656
798
  { headers: withJurisdiction(props) },
657
799
  );
658
800
  const json: {
659
- result: { key: string }[];
801
+ result: {
802
+ key: string;
803
+ etag: string;
804
+ last_modified: string;
805
+ size: number;
806
+ }[];
660
807
  result_info?: {
661
808
  cursor: string;
662
809
  is_truncated: boolean;
@@ -668,7 +815,11 @@ export async function listObjects(
668
815
  if (!json.success) {
669
816
  // 10006 indicates that the bucket does not exist, so there are no objects to list
670
817
  if (json.errors.some((e) => e.code === 10006)) {
671
- return { keys: [], cursor: undefined };
818
+ return {
819
+ objects: [],
820
+ cursor: undefined,
821
+ truncated: false,
822
+ };
672
823
  }
673
824
  throw new CloudflareApiError(
674
825
  `Failed to list objects in bucket "${bucketName}": ${json.errors.map((e) => `- [${e.code}] ${e.message}${e.documentation_url ? ` (${e.documentation_url})` : ""}`).join("\n")}`,
@@ -677,9 +828,17 @@ export async function listObjects(
677
828
  );
678
829
  }
679
830
  return {
680
- keys: json.result.map((object) => object.key),
831
+ // keys: json.result.map((object) => object.key),
832
+ objects: json.result.map((object) => ({
833
+ key: object.key,
834
+ etag: object.etag,
835
+ uploaded: new Date(object.last_modified),
836
+ size: object.size,
837
+ })),
838
+ delimitedPrefixes: [],
681
839
  cursor: json.result_info?.cursor,
682
- };
840
+ truncated: json.result_info?.is_truncated ?? false,
841
+ } as R2Objects;
683
842
  }
684
843
 
685
844
  /**
@@ -869,3 +1028,107 @@ export async function getBucketLockRules(
869
1028
  : (json.result?.rules ?? []);
870
1029
  return rules as R2BucketLockRule[];
871
1030
  }
1031
+
1032
+ export async function headObject(
1033
+ api: CloudflareApi,
1034
+ { bucketName, key }: { bucketName: string; key: string },
1035
+ ): Promise<R2ObjectMetadata | null> {
1036
+ const response = await withRetries(
1037
+ async () =>
1038
+ await api.get(
1039
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1040
+ ),
1041
+ );
1042
+ // for some reason HEAD returns 404 for keys that exist, this is the best we can do without using S3 API
1043
+ response.body?.cancel();
1044
+ if (response.status === 404) {
1045
+ return null;
1046
+ } else if (!response.ok) {
1047
+ throw await handleApiError(response, "head", "object", key);
1048
+ }
1049
+ return {
1050
+ key,
1051
+ etag: response.headers.get("ETag")?.replace(/"/g, "")!,
1052
+ uploaded: parseDate(response.headers),
1053
+ size: Number(response.headers.get("Content-Length")),
1054
+ };
1055
+ }
1056
+
1057
+ const withRetries = (f: () => Promise<Response>) => {
1058
+ return withExponentialBackoff(f, isRetryableError, 5, 1000);
1059
+ };
1060
+
1061
+ export async function getObject(
1062
+ api: CloudflareApi,
1063
+ { bucketName, key }: { bucketName: string; key: string },
1064
+ ) {
1065
+ return await withRetries(async () => {
1066
+ const response = await api.get(
1067
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1068
+ {
1069
+ headers: {
1070
+ "Content-Type": "application/octet-stream",
1071
+ Accept: "application/octet-stream",
1072
+ },
1073
+ },
1074
+ );
1075
+ if (!response.ok && response.status !== 404) {
1076
+ throw await handleApiError(response, "get", "object", key);
1077
+ }
1078
+ return response;
1079
+ });
1080
+ }
1081
+
1082
+ type PutObjectObject =
1083
+ | ReadableStream
1084
+ | ArrayBuffer
1085
+ | ArrayBufferView
1086
+ | string
1087
+ | Blob;
1088
+
1089
+ export async function putObject(
1090
+ api: CloudflareApi,
1091
+ {
1092
+ bucketName,
1093
+ key,
1094
+ object,
1095
+ }: {
1096
+ bucketName: string;
1097
+ key: string;
1098
+ object: PutObjectObject;
1099
+ },
1100
+ ): Promise<Response> {
1101
+ // Using withExponentialBackoff for reliability
1102
+ return await withRetries(async () => {
1103
+ const response = await api.put(
1104
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1105
+ object,
1106
+ {
1107
+ headers: {
1108
+ "Content-Type": "application/octet-stream",
1109
+ },
1110
+ },
1111
+ );
1112
+ if (!response.ok) {
1113
+ await handleApiError(response, "put", "object", key);
1114
+ }
1115
+ return response;
1116
+ });
1117
+ }
1118
+
1119
+ export async function deleteObject(
1120
+ api: CloudflareApi,
1121
+ { bucketName, key }: { bucketName: string; key: string },
1122
+ ) {
1123
+ return await withRetries(async () => {
1124
+ const response = await api.delete(
1125
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1126
+ );
1127
+
1128
+ if (!response.ok && response.status !== 404) {
1129
+ await handleApiError(response, "delete", "object", key);
1130
+ }
1131
+
1132
+ return response;
1133
+ });
1134
+ }
@@ -35,11 +35,11 @@ export function createWasmPlugin() {
35
35
  );
36
36
 
37
37
  // Copy to outdir so it's included in the upload
38
- await fs.mkdir(outdir, { recursive: true });
39
- await fs.copyFile(
40
- path.join(args.resolveDir, name),
41
- path.join(outdir, name),
42
- );
38
+ const copyFrom = path.join(args.resolveDir, name);
39
+ const copyTo = path.join(outdir, name);
40
+ await fs.mkdir(path.dirname(copyTo), { recursive: true });
41
+ await fs.copyFile(copyFrom, copyTo);
42
+
43
43
  modules.set(args.path, {
44
44
  type: "wasm",
45
45
  path: name,
@@ -127,8 +127,7 @@ export interface CertificatePackProps extends CloudflareApiOptions {
127
127
  /**
128
128
  * Output returned after Certificate Pack creation/update
129
129
  */
130
- export interface CertificatePack
131
- extends Resource<"cloudflare::CertificatePack"> {
130
+ export interface CertificatePack {
132
131
  /**
133
132
  * The unique ID of the certificate pack
134
133
  */
@@ -356,7 +355,7 @@ export const CertificatePack = Resource(
356
355
  `Adopting existing certificate pack ${existingPack.id} instead of creating a new one`,
357
356
  );
358
357
 
359
- return this({
358
+ return {
360
359
  id: existingPack.id,
361
360
  certificateAuthority: existingPack.certificate_authority,
362
361
  cloudflareBranding: props.cloudflareBranding ?? false,
@@ -367,7 +366,7 @@ export const CertificatePack = Resource(
367
366
  validityDays: existingPack.validity_days,
368
367
  zoneId,
369
368
  zoneName: zoneName,
370
- });
369
+ };
371
370
  }
372
371
 
373
372
  logger.log(
@@ -416,7 +415,7 @@ export const CertificatePack = Resource(
416
415
  `Certificate pack created with ID ${createdPack.id}. Status: ${createdPack.status}. Note: Certificate provisioning can take up to 10 minutes.`,
417
416
  );
418
417
 
419
- return this({
418
+ return {
420
419
  id: createdPack.id,
421
420
  certificateAuthority: createdPack.certificate_authority,
422
421
  cloudflareBranding: props.cloudflareBranding ?? false,
@@ -427,7 +426,7 @@ export const CertificatePack = Resource(
427
426
  validityDays: createdPack.validity_days,
428
427
  zoneId,
429
428
  zoneName: zoneName,
430
- });
429
+ };
431
430
  },
432
431
  );
433
432
 
@@ -4,4 +4,4 @@
4
4
  /**
5
5
  * The default Cloudflare Workers compatibility date, set based on the latest workerd release at the time of build.
6
6
  */
7
- export const DEFAULT_COMPATIBILITY_DATE = "2025-09-13";
7
+ export const DEFAULT_COMPATIBILITY_DATE = "2025-09-24";
@@ -410,8 +410,7 @@ export type SchedulingPolicy =
410
410
  * This resource manages the lifecycle of containerized applications running on
411
411
  * Cloudflare's global network with automatic scaling and scheduling.
412
412
  */
413
- export interface ContainerApplication
414
- extends Resource<"cloudflare::ContainerApplication"> {
413
+ export interface ContainerApplication {
415
414
  /** Unique identifier for the container application */
416
415
  id: string;
417
416
 
@@ -514,10 +513,10 @@ export const ContainerApplication = Resource(
514
513
  const applicationName = props.name ?? this.scope.createPhysicalName(id);
515
514
 
516
515
  if (this.scope.local && props.dev) {
517
- return this({
516
+ return {
518
517
  id: this.output?.id ?? "",
519
518
  name: applicationName,
520
- });
519
+ };
521
520
  }
522
521
 
523
522
  const adopt = props.adopt ?? this.scope.adopt;
@@ -565,10 +564,10 @@ export const ContainerApplication = Resource(
565
564
  step_percentage: props.rollout?.stepPercentage ?? 25,
566
565
  target_configuration: configuration,
567
566
  });
568
- return this({
567
+ return {
569
568
  id: application.id,
570
569
  name: application.name,
571
- });
570
+ };
572
571
  } else {
573
572
  let application: ContainerApplicationData;
574
573
 
@@ -643,10 +642,10 @@ export const ContainerApplication = Resource(
643
642
  }
644
643
  }
645
644
 
646
- return this({
645
+ return {
647
646
  id: application.id,
648
647
  name: application.name,
649
- });
648
+ };
650
649
  }
651
650
  },
652
651
  );
@@ -69,9 +69,7 @@ interface CloudflareDomain {
69
69
  /**
70
70
  * Output returned after CustomDomain creation/update
71
71
  */
72
- export interface CustomDomain
73
- extends Resource<"cloudflare::CustomDomain">,
74
- CustomDomainProps {
72
+ export interface CustomDomain extends CustomDomainProps {
75
73
  /**
76
74
  * The unique identifier for the Cloudflare domain binding.
77
75
  */
@@ -125,14 +123,14 @@ export const CustomDomain = Resource(
125
123
  ): Promise<CustomDomain> {
126
124
  if (this.scope.local && props.dev) {
127
125
  const now = Date.now();
128
- return this({
126
+ return {
129
127
  ...props,
130
128
  id: this.output?.id ?? "noop-domain",
131
129
  zoneId: props.zoneId ?? "noop-zone",
132
130
  environment: props.environment ?? "production",
133
131
  createdAt: this.output?.createdAt ?? now,
134
132
  updatedAt: now,
135
- });
133
+ };
136
134
  }
137
135
 
138
136
  // Create Cloudflare API client with automatic account discovery