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
@@ -0,0 +1,122 @@
1
+ import { Resource, ResourceKind } from "../resource.js";
2
+ import { secret as alchemySecret, } from "../secret.js";
3
+ import { handleApiError } from "./api-error.js";
4
+ import { createCloudflareApi, } from "./api.js";
5
+ export function isSecret(resource) {
6
+ return resource[ResourceKind] === "cloudflare::Secret";
7
+ }
8
+ /**
9
+ * A Cloudflare Secret represents an individual secret stored in a Secrets Store.
10
+ *
11
+ * Use this resource to add individual secrets to an existing Secrets Store,
12
+ * providing fine-grained control over secret management.
13
+ *
14
+ * @see https://developers.cloudflare.com/api/resources/secrets_store/subresources/stores/subresources/secrets/
15
+ *
16
+ * @example
17
+ * // Create a secrets store first
18
+ * const store = await SecretsStore("my-store", {
19
+ * name: "production-secrets"
20
+ * });
21
+ *
22
+ * // Add individual secrets to the store
23
+ * const apiKey = await Secret("api-key", {
24
+ * store: store,
25
+ * value: alchemy.secret(process.env.API_KEY)
26
+ * });
27
+ *
28
+ * const dbUrl = await Secret("database-url", {
29
+ * store: store,
30
+ * value: process.env.DATABASE_URL
31
+ * });
32
+ *
33
+ * @example
34
+ * // Use in a Worker binding
35
+ * const worker = await Worker("my-worker", {
36
+ * bindings: {
37
+ * SECRETS: store
38
+ * },
39
+ * code: `
40
+ * export default {
41
+ * async fetch(request, env) {
42
+ * const apiKey = await env.SECRETS.get("api-key");
43
+ * const dbUrl = await env.SECRETS.get("database-url");
44
+ * return new Response(\`API: \${apiKey ? "set" : "unset"}\`);
45
+ * }
46
+ * }
47
+ * `
48
+ * });
49
+ *
50
+ * @example
51
+ * // When removing from Alchemy state, keep the secret in Cloudflare
52
+ * const preservedSecret = await Secret("preserve-secret", {
53
+ * store: myStore,
54
+ * value: "preserved-value",
55
+ * delete: false
56
+ * });
57
+ */
58
+ export async function Secret(name, props) {
59
+ // Convert string value to AlchemySecret if needed to prevent plain text serialization
60
+ const secretValue = typeof props.value === "string" ? alchemySecret(props.value) : props.value;
61
+ // Call the internal resource with secure props
62
+ return _Secret(name, {
63
+ ...props,
64
+ value: secretValue,
65
+ });
66
+ }
67
+ const _Secret = Resource("cloudflare::Secret", async function (name, props) {
68
+ const api = await createCloudflareApi(props);
69
+ if (this.phase === "delete") {
70
+ if (props.delete !== false) {
71
+ await deleteSecret(api, props.store.id, name);
72
+ }
73
+ return this.destroy();
74
+ }
75
+ const createdAt = this.phase === "update"
76
+ ? this.output?.createdAt || Date.now()
77
+ : Date.now();
78
+ // Insert or update the secret
79
+ await insertSecret(api, props.store.id, name, props.value);
80
+ return this({
81
+ name,
82
+ storeId: props.store.id,
83
+ store: props.store,
84
+ value: props.value,
85
+ createdAt,
86
+ modifiedAt: Date.now(),
87
+ });
88
+ });
89
+ /**
90
+ * Insert or update a secret in a secrets store
91
+ */
92
+ export async function insertSecret(api, storeId, secretName, secretValue) {
93
+ const response = await api.post(`/accounts/${api.accountId}/secrets_store/stores/${storeId}/secrets`, [
94
+ {
95
+ name: secretName,
96
+ value: secretValue.unencrypted,
97
+ scopes: [],
98
+ },
99
+ ]);
100
+ if (!response.ok) {
101
+ const errorData = await response.json().catch(() => ({
102
+ errors: [{ message: response.statusText }],
103
+ }));
104
+ const errorMessage = errorData.errors?.[0]?.message || response.statusText;
105
+ throw new Error(`Error creating secret '${secretName}': ${errorMessage}`);
106
+ }
107
+ }
108
+ /**
109
+ * Delete a secret from a secrets store
110
+ */
111
+ export async function deleteSecret(api, storeId, secretName) {
112
+ const response = await api.delete(`/accounts/${api.accountId}/secrets_store/stores/${storeId}/secrets`, {
113
+ body: JSON.stringify([secretName]),
114
+ headers: {
115
+ "Content-Type": "application/json",
116
+ },
117
+ });
118
+ if (!response.ok && response.status !== 404) {
119
+ await handleApiError(response, "delete", "secret", secretName);
120
+ }
121
+ }
122
+ //# sourceMappingURL=secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.js","sourceRoot":"","sources":["../../src/cloudflare/secret.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { Resource } from "../resource.ts";
2
+ import { type Secret } from "../secret.ts";
3
+ import { type CloudflareApi, type CloudflareApiOptions } from "./api.ts";
4
+ import type { Bound } from "./bound.ts";
5
+ /**
6
+ * Properties for creating or updating a Secrets Store
7
+ */
8
+ export interface SecretsStoreProps<S extends Record<string, Secret> | undefined = undefined> extends CloudflareApiOptions {
9
+ /**
10
+ * Name of the secrets store
11
+ *
12
+ * @default id
13
+ */
14
+ name?: string;
15
+ /**
16
+ * Secrets to store in the secrets store
17
+ * Maps secret names to secret values (string) or Secret instances
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const store = await SecretsStore("my-store", {
22
+ * secrets: {
23
+ * API_KEY: "my-api-key-value",
24
+ * DATABASE_URL: alchemy.secret(process.env.DATABASE_URL)
25
+ * }
26
+ * });
27
+ * ```
28
+ */
29
+ secrets?: {
30
+ [K in keyof S]: string | Secret;
31
+ };
32
+ /**
33
+ * Whether to adopt an existing store with the same name if it exists
34
+ * If true and a store with the same name exists, it will be adopted rather than creating a new one
35
+ *
36
+ * @default false
37
+ */
38
+ adopt?: boolean;
39
+ /**
40
+ * Whether to delete the store.
41
+ * If set to false, the store will remain but the resource will be removed from state
42
+ *
43
+ * @default true
44
+ */
45
+ delete?: boolean;
46
+ }
47
+ export declare function isSecretsStore(resource: Resource): resource is SecretsStore<any>;
48
+ export interface SecretsStore<S extends Record<string, Secret> | undefined = undefined> extends Resource<"cloudflare::SecretsStore">, Omit<SecretsStoreProps<S>, "delete"> {
49
+ /**
50
+ * The binding type for Cloudflare Workers
51
+ */
52
+ type: "secrets_store";
53
+ /**
54
+ * The unique identifier of the secrets store
55
+ */
56
+ id: string;
57
+ /**
58
+ * The name of the secrets store
59
+ */
60
+ name: string;
61
+ /**
62
+ * The secrets stored in this secrets store
63
+ * Maps secret names to Secret instances created with alchemy.secret()
64
+ */
65
+ secrets?: S;
66
+ /**
67
+ * Timestamp when the secrets store was created
68
+ */
69
+ createdAt: number;
70
+ /**
71
+ * Timestamp when the secrets store was last modified
72
+ */
73
+ modifiedAt: number;
74
+ }
75
+ export type SecretsStoreWithBinding<S extends Record<string, Secret> | undefined = undefined> = SecretsStore<S> & Bound<SecretsStore<S>>;
76
+ /**
77
+ * A Cloudflare Secrets Store is a secure, centralized location for storing account-level secrets.
78
+ *
79
+ * @see https://developers.cloudflare.com/secrets-store/
80
+ *
81
+ * @example
82
+ * // Create a basic secrets store
83
+ * const store = await SecretsStore("my-secrets", {
84
+ * name: "production-secrets"
85
+ * });
86
+ *
87
+ * @example
88
+ * // Create a secrets store with initial secrets
89
+ * const store = await SecretsStore("my-secrets", {
90
+ * name: "production-secrets",
91
+ * secrets: {
92
+ * API_KEY: alchemy.secret(process.env.API_KEY),
93
+ * DATABASE_URL: alchemy.secret(process.env.DATABASE_URL),
94
+ * JWT_SECRET: alchemy.secret(process.env.JWT_SECRET)
95
+ * }
96
+ * });
97
+ *
98
+ * @example
99
+ * // Adopt an existing store if it already exists
100
+ * const existingStore = await SecretsStore("existing-store", {
101
+ * name: "existing-secrets-store",
102
+ * adopt: true,
103
+ * secrets: {
104
+ * NEW_SECRET: alchemy.secret("new-value")
105
+ * }
106
+ * });
107
+ *
108
+ * @example
109
+ * // When removing from Alchemy state, keep the store in Cloudflare
110
+ * const preservedStore = await SecretsStore("preserve-store", {
111
+ * name: "preserved-secrets-store",
112
+ * delete: false
113
+ * });
114
+ *
115
+ * @example
116
+ * // Use in a Worker binding to access secrets
117
+ * const worker = await Worker("my-worker", {
118
+ * bindings: {
119
+ * SECRETS: store
120
+ * },
121
+ * code: `
122
+ * export default {
123
+ * async fetch(request, env) {
124
+ * const apiKey = await env.SECRETS.get("API_KEY");
125
+ * return new Response(apiKey ? "Secret found" : "No secret");
126
+ * }
127
+ * }
128
+ * `
129
+ * });
130
+ */
131
+ export declare function SecretsStore<const S extends Record<string, Secret> | undefined = undefined>(name: string, props?: SecretsStoreProps<S>): Promise<SecretsStoreWithBinding<S>>;
132
+ export declare function createSecretsStore<S extends Record<string, Secret> | undefined = undefined>(api: CloudflareApi, props: SecretsStoreProps<S> & {
133
+ name: string;
134
+ }): Promise<{
135
+ id: string;
136
+ }>;
137
+ export declare function deleteSecretsStore(api: CloudflareApi, storeId: string): Promise<void>;
138
+ export declare function findSecretsStoreByName(api: CloudflareApi, name: string): Promise<{
139
+ id: string;
140
+ createdAt?: number;
141
+ } | null>;
142
+ export declare function insertSecrets<S extends Record<string, Secret> | undefined = undefined>(api: CloudflareApi, storeId: string, props: SecretsStoreProps<S>): Promise<void>;
143
+ export declare function deleteSecrets(api: CloudflareApi, storeId: string, secretNames: string[]): Promise<void>;
144
+ export declare function listSecrets(api: CloudflareApi, storeId: string): Promise<string[]>;
145
+ //# sourceMappingURL=secrets-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-store.d.ts","sourceRoot":"","sources":["../../src/cloudflare/secrets-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { Resource, ResourceKind } from "../resource.js";
2
+ import { bind } from "../runtime/bind.js";
3
+ import { secret } from "../secret.js";
4
+ import { handleApiError } from "./api-error.js";
5
+ import { createCloudflareApi, } from "./api.js";
6
+ export function isSecretsStore(resource) {
7
+ return resource[ResourceKind] === "cloudflare::SecretsStore";
8
+ }
9
+ /**
10
+ * A Cloudflare Secrets Store is a secure, centralized location for storing account-level secrets.
11
+ *
12
+ * @see https://developers.cloudflare.com/secrets-store/
13
+ *
14
+ * @example
15
+ * // Create a basic secrets store
16
+ * const store = await SecretsStore("my-secrets", {
17
+ * name: "production-secrets"
18
+ * });
19
+ *
20
+ * @example
21
+ * // Create a secrets store with initial secrets
22
+ * const store = await SecretsStore("my-secrets", {
23
+ * name: "production-secrets",
24
+ * secrets: {
25
+ * API_KEY: alchemy.secret(process.env.API_KEY),
26
+ * DATABASE_URL: alchemy.secret(process.env.DATABASE_URL),
27
+ * JWT_SECRET: alchemy.secret(process.env.JWT_SECRET)
28
+ * }
29
+ * });
30
+ *
31
+ * @example
32
+ * // Adopt an existing store if it already exists
33
+ * const existingStore = await SecretsStore("existing-store", {
34
+ * name: "existing-secrets-store",
35
+ * adopt: true,
36
+ * secrets: {
37
+ * NEW_SECRET: alchemy.secret("new-value")
38
+ * }
39
+ * });
40
+ *
41
+ * @example
42
+ * // When removing from Alchemy state, keep the store in Cloudflare
43
+ * const preservedStore = await SecretsStore("preserve-store", {
44
+ * name: "preserved-secrets-store",
45
+ * delete: false
46
+ * });
47
+ *
48
+ * @example
49
+ * // Use in a Worker binding to access secrets
50
+ * const worker = await Worker("my-worker", {
51
+ * bindings: {
52
+ * SECRETS: store
53
+ * },
54
+ * code: `
55
+ * export default {
56
+ * async fetch(request, env) {
57
+ * const apiKey = await env.SECRETS.get("API_KEY");
58
+ * return new Response(apiKey ? "Secret found" : "No secret");
59
+ * }
60
+ * }
61
+ * `
62
+ * });
63
+ */
64
+ export async function SecretsStore(name, props = {}) {
65
+ // Convert string values to Secret instances
66
+ const normalizedProps = {
67
+ ...props,
68
+ secrets: props.secrets
69
+ ? Object.fromEntries(Object.entries(props.secrets).map(([key, value]) => [
70
+ key,
71
+ typeof value === "string" ? secret(value) : value,
72
+ ]))
73
+ : undefined,
74
+ };
75
+ const store = await _SecretsStore(name, normalizedProps);
76
+ const binding = await bind(store);
77
+ return {
78
+ ...store,
79
+ get: binding.get,
80
+ };
81
+ }
82
+ const _SecretsStore = Resource("cloudflare::SecretsStore", async function (id, props) {
83
+ const api = await createCloudflareApi(props);
84
+ const name = props.name ?? id;
85
+ if (this.phase === "delete") {
86
+ const storeId = this.output?.id;
87
+ if (storeId && props.delete !== false) {
88
+ await deleteSecretsStore(api, storeId);
89
+ }
90
+ return this.destroy();
91
+ }
92
+ let storeId = this.phase === "update" ? this.output?.id || "" : "";
93
+ let createdAt = this.phase === "update" ? this.output?.createdAt || Date.now() : Date.now();
94
+ if (this.phase === "update" && storeId) {
95
+ const currentSecrets = props.secrets || {};
96
+ const existingSecretNames = await listSecrets(api, storeId);
97
+ const secretsToDelete = existingSecretNames.filter((name) => !(name in currentSecrets));
98
+ if (secretsToDelete.length > 0) {
99
+ await deleteSecrets(api, storeId, secretsToDelete);
100
+ }
101
+ await insertSecrets(api, storeId, props);
102
+ }
103
+ else {
104
+ try {
105
+ const { id } = await createSecretsStore(api, {
106
+ ...props,
107
+ name,
108
+ });
109
+ createdAt = Date.now();
110
+ storeId = id;
111
+ }
112
+ catch (error) {
113
+ if (props.adopt &&
114
+ error instanceof Error &&
115
+ error.message.includes("already exists")) {
116
+ console.log(`Secrets store '${name}' already exists, adopting it`);
117
+ const existingStore = await findSecretsStoreByName(api, name);
118
+ if (!existingStore) {
119
+ throw new Error(`Failed to find existing secrets store '${name}' for adoption`);
120
+ }
121
+ storeId = existingStore.id;
122
+ createdAt = existingStore.createdAt || Date.now();
123
+ }
124
+ else {
125
+ throw error;
126
+ }
127
+ }
128
+ await insertSecrets(api, storeId, props);
129
+ }
130
+ return this({
131
+ type: "secrets_store",
132
+ id: storeId,
133
+ name: name,
134
+ secrets: props.secrets,
135
+ createdAt: createdAt,
136
+ modifiedAt: Date.now(),
137
+ });
138
+ });
139
+ export async function createSecretsStore(api, props) {
140
+ const createResponse = await api.post(`/accounts/${api.accountId}/secrets_store/stores`, {
141
+ name: props.name,
142
+ });
143
+ if (!createResponse.ok) {
144
+ await handleApiError(createResponse, "create", "secrets_store", props.name);
145
+ }
146
+ return { id: (await createResponse.json()).result.id };
147
+ }
148
+ export async function deleteSecretsStore(api, storeId) {
149
+ const deleteResponse = await api.delete(`/accounts/${api.accountId}/secrets_store/stores/${storeId}`);
150
+ if (!deleteResponse.ok && deleteResponse.status !== 404) {
151
+ await handleApiError(deleteResponse, "delete", "secrets_store", storeId);
152
+ }
153
+ }
154
+ export async function findSecretsStoreByName(api, name) {
155
+ const response = await api.get(`/accounts/${api.accountId}/secrets_store/stores`);
156
+ if (!response.ok) {
157
+ await handleApiError(response, "list", "secrets_store", "all");
158
+ }
159
+ const data = (await response.json());
160
+ const stores = data.result;
161
+ const match = stores.find((store) => store.name === name);
162
+ if (match) {
163
+ return {
164
+ id: match.id,
165
+ createdAt: match.created ? new Date(match.created).getTime() : undefined,
166
+ };
167
+ }
168
+ return null;
169
+ }
170
+ export async function insertSecrets(api, storeId, props) {
171
+ if (props.secrets && Object.keys(props.secrets).length > 0) {
172
+ const secretEntries = Object.entries(props.secrets);
173
+ const BATCH_SIZE = 100;
174
+ for (let i = 0; i < secretEntries.length; i += BATCH_SIZE) {
175
+ const batch = secretEntries.slice(i, i + BATCH_SIZE);
176
+ const bulkPayload = batch.map(([name, secretValue]) => ({
177
+ name,
178
+ value: secretValue.unencrypted,
179
+ scopes: [],
180
+ }));
181
+ const bulkResponse = await api.post(`/accounts/${api.accountId}/secrets_store/stores/${storeId}/secrets`, bulkPayload);
182
+ if (!bulkResponse.ok) {
183
+ const errorData = await bulkResponse.json().catch(() => ({
184
+ errors: [{ message: bulkResponse.statusText }],
185
+ }));
186
+ const errorMessage = errorData.errors?.[0]?.message || bulkResponse.statusText;
187
+ throw new Error(`Error creating secrets batch: ${errorMessage}`);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ export async function deleteSecrets(api, storeId, secretNames) {
193
+ if (secretNames.length > 0) {
194
+ const deleteResponse = await api.delete(`/accounts/${api.accountId}/secrets_store/stores/${storeId}/secrets`, {
195
+ body: JSON.stringify(secretNames),
196
+ headers: {
197
+ "Content-Type": "application/json",
198
+ },
199
+ });
200
+ if (!deleteResponse.ok && deleteResponse.status !== 404) {
201
+ await handleApiError(deleteResponse, "delete", "secrets", secretNames.join(", "));
202
+ }
203
+ }
204
+ }
205
+ export async function listSecrets(api, storeId) {
206
+ const response = await api.get(`/accounts/${api.accountId}/secrets_store/stores/${storeId}/secrets`);
207
+ if (!response.ok) {
208
+ await handleApiError(response, "list", "secrets", "all");
209
+ }
210
+ const data = (await response.json());
211
+ return data.result.map((secret) => secret.name);
212
+ }
213
+ //# sourceMappingURL=secrets-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-store.js","sourceRoot":"","sources":["../../src/cloudflare/secrets-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { Assets } from "./assets.ts";
2
+ import type { Bindings } from "./bindings.ts";
3
+ import { type WebsiteProps } from "./website.ts";
4
+ import type { Worker } from "./worker.ts";
5
+ export interface SvelteKitProps<B extends Bindings> extends WebsiteProps<B> {
6
+ }
7
+ export type SvelteKit<B extends Bindings> = B extends {
8
+ ASSETS: any;
9
+ } ? never : Worker<B & {
10
+ ASSETS: Assets;
11
+ }>;
12
+ /**
13
+ * Deploy a SvelteKit application to Cloudflare Workers with automatically configured defaults.
14
+ *
15
+ * This resource handles the deployment of SvelteKit applications with optimized settings for
16
+ * Cloudflare Workers, including proper build commands and compatibility flags. It expects
17
+ * the SvelteKit app to be configured with the @sveltejs/adapter-cloudflare adapter.
18
+ *
19
+ * For local development, SvelteKit provides excellent built-in dev server support with
20
+ * emulated platform.env bindings for Cloudflare-specific APIs.
21
+ *
22
+ * @see https://svelte.dev/docs/kit/adapter-cloudflare - Official SvelteKit Cloudflare adapter docs
23
+ *
24
+ * @example
25
+ * // Deploy a basic SvelteKit application
26
+ * const svelteApp = await SvelteKit("my-svelte-app");
27
+ *
28
+ * @example
29
+ * // Deploy with Cloudflare bindings
30
+ * import { D1Database, KVNamespace, R2Bucket } from "alchemy/cloudflare";
31
+ *
32
+ * const database = await D1Database("svelte-db");
33
+ * const sessions = await KVNamespace("sessions");
34
+ * const storage = await R2Bucket("app-storage");
35
+ *
36
+ * const svelteApp = await SvelteKit("svelte-with-bindings", {
37
+ * bindings: {
38
+ * DB: database,
39
+ * AUTH_STORE: sessions,
40
+ * STORAGE: storage
41
+ * }
42
+ * });
43
+ *
44
+ * @param id - Unique identifier for the SvelteKit application
45
+ * @param props - Configuration properties for the SvelteKit deployment
46
+ * @returns A Cloudflare Worker resource representing the deployed SvelteKit application
47
+ */
48
+ export declare function SvelteKit<B extends Bindings>(id: string, props?: Partial<SvelteKitProps<B>>): Promise<SvelteKit<B>>;
49
+ //# sourceMappingURL=sveltekit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../src/cloudflare/sveltekit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;CAAG;AAG9E,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GACjE,KAAK,GACL,MAAM,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAChD,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAmBvB"}
@@ -0,0 +1,56 @@
1
+ import { join } from "node:path";
2
+ import { Website } from "./website.js";
3
+ /**
4
+ * Deploy a SvelteKit application to Cloudflare Workers with automatically configured defaults.
5
+ *
6
+ * This resource handles the deployment of SvelteKit applications with optimized settings for
7
+ * Cloudflare Workers, including proper build commands and compatibility flags. It expects
8
+ * the SvelteKit app to be configured with the @sveltejs/adapter-cloudflare adapter.
9
+ *
10
+ * For local development, SvelteKit provides excellent built-in dev server support with
11
+ * emulated platform.env bindings for Cloudflare-specific APIs.
12
+ *
13
+ * @see https://svelte.dev/docs/kit/adapter-cloudflare - Official SvelteKit Cloudflare adapter docs
14
+ *
15
+ * @example
16
+ * // Deploy a basic SvelteKit application
17
+ * const svelteApp = await SvelteKit("my-svelte-app");
18
+ *
19
+ * @example
20
+ * // Deploy with Cloudflare bindings
21
+ * import { D1Database, KVNamespace, R2Bucket } from "alchemy/cloudflare";
22
+ *
23
+ * const database = await D1Database("svelte-db");
24
+ * const sessions = await KVNamespace("sessions");
25
+ * const storage = await R2Bucket("app-storage");
26
+ *
27
+ * const svelteApp = await SvelteKit("svelte-with-bindings", {
28
+ * bindings: {
29
+ * DB: database,
30
+ * AUTH_STORE: sessions,
31
+ * STORAGE: storage
32
+ * }
33
+ * });
34
+ *
35
+ * @param id - Unique identifier for the SvelteKit application
36
+ * @param props - Configuration properties for the SvelteKit deployment
37
+ * @returns A Cloudflare Worker resource representing the deployed SvelteKit application
38
+ */
39
+ export async function SvelteKit(id, props) {
40
+ if (props?.compatibilityDate) {
41
+ const providedDate = new Date(props.compatibilityDate);
42
+ const minDate = new Date("2024-09-23");
43
+ if (providedDate < minDate) {
44
+ throw new Error(`SvelteKit compatibility date must be >= 2024-09-23 for nodejs_compat support, got ${props.compatibilityDate}`);
45
+ }
46
+ }
47
+ return Website(id, {
48
+ ...props,
49
+ command: props?.command ?? "bun run build",
50
+ main: props?.main ?? join(".svelte-kit", "cloudflare", "_worker.js"),
51
+ assets: props?.assets ?? join(".svelte-kit", "cloudflare"),
52
+ compatibilityFlags: ["nodejs_compat", ...(props?.compatibilityFlags ?? [])],
53
+ compatibilityDate: props?.compatibilityDate,
54
+ });
55
+ }
56
+ //# sourceMappingURL=sveltekit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../src/cloudflare/sveltekit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAU1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAU,EACV,KAAkC;IAElC,IAAI,KAAK,EAAE,iBAAiB,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,qFAAqF,KAAK,CAAC,iBAAiB,EAAE,CAC/G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,EAAE,EAAE;QACjB,GAAG,KAAK;QACR,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,eAAe;QAC1C,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;QACpE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC;QAC1D,kBAAkB,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC3E,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;KAC5C,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/cloudflare/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;IAClD,QAAQ,EAAE;QACR,iBAAiB,EAAE,OAAO,CAAC;QAC3B,kBAAkB,EAAE,IAAI,CAAC;QACzB,sBAAsB,EAAE,IAAI,CAAC;QAC7B,mBAAmB,EAAE,IAAI,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE;QACZ,qBAAqB,EAAE;YACrB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iCAAiC,EAAE,OAAO,CAAC;IAC3C,gCAAgC,EAAE,OAAO,CAAC;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B;AAID,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C5E"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/cloudflare/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;IAClD,QAAQ,EAAE;QACR,iBAAiB,EAAE,OAAO,CAAC;QAC3B,kBAAkB,EAAE,IAAI,CAAC;QACzB,sBAAsB,EAAE,IAAI,CAAC;QAC7B,mBAAmB,EAAE,IAAI,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE;QACZ,qBAAqB,EAAE;YACrB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iCAAiC,EAAE,OAAO,CAAC;IAC3C,gCAAgC,EAAE,OAAO,CAAC;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA0B9B;AAID,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C5E"}
@@ -1,3 +1,4 @@
1
+ import { logger } from "../util/logger.js";
1
2
  import { CloudflareApiError } from "./api-error.js";
2
3
  import { getCloudflareAuthHeaders, } from "./auth.js";
3
4
  const accountCache = {};
@@ -46,7 +47,7 @@ export async function getUserEmailFromApiKey(apiKey) {
46
47
  return data.result.email;
47
48
  }
48
49
  catch (error) {
49
- console.error("Error retrieving email from Cloudflare API:", error);
50
+ logger.error("Error retrieving email from Cloudflare API:", error);
50
51
  throw new Error("Failed to automatically discover email for API Key authentication");
51
52
  }
52
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/cloudflare/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,wBAAwB,GAEzB,MAAM,WAAW,CAAC;AAmDnB,MAAM,YAAY,GAAwC,EAAE,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,+CAA+C,EAC/C;QACE,OAAO;KACR,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAS,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,kBAAkB,CAC1B,kQAAkQ,EAClQ,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAA2B,EAAE,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc;IACzD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sCAAsC,CAAC;QAEvD,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;YAC9C,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,MAAM;aACrB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAQlC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/cloudflare/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EACL,wBAAwB,GAEzB,MAAM,WAAW,CAAC;AAmDnB,MAAM,YAAY,GAAwC,EAAE,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,+CAA+C,EAC/C;QACE,OAAO;KACR,CACF,CAAC;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAS,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,kBAAkB,CAC1B,kQAAkQ,EAClQ,QAAQ,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAA2B,EAAE,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc;IACzD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,sCAAsC,CAAC;QAEvD,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;YAC9C,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,MAAM;aACrB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,mCAAmC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAQlC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC"}