alchemy 0.74.2 → 0.75.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +1 -1
  2. package/bin/alchemy.js +1781 -1746
  3. package/bin/alchemy.ts +1 -1
  4. package/bin/commands/create.ts +5 -4
  5. package/bin/commands/init.ts +109 -65
  6. package/bin/commands/util.ts +3 -1
  7. package/bin/constants.ts +2 -2
  8. package/bin/services/dependencies.ts +4 -4
  9. package/bin/services/execute-alchemy.ts +5 -3
  10. package/bin/services/get-package-version.ts +4 -4
  11. package/bin/services/github-workflow.ts +9 -10
  12. package/bin/services/package-manager.ts +1 -5
  13. package/bin/services/template-manager.ts +20 -13
  14. package/bin/services/vibe-rules.ts +6 -5
  15. package/bin/trpc.ts +7 -0
  16. package/bin/types.ts +1 -0
  17. package/lib/alchemy.d.ts +1 -1
  18. package/lib/alchemy.d.ts.map +1 -1
  19. package/lib/alchemy.js +30 -2
  20. package/lib/alchemy.js.map +1 -1
  21. package/lib/apply.js +10 -0
  22. package/lib/apply.js.map +1 -1
  23. package/lib/auth.js +1 -1
  24. package/lib/auth.js.map +1 -1
  25. package/lib/aws/control/types.d.ts.map +1 -1
  26. package/lib/aws/control/types.js.map +1 -1
  27. package/lib/clickhouse/api/sdk.gen.d.ts.map +1 -1
  28. package/lib/clickhouse/api/sdk.gen.js.map +1 -1
  29. package/lib/cloudflare/account-api-token.d.ts.map +1 -1
  30. package/lib/cloudflare/account-api-token.js.map +1 -1
  31. package/lib/cloudflare/astro/astro.js +1 -1
  32. package/lib/cloudflare/astro/astro.js.map +1 -1
  33. package/lib/cloudflare/bound.d.ts.map +1 -1
  34. package/lib/cloudflare/bucket.d.ts +1 -1
  35. package/lib/cloudflare/bucket.d.ts.map +1 -1
  36. package/lib/cloudflare/bucket.js +1 -1
  37. package/lib/cloudflare/bucket.js.map +1 -1
  38. package/lib/cloudflare/bun-spa/bun-spa.d.ts +1 -1
  39. package/lib/cloudflare/bun-spa/bun-spa.d.ts.map +1 -1
  40. package/lib/cloudflare/bun-spa/bun-spa.js +10 -11
  41. package/lib/cloudflare/bun-spa/bun-spa.js.map +1 -1
  42. package/lib/cloudflare/bun-spa/get-bun-spa-backend.d.ts +11 -0
  43. package/lib/cloudflare/bun-spa/get-bun-spa-backend.d.ts.map +1 -0
  44. package/lib/cloudflare/bun-spa/get-bun-spa-backend.js +26 -0
  45. package/lib/cloudflare/bun-spa/get-bun-spa-backend.js.map +1 -0
  46. package/lib/cloudflare/bun-spa/index.d.ts +2 -0
  47. package/lib/cloudflare/bun-spa/index.d.ts.map +1 -0
  48. package/lib/cloudflare/bun-spa/index.js +2 -0
  49. package/lib/cloudflare/bun-spa/index.js.map +1 -0
  50. package/lib/cloudflare/bundle/internal-worker-bundle.js +1 -1
  51. package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -1
  52. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js +1 -1
  53. package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -1
  54. package/lib/cloudflare/bundle/plugin-node-compat.js +1 -1
  55. package/lib/cloudflare/bundle/plugin-node-compat.js.map +1 -1
  56. package/lib/cloudflare/bundle/plugin-wasm.js +1 -1
  57. package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
  58. package/lib/cloudflare/cloudflare-env-proxy.d.ts.map +1 -1
  59. package/lib/cloudflare/cloudflare-env-proxy.js +3 -3
  60. package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
  61. package/lib/cloudflare/d1-migrations.js +1 -1
  62. package/lib/cloudflare/d1-migrations.js.map +1 -1
  63. package/lib/cloudflare/dns-records.js.map +1 -1
  64. package/lib/cloudflare/kv-namespace.d.ts +5 -0
  65. package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
  66. package/lib/cloudflare/kv-namespace.js +44 -19
  67. package/lib/cloudflare/kv-namespace.js.map +1 -1
  68. package/lib/cloudflare/miniflare/delete.d.ts.map +1 -1
  69. package/lib/cloudflare/miniflare/delete.js +3 -0
  70. package/lib/cloudflare/miniflare/delete.js.map +1 -1
  71. package/lib/cloudflare/miniflare/miniflare-controller.js +1 -1
  72. package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
  73. package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
  74. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +34 -4
  75. package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
  76. package/lib/cloudflare/miniflare/paths.d.ts +0 -1
  77. package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
  78. package/lib/cloudflare/miniflare/paths.js +6 -18
  79. package/lib/cloudflare/miniflare/paths.js.map +1 -1
  80. package/lib/cloudflare/next.js +1 -1
  81. package/lib/cloudflare/next.js.map +1 -1
  82. package/lib/cloudflare/nuxt/nuxt.js +1 -1
  83. package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
  84. package/lib/cloudflare/nuxt/plugin.d.ts.map +1 -1
  85. package/lib/cloudflare/nuxt/plugin.js +2 -2
  86. package/lib/cloudflare/nuxt/plugin.js.map +1 -1
  87. package/lib/cloudflare/react-router/plugin.js +1 -1
  88. package/lib/cloudflare/react-router/plugin.js.map +1 -1
  89. package/lib/cloudflare/react-router/react-router.js +1 -1
  90. package/lib/cloudflare/react-router/react-router.js.map +1 -1
  91. package/lib/cloudflare/redwood/redwood.js +1 -1
  92. package/lib/cloudflare/redwood/redwood.js.map +1 -1
  93. package/lib/cloudflare/sveltekit/sveltekit.js +1 -1
  94. package/lib/cloudflare/sveltekit/sveltekit.js.map +1 -1
  95. package/lib/cloudflare/tanstack-start/tanstack-start.js +1 -1
  96. package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
  97. package/lib/cloudflare/tunnel.d.ts.map +1 -1
  98. package/lib/cloudflare/tunnel.js +25 -1
  99. package/lib/cloudflare/tunnel.js.map +1 -1
  100. package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
  101. package/lib/cloudflare/vite/plugin.js +4 -4
  102. package/lib/cloudflare/vite/plugin.js.map +1 -1
  103. package/lib/cloudflare/website.d.ts.map +1 -1
  104. package/lib/cloudflare/website.js +1 -5
  105. package/lib/cloudflare/website.js.map +1 -1
  106. package/lib/cloudflare/worker-assets.d.ts +1 -1
  107. package/lib/cloudflare/worker-assets.d.ts.map +1 -1
  108. package/lib/cloudflare/worker-assets.js +1 -1
  109. package/lib/cloudflare/worker-assets.js.map +1 -1
  110. package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
  111. package/lib/cloudflare/worker-metadata.js.map +1 -1
  112. package/lib/cloudflare/worker-tail.d.ts.map +1 -1
  113. package/lib/cloudflare/worker-tail.js.map +1 -1
  114. package/lib/cloudflare/worker.d.ts.map +1 -1
  115. package/lib/cloudflare/worker.js +1 -1
  116. package/lib/cloudflare/worker.js.map +1 -1
  117. package/lib/cloudflare/wrangler.json.js +1 -2
  118. package/lib/cloudflare/wrangler.json.js.map +1 -1
  119. package/lib/coinbase/evm-account.d.ts.map +1 -1
  120. package/lib/coinbase/evm-account.js.map +1 -1
  121. package/lib/coinbase/evm-smart-account.d.ts.map +1 -1
  122. package/lib/coinbase/evm-smart-account.js.map +1 -1
  123. package/lib/coinbase/faucet.js +2 -2
  124. package/lib/coinbase/faucet.js.map +1 -1
  125. package/lib/docker/api.d.ts.map +1 -1
  126. package/lib/docker/api.js +1 -1
  127. package/lib/docker/api.js.map +1 -1
  128. package/lib/docker/image.js +1 -1
  129. package/lib/docker/image.js.map +1 -1
  130. package/lib/esbuild/bundle.js +1 -1
  131. package/lib/esbuild/bundle.js.map +1 -1
  132. package/lib/fs/file.js +1 -1
  133. package/lib/fs/file.js.map +1 -1
  134. package/lib/github/secret.d.ts.map +1 -1
  135. package/lib/github/secret.js.map +1 -1
  136. package/lib/llms.js +1 -1
  137. package/lib/llms.js.map +1 -1
  138. package/lib/neon/api/sdk.gen.d.ts.map +1 -1
  139. package/lib/neon/api/sdk.gen.js.map +1 -1
  140. package/lib/os/exec.d.ts.map +1 -1
  141. package/lib/os/exec.js +1 -1
  142. package/lib/os/exec.js.map +1 -1
  143. package/lib/planetscale/api/sdk.gen.d.ts.map +1 -1
  144. package/lib/planetscale/api/sdk.gen.js.map +1 -1
  145. package/lib/prisma-postgres/api/sdk.gen.d.ts.map +1 -1
  146. package/lib/prisma-postgres/api/sdk.gen.js.map +1 -1
  147. package/lib/scope.d.ts.map +1 -1
  148. package/lib/scope.js +3 -3
  149. package/lib/scope.js.map +1 -1
  150. package/lib/sentry/client-key.js +1 -1
  151. package/lib/sentry/client-key.js.map +1 -1
  152. package/lib/state/file-system-state-store.js +1 -1
  153. package/lib/state/file-system-state-store.js.map +1 -1
  154. package/lib/state/migrations.js +1 -1
  155. package/lib/state/migrations.js.map +1 -1
  156. package/lib/state/sqlite-state-store.js +1 -1
  157. package/lib/state/sqlite-state-store.js.map +1 -1
  158. package/lib/stripe/file.d.ts +3 -3
  159. package/lib/stripe/file.js +3 -3
  160. package/lib/test/bun.d.ts.map +1 -1
  161. package/lib/test/bun.js +1 -1
  162. package/lib/test/bun.js.map +1 -1
  163. package/lib/test/prune.js +1 -1
  164. package/lib/test/prune.js.map +1 -1
  165. package/lib/test/vitest.d.ts.map +1 -1
  166. package/lib/test/vitest.js +1 -1
  167. package/lib/test/vitest.js.map +1 -1
  168. package/lib/util/api/client/client.gen.d.ts +1 -1
  169. package/lib/util/api/client/client.gen.js +45 -45
  170. package/lib/util/api/client/types.gen.d.ts +22 -22
  171. package/lib/util/api/client/utils.gen.d.ts +3 -3
  172. package/lib/util/api/client/utils.gen.d.ts.map +1 -1
  173. package/lib/util/api/client/utils.gen.js +34 -34
  174. package/lib/util/api/client/utils.gen.js.map +1 -1
  175. package/lib/util/api/core/auth.gen.d.ts +3 -3
  176. package/lib/util/api/core/auth.gen.js +3 -3
  177. package/lib/util/api/core/bodySerializer.gen.d.ts +1 -1
  178. package/lib/util/api/core/bodySerializer.gen.js +3 -3
  179. package/lib/util/api/core/params.gen.d.ts +3 -3
  180. package/lib/util/api/core/params.gen.js +7 -7
  181. package/lib/util/api/core/pathSerializer.gen.d.ts +3 -3
  182. package/lib/util/api/core/pathSerializer.gen.js +36 -36
  183. package/lib/util/api/core/serverSentEvents.gen.d.ts +3 -3
  184. package/lib/util/api/core/serverSentEvents.gen.js +18 -18
  185. package/lib/util/api/core/types.gen.d.ts +4 -4
  186. package/lib/util/api/core/utils.gen.d.ts +1 -1
  187. package/lib/util/api/core/utils.gen.js +17 -17
  188. package/lib/util/camel-to-snake.d.ts.map +1 -1
  189. package/lib/util/content-type.js +1 -1
  190. package/lib/util/content-type.js.map +1 -1
  191. package/lib/util/find-workspace-root.d.ts +3 -0
  192. package/lib/util/find-workspace-root.d.ts.map +1 -0
  193. package/lib/util/find-workspace-root.js +64 -0
  194. package/lib/util/find-workspace-root.js.map +1 -0
  195. package/lib/util/idempotent-spawn.d.ts.map +1 -1
  196. package/lib/util/idempotent-spawn.js +2 -2
  197. package/lib/util/idempotent-spawn.js.map +1 -1
  198. package/lib/util/lock.js +1 -1
  199. package/lib/util/lock.js.map +1 -1
  200. package/lib/util/peer.d.ts.map +1 -1
  201. package/lib/util/peer.js.map +1 -1
  202. package/package.json +6 -1
  203. package/src/alchemy.ts +60 -4
  204. package/src/apply.ts +16 -1
  205. package/src/auth.ts +1 -1
  206. package/src/aws/control/types.ts +87107 -85281
  207. package/src/clickhouse/api/sdk.gen.ts +1 -3
  208. package/src/cloudflare/account-api-token.ts +3 -1
  209. package/src/cloudflare/astro/astro.ts +1 -1
  210. package/src/cloudflare/bound.ts +64 -65
  211. package/src/cloudflare/bucket.ts +4 -7
  212. package/src/cloudflare/bun-spa/bun-spa.ts +13 -13
  213. package/src/cloudflare/bun-spa/get-bun-spa-backend.ts +29 -0
  214. package/src/cloudflare/bun-spa/index.ts +1 -0
  215. package/src/cloudflare/bundle/internal-worker-bundle.ts +1 -1
  216. package/src/cloudflare/bundle/plugin-hybrid-node-compat.ts +1 -1
  217. package/src/cloudflare/bundle/plugin-node-compat.ts +1 -1
  218. package/src/cloudflare/bundle/plugin-wasm.ts +1 -1
  219. package/src/cloudflare/cloudflare-env-proxy.ts +2 -4
  220. package/src/cloudflare/d1-migrations.ts +1 -1
  221. package/src/cloudflare/dns-records.ts +3 -1
  222. package/src/cloudflare/kv-namespace.ts +52 -20
  223. package/src/cloudflare/miniflare/delete.ts +3 -0
  224. package/src/cloudflare/miniflare/miniflare-controller.ts +1 -1
  225. package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +39 -4
  226. package/src/cloudflare/miniflare/paths.ts +6 -26
  227. package/src/cloudflare/next.ts +1 -1
  228. package/src/cloudflare/nuxt/nuxt.ts +1 -1
  229. package/src/cloudflare/nuxt/plugin.ts +1 -4
  230. package/src/cloudflare/react-router/plugin.ts +1 -1
  231. package/src/cloudflare/react-router/react-router.ts +1 -1
  232. package/src/cloudflare/redwood/redwood.ts +1 -1
  233. package/src/cloudflare/sveltekit/sveltekit.ts +1 -1
  234. package/src/cloudflare/tanstack-start/tanstack-start.ts +1 -1
  235. package/src/cloudflare/tunnel.ts +36 -1
  236. package/src/cloudflare/vite/plugin.ts +2 -4
  237. package/src/cloudflare/website.ts +1 -6
  238. package/src/cloudflare/worker-assets.ts +1 -6
  239. package/src/cloudflare/worker-metadata.ts +5 -3
  240. package/src/cloudflare/worker-tail.ts +3 -1
  241. package/src/cloudflare/worker.ts +1 -3
  242. package/src/cloudflare/wrangler.json.ts +1 -2
  243. package/src/coinbase/evm-account.ts +3 -1
  244. package/src/coinbase/evm-smart-account.ts +3 -1
  245. package/src/coinbase/faucet.ts +2 -2
  246. package/src/docker/api.ts +4 -2
  247. package/src/docker/image.ts +1 -1
  248. package/src/esbuild/bundle.ts +1 -1
  249. package/src/fs/file.ts +1 -1
  250. package/src/github/secret.ts +5 -1
  251. package/src/llms.ts +1 -1
  252. package/src/neon/api/sdk.gen.ts +1 -3
  253. package/src/os/exec.ts +4 -2
  254. package/src/planetscale/api/sdk.gen.ts +1 -3
  255. package/src/prisma-postgres/api/sdk.gen.ts +1 -3
  256. package/src/scope.ts +3 -3
  257. package/src/sentry/client-key.ts +1 -5
  258. package/src/state/file-system-state-store.ts +1 -1
  259. package/src/state/migrations.ts +1 -1
  260. package/src/state/sqlite-state-store.ts +1 -1
  261. package/src/stripe/file.ts +3 -3
  262. package/src/test/bun.ts +4 -2
  263. package/src/test/prune.ts +1 -1
  264. package/src/test/vitest.ts +4 -2
  265. package/src/util/api/client/client.gen.ts +49 -49
  266. package/src/util/api/client/types.gen.ts +43 -43
  267. package/src/util/api/client/utils.gen.ts +47 -42
  268. package/src/util/api/core/auth.gen.ts +6 -6
  269. package/src/util/api/core/bodySerializer.gen.ts +4 -4
  270. package/src/util/api/core/params.gen.ts +10 -10
  271. package/src/util/api/core/pathSerializer.gen.ts +39 -39
  272. package/src/util/api/core/serverSentEvents.gen.ts +22 -22
  273. package/src/util/api/core/types.gen.ts +12 -12
  274. package/src/util/api/core/utils.gen.ts +18 -18
  275. package/src/util/camel-to-snake.ts +12 -10
  276. package/src/util/content-type.ts +1 -1
  277. package/{bin/services → src/util}/find-workspace-root.ts +27 -5
  278. package/src/util/idempotent-spawn.ts +2 -6
  279. package/src/util/lock.ts +1 -1
  280. package/src/util/peer.ts +3 -1
  281. package/templates/astro/alchemy.run.ts +0 -2
  282. package/templates/astro/astro.config.mjs +3 -3
  283. package/templates/astro/src/pages/api/hello.ts +16 -13
  284. package/templates/bun-spa/README.md +94 -0
  285. package/templates/bun-spa/_env +1 -0
  286. package/templates/bun-spa/_env.example +1 -0
  287. package/templates/bun-spa/_gitignore +29 -0
  288. package/templates/bun-spa/alchemy.run.ts +21 -0
  289. package/templates/bun-spa/bun-env.d.ts +25 -0
  290. package/templates/bun-spa/eslint.config.js +26 -0
  291. package/templates/bun-spa/package.json +30 -0
  292. package/templates/bun-spa/src/App.css +46 -0
  293. package/templates/bun-spa/src/App.tsx +53 -0
  294. package/templates/bun-spa/src/assets/logo.svg +1 -0
  295. package/templates/bun-spa/src/assets/react.svg +1 -0
  296. package/templates/bun-spa/src/frontend.tsx +14 -0
  297. package/templates/bun-spa/src/index.css +69 -0
  298. package/templates/bun-spa/src/index.html +14 -0
  299. package/templates/bun-spa/src/worker.ts +51 -0
  300. package/templates/bun-spa/tsconfig.json +24 -0
  301. package/templates/hono/alchemy.run.ts +0 -2
  302. package/templates/hono/src/index.ts +13 -13
  303. package/templates/nextjs/alchemy.run.ts +1 -3
  304. package/templates/nextjs/eslint.config.mjs +1 -1
  305. package/templates/nextjs/next-env.d.ts +1 -1
  306. package/templates/nextjs/next.config.ts +1 -1
  307. package/templates/nextjs/open-next.config.ts +1 -1
  308. package/templates/nextjs/src/app/api/hello/route.ts +2 -2
  309. package/templates/nextjs/src/app/layout.tsx +1 -1
  310. package/templates/nextjs/src/app/page.tsx +14 -15
  311. package/templates/nextjs/types/env.d.ts +4 -4
  312. package/templates/nuxt/alchemy.run.ts +0 -2
  313. package/templates/nuxt/server/middleware/auth.ts +1 -1
  314. package/templates/nuxt/server/middleware/hello.ts +2 -2
  315. package/templates/react-router/alchemy.run.ts +0 -2
  316. package/templates/react-router/app/entry.server.tsx +2 -2
  317. package/templates/react-router/package.json +1 -1
  318. package/templates/react-router/vite.config.ts +1 -1
  319. package/templates/react-router/workers/app.ts +2 -2
  320. package/templates/rwsdk/alchemy.run.ts +6 -4
  321. package/templates/rwsdk/package.json +1 -1
  322. package/templates/sveltekit/alchemy.run.ts +0 -2
  323. package/templates/sveltekit/package.json +1 -1
  324. package/templates/sveltekit/src/app.d.ts +7 -7
  325. package/templates/sveltekit/svelte.config.js +4 -4
  326. package/templates/sveltekit/vite.config.ts +3 -3
  327. package/templates/tanstack-start/alchemy.run.ts +0 -2
  328. package/templates/tanstack-start/package.json +1 -1
  329. package/templates/tanstack-start/src/components/Header.tsx +2 -2
  330. package/templates/tanstack-start/src/router.tsx +4 -4
  331. package/templates/tanstack-start/src/routes/__root.tsx +10 -10
  332. package/templates/tanstack-start/src/routes/api.demo-names.ts +6 -6
  333. package/templates/tanstack-start/src/routes/demo.start.api-request.tsx +11 -11
  334. package/templates/tanstack-start/src/routes/demo.start.server-funcs.tsx +30 -30
  335. package/templates/tanstack-start/src/routes/index.tsx +5 -5
  336. package/templates/tanstack-start/vite.config.ts +9 -9
  337. package/templates/typescript/alchemy.run.ts +0 -2
  338. package/templates/typescript/src/worker.ts +5 -1
  339. package/templates/vite/alchemy.run.ts +0 -2
  340. package/templates/vite/eslint.config.js +12 -12
  341. package/templates/vite/package.json +1 -1
  342. package/templates/vite/src/App.tsx +7 -7
  343. package/templates/vite/src/main.tsx +6 -6
  344. package/templates/vite/src/worker.ts +11 -12
  345. package/templates/vite/vite.config.ts +2 -2
  346. package/workers/tunnel-proxy.js +1 -1
  347. package/lib/cloudflare/miniflare/symlink-miniflare-state.d.ts +0 -2
  348. package/lib/cloudflare/miniflare/symlink-miniflare-state.d.ts.map +0 -1
  349. package/lib/cloudflare/miniflare/symlink-miniflare-state.js +0 -18
  350. package/lib/cloudflare/miniflare/symlink-miniflare-state.js.map +0 -1
  351. package/src/cloudflare/miniflare/symlink-miniflare-state.ts +0 -18
