alchemy 0.25.0 → 0.26.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 (494) 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 +23 -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 +7 -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/dns-records.d.ts.map +1 -1
  95. package/lib/cloudflare/dns-records.js +5 -4
  96. package/lib/cloudflare/dns-records.js.map +1 -1
  97. package/lib/cloudflare/do-state-store/worker.d.ts.map +1 -1
  98. package/lib/cloudflare/do-state-store/worker.js +4 -0
  99. package/lib/cloudflare/do-state-store/worker.js.map +1 -1
  100. package/lib/cloudflare/email-address.d.ts +79 -0
  101. package/lib/cloudflare/email-address.d.ts.map +1 -0
  102. package/lib/cloudflare/email-address.js +112 -0
  103. package/lib/cloudflare/email-address.js.map +1 -0
  104. package/lib/cloudflare/email-catch-all.d.ts +123 -0
  105. package/lib/cloudflare/email-catch-all.d.ts.map +1 -0
  106. package/lib/cloudflare/email-catch-all.js +124 -0
  107. package/lib/cloudflare/email-catch-all.js.map +1 -0
  108. package/lib/cloudflare/email-routing.d.ts +89 -0
  109. package/lib/cloudflare/email-routing.d.ts.map +1 -0
  110. package/lib/cloudflare/email-routing.js +120 -0
  111. package/lib/cloudflare/email-routing.js.map +1 -0
  112. package/lib/cloudflare/email-rule.d.ts +196 -0
  113. package/lib/cloudflare/email-rule.d.ts.map +1 -0
  114. package/lib/cloudflare/email-rule.js +153 -0
  115. package/lib/cloudflare/email-rule.js.map +1 -0
  116. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  117. package/lib/cloudflare/hyperdrive.js +5 -4
  118. package/lib/cloudflare/hyperdrive.js.map +1 -1
  119. package/lib/cloudflare/images.d.ts +60 -0
  120. package/lib/cloudflare/images.d.ts.map +1 -0
  121. package/lib/cloudflare/images.js +60 -0
  122. package/lib/cloudflare/images.js.map +1 -0
  123. package/lib/cloudflare/index.d.ts +9 -0
  124. package/lib/cloudflare/index.d.ts.map +1 -1
  125. package/lib/cloudflare/index.js +9 -0
  126. package/lib/cloudflare/index.js.map +1 -1
  127. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  128. package/lib/cloudflare/kv-namespace.js +2 -1
  129. package/lib/cloudflare/kv-namespace.js.map +1 -1
  130. package/lib/cloudflare/pipeline.d.ts +7 -0
  131. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  132. package/lib/cloudflare/pipeline.js +28 -2
  133. package/lib/cloudflare/pipeline.js.map +1 -1
  134. package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
  135. package/lib/cloudflare/queue-consumer.js +2 -1
  136. package/lib/cloudflare/queue-consumer.js.map +1 -1
  137. package/lib/cloudflare/queue.d.ts.map +1 -1
  138. package/lib/cloudflare/queue.js +0 -8
  139. package/lib/cloudflare/queue.js.map +1 -1
  140. package/lib/cloudflare/route.d.ts +26 -1
  141. package/lib/cloudflare/route.d.ts.map +1 -1
  142. package/lib/cloudflare/route.js +84 -16
  143. package/lib/cloudflare/route.js.map +1 -1
  144. package/lib/cloudflare/secret.d.ts +137 -0
  145. package/lib/cloudflare/secret.d.ts.map +1 -0
  146. package/lib/cloudflare/secret.js +122 -0
  147. package/lib/cloudflare/secret.js.map +1 -0
  148. package/lib/cloudflare/secrets-store.d.ts +145 -0
  149. package/lib/cloudflare/secrets-store.d.ts.map +1 -0
  150. package/lib/cloudflare/secrets-store.js +213 -0
  151. package/lib/cloudflare/secrets-store.js.map +1 -0
  152. package/lib/cloudflare/sveltekit.d.ts +49 -0
  153. package/lib/cloudflare/sveltekit.d.ts.map +1 -0
  154. package/lib/cloudflare/sveltekit.js +56 -0
  155. package/lib/cloudflare/sveltekit.js.map +1 -0
  156. package/lib/cloudflare/user.d.ts.map +1 -1
  157. package/lib/cloudflare/user.js +2 -1
  158. package/lib/cloudflare/user.js.map +1 -1
  159. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  160. package/lib/cloudflare/vectorize-index.js +6 -5
  161. package/lib/cloudflare/vectorize-index.js.map +1 -1
  162. package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
  163. package/lib/cloudflare/vectorize-metadata-index.js +2 -1
  164. package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
  165. package/lib/cloudflare/website.d.ts.map +1 -1
  166. package/lib/cloudflare/website.js +7 -2
  167. package/lib/cloudflare/website.js.map +1 -1
  168. package/lib/cloudflare/worker-assets.d.ts +18 -0
  169. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  170. package/lib/cloudflare/worker-assets.js +61 -67
  171. package/lib/cloudflare/worker-assets.js.map +1 -1
  172. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  173. package/lib/cloudflare/worker-metadata.js +16 -1
  174. package/lib/cloudflare/worker-metadata.js.map +1 -1
  175. package/lib/cloudflare/worker.d.ts +31 -1
  176. package/lib/cloudflare/worker.d.ts.map +1 -1
  177. package/lib/cloudflare/worker.js +34 -8
  178. package/lib/cloudflare/worker.js.map +1 -1
  179. package/lib/cloudflare/wrangler.json.d.ts +14 -0
  180. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  181. package/lib/cloudflare/wrangler.json.js +23 -0
  182. package/lib/cloudflare/wrangler.json.js.map +1 -1
  183. package/lib/cloudflare/zone.d.ts.map +1 -1
  184. package/lib/cloudflare/zone.js +4 -3
  185. package/lib/cloudflare/zone.js.map +1 -1
  186. package/lib/destroy.d.ts.map +1 -1
  187. package/lib/destroy.js +30 -13
  188. package/lib/destroy.js.map +1 -1
  189. package/lib/dns/godaddy.d.ts.map +1 -1
  190. package/lib/dns/godaddy.js +3 -2
  191. package/lib/dns/godaddy.js.map +1 -1
  192. package/lib/dns/import-dns.d.ts.map +1 -1
  193. package/lib/dns/import-dns.js +2 -1
  194. package/lib/dns/import-dns.js.map +1 -1
  195. package/lib/esbuild/bundle.d.ts +1 -1
  196. package/lib/esbuild/bundle.d.ts.map +1 -1
  197. package/lib/esbuild/bundle.js +2 -1
  198. package/lib/esbuild/bundle.js.map +1 -1
  199. package/lib/fs/copy-file.d.ts.map +1 -1
  200. package/lib/fs/copy-file.js +2 -1
  201. package/lib/fs/copy-file.js.map +1 -1
  202. package/lib/fs/file.d.ts.map +1 -1
  203. package/lib/fs/file.js +2 -1
  204. package/lib/fs/file.js.map +1 -1
  205. package/lib/github/client.d.ts.map +1 -1
  206. package/lib/github/client.js +11 -10
  207. package/lib/github/client.js.map +1 -1
  208. package/lib/github/repository-environment.d.ts.map +1 -1
  209. package/lib/github/repository-environment.js +5 -4
  210. package/lib/github/repository-environment.js.map +1 -1
  211. package/lib/github/secret.d.ts.map +1 -1
  212. package/lib/github/secret.js +7 -6
  213. package/lib/github/secret.js.map +1 -1
  214. package/lib/index.d.ts +2 -1
  215. package/lib/index.d.ts.map +1 -1
  216. package/lib/index.js +1 -0
  217. package/lib/index.js.map +1 -1
  218. package/lib/neon/project.d.ts.map +1 -1
  219. package/lib/neon/project.js +3 -2
  220. package/lib/neon/project.js.map +1 -1
  221. package/lib/planetscale/api.d.ts +53 -0
  222. package/lib/planetscale/api.d.ts.map +1 -0
  223. package/lib/planetscale/api.js +84 -0
  224. package/lib/planetscale/api.js.map +1 -0
  225. package/lib/planetscale/branch.d.ts +129 -0
  226. package/lib/planetscale/branch.d.ts.map +1 -0
  227. package/lib/planetscale/branch.js +161 -0
  228. package/lib/planetscale/branch.js.map +1 -0
  229. package/lib/planetscale/database.d.ts +143 -0
  230. package/lib/planetscale/database.d.ts.map +1 -0
  231. package/lib/planetscale/database.js +184 -0
  232. package/lib/planetscale/database.js.map +1 -0
  233. package/lib/planetscale/index.d.ts +5 -0
  234. package/lib/planetscale/index.d.ts.map +1 -0
  235. package/lib/planetscale/index.js +5 -0
  236. package/lib/planetscale/index.js.map +1 -0
  237. package/lib/planetscale/utils.d.ts +15 -0
  238. package/lib/planetscale/utils.d.ts.map +1 -0
  239. package/lib/planetscale/utils.js +95 -0
  240. package/lib/planetscale/utils.js.map +1 -0
  241. package/lib/resource.js +7 -1
  242. package/lib/resource.js.map +1 -1
  243. package/lib/runtime/plugin.d.ts.map +1 -1
  244. package/lib/runtime/plugin.js +2 -1
  245. package/lib/runtime/plugin.js.map +1 -1
  246. package/lib/scope.d.ts +13 -2
  247. package/lib/scope.d.ts.map +1 -1
  248. package/lib/scope.js +53 -10
  249. package/lib/scope.js.map +1 -1
  250. package/lib/sentry/client-key.d.ts.map +1 -1
  251. package/lib/sentry/client-key.js +5 -4
  252. package/lib/sentry/client-key.js.map +1 -1
  253. package/lib/sentry/project.d.ts.map +1 -1
  254. package/lib/sentry/project.js +5 -4
  255. package/lib/sentry/project.js.map +1 -1
  256. package/lib/sentry/team.d.ts.map +1 -1
  257. package/lib/sentry/team.js +5 -4
  258. package/lib/sentry/team.js.map +1 -1
  259. package/lib/stripe/card.d.ts.map +1 -1
  260. package/lib/stripe/card.js +2 -1
  261. package/lib/stripe/card.js.map +1 -1
  262. package/lib/stripe/client.d.ts.map +1 -1
  263. package/lib/stripe/client.js +3 -2
  264. package/lib/stripe/client.js.map +1 -1
  265. package/lib/stripe/coupon.d.ts.map +1 -1
  266. package/lib/stripe/coupon.js +2 -1
  267. package/lib/stripe/coupon.js.map +1 -1
  268. package/lib/stripe/customer.d.ts.map +1 -1
  269. package/lib/stripe/customer.js +2 -1
  270. package/lib/stripe/customer.js.map +1 -1
  271. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  272. package/lib/stripe/entitlements-feature.js +2 -1
  273. package/lib/stripe/entitlements-feature.js.map +1 -1
  274. package/lib/stripe/file.d.ts.map +1 -1
  275. package/lib/stripe/file.js +2 -1
  276. package/lib/stripe/file.js.map +1 -1
  277. package/lib/stripe/meter.d.ts.map +1 -1
  278. package/lib/stripe/meter.js +4 -2
  279. package/lib/stripe/meter.js.map +1 -1
  280. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  281. package/lib/stripe/portal-configuration.js +2 -1
  282. package/lib/stripe/portal-configuration.js.map +1 -1
  283. package/lib/stripe/price.d.ts.map +1 -1
  284. package/lib/stripe/price.js +2 -1
  285. package/lib/stripe/price.js.map +1 -1
  286. package/lib/stripe/product-feature.d.ts.map +1 -1
  287. package/lib/stripe/product-feature.js +2 -1
  288. package/lib/stripe/product-feature.js.map +1 -1
  289. package/lib/stripe/product.d.ts.map +1 -1
  290. package/lib/stripe/product.js +2 -1
  291. package/lib/stripe/product.js.map +1 -1
  292. package/lib/stripe/promotion-code.d.ts.map +1 -1
  293. package/lib/stripe/promotion-code.js +2 -1
  294. package/lib/stripe/promotion-code.js.map +1 -1
  295. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  296. package/lib/stripe/shipping-rate.js +2 -1
  297. package/lib/stripe/shipping-rate.js.map +1 -1
  298. package/lib/stripe/tax-rate.d.ts.map +1 -1
  299. package/lib/stripe/tax-rate.js +2 -1
  300. package/lib/stripe/tax-rate.js.map +1 -1
  301. package/lib/stripe/webhook.d.ts.map +1 -1
  302. package/lib/stripe/webhook.js +3 -2
  303. package/lib/stripe/webhook.js.map +1 -1
  304. package/lib/test/bun.d.ts.map +1 -1
  305. package/lib/test/bun.js +6 -1
  306. package/lib/test/bun.js.map +1 -1
  307. package/lib/test/prune.js +7 -1
  308. package/lib/test/prune.js.map +1 -1
  309. package/lib/test/vitest.d.ts.map +1 -1
  310. package/lib/test/vitest.js +2 -0
  311. package/lib/test/vitest.js.map +1 -1
  312. package/lib/upstash/redis.d.ts.map +1 -1
  313. package/lib/upstash/redis.js +2 -1
  314. package/lib/upstash/redis.js.map +1 -1
  315. package/lib/util/async-queue.d.ts +35 -0
  316. package/lib/util/async-queue.d.ts.map +1 -0
  317. package/lib/util/async-queue.js +87 -0
  318. package/lib/util/async-queue.js.map +1 -0
  319. package/lib/util/cli.d.ts +37 -0
  320. package/lib/util/cli.d.ts.map +1 -0
  321. package/lib/util/cli.js +90 -0
  322. package/lib/util/cli.js.map +1 -0
  323. package/lib/util/ignore-matcher.d.ts +94 -0
  324. package/lib/util/ignore-matcher.d.ts.map +1 -0
  325. package/lib/util/ignore-matcher.js +616 -0
  326. package/lib/util/ignore-matcher.js.map +1 -0
  327. package/lib/util/logger.d.ts +3 -0
  328. package/lib/util/logger.d.ts.map +1 -0
  329. package/lib/util/logger.js +15 -0
  330. package/lib/util/logger.js.map +1 -0
  331. package/lib/util/retry.d.ts.map +1 -1
  332. package/lib/util/retry.js +0 -1
  333. package/lib/util/retry.js.map +1 -1
  334. package/lib/util/safe-fetch.d.ts.map +1 -1
  335. package/lib/util/safe-fetch.js +2 -1
  336. package/lib/util/safe-fetch.js.map +1 -1
  337. package/lib/util/telemetry/client.d.ts +32 -0
  338. package/lib/util/telemetry/client.d.ts.map +1 -0
  339. package/lib/util/telemetry/client.js +94 -0
  340. package/lib/util/telemetry/client.js.map +1 -0
  341. package/lib/util/telemetry/constants.d.ts +4 -0
  342. package/lib/util/telemetry/constants.d.ts.map +1 -0
  343. package/lib/util/telemetry/constants.js +8 -0
  344. package/lib/util/telemetry/constants.js.map +1 -0
  345. package/lib/util/telemetry/context.d.ts +15 -0
  346. package/lib/util/telemetry/context.d.ts.map +1 -0
  347. package/lib/util/telemetry/context.js +128 -0
  348. package/lib/util/telemetry/context.js.map +1 -0
  349. package/lib/util/telemetry/index.d.ts +3 -0
  350. package/lib/util/telemetry/index.d.ts.map +1 -0
  351. package/lib/util/telemetry/index.js +3 -0
  352. package/lib/util/telemetry/index.js.map +1 -0
  353. package/lib/util/telemetry/types.d.ts +59 -0
  354. package/lib/util/telemetry/types.d.ts.map +1 -0
  355. package/lib/util/telemetry/types.js +1 -0
  356. package/lib/util/telemetry/types.js.map +1 -0
  357. package/lib/util/xdg-paths.d.ts +9 -0
  358. package/lib/util/xdg-paths.d.ts.map +1 -0
  359. package/lib/util/xdg-paths.js +41 -0
  360. package/lib/util/xdg-paths.js.map +1 -0
  361. package/lib/vercel/project.d.ts.map +1 -1
  362. package/lib/vercel/project.js +2 -1
  363. package/lib/vercel/project.js.map +1 -1
  364. package/lib/web/astro.d.ts.map +1 -1
  365. package/lib/web/astro.js +2 -1
  366. package/lib/web/astro.js.map +1 -1
  367. package/lib/web/shadcn.d.ts.map +1 -1
  368. package/lib/web/shadcn.js +2 -1
  369. package/lib/web/shadcn.js.map +1 -1
  370. package/lib/web/vite.d.ts.map +1 -1
  371. package/lib/web/vite.js +3 -2
  372. package/lib/web/vite.js.map +1 -1
  373. package/lib/web/vitepress/dependencies.d.ts.map +1 -1
  374. package/lib/web/vitepress/dependencies.js +2 -1
  375. package/lib/web/vitepress/dependencies.js.map +1 -1
  376. package/lib/web/vitepress/vitepress.d.ts.map +1 -1
  377. package/lib/web/vitepress/vitepress.js +2 -1
  378. package/lib/web/vitepress/vitepress.js.map +1 -1
  379. package/package.json +6 -4
  380. package/src/ai/astro-file.ts +2 -1
  381. package/src/ai/client.ts +3 -2
  382. package/src/alchemy.ts +28 -3
  383. package/src/apply.ts +66 -5
  384. package/src/aws/control/client.ts +4 -4
  385. package/src/aws/control/properties.ts +48 -0
  386. package/src/aws/control/resource.ts +3 -2
  387. package/src/aws/control/types.ts +3988 -6301
  388. package/src/aws/function.ts +9 -8
  389. package/src/aws/oidc/oidc-provider.ts +3 -2
  390. package/src/aws/queue.ts +3 -2
  391. package/src/aws/role.ts +3 -1
  392. package/src/aws/ssm-parameter.ts +2 -1
  393. package/src/cloudflare/account-api-token.ts +3 -2
  394. package/src/cloudflare/ai-gateway.ts +4 -3
  395. package/src/cloudflare/api-error.ts +36 -0
  396. package/src/cloudflare/api.ts +9 -4
  397. package/src/cloudflare/assets.ts +30 -6
  398. package/src/cloudflare/astro.ts +176 -0
  399. package/src/cloudflare/auth.ts +3 -2
  400. package/src/cloudflare/bindings.ts +27 -0
  401. package/src/cloudflare/bound.ts +31 -17
  402. package/src/cloudflare/bucket.ts +15 -8
  403. package/src/cloudflare/bundle/bundle-worker.ts +2 -1
  404. package/src/cloudflare/bundle/nodejs-compat-mode.ts +2 -1
  405. package/src/cloudflare/custom-domain.ts +10 -9
  406. package/src/cloudflare/d1-database.ts +11 -10
  407. package/src/cloudflare/d1-export.ts +2 -1
  408. package/src/cloudflare/d1-import.ts +2 -1
  409. package/src/cloudflare/d1-migrations.ts +2 -1
  410. package/src/cloudflare/dns-records.ts +5 -4
  411. package/src/cloudflare/do-state-store/worker.ts +4 -0
  412. package/src/cloudflare/email-address.ts +203 -0
  413. package/src/cloudflare/email-catch-all.ts +248 -0
  414. package/src/cloudflare/email-routing.ts +230 -0
  415. package/src/cloudflare/email-rule.ts +322 -0
  416. package/src/cloudflare/hyperdrive.ts +5 -4
  417. package/src/cloudflare/images.ts +59 -0
  418. package/src/cloudflare/index.ts +9 -0
  419. package/src/cloudflare/kv-namespace.ts +2 -1
  420. package/src/cloudflare/pipeline.ts +38 -2
  421. package/src/cloudflare/queue-consumer.ts +2 -1
  422. package/src/cloudflare/queue.ts +0 -12
  423. package/src/cloudflare/route.ts +118 -18
  424. package/src/cloudflare/secret.ts +253 -0
  425. package/src/cloudflare/secrets-store.ts +420 -0
  426. package/src/cloudflare/sveltekit.ts +72 -0
  427. package/src/cloudflare/user.ts +2 -1
  428. package/src/cloudflare/vectorize-index.ts +6 -5
  429. package/src/cloudflare/vectorize-metadata-index.ts +2 -1
  430. package/src/cloudflare/website.ts +76 -66
  431. package/src/cloudflare/worker-assets.ts +95 -89
  432. package/src/cloudflare/worker-metadata.ts +14 -1
  433. package/src/cloudflare/worker.ts +76 -9
  434. package/src/cloudflare/wrangler.json.ts +42 -0
  435. package/src/cloudflare/zone.ts +4 -3
  436. package/src/destroy.ts +35 -17
  437. package/src/dns/godaddy.ts +3 -2
  438. package/src/dns/import-dns.ts +2 -1
  439. package/src/esbuild/bundle.ts +2 -1
  440. package/src/fs/copy-file.ts +2 -1
  441. package/src/fs/file.ts +3 -1
  442. package/src/github/client.ts +11 -10
  443. package/src/github/repository-environment.ts +5 -4
  444. package/src/github/secret.ts +7 -6
  445. package/src/index.ts +2 -1
  446. package/src/neon/project.ts +3 -2
  447. package/src/planetscale/api.ts +115 -0
  448. package/src/planetscale/branch.ts +352 -0
  449. package/src/planetscale/database.ts +394 -0
  450. package/src/planetscale/index.ts +4 -0
  451. package/src/planetscale/utils.ts +189 -0
  452. package/src/resource.ts +7 -1
  453. package/src/runtime/plugin.ts +2 -1
  454. package/src/scope.ts +64 -13
  455. package/src/sentry/client-key.ts +5 -4
  456. package/src/sentry/project.ts +5 -4
  457. package/src/sentry/team.ts +5 -4
  458. package/src/stripe/card.ts +2 -1
  459. package/src/stripe/client.ts +3 -2
  460. package/src/stripe/coupon.ts +2 -1
  461. package/src/stripe/customer.ts +2 -1
  462. package/src/stripe/entitlements-feature.ts +2 -1
  463. package/src/stripe/file.ts +2 -1
  464. package/src/stripe/meter.ts +4 -2
  465. package/src/stripe/portal-configuration.ts +2 -1
  466. package/src/stripe/price.ts +2 -1
  467. package/src/stripe/product-feature.ts +2 -1
  468. package/src/stripe/product.ts +2 -1
  469. package/src/stripe/promotion-code.ts +2 -1
  470. package/src/stripe/shipping-rate.ts +2 -1
  471. package/src/stripe/tax-rate.ts +2 -1
  472. package/src/stripe/webhook.ts +3 -2
  473. package/src/test/bun.ts +6 -1
  474. package/src/test/prune.ts +7 -1
  475. package/src/test/vitest.ts +2 -0
  476. package/src/upstash/redis.ts +2 -1
  477. package/src/util/async-queue.ts +97 -0
  478. package/src/util/cli.tsx +221 -0
  479. package/src/util/ignore-matcher.ts +873 -0
  480. package/src/util/logger.ts +17 -0
  481. package/src/util/retry.ts +0 -1
  482. package/src/util/safe-fetch.ts +2 -1
  483. package/src/util/telemetry/client.ts +127 -0
  484. package/src/util/telemetry/constants.ts +13 -0
  485. package/src/util/telemetry/context.ts +154 -0
  486. package/src/util/telemetry/index.ts +2 -0
  487. package/src/util/telemetry/types.ts +83 -0
  488. package/src/util/xdg-paths.ts +48 -0
  489. package/src/vercel/project.ts +2 -1
  490. package/src/web/astro.ts +2 -1
  491. package/src/web/shadcn.ts +2 -1
  492. package/src/web/vite.ts +3 -2
  493. package/src/web/vitepress/dependencies.ts +2 -1
  494. package/src/web/vitepress/vitepress.ts +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-routing.d.ts","sourceRoot":"","sources":["../../src/cloudflare/email-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,oBAAoB,EAAuB,MAAM,UAAU,CAAC;AAE1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAatC;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,QAAQ,CAAC,0BAA0B,CAAC;IACxE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,YAAY,yFAGf,OAAO,CAAC,YAAY,CAAC,OACtB,MAAM,SACJ,iBAAiB,KACvB,OAAO,CAAC,YAAY,CAAC,CAiHzB,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { Resource } from "../resource.js";
