alchemy 0.62.3 → 0.63.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 (612) hide show
  1. package/bin/alchemy.js +1517 -1203
  2. package/bin/commands/deploy.ts +2 -0
  3. package/bin/commands/dev.ts +2 -0
  4. package/bin/commands/init.ts +1 -1
  5. package/bin/services/execute-alchemy.ts +11 -0
  6. package/bin/services/github-workflow.ts +2 -2
  7. package/bin/services/template-manager.ts +2 -0
  8. package/bin/types.ts +2 -1
  9. package/lib/alchemy.d.ts +6 -22
  10. package/lib/alchemy.d.ts.map +1 -1
  11. package/lib/alchemy.js +65 -169
  12. package/lib/alchemy.js.map +1 -1
  13. package/lib/apply.d.ts +0 -2
  14. package/lib/apply.d.ts.map +1 -1
  15. package/lib/apply.js +2 -16
  16. package/lib/apply.js.map +1 -1
  17. package/lib/aws/account-id.d.ts.map +1 -1
  18. package/lib/aws/account-id.js +3 -2
  19. package/lib/aws/account-id.js.map +1 -1
  20. package/lib/aws/bucket.d.ts +8 -2
  21. package/lib/aws/bucket.d.ts.map +1 -1
  22. package/lib/aws/bucket.js +21 -14
  23. package/lib/aws/bucket.js.map +1 -1
  24. package/lib/aws/ec2/security-group.d.ts +8 -2
  25. package/lib/aws/ec2/security-group.d.ts.map +1 -1
  26. package/lib/aws/ec2/security-group.js +7 -2
  27. package/lib/aws/ec2/security-group.js.map +1 -1
  28. package/lib/aws/function.d.ts +9 -3
  29. package/lib/aws/function.d.ts.map +1 -1
  30. package/lib/aws/function.js +35 -26
  31. package/lib/aws/function.js.map +1 -1
  32. package/lib/aws/policy-attachment.d.ts.map +1 -1
  33. package/lib/aws/policy-attachment.js +2 -1
  34. package/lib/aws/policy-attachment.js.map +1 -1
  35. package/lib/aws/policy.d.ts +8 -2
  36. package/lib/aws/policy.d.ts.map +1 -1
  37. package/lib/aws/policy.js +13 -4
  38. package/lib/aws/policy.js.map +1 -1
  39. package/lib/aws/queue.d.ts +8 -2
  40. package/lib/aws/queue.d.ts.map +1 -1
  41. package/lib/aws/queue.js +22 -14
  42. package/lib/aws/queue.js.map +1 -1
  43. package/lib/aws/role.d.ts +8 -2
  44. package/lib/aws/role.d.ts.map +1 -1
  45. package/lib/aws/role.js +10 -3
  46. package/lib/aws/role.js.map +1 -1
  47. package/lib/aws/ses.d.ts +1 -1
  48. package/lib/aws/ses.d.ts.map +1 -1
  49. package/lib/aws/ses.js +2 -1
  50. package/lib/aws/ses.js.map +1 -1
  51. package/lib/aws/ssm-parameter.d.ts +8 -2
  52. package/lib/aws/ssm-parameter.d.ts.map +1 -1
  53. package/lib/aws/ssm-parameter.js +15 -10
  54. package/lib/aws/ssm-parameter.js.map +1 -1
  55. package/lib/aws/table.d.ts +8 -2
  56. package/lib/aws/table.d.ts.map +1 -1
  57. package/lib/aws/table.js +17 -9
  58. package/lib/aws/table.js.map +1 -1
  59. package/lib/cloudflare/account-api-token.d.ts +2 -2
  60. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  61. package/lib/cloudflare/account-api-token.js +7 -6
  62. package/lib/cloudflare/account-api-token.js.map +1 -1
  63. package/lib/cloudflare/ai-gateway.d.ts +9 -4
  64. package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
  65. package/lib/cloudflare/ai-gateway.js +20 -24
  66. package/lib/cloudflare/ai-gateway.js.map +1 -1
  67. package/lib/cloudflare/api-schema.d.ts +2 -2
  68. package/lib/cloudflare/api-schema.d.ts.map +1 -1
  69. package/lib/cloudflare/api-schema.js +6 -2
  70. package/lib/cloudflare/api-schema.js.map +1 -1
  71. package/lib/cloudflare/api-shield.d.ts +5 -1
  72. package/lib/cloudflare/api-shield.d.ts.map +1 -1
  73. package/lib/cloudflare/api-shield.js +6 -1
  74. package/lib/cloudflare/api-shield.js.map +1 -1
  75. package/lib/cloudflare/assets.d.ts +1 -1
  76. package/lib/cloudflare/assets.d.ts.map +1 -1
  77. package/lib/cloudflare/astro/astro.d.ts.map +1 -1
  78. package/lib/cloudflare/astro/astro.js +3 -1
  79. package/lib/cloudflare/astro/astro.js.map +1 -1
  80. package/lib/cloudflare/astro/plugin.d.ts +2 -1
  81. package/lib/cloudflare/astro/plugin.d.ts.map +1 -1
  82. package/lib/cloudflare/astro/plugin.js.map +1 -1
  83. package/lib/cloudflare/bindings.d.ts +2 -2
  84. package/lib/cloudflare/bindings.d.ts.map +1 -1
  85. package/lib/cloudflare/bound.d.ts +1 -1
  86. package/lib/cloudflare/bound.d.ts.map +1 -1
  87. package/lib/cloudflare/bucket.d.ts +120 -1
  88. package/lib/cloudflare/bucket.d.ts.map +1 -1
  89. package/lib/cloudflare/bucket.js +80 -2
  90. package/lib/cloudflare/bucket.js.map +1 -1
  91. package/lib/cloudflare/cloudflare-env-proxy.js +1 -1
  92. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
  93. package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
  94. package/lib/cloudflare/compatibility-date.gen.js +1 -1
  95. package/lib/cloudflare/container.d.ts +10 -4
  96. package/lib/cloudflare/container.d.ts.map +1 -1
  97. package/lib/cloudflare/container.js +12 -9
  98. package/lib/cloudflare/container.js.map +1 -1
  99. package/lib/cloudflare/custom-domain.js +2 -1
  100. package/lib/cloudflare/custom-domain.js.map +1 -1
  101. package/lib/cloudflare/d1-database.d.ts +1 -1
  102. package/lib/cloudflare/d1-database.d.ts.map +1 -1
  103. package/lib/cloudflare/d1-database.js +6 -2
  104. package/lib/cloudflare/d1-database.js.map +1 -1
  105. package/lib/cloudflare/dispatch-namespace.d.ts +2 -0
  106. package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
  107. package/lib/cloudflare/dispatch-namespace.js +7 -5
  108. package/lib/cloudflare/dispatch-namespace.js.map +1 -1
  109. package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
  110. package/lib/cloudflare/durable-object-namespace.js.map +1 -1
  111. package/lib/cloudflare/hyperdrive.d.ts +7 -1
  112. package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
  113. package/lib/cloudflare/hyperdrive.js +3 -2
  114. package/lib/cloudflare/hyperdrive.js.map +1 -1
  115. package/lib/cloudflare/kv-namespace.d.ts +3 -0
  116. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  117. package/lib/cloudflare/kv-namespace.js +11 -2
  118. package/lib/cloudflare/kv-namespace.js.map +1 -1
  119. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +3 -1
  120. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  121. package/lib/cloudflare/miniflare/paths.d.ts +4 -0
  122. package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
  123. package/lib/cloudflare/miniflare/paths.js +11 -0
  124. package/lib/cloudflare/miniflare/paths.js.map +1 -1
  125. package/lib/cloudflare/pipeline.d.ts +14 -3
  126. package/lib/cloudflare/pipeline.d.ts.map +1 -1
  127. package/lib/cloudflare/pipeline.js +31 -2
  128. package/lib/cloudflare/pipeline.js.map +1 -1
  129. package/lib/cloudflare/queue-consumer.js +1 -1
  130. package/lib/cloudflare/queue-consumer.js.map +1 -1
  131. package/lib/cloudflare/queue.d.ts +4 -2
  132. package/lib/cloudflare/queue.d.ts.map +1 -1
  133. package/lib/cloudflare/queue.js +13 -9
  134. package/lib/cloudflare/queue.js.map +1 -1
  135. package/lib/cloudflare/react-router/plugin.d.ts +1 -1
  136. package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
  137. package/lib/cloudflare/react-router/react-router.d.ts.map +1 -1
  138. package/lib/cloudflare/react-router/react-router.js +32 -2
  139. package/lib/cloudflare/react-router/react-router.js.map +1 -1
  140. package/lib/cloudflare/redwood/plugin.d.ts +2 -1
  141. package/lib/cloudflare/redwood/plugin.d.ts.map +1 -1
  142. package/lib/cloudflare/redwood/plugin.js.map +1 -1
  143. package/lib/cloudflare/route.js +1 -1
  144. package/lib/cloudflare/route.js.map +1 -1
  145. package/lib/cloudflare/ruleset.d.ts +3 -1
  146. package/lib/cloudflare/ruleset.d.ts.map +1 -1
  147. package/lib/cloudflare/ruleset.js +3 -2
  148. package/lib/cloudflare/ruleset.js.map +1 -1
  149. package/lib/cloudflare/secret.d.ts +6 -23
  150. package/lib/cloudflare/secret.d.ts.map +1 -1
  151. package/lib/cloudflare/secret.js +8 -4
  152. package/lib/cloudflare/secret.js.map +1 -1
  153. package/lib/cloudflare/secrets-store.d.ts +1 -1
  154. package/lib/cloudflare/secrets-store.d.ts.map +1 -1
  155. package/lib/cloudflare/secrets-store.js +5 -2
  156. package/lib/cloudflare/secrets-store.js.map +1 -1
  157. package/lib/cloudflare/tunnel.d.ts +5 -1
  158. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  159. package/lib/cloudflare/tunnel.js +5 -1
  160. package/lib/cloudflare/tunnel.js.map +1 -1
  161. package/lib/cloudflare/vectorize-index.d.ts +7 -1
  162. package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
  163. package/lib/cloudflare/vectorize-index.js +5 -2
  164. package/lib/cloudflare/vectorize-index.js.map +1 -1
  165. package/lib/cloudflare/vite/plugin.d.ts +2 -1
  166. package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
  167. package/lib/cloudflare/vite/plugin.js.map +1 -1
  168. package/lib/cloudflare/website.js +1 -1
  169. package/lib/cloudflare/website.js.map +1 -1
  170. package/lib/cloudflare/worker-metadata.js +1 -1
  171. package/lib/cloudflare/worker-metadata.js.map +1 -1
  172. package/lib/cloudflare/worker.d.ts +1 -1
  173. package/lib/cloudflare/worker.d.ts.map +1 -1
  174. package/lib/cloudflare/worker.js +12 -7
  175. package/lib/cloudflare/worker.js.map +1 -1
  176. package/lib/cloudflare/wrangler.json.d.ts +1 -1
  177. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  178. package/lib/cloudflare/wrangler.json.js +5 -3
  179. package/lib/cloudflare/wrangler.json.js.map +1 -1
  180. package/lib/docker/container.d.ts +6 -0
  181. package/lib/docker/container.d.ts.map +1 -1
  182. package/lib/docker/container.js +5 -1
  183. package/lib/docker/container.js.map +1 -1
  184. package/lib/docker/network.d.ts +8 -2
  185. package/lib/docker/network.d.ts.map +1 -1
  186. package/lib/docker/network.js +7 -2
  187. package/lib/docker/network.js.map +1 -1
  188. package/lib/docker/volume.d.ts +8 -2
  189. package/lib/docker/volume.d.ts.map +1 -1
  190. package/lib/docker/volume.js +6 -4
  191. package/lib/docker/volume.js.map +1 -1
  192. package/lib/esbuild/bundle.d.ts +1 -1
  193. package/lib/fs/index.d.ts +0 -8
  194. package/lib/fs/index.d.ts.map +1 -1
  195. package/lib/fs/index.js +0 -8
  196. package/lib/fs/index.js.map +1 -1
  197. package/lib/github/client.d.ts +1 -1
  198. package/lib/github/client.d.ts.map +1 -1
  199. package/lib/github/client.js +2 -1
  200. package/lib/github/client.js.map +1 -1
  201. package/lib/github/repository-environment.d.ts +8 -2
  202. package/lib/github/repository-environment.d.ts.map +1 -1
  203. package/lib/github/repository-environment.js +16 -12
  204. package/lib/github/repository-environment.js.map +1 -1
  205. package/lib/neon/project.d.ts +7 -1
  206. package/lib/neon/project.d.ts.map +1 -1
  207. package/lib/neon/project.js +14 -11
  208. package/lib/neon/project.js.map +1 -1
  209. package/lib/planetscale/branch.d.ts +4 -2
  210. package/lib/planetscale/branch.d.ts.map +1 -1
  211. package/lib/planetscale/branch.js +18 -12
  212. package/lib/planetscale/branch.js.map +1 -1
  213. package/lib/planetscale/database.d.ts +8 -2
  214. package/lib/planetscale/database.d.ts.map +1 -1
  215. package/lib/planetscale/database.js +24 -16
  216. package/lib/planetscale/database.js.map +1 -1
  217. package/lib/planetscale/password.d.ts +8 -2
  218. package/lib/planetscale/password.d.ts.map +1 -1
  219. package/lib/planetscale/password.js +2 -2
  220. package/lib/planetscale/password.js.map +1 -1
  221. package/lib/resource.d.ts +0 -2
  222. package/lib/resource.d.ts.map +1 -1
  223. package/lib/resource.js +1 -9
  224. package/lib/resource.js.map +1 -1
  225. package/lib/scope.d.ts +9 -3
  226. package/lib/scope.d.ts.map +1 -1
  227. package/lib/scope.js +21 -34
  228. package/lib/scope.js.map +1 -1
  229. package/lib/sentry/client-key.d.ts +7 -1
  230. package/lib/sentry/client-key.d.ts.map +1 -1
  231. package/lib/sentry/client-key.js +45 -6
  232. package/lib/sentry/client-key.js.map +1 -1
  233. package/lib/sentry/project.d.ts +8 -2
  234. package/lib/sentry/project.d.ts.map +1 -1
  235. package/lib/sentry/project.js +35 -5
  236. package/lib/sentry/project.js.map +1 -1
  237. package/lib/sentry/team.d.ts +8 -2
  238. package/lib/sentry/team.d.ts.map +1 -1
  239. package/lib/sentry/team.js +36 -6
  240. package/lib/sentry/team.js.map +1 -1
  241. package/lib/serde.d.ts +0 -5
  242. package/lib/serde.d.ts.map +1 -1
  243. package/lib/serde.js +0 -28
  244. package/lib/serde.js.map +1 -1
  245. package/lib/state/d1-state-store.d.ts +1 -1
  246. package/lib/state/d1-state-store.d.ts.map +1 -1
  247. package/lib/state/d1-state-store.js +5 -5
  248. package/lib/state/d1-state-store.js.map +1 -1
  249. package/lib/state/sqlite-state-store.d.ts.map +1 -1
  250. package/lib/state/sqlite-state-store.js +7 -11
  251. package/lib/state/sqlite-state-store.js.map +1 -1
  252. package/lib/stripe/card.d.ts.map +1 -1
  253. package/lib/stripe/card.js +3 -2
  254. package/lib/stripe/card.js.map +1 -1
  255. package/lib/stripe/client.d.ts +2 -2
  256. package/lib/stripe/client.d.ts.map +1 -1
  257. package/lib/stripe/client.js +4 -3
  258. package/lib/stripe/client.js.map +1 -1
  259. package/lib/stripe/coupon.d.ts.map +1 -1
  260. package/lib/stripe/coupon.js +4 -3
  261. package/lib/stripe/coupon.js.map +1 -1
  262. package/lib/stripe/customer.js +2 -2
  263. package/lib/stripe/customer.js.map +1 -1
  264. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  265. package/lib/stripe/entitlements-feature.js +3 -2
  266. package/lib/stripe/entitlements-feature.js.map +1 -1
  267. package/lib/stripe/file.d.ts.map +1 -1
  268. package/lib/stripe/file.js +3 -2
  269. package/lib/stripe/file.js.map +1 -1
  270. package/lib/stripe/meter.js +2 -2
  271. package/lib/stripe/meter.js.map +1 -1
  272. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  273. package/lib/stripe/portal-configuration.js +3 -2
  274. package/lib/stripe/portal-configuration.js.map +1 -1
  275. package/lib/stripe/price.d.ts.map +1 -1
  276. package/lib/stripe/price.js +3 -2
  277. package/lib/stripe/price.js.map +1 -1
  278. package/lib/stripe/product-feature.d.ts.map +1 -1
  279. package/lib/stripe/product-feature.js +3 -2
  280. package/lib/stripe/product-feature.js.map +1 -1
  281. package/lib/stripe/product.d.ts.map +1 -1
  282. package/lib/stripe/product.js +3 -2
  283. package/lib/stripe/product.js.map +1 -1
  284. package/lib/stripe/promotion-code.d.ts.map +1 -1
  285. package/lib/stripe/promotion-code.js +3 -2
  286. package/lib/stripe/promotion-code.js.map +1 -1
  287. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  288. package/lib/stripe/shipping-rate.js +4 -3
  289. package/lib/stripe/shipping-rate.js.map +1 -1
  290. package/lib/stripe/tax-rate.d.ts.map +1 -1
  291. package/lib/stripe/tax-rate.js +3 -2
  292. package/lib/stripe/tax-rate.js.map +1 -1
  293. package/lib/stripe/webhook.d.ts.map +1 -1
  294. package/lib/stripe/webhook.js +4 -3
  295. package/lib/stripe/webhook.js.map +1 -1
  296. package/lib/test/vitest.d.ts.map +1 -1
  297. package/lib/test/vitest.js +1 -0
  298. package/lib/test/vitest.js.map +1 -1
  299. package/lib/upstash/redis.d.ts +8 -2
  300. package/lib/upstash/redis.d.ts.map +1 -1
  301. package/lib/upstash/redis.js +6 -5
  302. package/lib/upstash/redis.js.map +1 -1
  303. package/lib/util/idempotent-spawn.d.ts.map +1 -1
  304. package/lib/util/idempotent-spawn.js +21 -2
  305. package/lib/util/idempotent-spawn.js.map +1 -1
  306. package/lib/util/ignore-matcher.d.ts.map +1 -1
  307. package/lib/util/ignore-matcher.js +3 -1
  308. package/lib/util/ignore-matcher.js.map +1 -1
  309. package/lib/util/peer.d.ts +10 -0
  310. package/lib/util/peer.d.ts.map +1 -0
  311. package/lib/util/peer.js +42 -0
  312. package/lib/util/peer.js.map +1 -0
  313. package/lib/util/xml.js +1 -1
  314. package/lib/util/xml.js.map +1 -1
  315. package/lib/vercel/project.d.ts +7 -1
  316. package/lib/vercel/project.d.ts.map +1 -1
  317. package/lib/vercel/project.js +28 -0
  318. package/lib/vercel/project.js.map +1 -1
  319. package/package.json +88 -74
  320. package/src/alchemy.ts +76 -222
  321. package/src/apply.ts +6 -19
  322. package/src/aws/account-id.ts +6 -3
  323. package/src/aws/bucket.ts +43 -32
  324. package/src/aws/ec2/security-group.ts +15 -3
  325. package/src/aws/function.ts +65 -39
  326. package/src/aws/policy-attachment.ts +10 -6
  327. package/src/aws/policy.ts +33 -15
  328. package/src/aws/queue.ts +50 -29
  329. package/src/aws/role.ts +37 -20
  330. package/src/aws/ses.ts +24 -20
  331. package/src/aws/ssm-parameter.ts +40 -20
  332. package/src/aws/table.ts +35 -17
  333. package/src/cloudflare/account-api-token.ts +9 -7
  334. package/src/cloudflare/ai-gateway.ts +37 -34
  335. package/src/cloudflare/api-schema.ts +33 -26
  336. package/src/cloudflare/api-shield.ts +15 -2
  337. package/src/cloudflare/astro/astro.ts +5 -1
  338. package/src/cloudflare/astro/plugin.ts +2 -1
  339. package/src/cloudflare/bindings.ts +2 -2
  340. package/src/cloudflare/bound.ts +1 -1
  341. package/src/cloudflare/bucket.ts +242 -3
  342. package/src/cloudflare/cloudflare-env-proxy.ts +1 -1
  343. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  344. package/src/cloudflare/container.ts +23 -12
  345. package/src/cloudflare/custom-domain.ts +2 -2
  346. package/src/cloudflare/d1-database.ts +10 -3
  347. package/src/cloudflare/dispatch-namespace.ts +10 -7
  348. package/src/cloudflare/durable-object-namespace.ts +0 -1
  349. package/src/cloudflare/hyperdrive.ts +14 -4
  350. package/src/cloudflare/kv-namespace.ts +25 -2
  351. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +3 -1
  352. package/src/cloudflare/miniflare/paths.ts +13 -0
  353. package/src/cloudflare/pipeline.ts +76 -28
  354. package/src/cloudflare/queue-consumer.ts +1 -1
  355. package/src/cloudflare/queue.ts +26 -14
  356. package/src/cloudflare/react-router/react-router.ts +28 -2
  357. package/src/cloudflare/redwood/plugin.ts +3 -2
  358. package/src/cloudflare/route.ts +1 -1
  359. package/src/cloudflare/ruleset.ts +7 -2
  360. package/src/cloudflare/secret.ts +20 -31
  361. package/src/cloudflare/secrets-store.ts +7 -3
  362. package/src/cloudflare/tunnel.ts +13 -2
  363. package/src/cloudflare/vectorize-index.ts +14 -3
  364. package/src/cloudflare/vite/plugin.ts +3 -2
  365. package/src/cloudflare/website.ts +1 -1
  366. package/src/cloudflare/worker-metadata.ts +1 -1
  367. package/src/cloudflare/worker.ts +35 -23
  368. package/src/cloudflare/wrangler.json.ts +7 -4
  369. package/src/docker/container.ts +13 -1
  370. package/src/docker/network.ts +18 -3
  371. package/src/docker/volume.ts +17 -6
  372. package/src/fs/index.ts +0 -8
  373. package/src/github/client.ts +6 -2
  374. package/src/github/repository-environment.ts +27 -13
  375. package/src/neon/project.ts +24 -11
  376. package/src/planetscale/branch.ts +24 -13
  377. package/src/planetscale/database.ts +38 -17
  378. package/src/planetscale/password.ts +10 -3
  379. package/src/resource.ts +1 -10
  380. package/src/scope.ts +29 -38
  381. package/src/sentry/client-key.ts +74 -6
  382. package/src/sentry/project.ts +59 -6
  383. package/src/sentry/team.ts +55 -7
  384. package/src/serde.ts +0 -44
  385. package/src/state/d1-state-store.ts +13 -6
  386. package/src/state/sqlite-state-store.ts +16 -17
  387. package/src/stripe/card.ts +5 -2
  388. package/src/stripe/client.ts +10 -3
  389. package/src/stripe/coupon.ts +4 -3
  390. package/src/stripe/customer.ts +2 -2
  391. package/src/stripe/entitlements-feature.ts +5 -2
  392. package/src/stripe/file.ts +3 -2
  393. package/src/stripe/meter.ts +2 -2
  394. package/src/stripe/portal-configuration.ts +5 -2
  395. package/src/stripe/price.ts +3 -2
  396. package/src/stripe/product-feature.ts +5 -2
  397. package/src/stripe/product.ts +3 -2
  398. package/src/stripe/promotion-code.ts +3 -2
  399. package/src/stripe/shipping-rate.ts +4 -3
  400. package/src/stripe/tax-rate.ts +3 -2
  401. package/src/stripe/webhook.ts +4 -3
  402. package/src/test/vitest.ts +1 -0
  403. package/src/upstash/redis.ts +16 -6
  404. package/src/util/idempotent-spawn.ts +23 -2
  405. package/src/util/ignore-matcher.ts +3 -1
  406. package/src/util/peer.ts +53 -0
  407. package/src/util/xml.ts +1 -1
  408. package/src/vercel/project.ts +46 -1
  409. package/templates/hono/README.md +19 -0
  410. package/templates/hono/_env +1 -0
  411. package/templates/hono/_env.example +1 -0
  412. package/templates/hono/_gitignore +34 -0
  413. package/templates/hono/alchemy.run.ts +22 -0
  414. package/templates/hono/package.json +18 -0
  415. package/templates/hono/src/index.ts +17 -0
  416. package/templates/hono/tsconfig.json +13 -0
  417. package/templates/hono/types/env.d.ts +16 -0
  418. package/templates/react-router/vite.config.ts +5 -3
  419. package/workers/cloudflare-state-store.js +69 -74
  420. package/workers/dofs-state-store.js +1 -1
  421. package/bin/bootstrap-s3.ts +0 -255
  422. package/lib/ai/ark.d.ts +0 -12
  423. package/lib/ai/ark.d.ts.map +0 -1
  424. package/lib/ai/ark.js +0 -87
  425. package/lib/ai/ark.js.map +0 -1
  426. package/lib/ai/astro-file.d.ts +0 -138
  427. package/lib/ai/astro-file.d.ts.map +0 -1
  428. package/lib/ai/astro-file.js +0 -158
  429. package/lib/ai/astro-file.js.map +0 -1
  430. package/lib/ai/client.d.ts +0 -51
  431. package/lib/ai/client.d.ts.map +0 -1
  432. package/lib/ai/client.js +0 -58
  433. package/lib/ai/client.js.map +0 -1
  434. package/lib/ai/css-file.d.ts +0 -132
  435. package/lib/ai/css-file.d.ts.map +0 -1
  436. package/lib/ai/css-file.js +0 -142
  437. package/lib/ai/css-file.js.map +0 -1
  438. package/lib/ai/data.d.ts +0 -152
  439. package/lib/ai/data.d.ts.map +0 -1
  440. package/lib/ai/data.js +0 -120
  441. package/lib/ai/data.js.map +0 -1
  442. package/lib/ai/document.d.ts +0 -208
  443. package/lib/ai/document.d.ts.map +0 -1
  444. package/lib/ai/document.js +0 -206
  445. package/lib/ai/document.js.map +0 -1
  446. package/lib/ai/html-file.d.ts +0 -129
  447. package/lib/ai/html-file.d.ts.map +0 -1
  448. package/lib/ai/html-file.js +0 -139
  449. package/lib/ai/html-file.js.map +0 -1
  450. package/lib/ai/index.d.ts +0 -11
  451. package/lib/ai/index.d.ts.map +0 -1
  452. package/lib/ai/index.js +0 -11
  453. package/lib/ai/index.js.map +0 -1
  454. package/lib/ai/json-file.d.ts +0 -161
  455. package/lib/ai/json-file.d.ts.map +0 -1
  456. package/lib/ai/json-file.js +0 -188
  457. package/lib/ai/json-file.js.map +0 -1
  458. package/lib/ai/typescript-file.d.ts +0 -140
  459. package/lib/ai/typescript-file.d.ts.map +0 -1
  460. package/lib/ai/typescript-file.js +0 -146
  461. package/lib/ai/typescript-file.js.map +0 -1
  462. package/lib/ai/vue-file.d.ts +0 -127
  463. package/lib/ai/vue-file.d.ts.map +0 -1
  464. package/lib/ai/vue-file.js +0 -137
  465. package/lib/ai/vue-file.js.map +0 -1
  466. package/lib/ai/yaml-file.d.ts +0 -170
  467. package/lib/ai/yaml-file.d.ts.map +0 -1
  468. package/lib/ai/yaml-file.js +0 -201
  469. package/lib/ai/yaml-file.js.map +0 -1
  470. package/lib/fs/static-astro-file.d.ts +0 -35
  471. package/lib/fs/static-astro-file.d.ts.map +0 -1
  472. package/lib/fs/static-astro-file.js +0 -40
  473. package/lib/fs/static-astro-file.js.map +0 -1
  474. package/lib/fs/static-css-file.d.ts +0 -25
  475. package/lib/fs/static-css-file.d.ts.map +0 -1
  476. package/lib/fs/static-css-file.js +0 -30
  477. package/lib/fs/static-css-file.js.map +0 -1
  478. package/lib/fs/static-html-file.d.ts +0 -32
  479. package/lib/fs/static-html-file.d.ts.map +0 -1
  480. package/lib/fs/static-html-file.js +0 -37
  481. package/lib/fs/static-html-file.js.map +0 -1
  482. package/lib/fs/static-json-file.d.ts +0 -18
  483. package/lib/fs/static-json-file.d.ts.map +0 -1
  484. package/lib/fs/static-json-file.js +0 -19
  485. package/lib/fs/static-json-file.js.map +0 -1
  486. package/lib/fs/static-text-file.d.ts +0 -13
  487. package/lib/fs/static-text-file.d.ts.map +0 -1
  488. package/lib/fs/static-text-file.js +0 -9
  489. package/lib/fs/static-text-file.js.map +0 -1
  490. package/lib/fs/static-typescript-file.d.ts +0 -20
  491. package/lib/fs/static-typescript-file.d.ts.map +0 -1
  492. package/lib/fs/static-typescript-file.js +0 -16
  493. package/lib/fs/static-typescript-file.js.map +0 -1
  494. package/lib/fs/static-vue-file.d.ts +0 -29
  495. package/lib/fs/static-vue-file.d.ts.map +0 -1
  496. package/lib/fs/static-vue-file.js +0 -34
  497. package/lib/fs/static-vue-file.js.map +0 -1
  498. package/lib/fs/static-yaml-file.d.ts +0 -23
  499. package/lib/fs/static-yaml-file.d.ts.map +0 -1
  500. package/lib/fs/static-yaml-file.js +0 -10
  501. package/lib/fs/static-yaml-file.js.map +0 -1
  502. package/lib/internal/docs/providers.d.ts +0 -34
  503. package/lib/internal/docs/providers.d.ts.map +0 -1
  504. package/lib/internal/docs/providers.js +0 -200
  505. package/lib/internal/docs/providers.js.map +0 -1
  506. package/lib/runtime/bind.d.ts +0 -25
  507. package/lib/runtime/bind.d.ts.map +0 -1
  508. package/lib/runtime/bind.js +0 -76
  509. package/lib/runtime/bind.js.map +0 -1
  510. package/lib/runtime/global.d.ts +0 -8
  511. package/lib/runtime/global.d.ts.map +0 -1
  512. package/lib/runtime/global.js +0 -3
  513. package/lib/runtime/global.js.map +0 -1
  514. package/lib/runtime/plugin.d.ts +0 -35
  515. package/lib/runtime/plugin.d.ts.map +0 -1
  516. package/lib/runtime/plugin.js +0 -134
  517. package/lib/runtime/plugin.js.map +0 -1
  518. package/lib/runtime/shims.d.ts +0 -6
  519. package/lib/runtime/shims.d.ts.map +0 -1
  520. package/lib/runtime/shims.js +0 -27
  521. package/lib/runtime/shims.js.map +0 -1
  522. package/lib/runtime/state.d.ts +0 -5
  523. package/lib/runtime/state.d.ts.map +0 -1
  524. package/lib/runtime/state.js +0 -4
  525. package/lib/runtime/state.js.map +0 -1
  526. package/lib/web/astro.d.ts +0 -148
  527. package/lib/web/astro.d.ts.map +0 -1
  528. package/lib/web/astro.js +0 -419
  529. package/lib/web/astro.js.map +0 -1
  530. package/lib/web/shadcn-component.d.ts +0 -30
  531. package/lib/web/shadcn-component.d.ts.map +0 -1
  532. package/lib/web/shadcn-component.js +0 -25
  533. package/lib/web/shadcn-component.js.map +0 -1
  534. package/lib/web/shadcn.d.ts +0 -98
  535. package/lib/web/shadcn.d.ts.map +0 -1
  536. package/lib/web/shadcn.js +0 -102
  537. package/lib/web/shadcn.js.map +0 -1
  538. package/lib/web/tailwind.d.ts +0 -65
  539. package/lib/web/tailwind.d.ts.map +0 -1
  540. package/lib/web/tailwind.js +0 -98
  541. package/lib/web/tailwind.js.map +0 -1
  542. package/lib/web/vite.d.ts +0 -96
  543. package/lib/web/vite.d.ts.map +0 -1
  544. package/lib/web/vite.js +0 -232
  545. package/lib/web/vite.js.map +0 -1
  546. package/lib/web/vitepress/config.d.ts +0 -12
  547. package/lib/web/vitepress/config.d.ts.map +0 -1
  548. package/lib/web/vitepress/config.js +0 -33
  549. package/lib/web/vitepress/config.js.map +0 -1
  550. package/lib/web/vitepress/custom-theme.d.ts +0 -174
  551. package/lib/web/vitepress/custom-theme.d.ts.map +0 -1
  552. package/lib/web/vitepress/custom-theme.js +0 -337
  553. package/lib/web/vitepress/custom-theme.js.map +0 -1
  554. package/lib/web/vitepress/dependencies.d.ts +0 -13
  555. package/lib/web/vitepress/dependencies.d.ts.map +0 -1
  556. package/lib/web/vitepress/dependencies.js +0 -37
  557. package/lib/web/vitepress/dependencies.js.map +0 -1
  558. package/lib/web/vitepress/home-page.d.ts +0 -247
  559. package/lib/web/vitepress/home-page.d.ts.map +0 -1
  560. package/lib/web/vitepress/home-page.js +0 -146
  561. package/lib/web/vitepress/home-page.js.map +0 -1
  562. package/lib/web/vitepress/index.d.ts +0 -6
  563. package/lib/web/vitepress/index.d.ts.map +0 -1
  564. package/lib/web/vitepress/index.js +0 -6
  565. package/lib/web/vitepress/index.js.map +0 -1
  566. package/lib/web/vitepress/process-front-matter-files.d.ts +0 -19
  567. package/lib/web/vitepress/process-front-matter-files.d.ts.map +0 -1
  568. package/lib/web/vitepress/process-front-matter-files.js +0 -73
  569. package/lib/web/vitepress/process-front-matter-files.js.map +0 -1
  570. package/lib/web/vitepress/vitepress.d.ts +0 -75
  571. package/lib/web/vitepress/vitepress.d.ts.map +0 -1
  572. package/lib/web/vitepress/vitepress.js +0 -254
  573. package/lib/web/vitepress/vitepress.js.map +0 -1
  574. package/src/ai/ark.ts +0 -118
  575. package/src/ai/astro-file.ts +0 -270
  576. package/src/ai/client.ts +0 -117
  577. package/src/ai/css-file.ts +0 -247
  578. package/src/ai/data.ts +0 -221
  579. package/src/ai/document.ts +0 -367
  580. package/src/ai/html-file.ts +0 -244
  581. package/src/ai/index.ts +0 -10
  582. package/src/ai/json-file.ts +0 -325
  583. package/src/ai/typescript-file.ts +0 -259
  584. package/src/ai/vue-file.ts +0 -242
  585. package/src/ai/yaml-file.ts +0 -328
  586. package/src/fs/static-astro-file.ts +0 -45
  587. package/src/fs/static-css-file.ts +0 -35
  588. package/src/fs/static-html-file.ts +0 -42
  589. package/src/fs/static-json-file.ts +0 -38
  590. package/src/fs/static-text-file.ts +0 -23
  591. package/src/fs/static-typescript-file.ts +0 -37
  592. package/src/fs/static-vue-file.ts +0 -39
  593. package/src/fs/static-yaml-file.ts +0 -33
  594. package/src/internal/docs/providers.ts +0 -286
  595. package/src/runtime/bind.ts +0 -95
  596. package/src/runtime/global.ts +0 -10
  597. package/src/runtime/plugin.ts +0 -163
  598. package/src/runtime/shims.js +0 -34
  599. package/src/runtime/state.ts +0 -9
  600. package/src/web/astro.ts +0 -643
  601. package/src/web/shadcn-component.ts +0 -72
  602. package/src/web/shadcn.ts +0 -221
  603. package/src/web/tailwind.ts +0 -167
  604. package/src/web/vite.ts +0 -407
  605. package/src/web/vitepress/config.ts +0 -50
  606. package/src/web/vitepress/custom-theme.ts +0 -514
  607. package/src/web/vitepress/dependencies.ts +0 -69
  608. package/src/web/vitepress/home-page.ts +0 -378
  609. package/src/web/vitepress/index.ts +0 -5
  610. package/src/web/vitepress/process-front-matter-files.ts +0 -107
  611. package/src/web/vitepress/vitepress.ts +0 -372
  612. package/templates/sveltekit/bun.lock +0 -1099
