alchemy 0.62.2 → 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 (611) hide show
  1. package/bin/alchemy.js +1518 -1204
  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 +7 -3
  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 +6 -4
  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/vite/vite.d.ts +1 -1
  163. package/lib/cloudflare/vite/vite.d.ts.map +1 -1
  164. package/lib/cloudflare/vite/vite.js +1 -1
  165. package/lib/cloudflare/vite/vite.js.map +1 -1
  166. package/lib/cloudflare/website.js +1 -1
  167. package/lib/cloudflare/website.js.map +1 -1
  168. package/lib/cloudflare/worker.d.ts +1 -1
  169. package/lib/cloudflare/worker.d.ts.map +1 -1
  170. package/lib/cloudflare/worker.js +12 -7
  171. package/lib/cloudflare/worker.js.map +1 -1
  172. package/lib/cloudflare/wrangler.json.d.ts +1 -1
  173. package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
  174. package/lib/cloudflare/wrangler.json.js +5 -3
  175. package/lib/cloudflare/wrangler.json.js.map +1 -1
  176. package/lib/docker/container.d.ts +6 -0
  177. package/lib/docker/container.d.ts.map +1 -1
  178. package/lib/docker/container.js +5 -1
  179. package/lib/docker/container.js.map +1 -1
  180. package/lib/docker/network.d.ts +8 -2
  181. package/lib/docker/network.d.ts.map +1 -1
  182. package/lib/docker/network.js +7 -2
  183. package/lib/docker/network.js.map +1 -1
  184. package/lib/docker/volume.d.ts +8 -2
  185. package/lib/docker/volume.d.ts.map +1 -1
  186. package/lib/docker/volume.js +6 -4
  187. package/lib/docker/volume.js.map +1 -1
  188. package/lib/esbuild/bundle.d.ts +1 -1
  189. package/lib/fs/index.d.ts +0 -8
  190. package/lib/fs/index.d.ts.map +1 -1
  191. package/lib/fs/index.js +0 -8
  192. package/lib/fs/index.js.map +1 -1
  193. package/lib/github/client.d.ts +1 -1
  194. package/lib/github/client.d.ts.map +1 -1
  195. package/lib/github/client.js +2 -1
  196. package/lib/github/client.js.map +1 -1
  197. package/lib/github/repository-environment.d.ts +8 -2
  198. package/lib/github/repository-environment.d.ts.map +1 -1
  199. package/lib/github/repository-environment.js +16 -12
  200. package/lib/github/repository-environment.js.map +1 -1
  201. package/lib/neon/project.d.ts +7 -1
  202. package/lib/neon/project.d.ts.map +1 -1
  203. package/lib/neon/project.js +10 -6
  204. package/lib/neon/project.js.map +1 -1
  205. package/lib/planetscale/branch.d.ts +4 -2
  206. package/lib/planetscale/branch.d.ts.map +1 -1
  207. package/lib/planetscale/branch.js +18 -12
  208. package/lib/planetscale/branch.js.map +1 -1
  209. package/lib/planetscale/database.d.ts +8 -2
  210. package/lib/planetscale/database.d.ts.map +1 -1
  211. package/lib/planetscale/database.js +24 -16
  212. package/lib/planetscale/database.js.map +1 -1
  213. package/lib/planetscale/password.d.ts +8 -2
  214. package/lib/planetscale/password.d.ts.map +1 -1
  215. package/lib/planetscale/password.js +2 -2
  216. package/lib/planetscale/password.js.map +1 -1
  217. package/lib/resource.d.ts +0 -2
  218. package/lib/resource.d.ts.map +1 -1
  219. package/lib/resource.js +1 -9
  220. package/lib/resource.js.map +1 -1
  221. package/lib/scope.d.ts +9 -3
  222. package/lib/scope.d.ts.map +1 -1
  223. package/lib/scope.js +21 -34
  224. package/lib/scope.js.map +1 -1
  225. package/lib/sentry/client-key.d.ts +7 -1
  226. package/lib/sentry/client-key.d.ts.map +1 -1
  227. package/lib/sentry/client-key.js +45 -6
  228. package/lib/sentry/client-key.js.map +1 -1
  229. package/lib/sentry/project.d.ts +8 -2
  230. package/lib/sentry/project.d.ts.map +1 -1
  231. package/lib/sentry/project.js +35 -5
  232. package/lib/sentry/project.js.map +1 -1
  233. package/lib/sentry/team.d.ts +8 -2
  234. package/lib/sentry/team.d.ts.map +1 -1
  235. package/lib/sentry/team.js +36 -6
  236. package/lib/sentry/team.js.map +1 -1
  237. package/lib/serde.d.ts +0 -5
  238. package/lib/serde.d.ts.map +1 -1
  239. package/lib/serde.js +0 -28
  240. package/lib/serde.js.map +1 -1
  241. package/lib/state/d1-state-store.d.ts +1 -1
  242. package/lib/state/d1-state-store.d.ts.map +1 -1
  243. package/lib/state/d1-state-store.js +5 -5
  244. package/lib/state/d1-state-store.js.map +1 -1
  245. package/lib/state/sqlite-state-store.d.ts.map +1 -1
  246. package/lib/state/sqlite-state-store.js +7 -11
  247. package/lib/state/sqlite-state-store.js.map +1 -1
  248. package/lib/stripe/card.d.ts.map +1 -1
  249. package/lib/stripe/card.js +3 -2
  250. package/lib/stripe/card.js.map +1 -1
  251. package/lib/stripe/client.d.ts +2 -2
  252. package/lib/stripe/client.d.ts.map +1 -1
  253. package/lib/stripe/client.js +4 -3
  254. package/lib/stripe/client.js.map +1 -1
  255. package/lib/stripe/coupon.d.ts.map +1 -1
  256. package/lib/stripe/coupon.js +4 -3
  257. package/lib/stripe/coupon.js.map +1 -1
  258. package/lib/stripe/customer.js +2 -2
  259. package/lib/stripe/customer.js.map +1 -1
  260. package/lib/stripe/entitlements-feature.d.ts.map +1 -1
  261. package/lib/stripe/entitlements-feature.js +3 -2
  262. package/lib/stripe/entitlements-feature.js.map +1 -1
  263. package/lib/stripe/file.d.ts.map +1 -1
  264. package/lib/stripe/file.js +3 -2
  265. package/lib/stripe/file.js.map +1 -1
  266. package/lib/stripe/meter.js +2 -2
  267. package/lib/stripe/meter.js.map +1 -1
  268. package/lib/stripe/portal-configuration.d.ts.map +1 -1
  269. package/lib/stripe/portal-configuration.js +3 -2
  270. package/lib/stripe/portal-configuration.js.map +1 -1
  271. package/lib/stripe/price.d.ts.map +1 -1
  272. package/lib/stripe/price.js +3 -2
  273. package/lib/stripe/price.js.map +1 -1
  274. package/lib/stripe/product-feature.d.ts.map +1 -1
  275. package/lib/stripe/product-feature.js +3 -2
  276. package/lib/stripe/product-feature.js.map +1 -1
  277. package/lib/stripe/product.d.ts.map +1 -1
  278. package/lib/stripe/product.js +3 -2
  279. package/lib/stripe/product.js.map +1 -1
  280. package/lib/stripe/promotion-code.d.ts.map +1 -1
  281. package/lib/stripe/promotion-code.js +3 -2
  282. package/lib/stripe/promotion-code.js.map +1 -1
  283. package/lib/stripe/shipping-rate.d.ts.map +1 -1
  284. package/lib/stripe/shipping-rate.js +4 -3
  285. package/lib/stripe/shipping-rate.js.map +1 -1
  286. package/lib/stripe/tax-rate.d.ts.map +1 -1
  287. package/lib/stripe/tax-rate.js +3 -2
  288. package/lib/stripe/tax-rate.js.map +1 -1
  289. package/lib/stripe/webhook.d.ts.map +1 -1
  290. package/lib/stripe/webhook.js +4 -3
  291. package/lib/stripe/webhook.js.map +1 -1
  292. package/lib/test/vitest.d.ts.map +1 -1
  293. package/lib/test/vitest.js +1 -0
  294. package/lib/test/vitest.js.map +1 -1
  295. package/lib/upstash/redis.d.ts +8 -2
  296. package/lib/upstash/redis.d.ts.map +1 -1
  297. package/lib/upstash/redis.js +5 -4
  298. package/lib/upstash/redis.js.map +1 -1
  299. package/lib/util/ignore-matcher.d.ts.map +1 -1
  300. package/lib/util/ignore-matcher.js +3 -1
  301. package/lib/util/ignore-matcher.js.map +1 -1
  302. package/lib/util/peer.d.ts +10 -0
  303. package/lib/util/peer.d.ts.map +1 -0
  304. package/lib/util/peer.js +42 -0
  305. package/lib/util/peer.js.map +1 -0
  306. package/lib/util/telemetry/constants.d.ts.map +1 -1
  307. package/lib/util/telemetry/constants.js +2 -2
  308. package/lib/util/telemetry/constants.js.map +1 -1
  309. package/lib/vercel/project.d.ts +7 -1
  310. package/lib/vercel/project.d.ts.map +1 -1
  311. package/lib/vercel/project.js +28 -0
  312. package/lib/vercel/project.js.map +1 -1
  313. package/package.json +88 -74
  314. package/src/alchemy.ts +76 -222
  315. package/src/apply.ts +6 -19
  316. package/src/aws/account-id.ts +6 -3
  317. package/src/aws/bucket.ts +43 -32
  318. package/src/aws/ec2/security-group.ts +15 -3
  319. package/src/aws/function.ts +65 -39
  320. package/src/aws/policy-attachment.ts +10 -6
  321. package/src/aws/policy.ts +33 -15
  322. package/src/aws/queue.ts +50 -29
  323. package/src/aws/role.ts +37 -20
  324. package/src/aws/ses.ts +24 -20
  325. package/src/aws/ssm-parameter.ts +40 -20
  326. package/src/aws/table.ts +35 -17
  327. package/src/cloudflare/account-api-token.ts +9 -7
  328. package/src/cloudflare/ai-gateway.ts +37 -34
  329. package/src/cloudflare/api-schema.ts +33 -26
  330. package/src/cloudflare/api-shield.ts +15 -2
  331. package/src/cloudflare/astro/astro.ts +5 -1
  332. package/src/cloudflare/astro/plugin.ts +2 -1
  333. package/src/cloudflare/bindings.ts +2 -2
  334. package/src/cloudflare/bound.ts +1 -1
  335. package/src/cloudflare/bucket.ts +242 -3
  336. package/src/cloudflare/compatibility-date.gen.ts +1 -1
  337. package/src/cloudflare/container.ts +23 -12
  338. package/src/cloudflare/custom-domain.ts +2 -2
  339. package/src/cloudflare/d1-database.ts +11 -4
  340. package/src/cloudflare/dispatch-namespace.ts +10 -7
  341. package/src/cloudflare/hyperdrive.ts +13 -3
  342. package/src/cloudflare/kv-namespace.ts +25 -2
  343. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +3 -1
  344. package/src/cloudflare/miniflare/paths.ts +13 -0
  345. package/src/cloudflare/pipeline.ts +76 -28
  346. package/src/cloudflare/queue-consumer.ts +1 -1
  347. package/src/cloudflare/queue.ts +65 -54
  348. package/src/cloudflare/react-router/react-router.ts +28 -2
  349. package/src/cloudflare/redwood/plugin.ts +3 -2
  350. package/src/cloudflare/route.ts +1 -1
  351. package/src/cloudflare/ruleset.ts +7 -2
  352. package/src/cloudflare/secret.ts +20 -31
  353. package/src/cloudflare/secrets-store.ts +7 -3
  354. package/src/cloudflare/tunnel.ts +13 -2
  355. package/src/cloudflare/vectorize-index.ts +14 -3
  356. package/src/cloudflare/vite/plugin.ts +3 -2
  357. package/src/cloudflare/vite/vite.ts +2 -3
  358. package/src/cloudflare/website.ts +1 -1
  359. package/src/cloudflare/worker.ts +35 -23
  360. package/src/cloudflare/wrangler.json.ts +7 -4
  361. package/src/docker/container.ts +13 -1
  362. package/src/docker/network.ts +18 -3
  363. package/src/docker/volume.ts +17 -6
  364. package/src/fs/index.ts +0 -8
  365. package/src/github/client.ts +6 -2
  366. package/src/github/repository-environment.ts +27 -13
  367. package/src/neon/project.ts +20 -6
  368. package/src/planetscale/branch.ts +24 -13
  369. package/src/planetscale/database.ts +38 -17
  370. package/src/planetscale/password.ts +10 -3
  371. package/src/resource.ts +1 -10
  372. package/src/scope.ts +29 -38
  373. package/src/sentry/client-key.ts +74 -6
  374. package/src/sentry/project.ts +59 -6
  375. package/src/sentry/team.ts +55 -7
  376. package/src/serde.ts +0 -44
  377. package/src/state/d1-state-store.ts +13 -6
  378. package/src/state/sqlite-state-store.ts +16 -17
  379. package/src/stripe/card.ts +5 -2
  380. package/src/stripe/client.ts +10 -3
  381. package/src/stripe/coupon.ts +4 -3
  382. package/src/stripe/customer.ts +2 -2
  383. package/src/stripe/entitlements-feature.ts +5 -2
  384. package/src/stripe/file.ts +3 -2
  385. package/src/stripe/meter.ts +2 -2
  386. package/src/stripe/portal-configuration.ts +5 -2
  387. package/src/stripe/price.ts +3 -2
  388. package/src/stripe/product-feature.ts +5 -2
  389. package/src/stripe/product.ts +3 -2
  390. package/src/stripe/promotion-code.ts +3 -2
  391. package/src/stripe/shipping-rate.ts +4 -3
  392. package/src/stripe/tax-rate.ts +3 -2
  393. package/src/stripe/webhook.ts +4 -3
  394. package/src/test/vitest.ts +1 -0
  395. package/src/upstash/redis.ts +15 -5
  396. package/src/util/ignore-matcher.ts +3 -1
  397. package/src/util/peer.ts +53 -0
  398. package/src/util/telemetry/constants.ts +2 -2
  399. package/src/vercel/project.ts +46 -1
  400. package/templates/astro/_gitignore +2 -1
  401. package/templates/hono/README.md +19 -0
  402. package/templates/hono/_env +1 -0
  403. package/templates/hono/_env.example +1 -0
  404. package/templates/hono/_gitignore +34 -0
  405. package/templates/hono/alchemy.run.ts +22 -0
  406. package/templates/hono/package.json +18 -0
  407. package/templates/hono/src/index.ts +17 -0
  408. package/templates/hono/tsconfig.json +13 -0
  409. package/templates/hono/types/env.d.ts +16 -0
  410. package/templates/nuxt/_gitignore +2 -1
  411. package/templates/react-router/_gitignore +1 -0
  412. package/templates/react-router/vite.config.ts +5 -3
  413. package/templates/rwsdk/_gitignore +2 -3
  414. package/templates/sveltekit/_gitignore +2 -1
  415. package/templates/tanstack-start/_gitignore +2 -1
  416. package/templates/typescript/_gitignore +2 -1
  417. package/templates/vite/_gitignore +2 -1
  418. package/workers/cloudflare-state-store.js +69 -74
  419. package/workers/dofs-state-store.js +1 -1
  420. package/bin/bootstrap-s3.ts +0 -255
  421. package/lib/ai/ark.d.ts +0 -12
  422. package/lib/ai/ark.d.ts.map +0 -1
  423. package/lib/ai/ark.js +0 -87
  424. package/lib/ai/ark.js.map +0 -1
  425. package/lib/ai/astro-file.d.ts +0 -138
  426. package/lib/ai/astro-file.d.ts.map +0 -1
  427. package/lib/ai/astro-file.js +0 -158
  428. package/lib/ai/astro-file.js.map +0 -1
  429. package/lib/ai/client.d.ts +0 -51
  430. package/lib/ai/client.d.ts.map +0 -1
  431. package/lib/ai/client.js +0 -58
  432. package/lib/ai/client.js.map +0 -1
  433. package/lib/ai/css-file.d.ts +0 -132
  434. package/lib/ai/css-file.d.ts.map +0 -1
  435. package/lib/ai/css-file.js +0 -142
  436. package/lib/ai/css-file.js.map +0 -1
  437. package/lib/ai/data.d.ts +0 -152
  438. package/lib/ai/data.d.ts.map +0 -1
  439. package/lib/ai/data.js +0 -120
  440. package/lib/ai/data.js.map +0 -1
  441. package/lib/ai/document.d.ts +0 -208
  442. package/lib/ai/document.d.ts.map +0 -1
  443. package/lib/ai/document.js +0 -206
  444. package/lib/ai/document.js.map +0 -1
  445. package/lib/ai/html-file.d.ts +0 -129
  446. package/lib/ai/html-file.d.ts.map +0 -1
  447. package/lib/ai/html-file.js +0 -139
  448. package/lib/ai/html-file.js.map +0 -1
  449. package/lib/ai/index.d.ts +0 -11
  450. package/lib/ai/index.d.ts.map +0 -1
  451. package/lib/ai/index.js +0 -11
  452. package/lib/ai/index.js.map +0 -1
  453. package/lib/ai/json-file.d.ts +0 -161
  454. package/lib/ai/json-file.d.ts.map +0 -1
  455. package/lib/ai/json-file.js +0 -188
  456. package/lib/ai/json-file.js.map +0 -1
  457. package/lib/ai/typescript-file.d.ts +0 -140
  458. package/lib/ai/typescript-file.d.ts.map +0 -1
  459. package/lib/ai/typescript-file.js +0 -146
  460. package/lib/ai/typescript-file.js.map +0 -1
  461. package/lib/ai/vue-file.d.ts +0 -127
  462. package/lib/ai/vue-file.d.ts.map +0 -1
  463. package/lib/ai/vue-file.js +0 -137
  464. package/lib/ai/vue-file.js.map +0 -1
  465. package/lib/ai/yaml-file.d.ts +0 -170
  466. package/lib/ai/yaml-file.d.ts.map +0 -1
  467. package/lib/ai/yaml-file.js +0 -201
  468. package/lib/ai/yaml-file.js.map +0 -1
  469. package/lib/fs/static-astro-file.d.ts +0 -35
  470. package/lib/fs/static-astro-file.d.ts.map +0 -1
  471. package/lib/fs/static-astro-file.js +0 -40
  472. package/lib/fs/static-astro-file.js.map +0 -1
  473. package/lib/fs/static-css-file.d.ts +0 -25
  474. package/lib/fs/static-css-file.d.ts.map +0 -1
  475. package/lib/fs/static-css-file.js +0 -30
  476. package/lib/fs/static-css-file.js.map +0 -1
  477. package/lib/fs/static-html-file.d.ts +0 -32
  478. package/lib/fs/static-html-file.d.ts.map +0 -1
  479. package/lib/fs/static-html-file.js +0 -37
  480. package/lib/fs/static-html-file.js.map +0 -1
  481. package/lib/fs/static-json-file.d.ts +0 -18
  482. package/lib/fs/static-json-file.d.ts.map +0 -1
  483. package/lib/fs/static-json-file.js +0 -19
  484. package/lib/fs/static-json-file.js.map +0 -1
  485. package/lib/fs/static-text-file.d.ts +0 -13
  486. package/lib/fs/static-text-file.d.ts.map +0 -1
  487. package/lib/fs/static-text-file.js +0 -9
  488. package/lib/fs/static-text-file.js.map +0 -1
  489. package/lib/fs/static-typescript-file.d.ts +0 -20
  490. package/lib/fs/static-typescript-file.d.ts.map +0 -1
  491. package/lib/fs/static-typescript-file.js +0 -16
  492. package/lib/fs/static-typescript-file.js.map +0 -1
  493. package/lib/fs/static-vue-file.d.ts +0 -29
  494. package/lib/fs/static-vue-file.d.ts.map +0 -1
  495. package/lib/fs/static-vue-file.js +0 -34
  496. package/lib/fs/static-vue-file.js.map +0 -1
  497. package/lib/fs/static-yaml-file.d.ts +0 -23
  498. package/lib/fs/static-yaml-file.d.ts.map +0 -1
  499. package/lib/fs/static-yaml-file.js +0 -10
  500. package/lib/fs/static-yaml-file.js.map +0 -1
  501. package/lib/internal/docs/providers.d.ts +0 -34
  502. package/lib/internal/docs/providers.d.ts.map +0 -1
  503. package/lib/internal/docs/providers.js +0 -200
  504. package/lib/internal/docs/providers.js.map +0 -1
  505. package/lib/runtime/bind.d.ts +0 -25
  506. package/lib/runtime/bind.d.ts.map +0 -1
  507. package/lib/runtime/bind.js +0 -76
  508. package/lib/runtime/bind.js.map +0 -1
  509. package/lib/runtime/global.d.ts +0 -8
  510. package/lib/runtime/global.d.ts.map +0 -1
  511. package/lib/runtime/global.js +0 -3
  512. package/lib/runtime/global.js.map +0 -1
  513. package/lib/runtime/plugin.d.ts +0 -35
  514. package/lib/runtime/plugin.d.ts.map +0 -1
  515. package/lib/runtime/plugin.js +0 -134
  516. package/lib/runtime/plugin.js.map +0 -1
  517. package/lib/runtime/shims.d.ts +0 -6
  518. package/lib/runtime/shims.d.ts.map +0 -1
  519. package/lib/runtime/shims.js +0 -27
  520. package/lib/runtime/shims.js.map +0 -1
  521. package/lib/runtime/state.d.ts +0 -5
  522. package/lib/runtime/state.d.ts.map +0 -1
  523. package/lib/runtime/state.js +0 -4
  524. package/lib/runtime/state.js.map +0 -1
  525. package/lib/web/astro.d.ts +0 -148
  526. package/lib/web/astro.d.ts.map +0 -1
  527. package/lib/web/astro.js +0 -419
  528. package/lib/web/astro.js.map +0 -1
  529. package/lib/web/shadcn-component.d.ts +0 -30
  530. package/lib/web/shadcn-component.d.ts.map +0 -1
  531. package/lib/web/shadcn-component.js +0 -25
  532. package/lib/web/shadcn-component.js.map +0 -1
  533. package/lib/web/shadcn.d.ts +0 -98
  534. package/lib/web/shadcn.d.ts.map +0 -1
  535. package/lib/web/shadcn.js +0 -102
  536. package/lib/web/shadcn.js.map +0 -1
  537. package/lib/web/tailwind.d.ts +0 -65
  538. package/lib/web/tailwind.d.ts.map +0 -1
  539. package/lib/web/tailwind.js +0 -98
  540. package/lib/web/tailwind.js.map +0 -1
  541. package/lib/web/vite.d.ts +0 -96
  542. package/lib/web/vite.d.ts.map +0 -1
  543. package/lib/web/vite.js +0 -232
  544. package/lib/web/vite.js.map +0 -1
  545. package/lib/web/vitepress/config.d.ts +0 -12
  546. package/lib/web/vitepress/config.d.ts.map +0 -1
  547. package/lib/web/vitepress/config.js +0 -33
  548. package/lib/web/vitepress/config.js.map +0 -1
  549. package/lib/web/vitepress/custom-theme.d.ts +0 -174
  550. package/lib/web/vitepress/custom-theme.d.ts.map +0 -1
  551. package/lib/web/vitepress/custom-theme.js +0 -337
  552. package/lib/web/vitepress/custom-theme.js.map +0 -1
  553. package/lib/web/vitepress/dependencies.d.ts +0 -13
  554. package/lib/web/vitepress/dependencies.d.ts.map +0 -1
  555. package/lib/web/vitepress/dependencies.js +0 -37
  556. package/lib/web/vitepress/dependencies.js.map +0 -1
  557. package/lib/web/vitepress/home-page.d.ts +0 -247
  558. package/lib/web/vitepress/home-page.d.ts.map +0 -1
  559. package/lib/web/vitepress/home-page.js +0 -146
  560. package/lib/web/vitepress/home-page.js.map +0 -1
  561. package/lib/web/vitepress/index.d.ts +0 -6
  562. package/lib/web/vitepress/index.d.ts.map +0 -1
  563. package/lib/web/vitepress/index.js +0 -6
  564. package/lib/web/vitepress/index.js.map +0 -1
  565. package/lib/web/vitepress/process-front-matter-files.d.ts +0 -19
  566. package/lib/web/vitepress/process-front-matter-files.d.ts.map +0 -1
  567. package/lib/web/vitepress/process-front-matter-files.js +0 -73
  568. package/lib/web/vitepress/process-front-matter-files.js.map +0 -1
  569. package/lib/web/vitepress/vitepress.d.ts +0 -75
  570. package/lib/web/vitepress/vitepress.d.ts.map +0 -1
  571. package/lib/web/vitepress/vitepress.js +0 -254
  572. package/lib/web/vitepress/vitepress.js.map +0 -1
  573. package/src/ai/ark.ts +0 -118
  574. package/src/ai/astro-file.ts +0 -270
  575. package/src/ai/client.ts +0 -117
  576. package/src/ai/css-file.ts +0 -247
  577. package/src/ai/data.ts +0 -221
  578. package/src/ai/document.ts +0 -367
  579. package/src/ai/html-file.ts +0 -244
  580. package/src/ai/index.ts +0 -10
  581. package/src/ai/json-file.ts +0 -325
  582. package/src/ai/typescript-file.ts +0 -259
  583. package/src/ai/vue-file.ts +0 -242
  584. package/src/ai/yaml-file.ts +0 -328
  585. package/src/fs/static-astro-file.ts +0 -45
  586. package/src/fs/static-css-file.ts +0 -35
  587. package/src/fs/static-html-file.ts +0 -42
  588. package/src/fs/static-json-file.ts +0 -38
  589. package/src/fs/static-text-file.ts +0 -23
  590. package/src/fs/static-typescript-file.ts +0 -37
  591. package/src/fs/static-vue-file.ts +0 -39
  592. package/src/fs/static-yaml-file.ts +0 -33
  593. package/src/internal/docs/providers.ts +0 -286
  594. package/src/runtime/bind.ts +0 -95
  595. package/src/runtime/global.ts +0 -10
  596. package/src/runtime/plugin.ts +0 -163
  597. package/src/runtime/shims.js +0 -34
  598. package/src/runtime/state.ts +0 -9
  599. package/src/web/astro.ts +0 -643
  600. package/src/web/shadcn-component.ts +0 -72
  601. package/src/web/shadcn.ts +0 -221
  602. package/src/web/tailwind.ts +0 -167
  603. package/src/web/vite.ts +0 -407
  604. package/src/web/vitepress/config.ts +0 -50
  605. package/src/web/vitepress/custom-theme.ts +0 -514
  606. package/src/web/vitepress/dependencies.ts +0 -69
  607. package/src/web/vitepress/home-page.ts +0 -378
  608. package/src/web/vitepress/index.ts +0 -5
  609. package/src/web/vitepress/process-front-matter-files.ts +0 -107
  610. package/src/web/vitepress/vitepress.ts +0 -372
  611. 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
- );