alchemy 0.25.0 → 0.26.1

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 (499) hide show
  1. package/README.md +7 -0
  2. package/lib/ai/astro-file.d.ts.map +1 -1
  3. package/lib/ai/astro-file.js +2 -1
  4. package/lib/ai/astro-file.js.map +1 -1
  5. package/lib/ai/client.d.ts.map +1 -1
  6. package/lib/ai/client.js +3 -2
  7. package/lib/ai/client.js.map +1 -1
  8. package/lib/alchemy.d.ts +7 -0
  9. package/lib/alchemy.d.ts.map +1 -1
  10. package/lib/alchemy.js +19 -3
  11. package/lib/alchemy.js.map +1 -1
  12. package/lib/apply.d.ts.map +1 -1
  13. package/lib/apply.js +63 -5
  14. package/lib/apply.js.map +1 -1
  15. package/lib/aws/control/client.js +4 -3
  16. package/lib/aws/control/client.js.map +1 -1
  17. package/lib/aws/control/properties.d.ts +6 -0
  18. package/lib/aws/control/properties.d.ts.map +1 -1
  19. package/lib/aws/control/properties.js +48 -0
  20. package/lib/aws/control/properties.js.map +1 -1
  21. package/lib/aws/control/resource.d.ts.map +1 -1
  22. package/lib/aws/control/resource.js +3 -2
  23. package/lib/aws/control/resource.js.map +1 -1
  24. package/lib/aws/control/types.d.ts +3969 -4862
  25. package/lib/aws/control/types.d.ts.map +1 -1
  26. package/lib/aws/control/types.js.map +1 -1
  27. package/lib/aws/function.d.ts.map +1 -1
  28. package/lib/aws/function.js +9 -8
  29. package/lib/aws/function.js.map +1 -1
  30. package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
  31. package/lib/aws/oidc/oidc-provider.js +3 -2
  32. package/lib/aws/oidc/oidc-provider.js.map +1 -1
  33. package/lib/aws/queue.d.ts.map +1 -1
  34. package/lib/aws/queue.js +3 -2
  35. package/lib/aws/queue.js.map +1 -1
  36. package/lib/aws/role.d.ts.map +1 -1
  37. package/lib/aws/role.js +3 -1
  38. package/lib/aws/role.js.map +1 -1
  39. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  40. package/lib/aws/ssm-parameter.js +2 -1
  41. package/lib/aws/ssm-parameter.js.map +1 -1
  42. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  43. package/lib/cloudflare/account-api-token.js +3 -2
  44. package/lib/cloudflare/account-api-token.js.map +1 -1
  45. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  46. package/lib/cloudflare/ai-gateway.js +4 -3
  47. package/lib/cloudflare/ai-gateway.js.map +1 -1
  48. package/lib/cloudflare/api-error.d.ts +0 -9
  49. package/lib/cloudflare/api-error.d.ts.map +1 -1
  50. package/lib/cloudflare/api-error.js +24 -0
  51. package/lib/cloudflare/api-error.js.map +1 -1
  52. package/lib/cloudflare/api.d.ts.map +1 -1
  53. package/lib/cloudflare/api.js +5 -4
  54. package/lib/cloudflare/api.js.map +1 -1
  55. package/lib/cloudflare/assets.d.ts.map +1 -1
  56. package/lib/cloudflare/assets.js +26 -6
  57. package/lib/cloudflare/assets.js.map +1 -1
  58. package/lib/cloudflare/astro.d.ts +63 -0
  59. package/lib/cloudflare/astro.d.ts.map +1 -0
  60. package/lib/cloudflare/astro.js +133 -0
  61. package/lib/cloudflare/astro.js.map +1 -0
  62. package/lib/cloudflare/auth.d.ts.map +1 -1
  63. package/lib/cloudflare/auth.js +3 -2
  64. package/lib/cloudflare/auth.js.map +1 -1
  65. package/lib/cloudflare/bindings.d.ts +24 -2
  66. package/lib/cloudflare/bindings.d.ts.map +1 -1
  67. package/lib/cloudflare/bindings.js.map +1 -1
  68. package/lib/cloudflare/bound.d.ts +10 -1
  69. package/lib/cloudflare/bound.d.ts.map +1 -1
  70. package/lib/cloudflare/bucket.d.ts.map +1 -1
  71. package/lib/cloudflare/bucket.js +12 -8
  72. package/lib/cloudflare/bucket.js.map +1 -1
  73. package/lib/cloudflare/bundle/bundle-worker.d.ts.map +1 -1
  74. package/lib/cloudflare/bundle/bundle-worker.js +2 -1
  75. package/lib/cloudflare/bundle/bundle-worker.js.map +1 -1
  76. package/lib/cloudflare/bundle/nodejs-compat-mode.d.ts.map +1 -1
  77. package/lib/cloudflare/bundle/nodejs-compat-mode.js +2 -1
  78. package/lib/cloudflare/bundle/nodejs-compat-mode.js.map +1 -1
  79. package/lib/cloudflare/custom-domain.d.ts.map +1 -1
  80. package/lib/cloudflare/custom-domain.js +10 -9
  81. package/lib/cloudflare/custom-domain.js.map +1 -1
  82. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  83. package/lib/cloudflare/d1-database.js +11 -10
  84. package/lib/cloudflare/d1-database.js.map +1 -1
  85. package/lib/cloudflare/d1-export.d.ts.map +1 -1
  86. package/lib/cloudflare/d1-export.js +2 -1
  87. package/lib/cloudflare/d1-export.js.map +1 -1
  88. package/lib/cloudflare/d1-import.d.ts.map +1 -1
  89. package/lib/cloudflare/d1-import.js +2 -1
  90. package/lib/cloudflare/d1-import.js.map +1 -1
  91. package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
  92. package/lib/cloudflare/d1-migrations.js +2 -1
  93. package/lib/cloudflare/d1-migrations.js.map +1 -1
  94. package/lib/cloudflare/dispatch-namespace.d.ts +94 -0
  95. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -0
  96. package/lib/cloudflare/dispatch-namespace.js +143 -0
  97. package/lib/cloudflare/dispatch-namespace.js.map +1 -0
  98. package/lib/cloudflare/dns-records.d.ts.map +1 -1
  99. package/lib/cloudflare/dns-records.js +5 -4
  100. package/lib/cloudflare/dns-records.js.map +1 -1
  101. package/lib/cloudflare/do-state-store/worker.d.ts.map +1 -1
  102. package/lib/cloudflare/do-state-store/worker.js +4 -0
  103. package/lib/cloudflare/do-state-store/worker.js.map +1 -1
  104. package/lib/cloudflare/email-address.d.ts +79 -0
  105. package/lib/cloudflare/email-address.d.ts.map +1 -0
  106. package/lib/cloudflare/email-address.js +112 -0
  107. package/lib/cloudflare/email-address.js.map +1 -0
  108. package/lib/cloudflare/email-catch-all.d.ts +123 -0
  109. package/lib/cloudflare/email-catch-all.d.ts.map +1 -0
  110. package/lib/cloudflare/email-catch-all.js +124 -0
  111. package/lib/cloudflare/email-catch-all.js.map +1 -0
  112. package/lib/cloudflare/email-routing.d.ts +89 -0
  113. package/lib/cloudflare/email-routing.d.ts.map +1 -0
  114. package/lib/cloudflare/email-routing.js +120 -0
  115. package/lib/cloudflare/email-routing.js.map +1 -0
  116. package/lib/cloudflare/email-rule.d.ts +196 -0
  117. package/lib/cloudflare/email-rule.d.ts.map +1 -0
  118. package/lib/cloudflare/email-rule.js +153 -0
  119. package/lib/cloudflare/email-rule.js.map +1 -0
  120. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  121. package/lib/cloudflare/hyperdrive.js +5 -4
  122. package/lib/cloudflare/hyperdrive.js.map +1 -1
  123. package/lib/cloudflare/images.d.ts +60 -0
  124. package/lib/cloudflare/images.d.ts.map +1 -0
  125. package/lib/cloudflare/images.js +60 -0
  126. package/lib/cloudflare/images.js.map +1 -0
  127. package/lib/cloudflare/index.d.ts +10 -0
  128. package/lib/cloudflare/index.d.ts.map +1 -1
  129. package/lib/cloudflare/index.js +10 -0
  130. package/lib/cloudflare/index.js.map +1 -1
  131. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  132. package/lib/cloudflare/kv-namespace.js +2 -1
  133. package/lib/cloudflare/kv-namespace.js.map +1 -1
  134. package/lib/cloudflare/pipeline.d.ts +7 -0
  135. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  136. package/lib/cloudflare/pipeline.js +28 -2
  137. package/lib/cloudflare/pipeline.js.map +1 -1
  138. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  139. package/lib/cloudflare/queue-consumer.js +2 -1
  140. package/lib/cloudflare/queue-consumer.js.map +1 -1
  141. package/lib/cloudflare/queue.d.ts.map +1 -1
  142. package/lib/cloudflare/queue.js +0 -8
  143. package/lib/cloudflare/queue.js.map +1 -1
  144. package/lib/cloudflare/route.d.ts +26 -1
  145. package/lib/cloudflare/route.d.ts.map +1 -1
  146. package/lib/cloudflare/route.js +84 -16
  147. package/lib/cloudflare/route.js.map +1 -1
  148. package/lib/cloudflare/secret.d.ts +137 -0
  149. package/lib/cloudflare/secret.d.ts.map +1 -0
  150. package/lib/cloudflare/secret.js +122 -0
  151. package/lib/cloudflare/secret.js.map +1 -0
  152. package/lib/cloudflare/secrets-store.d.ts +145 -0
  153. package/lib/cloudflare/secrets-store.d.ts.map +1 -0
  154. package/lib/cloudflare/secrets-store.js +213 -0
  155. package/lib/cloudflare/secrets-store.js.map +1 -0
  156. package/lib/cloudflare/sveltekit.d.ts +49 -0
  157. package/lib/cloudflare/sveltekit.d.ts.map +1 -0
  158. package/lib/cloudflare/sveltekit.js +56 -0
  159. package/lib/cloudflare/sveltekit.js.map +1 -0
  160. package/lib/cloudflare/user.d.ts.map +1 -1
  161. package/lib/cloudflare/user.js +2 -1
  162. package/lib/cloudflare/user.js.map +1 -1
  163. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  164. package/lib/cloudflare/vectorize-index.js +6 -5
  165. package/lib/cloudflare/vectorize-index.js.map +1 -1
  166. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  167. package/lib/cloudflare/vectorize-metadata-index.js +2 -1
  168. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  169. package/lib/cloudflare/website.d.ts.map +1 -1
  170. package/lib/cloudflare/website.js +7 -2
  171. package/lib/cloudflare/website.js.map +1 -1
  172. package/lib/cloudflare/worker-assets.d.ts +18 -0
  173. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  174. package/lib/cloudflare/worker-assets.js +61 -67
  175. package/lib/cloudflare/worker-assets.js.map +1 -1
  176. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  177. package/lib/cloudflare/worker-metadata.js +23 -1
  178. package/lib/cloudflare/worker-metadata.js.map +1 -1
  179. package/lib/cloudflare/worker.d.ts +43 -2
  180. package/lib/cloudflare/worker.d.ts.map +1 -1
  181. package/lib/cloudflare/worker.js +50 -11
  182. package/lib/cloudflare/worker.js.map +1 -1
  183. package/lib/cloudflare/wrangler.json.d.ts +21 -0
  184. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  185. package/lib/cloudflare/wrangler.json.js +33 -0
  186. package/lib/cloudflare/wrangler.json.js.map +1 -1
  187. package/lib/cloudflare/zone.d.ts.map +1 -1
  188. package/lib/cloudflare/zone.js +4 -3
  189. package/lib/cloudflare/zone.js.map +1 -1
  190. package/lib/destroy.d.ts.map +1 -1
  191. package/lib/destroy.js +30 -13
  192. package/lib/destroy.js.map +1 -1
  193. package/lib/dns/godaddy.d.ts.map +1 -1
  194. package/lib/dns/godaddy.js +3 -2
  195. package/lib/dns/godaddy.js.map +1 -1
  196. package/lib/dns/import-dns.d.ts.map +1 -1
  197. package/lib/dns/import-dns.js +2 -1
  198. package/lib/dns/import-dns.js.map +1 -1
  199. package/lib/esbuild/bundle.d.ts +1 -1
  200. package/lib/esbuild/bundle.d.ts.map +1 -1
  201. package/lib/esbuild/bundle.js +2 -1
  202. package/lib/esbuild/bundle.js.map +1 -1
  203. package/lib/fs/copy-file.d.ts.map +1 -1
  204. package/lib/fs/copy-file.js +2 -1
  205. package/lib/fs/copy-file.js.map +1 -1
  206. package/lib/fs/file.d.ts.map +1 -1
  207. package/lib/fs/file.js +2 -1
  208. package/lib/fs/file.js.map +1 -1
  209. package/lib/github/client.d.ts.map +1 -1
  210. package/lib/github/client.js +11 -10
  211. package/lib/github/client.js.map +1 -1
  212. package/lib/github/repository-environment.d.ts.map +1 -1
  213. package/lib/github/repository-environment.js +5 -4
  214. package/lib/github/repository-environment.js.map +1 -1
  215. package/lib/github/secret.d.ts.map +1 -1
  216. package/lib/github/secret.js +7 -6
  217. package/lib/github/secret.js.map +1 -1
  218. package/lib/index.d.ts +2 -1
  219. package/lib/index.d.ts.map +1 -1
  220. package/lib/index.js +1 -0
  221. package/lib/index.js.map +1 -1
  222. package/lib/neon/project.d.ts.map +1 -1
  223. package/lib/neon/project.js +3 -2
  224. package/lib/neon/project.js.map +1 -1
  225. package/lib/planetscale/api.d.ts +53 -0
  226. package/lib/planetscale/api.d.ts.map +1 -0
  227. package/lib/planetscale/api.js +84 -0
  228. package/lib/planetscale/api.js.map +1 -0
  229. package/lib/planetscale/branch.d.ts +129 -0
  230. package/lib/planetscale/branch.d.ts.map +1 -0
  231. package/lib/planetscale/branch.js +161 -0
  232. package/lib/planetscale/branch.js.map +1 -0
  233. package/lib/planetscale/database.d.ts +143 -0
  234. package/lib/planetscale/database.d.ts.map +1 -0
  235. package/lib/planetscale/database.js +184 -0
  236. package/lib/planetscale/database.js.map +1 -0
  237. package/lib/planetscale/index.d.ts +5 -0
  238. package/lib/planetscale/index.d.ts.map +1 -0
  239. package/lib/planetscale/index.js +5 -0
  240. package/lib/planetscale/index.js.map +1 -0
  241. package/lib/planetscale/utils.d.ts +15 -0
  242. package/lib/planetscale/utils.d.ts.map +1 -0
  243. package/lib/planetscale/utils.js +95 -0
  244. package/lib/planetscale/utils.js.map +1 -0
  245. package/lib/resource.js +7 -1
  246. package/lib/resource.js.map +1 -1
  247. package/lib/runtime/plugin.d.ts.map +1 -1
  248. package/lib/runtime/plugin.js +2 -1
  249. package/lib/runtime/plugin.js.map +1 -1
  250. package/lib/scope.d.ts +13 -2
  251. package/lib/scope.d.ts.map +1 -1
  252. package/lib/scope.js +53 -10
  253. package/lib/scope.js.map +1 -1
  254. package/lib/sentry/client-key.d.ts.map +1 -1
  255. package/lib/sentry/client-key.js +5 -4
  256. package/lib/sentry/client-key.js.map +1 -1
  257. package/lib/sentry/project.d.ts.map +1 -1
  258. package/lib/sentry/project.js +5 -4
  259. package/lib/sentry/project.js.map +1 -1
  260. package/lib/sentry/team.d.ts.map +1 -1
  261. package/lib/sentry/team.js +5 -4
  262. package/lib/sentry/team.js.map +1 -1
  263. package/lib/stripe/card.d.ts.map +1 -1
  264. package/lib/stripe/card.js +2 -1
  265. package/lib/stripe/card.js.map +1 -1
  266. package/lib/stripe/client.d.ts.map +1 -1
  267. package/lib/stripe/client.js +3 -2
  268. package/lib/stripe/client.js.map +1 -1
  269. package/lib/stripe/coupon.d.ts.map +1 -1
  270. package/lib/stripe/coupon.js +2 -1
  271. package/lib/stripe/coupon.js.map +1 -1
  272. package/lib/stripe/customer.d.ts.map +1 -1
  273. package/lib/stripe/customer.js +2 -1
  274. package/lib/stripe/customer.js.map +1 -1
  275. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  276. package/lib/stripe/entitlements-feature.js +2 -1
  277. package/lib/stripe/entitlements-feature.js.map +1 -1
  278. package/lib/stripe/file.d.ts.map +1 -1
  279. package/lib/stripe/file.js +2 -1
  280. package/lib/stripe/file.js.map +1 -1
  281. package/lib/stripe/meter.d.ts.map +1 -1
  282. package/lib/stripe/meter.js +4 -2
  283. package/lib/stripe/meter.js.map +1 -1
  284. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  285. package/lib/stripe/portal-configuration.js +2 -1
  286. package/lib/stripe/portal-configuration.js.map +1 -1
  287. package/lib/stripe/price.d.ts.map +1 -1
  288. package/lib/stripe/price.js +2 -1
  289. package/lib/stripe/price.js.map +1 -1
  290. package/lib/stripe/product-feature.d.ts.map +1 -1
  291. package/lib/stripe/product-feature.js +2 -1
  292. package/lib/stripe/product-feature.js.map +1 -1
  293. package/lib/stripe/product.d.ts.map +1 -1
  294. package/lib/stripe/product.js +2 -1
  295. package/lib/stripe/product.js.map +1 -1
  296. package/lib/stripe/promotion-code.d.ts.map +1 -1
  297. package/lib/stripe/promotion-code.js +2 -1
  298. package/lib/stripe/promotion-code.js.map +1 -1
  299. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  300. package/lib/stripe/shipping-rate.js +2 -1
  301. package/lib/stripe/shipping-rate.js.map +1 -1
  302. package/lib/stripe/tax-rate.d.ts.map +1 -1
  303. package/lib/stripe/tax-rate.js +2 -1
  304. package/lib/stripe/tax-rate.js.map +1 -1
  305. package/lib/stripe/webhook.d.ts.map +1 -1
  306. package/lib/stripe/webhook.js +3 -2
  307. package/lib/stripe/webhook.js.map +1 -1
  308. package/lib/test/bun.d.ts.map +1 -1
  309. package/lib/test/bun.js +6 -1
  310. package/lib/test/bun.js.map +1 -1
  311. package/lib/test/prune.js +7 -1
  312. package/lib/test/prune.js.map +1 -1
  313. package/lib/test/vitest.d.ts.map +1 -1
  314. package/lib/test/vitest.js +10 -3
  315. package/lib/test/vitest.js.map +1 -1
  316. package/lib/upstash/redis.d.ts.map +1 -1
  317. package/lib/upstash/redis.js +2 -1
  318. package/lib/upstash/redis.js.map +1 -1
  319. package/lib/util/async-queue.d.ts +35 -0
  320. package/lib/util/async-queue.d.ts.map +1 -0
  321. package/lib/util/async-queue.js +87 -0
  322. package/lib/util/async-queue.js.map +1 -0
  323. package/lib/util/cli.d.ts +37 -0
  324. package/lib/util/cli.d.ts.map +1 -0
  325. package/lib/util/cli.js +90 -0
  326. package/lib/util/cli.js.map +1 -0
  327. package/lib/util/ignore-matcher.d.ts +94 -0
  328. package/lib/util/ignore-matcher.d.ts.map +1 -0
  329. package/lib/util/ignore-matcher.js +616 -0
  330. package/lib/util/ignore-matcher.js.map +1 -0
  331. package/lib/util/logger.d.ts +3 -0
  332. package/lib/util/logger.d.ts.map +1 -0
  333. package/lib/util/logger.js +15 -0
  334. package/lib/util/logger.js.map +1 -0
  335. package/lib/util/retry.d.ts.map +1 -1
  336. package/lib/util/retry.js +0 -1
  337. package/lib/util/retry.js.map +1 -1
  338. package/lib/util/safe-fetch.d.ts.map +1 -1
  339. package/lib/util/safe-fetch.js +2 -1
  340. package/lib/util/safe-fetch.js.map +1 -1
  341. package/lib/util/telemetry/client.d.ts +32 -0
  342. package/lib/util/telemetry/client.d.ts.map +1 -0
  343. package/lib/util/telemetry/client.js +94 -0
  344. package/lib/util/telemetry/client.js.map +1 -0
  345. package/lib/util/telemetry/constants.d.ts +4 -0
  346. package/lib/util/telemetry/constants.d.ts.map +1 -0
  347. package/lib/util/telemetry/constants.js +8 -0
  348. package/lib/util/telemetry/constants.js.map +1 -0
  349. package/lib/util/telemetry/context.d.ts +15 -0
  350. package/lib/util/telemetry/context.d.ts.map +1 -0
  351. package/lib/util/telemetry/context.js +128 -0
  352. package/lib/util/telemetry/context.js.map +1 -0
  353. package/lib/util/telemetry/index.d.ts +3 -0
  354. package/lib/util/telemetry/index.d.ts.map +1 -0
  355. package/lib/util/telemetry/index.js +3 -0
  356. package/lib/util/telemetry/index.js.map +1 -0
  357. package/lib/util/telemetry/types.d.ts +59 -0
  358. package/lib/util/telemetry/types.d.ts.map +1 -0
  359. package/lib/util/telemetry/types.js +1 -0
  360. package/lib/util/telemetry/types.js.map +1 -0
  361. package/lib/util/xdg-paths.d.ts +9 -0
  362. package/lib/util/xdg-paths.d.ts.map +1 -0
  363. package/lib/util/xdg-paths.js +41 -0
  364. package/lib/util/xdg-paths.js.map +1 -0
  365. package/lib/vercel/project.d.ts.map +1 -1
  366. package/lib/vercel/project.js +2 -1
  367. package/lib/vercel/project.js.map +1 -1
  368. package/lib/web/astro.d.ts.map +1 -1
  369. package/lib/web/astro.js +2 -1
  370. package/lib/web/astro.js.map +1 -1
  371. package/lib/web/shadcn.d.ts.map +1 -1
  372. package/lib/web/shadcn.js +2 -1
  373. package/lib/web/shadcn.js.map +1 -1
  374. package/lib/web/vite.d.ts.map +1 -1
  375. package/lib/web/vite.js +3 -2
  376. package/lib/web/vite.js.map +1 -1
  377. package/lib/web/vitepress/dependencies.d.ts.map +1 -1
  378. package/lib/web/vitepress/dependencies.js +2 -1
  379. package/lib/web/vitepress/dependencies.js.map +1 -1
  380. package/lib/web/vitepress/vitepress.d.ts.map +1 -1
  381. package/lib/web/vitepress/vitepress.js +2 -1
  382. package/lib/web/vitepress/vitepress.js.map +1 -1
  383. package/package.json +6 -4
  384. package/src/ai/astro-file.ts +2 -1
  385. package/src/ai/client.ts +3 -2
  386. package/src/alchemy.ts +28 -3
  387. package/src/apply.ts +66 -5
  388. package/src/aws/control/client.ts +4 -4
  389. package/src/aws/control/properties.ts +48 -0
  390. package/src/aws/control/resource.ts +3 -2
  391. package/src/aws/control/types.ts +3988 -6301
  392. package/src/aws/function.ts +9 -8
  393. package/src/aws/oidc/oidc-provider.ts +3 -2
  394. package/src/aws/queue.ts +3 -2
  395. package/src/aws/role.ts +3 -1
  396. package/src/aws/ssm-parameter.ts +2 -1
  397. package/src/cloudflare/account-api-token.ts +3 -2
  398. package/src/cloudflare/ai-gateway.ts +4 -3
  399. package/src/cloudflare/api-error.ts +36 -0
  400. package/src/cloudflare/api.ts +9 -4
  401. package/src/cloudflare/assets.ts +30 -6
  402. package/src/cloudflare/astro.ts +176 -0
  403. package/src/cloudflare/auth.ts +3 -2
  404. package/src/cloudflare/bindings.ts +29 -0
  405. package/src/cloudflare/bound.ts +38 -21
  406. package/src/cloudflare/bucket.ts +15 -8
  407. package/src/cloudflare/bundle/bundle-worker.ts +2 -1
  408. package/src/cloudflare/bundle/nodejs-compat-mode.ts +2 -1
  409. package/src/cloudflare/custom-domain.ts +10 -9
  410. package/src/cloudflare/d1-database.ts +11 -10
  411. package/src/cloudflare/d1-export.ts +2 -1
  412. package/src/cloudflare/d1-import.ts +2 -1
  413. package/src/cloudflare/d1-migrations.ts +2 -1
  414. package/src/cloudflare/dispatch-namespace.ts +281 -0
  415. package/src/cloudflare/dns-records.ts +5 -4
  416. package/src/cloudflare/do-state-store/worker.ts +4 -0
  417. package/src/cloudflare/email-address.ts +203 -0
  418. package/src/cloudflare/email-catch-all.ts +248 -0
  419. package/src/cloudflare/email-routing.ts +230 -0
  420. package/src/cloudflare/email-rule.ts +322 -0
  421. package/src/cloudflare/hyperdrive.ts +5 -4
  422. package/src/cloudflare/images.ts +59 -0
  423. package/src/cloudflare/index.ts +10 -0
  424. package/src/cloudflare/kv-namespace.ts +2 -1
  425. package/src/cloudflare/pipeline.ts +38 -2
  426. package/src/cloudflare/queue-consumer.ts +2 -1
  427. package/src/cloudflare/queue.ts +0 -12
  428. package/src/cloudflare/route.ts +118 -18
  429. package/src/cloudflare/secret.ts +253 -0
  430. package/src/cloudflare/secrets-store.ts +420 -0
  431. package/src/cloudflare/sveltekit.ts +72 -0
  432. package/src/cloudflare/user.ts +2 -1
  433. package/src/cloudflare/vectorize-index.ts +6 -5
  434. package/src/cloudflare/vectorize-metadata-index.ts +2 -1
  435. package/src/cloudflare/website.ts +76 -66
  436. package/src/cloudflare/worker-assets.ts +95 -89
  437. package/src/cloudflare/worker-metadata.ts +20 -1
  438. package/src/cloudflare/worker.ts +116 -18
  439. package/src/cloudflare/wrangler.json.ts +63 -0
  440. package/src/cloudflare/zone.ts +4 -3
  441. package/src/destroy.ts +35 -17
  442. package/src/dns/godaddy.ts +3 -2
  443. package/src/dns/import-dns.ts +2 -1
  444. package/src/esbuild/bundle.ts +2 -1
  445. package/src/fs/copy-file.ts +2 -1
  446. package/src/fs/file.ts +3 -1
  447. package/src/github/client.ts +11 -10
  448. package/src/github/repository-environment.ts +5 -4
  449. package/src/github/secret.ts +7 -6
  450. package/src/index.ts +2 -1
  451. package/src/neon/project.ts +3 -2
  452. package/src/planetscale/api.ts +115 -0
  453. package/src/planetscale/branch.ts +352 -0
  454. package/src/planetscale/database.ts +394 -0
  455. package/src/planetscale/index.ts +4 -0
  456. package/src/planetscale/utils.ts +189 -0
  457. package/src/resource.ts +7 -1
  458. package/src/runtime/plugin.ts +2 -1
  459. package/src/scope.ts +64 -13
  460. package/src/sentry/client-key.ts +5 -4
  461. package/src/sentry/project.ts +5 -4
  462. package/src/sentry/team.ts +5 -4
  463. package/src/stripe/card.ts +2 -1
  464. package/src/stripe/client.ts +3 -2
  465. package/src/stripe/coupon.ts +2 -1
  466. package/src/stripe/customer.ts +2 -1
  467. package/src/stripe/entitlements-feature.ts +2 -1
  468. package/src/stripe/file.ts +2 -1
  469. package/src/stripe/meter.ts +4 -2
  470. package/src/stripe/portal-configuration.ts +2 -1
  471. package/src/stripe/price.ts +2 -1
  472. package/src/stripe/product-feature.ts +2 -1
  473. package/src/stripe/product.ts +2 -1
  474. package/src/stripe/promotion-code.ts +2 -1
  475. package/src/stripe/shipping-rate.ts +2 -1
  476. package/src/stripe/tax-rate.ts +2 -1
  477. package/src/stripe/webhook.ts +3 -2
  478. package/src/test/bun.ts +6 -1
  479. package/src/test/prune.ts +7 -1
  480. package/src/test/vitest.ts +14 -3
  481. package/src/upstash/redis.ts +2 -1
  482. package/src/util/async-queue.ts +97 -0
  483. package/src/util/cli.tsx +221 -0
  484. package/src/util/ignore-matcher.ts +873 -0
  485. package/src/util/logger.ts +17 -0
  486. package/src/util/retry.ts +0 -1
  487. package/src/util/safe-fetch.ts +2 -1
  488. package/src/util/telemetry/client.ts +127 -0
  489. package/src/util/telemetry/constants.ts +13 -0
  490. package/src/util/telemetry/context.ts +154 -0
  491. package/src/util/telemetry/index.ts +2 -0
  492. package/src/util/telemetry/types.ts +83 -0
  493. package/src/util/xdg-paths.ts +48 -0
  494. package/src/vercel/project.ts +2 -1
  495. package/src/web/astro.ts +2 -1
  496. package/src/web/shadcn.ts +2 -1
  497. package/src/web/vite.ts +3 -2
  498. package/src/web/vitepress/dependencies.ts +2 -1
  499. package/src/web/vitepress/vitepress.ts +2 -1