package/src/web/astro.ts DELETED
@@ -1,643 +0,0 @@
1
- import { exec } from "node:child_process";
2
- import fs from "node:fs/promises";
3
- import path from "node:path";
4
- import { promisify } from "node:util";
5
- import type { Context } from "../context.ts";
6
- import { Folder } from "../fs/folder.ts";
7
- import { StaticJsonFile } from "../fs/static-json-file.ts";
8
- import { StaticTextFile } from "../fs/static-text-file.ts";
9
- import { StaticTypeScriptFile } from "../fs/static-typescript-file.ts";
10
- import { Resource } from "../resource.ts";
11
- import { logger } from "../util/logger.ts";
12
- import { ShadcnUI } from "./shadcn.ts";
13
-
14
- const execAsync = promisify(exec);
15
-
16
- /**
17
- * Type of integrations that can be added to an Astro project
18
- */
19
- export type AstroIntegration =
20
- | "react"
21
- | "preact"
22
- | "vue"
23
- | "svelte"
24
- | "solid"
25
- | "lit"
26
- | "tailwind"
27
- | "mdx"
28
- | "sitemap"
29
- | "partytown"
30
- | "markdoc";
31
-
32
- /**
33
- * Properties for creating an Astro project
34
- */
35
- export interface AstroProjectProps {
36
- /**
37
- * The name/path of the project
38
- */
39
- name: string;
40
-
41
- /**
42
- * The title of the site
43
- * @default "Astro Site"
44
- */
45
- title?: string;
46
-
47
- /**
48
- * The description of the site
49
- * @default "Welcome to my Astro site"
50
- */
51
- description?: string;
52
-
53
- /**
54
- * The directory to initialize the project in.
55
- * @default {@link name}
56
- */
57
- dir?: string;
58
-
59
- /**
60
- * The integrations to add to the project
61
- * @default []
62
- */
63
- integrations?: AstroIntegration[];
64
-
65
- /**
66
- * The TypeScript configuration
67
- */
68
- tsconfig?: {
69
- /**
70
- * Extends from this TypeScript configuration
71
- */
72
- extends?: string;
73
-
74
- /**
75
- * References to add to the tsconfig
76
- */
77
- references?: string[];
78
-
79
- /**
80
- * Compiler options to add to the tsconfig
81
- */
82
- compilerOptions?: Record<string, any>;
83
- };
84
-
85
- /**
86
- * Whether to delete the project folder during the delete phase
87
- * @default true
88
- */
89
- delete?: boolean;
90
-
91
- /**
92
- * Add Shadcn UI to the project
93
- * @default false
94
- */
95
- shadcn?: {
96
- /**
97
- * The base color to use
98
- * @default "neutral"
99
- */
100
- baseColor?: "neutral" | "gray" | "zinc" | "stone" | "slate";
101
-
102
- /**
103
- * Use default configuration
104
- * @default false
105
- */
106
- defaults?: boolean;
107
-
108
- /**
109
- * Force overwrite of existing configuration
110
- * @default false
111
- */
112
- force?: boolean;
113
-
114
- /**
115
- * Mute output
116
- * @default false
117
- */
118
- silent?: boolean;
119
-
120
- /**
121
- * Use the src directory when creating a new project
122
- * @default true
123
- */
124
- srcDir?: boolean;
125
-
126
- /**
127
- * Use css variables for theming
128
- * @default true
129
- */
130
- cssVariables?: boolean;
131
-
132
- /**
133
- * The components to add
134
- */
135
- components?: string[];
136
- };
137
-
138
- /**
139
- * The dependencies to install
140
- */
141
- dependencies?: Record<string, string>;
142
-
143
- /**
144
- * The dev dependencies to install
145
- */
146
- devDependencies?: Record<string, string>;
147
-
148
- /**
149
- * Additional scripts to add to package.json
150
- */
151
- scripts?: Record<string, string>;
152
- }
153
-
154
- /**
155
- * Astro project resource
156
- */
157
- export interface AstroProject extends AstroProjectProps, Resource {
158
- /**
159
- * The name/path of the project
160
- */
161
- name: string;
162
- }
163
-
164
- /**
165
- * Creates a new Astro project
166
- *
167
- * @example
168
- * // Create a basic Astro project
169
- * const basicProject = await AstroProject("my-astro-app", {
170
- * title: "My Astro Site",
171
- * description: "Built with Alchemy"
172
- * });
173
- *
174
- * @example
175
- * // Create an Astro project with React and Tailwind
176
- * const reactProject = await AstroProject("astro-react", {
177
- * title: "Astro + React",
178
- * integrations: ["react", "tailwind"]
179
- * });
180
- *
181
- * @example
182
- * // Create an Astro project with Shadcn UI
183
- * const shadcnProject = await AstroProject("astro-shadcn", {
184
- * title: "Astro with Shadcn UI",
185
- * integrations: ["react", "tailwind"],
186
- * shadcn: {
187
- * baseColor: "zinc",
188
- * components: ["button", "card", "input"]
189
- * }
190
- * });
191
- */
192
- export const AstroProject = Resource(
193
- "project::AstroProject",
194
- {
195
- alwaysUpdate: true,
196
- },
197
- async function (
198
- this: Context<AstroProject>,
199
- id: string,
200
- props: AstroProjectProps,
201
- ): Promise<AstroProject> {
202
- const dir = props.dir ?? props.name;
203
-
204
- if (this.phase === "delete") {
205
- try {
206
- if (props.delete !== false) {
207
- if (await fs.stat(dir).catch(() => null)) {
208
- await execAsync(`rm -rf ${dir}`);
209
- }
210
- }
211
- } catch (error) {
212
- logger.error(`Error deleting project ${id}:`, error);
213
- }
214
- return this.destroy();
215
- }
216
-
217
- const cwd = path.resolve(process.cwd(), dir);
218
-
219
- // Create the project directory
220
- await Folder("project-dir", {
221
- path: dir,
222
- delete: true,
223
- });
224
-
225
- await Folder(".astro", {
226
- path: dir,
227
- delete: true,
228
- clean: true,
229
- });
230
-
231
- await setupProject(props);
232
-
233
- return this(props);
234
-
235
- /**
236
- * Set up the Astro project structure and configuration
237
- */
238
- async function setupProject(props: AstroProjectProps) {
239
- // Create project structure
240
- await ProjectStructure();
241
-
242
- // Set up package.json
243
- await StaticJsonFile(path.join(dir, "package.json"), {
244
- name: props.name,
245
- type: "module",
246
- version: "0.0.1",
247
- scripts: {
248
- dev: "astro dev",
249
- start: "astro dev",
250
- build: "astro build",
251
- preview: "astro preview",
252
- astro: "astro",
253
- ...props.scripts,
254
- },
255
- dependencies: props.dependencies || {},
256
- devDependencies: props.devDependencies || {},
257
- });
258
-
259
- // Set up tsconfig.json
260
- await StaticJsonFile(path.join(dir, "tsconfig.json"), {
261
- extends: props.tsconfig?.extends || "astro/tsconfigs/strict",
262
- compilerOptions: {
263
- baseUrl: ".",
264
- paths: {
265
- "@/*": ["./src/*"],
266
- },
267
- jsx: "react-jsx",
268
- jsxImportSource: "react",
269
- ...props.tsconfig?.compilerOptions,
270
- },
271
- include: ["src/**/*.ts", "src/**/*.tsx", "src/**/*.astro"],
272
- references: props.tsconfig?.references?.map((path) => ({ path })),
273
- });
274
-
275
- // Set up astro.config.mjs
276
- await AstroConfig();
277
-
278
- // Set up initial files
279
- await InitialFiles();
280
-
281
- // Install integrations
282
- if (props.integrations && props.integrations.length > 0) {
283
- await InstallIntegrations();
284
- }
285
-
286
- // Install dependencies
287
- await InstallDependencies();
288
-
289
- // Set up Shadcn if requested
290
- if (props.shadcn) {
291
- await ShadcnUI(id, {
292
- ...props.shadcn,
293
- cwd: dir,
294
- });
295
- }
296
- }
297
-
298
- /**
299
- * Create the basic project structure
300
- */
301
- async function ProjectStructure() {
302
- const folderPaths = [
303
- "src",
304
- "src/components",
305
- "src/layouts",
306
- "src/pages",
307
- "public",
308
- ];
309
-
310
- for (const folderPath of folderPaths) {
311
- await Folder(`${dir}-${folderPath}`, {
312
- path: path.join(dir, folderPath),
313
- });
314
- }
315
- }
316
-
317
- /**
318
- * Set up astro.config.mjs
319
- */
320
- async function AstroConfig() {
321
- const integrations = [];
322
- const vitePlugins = [];
323
-
324
- // Add imports and integrations
325
- const configImports = ['import { defineConfig } from "astro/config";'];
326
-
327
- if (props.integrations?.includes("react")) {
328
- configImports.push('import react from "@astrojs/react";');
329
- integrations.push("react()");
330
- }
331
-
332
- if (props.integrations?.includes("preact")) {
333
- configImports.push('import preact from "@astrojs/preact";');
334
- integrations.push("preact()");
335
- }
336
-
337
- if (props.integrations?.includes("vue")) {
338
- configImports.push('import vue from "@astrojs/vue";');
339
- integrations.push("vue()");
340
- }
341
-
342
- if (props.integrations?.includes("svelte")) {
343
- configImports.push('import svelte from "@astrojs/svelte";');
344
- integrations.push("svelte()");
345
- }
346
-
347
- if (props.integrations?.includes("solid")) {
348
- configImports.push('import solid from "@astrojs/solid-js";');
349
- integrations.push("solid()");
350
- }
351
-
352
- if (props.integrations?.includes("lit")) {
353
- configImports.push('import lit from "@astrojs/lit";');
354
- integrations.push("lit()");
355
- }
356
-
357
- if (props.integrations?.includes("tailwind")) {
358
- configImports.push('import tailwindcss from "@tailwindcss/vite";');
359
- vitePlugins.push("tailwindcss()");
360
- }
361
-
362
- if (props.integrations?.includes("mdx")) {
363
- configImports.push('import mdx from "@astrojs/mdx";');
364
- integrations.push("mdx()");
365
- }
366
-
367
- if (props.integrations?.includes("sitemap")) {
368
- configImports.push('import sitemap from "@astrojs/sitemap";');
369
- integrations.push("sitemap()");
370
- }
371
-
372
- if (props.integrations?.includes("partytown")) {
373
- configImports.push('import partytown from "@astrojs/partytown";');
374
- integrations.push("partytown()");
375
- }
376
-
377
- if (props.integrations?.includes("markdoc")) {
378
- configImports.push('import markdoc from "@astrojs/markdoc";');
379
- integrations.push("markdoc()");
380
- }
381
-
382
- const integrationsStr = integrations.length
383
- ? `\n integrations: [${integrations.join(", ")}],`
384
- : "";
385
-
386
- const vitePluginsStr = vitePlugins.length
387
- ? `\n vite: {\n plugins: [${vitePlugins.join(", ")}]\n },`
388
- : "";
389
-
390
- return StaticTypeScriptFile(
391
- path.join(dir, "astro.config.ts"),
392
- `${configImports.join("\n")}
393
-
394
- // https://astro.build/config
395
- export default defineConfig({${integrationsStr}${vitePluginsStr}
396
- site: "https://example.com",
397
- output: "static"
398
- });`,
399
- );
400
- }
401
-
402
- /**
403
- * Create initial files for the project
404
- */
405
- async function InitialFiles() {
406
- // Create .gitignore
407
- await StaticTextFile(
408
- path.join(dir, ".gitignore"),
409
- `# build output
410
- dist/
411
- .output/
412
-
413
- # dependencies
414
- node_modules/
415
-
416
- # logs
417
- npm-debug.log*
418
- yarn-debug.log*
419
- yarn-error.log*
420
- pnpm-debug.log*
421
-
422
- # environment variables
423
- .env
424
- .env.production
425
-
426
- # macOS-specific files
427
- .DS_Store
428
- .astro/
429
- `,
430
- );
431
-
432
- // Create .env.d.ts
433
- await StaticTextFile(
434
- path.join(dir, "src", "env.d.ts"),
435
- `/// <reference types="astro/client" />
436
- `,
437
- );
438
-
439
- // Create a basic layout
440
- await StaticTextFile(
441
- path.join(dir, "src", "layouts", "Layout.astro"),
442
- `---
443
- interface Props {
444
- title: string;
445
- description?: string;
446
- }
447
-
448
- const { title, description = "Welcome to my Astro site" } = Astro.props;
449
- ---
450
-
451
- <!DOCTYPE html>
452
- <html lang="en">
453
- <head>
454
- <meta charset="UTF-8" />
455
- <meta name="viewport" content="width=device-width" />
456
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
457
- <meta name="generator" content={Astro.generator} />
458
- <meta name="description" content={description} />
459
- <title>{title}</title>
460
- </head>
461
- <body>
462
- <slot />
463
- </body>
464
- </html>
465
-
466
- <style is:global>
467
- :root {
468
- --accent: 124, 58, 237;
469
- --accent-gradient: linear-gradient(45deg, rgb(var(--accent)), #da62c4 30%, white 60%);
470
- }
471
- html {
472
- font-family: system-ui, sans-serif;
473
- background-color: #f6f6f6;
474
- }
475
- code {
476
- font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
477
- Bitstream Vera Sans Mono, Courier New, monospace;
478
- }
479
- </style>
480
- `,
481
- );
482
-
483
- // Create a basic index page
484
- await StaticTextFile(
485
- path.join(dir, "src", "pages", "index.astro"),
486
- `---
487
- import Layout from '../layouts/Layout.astro';
488
- ---
489
-
490
- <Layout title="${props.title || "Astro Site"}" description="${props.description || "Welcome to my Astro site"}">
491
- <main>
492
- <h1><span class="text-gradient">Astro</span> Site</h1>
493
- <p class="instructions">
494
- To get started, edit <code>src/pages/index.astro</code> and save to see your changes.
495
- </p>
496
- </main>
497
- </Layout>
498
-
499
- <style>
500
- main {
501
- margin: auto;
502
- padding: 1.5rem;
503
- max-width: 60ch;
504
- }
505
- h1 {
506
- font-size: 3rem;
507
- font-weight: 800;
508
- margin: 0;
509
- }
510
- .text-gradient {
511
- background-image: var(--accent-gradient);
512
- -webkit-background-clip: text;
513
- -webkit-text-fill-color: transparent;
514
- background-size: 400%;
515
- background-position: 0%;
516
- }
517
- .instructions {
518
- line-height: 1.6;
519
- margin: 1rem 0;
520
- border: 1px solid rgba(var(--accent), 25%);
521
- background-color: white;
522
- padding: 1rem;
523
- border-radius: 0.4rem;
524
- }
525
- .instructions code {
526
- font-size: 0.875em;
527
- font-weight: bold;
528
- background: rgba(var(--accent), 12%);
529
- color: rgb(var(--accent));
530
- border-radius: 4px;
531
- padding: 0.3em 0.45em;
532
- }
533
- </style>
534
- `,
535
- );
536
-
537
- // Create public/favicon.svg
538
- await StaticTextFile(
539
- path.join(dir, "public", "favicon.svg"),
540
- `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 36 36">
541
- <path fill="#000" d="M22.25 4h-8.5a1 1 0 0 0-.96.73l-5.54 19.4a.5.5 0 0 0 .62.62l5.05-1.44a2 2 0 0 0 1.38-1.4l3.22-11.66a.5.5 0 0 1 .96 0l3.22 11.67a2 2 0 0 0 1.38 1.39l5.05 1.44a.5.5 0 0 0 .62-.62l-5.54-19.4a1 1 0 0 0-.96-.73Z"/>
542
- <path fill="url(#gradient)" d="M18 28a7.63 7.63 0 0 1-5-2c-1.4 2.1-.35 4.35.6 5.55.14.17.41.07.47-.15.44-1.8 2.93-1.22 2.93.6 0 2.28.87 3.4 1.72 3.81.34.16.59-.2.49-.56-.31-1.05-.29-2.46 1.29-3.25 3-1.5 3.17-4.83 2.5-6-.67.67-2.6 2-5 2Z"/>
543
- <defs>
544
- <linearGradient id="gradient" x1="16" x2="16" y1="32" y2="24" gradientUnits="userSpaceOnUse">
545
- <stop stop-color="#FF1639"/>
546
- <stop offset="1" stop-color="#FF1639" stop-opacity="0"/>
547
- </linearGradient>
548
- </defs>
549
- </svg>
550
- `,
551
- );
552
- }
553
-
554
- /**
555
- * Install Astro integrations
556
- */
557
- async function InstallIntegrations() {
558
- const exec = (command: string) => execAsync(command, { cwd });
559
- const integrationPackages = [];
560
-
561
- for (const integration of props.integrations!) {
562
- switch (integration) {
563
- case "react":
564
- integrationPackages.push("@astrojs/react", "react", "react-dom");
565
- break;
566
- case "preact":
567
- integrationPackages.push("@astrojs/preact", "preact");
568
- break;
569
- case "vue":
570
- integrationPackages.push("@astrojs/vue", "vue");
571
- break;
572
- case "svelte":
573
- integrationPackages.push("@astrojs/svelte", "svelte");
574
- break;
575
- case "solid":
576
- integrationPackages.push("@astrojs/solid-js", "solid-js");
577
- break;
578
- case "lit":
579
- integrationPackages.push("@astrojs/lit", "lit");
580
- break;
581
- case "tailwind":
582
- integrationPackages.push("@tailwindcss/vite", "tailwindcss");
583
-
584
- // Create a base.css file with @tailwind directives
585
- await Folder(path.join(dir, "src", "styles"));
586
-
587
- await StaticTextFile(
588
- path.join(dir, "src", "styles", "global.css"),
589
- `@tailwind base;
590
- @tailwind components;
591
- @tailwind utilities;
592
- `,
593
- );
594
- break;
595
- case "mdx":
596
- integrationPackages.push("@astrojs/mdx");
597
- break;
598
- case "sitemap":
599
- integrationPackages.push("@astrojs/sitemap");
600
- break;
601
- case "partytown":
602
- integrationPackages.push("@astrojs/partytown");
603
- break;
604
- case "markdoc":
605
- integrationPackages.push("@astrojs/markdoc");
606
- break;
607
- }
608
- }
609
-
610
- if (integrationPackages.length > 0) {
611
- await exec(`bun add astro ${integrationPackages.join(" ")}`);
612
- }
613
- }
614
-
615
- /**
616
- * Install dependencies
617
- */
618
- async function InstallDependencies() {
619
- const exec = (command: string) => execAsync(command, { cwd });
620
-
621
- // Install Astro and general dependencies
622
- await exec("bun add astro");
623
-
624
- // Install dev dependencies
625
- const devDepsEntries = Object.entries(props.devDependencies || {});
626
- if (devDepsEntries.length > 0) {
627
- const devDepsArg = devDepsEntries
628
- .map(([name, version]) => `${name}@${version}`)
629
- .join(" ");
630
- await exec(`bun add -D ${devDepsArg}`);
631
- }
632
-
633
- // Install regular dependencies
634
- const depsEntries = Object.entries(props.dependencies || {});
635
- if (depsEntries.length > 0) {
636
- const depsArg = depsEntries
637
- .map(([name, version]) => `${name}@${version}`)
638
- .join(" ");
639
- await exec(`bun add ${depsArg}`);
640
- }
641
- }
642
- },
643
- );
@@ -1,72 +0,0 @@
1
- import { exec } from "node:child_process";
2
- import fs from "node:fs/promises";
3
- import path from "node:path";
4
- import { promisify } from "node:util";
5
- import type { Context } from "../context.ts";
6
- import { Resource } from "../resource.ts";
7
- import { ignore } from "../util/ignore.ts";
8
-
9
- const execAsync = promisify(exec);
10
-
11
- export interface ShadcnComponentProps {
12
- /**
13
- * The name of the component to install
14
- */
15
- name: string;
16
-
17
- /**
18
- * The working directory where the component should be installed
19
- */
20
- cwd: string;
21
-
22
- /**
23
- * Force overwrite of existing component
24
- * @default false
25
- */
26
- force?: boolean;
27
-
28
- /**
29
- * Mute output
30
- * @default false
31
- */
32
- silent?: boolean;
33
- }
34
-
35
- export interface ShadcnComponent extends ShadcnComponentProps, Resource {
36
- /**
37
- * The name of the installed component
38
- */
39
- name: string;
40
- }
41
-
42
- export const ShadcnComponent = Resource(
43
- "project::ShadcnComponent",
44
- async function (
45
- this: Context<ShadcnComponent>,
46
- _id: string,
47
- props: ShadcnComponentProps,
48
- ): Promise<ShadcnComponent> {
49
- if (this.phase === "delete") {
50
- await ignore("ENOENT", () =>
51
- fs.unlink(
52
- path.join(props.cwd, "src", "components", "ui", `${props.name}.tsx`),
53
- ),
54
- );
55
- return this.destroy();
56
- }
57
-
58
- // Build the shadcn add command with options
59
- const addCommand = [
60
- "bunx --bun shadcn@latest add",
61
- props.name,
62
- props.silent && "-s",
63
- ]
64
- .filter(Boolean)
65
- .join(" ");
66
-
67
- // Execute the command in the specified directory
68
- await execAsync(addCommand, { cwd: props.cwd });
69
-
70
- return this(props);
71
- },
72
- );