@@ -1,17 +1,17 @@
1
- import { Hono } from 'hono'
1
+ import { Hono } from "hono";
2
2
 
3
- const app = new Hono<{ Bindings: Env }>()
3
+ const app = new Hono<{ Bindings: Env }>();
4
4
 
5
- app.get('/', (c) => {
6
- return c.text('Hello Hono!')
7
- })
5
+ app.get("/", (c) => {
6
+ return c.text("Hello Hono!");
7
+ });
8
8
 
9
- app.get('/kv', async (c) => {
10
- const key = 'hello'
11
- const value = `world@${Date.now()}`
12
- await c.env.KV.put(key, value)
13
- const got = await c.env.KV.get(key)
14
- return c.json({ key, value: got })
15
- })
9
+ app.get("/kv", async (c) => {
10
+ const key = "hello";
11
+ const value = `world@${Date.now()}`;
12
+ await c.env.KV.put(key, value);
13
+ const got = await c.env.KV.get(key);
14
+ return c.json({ key, value: got });
15
+ });
16
16
 
17
- export default app
17
+ export default app;
@@ -1,5 +1,3 @@
1
- /// <reference types="@types/node" />
2
-
3
1
  import alchemy from "alchemy";
4
2
  import { Nextjs } from "alchemy/cloudflare";