2
+ import { handleApiError } from "./api-error.js";
3
+ import { createCloudflareApi } from "./api.js";
4
+ /**
5
+ * Configures email routing for a Cloudflare zone, allowing emails sent to the zone's domain
6
+ * to be routed according to defined rules.
7
+ *
8
+ * @example
9
+ * ## Enable email routing for a zone
10
+ *
11
+ * Enable email routing for your domain to start receiving and routing emails.
12
+ *
13
+ * ```ts
14
+ * const emailRouting = await EmailRouting("example.com-routing", {
15
+ * zone: "example.com",
16
+ * enabled: true
17
+ * });
18
+ * ```
19
+ *
20
+ * @example
21
+ * ## Use with existing Zone resource
22
+ *
23
+ * Configure email routing using an existing Zone resource reference.
24
+ *
25
+ * ```ts
26
+ * const zone = await Zone("my-zone", {
27
+ * name: "example.com"
28
+ * });
29
+ *
30
+ * const emailRouting = await EmailRouting("example.com-routing", {
31
+ * zone: zone,
32
+ * enabled: true,
33
+ * skipWizard: true
34
+ * });
35
+ * ```
36
+ */
37
+ export const EmailRouting = Resource("cloudflare::EmailRouting", async function (_id, props) {
38
+ const api = await createCloudflareApi(props);
39
+ const zoneId = typeof props.zone === "string" ? props.zone : props.zone.id;
40
+ if (this.phase === "delete") {
41
+ // Disable email routing DNS
42
+ const response = await api.delete(`/zones/${zoneId}/email/routing/dns`);
43
+ if (!response.ok && response.status !== 404) {
44
+ await handleApiError(response, "disabling", "email routing DNS");
45
+ }
46
+ return this.destroy();
47
+ }
48
+ if (this.phase === "update" && this.output) {
49
+ // Check if we need to update the enabled state
50
+ const currentEnabled = this.output.enabled;
51
+ const desiredEnabled = props.enabled ?? true;
52
+ if (currentEnabled !== desiredEnabled) {
53
+ if (desiredEnabled) {
54
+ // Enable email routing DNS
55
+ const enablePayload = {
56
+ enabled: true,
57
+ ...(props.skipWizard && { skip_wizard: props.skipWizard }),
58
+ };
59
+ const response = await api.post(`/zones/${zoneId}/email/routing/dns`, enablePayload);
60
+ if (!response.ok) {
61
+ await handleApiError(response, "enabling", "email routing DNS");
62
+ }
63
+ }
64
+ else {
65
+ // Disable email routing DNS
66
+ const response = await api.delete(`/zones/${zoneId}/email/routing/dns`);
67
+ if (!response.ok) {
68
+ await handleApiError(response, "disabling", "email routing DNS");
69
+ }
70
+ }
71
+ }
72
+ // Get current state
73
+ const getResponse = await api.get(`/zones/${zoneId}/email/routing/dns`);
74
+ if (!getResponse.ok) {
75
+ if (getResponse.status === 404) {
76
+ throw new Error("Email routing DNS is not configured for this zone");
77
+ }
78
+ await handleApiError(getResponse, "getting", "email routing DNS settings");
79
+ }
80
+ const result = (await getResponse.json());
81
+ return this({
82
+ zoneId,
83
+ enabled: result.result.enabled,
84
+ name: result.result.name,
85
+ created: result.result.created,
86
+ modified: result.result.modified,
87
+ tag: result.result.tag,
88
+ });
89
+ }
90
+ // Create/Enable email routing
91
+ const enabled = props.enabled ?? true;
92
+ if (enabled) {
93
+ const enablePayload = {
94
+ enabled: true,
95
+ ...(props.skipWizard && { skip_wizard: props.skipWizard }),
96
+ };
97
+ const response = await api.post(`/zones/${zoneId}/email/routing/dns`, enablePayload);
98
+ if (!response.ok) {
99
+ await handleApiError(response, "enabling", "email routing DNS");
100
+ }
101
+ }
102
+ // Get the current state
103
+ const getResponse = await api.get(`/zones/${zoneId}/email/routing/dns`);
104
+ if (!getResponse.ok) {
105
+ if (getResponse.status === 404) {
106
+ throw new Error("Email routing DNS is not configured. Set enabled: true to configure it.");
107
+ }
108
+ await handleApiError(getResponse, "getting", "email routing DNS settings");
109
+ }
110
+ const result = (await getResponse.json());
111
+ return this({
112
+ zoneId,
113
+ enabled: result.result.enabled,
114
+ name: result.result.name,
115
+ created: result.result.created,
116
+ modified: result.result.modified,
117
+ tag: result.result.tag,
118
+ });
119
+ });
120
+ //# sourceMappingURL=email-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-routing.js","sourceRoot":"","sources":["../../src/cloudflare/email-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ import type { Context } from "../context.ts";
2
+ import { Resource } from "../resource.ts";
3
+ import { type CloudflareApiOptions } from "./api.ts";
4
+ import type { Zone } from "./zone.ts";
5
+ /**
6
+ * Email routing matcher - defines what emails to match
7
+ */
8
+ export interface EmailMatcher {
9
+ /**
10
+ * Type of matcher
11
+ * - "literal": Exact string match
12
+ * - "all": Matches all emails
13
+ */
14
+ type: "literal" | "all";
15
+ /**
16
+ * Field to match against (required for literal matchers)
17
+ */
18
+ field?: "to" | "from" | "subject";
19
+ /**
20
+ * Value to match (required for literal matchers)
21
+ */
22
+ value?: string;
23
+ }
24
+ /**
25
+ * Email routing action - defines what to do with matched emails
26
+ */
27
+ export interface EmailAction {
28
+ /**
29
+ * Type of action to take
30
+ * - "forward": Forward email to destination addresses
31
+ * - "worker": Process email with a Cloudflare Worker
32
+ * - "drop": Drop/reject the email
33
+ */
34
+ type: "forward" | "worker" | "drop";
35
+ /**
36
+ * Action configuration
37
+ * - For "forward": Array of destination email addresses
38
+ * - For "worker": Worker script name
39
+ * - For "drop": Not used
40
+ */
41
+ value?: string[];
42
+ }
43
+ /**
44
+ * Properties for creating an email routing rule
45
+ */
46
+ export interface EmailRuleProps extends CloudflareApiOptions {
47
+ /**
48
+ * Zone ID or Zone resource where the rule will be created
49
+ */
50
+ zone: string | Zone;
51
+ /**
52
+ * Name for the email routing rule
53
+ */
54
+ name?: string;
55
+ /**
56
+ * Whether the rule is enabled
57
+ *
58
+ * @default true
59
+ */
60
+ enabled?: boolean;
61
+ /**
62
+ * Rule priority - lower numbers have higher priority
63
+ * Rules are evaluated in priority order
64
+ *
65
+ * @default 0
66
+ */
67
+ priority?: number;
68
+ /**
69
+ * Array of matchers that define which emails this rule applies to
70
+ */
71
+ matchers: EmailMatcher[];
72
+ /**
73
+ * Array of actions to take when emails match this rule
74
+ */
75
+ actions: EmailAction[];
76
+ }
77
+ /**
78
+ * An email routing rule for a Cloudflare zone
79
+ */
80
+ export interface EmailRule extends Resource<"cloudflare::EmailRule"> {
81
+ /**
82
+ * Zone ID where the rule is created
83
+ */
84
+ zoneId: string;
85
+ /**
86
+ * Rule ID
87
+ */
88
+ ruleId: string;
89
+ /**
90
+ * Rule name
91
+ */
92
+ name: string;
93
+ /**
94
+ * Whether the rule is enabled
95
+ */
96
+ enabled: boolean;
97
+ /**
98
+ * Rule priority
99
+ */
100
+ priority: number;
101
+ /**
102
+ * Matchers for this rule
103
+ */
104
+ matchers: EmailMatcher[];
105
+ /**
106
+ * Actions for this rule
107
+ */
108
+ actions: EmailAction[];
109
+ /**
110
+ * Rule tag
111
+ */
112
+ tag: string;
113
+ }
114
+ /**
115
+ * Creates email routing rules that define how emails sent to your domain are processed.
116
+ * Rules are evaluated in priority order (lower number = higher priority).
117
+ *
118
+ * @example
119
+ * ## Forward emails to a specific address
120
+ *
121
+ * Forward all emails sent to info@example.com to a destination address.
122
+ *
123
+ * ```ts
124
+ * const infoRule = await EmailRule("info-forwarding", {
125
+ * zone: "example.com",
126
+ * name: "Forward info emails",
127
+ * matchers: [
128
+ * {
129
+ * type: "literal",
130
+ * field: "to",
131
+ * value: "info@example.com"
132
+ * }
133
+ * ],
134
+ * actions: [
135
+ * {
136
+ * type: "forward",
137
+ * value: ["admin@company.com"]
138
+ * }
139
+ * ]
140
+ * });
141
+ * ```
142
+ *
143
+ * @example
144
+ * ## Process emails with a Worker
145
+ *
146
+ * Route emails to a Cloudflare Worker for custom processing.
147
+ *
148
+ * ```ts
149
+ * const workerRule = await EmailRule("worker-processing", {
150
+ * zone: "example.com",
151
+ * name: "Process with Worker",
152
+ * priority: 1,
153
+ * matchers: [
154
+ * {
155
+ * type: "literal",
156
+ * field: "to",
157
+ * value: "webhook@example.com"
158
+ * }
159
+ * ],
160
+ * actions: [
161
+ * {
162
+ * type: "worker",
163
+ * value: ["email-processor"]
164
+ * }
165
+ * ]
166
+ * });
167
+ * ```
168
+ *
169
+ * @example
170
+ * ## Multiple matchers and actions
171
+ *
172
+ * Create a rule with multiple conditions and actions.
173
+ *
174
+ * ```ts
175
+ * const complexRule = await EmailRule("support-routing", {
176
+ * zone: "example.com",
177
+ * name: "Support email routing",
178
+ * priority: 2,
179
+ * matchers: [
180
+ * {
181
+ * type: "literal",
182
+ * field: "to",
183
+ * value: "support@example.com"
184
+ * }
185
+ * ],
186
+ * actions: [
187
+ * {
188
+ * type: "forward",
189
+ * value: ["support@company.com", "backup@company.com"]
190
+ * }
191
+ * ]
192
+ * });
193
+ * ```
194
+ */
195
+ export declare const EmailRule: (((this: any, id: string, props?: {}) => never) & (new (_: never) => never)) | ((this: Context<EmailRule>, _id: string, props: EmailRuleProps) => Promise<EmailRule>);
196
+ //# sourceMappingURL=email-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-rule.d.ts","sourceRoot":"","sources":["../../src/cloudflare/email-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,oBAAoB,EAAuB,MAAM,UAAU,CAAC;AAE1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAeD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IAC1D;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ,CAAC,uBAAuB,CAAC;IAClE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;IAEvB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,eAAO,MAAM,SAAS,yFAGZ,OAAO,CAAC,SAAS,CAAC,OACnB,MAAM,SACJ,cAAc,KACpB,OAAO,CAAC,SAAS,CAAC,CAsFtB,CAAC"}
@@ -0,0 +1,153 @@
1
+ import { Resource } from "../resource.js";
2
+ import { handleApiError } from "./api-error.js";
3
+ import { createCloudflareApi } from "./api.js";
4
+ /**
5
+ * Creates email routing rules that define how emails sent to your domain are processed.
6
+ * Rules are evaluated in priority order (lower number = higher priority).
7
+ *
8
+ * @example
9
+ * ## Forward emails to a specific address
10
+ *
11
+ * Forward all emails sent to info@example.com to a destination address.
12
+ *
13
+ * ```ts
14
+ * const infoRule = await EmailRule("info-forwarding", {
15
+ * zone: "example.com",
16
+ * name: "Forward info emails",
17
+ * matchers: [
18
+ * {
19
+ * type: "literal",
20
+ * field: "to",
21
+ * value: "info@example.com"
22
+ * }
23
+ * ],
24
+ * actions: [
25
+ * {
26
+ * type: "forward",
27
+ * value: ["admin@company.com"]
28
+ * }
29
+ * ]
30
+ * });
31
+ * ```
32
+ *
33
+ * @example
34
+ * ## Process emails with a Worker
35
+ *
36
+ * Route emails to a Cloudflare Worker for custom processing.
37
+ *
38
+ * ```ts
39
+ * const workerRule = await EmailRule("worker-processing", {
40
+ * zone: "example.com",
41
+ * name: "Process with Worker",
42
+ * priority: 1,
43
+ * matchers: [
44
+ * {
45
+ * type: "literal",
46
+ * field: "to",
47
+ * value: "webhook@example.com"
48
+ * }
49
+ * ],
50
+ * actions: [
51
+ * {
52
+ * type: "worker",
53
+ * value: ["email-processor"]
54
+ * }
55
+ * ]
56
+ * });
57
+ * ```
58
+ *
59
+ * @example
60
+ * ## Multiple matchers and actions
61
+ *
62
+ * Create a rule with multiple conditions and actions.
63
+ *
64
+ * ```ts
65
+ * const complexRule = await EmailRule("support-routing", {
66
+ * zone: "example.com",
67
+ * name: "Support email routing",
68
+ * priority: 2,
69
+ * matchers: [
70
+ * {
71
+ * type: "literal",
72
+ * field: "to",
73
+ * value: "support@example.com"
74
+ * }
75
+ * ],
76
+ * actions: [
77
+ * {
78
+ * type: "forward",
79
+ * value: ["support@company.com", "backup@company.com"]
80
+ * }
81
+ * ]
82
+ * });
83
+ * ```
84
+ */
85
+ export const EmailRule = Resource("cloudflare::EmailRule", async function (_id, props) {
86
+ const api = await createCloudflareApi(props);
87
+ const zoneId = typeof props.zone === "string" ? props.zone : props.zone.id;
88
+ if (this.phase === "delete") {
89
+ if (this.output?.ruleId) {
90
+ const response = await api.delete(`/zones/${zoneId}/email/routing/rules/${this.output.ruleId}`);
91
+ if (!response.ok && response.status !== 404) {
92
+ await handleApiError(response, "delete", "email rule");
93
+ }
94
+ }
95
+ return this.destroy();
96
+ }
97
+ if (this.phase === "update" && this.output) {
98
+ // Update the existing rule
99
+ const updatePayload = {
100
+ name: props.name || this.output.name,
101
+ enabled: props.enabled ?? true,
102
+ priority: props.priority ?? 0,
103
+ matchers: props.matchers,
104
+ actions: props.actions,
105
+ };
106
+ const response = await api.put(`/zones/${zoneId}/email/routing/rules/${this.output.ruleId}`, updatePayload);
107
+ if (!response.ok) {
108
+ if (response.status === 404) {
109
+ // Rule was deleted externally, create a new one
110
+ }
111
+ else {
112
+ await handleApiError(response, "update", "email rule");
113
+ }
114
+ }
115
+ else {
116
+ const result = (await response.json());
117
+ return this({
118
+ zoneId,
119
+ ruleId: result.result.id,
120
+ name: result.result.name,
121
+ enabled: result.result.enabled,
122
+ priority: result.result.priority,
123
+ matchers: result.result.matchers,
124
+ actions: result.result.actions,
125
+ tag: result.result.tag,
126
+ });
127
+ }
128
+ }
129
+ // Create new rule
130
+ const createPayload = {
131
+ name: props.name || "Email routing rule",
132
+ enabled: props.enabled ?? true,
133
+ priority: props.priority ?? 0,
134
+ matchers: props.matchers,
135
+ actions: props.actions,
136
+ };
137
+ const createResponse = await api.post(`/zones/${zoneId}/email/routing/rules`, createPayload);
138
+ if (!createResponse.ok) {
139
+ await handleApiError(createResponse, "create", "email rule");
140
+ }
141
+ const result = (await createResponse.json());
142
+ return this({
143
+ zoneId,
144
+ ruleId: result.result.id,
145
+ name: result.result.name,
146
+ enabled: result.result.enabled,
147
+ priority: result.result.priority,
148
+ matchers: result.result.matchers,
149
+ actions: result.result.actions,
150
+ tag: result.result.tag,
151
+ });
152
+ });
153
+ //# sourceMappingURL=email-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-rule.js","sourceRoot":"","sources":["../../src/cloudflare/email-rule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hyperdrive.d.ts","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,gBAAgB,GAAG,0BAA0B,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,kBACf,SAAQ,QAAQ,CAAC,wBAAwB,CAAC,EACxC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,gBAAgB,GAAG,0BAA0B,CAAC;IAEtD;;;OAGG;IACH,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,UAAU,CAAC,CAMrB"}
1
+ {"version":3,"file":"hyperdrive.d.ts","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,gBAAgB,GAAG,0BAA0B,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,kBACf,SAAQ,QAAQ,CAAC,wBAAwB,CAAC,EACxC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,gBAAgB,GAAG,0BAA0B,CAAC;IAEtD;;;OAGG;IACH,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,UAAU,CAAC,CAMrB"}
@@ -1,5 +1,6 @@
1
1
  import { Resource } from "../resource.js";
