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
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
- );