5
3
 
@@ -13,4 +11,4 @@ console.log({
13
11
  url: worker.url,
14
12
  });
15
13
 
16
- await app.finalize();
14
+ await app.finalize();
@@ -13,4 +13,4 @@ const eslintConfig = [
13
13
  ...compat.extends("next/core-web-vitals", "next/typescript"),
14
14
  ];
15
15
 
16
- export default eslintConfig;
16
+ export default eslintConfig;
@@ -2,4 +2,4 @@
2
2
  /// <reference types="next/image-types/global" />
3
3
 
4
4
  // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/basic-features/typescript for more information.
5
+ // see https://nextjs.org/docs/basic-features/typescript for more information.
@@ -7,4 +7,4 @@ const nextConfig: NextConfig = {
7
7
 
8
8
  export default nextConfig;
9
9
 
10
- initOpenNextCloudflareForDev();
10
+ initOpenNextCloudflareForDev();
@@ -2,4 +2,4 @@ import { defineCloudflareConfig } from "@opennextjs/cloudflare";
2
2
 
3
3
  export default defineCloudflareConfig({
4
4
  // Configure OpenNext for Cloudflare Workers
5
- });
5
+ });
@@ -10,10 +10,10 @@ export async function GET(request: NextRequest) {
10
10
 
11
11
  export async function POST(request: NextRequest) {
12
12
  const body = await request.json();
13
-
13
+
14
14
  return Response.json({
15
15
  message: "POST received",
16
16
  data: body,
17
17
  timestamp: new Date().toISOString(),
18
18
  });
19
- }
19
+ }
@@ -16,4 +16,4 @@ export default function RootLayout({
16
16
  <body>{children}</body>
17
17
  </html>
18
18
  );
19
- }
19
+ }
@@ -4,15 +4,12 @@ export default function Home() {
4
4
  <h1>Welcome to Next.js on Cloudflare Workers!</h1>
5
5
  <p>
6
6
  This is a Next.js application deployed to Cloudflare Workers using{" "}
7
- <a
8
- href="https://alchemy.run"
9
- target="_blank"
10
- rel="noopener noreferrer"
11
- >
7
+ <a href="https://alchemy.run" target="_blank" rel="noopener noreferrer">
12
8
  Alchemy
13
- </a>.
9
+ </a>
10
+ .
14
11
  </p>
15
-
12
+
16
13
  <section>
17
14
  <h2>Features</h2>
18
15
  <ul>
@@ -27,23 +24,25 @@ export default function Home() {
27
24
 
28
25
  <section>
29
26
  <h2>Get Started</h2>
30
- <p>Edit <code>src/app/page.tsx</code> and save to see your changes.</p>
27
+ <p>
28
+ Edit <code>src/app/page.tsx</code> and save to see your changes.
29
+ </p>
31
30
  </section>
32
31
 
33
32
  <footer>
34
33
  <p>
35
34
  Learn more:{" "}
36
- <a
37
- href="https://nextjs.org/docs"
38
- target="_blank"
35
+ <a
36
+ href="https://nextjs.org/docs"
37
+ target="_blank"
39
38
  rel="noopener noreferrer"
40
39
  >
41
40
  Next.js Docs
42
41
  </a>{" "}
43
42
  |{" "}
44
- <a
45
- href="https://alchemy.run"
46
- target="_blank"
43
+ <a
44
+ href="https://alchemy.run"
45
+ target="_blank"
47
46
  rel="noopener noreferrer"
48
47
  >
49
48
  Alchemy Docs
@@ -52,4 +51,4 @@ export default function Home() {
52
51
  </footer>
53
52
  </main>
54
53
  );
55
- }
54
+ }
@@ -4,11 +4,11 @@
4
4
  import type { website } from "./alchemy.run.ts";
