alchemy 0.67.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (803) hide show
  1. package/bin/alchemy.js +25580 -26264
  2. package/bin/alchemy.ts +6 -2
  3. package/bin/commands/configure.ts +194 -0
  4. package/bin/commands/login.ts +99 -55
  5. package/bin/commands/logout.ts +66 -0
  6. package/bin/trpc.ts +27 -2
  7. package/lib/apply.d.ts +2 -2
  8. package/lib/apply.d.ts.map +1 -1
  9. package/lib/apply.js +18 -15
  10. package/lib/apply.js.map +1 -1
  11. package/lib/auth.d.ts +72 -0
  12. package/lib/auth.d.ts.map +1 -0
  13. package/lib/auth.js +163 -0
  14. package/lib/auth.js.map +1 -0
  15. package/lib/aws/bucket.d.ts +12 -3
  16. package/lib/aws/bucket.d.ts.map +1 -1
  17. package/lib/aws/bucket.js +2 -2
  18. package/lib/aws/bucket.js.map +1 -1
  19. package/lib/aws/control/properties.d.ts +64 -0
  20. package/lib/aws/control/properties.d.ts.map +1 -1
  21. package/lib/aws/control/properties.js +554 -39
  22. package/lib/aws/control/properties.js.map +1 -1
  23. package/lib/aws/control/resource.d.ts +34 -3
  24. package/lib/aws/control/resource.d.ts.map +1 -1
  25. package/lib/aws/control/resource.js +36 -3
  26. package/lib/aws/control/resource.js.map +1 -1
  27. package/lib/aws/control/types.d.ts +5451 -1587
  28. package/lib/aws/control/types.d.ts.map +1 -1
  29. package/lib/aws/control/types.js.map +1 -1
  30. package/lib/aws/control/update-types.d.ts +12913 -0
  31. package/lib/aws/control/update-types.d.ts.map +1 -0
  32. package/lib/aws/control/update-types.js +12916 -0
  33. package/lib/aws/control/update-types.js.map +1 -0
  34. package/lib/aws/ec2/internet-gateway-attachment.d.ts +1 -2
  35. package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -1
  36. package/lib/aws/ec2/internet-gateway-attachment.js +4 -4
  37. package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -1
  38. package/lib/aws/ec2/internet-gateway.d.ts +1 -2
  39. package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
  40. package/lib/aws/ec2/internet-gateway.js +2 -2
  41. package/lib/aws/ec2/internet-gateway.js.map +1 -1
  42. package/lib/aws/ec2/nat-gateway.d.ts +1 -2
  43. package/lib/aws/ec2/nat-gateway.d.ts.map +1 -1
  44. package/lib/aws/ec2/nat-gateway.js +2 -2
  45. package/lib/aws/ec2/nat-gateway.js.map +1 -1
  46. package/lib/aws/ec2/route-table-association.d.ts +1 -2
  47. package/lib/aws/ec2/route-table-association.d.ts.map +1 -1
  48. package/lib/aws/ec2/route-table-association.js +2 -2
  49. package/lib/aws/ec2/route-table-association.js.map +1 -1
  50. package/lib/aws/ec2/route-table.d.ts +1 -2
  51. package/lib/aws/ec2/route-table.d.ts.map +1 -1
  52. package/lib/aws/ec2/route-table.js +2 -2
  53. package/lib/aws/ec2/route-table.js.map +1 -1
  54. package/lib/aws/ec2/route.d.ts +1 -2
  55. package/lib/aws/ec2/route.d.ts.map +1 -1
  56. package/lib/aws/ec2/route.js +2 -2
  57. package/lib/aws/ec2/route.js.map +1 -1
  58. package/lib/aws/ec2/security-group-rule.d.ts +1 -2
  59. package/lib/aws/ec2/security-group-rule.d.ts.map +1 -1
  60. package/lib/aws/ec2/security-group-rule.js +2 -2
  61. package/lib/aws/ec2/security-group-rule.js.map +1 -1
  62. package/lib/aws/ec2/security-group.d.ts +1 -2
  63. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  64. package/lib/aws/ec2/security-group.js +2 -2
  65. package/lib/aws/ec2/security-group.js.map +1 -1
  66. package/lib/aws/ec2/subnet.d.ts +1 -2
  67. package/lib/aws/ec2/subnet.d.ts.map +1 -1
  68. package/lib/aws/ec2/subnet.js +2 -2
  69. package/lib/aws/ec2/subnet.js.map +1 -1
  70. package/lib/aws/ec2/vpc.d.ts +1 -2
  71. package/lib/aws/ec2/vpc.d.ts.map +1 -1
  72. package/lib/aws/ec2/vpc.js +2 -2
  73. package/lib/aws/ec2/vpc.js.map +1 -1
  74. package/lib/aws/function.d.ts +116 -3
  75. package/lib/aws/function.d.ts.map +1 -1
  76. package/lib/aws/function.js +2 -2
  77. package/lib/aws/function.js.map +1 -1
  78. package/lib/aws/oidc/github-oidc-provider.d.ts +13 -2
  79. package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -1
  80. package/lib/aws/oidc/oidc-provider.d.ts +48 -3
  81. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
  82. package/lib/aws/oidc/oidc-provider.js +2 -2
  83. package/lib/aws/oidc/oidc-provider.js.map +1 -1
  84. package/lib/aws/policy-attachment.d.ts +2 -3
  85. package/lib/aws/policy-attachment.d.ts.map +1 -1
  86. package/lib/aws/policy-attachment.js +1 -1
  87. package/lib/aws/policy-attachment.js.map +1 -1
  88. package/lib/aws/policy.d.ts +1 -2
  89. package/lib/aws/policy.d.ts.map +1 -1
  90. package/lib/aws/policy.js +4 -4
  91. package/lib/aws/policy.js.map +1 -1
  92. package/lib/aws/queue.d.ts +1 -2
  93. package/lib/aws/queue.d.ts.map +1 -1
  94. package/lib/aws/queue.js +4 -4
  95. package/lib/aws/queue.js.map +1 -1
  96. package/lib/aws/role.d.ts +1 -2
  97. package/lib/aws/role.d.ts.map +1 -1
  98. package/lib/aws/role.js +2 -2
  99. package/lib/aws/role.js.map +1 -1
  100. package/lib/aws/ses.d.ts +1 -2
  101. package/lib/aws/ses.d.ts.map +1 -1
  102. package/lib/aws/ses.js +2 -2
  103. package/lib/aws/ses.js.map +1 -1
  104. package/lib/aws/ssm-parameter.d.ts +1 -2
  105. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  106. package/lib/aws/ssm-parameter.js +2 -2
  107. package/lib/aws/ssm-parameter.js.map +1 -1
  108. package/lib/aws/table.d.ts +1 -2
  109. package/lib/aws/table.d.ts.map +1 -1
  110. package/lib/aws/table.js +2 -2
  111. package/lib/aws/table.js.map +1 -1
  112. package/lib/cloudflare/account-api-token.d.ts +1 -2
  113. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  114. package/lib/cloudflare/account-api-token.js +2 -2
  115. package/lib/cloudflare/account-api-token.js.map +1 -1
  116. package/lib/cloudflare/ai-gateway.d.ts +1 -2
  117. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  118. package/lib/cloudflare/ai-gateway.js +2 -2
  119. package/lib/cloudflare/ai-gateway.js.map +1 -1
  120. package/lib/cloudflare/api-gateway-operation.d.ts +1 -2
  121. package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -1
  122. package/lib/cloudflare/api-gateway-operation.js +2 -2
  123. package/lib/cloudflare/api-gateway-operation.js.map +1 -1
  124. package/lib/cloudflare/api-schema.d.ts +1 -2
  125. package/lib/cloudflare/api-schema.d.ts.map +1 -1
  126. package/lib/cloudflare/api-schema.js +2 -2
  127. package/lib/cloudflare/api-schema.js.map +1 -1
  128. package/lib/cloudflare/api-shield.d.ts +1 -2
  129. package/lib/cloudflare/api-shield.d.ts.map +1 -1
  130. package/lib/cloudflare/api-shield.js +2 -2
  131. package/lib/cloudflare/api-shield.js.map +1 -1
  132. package/lib/cloudflare/api.d.ts +18 -10
  133. package/lib/cloudflare/api.d.ts.map +1 -1
  134. package/lib/cloudflare/api.js +92 -38
  135. package/lib/cloudflare/api.js.map +1 -1
  136. package/lib/cloudflare/assets.d.ts +21 -43
  137. package/lib/cloudflare/assets.d.ts.map +1 -1
  138. package/lib/cloudflare/assets.js +78 -70
  139. package/lib/cloudflare/assets.js.map +1 -1
  140. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  141. package/lib/cloudflare/astro/astro.js +3 -3
  142. package/lib/cloudflare/astro/astro.js.map +1 -1
  143. package/lib/cloudflare/auth.d.ts +91 -17
  144. package/lib/cloudflare/auth.d.ts.map +1 -1
  145. package/lib/cloudflare/auth.js +141 -62
  146. package/lib/cloudflare/auth.js.map +1 -1
  147. package/lib/cloudflare/bound.d.ts +1 -1
  148. package/lib/cloudflare/bound.d.ts.map +1 -1
  149. package/lib/cloudflare/bucket-object.d.ts +81 -0
  150. package/lib/cloudflare/bucket-object.d.ts.map +1 -0
  151. package/lib/cloudflare/bucket-object.js +67 -0
  152. package/lib/cloudflare/bucket-object.js.map +1 -0
  153. package/lib/cloudflare/bucket.d.ts +87 -8
  154. package/lib/cloudflare/bucket.d.ts.map +1 -1
  155. package/lib/cloudflare/bucket.js +246 -19
  156. package/lib/cloudflare/bucket.js.map +1 -1
  157. package/lib/cloudflare/bundle/plugin-wasm.js +4 -2
  158. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
  159. package/lib/cloudflare/certificate-pack.d.ts +1 -2
  160. package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
  161. package/lib/cloudflare/certificate-pack.js +4 -4
  162. package/lib/cloudflare/certificate-pack.js.map +1 -1
  163. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  164. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  165. package/lib/cloudflare/container.d.ts +1 -2
  166. package/lib/cloudflare/container.d.ts.map +1 -1
  167. package/lib/cloudflare/container.js +7 -7
  168. package/lib/cloudflare/container.js.map +1 -1
  169. package/lib/cloudflare/custom-domain.d.ts +1 -2
  170. package/lib/cloudflare/custom-domain.d.ts.map +1 -1
  171. package/lib/cloudflare/custom-domain.js +2 -2
  172. package/lib/cloudflare/custom-domain.js.map +1 -1
  173. package/lib/cloudflare/d1-database.d.ts +2 -3
  174. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  175. package/lib/cloudflare/d1-database.js +5 -5
  176. package/lib/cloudflare/d1-database.js.map +1 -1
  177. package/lib/cloudflare/dispatch-namespace.d.ts +2 -3
  178. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  179. package/lib/cloudflare/dispatch-namespace.js +3 -3
  180. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  181. package/lib/cloudflare/dns-records.d.ts +1 -2
  182. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  183. package/lib/cloudflare/dns-records.js +4 -4
  184. package/lib/cloudflare/dns-records.js.map +1 -1
  185. package/lib/cloudflare/email-address.d.ts +1 -2
  186. package/lib/cloudflare/email-address.d.ts.map +1 -1
  187. package/lib/cloudflare/email-address.js +6 -6
  188. package/lib/cloudflare/email-address.js.map +1 -1
  189. package/lib/cloudflare/email-catch-all.d.ts +1 -2
  190. package/lib/cloudflare/email-catch-all.d.ts.map +1 -1
  191. package/lib/cloudflare/email-catch-all.js +4 -4
  192. package/lib/cloudflare/email-catch-all.js.map +1 -1
  193. package/lib/cloudflare/email-routing.d.ts +1 -2
  194. package/lib/cloudflare/email-routing.d.ts.map +1 -1
  195. package/lib/cloudflare/email-routing.js +4 -4
  196. package/lib/cloudflare/email-routing.js.map +1 -1
  197. package/lib/cloudflare/email-rule.d.ts +1 -2
  198. package/lib/cloudflare/email-rule.d.ts.map +1 -1
  199. package/lib/cloudflare/email-rule.js +4 -4
  200. package/lib/cloudflare/email-rule.js.map +1 -1
  201. package/lib/cloudflare/hyperdrive.d.ts +1 -2
  202. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  203. package/lib/cloudflare/hyperdrive.js +4 -4
  204. package/lib/cloudflare/hyperdrive.js.map +1 -1
  205. package/lib/cloudflare/index.d.ts +1 -0
  206. package/lib/cloudflare/index.d.ts.map +1 -1
  207. package/lib/cloudflare/index.js +1 -0
  208. package/lib/cloudflare/index.js.map +1 -1
  209. package/lib/cloudflare/kv-namespace.d.ts +2 -3
  210. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  211. package/lib/cloudflare/kv-namespace.js +5 -5
  212. package/lib/cloudflare/kv-namespace.js.map +1 -1
  213. package/lib/cloudflare/miniflare/delete.js +1 -1
  214. package/lib/cloudflare/miniflare/delete.js.map +1 -1
  215. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  216. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +2 -7
  217. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  218. package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
  219. package/lib/cloudflare/miniflare/remote-binding-proxy.js +15 -4
  220. package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
  221. package/lib/cloudflare/next.js.map +1 -1
  222. package/lib/cloudflare/nuxt/nuxt.d.ts.map +1 -1
  223. package/lib/cloudflare/nuxt/nuxt.js +3 -3
  224. package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
  225. package/lib/cloudflare/permission-groups.d.ts +1 -2
  226. package/lib/cloudflare/permission-groups.d.ts.map +1 -1
  227. package/lib/cloudflare/permission-groups.js +1 -1
  228. package/lib/cloudflare/permission-groups.js.map +1 -1
  229. package/lib/cloudflare/pipeline.d.ts +2 -3
  230. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  231. package/lib/cloudflare/pipeline.js +5 -5
  232. package/lib/cloudflare/pipeline.js.map +1 -1
  233. package/lib/cloudflare/queue-consumer.d.ts +1 -2
  234. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  235. package/lib/cloudflare/queue-consumer.js +4 -4
  236. package/lib/cloudflare/queue-consumer.js.map +1 -1
  237. package/lib/cloudflare/queue.d.ts +1 -2
  238. package/lib/cloudflare/queue.d.ts.map +1 -1
  239. package/lib/cloudflare/queue.js +4 -4
  240. package/lib/cloudflare/queue.js.map +1 -1
  241. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  242. package/lib/cloudflare/react-router/plugin.js +13 -0
  243. package/lib/cloudflare/react-router/plugin.js.map +1 -1
  244. package/lib/cloudflare/redirect-rule.d.ts +1 -2
  245. package/lib/cloudflare/redirect-rule.d.ts.map +1 -1
  246. package/lib/cloudflare/redirect-rule.js +4 -4
  247. package/lib/cloudflare/redirect-rule.js.map +1 -1
  248. package/lib/cloudflare/route.d.ts +1 -2
  249. package/lib/cloudflare/route.d.ts.map +1 -1
  250. package/lib/cloudflare/route.js +4 -4
  251. package/lib/cloudflare/route.js.map +1 -1
  252. package/lib/cloudflare/ruleset.d.ts +1 -2
  253. package/lib/cloudflare/ruleset.d.ts.map +1 -1
  254. package/lib/cloudflare/ruleset.js +2 -2
  255. package/lib/cloudflare/ruleset.js.map +1 -1
  256. package/lib/cloudflare/secret.d.ts +2 -3
  257. package/lib/cloudflare/secret.d.ts.map +1 -1
  258. package/lib/cloudflare/secret.js +3 -3
  259. package/lib/cloudflare/secret.js.map +1 -1
  260. package/lib/cloudflare/secrets-store.d.ts +2 -3
  261. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  262. package/lib/cloudflare/secrets-store.js +3 -3
  263. package/lib/cloudflare/secrets-store.js.map +1 -1
  264. package/lib/cloudflare/tunnel.d.ts +2 -3
  265. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  266. package/lib/cloudflare/tunnel.js +3 -3
  267. package/lib/cloudflare/tunnel.js.map +1 -1
  268. package/lib/cloudflare/user.d.ts +3 -2
  269. package/lib/cloudflare/user.d.ts.map +1 -1
  270. package/lib/cloudflare/user.js +7 -5
  271. package/lib/cloudflare/user.js.map +1 -1
  272. package/lib/cloudflare/vectorize-index.d.ts +2 -3
  273. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  274. package/lib/cloudflare/vectorize-index.js +6 -6
  275. package/lib/cloudflare/vectorize-index.js.map +1 -1
  276. package/lib/cloudflare/vectorize-metadata-index.d.ts +2 -3
  277. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  278. package/lib/cloudflare/vectorize-metadata-index.js +4 -4
  279. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  280. package/lib/cloudflare/vite/vite.d.ts.map +1 -1
  281. package/lib/cloudflare/vite/vite.js +3 -3
  282. package/lib/cloudflare/vite/vite.js.map +1 -1
  283. package/lib/cloudflare/website.d.ts +7 -1
  284. package/lib/cloudflare/website.d.ts.map +1 -1
  285. package/lib/cloudflare/website.js +20 -2
  286. package/lib/cloudflare/website.js.map +1 -1
  287. package/lib/cloudflare/worker-assets.d.ts +1 -29
  288. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  289. package/lib/cloudflare/worker-assets.js +9 -42
  290. package/lib/cloudflare/worker-assets.js.map +1 -1
  291. package/lib/cloudflare/worker-stub.d.ts +2 -3
  292. package/lib/cloudflare/worker-stub.d.ts.map +1 -1
  293. package/lib/cloudflare/worker-stub.js +3 -3
  294. package/lib/cloudflare/worker-stub.js.map +1 -1
  295. package/lib/cloudflare/worker-subdomain.d.ts +4 -3
  296. package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
  297. package/lib/cloudflare/worker-subdomain.js +5 -5
  298. package/lib/cloudflare/worker-subdomain.js.map +1 -1
  299. package/lib/cloudflare/worker.d.ts +3 -4
  300. package/lib/cloudflare/worker.d.ts.map +1 -1
  301. package/lib/cloudflare/worker.js +6 -5
  302. package/lib/cloudflare/worker.js.map +1 -1
  303. package/lib/cloudflare/wrangler.json.d.ts +27 -8
  304. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  305. package/lib/cloudflare/wrangler.json.js +3 -1
  306. package/lib/cloudflare/wrangler.json.js.map +1 -1
  307. package/lib/cloudflare/zone.d.ts +1 -2
  308. package/lib/cloudflare/zone.d.ts.map +1 -1
  309. package/lib/cloudflare/zone.js +2 -2
  310. package/lib/cloudflare/zone.js.map +1 -1
  311. package/lib/context.d.ts +8 -8
  312. package/lib/context.d.ts.map +1 -1
  313. package/lib/context.js.map +1 -1
  314. package/lib/destroy.d.ts +1 -1
  315. package/lib/destroy.d.ts.map +1 -1
  316. package/lib/destroy.js.map +1 -1
  317. package/lib/dns/import-dns.d.ts +1 -2
  318. package/lib/dns/import-dns.d.ts.map +1 -1
  319. package/lib/dns/import-dns.js +2 -2
  320. package/lib/dns/import-dns.js.map +1 -1
  321. package/lib/docker/container.d.ts +1 -2
  322. package/lib/docker/container.d.ts.map +1 -1
  323. package/lib/docker/container.js +2 -3
  324. package/lib/docker/container.js.map +1 -1
  325. package/lib/docker/image.d.ts +1 -2
  326. package/lib/docker/image.d.ts.map +1 -1
  327. package/lib/docker/image.js +9 -9
  328. package/lib/docker/image.js.map +1 -1
  329. package/lib/docker/network.d.ts +1 -2
  330. package/lib/docker/network.d.ts.map +1 -1
  331. package/lib/docker/network.js +2 -3
  332. package/lib/docker/network.js.map +1 -1
  333. package/lib/docker/remote-image.d.ts +1 -2
  334. package/lib/docker/remote-image.d.ts.map +1 -1
  335. package/lib/docker/remote-image.js +2 -3
  336. package/lib/docker/remote-image.js.map +1 -1
  337. package/lib/docker/volume.d.ts +1 -2
  338. package/lib/docker/volume.d.ts.map +1 -1
  339. package/lib/docker/volume.js +2 -3
  340. package/lib/docker/volume.js.map +1 -1
  341. package/lib/esbuild/bundle.d.ts +1 -2
  342. package/lib/esbuild/bundle.d.ts.map +1 -1
  343. package/lib/esbuild/bundle.js +4 -4
  344. package/lib/esbuild/bundle.js.map +1 -1
  345. package/lib/fs/copy-file.d.ts +1 -2
  346. package/lib/fs/copy-file.d.ts.map +1 -1
  347. package/lib/fs/copy-file.js +2 -2
  348. package/lib/fs/copy-file.js.map +1 -1
  349. package/lib/fs/file.d.ts +1 -2
  350. package/lib/fs/file.d.ts.map +1 -1
  351. package/lib/fs/file.js +2 -2
  352. package/lib/fs/file.js.map +1 -1
  353. package/lib/fs/folder.d.ts +1 -2
  354. package/lib/fs/folder.d.ts.map +1 -1
  355. package/lib/fs/folder.js +2 -2
  356. package/lib/fs/folder.js.map +1 -1
  357. package/lib/github/comment.d.ts +1 -2
  358. package/lib/github/comment.d.ts.map +1 -1
  359. package/lib/github/comment.js +4 -4
  360. package/lib/github/comment.js.map +1 -1
  361. package/lib/github/repository-environment.d.ts +1 -2
  362. package/lib/github/repository-environment.d.ts.map +1 -1
  363. package/lib/github/repository-environment.js +2 -2
  364. package/lib/github/repository-environment.js.map +1 -1
  365. package/lib/github/repository-webhook.d.ts +1 -2
  366. package/lib/github/repository-webhook.d.ts.map +1 -1
  367. package/lib/github/repository-webhook.js +2 -2
  368. package/lib/github/repository-webhook.js.map +1 -1
  369. package/lib/github/secret.d.ts +1 -2
  370. package/lib/github/secret.d.ts.map +1 -1
  371. package/lib/github/secret.js +2 -2
  372. package/lib/github/secret.js.map +1 -1
  373. package/lib/llms.cloudflare.txt +2 -2
  374. package/lib/neon/api/client.gen.d.ts +13 -0
  375. package/lib/neon/api/client.gen.d.ts.map +1 -0
  376. package/lib/neon/api/client.gen.js +7 -0
  377. package/lib/neon/api/client.gen.js.map +1 -0
  378. package/lib/neon/api/sdk.gen.d.ts +880 -0
  379. package/lib/neon/api/sdk.gen.d.ts.map +1 -0
  380. package/lib/neon/api/sdk.gen.js +1527 -0
  381. package/lib/neon/api/sdk.gen.js.map +1 -0
  382. package/lib/neon/api/types.gen.d.ts +7250 -0
  383. package/lib/neon/api/types.gen.d.ts.map +1 -0
  384. package/lib/neon/api/types.gen.js +2 -0
  385. package/lib/neon/api/types.gen.js.map +1 -0
  386. package/lib/neon/api.d.ts +14 -49
  387. package/lib/neon/api.d.ts.map +1 -1
  388. package/lib/neon/api.js +36 -114
  389. package/lib/neon/api.js.map +1 -1
  390. package/lib/neon/branch.d.ts +157 -0
  391. package/lib/neon/branch.d.ts.map +1 -0
  392. package/lib/neon/branch.js +112 -0
  393. package/lib/neon/branch.js.map +1 -0
  394. package/lib/neon/index.d.ts +1 -1
  395. package/lib/neon/index.d.ts.map +1 -1
  396. package/lib/neon/index.js +1 -1
  397. package/lib/neon/index.js.map +1 -1
  398. package/lib/neon/project.d.ts +49 -243
  399. package/lib/neon/project.d.ts.map +1 -1
  400. package/lib/neon/project.js +90 -269
  401. package/lib/neon/project.js.map +1 -1
  402. package/lib/neon/utils.d.ts +49 -0
  403. package/lib/neon/utils.d.ts.map +1 -0
  404. package/lib/neon/utils.js +44 -0
  405. package/lib/neon/utils.js.map +1 -0
  406. package/lib/os/exec.d.ts +1 -2
  407. package/lib/os/exec.d.ts.map +1 -1
  408. package/lib/os/exec.js +2 -2
  409. package/lib/os/exec.js.map +1 -1
  410. package/lib/planetscale/api/client.gen.d.ts +12 -1749
  411. package/lib/planetscale/api/client.gen.d.ts.map +1 -1
  412. package/lib/planetscale/api/client.gen.js +6 -2400
  413. package/lib/planetscale/api/client.gen.js.map +1 -1
  414. package/lib/planetscale/api/sdk.gen.d.ts +1582 -0
  415. package/lib/planetscale/api/sdk.gen.d.ts.map +1 -0
  416. package/lib/planetscale/api/sdk.gen.js +2219 -0
  417. package/lib/planetscale/api/sdk.gen.js.map +1 -0
  418. package/lib/planetscale/api/types.gen.d.ts +594 -449
  419. package/lib/planetscale/api/types.gen.d.ts.map +1 -1
  420. package/lib/planetscale/api.d.ts +43 -0
  421. package/lib/planetscale/api.d.ts.map +1 -0
  422. package/lib/planetscale/api.js +53 -0
  423. package/lib/planetscale/api.js.map +1 -0
  424. package/lib/planetscale/branch.d.ts +2 -3
  425. package/lib/planetscale/branch.d.ts.map +1 -1
  426. package/lib/planetscale/branch.js +17 -15
  427. package/lib/planetscale/branch.js.map +1 -1
  428. package/lib/planetscale/database.d.ts +2 -3
  429. package/lib/planetscale/database.d.ts.map +1 -1
  430. package/lib/planetscale/database.js +34 -34
  431. package/lib/planetscale/database.js.map +1 -1
  432. package/lib/planetscale/index.d.ts +1 -1
  433. package/lib/planetscale/index.d.ts.map +1 -1
  434. package/lib/planetscale/index.js +1 -1
  435. package/lib/planetscale/index.js.map +1 -1
  436. package/lib/planetscale/password.d.ts +2 -3
  437. package/lib/planetscale/password.d.ts.map +1 -1
  438. package/lib/planetscale/password.js +11 -11
  439. package/lib/planetscale/password.js.map +1 -1
  440. package/lib/planetscale/role.d.ts +2 -3
  441. package/lib/planetscale/role.d.ts.map +1 -1
  442. package/lib/planetscale/role.js +18 -18
  443. package/lib/planetscale/role.js.map +1 -1
  444. package/lib/planetscale/utils.d.ts +1 -1
  445. package/lib/planetscale/utils.d.ts.map +1 -1
  446. package/lib/planetscale/utils.js +17 -33
  447. package/lib/planetscale/utils.js.map +1 -1
  448. package/lib/random/random-string.d.ts +1 -2
  449. package/lib/random/random-string.d.ts.map +1 -1
  450. package/lib/random/random-string.js +3 -3
  451. package/lib/random/random-string.js.map +1 -1
  452. package/lib/resource.d.ts +4 -1
  453. package/lib/resource.d.ts.map +1 -1
  454. package/lib/resource.js.map +1 -1
  455. package/lib/sentry/client-key.d.ts +1 -2
  456. package/lib/sentry/client-key.d.ts.map +1 -1
  457. package/lib/sentry/client-key.js +2 -2
  458. package/lib/sentry/client-key.js.map +1 -1
  459. package/lib/sentry/project.d.ts +1 -2
  460. package/lib/sentry/project.d.ts.map +1 -1
  461. package/lib/sentry/project.js +2 -2
  462. package/lib/sentry/project.js.map +1 -1
  463. package/lib/sentry/team.d.ts +1 -2
  464. package/lib/sentry/team.d.ts.map +1 -1
  465. package/lib/sentry/team.js +2 -2
  466. package/lib/sentry/team.js.map +1 -1
  467. package/lib/serde.d.ts +3 -0
  468. package/lib/serde.d.ts.map +1 -1
  469. package/lib/serde.js +40 -0
  470. package/lib/serde.js.map +1 -1
  471. package/lib/state/r2-rest-state-store.d.ts +1 -0
  472. package/lib/state/r2-rest-state-store.d.ts.map +1 -1
  473. package/lib/state/r2-rest-state-store.js +15 -34
  474. package/lib/state/r2-rest-state-store.js.map +1 -1
  475. package/lib/stripe/card.d.ts +1 -2
  476. package/lib/stripe/card.d.ts.map +1 -1
  477. package/lib/stripe/card.js +2 -2
  478. package/lib/stripe/card.js.map +1 -1
  479. package/lib/stripe/coupon.d.ts +1 -2
  480. package/lib/stripe/coupon.d.ts.map +1 -1
  481. package/lib/stripe/coupon.js +2 -2
  482. package/lib/stripe/coupon.js.map +1 -1
  483. package/lib/stripe/customer.d.ts +1 -2
  484. package/lib/stripe/customer.d.ts.map +1 -1
  485. package/lib/stripe/customer.js +2 -2
  486. package/lib/stripe/customer.js.map +1 -1
  487. package/lib/stripe/entitlements-feature.d.ts +1 -2
  488. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  489. package/lib/stripe/entitlements-feature.js +2 -2
  490. package/lib/stripe/entitlements-feature.js.map +1 -1
  491. package/lib/stripe/file.d.ts +1 -2
  492. package/lib/stripe/file.d.ts.map +1 -1
  493. package/lib/stripe/file.js +2 -2
  494. package/lib/stripe/file.js.map +1 -1
  495. package/lib/stripe/meter.d.ts +1 -2
  496. package/lib/stripe/meter.d.ts.map +1 -1
  497. package/lib/stripe/meter.js +1 -1
  498. package/lib/stripe/meter.js.map +1 -1
  499. package/lib/stripe/portal-configuration.d.ts +1 -2
  500. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  501. package/lib/stripe/portal-configuration.js +2 -2
  502. package/lib/stripe/portal-configuration.js.map +1 -1
  503. package/lib/stripe/price.d.ts +1 -2
  504. package/lib/stripe/price.d.ts.map +1 -1
  505. package/lib/stripe/price.js +2 -2
  506. package/lib/stripe/price.js.map +1 -1
  507. package/lib/stripe/product-feature.d.ts +1 -2
  508. package/lib/stripe/product-feature.d.ts.map +1 -1
  509. package/lib/stripe/product-feature.js +2 -2
  510. package/lib/stripe/product-feature.js.map +1 -1
  511. package/lib/stripe/product.d.ts +1 -2
  512. package/lib/stripe/product.d.ts.map +1 -1
  513. package/lib/stripe/product.js +2 -2
  514. package/lib/stripe/product.js.map +1 -1
  515. package/lib/stripe/promotion-code.d.ts +1 -2
  516. package/lib/stripe/promotion-code.d.ts.map +1 -1
  517. package/lib/stripe/promotion-code.js +2 -2
  518. package/lib/stripe/promotion-code.js.map +1 -1
  519. package/lib/stripe/shipping-rate.d.ts +1 -2
  520. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  521. package/lib/stripe/shipping-rate.js +2 -2
  522. package/lib/stripe/shipping-rate.js.map +1 -1
  523. package/lib/stripe/tax-rate.d.ts +1 -2
  524. package/lib/stripe/tax-rate.d.ts.map +1 -1
  525. package/lib/stripe/tax-rate.js +2 -2
  526. package/lib/stripe/tax-rate.js.map +1 -1
  527. package/lib/stripe/webhook.d.ts +16 -3
  528. package/lib/stripe/webhook.d.ts.map +1 -1
  529. package/lib/stripe/webhook.js +2 -2
  530. package/lib/stripe/webhook.js.map +1 -1
  531. package/lib/test/bun.d.ts.map +1 -1
  532. package/lib/test/bun.js +1 -0
  533. package/lib/test/bun.js.map +1 -1
  534. package/lib/test/options.d.ts +5 -0
  535. package/lib/test/options.d.ts.map +1 -1
  536. package/lib/test/vitest.d.ts.map +1 -1
  537. package/lib/test/vitest.js +1 -0
  538. package/lib/test/vitest.js.map +1 -1
  539. package/lib/upstash/redis.d.ts +1 -2
  540. package/lib/upstash/redis.d.ts.map +1 -1
  541. package/lib/upstash/redis.js.map +1 -1
  542. package/lib/util/api/client/client.gen.d.ts +3 -0
  543. package/lib/util/api/client/client.gen.d.ts.map +1 -0
  544. package/lib/util/api/client/client.gen.js +205 -0
  545. package/lib/util/api/client/client.gen.js.map +1 -0
  546. package/lib/util/api/client/index.d.ts +8 -0
  547. package/lib/util/api/client/index.d.ts.map +1 -0
  548. package/lib/util/api/client/index.js +6 -0
  549. package/lib/util/api/client/index.js.map +1 -0
  550. package/lib/util/api/client/types.gen.d.ts +125 -0
  551. package/lib/util/api/client/types.gen.d.ts.map +1 -0
  552. package/lib/util/api/client/types.gen.js +2 -0
  553. package/lib/util/api/client/types.gen.js.map +1 -0
  554. package/lib/util/api/client/utils.gen.d.ts +34 -0
  555. package/lib/util/api/client/utils.gen.d.ts.map +1 -0
  556. package/lib/util/api/client/utils.gen.js +231 -0
  557. package/lib/util/api/client/utils.gen.js.map +1 -0
  558. package/lib/util/api/core/auth.gen.d.ts +19 -0
  559. package/lib/util/api/core/auth.gen.d.ts.map +1 -0
  560. package/lib/util/api/core/auth.gen.js +15 -0
  561. package/lib/util/api/core/auth.gen.js.map +1 -0
  562. package/lib/util/api/core/bodySerializer.gen.d.ts +18 -0
  563. package/lib/util/api/core/bodySerializer.gen.d.ts.map +1 -0
  564. package/lib/util/api/core/bodySerializer.gen.js +58 -0
  565. package/lib/util/api/core/bodySerializer.gen.js.map +1 -0
  566. package/lib/util/api/core/params.gen.d.ts +34 -0
  567. package/lib/util/api/core/params.gen.d.ts.map +1 -0
  568. package/lib/util/api/core/params.gen.js +89 -0
  569. package/lib/util/api/core/params.gen.js.map +1 -0
  570. package/lib/util/api/core/pathSerializer.gen.d.ts +34 -0
  571. package/lib/util/api/core/pathSerializer.gen.d.ts.map +1 -0
  572. package/lib/util/api/core/pathSerializer.gen.js +115 -0
  573. package/lib/util/api/core/pathSerializer.gen.js.map +1 -0
  574. package/lib/util/api/core/serverSentEvents.gen.d.ts +72 -0
  575. package/lib/util/api/core/serverSentEvents.gen.d.ts.map +1 -0
  576. package/lib/util/api/core/serverSentEvents.gen.js +136 -0
  577. package/lib/util/api/core/serverSentEvents.gen.js.map +1 -0
  578. package/lib/util/api/core/types.gen.d.ts +79 -0
  579. package/lib/util/api/core/types.gen.d.ts.map +1 -0
  580. package/lib/util/api/core/types.gen.js +2 -0
  581. package/lib/util/api/core/types.gen.js.map +1 -0
  582. package/lib/util/api/core/utils.gen.d.ts +20 -0
  583. package/lib/util/api/core/utils.gen.d.ts.map +1 -0
  584. package/lib/util/api/core/utils.gen.js +88 -0
  585. package/lib/util/api/core/utils.gen.js.map +1 -0
  586. package/lib/util/http.d.ts +7 -2
  587. package/lib/util/http.d.ts.map +1 -1
  588. package/lib/util/http.js +29 -11
  589. package/lib/util/http.js.map +1 -1
  590. package/lib/util/lock.d.ts +20 -0
  591. package/lib/util/lock.d.ts.map +1 -0
  592. package/lib/util/lock.js +45 -0
  593. package/lib/util/lock.js.map +1 -0
  594. package/lib/util/memoize.d.ts +6 -0
  595. package/lib/util/memoize.d.ts.map +1 -1
  596. package/lib/util/memoize.js +23 -0
  597. package/lib/util/memoize.js.map +1 -1
  598. package/lib/util/oauth-client.d.ts +71 -0
  599. package/lib/util/oauth-client.d.ts.map +1 -0
  600. package/lib/util/oauth-client.js +188 -0
  601. package/lib/util/oauth-client.js.map +1 -0
  602. package/lib/util/poll.d.ts +33 -0
  603. package/lib/util/poll.d.ts.map +1 -0
  604. package/lib/util/poll.js +19 -0
  605. package/lib/util/poll.js.map +1 -0
  606. package/lib/vercel/project-domain.d.ts +1 -2
  607. package/lib/vercel/project-domain.d.ts.map +1 -1
  608. package/lib/vercel/project-domain.js.map +1 -1
  609. package/lib/vercel/project.d.ts +1 -2
  610. package/lib/vercel/project.d.ts.map +1 -1
  611. package/lib/vercel/project.js +2 -2
  612. package/lib/vercel/project.js.map +1 -1
  613. package/package.json +5 -1
  614. package/src/apply.ts +32 -29
  615. package/src/auth.ts +253 -0
  616. package/src/aws/bucket.ts +3 -3
  617. package/src/aws/control/properties.ts +554 -39
  618. package/src/aws/control/resource.ts +62 -6
  619. package/src/aws/control/types.ts +85281 -84914
  620. package/src/aws/control/update-types.ts +12917 -0
  621. package/src/aws/ec2/internet-gateway-attachment.ts +5 -6
  622. package/src/aws/ec2/internet-gateway.ts +3 -5
  623. package/src/aws/ec2/nat-gateway.ts +3 -5
  624. package/src/aws/ec2/route-table-association.ts +3 -5
  625. package/src/aws/ec2/route-table.ts +3 -5
  626. package/src/aws/ec2/route.ts +3 -3
  627. package/src/aws/ec2/security-group-rule.ts +3 -5
  628. package/src/aws/ec2/security-group.ts +3 -5
  629. package/src/aws/ec2/subnet.ts +3 -3
  630. package/src/aws/ec2/vpc.ts +3 -3
  631. package/src/aws/function.ts +3 -3
  632. package/src/aws/oidc/oidc-provider.ts +3 -5
  633. package/src/aws/policy-attachment.ts +2 -4
  634. package/src/aws/policy.ts +5 -5
  635. package/src/aws/queue.ts +5 -5
  636. package/src/aws/role.ts +3 -3
  637. package/src/aws/ses.ts +3 -3
  638. package/src/aws/ssm-parameter.ts +3 -3
  639. package/src/aws/table.ts +3 -3
  640. package/src/cloudflare/account-api-token.ts +3 -4
  641. package/src/cloudflare/ai-gateway.ts +3 -5
  642. package/src/cloudflare/api-gateway-operation.ts +3 -4
  643. package/src/cloudflare/api-schema.ts +25 -26
  644. package/src/cloudflare/api-shield.ts +3 -4
  645. package/src/cloudflare/api.ts +121 -57
  646. package/src/cloudflare/assets.ts +95 -136
  647. package/src/cloudflare/astro/astro.ts +8 -3
  648. package/src/cloudflare/auth.ts +160 -95
  649. package/src/cloudflare/bound.ts +1 -1
  650. package/src/cloudflare/bucket-object.ts +117 -0
  651. package/src/cloudflare/bucket.ts +452 -55
  652. package/src/cloudflare/bundle/plugin-wasm.ts +5 -5
  653. package/src/cloudflare/certificate-pack.ts +5 -6
  654. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  655. package/src/cloudflare/container.ts +9 -11
  656. package/src/cloudflare/custom-domain.ts +3 -5
  657. package/src/cloudflare/d1-database.ts +33 -34
  658. package/src/cloudflare/dispatch-namespace.ts +5 -6
  659. package/src/cloudflare/dns-records.ts +5 -5
  660. package/src/cloudflare/email-address.ts +7 -7
  661. package/src/cloudflare/email-catch-all.ts +6 -6
  662. package/src/cloudflare/email-routing.ts +5 -5
  663. package/src/cloudflare/email-rule.ts +5 -5
  664. package/src/cloudflare/hyperdrive.ts +35 -36
  665. package/src/cloudflare/index.ts +1 -0
  666. package/src/cloudflare/kv-namespace.ts +31 -32
  667. package/src/cloudflare/miniflare/delete.ts +1 -1
  668. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +2 -7
  669. package/src/cloudflare/miniflare/remote-binding-proxy.ts +16 -4
  670. package/src/cloudflare/next.ts +2 -2
  671. package/src/cloudflare/nuxt/nuxt.ts +8 -3
  672. package/src/cloudflare/permission-groups.ts +4 -6
  673. package/src/cloudflare/pipeline.ts +29 -30
  674. package/src/cloudflare/queue-consumer.ts +5 -7
  675. package/src/cloudflare/queue.ts +42 -43
  676. package/src/cloudflare/react-router/plugin.ts +20 -0
  677. package/src/cloudflare/redirect-rule.ts +5 -5
  678. package/src/cloudflare/route.ts +5 -5
  679. package/src/cloudflare/ruleset.ts +3 -4
  680. package/src/cloudflare/secret.ts +35 -36
  681. package/src/cloudflare/secrets-store.ts +5 -8
  682. package/src/cloudflare/tunnel.ts +5 -7
  683. package/src/cloudflare/user.ts +12 -9
  684. package/src/cloudflare/vectorize-index.ts +8 -12
  685. package/src/cloudflare/vectorize-metadata-index.ts +6 -8
  686. package/src/cloudflare/vite/vite.ts +8 -3
  687. package/src/cloudflare/website.ts +29 -3
  688. package/src/cloudflare/worker-assets.ts +10 -56
  689. package/src/cloudflare/worker-stub.ts +5 -5
  690. package/src/cloudflare/worker-subdomain.ts +6 -7
  691. package/src/cloudflare/worker.ts +91 -91
  692. package/src/cloudflare/wrangler.json.ts +32 -17
  693. package/src/cloudflare/zone.ts +3 -3
  694. package/src/context.ts +9 -7
  695. package/src/destroy.ts +2 -2
  696. package/src/dns/import-dns.ts +3 -5
  697. package/src/docker/container.ts +3 -6
  698. package/src/docker/image.ts +13 -13
  699. package/src/docker/network.ts +3 -4
  700. package/src/docker/remote-image.ts +3 -6
  701. package/src/docker/volume.ts +3 -4
  702. package/src/esbuild/bundle.ts +10 -8
  703. package/src/fs/copy-file.ts +3 -3
  704. package/src/fs/file.ts +3 -3
  705. package/src/fs/folder.ts +3 -3
  706. package/src/github/comment.ts +5 -7
  707. package/src/github/repository-environment.ts +3 -5
  708. package/src/github/repository-webhook.ts +3 -5
  709. package/src/github/secret.ts +3 -5
  710. package/src/llms.cloudflare.txt +2 -2
  711. package/src/neon/api/client.gen.ts +28 -0
  712. package/src/neon/api/sdk.gen.ts +2596 -0
  713. package/src/neon/api/types.gen.ts +8287 -0
  714. package/src/neon/api.ts +51 -147
  715. package/src/neon/branch.ts +279 -0
  716. package/src/neon/index.ts +1 -1
  717. package/src/neon/project.ts +136 -721
  718. package/src/neon/utils.ts +105 -0
  719. package/src/os/exec.ts +3 -3
  720. package/src/planetscale/api/client.gen.ts +28 -2882
  721. package/src/planetscale/api/sdk.gen.ts +3336 -0
  722. package/src/planetscale/api/types.gen.ts +778 -450
  723. package/src/planetscale/api.ts +101 -0
  724. package/src/planetscale/branch.ts +20 -19
  725. package/src/planetscale/database.ts +69 -70
  726. package/src/planetscale/index.ts +1 -1
  727. package/src/planetscale/password.ts +18 -22
  728. package/src/planetscale/role.ts +21 -21
  729. package/src/planetscale/utils.ts +20 -74
  730. package/src/random/random-string.ts +4 -4
  731. package/src/resource.ts +6 -2
  732. package/src/sentry/client-key.ts +3 -5
  733. package/src/sentry/project.ts +3 -5
  734. package/src/sentry/team.ts +3 -3
  735. package/src/serde.ts +50 -0
  736. package/src/state/r2-rest-state-store.ts +15 -57
  737. package/src/stripe/card.ts +3 -3
  738. package/src/stripe/coupon.ts +3 -3
  739. package/src/stripe/customer.ts +3 -3
  740. package/src/stripe/entitlements-feature.ts +3 -5
  741. package/src/stripe/file.ts +3 -3
  742. package/src/stripe/meter.ts +3 -3
  743. package/src/stripe/portal-configuration.ts +3 -5
  744. package/src/stripe/price.ts +3 -3
  745. package/src/stripe/product-feature.ts +3 -5
  746. package/src/stripe/product.ts +3 -3
  747. package/src/stripe/promotion-code.ts +3 -5
  748. package/src/stripe/shipping-rate.ts +3 -5
  749. package/src/stripe/tax-rate.ts +3 -3
  750. package/src/stripe/webhook.ts +3 -5
  751. package/src/test/bun.ts +2 -1
  752. package/src/test/options.ts +6 -0
  753. package/src/test/vitest.ts +1 -0
  754. package/src/upstash/redis.ts +1 -3
  755. package/src/util/api/client/client.gen.ts +268 -0
  756. package/src/util/api/client/index.ts +25 -0
  757. package/src/util/api/client/types.gen.ts +268 -0
  758. package/src/util/api/client/utils.gen.ts +331 -0
  759. package/src/util/api/core/auth.gen.ts +42 -0
  760. package/src/util/api/core/bodySerializer.gen.ts +92 -0
  761. package/src/util/api/core/params.gen.ts +153 -0
  762. package/src/util/api/core/pathSerializer.gen.ts +181 -0
  763. package/src/util/api/core/serverSentEvents.gen.ts +264 -0
  764. package/src/util/api/core/types.gen.ts +118 -0
  765. package/src/util/api/core/utils.gen.ts +143 -0
  766. package/src/util/http.ts +38 -11
  767. package/src/util/lock.ts +48 -0
  768. package/src/util/memoize.ts +26 -0
  769. package/src/util/oauth-client.ts +238 -0
  770. package/src/util/poll.ts +55 -0
  771. package/src/vercel/project-domain.ts +1 -3
  772. package/src/vercel/project.ts +3 -3
  773. package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +2 -2
  774. package/workers/cloudflare-state-store.js +8 -5619
  775. package/workers/dofs-state-store.js +2 -802
  776. package/workers/remote-binding-proxy.js +3 -39
  777. package/workers/remote-binding-proxy.ts +126 -35
  778. package/workers/tunnel-proxy.js +6 -73
  779. package/lib/cloudflare/asset-manifest.d.ts +0 -15
  780. package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
  781. package/lib/cloudflare/asset-manifest.js +0 -1
  782. package/lib/cloudflare/asset-manifest.js.map +0 -1
  783. package/lib/cloudflare/oauth.d.ts +0 -22
  784. package/lib/cloudflare/oauth.d.ts.map +0 -1
  785. package/lib/cloudflare/oauth.js +0 -214
  786. package/lib/cloudflare/oauth.js.map +0 -1
  787. package/lib/neon/api-error.d.ts +0 -31
  788. package/lib/neon/api-error.d.ts.map +0 -1
  789. package/lib/neon/api-error.js +0 -73
  790. package/lib/neon/api-error.js.map +0 -1
  791. package/lib/planetscale/api/index.d.ts +0 -3
  792. package/lib/planetscale/api/index.d.ts.map +0 -1
  793. package/lib/planetscale/api/index.js +0 -4
  794. package/lib/planetscale/api/index.js.map +0 -1
  795. package/lib/util/neverthrow.d.ts +0 -16
  796. package/lib/util/neverthrow.d.ts.map +0 -1
  797. package/lib/util/neverthrow.js +0 -46
  798. package/lib/util/neverthrow.js.map +0 -1
  799. package/src/cloudflare/asset-manifest.ts +0 -16
  800. package/src/cloudflare/oauth.ts +0 -301
  801. package/src/neon/api-error.ts +0 -81
  802. package/src/planetscale/api/index.ts +0 -4
  803. package/src/util/neverthrow.ts +0 -64