@@ -5,6 +5,7 @@ import type {
5
5
  DnsRecordWithMetadata,
6
6
  } from "../dns/record.ts";
7
7
  import { Resource } from "../resource.ts";
8
+ import { logger } from "../util/logger.ts";
8
9
  import {
9
10
  type CloudflareApi,
10
11
  type CloudflareApiOptions,
@@ -146,12 +147,12 @@ export const DnsRecords = Resource(
146
147
  `/zones/${zoneId}/dns_records/${record.id}`,
147
148
  );
148
149
  if (!response.ok && response.status !== 404) {
149
- console.error(
150
+ logger.error(
150
151
  `Failed to delete DNS record ${record.name}: ${response.statusText}`,
151
152
  );
152
153
  }
153
154
  } catch (error) {
154
- console.error(`Error deleting DNS record ${record.name}:`, error);
155
+ logger.error(`Error deleting DNS record ${record.name}:`, error);
155
156
  }
156
157
  }),
157
158
  );
@@ -181,12 +182,12 @@ export const DnsRecords = Resource(
181
182
  `/zones/${zoneId}/dns_records/${record.id}`,
182
183
  );
183
184
  if (!response.ok && response.status !== 404) {
184
- console.error(
185
+ logger.error(
185
186
  `Failed to delete DNS record ${record.name}: ${response.statusText}`,
186
187
  );
187
188
  }
188
189
  } catch (error) {
189
- console.error(`Error deleting DNS record ${record.name}:`, error);
190
+ logger.error(`Error deleting DNS record ${record.name}:`, error);
190
191
  }