5
5
 
6
6
  declare global {
7
- type CloudflareEnv = typeof website.Env;
7
+ type CloudflareEnv = typeof website.Env;
8
8
  }
9
9
 
10
10
  declare module "cloudflare:workers" {
11
- namespace Cloudflare {
12
- export interface Env extends CloudflareEnv {}
13
- }
11
+ namespace Cloudflare {
12
+ export interface Env extends CloudflareEnv {}
13
+ }
14
14
  }
@@ -1,5 +1,3 @@
1
- /// <reference types="@types/node" />
2
-
3
1
  import alchemy from "alchemy";
4
2
  import { Nuxt } from "alchemy/cloudflare";
5
3
 
@@ -1,5 +1,5 @@
1
1
  // see: https://nuxt.com/docs/guide/directory-structure/server#server-middleware
2
2
 
3
3
  export default defineEventHandler((event) => {
4
- event.context.auth = { user: 123 }
4
+ event.context.auth = { user: 123 };
5
5
  });
@@ -1,5 +1,5 @@
1
1
  // see: https://nuxt.com/docs/guide/directory-structure/server#server-middleware
2
2
 
3
3
  export default defineEventHandler((event) => {
4
- console.log('New request: ' + getRequestURL(event))
5
- })
4
+ console.log("New request: " + getRequestURL(event));
5
+ });
@@ -1,5 +1,3 @@
1
- /// <reference types="@types/node" />
2
-
3
1
  import alchemy from "alchemy";
