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.
- package/README.md +1 -1
- package/bin/alchemy.js +1781 -1746
- package/bin/alchemy.ts +1 -1
- package/bin/commands/create.ts +5 -4
- package/bin/commands/init.ts +109 -65
- package/bin/commands/util.ts +3 -1
- package/bin/constants.ts +2 -2
- package/bin/services/dependencies.ts +4 -4
- package/bin/services/execute-alchemy.ts +5 -3
- package/bin/services/get-package-version.ts +4 -4
- package/bin/services/github-workflow.ts +9 -10
- package/bin/services/package-manager.ts +1 -5
- package/bin/services/template-manager.ts +20 -13
- package/bin/services/vibe-rules.ts +6 -5
- package/bin/trpc.ts +7 -0
- package/bin/types.ts +1 -0
- package/lib/alchemy.d.ts +1 -1
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +30 -2
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.js +10 -0
- package/lib/apply.js.map +1 -1
- package/lib/auth.js +1 -1
- package/lib/auth.js.map +1 -1
- package/lib/aws/control/types.d.ts.map +1 -1
- package/lib/aws/control/types.js.map +1 -1
- package/lib/clickhouse/api/sdk.gen.d.ts.map +1 -1
- package/lib/clickhouse/api/sdk.gen.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/astro/astro.js +1 -1
- package/lib/cloudflare/astro/astro.js.map +1 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts +1 -1
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +1 -1
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/bun-spa/bun-spa.d.ts +1 -1
- package/lib/cloudflare/bun-spa/bun-spa.d.ts.map +1 -1
- package/lib/cloudflare/bun-spa/bun-spa.js +10 -11
- package/lib/cloudflare/bun-spa/bun-spa.js.map +1 -1
- package/lib/cloudflare/bun-spa/get-bun-spa-backend.d.ts +11 -0
- package/lib/cloudflare/bun-spa/get-bun-spa-backend.d.ts.map +1 -0
- package/lib/cloudflare/bun-spa/get-bun-spa-backend.js +26 -0
- package/lib/cloudflare/bun-spa/get-bun-spa-backend.js.map +1 -0
- package/lib/cloudflare/bun-spa/index.d.ts +2 -0
- package/lib/cloudflare/bun-spa/index.d.ts.map +1 -0
- package/lib/cloudflare/bun-spa/index.js +2 -0
- package/lib/cloudflare/bun-spa/index.js.map +1 -0
- package/lib/cloudflare/bundle/internal-worker-bundle.js +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js +1 -1
- package/lib/cloudflare/bundle/plugin-hybrid-node-compat.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-node-compat.js +1 -1
- package/lib/cloudflare/bundle/plugin-node-compat.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-wasm.js +1 -1
- package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
- package/lib/cloudflare/cloudflare-env-proxy.d.ts.map +1 -1
- package/lib/cloudflare/cloudflare-env-proxy.js +3 -3
- package/lib/cloudflare/cloudflare-env-proxy.js.map +1 -1
- package/lib/cloudflare/d1-migrations.js +1 -1
- package/lib/cloudflare/d1-migrations.js.map +1 -1
- package/lib/cloudflare/dns-records.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts +5 -0
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +44 -19
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/miniflare/delete.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/delete.js +3 -0
- package/lib/cloudflare/miniflare/delete.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.js +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +34 -4
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/paths.d.ts +0 -1
- package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/paths.js +6 -18
- package/lib/cloudflare/miniflare/paths.js.map +1 -1
- package/lib/cloudflare/next.js +1 -1
- package/lib/cloudflare/next.js.map +1 -1
- package/lib/cloudflare/nuxt/nuxt.js +1 -1
- package/lib/cloudflare/nuxt/nuxt.js.map +1 -1
- package/lib/cloudflare/nuxt/plugin.d.ts.map +1 -1
- package/lib/cloudflare/nuxt/plugin.js +2 -2
- package/lib/cloudflare/nuxt/plugin.js.map +1 -1
- package/lib/cloudflare/react-router/plugin.js +1 -1
- package/lib/cloudflare/react-router/plugin.js.map +1 -1
- package/lib/cloudflare/react-router/react-router.js +1 -1
- package/lib/cloudflare/react-router/react-router.js.map +1 -1
- package/lib/cloudflare/redwood/redwood.js +1 -1
- package/lib/cloudflare/redwood/redwood.js.map +1 -1
- package/lib/cloudflare/sveltekit/sveltekit.js +1 -1
- package/lib/cloudflare/sveltekit/sveltekit.js.map +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.js +1 -1
- package/lib/cloudflare/tanstack-start/tanstack-start.js.map +1 -1
- package/lib/cloudflare/tunnel.d.ts.map +1 -1
- package/lib/cloudflare/tunnel.js +25 -1
- package/lib/cloudflare/tunnel.js.map +1 -1
- package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
- package/lib/cloudflare/vite/plugin.js +4 -4
- package/lib/cloudflare/vite/plugin.js.map +1 -1
- package/lib/cloudflare/website.d.ts.map +1 -1
- package/lib/cloudflare/website.js +1 -5
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-assets.d.ts +1 -1
- package/lib/cloudflare/worker-assets.d.ts.map +1 -1
- package/lib/cloudflare/worker-assets.js +1 -1
- package/lib/cloudflare/worker-assets.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker-tail.d.ts.map +1 -1
- package/lib/cloudflare/worker-tail.js.map +1 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +1 -1
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.js +1 -2
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/coinbase/evm-account.d.ts.map +1 -1
- package/lib/coinbase/evm-account.js.map +1 -1
- package/lib/coinbase/evm-smart-account.d.ts.map +1 -1
- package/lib/coinbase/evm-smart-account.js.map +1 -1
- package/lib/coinbase/faucet.js +2 -2
- package/lib/coinbase/faucet.js.map +1 -1
- package/lib/docker/api.d.ts.map +1 -1
- package/lib/docker/api.js +1 -1
- package/lib/docker/api.js.map +1 -1
- package/lib/docker/image.js +1 -1
- package/lib/docker/image.js.map +1 -1
- package/lib/esbuild/bundle.js +1 -1
- package/lib/esbuild/bundle.js.map +1 -1
- package/lib/fs/file.js +1 -1
- package/lib/fs/file.js.map +1 -1
- package/lib/github/secret.d.ts.map +1 -1
- package/lib/github/secret.js.map +1 -1
- package/lib/llms.js +1 -1
- package/lib/llms.js.map +1 -1
- package/lib/neon/api/sdk.gen.d.ts.map +1 -1
- package/lib/neon/api/sdk.gen.js.map +1 -1
- package/lib/os/exec.d.ts.map +1 -1
- package/lib/os/exec.js +1 -1
- package/lib/os/exec.js.map +1 -1
- package/lib/planetscale/api/sdk.gen.d.ts.map +1 -1
- package/lib/planetscale/api/sdk.gen.js.map +1 -1
- package/lib/prisma-postgres/api/sdk.gen.d.ts.map +1 -1
- package/lib/prisma-postgres/api/sdk.gen.js.map +1 -1
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +3 -3
- package/lib/scope.js.map +1 -1
- package/lib/sentry/client-key.js +1 -1
- package/lib/sentry/client-key.js.map +1 -1
- package/lib/state/file-system-state-store.js +1 -1
- package/lib/state/file-system-state-store.js.map +1 -1
- package/lib/state/migrations.js +1 -1
- package/lib/state/migrations.js.map +1 -1
- package/lib/state/sqlite-state-store.js +1 -1
- package/lib/state/sqlite-state-store.js.map +1 -1
- package/lib/stripe/file.d.ts +3 -3
- package/lib/stripe/file.js +3 -3
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +1 -1
- package/lib/test/bun.js.map +1 -1
- package/lib/test/prune.js +1 -1
- package/lib/test/prune.js.map +1 -1
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +1 -1
- package/lib/test/vitest.js.map +1 -1
- package/lib/util/api/client/client.gen.d.ts +1 -1
- package/lib/util/api/client/client.gen.js +45 -45
- package/lib/util/api/client/types.gen.d.ts +22 -22
- package/lib/util/api/client/utils.gen.d.ts +3 -3
- package/lib/util/api/client/utils.gen.d.ts.map +1 -1
- package/lib/util/api/client/utils.gen.js +34 -34
- package/lib/util/api/client/utils.gen.js.map +1 -1
- package/lib/util/api/core/auth.gen.d.ts +3 -3
- package/lib/util/api/core/auth.gen.js +3 -3
- package/lib/util/api/core/bodySerializer.gen.d.ts +1 -1
- package/lib/util/api/core/bodySerializer.gen.js +3 -3
- package/lib/util/api/core/params.gen.d.ts +3 -3
- package/lib/util/api/core/params.gen.js +7 -7
- package/lib/util/api/core/pathSerializer.gen.d.ts +3 -3
- package/lib/util/api/core/pathSerializer.gen.js +36 -36
- package/lib/util/api/core/serverSentEvents.gen.d.ts +3 -3
- package/lib/util/api/core/serverSentEvents.gen.js +18 -18
- package/lib/util/api/core/types.gen.d.ts +4 -4
- package/lib/util/api/core/utils.gen.d.ts +1 -1
- package/lib/util/api/core/utils.gen.js +17 -17
- package/lib/util/camel-to-snake.d.ts.map +1 -1
- package/lib/util/content-type.js +1 -1
- package/lib/util/content-type.js.map +1 -1
- package/lib/util/find-workspace-root.d.ts +3 -0
- package/lib/util/find-workspace-root.d.ts.map +1 -0
- package/lib/util/find-workspace-root.js +64 -0
- package/lib/util/find-workspace-root.js.map +1 -0
- package/lib/util/idempotent-spawn.d.ts.map +1 -1
- package/lib/util/idempotent-spawn.js +2 -2
- package/lib/util/idempotent-spawn.js.map +1 -1
- package/lib/util/lock.js +1 -1
- package/lib/util/lock.js.map +1 -1
- package/lib/util/peer.d.ts.map +1 -1
- package/lib/util/peer.js.map +1 -1
- package/package.json +6 -1
- package/src/alchemy.ts +60 -4
- package/src/apply.ts +16 -1
- package/src/auth.ts +1 -1
- package/src/aws/control/types.ts +87107 -85281
- package/src/clickhouse/api/sdk.gen.ts +1 -3
- package/src/cloudflare/account-api-token.ts +3 -1
- package/src/cloudflare/astro/astro.ts +1 -1
- package/src/cloudflare/bound.ts +64 -65
- package/src/cloudflare/bucket.ts +4 -7
- package/src/cloudflare/bun-spa/bun-spa.ts +13 -13
- package/src/cloudflare/bun-spa/get-bun-spa-backend.ts +29 -0
- package/src/cloudflare/bun-spa/index.ts +1 -0
- package/src/cloudflare/bundle/internal-worker-bundle.ts +1 -1
- package/src/cloudflare/bundle/plugin-hybrid-node-compat.ts +1 -1
- package/src/cloudflare/bundle/plugin-node-compat.ts +1 -1
- package/src/cloudflare/bundle/plugin-wasm.ts +1 -1
- package/src/cloudflare/cloudflare-env-proxy.ts +2 -4
- package/src/cloudflare/d1-migrations.ts +1 -1
- package/src/cloudflare/dns-records.ts +3 -1
- package/src/cloudflare/kv-namespace.ts +52 -20
- package/src/cloudflare/miniflare/delete.ts +3 -0
- package/src/cloudflare/miniflare/miniflare-controller.ts +1 -1
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +39 -4
- package/src/cloudflare/miniflare/paths.ts +6 -26
- package/src/cloudflare/next.ts +1 -1
- package/src/cloudflare/nuxt/nuxt.ts +1 -1
- package/src/cloudflare/nuxt/plugin.ts +1 -4
- package/src/cloudflare/react-router/plugin.ts +1 -1
- package/src/cloudflare/react-router/react-router.ts +1 -1
- package/src/cloudflare/redwood/redwood.ts +1 -1
- package/src/cloudflare/sveltekit/sveltekit.ts +1 -1
- package/src/cloudflare/tanstack-start/tanstack-start.ts +1 -1
- package/src/cloudflare/tunnel.ts +36 -1
- package/src/cloudflare/vite/plugin.ts +2 -4
- package/src/cloudflare/website.ts +1 -6
- package/src/cloudflare/worker-assets.ts +1 -6
- package/src/cloudflare/worker-metadata.ts +5 -3
- package/src/cloudflare/worker-tail.ts +3 -1
- package/src/cloudflare/worker.ts +1 -3
- package/src/cloudflare/wrangler.json.ts +1 -2
- package/src/coinbase/evm-account.ts +3 -1
- package/src/coinbase/evm-smart-account.ts +3 -1
- package/src/coinbase/faucet.ts +2 -2
- package/src/docker/api.ts +4 -2
- package/src/docker/image.ts +1 -1
- package/src/esbuild/bundle.ts +1 -1
- package/src/fs/file.ts +1 -1
- package/src/github/secret.ts +5 -1
- package/src/llms.ts +1 -1
- package/src/neon/api/sdk.gen.ts +1 -3
- package/src/os/exec.ts +4 -2
- package/src/planetscale/api/sdk.gen.ts +1 -3
- package/src/prisma-postgres/api/sdk.gen.ts +1 -3
- package/src/scope.ts +3 -3
- package/src/sentry/client-key.ts +1 -5
- package/src/state/file-system-state-store.ts +1 -1
- package/src/state/migrations.ts +1 -1
- package/src/state/sqlite-state-store.ts +1 -1
- package/src/stripe/file.ts +3 -3
- package/src/test/bun.ts +4 -2
- package/src/test/prune.ts +1 -1
- package/src/test/vitest.ts +4 -2
- package/src/util/api/client/client.gen.ts +49 -49
- package/src/util/api/client/types.gen.ts +43 -43
- package/src/util/api/client/utils.gen.ts +47 -42
- package/src/util/api/core/auth.gen.ts +6 -6
- package/src/util/api/core/bodySerializer.gen.ts +4 -4
- package/src/util/api/core/params.gen.ts +10 -10
- package/src/util/api/core/pathSerializer.gen.ts +39 -39
- package/src/util/api/core/serverSentEvents.gen.ts +22 -22
- package/src/util/api/core/types.gen.ts +12 -12
- package/src/util/api/core/utils.gen.ts +18 -18
- package/src/util/camel-to-snake.ts +12 -10
- package/src/util/content-type.ts +1 -1
- package/{bin/services → src/util}/find-workspace-root.ts +27 -5
- package/src/util/idempotent-spawn.ts +2 -6
- package/src/util/lock.ts +1 -1
- package/src/util/peer.ts +3 -1
- package/templates/astro/alchemy.run.ts +0 -2
- package/templates/astro/astro.config.mjs +3 -3
- package/templates/astro/src/pages/api/hello.ts +16 -13
- package/templates/bun-spa/README.md +94 -0
- package/templates/bun-spa/_env +1 -0
- package/templates/bun-spa/_env.example +1 -0
- package/templates/bun-spa/_gitignore +29 -0
- package/templates/bun-spa/alchemy.run.ts +21 -0
- package/templates/bun-spa/bun-env.d.ts +25 -0
- package/templates/bun-spa/eslint.config.js +26 -0
- package/templates/bun-spa/package.json +30 -0
- package/templates/bun-spa/src/App.css +46 -0
- package/templates/bun-spa/src/App.tsx +53 -0
- package/templates/bun-spa/src/assets/logo.svg +1 -0
- package/templates/bun-spa/src/assets/react.svg +1 -0
- package/templates/bun-spa/src/frontend.tsx +14 -0
- package/templates/bun-spa/src/index.css +69 -0
- package/templates/bun-spa/src/index.html +14 -0
- package/templates/bun-spa/src/worker.ts +51 -0
- package/templates/bun-spa/tsconfig.json +24 -0
- package/templates/hono/alchemy.run.ts +0 -2
- package/templates/hono/src/index.ts +13 -13
- package/templates/nextjs/alchemy.run.ts +1 -3
- package/templates/nextjs/eslint.config.mjs +1 -1
- package/templates/nextjs/next-env.d.ts +1 -1
- package/templates/nextjs/next.config.ts +1 -1
- package/templates/nextjs/open-next.config.ts +1 -1
- package/templates/nextjs/src/app/api/hello/route.ts +2 -2
- package/templates/nextjs/src/app/layout.tsx +1 -1
- package/templates/nextjs/src/app/page.tsx +14 -15
- package/templates/nextjs/types/env.d.ts +4 -4
- package/templates/nuxt/alchemy.run.ts +0 -2
- package/templates/nuxt/server/middleware/auth.ts +1 -1
- package/templates/nuxt/server/middleware/hello.ts +2 -2
- package/templates/react-router/alchemy.run.ts +0 -2
- package/templates/react-router/app/entry.server.tsx +2 -2
- package/templates/react-router/package.json +1 -1
- package/templates/react-router/vite.config.ts +1 -1
- package/templates/react-router/workers/app.ts +2 -2
- package/templates/rwsdk/alchemy.run.ts +6 -4
- package/templates/rwsdk/package.json +1 -1
- package/templates/sveltekit/alchemy.run.ts +0 -2
- package/templates/sveltekit/package.json +1 -1
- package/templates/sveltekit/src/app.d.ts +7 -7
- package/templates/sveltekit/svelte.config.js +4 -4
- package/templates/sveltekit/vite.config.ts +3 -3
- package/templates/tanstack-start/alchemy.run.ts +0 -2
- package/templates/tanstack-start/package.json +1 -1
- package/templates/tanstack-start/src/components/Header.tsx +2 -2
- package/templates/tanstack-start/src/router.tsx +4 -4
- package/templates/tanstack-start/src/routes/__root.tsx +10 -10
- package/templates/tanstack-start/src/routes/api.demo-names.ts +6 -6
- package/templates/tanstack-start/src/routes/demo.start.api-request.tsx +11 -11
- package/templates/tanstack-start/src/routes/demo.start.server-funcs.tsx +30 -30
- package/templates/tanstack-start/src/routes/index.tsx +5 -5
- package/templates/tanstack-start/vite.config.ts +9 -9
- package/templates/typescript/alchemy.run.ts +0 -2
- package/templates/typescript/src/worker.ts +5 -1
- package/templates/vite/alchemy.run.ts +0 -2
- package/templates/vite/eslint.config.js +12 -12
- package/templates/vite/package.json +1 -1
- package/templates/vite/src/App.tsx +7 -7
- package/templates/vite/src/main.tsx +6 -6
- package/templates/vite/src/worker.ts +11 -12
- package/templates/vite/vite.config.ts +2 -2
- package/workers/tunnel-proxy.js +1 -1
- package/lib/cloudflare/miniflare/symlink-miniflare-state.d.ts +0 -2
- package/lib/cloudflare/miniflare/symlink-miniflare-state.d.ts.map +0 -1
- package/lib/cloudflare/miniflare/symlink-miniflare-state.js +0 -18
- package/lib/cloudflare/miniflare/symlink-miniflare-state.js.map +0 -1
- package/src/cloudflare/miniflare/symlink-miniflare-state.ts +0 -18
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { Hono } from
|
|
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(
|
|
6
|
-
return c.text(
|
|
7
|
-
})
|
|
5
|
+
app.get("/", (c) => {
|
|
6
|
+
return c.text("Hello Hono!");
|
|
7
|
+
});
|
|
8
8
|
|
|
9
|
-
app.get(
|
|
10
|
-
const key =
|
|
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;
|
|
@@ -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
|
+
}
|
|
@@ -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>
|
|
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
|
-
|
|
7
|
+
type CloudflareEnv = typeof website.Env;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
declare module "cloudflare:workers" {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
namespace Cloudflare {
|
|
12
|
+
export interface Env extends CloudflareEnv {}
|
|
13
|
+
}
|
|
14
14
|
}
|
|
@@ -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
|
|
|
@@ -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 {
|
|
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
|
-
|
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
2
|
-
import alchemy from
|
|
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
|
|
2
|
-
import { defineConfig } from
|
|
1
|
+
import { sveltekit } from "@sveltejs/kit/vite";
|
|
2
|
+
import { defineConfig } from "vite";
|
|
3
3
|
|
|
4
4
|
export default defineConfig({
|
|
5
|
-
|
|
5
|
+
plugins: [sveltekit()],
|
|
6
6
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createRouter } from
|
|
1
|
+
import { createRouter } from "@tanstack/react-router";
|
|
2
2
|
|
|
3
3
|
// Import the generated route tree
|
|
4
|
-
import { routeTree } from
|
|
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
|
|
1
|
+
import { HeadContent, Scripts, createRootRoute } from "@tanstack/react-router";
|
|
2
2
|
|
|
3
|
-
import Header from
|
|
3
|
+
import Header from "../components/Header";
|
|
4
4
|
|
|
5
|
-
import appCss from
|
|
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:
|
|
11
|
+
charSet: "utf-8",
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
name:
|
|
15
|
-
content:
|
|
14
|
+
name: "viewport",
|
|
15
|
+
content: "width=device-width, initial-scale=1",
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
title:
|
|
18
|
+
title: "TanStack Start Starter",
|
|
19
19
|
},
|
|
20
20
|
],
|
|
21
21
|
links: [
|
|
22
22
|
{
|
|
23
|
-
rel:
|
|
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
|
|
1
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
2
2
|
|
|
3
|
-
export const Route = createFileRoute(
|
|
3
|
+
export const Route = createFileRoute("/api/demo-names")({
|
|
4
4
|
server: {
|
|
5
5
|
handlers: {
|
|
6
6
|
GET: () => {
|
|
7
|
-
return new Response(JSON.stringify([
|
|
7
|
+
return new Response(JSON.stringify(["Alice", "Bob", "Charlie"]), {
|
|
8
8
|
headers: {
|
|
9
|
-
|
|
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
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
2
|
|
|
3
|
-
import { createFileRoute } from
|
|
3
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
4
4
|
|
|
5
5
|
function getNames() {
|
|
6
|
-
return fetch(
|
|
6
|
+
return fetch("/api/demo-names").then((res) => res.json());
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export const Route = createFileRoute(
|
|
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:
|
|
24
|
+
backgroundColor: "#000",
|
|
25
25
|
backgroundImage:
|
|
26
|
-
|
|
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
|
|
2
|
-
import { useCallback, useState } from
|
|
3
|
-
import { createFileRoute, useRouter } from
|
|
4
|
-
import { createServerFn } from
|
|
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 =
|
|
6
|
+
const filePath = "todos.json";
|
|
7
7
|
|
|
8
8
|
async function readTodos() {
|
|
9
9
|
return JSON.parse(
|
|
10
|
-
await fs.promises.readFile(filePath,
|
|
10
|
+
await fs.promises.readFile(filePath, "utf-8").catch(() =>
|
|
11
11
|
JSON.stringify(
|
|
12
12
|
[
|
|
13
|
-
{ id: 1, name:
|
|
14
|
-
{ id: 2, name:
|
|
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:
|
|
25
|
-
}).handler(async () => await readTodos())
|
|
24
|
+
method: "GET",
|
|
25
|
+
}).handler(async () => await readTodos());
|
|
26
26
|
|
|
27
|
-
const addTodo = createServerFn({ method:
|
|
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(
|
|
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
|
-
|
|
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 ===
|
|
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
|
|
2
|
-
import logo from
|
|
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
|
}
|