alchemy 0.62.3 → 0.63.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 (594) hide show
  1. package/bin/alchemy.js +1516 -1202
  2. package/bin/commands/deploy.ts +2 -0
  3. package/bin/commands/dev.ts +2 -0
  4. package/bin/services/execute-alchemy.ts +11 -0
  5. package/bin/services/template-manager.ts +2 -0
  6. package/bin/types.ts +2 -1
  7. package/lib/alchemy.d.ts +6 -22
  8. package/lib/alchemy.d.ts.map +1 -1
  9. package/lib/alchemy.js +65 -169
  10. package/lib/alchemy.js.map +1 -1
  11. package/lib/apply.d.ts +0 -2
  12. package/lib/apply.d.ts.map +1 -1
  13. package/lib/apply.js +2 -16
  14. package/lib/apply.js.map +1 -1
  15. package/lib/aws/account-id.d.ts.map +1 -1
  16. package/lib/aws/account-id.js +3 -2
  17. package/lib/aws/account-id.js.map +1 -1
  18. package/lib/aws/bucket.d.ts +8 -2
  19. package/lib/aws/bucket.d.ts.map +1 -1
  20. package/lib/aws/bucket.js +21 -14
  21. package/lib/aws/bucket.js.map +1 -1
  22. package/lib/aws/ec2/security-group.d.ts +8 -2
  23. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  24. package/lib/aws/ec2/security-group.js +7 -2
  25. package/lib/aws/ec2/security-group.js.map +1 -1
  26. package/lib/aws/function.d.ts +9 -3
  27. package/lib/aws/function.d.ts.map +1 -1
  28. package/lib/aws/function.js +35 -26
  29. package/lib/aws/function.js.map +1 -1
  30. package/lib/aws/policy-attachment.d.ts.map +1 -1
  31. package/lib/aws/policy-attachment.js +2 -1
  32. package/lib/aws/policy-attachment.js.map +1 -1
  33. package/lib/aws/policy.d.ts +8 -2
  34. package/lib/aws/policy.d.ts.map +1 -1
  35. package/lib/aws/policy.js +13 -4
  36. package/lib/aws/policy.js.map +1 -1
  37. package/lib/aws/queue.d.ts +8 -2
  38. package/lib/aws/queue.d.ts.map +1 -1
  39. package/lib/aws/queue.js +22 -14
  40. package/lib/aws/queue.js.map +1 -1
  41. package/lib/aws/role.d.ts +8 -2
  42. package/lib/aws/role.d.ts.map +1 -1
  43. package/lib/aws/role.js +10 -3
  44. package/lib/aws/role.js.map +1 -1
  45. package/lib/aws/ses.d.ts +1 -1
  46. package/lib/aws/ses.d.ts.map +1 -1
  47. package/lib/aws/ses.js +2 -1
  48. package/lib/aws/ses.js.map +1 -1
  49. package/lib/aws/ssm-parameter.d.ts +8 -2
  50. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  51. package/lib/aws/ssm-parameter.js +15 -10
  52. package/lib/aws/ssm-parameter.js.map +1 -1
  53. package/lib/aws/table.d.ts +8 -2
  54. package/lib/aws/table.d.ts.map +1 -1
  55. package/lib/aws/table.js +17 -9
  56. package/lib/aws/table.js.map +1 -1
  57. package/lib/cloudflare/account-api-token.d.ts +2 -2
  58. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  59. package/lib/cloudflare/account-api-token.js +7 -6
  60. package/lib/cloudflare/account-api-token.js.map +1 -1
  61. package/lib/cloudflare/ai-gateway.d.ts +9 -4
  62. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  63. package/lib/cloudflare/ai-gateway.js +20 -24
  64. package/lib/cloudflare/ai-gateway.js.map +1 -1
  65. package/lib/cloudflare/api-schema.d.ts +2 -2
  66. package/lib/cloudflare/api-schema.d.ts.map +1 -1
  67. package/lib/cloudflare/api-schema.js +6 -2
  68. package/lib/cloudflare/api-schema.js.map +1 -1
  69. package/lib/cloudflare/api-shield.d.ts +5 -1
  70. package/lib/cloudflare/api-shield.d.ts.map +1 -1
  71. package/lib/cloudflare/api-shield.js +6 -1
  72. package/lib/cloudflare/api-shield.js.map +1 -1
  73. package/lib/cloudflare/assets.d.ts +1 -1
  74. package/lib/cloudflare/assets.d.ts.map +1 -1
  75. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  76. package/lib/cloudflare/astro/astro.js +3 -1
  77. package/lib/cloudflare/astro/astro.js.map +1 -1
  78. package/lib/cloudflare/astro/plugin.d.ts +2 -1
  79. package/lib/cloudflare/astro/plugin.d.ts.map +1 -1
  80. package/lib/cloudflare/astro/plugin.js.map +1 -1
  81. package/lib/cloudflare/bindings.d.ts +2 -2
  82. package/lib/cloudflare/bindings.d.ts.map +1 -1
  83. package/lib/cloudflare/bound.d.ts +1 -1
  84. package/lib/cloudflare/bound.d.ts.map +1 -1
  85. package/lib/cloudflare/bucket.d.ts +120 -1
  86. package/lib/cloudflare/bucket.d.ts.map +1 -1
  87. package/lib/cloudflare/bucket.js +80 -2
  88. package/lib/cloudflare/bucket.js.map +1 -1
  89. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  90. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  91. package/lib/cloudflare/container.d.ts +10 -4
  92. package/lib/cloudflare/container.d.ts.map +1 -1
  93. package/lib/cloudflare/container.js +12 -9
  94. package/lib/cloudflare/container.js.map +1 -1
  95. package/lib/cloudflare/custom-domain.js +2 -1
  96. package/lib/cloudflare/custom-domain.js.map +1 -1
  97. package/lib/cloudflare/d1-database.d.ts +1 -1
  98. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  99. package/lib/cloudflare/d1-database.js +6 -2
  100. package/lib/cloudflare/d1-database.js.map +1 -1
  101. package/lib/cloudflare/dispatch-namespace.d.ts +2 -0
  102. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  103. package/lib/cloudflare/dispatch-namespace.js +7 -5
  104. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  105. package/lib/cloudflare/hyperdrive.d.ts +7 -1
  106. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  107. package/lib/cloudflare/hyperdrive.js +2 -1
  108. package/lib/cloudflare/hyperdrive.js.map +1 -1
  109. package/lib/cloudflare/kv-namespace.d.ts +3 -0
  110. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  111. package/lib/cloudflare/kv-namespace.js +11 -2
  112. package/lib/cloudflare/kv-namespace.js.map +1 -1
  113. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +3 -1
  114. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  115. package/lib/cloudflare/miniflare/paths.d.ts +4 -0
  116. package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
  117. package/lib/cloudflare/miniflare/paths.js +11 -0
  118. package/lib/cloudflare/miniflare/paths.js.map +1 -1
  119. package/lib/cloudflare/pipeline.d.ts +14 -3
  120. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  121. package/lib/cloudflare/pipeline.js +31 -2
  122. package/lib/cloudflare/pipeline.js.map +1 -1
  123. package/lib/cloudflare/queue-consumer.js +1 -1
  124. package/lib/cloudflare/queue-consumer.js.map +1 -1
  125. package/lib/cloudflare/queue.d.ts +4 -2
  126. package/lib/cloudflare/queue.d.ts.map +1 -1
  127. package/lib/cloudflare/queue.js +13 -9
  128. package/lib/cloudflare/queue.js.map +1 -1
  129. package/lib/cloudflare/react-router/plugin.d.ts +1 -1
  130. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  131. package/lib/cloudflare/react-router/react-router.d.ts.map +1 -1
  132. package/lib/cloudflare/react-router/react-router.js +32 -2
  133. package/lib/cloudflare/react-router/react-router.js.map +1 -1
  134. package/lib/cloudflare/redwood/plugin.d.ts +2 -1
  135. package/lib/cloudflare/redwood/plugin.d.ts.map +1 -1
  136. package/lib/cloudflare/redwood/plugin.js.map +1 -1
  137. package/lib/cloudflare/route.js +1 -1
  138. package/lib/cloudflare/route.js.map +1 -1
  139. package/lib/cloudflare/ruleset.d.ts +3 -1
  140. package/lib/cloudflare/ruleset.d.ts.map +1 -1
  141. package/lib/cloudflare/ruleset.js +3 -2
  142. package/lib/cloudflare/ruleset.js.map +1 -1
  143. package/lib/cloudflare/secret.d.ts +6 -23
  144. package/lib/cloudflare/secret.d.ts.map +1 -1
  145. package/lib/cloudflare/secret.js +8 -4
  146. package/lib/cloudflare/secret.js.map +1 -1
  147. package/lib/cloudflare/secrets-store.d.ts +1 -1
  148. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  149. package/lib/cloudflare/secrets-store.js +5 -2
  150. package/lib/cloudflare/secrets-store.js.map +1 -1
  151. package/lib/cloudflare/tunnel.d.ts +5 -1
  152. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  153. package/lib/cloudflare/tunnel.js +5 -1
  154. package/lib/cloudflare/tunnel.js.map +1 -1
  155. package/lib/cloudflare/vectorize-index.d.ts +7 -1
  156. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  157. package/lib/cloudflare/vectorize-index.js +5 -2
  158. package/lib/cloudflare/vectorize-index.js.map +1 -1
  159. package/lib/cloudflare/vite/plugin.d.ts +2 -1
  160. package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
  161. package/lib/cloudflare/vite/plugin.js.map +1 -1
  162. package/lib/cloudflare/website.js +1 -1
  163. package/lib/cloudflare/website.js.map +1 -1
  164. package/lib/cloudflare/worker.d.ts +1 -1
  165. package/lib/cloudflare/worker.d.ts.map +1 -1
  166. package/lib/cloudflare/worker.js +12 -7
  167. package/lib/cloudflare/worker.js.map +1 -1
  168. package/lib/cloudflare/wrangler.json.d.ts +1 -1
  169. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  170. package/lib/cloudflare/wrangler.json.js +5 -3
  171. package/lib/cloudflare/wrangler.json.js.map +1 -1
  172. package/lib/docker/container.d.ts +6 -0
  173. package/lib/docker/container.d.ts.map +1 -1
  174. package/lib/docker/container.js +5 -1
  175. package/lib/docker/container.js.map +1 -1
  176. package/lib/docker/network.d.ts +8 -2
  177. package/lib/docker/network.d.ts.map +1 -1
  178. package/lib/docker/network.js +7 -2
  179. package/lib/docker/network.js.map +1 -1
  180. package/lib/docker/volume.d.ts +8 -2
  181. package/lib/docker/volume.d.ts.map +1 -1
  182. package/lib/docker/volume.js +6 -4
  183. package/lib/docker/volume.js.map +1 -1
  184. package/lib/esbuild/bundle.d.ts +1 -1
  185. package/lib/fs/index.d.ts +0 -8
  186. package/lib/fs/index.d.ts.map +1 -1
  187. package/lib/fs/index.js +0 -8
  188. package/lib/fs/index.js.map +1 -1
  189. package/lib/github/client.d.ts +1 -1
  190. package/lib/github/client.d.ts.map +1 -1
  191. package/lib/github/client.js +2 -1
  192. package/lib/github/client.js.map +1 -1
  193. package/lib/github/repository-environment.d.ts +8 -2
  194. package/lib/github/repository-environment.d.ts.map +1 -1
  195. package/lib/github/repository-environment.js +16 -12
  196. package/lib/github/repository-environment.js.map +1 -1
  197. package/lib/neon/project.d.ts +7 -1
  198. package/lib/neon/project.d.ts.map +1 -1
  199. package/lib/neon/project.js +10 -6
  200. package/lib/neon/project.js.map +1 -1
  201. package/lib/planetscale/branch.d.ts +4 -2
  202. package/lib/planetscale/branch.d.ts.map +1 -1
  203. package/lib/planetscale/branch.js +18 -12
  204. package/lib/planetscale/branch.js.map +1 -1
  205. package/lib/planetscale/database.d.ts +8 -2
  206. package/lib/planetscale/database.d.ts.map +1 -1
  207. package/lib/planetscale/database.js +24 -16
  208. package/lib/planetscale/database.js.map +1 -1
  209. package/lib/planetscale/password.d.ts +8 -2
  210. package/lib/planetscale/password.d.ts.map +1 -1
  211. package/lib/planetscale/password.js +2 -2
  212. package/lib/planetscale/password.js.map +1 -1
  213. package/lib/resource.d.ts +0 -2
  214. package/lib/resource.d.ts.map +1 -1
  215. package/lib/resource.js +1 -9
  216. package/lib/resource.js.map +1 -1
  217. package/lib/scope.d.ts +9 -3
  218. package/lib/scope.d.ts.map +1 -1
  219. package/lib/scope.js +21 -34
  220. package/lib/scope.js.map +1 -1
  221. package/lib/sentry/client-key.d.ts +7 -1
  222. package/lib/sentry/client-key.d.ts.map +1 -1
  223. package/lib/sentry/client-key.js +45 -6
  224. package/lib/sentry/client-key.js.map +1 -1
  225. package/lib/sentry/project.d.ts +8 -2
  226. package/lib/sentry/project.d.ts.map +1 -1
  227. package/lib/sentry/project.js +35 -5
  228. package/lib/sentry/project.js.map +1 -1
  229. package/lib/sentry/team.d.ts +8 -2
  230. package/lib/sentry/team.d.ts.map +1 -1
  231. package/lib/sentry/team.js +36 -6
  232. package/lib/sentry/team.js.map +1 -1
  233. package/lib/serde.d.ts +0 -5
  234. package/lib/serde.d.ts.map +1 -1
  235. package/lib/serde.js +0 -28
  236. package/lib/serde.js.map +1 -1
  237. package/lib/state/d1-state-store.d.ts +1 -1
  238. package/lib/state/d1-state-store.d.ts.map +1 -1
  239. package/lib/state/d1-state-store.js +5 -5
  240. package/lib/state/d1-state-store.js.map +1 -1
  241. package/lib/state/sqlite-state-store.d.ts.map +1 -1
  242. package/lib/state/sqlite-state-store.js +7 -11
  243. package/lib/state/sqlite-state-store.js.map +1 -1
  244. package/lib/stripe/card.d.ts.map +1 -1
  245. package/lib/stripe/card.js +3 -2
  246. package/lib/stripe/card.js.map +1 -1
  247. package/lib/stripe/client.d.ts +2 -2
  248. package/lib/stripe/client.d.ts.map +1 -1
  249. package/lib/stripe/client.js +4 -3
  250. package/lib/stripe/client.js.map +1 -1
  251. package/lib/stripe/coupon.d.ts.map +1 -1
  252. package/lib/stripe/coupon.js +4 -3
  253. package/lib/stripe/coupon.js.map +1 -1
  254. package/lib/stripe/customer.js +2 -2
  255. package/lib/stripe/customer.js.map +1 -1
  256. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  257. package/lib/stripe/entitlements-feature.js +3 -2
  258. package/lib/stripe/entitlements-feature.js.map +1 -1
  259. package/lib/stripe/file.d.ts.map +1 -1
  260. package/lib/stripe/file.js +3 -2
  261. package/lib/stripe/file.js.map +1 -1
  262. package/lib/stripe/meter.js +2 -2
  263. package/lib/stripe/meter.js.map +1 -1
  264. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  265. package/lib/stripe/portal-configuration.js +3 -2
  266. package/lib/stripe/portal-configuration.js.map +1 -1
  267. package/lib/stripe/price.d.ts.map +1 -1
  268. package/lib/stripe/price.js +3 -2
  269. package/lib/stripe/price.js.map +1 -1
  270. package/lib/stripe/product-feature.d.ts.map +1 -1
  271. package/lib/stripe/product-feature.js +3 -2
  272. package/lib/stripe/product-feature.js.map +1 -1
  273. package/lib/stripe/product.d.ts.map +1 -1
  274. package/lib/stripe/product.js +3 -2
  275. package/lib/stripe/product.js.map +1 -1
  276. package/lib/stripe/promotion-code.d.ts.map +1 -1
  277. package/lib/stripe/promotion-code.js +3 -2
  278. package/lib/stripe/promotion-code.js.map +1 -1
  279. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  280. package/lib/stripe/shipping-rate.js +4 -3
  281. package/lib/stripe/shipping-rate.js.map +1 -1
  282. package/lib/stripe/tax-rate.d.ts.map +1 -1
  283. package/lib/stripe/tax-rate.js +3 -2
  284. package/lib/stripe/tax-rate.js.map +1 -1
  285. package/lib/stripe/webhook.d.ts.map +1 -1
  286. package/lib/stripe/webhook.js +4 -3
  287. package/lib/stripe/webhook.js.map +1 -1
  288. package/lib/test/vitest.d.ts.map +1 -1
  289. package/lib/test/vitest.js +1 -0
  290. package/lib/test/vitest.js.map +1 -1
  291. package/lib/upstash/redis.d.ts +8 -2
  292. package/lib/upstash/redis.d.ts.map +1 -1
  293. package/lib/upstash/redis.js +5 -4
  294. package/lib/upstash/redis.js.map +1 -1
  295. package/lib/util/ignore-matcher.d.ts.map +1 -1
  296. package/lib/util/ignore-matcher.js +3 -1
  297. package/lib/util/ignore-matcher.js.map +1 -1
  298. package/lib/util/peer.d.ts +10 -0
  299. package/lib/util/peer.d.ts.map +1 -0
  300. package/lib/util/peer.js +42 -0
  301. package/lib/util/peer.js.map +1 -0
  302. package/lib/vercel/project.d.ts +7 -1
  303. package/lib/vercel/project.d.ts.map +1 -1
  304. package/lib/vercel/project.js +28 -0
  305. package/lib/vercel/project.js.map +1 -1
  306. package/package.json +88 -74
  307. package/src/alchemy.ts +76 -222
  308. package/src/apply.ts +6 -19
  309. package/src/aws/account-id.ts +6 -3
  310. package/src/aws/bucket.ts +43 -32
  311. package/src/aws/ec2/security-group.ts +15 -3
  312. package/src/aws/function.ts +65 -39
  313. package/src/aws/policy-attachment.ts +10 -6
  314. package/src/aws/policy.ts +33 -15
  315. package/src/aws/queue.ts +50 -29
  316. package/src/aws/role.ts +37 -20
  317. package/src/aws/ses.ts +24 -20
  318. package/src/aws/ssm-parameter.ts +40 -20
  319. package/src/aws/table.ts +35 -17
  320. package/src/cloudflare/account-api-token.ts +9 -7
  321. package/src/cloudflare/ai-gateway.ts +37 -34
  322. package/src/cloudflare/api-schema.ts +33 -26
  323. package/src/cloudflare/api-shield.ts +15 -2
  324. package/src/cloudflare/astro/astro.ts +5 -1
  325. package/src/cloudflare/astro/plugin.ts +2 -1
  326. package/src/cloudflare/bindings.ts +2 -2
  327. package/src/cloudflare/bound.ts +1 -1
  328. package/src/cloudflare/bucket.ts +242 -3
  329. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  330. package/src/cloudflare/container.ts +23 -12
  331. package/src/cloudflare/custom-domain.ts +2 -2
  332. package/src/cloudflare/d1-database.ts +10 -3
  333. package/src/cloudflare/dispatch-namespace.ts +10 -7
  334. package/src/cloudflare/hyperdrive.ts +13 -3
  335. package/src/cloudflare/kv-namespace.ts +25 -2
  336. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +3 -1
  337. package/src/cloudflare/miniflare/paths.ts +13 -0
  338. package/src/cloudflare/pipeline.ts +76 -28
  339. package/src/cloudflare/queue-consumer.ts +1 -1
  340. package/src/cloudflare/queue.ts +26 -14
  341. package/src/cloudflare/react-router/react-router.ts +28 -2
  342. package/src/cloudflare/redwood/plugin.ts +3 -2
  343. package/src/cloudflare/route.ts +1 -1
  344. package/src/cloudflare/ruleset.ts +7 -2
  345. package/src/cloudflare/secret.ts +20 -31
  346. package/src/cloudflare/secrets-store.ts +7 -3
  347. package/src/cloudflare/tunnel.ts +13 -2
  348. package/src/cloudflare/vectorize-index.ts +14 -3
  349. package/src/cloudflare/vite/plugin.ts +3 -2
  350. package/src/cloudflare/website.ts +1 -1
  351. package/src/cloudflare/worker.ts +35 -23
  352. package/src/cloudflare/wrangler.json.ts +7 -4
  353. package/src/docker/container.ts +13 -1
  354. package/src/docker/network.ts +18 -3
  355. package/src/docker/volume.ts +17 -6
  356. package/src/fs/index.ts +0 -8
  357. package/src/github/client.ts +6 -2
  358. package/src/github/repository-environment.ts +27 -13
  359. package/src/neon/project.ts +20 -6
  360. package/src/planetscale/branch.ts +24 -13
  361. package/src/planetscale/database.ts +38 -17
  362. package/src/planetscale/password.ts +10 -3
  363. package/src/resource.ts +1 -10
  364. package/src/scope.ts +29 -38
  365. package/src/sentry/client-key.ts +74 -6
  366. package/src/sentry/project.ts +59 -6
  367. package/src/sentry/team.ts +55 -7
  368. package/src/serde.ts +0 -44
  369. package/src/state/d1-state-store.ts +13 -6
  370. package/src/state/sqlite-state-store.ts +16 -17
  371. package/src/stripe/card.ts +5 -2
  372. package/src/stripe/client.ts +10 -3
  373. package/src/stripe/coupon.ts +4 -3
  374. package/src/stripe/customer.ts +2 -2
  375. package/src/stripe/entitlements-feature.ts +5 -2
  376. package/src/stripe/file.ts +3 -2
  377. package/src/stripe/meter.ts +2 -2
  378. package/src/stripe/portal-configuration.ts +5 -2
  379. package/src/stripe/price.ts +3 -2
  380. package/src/stripe/product-feature.ts +5 -2
  381. package/src/stripe/product.ts +3 -2
  382. package/src/stripe/promotion-code.ts +3 -2
  383. package/src/stripe/shipping-rate.ts +4 -3
  384. package/src/stripe/tax-rate.ts +3 -2
  385. package/src/stripe/webhook.ts +4 -3
  386. package/src/test/vitest.ts +1 -0
  387. package/src/upstash/redis.ts +15 -5
  388. package/src/util/ignore-matcher.ts +3 -1
  389. package/src/util/peer.ts +53 -0
  390. package/src/vercel/project.ts +46 -1
  391. package/templates/hono/README.md +19 -0
  392. package/templates/hono/_env +1 -0
  393. package/templates/hono/_env.example +1 -0
  394. package/templates/hono/_gitignore +34 -0
  395. package/templates/hono/alchemy.run.ts +22 -0
  396. package/templates/hono/package.json +18 -0
  397. package/templates/hono/src/index.ts +17 -0
  398. package/templates/hono/tsconfig.json +13 -0
  399. package/templates/hono/types/env.d.ts +16 -0
  400. package/templates/react-router/vite.config.ts +5 -3
  401. package/workers/cloudflare-state-store.js +69 -74
  402. package/workers/dofs-state-store.js +1 -1
  403. package/bin/bootstrap-s3.ts +0 -255
  404. package/lib/ai/ark.d.ts +0 -12
  405. package/lib/ai/ark.d.ts.map +0 -1
  406. package/lib/ai/ark.js +0 -87
  407. package/lib/ai/ark.js.map +0 -1
  408. package/lib/ai/astro-file.d.ts +0 -138
  409. package/lib/ai/astro-file.d.ts.map +0 -1
  410. package/lib/ai/astro-file.js +0 -158
  411. package/lib/ai/astro-file.js.map +0 -1
  412. package/lib/ai/client.d.ts +0 -51
  413. package/lib/ai/client.d.ts.map +0 -1
  414. package/lib/ai/client.js +0 -58
  415. package/lib/ai/client.js.map +0 -1
  416. package/lib/ai/css-file.d.ts +0 -132
  417. package/lib/ai/css-file.d.ts.map +0 -1
  418. package/lib/ai/css-file.js +0 -142
  419. package/lib/ai/css-file.js.map +0 -1
  420. package/lib/ai/data.d.ts +0 -152
  421. package/lib/ai/data.d.ts.map +0 -1
  422. package/lib/ai/data.js +0 -120
  423. package/lib/ai/data.js.map +0 -1
  424. package/lib/ai/document.d.ts +0 -208
  425. package/lib/ai/document.d.ts.map +0 -1
  426. package/lib/ai/document.js +0 -206
  427. package/lib/ai/document.js.map +0 -1
  428. package/lib/ai/html-file.d.ts +0 -129
  429. package/lib/ai/html-file.d.ts.map +0 -1
  430. package/lib/ai/html-file.js +0 -139
  431. package/lib/ai/html-file.js.map +0 -1
  432. package/lib/ai/index.d.ts +0 -11
  433. package/lib/ai/index.d.ts.map +0 -1
  434. package/lib/ai/index.js +0 -11
  435. package/lib/ai/index.js.map +0 -1
  436. package/lib/ai/json-file.d.ts +0 -161
  437. package/lib/ai/json-file.d.ts.map +0 -1
  438. package/lib/ai/json-file.js +0 -188
  439. package/lib/ai/json-file.js.map +0 -1
  440. package/lib/ai/typescript-file.d.ts +0 -140
  441. package/lib/ai/typescript-file.d.ts.map +0 -1
  442. package/lib/ai/typescript-file.js +0 -146
  443. package/lib/ai/typescript-file.js.map +0 -1
  444. package/lib/ai/vue-file.d.ts +0 -127
  445. package/lib/ai/vue-file.d.ts.map +0 -1
  446. package/lib/ai/vue-file.js +0 -137
  447. package/lib/ai/vue-file.js.map +0 -1
  448. package/lib/ai/yaml-file.d.ts +0 -170
  449. package/lib/ai/yaml-file.d.ts.map +0 -1
  450. package/lib/ai/yaml-file.js +0 -201
  451. package/lib/ai/yaml-file.js.map +0 -1
  452. package/lib/fs/static-astro-file.d.ts +0 -35
  453. package/lib/fs/static-astro-file.d.ts.map +0 -1
  454. package/lib/fs/static-astro-file.js +0 -40
  455. package/lib/fs/static-astro-file.js.map +0 -1
  456. package/lib/fs/static-css-file.d.ts +0 -25
  457. package/lib/fs/static-css-file.d.ts.map +0 -1
  458. package/lib/fs/static-css-file.js +0 -30
  459. package/lib/fs/static-css-file.js.map +0 -1
  460. package/lib/fs/static-html-file.d.ts +0 -32
  461. package/lib/fs/static-html-file.d.ts.map +0 -1
  462. package/lib/fs/static-html-file.js +0 -37
  463. package/lib/fs/static-html-file.js.map +0 -1
  464. package/lib/fs/static-json-file.d.ts +0 -18
  465. package/lib/fs/static-json-file.d.ts.map +0 -1
  466. package/lib/fs/static-json-file.js +0 -19
  467. package/lib/fs/static-json-file.js.map +0 -1
  468. package/lib/fs/static-text-file.d.ts +0 -13
  469. package/lib/fs/static-text-file.d.ts.map +0 -1
  470. package/lib/fs/static-text-file.js +0 -9
  471. package/lib/fs/static-text-file.js.map +0 -1
  472. package/lib/fs/static-typescript-file.d.ts +0 -20
  473. package/lib/fs/static-typescript-file.d.ts.map +0 -1
  474. package/lib/fs/static-typescript-file.js +0 -16
  475. package/lib/fs/static-typescript-file.js.map +0 -1
  476. package/lib/fs/static-vue-file.d.ts +0 -29
  477. package/lib/fs/static-vue-file.d.ts.map +0 -1
  478. package/lib/fs/static-vue-file.js +0 -34
  479. package/lib/fs/static-vue-file.js.map +0 -1
  480. package/lib/fs/static-yaml-file.d.ts +0 -23
  481. package/lib/fs/static-yaml-file.d.ts.map +0 -1
  482. package/lib/fs/static-yaml-file.js +0 -10
  483. package/lib/fs/static-yaml-file.js.map +0 -1
  484. package/lib/internal/docs/providers.d.ts +0 -34
  485. package/lib/internal/docs/providers.d.ts.map +0 -1
  486. package/lib/internal/docs/providers.js +0 -200
  487. package/lib/internal/docs/providers.js.map +0 -1
  488. package/lib/runtime/bind.d.ts +0 -25
  489. package/lib/runtime/bind.d.ts.map +0 -1
  490. package/lib/runtime/bind.js +0 -76
  491. package/lib/runtime/bind.js.map +0 -1
  492. package/lib/runtime/global.d.ts +0 -8
  493. package/lib/runtime/global.d.ts.map +0 -1
  494. package/lib/runtime/global.js +0 -3
  495. package/lib/runtime/global.js.map +0 -1
  496. package/lib/runtime/plugin.d.ts +0 -35
  497. package/lib/runtime/plugin.d.ts.map +0 -1
  498. package/lib/runtime/plugin.js +0 -134
  499. package/lib/runtime/plugin.js.map +0 -1
  500. package/lib/runtime/shims.d.ts +0 -6
  501. package/lib/runtime/shims.d.ts.map +0 -1
  502. package/lib/runtime/shims.js +0 -27
  503. package/lib/runtime/shims.js.map +0 -1
  504. package/lib/runtime/state.d.ts +0 -5
  505. package/lib/runtime/state.d.ts.map +0 -1
  506. package/lib/runtime/state.js +0 -4
  507. package/lib/runtime/state.js.map +0 -1
  508. package/lib/web/astro.d.ts +0 -148
  509. package/lib/web/astro.d.ts.map +0 -1
  510. package/lib/web/astro.js +0 -419
  511. package/lib/web/astro.js.map +0 -1
  512. package/lib/web/shadcn-component.d.ts +0 -30
  513. package/lib/web/shadcn-component.d.ts.map +0 -1
  514. package/lib/web/shadcn-component.js +0 -25
  515. package/lib/web/shadcn-component.js.map +0 -1
  516. package/lib/web/shadcn.d.ts +0 -98
  517. package/lib/web/shadcn.d.ts.map +0 -1
  518. package/lib/web/shadcn.js +0 -102
  519. package/lib/web/shadcn.js.map +0 -1
  520. package/lib/web/tailwind.d.ts +0 -65
  521. package/lib/web/tailwind.d.ts.map +0 -1
  522. package/lib/web/tailwind.js +0 -98
  523. package/lib/web/tailwind.js.map +0 -1
  524. package/lib/web/vite.d.ts +0 -96
  525. package/lib/web/vite.d.ts.map +0 -1
  526. package/lib/web/vite.js +0 -232
  527. package/lib/web/vite.js.map +0 -1
  528. package/lib/web/vitepress/config.d.ts +0 -12
  529. package/lib/web/vitepress/config.d.ts.map +0 -1
  530. package/lib/web/vitepress/config.js +0 -33
  531. package/lib/web/vitepress/config.js.map +0 -1
  532. package/lib/web/vitepress/custom-theme.d.ts +0 -174
  533. package/lib/web/vitepress/custom-theme.d.ts.map +0 -1
  534. package/lib/web/vitepress/custom-theme.js +0 -337
  535. package/lib/web/vitepress/custom-theme.js.map +0 -1
  536. package/lib/web/vitepress/dependencies.d.ts +0 -13
  537. package/lib/web/vitepress/dependencies.d.ts.map +0 -1
  538. package/lib/web/vitepress/dependencies.js +0 -37
  539. package/lib/web/vitepress/dependencies.js.map +0 -1
  540. package/lib/web/vitepress/home-page.d.ts +0 -247
  541. package/lib/web/vitepress/home-page.d.ts.map +0 -1
  542. package/lib/web/vitepress/home-page.js +0 -146
  543. package/lib/web/vitepress/home-page.js.map +0 -1
  544. package/lib/web/vitepress/index.d.ts +0 -6
  545. package/lib/web/vitepress/index.d.ts.map +0 -1
  546. package/lib/web/vitepress/index.js +0 -6
  547. package/lib/web/vitepress/index.js.map +0 -1
  548. package/lib/web/vitepress/process-front-matter-files.d.ts +0 -19
  549. package/lib/web/vitepress/process-front-matter-files.d.ts.map +0 -1
  550. package/lib/web/vitepress/process-front-matter-files.js +0 -73
  551. package/lib/web/vitepress/process-front-matter-files.js.map +0 -1
  552. package/lib/web/vitepress/vitepress.d.ts +0 -75
  553. package/lib/web/vitepress/vitepress.d.ts.map +0 -1
  554. package/lib/web/vitepress/vitepress.js +0 -254
  555. package/lib/web/vitepress/vitepress.js.map +0 -1
  556. package/src/ai/ark.ts +0 -118
  557. package/src/ai/astro-file.ts +0 -270
  558. package/src/ai/client.ts +0 -117
  559. package/src/ai/css-file.ts +0 -247
  560. package/src/ai/data.ts +0 -221
  561. package/src/ai/document.ts +0 -367
  562. package/src/ai/html-file.ts +0 -244
  563. package/src/ai/index.ts +0 -10
  564. package/src/ai/json-file.ts +0 -325
  565. package/src/ai/typescript-file.ts +0 -259
  566. package/src/ai/vue-file.ts +0 -242
  567. package/src/ai/yaml-file.ts +0 -328
  568. package/src/fs/static-astro-file.ts +0 -45
  569. package/src/fs/static-css-file.ts +0 -35
  570. package/src/fs/static-html-file.ts +0 -42
  571. package/src/fs/static-json-file.ts +0 -38
  572. package/src/fs/static-text-file.ts +0 -23
  573. package/src/fs/static-typescript-file.ts +0 -37
  574. package/src/fs/static-vue-file.ts +0 -39
  575. package/src/fs/static-yaml-file.ts +0 -33
  576. package/src/internal/docs/providers.ts +0 -286
  577. package/src/runtime/bind.ts +0 -95
  578. package/src/runtime/global.ts +0 -10
  579. package/src/runtime/plugin.ts +0 -163
  580. package/src/runtime/shims.js +0 -34
  581. package/src/runtime/state.ts +0 -9
  582. package/src/web/astro.ts +0 -643
  583. package/src/web/shadcn-component.ts +0 -72
  584. package/src/web/shadcn.ts +0 -221
  585. package/src/web/tailwind.ts +0 -167
  586. package/src/web/vite.ts +0 -407
  587. package/src/web/vitepress/config.ts +0 -50
  588. package/src/web/vitepress/custom-theme.ts +0 -514
  589. package/src/web/vitepress/dependencies.ts +0 -69
  590. package/src/web/vitepress/home-page.ts +0 -378
  591. package/src/web/vitepress/index.ts +0 -5
  592. package/src/web/vitepress/process-front-matter-files.ts +0 -107
  593. package/src/web/vitepress/vitepress.ts +0 -372
  594. package/templates/sveltekit/bun.lock +0 -1099