4
2
  import { ReactRouter } from "alchemy/cloudflare";
5
3
 
@@ -8,7 +8,7 @@ export default async function handleRequest(
8
8
  responseStatusCode: number,
9
9
  responseHeaders: Headers,
10
10
  routerContext: EntryContext,
11
- _loadContext: AppLoadContext
11
+ _loadContext: AppLoadContext,
12
12
  ) {
13
13
  let shellRendered = false;
14
14
  const userAgent = request.headers.get("user-agent");
@@ -25,7 +25,7 @@ export default async function handleRequest(
25
25
  console.error(error);
26
26
  }
27
27
  },
28
- }
28
+ },
29
29
  );
30
30
  shellRendered = true;
31
31
 
@@ -27,7 +27,7 @@
27
27
  "@types/react-dom": "^19.1.2",
28
28
  "tailwindcss": "^4.1.4",
29
29
  "typescript": "^5.8.3",
30
- "vite": "^6.3.3",
30
+ "vite": "^7.1.9",
31
31
  "vite-tsconfig-paths": "^5.1.4",
32
32
  "wrangler": "^4.20.5"
33
33
  }
@@ -10,7 +10,7 @@ export default defineConfig({
10
10
  tailwindcss(),
11
11
  reactRouter(),
12
12
  tsconfigPaths({
13
- root: "."
13
+ root: ".",
14
14
  }),
15
15
  ],
16
16
  });