2
2
  import { tryGetBinding } from "../runtime/bind.js";
3
+ import { logger } from "../util/logger.js";
3
4
  import { handleApiError } from "./api-error.js";
4
5
  import { createCloudflareApi } from "./api.js";
5
6
  /**
@@ -84,7 +85,7 @@ const HyperdriveResource = Resource("cloudflare::Hyperdrive", async function (id
84
85
  : `${configsPath}`;
85
86
  if (this.phase === "delete") {
86
87
  if (!hyperdriveId) {
87
- console.warn(`No hyperdriveId found for ${id}, skipping delete`);
88
+ logger.warn(`No hyperdriveId found for ${id}, skipping delete`);
88
89
  return this.destroy();
89
90
  }
90
91
  try {
@@ -95,7 +96,7 @@ const HyperdriveResource = Resource("cloudflare::Hyperdrive", async function (id
95
96
  }
96
97
  }
97
98
  catch (error) {
98
- console.error(`Error deleting Hyperdrive ${id}:`, error);
99
+ logger.error(`Error deleting Hyperdrive ${id}:`, error);
99
100
  throw error;
100
101
  }
101
102
  return this.destroy();
@@ -117,7 +118,7 @@ const HyperdriveResource = Resource("cloudflare::Hyperdrive", async function (id
117
118
  const getResponse = await api.get(configPath);
118
119
  if (getResponse.status === 200) {
119
120
  // Hyperdrive exists, update it
120
- console.log(`Hyperdrive '${id}' already exists. Updating existing resource.`);
121
+ logger.log(`Hyperdrive '${id}' already exists. Updating existing resource.`);
121
122
  response = await api.put(configPath, requestBody);
122
123
  }
123
124
  else if (getResponse.status === 404) {
@@ -150,7 +151,7 @@ const HyperdriveResource = Resource("cloudflare::Hyperdrive", async function (id
150
151
  apiResource = data.result;
151
152
  }
152
153
  catch (error) {
153
- console.error(`Error ${this.phase} Hyperdrive '${id}':`, error);
154
+ logger.error(`Error ${this.phase} Hyperdrive '${id}':`, error);
154
155
  throw error;
155
156
  }
156
157
  // Construct the output object from API response and props
@@ -1 +1 @@
1
- {"version":3,"file":"hyperdrive.js","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hyperdrive.js","sourceRoot":"","sources":["../../src/cloudflare/hyperdrive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Cloudflare Images binding for image transformation and manipulation.
3
+ *
4
+ * Provides access to Cloudflare Images API for transforming, drawing, and outputting images
5
+ * within Workers. The binding requires no configuration - just the binding name.
6
+ *
7
+ * **Requirements:**
8
+ * - Cloudflare Images enabled for your account
9
+ * - For deployed Workers: image transforms must be enabled for the zone
10
+ *
11
+ * @example
12
+ * // Create an Images binding and bind to a Worker:
13
+ * import { Worker, Images } from "alchemy/cloudflare";
14
+ *
15
+ * const images = new Images();
16
+ *
17
+ * const worker = await Worker("image-processor", {
18
+ * name: "image-processor",
19
+ * entrypoint: "./src/worker.ts",
20
+ * bindings: {
21
+ * IMAGES: images
22
+ * }
23
+ * });
24
+ *
25
+ * @example
26
+ * // Runtime usage - Basic image transformation:
27
+ * export default {
28
+ * async fetch(request: Request, env: any): Promise<Response> {
29
+ * const imageData = await request.arrayBuffer();
30
+ *
31
+ * const response = await env.IMAGES
32
+ * .input(imageData)
33
+ * .transform({ width: 800, height: 600, format: "webp" })
34
+ * .output();
35
+ *
36
+ * return response.response();
37
+ * }
38
+ * };
39
+ *
40
+ * @example
41
+ * // Runtime usage - Advanced transformations with overlays:
42
+ * const watermark: ReadableStream = await fetchWatermark();
43
+ * const image: ReadableStream = await fetchMainImage();
44
+ *
45
+ * const response = await env.IMAGES
46
+ * .input(image)
47
+ * .draw(
48
+ * env.IMAGES.input(watermark).transform({ width: 32, height: 32 }),
49
+ * { bottom: 32, right: 32 }
50
+ * )
51
+ * .output({ format: "image/avif" });
52
+ *
53
+ * return response.response();
54
+ *
55
+ * @see https://developers.cloudflare.com/images/transform-images/bindings/
56
+ */
57
+ export declare class Images {
58
+ readonly type = "images";
59
+ }
60
+ //# sourceMappingURL=images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/cloudflare/images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,MAAM;IACjB,SAAgB,IAAI,YAAY;CACjC"}