191
192
  }),
192
193
  );
@@ -11,6 +11,10 @@ interface Env {
11
11
 
12
12
  export default class extends WorkerEntrypoint<Env> {
13
13
  override async fetch(request: Request) {
14
+ const url = new URL(request.url);
15
+ if (url.pathname === "/health-check") {
16
+ return new Response("OK", { status: 200 });
17
+ }
14
18
  try {
15
19
  const result = await this.handle(request);
16
20
  const body: DOStateStoreAPI.Response = {
@@ -0,0 +1,203 @@
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { handleApiError } from "./api-error.ts";
4
+ import { type CloudflareApiOptions, createCloudflareApi } from "./api.ts";
5
+ import type { CloudflareResponse } from "./response.ts";
6
+
7
+ /**
8
+ * Cloudflare Email Address response format
9
+ */
10
+ interface CloudflareEmailAddress {
11
+ email: string;
12
+ verified: boolean;
13
+ created: string;
14
+ modified: string;
15
+ tag: string;
16
+ }
17
+
18
+ /**
19
+ * Properties for creating an email destination address
20
+ */
21
+ export interface EmailAddressProps extends CloudflareApiOptions {
22
+ /**
23
+ * Destination email address for routing
24
+ */
25
+ email: string;
26
+
27
+ /**
28
+ * Whether to automatically verify the email address if possible
29
+ * Note: Verification typically requires email confirmation by the recipient
30
+ *
31
+ * @default false
32
+ */
33
+ verified?: boolean;
34
+ }
35
+
36
+ /**
37
+ * A destination email address for Cloudflare email routing
38
+ */
39
+ export interface EmailAddress extends Resource<"cloudflare::EmailAddress"> {
40
+ /**
41
+ * The email address
42
+ */
43
+ email: string;
44
+
45
+ /**
46
+ * Whether the email address has been verified
47
+ */
48
+ verified: boolean;
49
+
50
+ /**
51
+ * When the email address was created
52
+ */
53
+ created: string;
54
+
55
+ /**
56
+ * When the email address was last modified
57
+ */
58
+ modified: string;
59
+
60
+ /**
61
+ * Email address tag
62
+ */
63
+ tag: string;
64
+ }
65
+
66
+ /**
67
+ * Manages destination email addresses for Cloudflare email routing.
68
+ * These addresses can be used as targets in email routing rules.
69
+ *
70
+ * @example
71
+ * ## Add a destination email address
72
+ *
73
+ * Add an email address that can receive routed emails.
74
+ *
75
+ * ```ts
76
+ * const emailAddress = await EmailAddress("admin-email", {
77
+ * email: "admin@company.com"
78
+ * });
79
+ *
80
+ * // Note: The email address will need to be verified before it can receive emails
81
+ * console.log(`Verified: ${emailAddress.verified}`);
82
+ * ```
83
+ *
84
+ * @example
85
+ * ## Add multiple destination addresses
86
+ *
87
+ * Create multiple destination addresses for different routing purposes.
88
+ *
89
+ * ```ts
90
+ * const supportEmail = await EmailAddress("support-email", {
91
+ * email: "support@company.com"
92
+ * });
93
+ *
94
+ * const salesEmail = await EmailAddress("sales-email", {
95
+ * email: "sales@company.com"
96
+ * });
97
+ * ```
98
+ */
99
+ export const EmailAddress = Resource(
100
+ "cloudflare::EmailAddress",
101
+ async function (
102
+ this: Context<EmailAddress>,
103
+ _id: string,
104
+ props: EmailAddressProps,
105
+ ): Promise<EmailAddress> {
106
+ const api = await createCloudflareApi(props);
107
+
108
+ if (this.phase === "delete") {
109
+ if (this.output?.email) {
110
+ const response = await api.delete(
111
+ `/accounts/${api.accountId}/email/routing/addresses/${encodeURIComponent(this.output.email)}`,
112
+ );
113
+ if (!response.ok && response.status !== 404) {
114
+ await handleApiError(response, "delete", "email address");
115
+ }
116
+ }
117
+ return this.destroy();
118
+ }
119
+
120
+ if (this.phase === "update" && this.output) {
121
+ // Email addresses cannot be updated, only created or deleted
122
+ // If the email changed, we need to delete the old one and create a new one
123
+ if (this.output.email !== props.email) {
124
+ // Delete the old email address
125
+ const deleteResponse = await api.delete(
126
+ `/accounts/${api.accountId}/email/routing/addresses/${encodeURIComponent(this.output.email)}`,
127
+ );
128
+ if (!deleteResponse.ok && deleteResponse.status !== 404) {
129
+ await handleApiError(deleteResponse, "delete", "old email address");
130
+ }
131
+
132
+ // Create the new email address (fall through to create logic)
133
+ } else {
134
+ // Get current state
135
+ const getResponse = await api.get(
136
+ `/accounts/${api.accountId}/email/routing/addresses/${encodeURIComponent(props.email)}`,
137
+ );
138
+ if (!getResponse.ok) {
139
+ if (getResponse.status === 404) {
140
+ // Email address was deleted externally, recreate it
141
+ } else {
142
+ await handleApiError(getResponse, "get", "email address");
143
+ }
144
+ } else {
145
+ const result =
146
+ (await getResponse.json()) as CloudflareResponse<CloudflareEmailAddress>;
147
+
148
+ return this({
149
+ email: result.result.email,
150
+ verified: result.result.verified,
151
+ created: result.result.created,
152
+ modified: result.result.modified,
153
+ tag: result.result.tag,
154
+ });
155
+ }
156
+ }
157
+ }
158
+
159
+ // Check if email address already exists
160
+ const getResponse = await api.get(
161
+ `/accounts/${api.accountId}/email/routing/addresses/${encodeURIComponent(props.email)}`,
162
+ );
163
+
164
+ if (getResponse.ok) {
165
+ // Email address already exists, return it
166
+ const result =
167
+ (await getResponse.json()) as CloudflareResponse<CloudflareEmailAddress>;
168
+
169
+ return this({
170
+ email: result.result.email,
171
+ verified: result.result.verified,
172
+ created: result.result.created,
173
+ modified: result.result.modified,
174
+ tag: result.result.tag,
175
+ });
176
+ }
177
+
178
+ // Create new email address
179
+ const createPayload = {
180
+ email: props.email,
181
+ };
182
+
183
+ const createResponse = await api.post(
184
+ `/accounts/${api.accountId}/email/routing/addresses`,
185
+ createPayload,
186
+ );
187
+
188
+ if (!createResponse.ok) {
189
+ await handleApiError(createResponse, "create", "email address");
190
+ }
191
+
192
+ const result =
193
+ (await createResponse.json()) as CloudflareResponse<CloudflareEmailAddress>;
194
+
195
+ return this({
196
+ email: result.result.email,
197
+ verified: result.result.verified,
198
+ created: result.result.created,
199
+ modified: result.result.modified,
200
+ tag: result.result.tag,
201
+ });
202
+ },
203
+ );
@@ -0,0 +1,248 @@
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { type CloudflareApiOptions, createCloudflareApi } from "./api.ts";
4
+ import type { CloudflareResponse } from "./response.ts";
5
+ import type { EmailAction, EmailMatcher } from "./email-rule.ts";
6
+ import type { Zone } from "./zone.ts";
7
+
8
+ /**
9
+ * Cloudflare Email Catch All response format
10
+ */
11
+ interface CloudflareEmailCatchAll {
12
+ enabled: boolean;
13
+ name: string;
14
+ matchers: EmailMatcher[];
15
+ actions: EmailAction[];
16
+ tag: string;
17
+ }
18
+
19
+ /**
20
+ * Properties for configuring the catch-all email rule
21
+ */
22
+ export interface EmailCatchAllProps extends CloudflareApiOptions {
23
+ /**
24
+ * Zone ID or Zone resource where the catch-all rule will be configured
25
+ */
26
+ zone: string | Zone;
27
+
28
+ /**
29
+ * Whether the catch-all rule is enabled
30
+ *
31
+ * @default true
32
+ */
33
+ enabled?: boolean;
34
+
35
+ /**
36
+ * Name for the catch-all rule
37
+ *
38
+ * @default "Catch All"
39
+ */
40
+ name?: string;
41
+
42
+ /**
43
+ * Matchers for the catch-all rule (typically matches all emails)
44
+ * If not provided, defaults to matching all emails
45
+ */
46
+ matchers?: EmailMatcher[];
47
+
48
+ /**
49
+ * Actions to take for emails that don't match other rules
50
+ */
51
+ actions: EmailAction[];
52
+ }
53
+
54
+ /**
55
+ * A catch-all email routing rule for a Cloudflare zone
56
+ */
57
+ export interface EmailCatchAll extends Resource<"cloudflare::EmailCatchAll"> {
58
+ /**
59
+ * Zone ID where the catch-all rule is configured
60
+ */
61
+ zoneId: string;
62
+
63
+ /**
64
+ * Whether the catch-all rule is enabled
65
+ */
66
+ enabled: boolean;
67
+
68
+ /**
69
+ * Rule name
70
+ */
71
+ name: string;
72
+
73
+ /**
74
+ * Matchers for the catch-all rule
75
+ */
76
+ matchers: EmailMatcher[];
77
+
78
+ /**
79
+ * Actions for the catch-all rule
80
+ */
81
+ actions: EmailAction[];
82
+
83
+ /**
84
+ * Rule tag
85
+ */
86
+ tag: string;
87
+ }
88
+
89
+ /**
90
+ * Configures a catch-all email routing rule that handles emails not matched by other rules.
91
+ * This rule is processed last and typically matches all emails that haven't been handled.
92
+ *
93
+ * @example
94
+ * ## Forward all unmatched emails
95
+ *
96
+ * Set up a catch-all rule to forward any unmatched emails to an admin address.
97
+ *
98
+ * ```ts
99
+ * const catchAll = await EmailCatchAll("default-catchall", {
100
+ * zone: "example.com",
101
+ * enabled: true,
102
+ * actions: [
103
+ * {
104
+ * type: "forward",
105
+ * value: ["admin@company.com"]
106
+ * }
107
+ * ]
108
+ * });
109
+ * ```
110
+ *
111
+ * @example
112
+ * ## Drop unmatched emails
113
+ *
114
+ * Configure catch-all to drop any emails that don't match specific rules.
115
+ *
116
+ * ```ts
117
+ * const catchAll = await EmailCatchAll("drop-catchall", {
118
+ * zone: "example.com",
119
+ * enabled: true,
120
+ * actions: [
121
+ * {
122
+ * type: "drop"
123
+ * }
124
+ * ]
125
+ * });
126
+ * ```
127
+ *
128
+ * @example
129
+ * ## Process with Worker
130
+ *
131
+ * Use a Worker to handle all unmatched emails for custom processing.
132
+ *
133
+ * ```ts
134
+ * const catchAll = await EmailCatchAll("worker-catchall", {
135
+ * zone: "example.com",
136
+ * enabled: true,
137
+ * actions: [
138
+ * {
139
+ * type: "worker",
140
+ * value: ["email-processor"]
141
+ * }
142
+ * ]
143
+ * });
144
+ * ```
145
+ */
146
+ export const EmailCatchAll = Resource(
147
+ "cloudflare::EmailCatchAll",
148
+ async function (
149
+ this: Context<EmailCatchAll>,
150
+ _id: string,
151
+ props: EmailCatchAllProps,
152
+ ): Promise<EmailCatchAll> {
153
+ const api = await createCloudflareApi(props);
154
+ const zoneId = typeof props.zone === "string" ? props.zone : props.zone.id;
155
+
156
+ if (this.phase === "delete") {
157
+ // Disable the catch-all rule by setting enabled to false
158
+ const disablePayload = {
159
+ enabled: false,
160
+ name: "Catch All",
161
+ matchers: [{ type: "all" as const }],
162
+ actions: [{ type: "drop" as const }],
163
+ };
164
+
165
+ const response = await api.put(
166
+ `/zones/${zoneId}/email/routing/rules/catch_all`,
167
+ disablePayload,
168
+ );
169
+ if (!response.ok && response.status !== 404) {
170
+ throw new Error(
171
+ `Failed to disable catch-all rule: ${response.statusText}`,
172
+ );
173
+ }
174
+ return this.destroy();
175
+ }
176
+
177
+ // Get current catch-all rule state
178
+ const _getResponse = await api.get(
179
+ `/zones/${zoneId}/email/routing/rules/catch_all`,
180
+ );
181
+
182
+ if (this.phase === "update" && this.output) {
183
+ // Update the catch-all rule
184
+ const updatePayload = {
185
+ enabled: props.enabled ?? true,
186
+ name: props.name || "Catch All",
187
+ matchers: props.matchers || [{ type: "all" as const }],
188
+ actions: props.actions,
189
+ };
190
+
191
+ const response = await api.put(
192
+ `/zones/${zoneId}/email/routing/rules/catch_all`,
193
+ updatePayload,
194
+ );
195
+
196
+ if (!response.ok) {
197
+ const errorBody = await response.text();
198
+ throw new Error(
199
+ `Failed to update catch-all rule: ${response.statusText}\nResponse: ${errorBody}`,
200
+ );
201
+ }
202
+
203
+ const result =
204
+ (await response.json()) as CloudflareResponse<CloudflareEmailCatchAll>;
205
+
206
+ return this({
207
+ zoneId,
208
+ enabled: result.result.enabled,
209
+ name: result.result.name,
210
+ matchers: result.result.matchers,
211
+ actions: result.result.actions,
212
+ tag: result.result.tag,
213
+ });
214
+ }
215
+
216
+ // Create or update catch-all rule
217
+ const catchAllPayload = {
218
+ enabled: props.enabled ?? true,
219
+ name: props.name || "Catch All",
220
+ matchers: props.matchers || [{ type: "all" as const }],
221
+ actions: props.actions,
222
+ };
223
+
224
+ const response = await api.put(
225
+ `/zones/${zoneId}/email/routing/rules/catch_all`,
226
+ catchAllPayload,
227
+ );
228
+
229
+ if (!response.ok) {
230
+ const errorBody = await response.text();
231
+ throw new Error(
232
+ `Failed to configure catch-all rule: ${response.statusText}\nResponse: ${errorBody}`,
233
+ );
234
+ }
235
+
236
+ const result =
237
+ (await response.json()) as CloudflareResponse<CloudflareEmailCatchAll>;
238
+
239
+ return this({
240
+ zoneId,
241
+ enabled: result.result.enabled,
242
+ name: result.result.name,
243
+ matchers: result.result.matchers,
244
+ actions: result.result.actions,
245
+ tag: result.result.tag,
246
+ });
247
+ },
248
+ );