@@ -11,7 +11,7 @@ declare module "react-router" {
11
11
 
12
12
  const requestHandler = createRequestHandler(
13
13
  () => import("virtual:react-router/server-build"),
14
- import.meta.env.MODE
14
+ import.meta.env.MODE,
15
15
  );
16
16
 
17
17
  export default {
@@ -20,4 +20,4 @@ export default {
20
20
  cloudflare: { env, ctx },
21
21
  });
22
22
  },
23
- }
23
+ };
@@ -1,9 +1,12 @@
1
- /// <reference types="@types/node" />
2
1
  import alchemy from "alchemy";
3
- import { D1Database, DurableObjectNamespace, Redwood } from "alchemy/cloudflare";
2
+ import {
3
+ D1Database,
4
+ DurableObjectNamespace,
5
+ Redwood,
6
+ } from "alchemy/cloudflare";
4
7
 
5
8
  const app = await alchemy("{projectName}");
6
-
9
+
7
10
  const database = await D1Database("database", {
8
11
  migrationsDir: "migrations",
9
12
  });
@@ -23,4 +26,3 @@ console.log({
23
26
  });
24
27
 
25
28
  await app.finalize();
26
-
@@ -43,7 +43,7 @@
43
43
  "typescript": "^5.8.3",
44
44
  "vibe-rules": "^0.2.31",
45
45
  "alchemy": "workspace:*",
46
- "vite": "^6.2.6",
46
+ "vite": "^7.1.9",
47
47
  "wrangler": "^4.16.0"
48
48
  },
49
49
  "pnpm": {
@@ -1,5 +1,3 @@
1
- /// <reference types="@types/node" />
2
-
3
1
  import alchemy from "alchemy";
4
2
  import { SvelteKit } from "alchemy/cloudflare";
5
3
 
@@ -27,7 +27,7 @@
27
27
  "svelte-check": "^4.0.0",
28
28
  "tailwindcss": "^4.0.0",
29
29
  "typescript": "^5.8.3",
30
- "vite": "^6.2.6",
30
+ "vite": "^7.1.9",
31
31
  "vite-plugin-devtools-json": "^0.2.0"
32
32
  }
33
33
  }
@@ -1,13 +1,13 @@
1
1
  // See https://svelte.dev/docs/kit/types#app.d.ts
2
2
  // for information about these interfaces
3
3
  declare global {
4
- namespace App {
5
- // interface Error {}
6
- // interface Locals {}
7
- // interface PageData {}
8
- // interface PageState {}
9
- // interface Platform {}
10
- }
4
+ namespace App {
5
+ // interface Error {}
6
+ // interface Locals {}
7
+ // interface PageData {}
8
+ // interface PageState {}
9
+ // interface Platform {}
10
+ }
11
11
  }
12
12
 
13
13
  export {};
@@ -1,12 +1,12 @@
1
- import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
2
- import alchemy from 'alchemy/cloudflare/sveltekit';
1
+ import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
2
+ import alchemy from "alchemy/cloudflare/sveltekit";
3
3
 
4
4
  /** @type {import('@sveltejs/kit').Config} */
5
5
  const config = {
6
6
  preprocess: vitePreprocess(),
7
7
  kit: {
8
- adapter: alchemy()
9
- }
8
+ adapter: alchemy(),
9
+ },
10
10
  };