@@ -88,7 +88,7 @@ export interface AccountApiTokenProps extends CloudflareApiOptions {
88
88
  /**
89
89
  * Name of the token
90
90
  */
91
- name: string;
91
+ name?: string;
92
92
 
93
93
  /**
94
94
  * Policies that define what the token can access
@@ -252,12 +252,14 @@ export const AccountApiToken = Resource(
252
252
  "cloudflare::AccountApiToken",
253
253
  async function (
254
254
  this: Context<AccountApiToken>,
255
- _id: string,
255
+ id: string,
256
256
  props: AccountApiTokenProps,
257
257
  ): Promise<AccountApiToken> {
258
258
  // Create Cloudflare API client with automatic account discovery
259
259
  const api = await createCloudflareApi(props);
260
260
 
261
+ const tokenName = props.name ?? this.scope.createPhysicalName(id);
262
+
261
263
  if (this.phase === "delete") {
262
264
  // Delete token if we have an ID
263
265
  if (this.output?.id) {
@@ -270,10 +272,10 @@ export const AccountApiToken = Resource(
270
272
  const errorData: any = await deleteResponse.json().catch(() => ({
271
273
  errors: [{ message: deleteResponse.statusText }],
272
274
  }));
273
- logger.error(`Error deleting token '${props.name}':`, errorData);
275
+ logger.error(`Error deleting token '${tokenName}':`, errorData);
274
276
  }
275
277
  } catch (error) {
276
- logger.error(`Error deleting token '${props.name}':`, error);
278
+ logger.error(`Error deleting token '${tokenName}':`, error);
277
279
  }
278
280
  }
279
281
 
@@ -288,7 +290,7 @@ export const AccountApiToken = Resource(
288
290
 
289
291
  // Transform our properties to API format
290
292
  const apiPayload = {
291
- name: props.name,
293
+ name: tokenName,
292
294
  policies: props.policies.map((policy) => ({
293
295
  effect: policy.effect,
294
296
  permission_groups: policy.permissionGroups.map((pg) =>
@@ -362,7 +364,7 @@ export const AccountApiToken = Resource(
362
364
  }));
363
365
 
364
366
  throw new Error(
365
- `Error ${this.phase === "update" ? "updating" : "creating"} token '${props.name}': ${
367
+ `Error ${this.phase === "update" ? "updating" : "creating"} token '${tokenName}': ${
366
368
  errorData.errors?.[0]?.message || response.statusText
367
369
  }`,
368
370
  );
@@ -376,7 +378,7 @@ export const AccountApiToken = Resource(
376
378
  } else {
377
379
  if (!this.output?.value) {
378
380
  throw new Error(
379
- `Token '${props.name}' was created but we have no record of its value. Try deleting and recreating the token.`,
381
+ `Token '${tokenName}' was created but we have no record of its value. Try deleting and recreating the token.`,
380
382
  );
381
383
  }
382
384
  tokenValue = this.output?.value;
@@ -1,15 +1,19 @@
1
1
  import type { Context } from "../context.ts";
2
2
  import { Resource } from "../resource.ts";
3
- import { bind } from "../runtime/bind.ts";
4
3
  import { logger } from "../util/logger.ts";
5
4
  import { handleApiError } from "./api-error.ts";
6
5
  import { createCloudflareApi, type CloudflareApiOptions } from "./api.ts";
7
- import type { Bound } from "./bound.ts";
8
6
 
9
7
  /**
10
8
  * Properties for creating or updating a Cloudflare AI Gateway.
11
9
  */
12
10
  export interface AiGatewayProps extends CloudflareApiOptions {
11
+ /**
12
+ * Name of the AI Gateway.
13
+ *
14
+ * @default ${app.name}-${app.stage}-${id}
15
+ */
16
+ gatewayName?: string;
13
17
  /**
14
18
  * Invalidate cache on update.
15
19
  * @default true
@@ -88,7 +92,7 @@ export interface AiGatewayProps extends CloudflareApiOptions {
88
92
  * Output returned after Cloudflare AI Gateway creation/update.
89
93
  * IMPORTANT: The interface name MUST match the exported resource name.
90
94
  */
91
- export interface AiGatewayResource
95
+ export interface AiGateway
92
96
  extends Resource<"cloudflare::AiGateway">,
93
97
  AiGatewayProps {
94
98
  /**
@@ -128,8 +132,6 @@ export interface AiGatewayResource
128
132
  type: "ai_gateway";
129
133
  }
130
134
 
131
- export type AiGateway = AiGatewayResource & Bound<AiGatewayResource>;
132
-
133
135
  /**
134
136
  * Represents a Cloudflare AI Gateway.
135
137
  *
@@ -154,30 +156,25 @@ export type AiGateway = AiGatewayResource & Bound<AiGatewayResource>;
154
156
  * logpushPublicKey: "mypublickey..." // Replace with actual public key
155
157
  * });
156
158
  */
157
- export async function AiGateway(
158
- name: string,
159
- props: AiGatewayProps = {},
160
- ): Promise<AiGateway> {
161
- const gateway = await AiGatewayResource(name, props);
162
- const binding = await bind(gateway);
163
- return {
164
- ...gateway,
165
- getLog: binding.getLog,
166
- getUrl: binding.getUrl,
167
- patchLog: binding.patchLog,
168
- run: binding.run,
169
- } as AiGateway;
170
- }
171
-
172
- const AiGatewayResource = Resource(
159
+ export const AiGateway = Resource(
173
160
  "cloudflare::AiGateway",
174
161
  async function (
175
- this: Context<AiGatewayResource>,
162
+ this: Context<AiGateway>,
176
163
  id: string,
177
164
  props: AiGatewayProps = {},
178
- ): Promise<AiGatewayResource> {
165
+ ): Promise<AiGateway> {
179
166
  const api = await createCloudflareApi(props);
180
- const gatewayPath = `/accounts/${api.accountId}/ai-gateway/gateways/${id}`;
167
+ const gatewayName =
168
+ props.gatewayName ??
169
+ this.output?.gatewayName ??
170
+ this.output?.id ?? // name and ID are the same
171
+ this.scope.createPhysicalName(id);
172
+
173
+ if (this.phase === "update" && this.output?.id !== gatewayName) {
174
+ this.replace();
175
+ }
176
+
177
+ const gatewayPath = `/accounts/${api.accountId}/ai-gateway/gateways/${gatewayName}`;
181
178
  const gatewaysPath = `/accounts/${api.accountId}/ai-gateway/gateways`;
182
179
 
183
180
  if (this.phase === "delete") {
@@ -185,10 +182,15 @@ const AiGatewayResource = Resource(
185
182
  const deleteResponse = await api.delete(gatewayPath);
186
183
  // Only swallow 404 Not Found errors, all other errors should be handled
187
184
  if (!deleteResponse.ok && deleteResponse.status !== 404) {
188
- await handleApiError(deleteResponse, "delete", "ai gateway", id);
185
+ await handleApiError(
186
+ deleteResponse,
187
+ "delete",
188
+ "ai gateway",
189
+ gatewayName,
190
+ );
189
191
  }
190
192
  } catch (error) {
191
- logger.error(`Error deleting AI Gateway ${id}:`, error);
193
+ logger.error(`Error deleting AI Gateway ${gatewayName}:`, error);
192
194
  throw error;
193
195
  }
194
196
  return this.destroy();
@@ -211,37 +213,37 @@ const AiGatewayResource = Resource(
211
213
  try {
212
214
  if (this.phase === "update") {
213
215
  // Update existing gateway (PUT request)
214
- const requestBody = mapPropsToApi(id, mergedProps, false);
216
+ const requestBody = mapPropsToApi(gatewayName, mergedProps, false);
215
217
  response = await api.put(gatewayPath, requestBody);
216
218
  } else {
217
- // Check if gateway exists before creating (to avoid conflict)
219
+ // Check if gateway exists before creating (to avogatewayName conflict)
218
220
  const getResponse = await api.get(gatewayPath);
219
221
  if (getResponse.status === 200) {
220
222
  // Gateway exists, treat as update (PUT)
221
223
  logger.log(
222
- `AI Gateway '${id}' already exists. Updating existing resource.`,
224
+ `AI Gateway '${gatewayName}' already exists. Updating existing resource.`,
223
225
  );
224
- const requestBody = mapPropsToApi(id, mergedProps, false);
226
+ const requestBody = mapPropsToApi(gatewayName, mergedProps, false);
225
227
  response = await api.put(gatewayPath, requestBody);
226
228
  } else if (getResponse.status === 404) {
227
229
  // Gateway doesn't exist, create new (POST request)
228
- const requestBody = mapPropsToApi(id, mergedProps, true); // Include 'id' in POST body
230
+ const requestBody = mapPropsToApi(gatewayName, mergedProps, true); // Include 'gatewayName' in POST body
229
231
  response = await api.post(gatewaysPath, requestBody);
230
232
  } else {
231
233
  // Unexpected error during GET check
232
- await handleApiError(getResponse, "get", "ai gateway", id);
234
+ await handleApiError(getResponse, "get", "ai gateway", gatewayName);
233
235
  }
234
236
  }
235
237
 
236
238
  if (!response?.ok) {
237
239
  const action = this.phase === "update" ? "update" : "create";
238
- await handleApiError(response!, action, "ai gateway", id);
240
+ await handleApiError(response!, action, "ai gateway", gatewayName);
239
241
  }
240
242
 
241
243
  const data: { result: Record<string, any> } = await response!.json();
242
244
  apiResource = data.result;
243
245
  } catch (error) {
244
- logger.error(`Error ${this.phase} AI Gateway '${id}':`, error);
246
+ logger.error(`Error ${this.phase} AI Gateway '${gatewayName}':`, error);
245
247
  throw error; // Re-throw the error to fail the deployment
246
248
  }
247
249
 
@@ -249,6 +251,7 @@ const AiGatewayResource = Resource(
249
251
  return this({
250
252
  ...mergedProps, // Start with the input props (including defaults)
251
253
  id: apiResource.id,
254
+ gatewayName,
252
255
  accountId: apiResource.account_id,
253
256
  accountTag: apiResource.account_tag,
254
257
  createdAt: apiResource.created_at,
@@ -48,33 +48,33 @@ export interface APISchemaProps<S extends OpenAPIV3.Document>
48
48
  /**
49
49
  * APISchema resource attributes.
50
50
  */
51
- export interface APISchema<S extends OpenAPIV3.Document = OpenAPIV3.Document>
52
- extends Resource<"cloudflare::APISchema"> {
53
- /**
54
- * Schema ID
55
- */
56
- id: string;
57
-
58
- /**
59
- * Name for the schema
60
- */
61
- name: string;
51
+ export type APISchema<S extends OpenAPIV3.Document = OpenAPIV3.Document> =
52
+ Resource<"cloudflare::APISchema"> & {
53
+ /**
54
+ * Schema ID
55
+ */
56
+ id: string;
57
+
58
+ /**
59
+ * Name for the schema
60
+ */
61
+ name: string;
62
62
 
63
- /**
64
- * The API Schema
65
- */
66
- schema: S;
63
+ /**
64
+ * The API Schema
65
+ */
66
+ schema: S;
67
67
 
68
- /**
69
- * Source of the schema
70
- */
71
- source: string;
68
+ /**
69
+ * Source of the schema
70
+ */
71
+ source: string;
72
72
 
73
- /**
74
- * Whether validation is enabled
75
- */
76
- enabled: boolean;
77
- }
73
+ /**
74
+ * Whether validation is enabled
75
+ */
76
+ enabled: boolean;
77
+ };
78
78
 
79
79
  /**
80
80
  * Cloudflare API Gateway Schema manages OpenAPI v3 schemas for API validation.
@@ -160,10 +160,17 @@ export const APISchema = Resource("cloudflare::APISchema", async function <
160
160
 
161
161
  let schemaDetails: CloudflareSchemaDetails;
162
162
 
163
+ const schemaName =
164
+ props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
165
+
166
+ if (this.phase === "update" && this.output?.name !== schemaName) {
167
+ this.replace();
168
+ }
169
+
163
170
  if (this.phase === "update" && this.output?.id) {
164
171
  // Check if we need to replace due to name, schema content change, or disabling validation
165
172
  if (
166
- props.name !== this.output.name ||
173
+ schemaName !== this.output.name ||
167
174
  JSON.stringify(parsedSchema) !== JSON.stringify(this.output.schema) ||
168
175
  (this.output.enabled === true && props.enabled === false)
169
176
  ) {
@@ -179,7 +186,7 @@ export const APISchema = Resource("cloudflare::APISchema", async function <
179
186
  // Create new schema
180
187
  schemaDetails = await uploadSchema(api, zoneId, {
181
188
  file: yaml.stringify(parsedSchema),
182
- name: props.name || id,
189
+ name: schemaName,
183
190
  validation_enabled: props.enabled !== false,
184
191
  });
185
192
  }
@@ -28,7 +28,7 @@ export interface APIShieldProps<S extends string | URL | OpenAPIV3.Document>
28
28
  /**
29
29
  * The name of the schema validation
30
30
  *
31
- * @default id
31
+ * @default ${app.name}-${app.stage}-${id}
32
32
  */
33
33
  name?: string;
34
34
 
@@ -165,6 +165,11 @@ export interface ValidationSettings {
165
165
  */
166
166
  export interface APIShield<S extends OpenAPIV3.Document = OpenAPIV3.Document>
167
167
  extends Resource<"cloudflare::APIShield"> {
168
+ /**
169
+ * Name of the API Shield.
170
+ */
171
+ name: string;
172
+
168
173
  /**
169
174
  * The schema resource
170
175
  */
@@ -409,6 +414,13 @@ const _APIShield = Resource(
409
414
  return this.destroy();
410
415
  }
411
416
 
417
+ const schemaName =
418
+ props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
419
+
420
+ if (this.phase === "update" && this.output?.name !== schemaName) {
421
+ this.replace();
422
+ }
423
+
412
424
  // Update global settings
413
425
  const defaultAction = props.defaultMitigation || "none";
414
426
  await updateGlobalSettings(api, zoneId, {
@@ -419,7 +431,7 @@ const _APIShield = Resource(
419
431
  const schema = await APISchema("schema", {
420
432
  schema: props.schema,
421
433
  zone: props.zone,
422
- name: props.name ?? id,
434
+ name: schemaName,
423
435
  enabled: props.enabled,
424
436
  accountId: props.accountId,
425
437
  apiKey: props.apiKey,
@@ -431,6 +443,7 @@ const _APIShield = Resource(
431
443
  return this({
432
444
  zoneId,
433
445
  schema,
446
+ name: schemaName,
434
447
  operations: await Promise.all(
435
448
  parseSchemaOperations(schema.schema).map(async (parsedOp) => {
436
449
  let operationAction = defaultAction;
@@ -2,6 +2,7 @@ import { join, resolve } from "node:path";
2
2
  import { getPackageManagerRunner } from "../../util/detect-package-manager.ts";
3
3
  import type { Assets } from "../assets.ts";
4
4
  import type { Bindings } from "../bindings.ts";
5
+ import { withSkipPathValidation } from "../miniflare/paths.ts";
5
6
  import { Website, type WebsiteProps } from "../website.ts";
6
7
  import type { Worker } from "../worker.ts";
7
8
 
@@ -80,6 +81,7 @@ export async function Astro<B extends Bindings>(
80
81
  props.entrypoint ??
81
82
  (output === "server" ? "dist/_worker.js/index.js" : undefined),
82
83
  assets: props.assets ?? "dist",
84
+ spa: false,
83
85
  });
84
86
  }
85
87
 
@@ -92,7 +94,9 @@ async function resolveOutputType(cwd: string): Promise<"server" | "static"> {
92
94
  ];
93
95
  for (const candidate of candidates) {
94
96
  try {
95
- const config = await import(join(cwd, candidate));
97
+ const config = await withSkipPathValidation(
98
+ () => import(join(cwd, candidate)),
99
+ );
96
100
  if (
97
101
  typeof config.default === "object" &&
98
102
  config.default &&
@@ -1,7 +1,8 @@
1
1
  import cloudflare, { type Options } from "@astrojs/cloudflare";
2
+ import type { AstroIntegration } from "astro";
2
3
  import { getPlatformProxyOptions } from "../cloudflare-env-proxy.ts";
3
4
 
4
- const alchemy = (options?: Options) => {
5
+ const alchemy = (options?: Options): AstroIntegration => {
5
6
  return cloudflare({
6
7
  platformProxy: getPlatformProxyOptions(options?.platformProxy),
7
8
  ...options,
@@ -4,7 +4,7 @@
4
4
  * https://developers.cloudflare.com/api/resources/workers/subresources/scripts/methods/update/
5
5
  */
6
6
  import type { Secret } from "../secret.ts";
7
- import type { AiGatewayResource } from "./ai-gateway.ts";
7
+ import type { AiGateway } from "./ai-gateway.ts";
8
8
  import type { Ai } from "./ai.ts";
9
9
  import type { AnalyticsEngineDataset } from "./analytics-engine.ts";
10
10
  import type { Assets } from "./assets.ts";
@@ -45,7 +45,7 @@ export declare namespace Bindings {
45
45
  */
46
46
  export type Binding =
47
47
  | Ai
48
- | AiGatewayResource
48
+ | AiGateway
49
49
  | Assets
50
50
  | Container
51
51
  | CloudflareSecret
@@ -21,7 +21,7 @@ import type {
21
21
  } from "@cloudflare/workers-types";
22
22
  import type { Pipeline } from "cloudflare:pipelines";
23
23
  import type { Secret } from "../secret.ts";
24
- import type { AiGatewayResource as _AiGateway } from "./ai-gateway.ts";
24
+ import type { AiGateway as _AiGateway } from "./ai-gateway.ts";
25
25
  import type { Ai as _Ai } from "./ai.ts";
26
26
  import type { AnalyticsEngineDataset as _AnalyticsEngineDataset } from "./analytics-engine.ts";
27
27
  import type { Assets } from "./assets.ts";