@@ -1,9 +1,12 @@
1
+ import * as mf from "miniflare";
1
2
  import { isDeepStrictEqual } from "node:util";
2
3
  import type { Context } from "../context.ts";
3
4
  import { Resource, ResourceKind } from "../resource.ts";
4
5
  import { Scope } from "../scope.ts";
6
+ import { streamToBuffer } from "../serde.ts";
7
+ import { isRetryableError } from "../state/r2-rest-state-store.ts";
5
8
  import { withExponentialBackoff } from "../util/retry.ts";
6
- import { CloudflareApiError } from "./api-error.ts";
9
+ import { CloudflareApiError, handleApiError } from "./api-error.ts";
7
10
  import {
8
11
  extractCloudflareResult,
9
12
  type CloudflareApiErrorPayload,
@@ -14,6 +17,7 @@ import {
14
17
  type CloudflareApiOptions,
15
18
  } from "./api.ts";
16
19
  import { deleteMiniflareBinding } from "./miniflare/delete.ts";
20
+ import { getDefaultPersistPath } from "./miniflare/paths.ts";
17
21
 
18
22
  export type R2BucketJurisdiction = "default" | "eu" | "fedramp";
19
23
 
@@ -88,6 +92,11 @@ export interface BucketProps extends CloudflareApiOptions {
88
92
  */
89
93
  lock?: R2BucketLockRule[];
90
94
 
95
+ /**
96
+ * Enable data catalog for bucket
97
+ */
98
+ dataCatalog?: boolean;
99
+
91
100
  /**
92
101
  * Whether to emulate the bucket locally when Alchemy is running in watch mode.
93
102
  */
@@ -239,55 +248,125 @@ interface R2BucketCORSRule {
239
248
  maxAgeSeconds?: number;
240
249
  }
241
250
 
251
+ export type R2ObjectMetadata = {
252
+ key: string;
253
+ etag: string;
254
+ uploaded: Date;
255
+ size: number;
256
+ };
257
+
258
+ export type R2ObjectContent = R2ObjectMetadata & {
259
+ arrayBuffer(): Promise<ArrayBuffer>;
260
+ bytes(): Promise<Uint8Array>;
261
+ text(): Promise<string>;
262
+ json<T>(): Promise<T>;
263
+ blob(): Promise<Blob>;
264
+ };
265
+
266
+ export type PutR2ObjectResponse = {
267
+ key: string;
268
+ etag: string;
269
+ uploaded: Date;
270
+ version: string;
271
+ size: number;
272
+ };
273
+
274
+ export type R2Objects = {
275
+ objects: R2ObjectMetadata[];
276
+ } & (
277
+ | {
278
+ truncated: true;
279
+ cursor: string;
280
+ }
281
+ | {
282
+ truncated: false;
283
+ cursor?: never;
284
+ }
285
+ );
286
+
287
+ export type R2Bucket = _R2Bucket & {
288
+ head(key: string): Promise<R2ObjectMetadata | null>;
289
+ get(key: string): Promise<R2ObjectContent | null>;
290
+ put(
291
+ key: string,
292
+ value:
293
+ | ReadableStream
294
+ | ArrayBuffer
295
+ | ArrayBufferView
296
+ | string
297
+ | null
298
+ | Blob,
299
+ ): Promise<PutR2ObjectResponse>;
300
+ delete(key: string): Promise<Response>;
301
+ list(options?: R2ListOptions): Promise<R2Objects>;
302
+ };
303
+
242
304
  /**
243
305
  * Output returned after R2 Bucket creation/update
244
306
  */
245
- export type R2Bucket = Resource<"cloudflare::R2Bucket"> &
246
- Omit<BucketProps, "delete" | "dev"> & {
247
- /**
248
- * Resource type identifier
249
- */
250
- type: "r2_bucket";
307
+ type _R2Bucket = Omit<BucketProps, "delete" | "dev"> & {
308
+ /**
309
+ * Resource type identifier
310
+ */
311
+ type: "r2_bucket";
251
312
 
313
+ /**
314
+ * The name of the bucket
315
+ */
316
+ name: string;
317
+
318
+ /**
319
+ * Location of the bucket
320
+ */
321
+ location: string;
322
+
323
+ /**
324
+ * Time at which the bucket was created
325
+ */
326
+ creationDate: Date;
327
+
328
+ /**
329
+ * The `r2.dev` subdomain for the bucket, if `allowPublicAccess` is true
330
+ */
331
+ domain: string | undefined;
332
+
333
+ /**
334
+ * Development mode properties
335
+ * @internal
336
+ */
337
+ dev: {
252
338
  /**
253
- * The name of the bucket
339
+ * The ID of the bucket in development mode
254
340
  */
255
- name: string;
341
+ id: string;
256
342
 
257
343
  /**
258
- * Location of the bucket
344
+ * Whether the bucket is running remotely
259
345
  */
260
- location: string;
346
+ remote: boolean;
347
+ };
261
348
 
349
+ /**
350
+ * Data catalog for the bucket
351
+ */
352
+ catalog?: {
262
353
  /**
263
- * Time at which the bucket was created
354
+ * ID of the data catalog
264
355
  */
265
- creationDate: Date;
266
-
356
+ id: string;
267
357
  /**
268
- * The `r2.dev` subdomain for the bucket, if `allowPublicAccess` is true
358
+ * Name of the data catalog
269
359
  */
270
- domain: string | undefined;
271
-
360
+ name: string;
272
361
  /**
273
- * Development mode properties
274
- * @internal
362
+ * Host of the data catalog
275
363
  */
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
- };
364
+ host: string;
287
365
  };
366
+ };
288
367
 
289
- export function isBucket(resource: Resource): resource is R2Bucket {
290
- return resource[ResourceKind] === "cloudflare::R2Bucket";
368
+ export function isBucket(resource: any): resource is R2Bucket {
369
+ return resource?.[ResourceKind] === "cloudflare::R2Bucket";
291
370
  }
292
371
 
293
372
  /**
@@ -338,24 +417,154 @@ export async function R2Bucket(
338
417
  id: string,
339
418
  props: BucketProps = {},
340
419
  ): Promise<R2Bucket> {
341
- return await _R2Bucket(id, {
420
+ const scope = Scope.current;
421
+ const isLocal = scope.local && props.dev?.remote !== true;
422
+ const api = await createCloudflareApi(props);
423
+ const bucket = await _R2Bucket(id, {
342
424
  ...props,
343
425
  dev: {
344
426
  ...(props.dev ?? {}),
345
427
  force: Scope.current.local,
346
428
  },
347
429
  });
430
+
431
+ let _miniflare: mf.Miniflare | undefined;
432
+ const miniflare = () => {
433
+ if (_miniflare) {
434
+ return _miniflare;
435
+ }
436
+ _miniflare = new mf.Miniflare({
437
+ script: "",
438
+ modules: true,
439
+ defaultPersistRoot: getDefaultPersistPath(scope.rootDir),
440
+ r2Buckets: [bucket.dev.id],
441
+ log: process.env.DEBUG ? new mf.Log(mf.LogLevel.DEBUG) : undefined,
442
+ });
443
+ scope.onCleanup(async () => _miniflare?.dispose());
444
+ return _miniflare;
445
+ };
446
+ const localBucket = () => miniflare().getR2Bucket(bucket.dev.id);
447
+
448
+ return {
449
+ ...bucket,
450
+ head: async (key: string) => {
451
+ if (isLocal) {
452
+ return (await localBucket()).head(key);
453
+ }
454
+ return headObject(api, {
455
+ bucketName: bucket.name,
456
+ key,
457
+ });
458
+ },
459
+ get: async (key: string) => {
460
+ if (isLocal) {
461
+ const result = await (await localBucket()).get(key);
462
+ if (result) {
463
+ // cast because workers vs node built-ins
464
+ return result as unknown as R2ObjectContent;
465
+ }
466
+ return null;
467
+ }
468
+ const response = await getObject(api, {
469
+ bucketName: bucket.name,
470
+ key,
471
+ });
472
+ if (response.ok) {
473
+ return parseR2Object(key, response);
474
+ } else if (response.status === 404) {
475
+ return null;
476
+ } else {
477
+ throw await handleApiError(response, "get", "object", key);
478
+ }
479
+ },
480
+ list: async (options?: R2ListOptions): Promise<R2Objects> => {
481
+ if (isLocal) {
482
+ return (await localBucket()).list(options);
483
+ }
484
+ return listObjects(api, bucket.name, {
485
+ ...options,
486
+ jurisdiction: bucket.jurisdiction,
487
+ });
488
+ },
489
+ put: async (
490
+ key: string,
491
+ value: PutObjectObject,
492
+ ): Promise<PutR2ObjectResponse> => {
493
+ if (isLocal) {
494
+ // @ts-expect-error - node built-ins vs cloudflare built-ins
495
+ return await (await localBucket()).put(
496
+ key,
497
+ typeof value === "string"
498
+ ? value
499
+ : Buffer.isBuffer(value) ||
500
+ value instanceof Uint8Array ||
501
+ value instanceof ArrayBuffer
502
+ ? new Uint8Array(value)
503
+ : value instanceof Blob
504
+ ? new Uint8Array(await value.arrayBuffer())
505
+ : value instanceof ReadableStream
506
+ ? new Uint8Array(await streamToBuffer(value))
507
+ : value,
508
+ );
509
+ }
510
+ const response = await putObject(api, {
511
+ bucketName: bucket.name,
512
+ key: key,
513
+ object: value,
514
+ });
515
+ const body = (await response.json()) as {
516
+ result: {
517
+ key: string;
518
+ etag: string;
519
+ uploaded: string;
520
+ version: string;
521
+ size: string;
522
+ };
523
+ };
524
+ return {
525
+ key: body.result.key,
526
+ etag: body.result.etag,
527
+ uploaded: new Date(body.result.uploaded),
528
+ version: body.result.version,
529
+ size: Number(body.result.size),
530
+ };
531
+ },
532
+ delete: async (key: string) => {
533
+ if (isLocal) {
534
+ await (await localBucket()).delete(key);
535
+ }
536
+ return deleteObject(api, {
537
+ bucketName: bucket.name,
538
+ key: key,
539
+ });
540
+ },
541
+ };
348
542
  }
349
543
 
544
+ const parseR2Object = (key: string, response: Response): R2ObjectContent => ({
545
+ etag: response.headers.get("ETag")!,
546
+ uploaded: parseDate(response.headers),
547
+ key,
548
+ size: Number(response.headers.get("Content-Length")),
549
+ arrayBuffer: () => response.arrayBuffer(),
550
+ bytes: () => response.bytes(),
551
+ text: () => response.text(),
552
+ json: () => response.json(),
553
+ blob: () => response.blob(),
554
+ });
555
+
556
+ const parseDate = (headers: Headers) =>
557
+ new Date(headers.get("Last-Modified") ?? headers.get("Date")!);
558
+
350
559
  const _R2Bucket = Resource(
351
560
  "cloudflare::R2Bucket",
352
561
  async function (
353
- this: Context<R2Bucket>,
562
+ this: Context<_R2Bucket>,
354
563
  id: string,
355
564
  props: BucketProps = {},
356
- ): Promise<R2Bucket> {
565
+ ): Promise<_R2Bucket> {
357
566
  const bucketName =
358
- props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
567
+ props.name ?? (this.output?.name || this.scope.createPhysicalName(id));
359
568
 
360
569
  if (this.phase === "update" && this.output?.name !== bucketName) {
361
570
  this.replace();
@@ -369,7 +578,7 @@ const _R2Bucket = Resource(
369
578
  const adopt = props.adopt ?? this.scope.adopt;
370
579
 
371
580
  if (this.scope.local && !props.dev?.remote) {
372
- return this({
581
+ return {
373
582
  name: this.output?.name ?? "",
374
583
  location: this.output?.location ?? "",
375
584
  creationDate: this.output?.creationDate ?? new Date(),
@@ -380,13 +589,16 @@ const _R2Bucket = Resource(
380
589
  accountId: this.output?.accountId ?? "",
381
590
  cors: props.cors,
382
591
  dev,
383
- });
592
+ };
384
593
  }
385
594
 
386
595
  const api = await createCloudflareApi(props);
387
596
 
388
597
  if (this.phase === "delete") {
389
598
  if (props.delete !== false) {
599
+ if (this.output?.catalog) {
600
+ await disableDataCatalog(api, bucketName);
601
+ }
390
602
  if (this.output.dev?.id) {
391
603
  await deleteMiniflareBinding(this.scope, "r2", this.output.dev.id);
392
604
  }
@@ -426,7 +638,17 @@ const _R2Bucket = Resource(
426
638
  if (props.lock?.length) {
427
639
  await putBucketLockRules(api, bucketName, props);
428
640
  }
429
- return this({
641
+ let dataCatalog:
642
+ | {
643
+ id: string;
644
+ name: string;
645
+ host: string;
646
+ }
647
+ | undefined;
648
+ if (props.dataCatalog) {
649
+ dataCatalog = await enableDataCatalog(api, bucketName);
650
+ }
651
+ return {
430
652
  name: bucketName,
431
653
  location: bucket.location,
432
654
  creationDate: new Date(bucket.creation_date),
@@ -439,13 +661,21 @@ const _R2Bucket = Resource(
439
661
  lock: props.lock,
440
662
  cors: props.cors,
441
663
  dev,
442
- });
664
+ catalog: dataCatalog,
665
+ };
443
666
  } else {
444
667
  if (bucketName !== this.output.name) {
445
668
  throw new Error(
446
669
  `Cannot update R2Bucket name after creation. Bucket name is immutable. Before: ${this.output.name}, After: ${bucketName}`,
447
670
  );
448
671
  }
672
+ if (this.output?.catalog && !props.dataCatalog) {
673
+ await disableDataCatalog(api, bucketName);
674
+ this.output.catalog = undefined;
675
+ }
676
+ if (!this.output.catalog && props.dataCatalog) {
677
+ this.output.catalog = await enableDataCatalog(api, bucketName);
678
+ }
449
679
  let domain = this.output.domain;
450
680
  if (!!domain !== allowPublicAccess) {
451
681
  domain = await putManagedDomain(
@@ -466,7 +696,7 @@ const _R2Bucket = Resource(
466
696
  if (!isDeepStrictEqual(this.output.lock ?? [], props.lock ?? [])) {
467
697
  await putBucketLockRules(api, bucketName, props);
468
698
  }
469
- return this({
699
+ return {
470
700
  ...this.output,
471
701
  allowPublicAccess,
472
702
  dev,
@@ -474,7 +704,7 @@ const _R2Bucket = Resource(
474
704
  lifecycle: props.lifecycle,
475
705
  lock: props.lock,
476
706
  domain,
477
- });
707
+ };
478
708
  }
479
709
  },
480
710
  );
@@ -613,17 +843,20 @@ async function emptyBucket(
613
843
  ) {
614
844
  let cursor: string | undefined;
615
845
  while (true) {
616
- const result = await listObjects(api, bucketName, props, cursor);
617
- if (result.keys.length) {
846
+ const result = await listObjects(api, bucketName, {
847
+ jurisdiction: props.jurisdiction,
848
+ cursor,
849
+ });
850
+ if (result.objects.length) {
618
851
  // Another undocumented API! But it lets us delete multiple objects at once instead of one by one.
619
852
  await extractCloudflareResult(
620
- `delete ${result.keys.length} objects from bucket "${bucketName}"`,
853
+ `delete ${result.objects.length} objects from bucket "${bucketName}"`,
621
854
  api.delete(
622
855
  `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects`,
623
856
  {
624
857
  headers: withJurisdiction(props),
625
858
  method: "DELETE",
626
- body: JSON.stringify(result.keys),
859
+ body: JSON.stringify(result.objects.map((object) => object.key)),
627
860
  },
628
861
  ),
629
862
  );
@@ -642,21 +875,39 @@ async function emptyBucket(
642
875
  export async function listObjects(
643
876
  api: CloudflareApi,
644
877
  bucketName: string,
645
- props: { jurisdiction?: string },
646
- cursor?: string,
647
- ) {
878
+ props: R2ListOptions & {
879
+ jurisdiction?: string;
880
+ },
881
+ ): Promise<R2Objects> {
648
882
  const params = new URLSearchParams({
649
883
  per_page: "1000",
650
884
  });
651
- if (cursor) {
652
- params.set("cursor", cursor);
885
+ if (props.cursor) {
886
+ params.set("cursor", props.cursor);
887
+ }
888
+ if (props.delimiter) {
889
+ params.set("delimiter", props.delimiter);
890
+ }
891
+ if (props.prefix) {
892
+ params.set("prefix", props.prefix);
893
+ }
894
+ if (props.startAfter) {
895
+ params.set("start_after", props.startAfter);
896
+ }
897
+ if (props.limit) {
898
+ params.set("limit", props.limit.toString());
653
899
  }
654
900
  const response = await api.get(
655
901
  `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects?${params.toString()}`,
656
902
  { headers: withJurisdiction(props) },
657
903
  );
658
904
  const json: {
659
- result: { key: string }[];
905
+ result: {
906
+ key: string;
907
+ etag: string;
908
+ last_modified: string;
909
+ size: number;
910
+ }[];
660
911
  result_info?: {
661
912
  cursor: string;
662
913
  is_truncated: boolean;
@@ -668,7 +919,11 @@ export async function listObjects(
668
919
  if (!json.success) {
669
920
  // 10006 indicates that the bucket does not exist, so there are no objects to list
670
921
  if (json.errors.some((e) => e.code === 10006)) {
671
- return { keys: [], cursor: undefined };
922
+ return {
923
+ objects: [],
924
+ cursor: undefined,
925
+ truncated: false,
926
+ };
672
927
  }
673
928
  throw new CloudflareApiError(
674
929
  `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 +932,17 @@ export async function listObjects(
677
932
  );
678
933
  }
679
934
  return {
680
- keys: json.result.map((object) => object.key),
935
+ // keys: json.result.map((object) => object.key),
936
+ objects: json.result.map((object) => ({
937
+ key: object.key,
938
+ etag: object.etag,
939
+ uploaded: new Date(object.last_modified),
940
+ size: object.size,
941
+ })),
942
+ delimitedPrefixes: [],
681
943
  cursor: json.result_info?.cursor,
682
- };
944
+ truncated: json.result_info?.is_truncated ?? false,
945
+ } as R2Objects;
683
946
  }
684
947
 
685
948
  /**
@@ -869,3 +1132,137 @@ export async function getBucketLockRules(
869
1132
  : (json.result?.rules ?? []);
870
1133
  return rules as R2BucketLockRule[];
871
1134
  }
1135
+
1136
+ export async function headObject(
1137
+ api: CloudflareApi,
1138
+ { bucketName, key }: { bucketName: string; key: string },
1139
+ ): Promise<R2ObjectMetadata | null> {
1140
+ const response = await withRetries(
1141
+ async () =>
1142
+ await api.get(
1143
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1144
+ ),
1145
+ );
1146
+ // for some reason HEAD returns 404 for keys that exist, this is the best we can do without using S3 API
1147
+ response.body?.cancel();
1148
+ if (response.status === 404) {
1149
+ return null;
1150
+ } else if (!response.ok) {
1151
+ throw await handleApiError(response, "head", "object", key);
1152
+ }
1153
+ return {
1154
+ key,
1155
+ etag: response.headers.get("ETag")?.replace(/"/g, "")!,
1156
+ uploaded: parseDate(response.headers),
1157
+ size: Number(response.headers.get("Content-Length")),
1158
+ };
1159
+ }
1160
+
1161
+ const withRetries = (f: () => Promise<Response>) => {
1162
+ return withExponentialBackoff(f, isRetryableError, 5, 1000);
1163
+ };
1164
+
1165
+ export async function getObject(
1166
+ api: CloudflareApi,
1167
+ { bucketName, key }: { bucketName: string; key: string },
1168
+ ) {
1169
+ return await withRetries(async () => {
1170
+ const response = await api.get(
1171
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1172
+ {
1173
+ headers: {
1174
+ "Content-Type": "application/octet-stream",
1175
+ Accept: "application/octet-stream",
1176
+ },
1177
+ },
1178
+ );
1179
+ if (!response.ok && response.status !== 404) {
1180
+ throw await handleApiError(response, "get", "object", key);
1181
+ }
1182
+ return response;
1183
+ });
1184
+ }
1185
+
1186
+ export type PutObjectObject =
1187
+ | ReadableStream
1188
+ | ArrayBuffer
1189
+ | ArrayBufferView
1190
+ | Uint8Array
1191
+ | string
1192
+ | Buffer
1193
+ | Blob;
1194
+
1195
+ export async function putObject(
1196
+ api: CloudflareApi,
1197
+ {
1198
+ bucketName,
1199
+ key,
1200
+ object,
1201
+ }: {
1202
+ bucketName: string;
1203
+ key: string;
1204
+ object: PutObjectObject;
1205
+ },
1206
+ ): Promise<Response> {
1207
+ // Using withExponentialBackoff for reliability
1208
+ return await withRetries(async () => {
1209
+ const response = await api.put(
1210
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1211
+ object,
1212
+ {
1213
+ headers: {
1214
+ "Content-Type": "application/octet-stream",
1215
+ },
1216
+ },
1217
+ );
1218
+ if (!response.ok) {
1219
+ await handleApiError(response, "put", "object", key);
1220
+ }
1221
+ return response;
1222
+ });
1223
+ }
1224
+
1225
+ export async function deleteObject(
1226
+ api: CloudflareApi,
1227
+ { bucketName, key }: { bucketName: string; key: string },
1228
+ ) {
1229
+ return await withRetries(async () => {
1230
+ const response = await api.delete(
1231
+ `/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
1232
+ );
1233
+
1234
+ if (!response.ok && response.status !== 404) {
1235
+ await handleApiError(response, "delete", "object", key);
1236
+ }
1237
+
1238
+ return response;
1239
+ });
1240
+ }
1241
+
1242
+ export async function enableDataCatalog(
1243
+ api: CloudflareApi,
1244
+ bucketName: string,
1245
+ ) {
1246
+ const response = await extractCloudflareResult<{
1247
+ id: string;
1248
+ name: string;
1249
+ }>(
1250
+ `enable data catalog for bucket "${bucketName}"`,
1251
+ api.post(`/accounts/${api.accountId}/r2-catalog/${bucketName}/enable`, {}),
1252
+ );
1253
+ return {
1254
+ id: response.id,
1255
+ name: response.name,
1256
+ host: `https://catalog.cloudflarestorage.com/${response.name.replace("_", "/")}`,
1257
+ };
1258
+ }
1259
+
1260
+ export async function disableDataCatalog(
1261
+ api: CloudflareApi,
1262
+ bucketName: string,
1263
+ ) {
1264
+ await api.post(
1265
+ `/accounts/${api.accountId}/r2-catalog/${bucketName}/disable`,
1266
+ {},
1267
+ );
1268
+ }
@@ -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,