11
11
 
12
12
  export default config;
@@ -1,6 +1,6 @@
1
- import { sveltekit } from '@sveltejs/kit/vite';
2
- import { defineConfig } from 'vite';
1
+ import { sveltekit } from "@sveltejs/kit/vite";
2
+ import { defineConfig } from "vite";
3
3
 
4
4
  export default defineConfig({
5
- plugins: [sveltekit()],
5
+ plugins: [sveltekit()],
6
6
  });
@@ -1,5 +1,3 @@
1
- /// <reference types="@types/node" />
2
-
3
1
  import alchemy from "alchemy";
4
2
  import { TanStackStart } from "alchemy/cloudflare";
5
3
 
@@ -35,7 +35,7 @@
35
35
  "alchemy": "workspace:*",
36
36
  "jsdom": "^26.0.0",
37
37
  "typescript": "^5.7.2",
38
- "vite": "^7.1.7",
38
+ "vite": "^7.1.9",
39
39
  "vitest": "^3.0.5",
40
40
  "web-vitals": "^4.2.4"
41
41
  }
@@ -1,4 +1,4 @@
1
- import { Link } from '@tanstack/react-router'
1
+ import { Link } from "@tanstack/react-router";
2
2
 
3
3
  export default function Header() {
4
4
  return (
@@ -17,5 +17,5 @@ export default function Header() {
17
17
  </div>
18
18
  </nav>
19
19
  </header>
20
- )
20
+ );
21
21
  }
@@ -1,7 +1,7 @@
1
- import { createRouter } from '@tanstack/react-router'
1
+ import { createRouter } from "@tanstack/react-router";
2
2
 
3
3
  // Import the generated route tree
4
- import { routeTree } from './routeTree.gen'
4
+ import { routeTree } from "./routeTree.gen";
5
5
 
6
6
  // Create a new router instance
7
7
  export const getRouter = () => {
@@ -9,5 +9,5 @@ export const getRouter = () => {
9
9
  routeTree,
10
10
  scrollRestoration: true,
11
11
  defaultPreloadStaleTime: 0,
12
- })
13
- }
12
+ });
13
+ };
@@ -1,33 +1,33 @@
1
- import { HeadContent, Scripts, createRootRoute } from '@tanstack/react-router'
1
+ import { HeadContent, Scripts, createRootRoute } from "@tanstack/react-router";
2
2
 
3
- import Header from '../components/Header'
3
+ import Header from "../components/Header";
4
4
 
5
- import appCss from '../styles.css?url'
5
+ import appCss from "../styles.css?url";
6
6
 
7
7
  export const Route = createRootRoute({
8
8
  head: () => ({
9
9
  meta: [
10
10
  {
11
- charSet: 'utf-8',
11
+ charSet: "utf-8",
12
12
  },
13
13
  {
14
- name: 'viewport',
15
- content: 'width=device-width, initial-scale=1',
14
+ name: "viewport",
15
+ content: "width=device-width, initial-scale=1",
16
16
  },
17
17
  {
18
- title: 'TanStack Start Starter',
18
+ title: "TanStack Start Starter",
19
19
  },
20
20
  ],
21
21
  links: [
22
22
  {
23
- rel: 'stylesheet',
23
+ rel: "stylesheet",
24
24
  href: appCss,
25
25
  },
26
26
  ],
27
27
  }),
28
28
 
29
29
  shellComponent: RootDocument,
30
- })
30
+ });
31
31
 
32
32
  function RootDocument({ children }: { children: React.ReactNode }) {
33
33
  return (
@@ -41,5 +41,5 @@ function RootDocument({ children }: { children: React.ReactNode }) {
41
41
  <Scripts />
42
42
  </body>
43
43
  </html>
44
- )
44
+ );
45
45
  }
@@ -1,15 +1,15 @@
1
- import { createFileRoute } from '@tanstack/react-router'
1
+ import { createFileRoute } from "@tanstack/react-router";
2
2
 
3
- export const Route = createFileRoute('/api/demo-names')({
3
+ export const Route = createFileRoute("/api/demo-names")({
4
4
  server: {
5
5
  handlers: {
6
6
  GET: () => {
7
- return new Response(JSON.stringify(['Alice', 'Bob', 'Charlie']), {
7
+ return new Response(JSON.stringify(["Alice", "Bob", "Charlie"]), {
8
8
  headers: {
9
- 'Content-Type': 'application/json',
9
+ "Content-Type": "application/json",
10
10
  },
11
- })
11
+ });
12
12
  },
13
13
  },
14
14
  },
15
- })
15
+ });
@@ -1,29 +1,29 @@
1
- import { useEffect, useState } from 'react'
1
+ import { useEffect, useState } from "react";
2
2
 
3
- import { createFileRoute } from '@tanstack/react-router'
3
+ import { createFileRoute } from "@tanstack/react-router";
4
4
 
5
5
  function getNames() {
6
- return fetch('/api/demo-names').then((res) => res.json())
6
+ return fetch("/api/demo-names").then((res) => res.json());
7
7
  }
8
8
 
9
- export const Route = createFileRoute('/demo/start/api-request')({
9
+ export const Route = createFileRoute("/demo/start/api-request")({
10
10
  component: Home,
11
- })
11
+ });
12
12
 
13
13
  function Home() {
14
- const [names, setNames] = useState<Array<string>>([])
14
+ const [names, setNames] = useState<Array<string>>([]);
15
15
 
16
16
  useEffect(() => {
17
- getNames().then(setNames)
18
- }, [])
17
+ getNames().then(setNames);
18
+ }, []);
19
19
 
20
20
  return (
21
21
  <div
22
22
  className="flex items-center justify-center min-h-screen p-4 text-white"
23
23
  style={{
24
- backgroundColor: '#000',
24
+ backgroundColor: "#000",
25
25
  backgroundImage:
26
- 'radial-gradient(ellipse 60% 60% at 0% 100%, #444 0%, #222 60%, #000 100%)',
26
+ "radial-gradient(ellipse 60% 60% at 0% 100%, #444 0%, #222 60%, #000 100%)",
27
27
  }}
28
28
  >
29
29
  <div className="w-full max-w-2xl p-8 rounded-xl backdrop-blur-md bg-black/50 shadow-xl border-8 border-black/10">
@@ -40,5 +40,5 @@ function Home() {
40
40
  </ul>
41
41
  </div>
42
42
  </div>
43
- )
43
+ );
44
44
  }
@@ -1,61 +1,61 @@
1
- import fs from 'node:fs'
2
- import { useCallback, useState } from 'react'
3
- import { createFileRoute, useRouter } from '@tanstack/react-router'
4
- import { createServerFn } from '@tanstack/react-start'
1
+ import fs from "node:fs";
2
+ import { useCallback, useState } from "react";
3
+ import { createFileRoute, useRouter } from "@tanstack/react-router";
4
+ import { createServerFn } from "@tanstack/react-start";
5
5
 
6
- const filePath = 'todos.json'
6
+ const filePath = "todos.json";
7
7
 
8
8
  async function readTodos() {
9
9
  return JSON.parse(
10
- await fs.promises.readFile(filePath, 'utf-8').catch(() =>
10
+ await fs.promises.readFile(filePath, "utf-8").catch(() =>
11
11
  JSON.stringify(
12
12
  [
13
- { id: 1, name: 'Get groceries' },
14
- { id: 2, name: 'Buy a new phone' },
13
+ { id: 1, name: "Get groceries" },
14
+ { id: 2, name: "Buy a new phone" },
15
15
  ],
16
16
  null,
17
17
  2,
18
18
  ),
19
19
  ),
20
- )
20
+ );
21
21
  }
22
22
 
23
23
  const getTodos = createServerFn({
24
- method: 'GET',
25
- }).handler(async () => await readTodos())
24
+ method: "GET",
25
+ }).handler(async () => await readTodos());
26
26
 
27
- const addTodo = createServerFn({ method: 'POST' })
27
+ const addTodo = createServerFn({ method: "POST" })
28
28
  .inputValidator((d: string) => d)
29
29
  .handler(async ({ data }) => {
30
- const todos = await readTodos()
31
- todos.push({ id: todos.length + 1, name: data })
32
- await fs.promises.writeFile(filePath, JSON.stringify(todos, null, 2))
33
- return todos
34
- })
30
+ const todos = await readTodos();
31
+ todos.push({ id: todos.length + 1, name: data });
32
+ await fs.promises.writeFile(filePath, JSON.stringify(todos, null, 2));
33
+ return todos;
34
+ });
35
35
 
36
- export const Route = createFileRoute('/demo/start/server-funcs')({
36
+ export const Route = createFileRoute("/demo/start/server-funcs")({
37
37
  component: Home,
38
38
  loader: async () => await getTodos(),
39
- })
39
+ });
40
40
 
41
41
  function Home() {
42
- const router = useRouter()
43
- let todos = Route.useLoaderData()
42
+ const router = useRouter();
43
+ let todos = Route.useLoaderData();
44
44
 
45
- const [todo, setTodo] = useState('')
45
+ const [todo, setTodo] = useState("");
46
46
 
47
47
  const submitTodo = useCallback(async () => {
48
- todos = await addTodo({ data: todo })
49
- setTodo('')
50
- router.invalidate()
51
- }, [addTodo, todo])
48
+ todos = await addTodo({ data: todo });
49
+ setTodo("");
50
+ router.invalidate();
51
+ }, [addTodo, todo]);
52
52
 
53
53
  return (
54
54
  <div
55
55
  className="flex items-center justify-center min-h-screen bg-gradient-to-br from-zinc-800 to-black p-4 text-white"
56
56
  style={{
57
57
  backgroundImage:
58
- 'radial-gradient(50% 50% at 20% 60%, #23272a 0%, #18181b 50%, #000000 100%)',
58
+ "radial-gradient(50% 50% at 20% 60%, #23272a 0%, #18181b 50%, #000000 100%)",
59
59
  }}
60
60
  >
61
61
  <div className="w-full max-w-2xl p-8 rounded-xl backdrop-blur-md bg-black/50 shadow-xl border-8 border-black/10">
@@ -76,8 +76,8 @@ function Home() {
76
76
  value={todo}
77
77
  onChange={(e) => setTodo(e.target.value)}
78
78
  onKeyDown={(e) => {
79
- if (e.key === 'Enter') {
80
- submitTodo()
79
+ if (e.key === "Enter") {
80
+ submitTodo();
81
81
  }
82
82
  }}
83
83
  placeholder="Enter a new todo..."
@@ -93,5 +93,5 @@ function Home() {
93
93
  </div>
94
94
  </div>
95
95
  </div>
96
- )
96
+ );
97
97
  }
@@ -1,9 +1,9 @@
1
- import { createFileRoute } from '@tanstack/react-router'
2
- import logo from '../logo.svg'
1
+ import { createFileRoute } from "@tanstack/react-router";
2
+ import logo from "../logo.svg";
3
3
 
4
- export const Route = createFileRoute('/')({
4
+ export const Route = createFileRoute("/")({
5
5
  component: App,
6
- })
6
+ });
7
7
 
8
8
  function App() {
9
9
  return (
@@ -35,5 +35,5 @@ function App() {
35
35
  </a>
36
36
  </header>
37
37
  </div>
38
- )
38
+ );
39
39
  }