@tanstack/create 0.49.2 → 0.59.4
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/CHANGELOG.md +603 -0
- package/dist/add-ons.js +42 -2
- package/dist/add-to-app.js +36 -7
- package/dist/custom-add-ons/add-on.js +2 -26
- package/dist/custom-add-ons/starter.js +1 -2
- package/dist/file-helpers.js +11 -10
- package/dist/frameworks/react/add-ons/ai/assets/src/data/demo-guitars.ts +93 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/hooks/demo-useAudioRecorder.ts +85 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/hooks/demo-useTTS.ts +78 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +22 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +40 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +99 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.image.ts +72 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.structured.ts +136 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.transcription.ts +89 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.tts.ts +81 -0
- package/dist/frameworks/react/add-ons/ai/info.json +1 -1
- package/dist/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/dist/frameworks/react/add-ons/better-auth/assets/src/lib/auth-client.ts +3 -0
- package/dist/frameworks/react/add-ons/better-auth/assets/src/lib/auth.ts +9 -0
- package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +11 -0
- package/dist/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/dist/frameworks/react/add-ons/clerk/info.json +0 -1
- package/dist/frameworks/react/add-ons/convex/assets/convex/schema.ts +14 -0
- package/dist/frameworks/react/add-ons/convex/assets/convex/todos.ts +43 -0
- package/dist/frameworks/react/add-ons/db/assets/src/db-collections/index.ts +20 -0
- package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +62 -0
- package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat-api.ts +83 -0
- package/dist/frameworks/react/add-ons/db/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/form/assets/src/hooks/demo.form-context.ts +4 -0
- package/dist/frameworks/react/add-ons/form/assets/src/hooks/demo.form.ts +22 -0
- package/dist/frameworks/react/add-ons/mcp/assets/src/mcp-todos.ts +51 -0
- package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +37 -0
- package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +53 -0
- package/dist/frameworks/react/add-ons/mcp/assets/src/utils/mcp-handler.ts +61 -0
- package/dist/frameworks/react/add-ons/mcp/info.json +1 -2
- package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +10 -0
- package/dist/frameworks/react/add-ons/neon/assets/src/db.ts +13 -0
- package/dist/frameworks/react/add-ons/neon/info.json +1 -2
- package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +29 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/router/index.ts +6 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/router/todos.ts +20 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/schema.ts +6 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/polyfill.ts +21 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +77 -0
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +29 -0
- package/dist/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/sentry/info.json +1 -2
- package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +6 -0
- package/dist/frameworks/react/add-ons/store/assets/src/lib/demo-store.ts +13 -0
- package/dist/frameworks/react/add-ons/storybook/assets/_dot_storybook/main.ts +17 -0
- package/dist/frameworks/react/add-ons/storybook/assets/_dot_storybook/preview.ts +15 -0
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/button.stories.ts +67 -0
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/index.ts +14 -0
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/input.stories.ts +43 -0
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/radio-group.stories.ts +53 -0
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/slider.stories.ts +55 -0
- package/dist/frameworks/react/add-ons/strapi/assets/src/lib/strapiClient.ts +7 -0
- package/dist/frameworks/react/add-ons/t3env/assets/src/env.ts +39 -0
- package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/init.ts +9 -0
- package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +4 -0
- package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/router.ts +27 -0
- package/dist/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/table/assets/src/data/demo-table-data.ts +50 -0
- package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/dist/frameworks/react/add-ons/workos/info.json +0 -1
- package/dist/frameworks/react/examples/events/assets/content-collections.ts +56 -0
- package/dist/frameworks/react/examples/events/assets/src/lib/conference-ai-hook.ts +26 -0
- package/dist/frameworks/react/examples/events/assets/src/lib/conference-tools.ts +210 -0
- package/dist/frameworks/react/examples/events/assets/src/lib/utils.ts +6 -0
- package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +121 -0
- package/dist/frameworks/react/examples/resume/assets/content-collections.ts +36 -0
- package/dist/frameworks/react/examples/resume/assets/src/lib/resume-ai-hook.ts +21 -0
- package/dist/frameworks/react/examples/resume/assets/src/lib/resume-tools.ts +165 -0
- package/dist/frameworks/react/examples/resume/assets/src/lib/utils.ts +6 -0
- package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +110 -0
- package/dist/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/react/hosts/netlify/info.json +0 -1
- package/dist/frameworks/react/hosts/nitro/info.json +0 -1
- package/dist/frameworks/react/hosts/railway/info.json +0 -1
- package/dist/frameworks/react/index.js +1 -6
- package/dist/frameworks/react/project/base/README.md.ejs +86 -436
- package/dist/frameworks/react/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/react/project/base/package.json +8 -5
- package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/dist/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/dist/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/dist/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/dist/frameworks/react/project/packages.json +2 -2
- package/dist/frameworks/solid/add-ons/better-auth/assets/src/lib/auth-client.ts +3 -0
- package/dist/frameworks/solid/add-ons/better-auth/assets/src/lib/auth.ts +9 -0
- package/dist/frameworks/solid/add-ons/better-auth/assets/src/routes/api/auth/$.ts +11 -0
- package/dist/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/dist/frameworks/solid/add-ons/convex/assets/convex/schema.ts +14 -0
- package/dist/frameworks/solid/add-ons/convex/assets/convex/todos.ts +43 -0
- package/dist/frameworks/solid/add-ons/solid-ui/assets/src/lib/utils.ts +6 -0
- package/dist/frameworks/solid/add-ons/store/assets/src/lib/demo-store.ts +13 -0
- package/dist/frameworks/solid/add-ons/strapi/assets/src/lib/strapiClient.ts +7 -0
- package/dist/frameworks/solid/add-ons/t3env/assets/src/env.ts +39 -0
- package/dist/frameworks/solid/examples/tanchat/assets/ai-streaming-server/src/index.ts +102 -0
- package/dist/frameworks/solid/examples/tanchat/assets/src/lib/demo-store.ts +13 -0
- package/dist/frameworks/solid/examples/tanchat/assets/src/store/demo.hooks.ts +17 -0
- package/dist/frameworks/solid/examples/tanchat/assets/src/store/demo.store.ts +133 -0
- package/dist/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/solid/hosts/netlify/info.json +0 -1
- package/dist/frameworks/solid/hosts/nitro/info.json +0 -1
- package/dist/frameworks/solid/hosts/railway/info.json +0 -1
- package/dist/frameworks/solid/index.js +1 -6
- package/dist/frameworks/solid/project/base/README.md.ejs +43 -117
- package/dist/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/solid/project/base/package.json +8 -3
- package/dist/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/dist/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/dist/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/dist/frameworks/solid/project/packages.json +2 -2
- package/dist/frameworks.js +0 -1
- package/dist/package-json.js +6 -10
- package/dist/template-file.js +21 -7
- package/dist/types/custom-add-ons/add-on.d.ts +1 -1
- package/dist/types/file-helpers.d.ts +0 -1
- package/dist/types/types.d.ts +12 -12
- package/dist/types.js +1 -2
- package/package.json +2 -2
- package/src/add-ons.ts +54 -2
- package/src/add-to-app.ts +42 -7
- package/src/custom-add-ons/add-on.ts +2 -33
- package/src/custom-add-ons/starter.ts +1 -2
- package/src/file-helpers.ts +11 -10
- package/src/frameworks/react/add-ons/ai/info.json +1 -1
- package/src/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/src/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/src/frameworks/react/add-ons/clerk/info.json +0 -1
- package/src/frameworks/react/add-ons/db/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/mcp/info.json +1 -2
- package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
- package/src/frameworks/react/add-ons/neon/info.json +1 -2
- package/src/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/sentry/info.json +1 -2
- package/src/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/src/frameworks/react/add-ons/workos/info.json +0 -1
- package/src/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/react/hosts/netlify/info.json +0 -1
- package/src/frameworks/react/hosts/nitro/info.json +0 -1
- package/src/frameworks/react/hosts/railway/info.json +0 -1
- package/src/frameworks/react/index.ts +1 -6
- package/src/frameworks/react/project/base/README.md.ejs +86 -436
- package/src/frameworks/react/project/base/_dot_gitignore +4 -0
- package/src/frameworks/react/project/base/package.json +8 -5
- package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/src/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/src/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/src/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/src/frameworks/react/project/packages.json +2 -2
- package/src/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/src/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/solid/hosts/netlify/info.json +0 -1
- package/src/frameworks/solid/hosts/nitro/info.json +0 -1
- package/src/frameworks/solid/hosts/railway/info.json +0 -1
- package/src/frameworks/solid/index.ts +1 -6
- package/src/frameworks/solid/project/base/README.md.ejs +43 -117
- package/src/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/src/frameworks/solid/project/base/package.json +8 -3
- package/src/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/src/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/src/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/src/frameworks/solid/project/packages.json +2 -2
- package/src/frameworks.ts +0 -1
- package/src/package-json.ts +6 -10
- package/src/template-file.ts +27 -8
- package/src/types.ts +1 -2
- package/tests/add-to-app.test.ts +37 -0
- package/tests/copy-assets.test.ts +53 -0
- package/tests/file-helper.test.ts +23 -2
- package/tests/package-json.test.ts +32 -0
- package/tests/template-file.test.ts +28 -0
- package/dist/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/dist/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/dist/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/dist/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/dist/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/dist/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/dist/frameworks/react/add-ons/start/info.json +0 -61
- package/dist/frameworks/react/add-ons/start/package.json +0 -12
- package/dist/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/react/project/base/index.html.ejs +0 -20
- package/dist/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/dist/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/dist/frameworks/react/project/base/src/logo.svg +0 -12
- package/dist/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/dist/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/dist/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/dist/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/dist/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/dist/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/dist/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/dist/frameworks/solid/add-ons/start/info.json +0 -18
- package/dist/frameworks/solid/add-ons/start/package.json +0 -15
- package/dist/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/solid/project/base/index.html.ejs +0 -20
- package/dist/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/dist/frameworks/solid/project/base/src/logo.svg +0 -120
- package/dist/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
- package/src/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/src/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/src/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/src/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
- package/src/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/src/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/src/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/src/frameworks/react/add-ons/start/info.json +0 -61
- package/src/frameworks/react/add-ons/start/package.json +0 -12
- package/src/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/react/project/base/index.html.ejs +0 -20
- package/src/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/src/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/src/frameworks/react/project/base/src/logo.svg +0 -12
- package/src/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/src/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/src/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/src/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/src/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/src/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/src/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/src/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/src/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/src/frameworks/solid/add-ons/start/info.json +0 -18
- package/src/frameworks/solid/add-ons/start/package.json +0 -15
- package/src/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/solid/project/base/index.html.ejs +0 -20
- package/src/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/src/frameworks/solid/project/base/src/logo.svg +0 -120
- package/src/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
<% if (addOns.length === 0 && integrations.length === 0 && routes.length === 0) { ignoreFile() } %>import { Link } from '@tanstack/react-router'
|
|
2
2
|
<% for(const integration of integrations.filter(i => i.type === 'header-user')) { %>
|
|
3
3
|
import <%= integration.jsName %> from "<%= relativePath(integration.path) %>";
|
|
4
|
-
<% } %><%
|
|
5
|
-
import './Header.css'<% } %><% if (tailwind) {
|
|
4
|
+
<% } %><%
|
|
6
5
|
const icons = new Set([
|
|
7
6
|
"Menu",
|
|
8
7
|
"X",
|
|
@@ -26,10 +25,9 @@ import { useState } from 'react';
|
|
|
26
25
|
import {
|
|
27
26
|
<%= Array.from(icons).sort().join(", ") %>
|
|
28
27
|
} from "lucide-react";
|
|
29
|
-
<% } %>
|
|
30
28
|
|
|
31
29
|
export default function Header() {
|
|
32
|
-
<%
|
|
30
|
+
<%
|
|
33
31
|
const menusWithChildren = addOns.filter(a => a.routes?.some(r => r.children));
|
|
34
32
|
const userHeaders = integrations.filter(i => i.type === 'header-user');
|
|
35
33
|
%>
|
|
@@ -155,32 +153,4 @@ const userHeaders = integrations.filter(i => i.type === 'header-user');
|
|
|
155
153
|
</aside>
|
|
156
154
|
</>
|
|
157
155
|
);
|
|
158
|
-
<% } else { %>
|
|
159
|
-
return (
|
|
160
|
-
<% if (tailwind) { %>
|
|
161
|
-
<header className="p-2 flex gap-2 bg-white text-black justify-between">
|
|
162
|
-
<nav className="flex flex-row">
|
|
163
|
-
<div className="px-2 font-bold">
|
|
164
|
-
<% } else { %>
|
|
165
|
-
<header className="header">
|
|
166
|
-
<nav className="nav">
|
|
167
|
-
<div className="nav-item">
|
|
168
|
-
<% } %>
|
|
169
|
-
<Link to="/">Home</Link>
|
|
170
|
-
</div>
|
|
171
|
-
<% for(const addOn of addOns) {
|
|
172
|
-
for(const route of (addOn?.routes||[])?.filter(r => r.url && r.name)) { %>
|
|
173
|
-
<div className="px-2 font-bold"><Link to="<%= route.url %>"><%= route.name %></Link></div>
|
|
174
|
-
<% } } %>
|
|
175
|
-
</nav>
|
|
176
|
-
<% if (integrations.filter(i => i.type === 'header-user').length > 0) { %>
|
|
177
|
-
<div>
|
|
178
|
-
<% for(const integration of integrations.filter(i => i.type === 'header-user')) { %>
|
|
179
|
-
<<%= integration.jsName %> />
|
|
180
|
-
<% } %>
|
|
181
|
-
</div>
|
|
182
|
-
<% } %>
|
|
183
|
-
</header>
|
|
184
|
-
)
|
|
185
|
-
<% } %>
|
|
186
156
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% let hasContext = addOnEnabled["apollo-client"] || addOnEnabled["tanstack-query"]; %>
|
|
2
|
-
|
|
3
|
-
HeadContent
|
|
2
|
+
import {
|
|
3
|
+
HeadContent, Scripts, <% if (hasContext) { %>createRootRouteWithContext<% } else { %>createRootRoute<% } %> } from '@tanstack/react-router'
|
|
4
4
|
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools';
|
|
5
5
|
import { TanStackDevtools } from '@tanstack/react-devtools'
|
|
6
6
|
<% if (addOns.length) { %>
|
|
@@ -8,11 +8,9 @@ import Header from '../components/Header'
|
|
|
8
8
|
<% } %><% for(const integration of integrations.filter(i => i.type === 'layout' || i.type === 'provider' || i.type === 'devtools')) { %>
|
|
9
9
|
import <%= integration.jsName %> from '<%= relativePath(integration.path, true) %>'
|
|
10
10
|
<% } %><% if (addOnEnabled.paraglide) { %>
|
|
11
|
-
import { getLocale
|
|
11
|
+
import { getLocale } from '@/paraglide/runtime'
|
|
12
12
|
<% } %>
|
|
13
|
-
<% if (addOnEnabled.start) { %>
|
|
14
13
|
import appCss from '../styles.css?url'
|
|
15
|
-
<% } %>
|
|
16
14
|
<% if (addOnEnabled["apollo-client"]) { %>
|
|
17
15
|
import type { ApolloClientIntegration } from "@apollo/client-integration-tanstack-start";
|
|
18
16
|
<% } %>
|
|
@@ -41,20 +39,9 @@ export const Route = <% if (hasContext) { %>createRootRouteWithContext<MyRouterC
|
|
|
41
39
|
if (typeof document !== 'undefined') {
|
|
42
40
|
document.documentElement.setAttribute('lang', getLocale())
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
<% if (!addOnEnabled.start) { %>// Client-side fallback redirect for SPA/file-router builds. Start apps should
|
|
46
|
-
// prefer server-side paraglideMiddleware (see start template server.ts).
|
|
47
|
-
if (typeof window !== 'undefined') {
|
|
48
|
-
const decision = await shouldRedirect({ url: window.location.href })
|
|
49
|
-
|
|
50
|
-
if (decision.redirectUrl) {
|
|
51
|
-
throw redirect({ href: decision.redirectUrl.href })
|
|
52
|
-
}
|
|
53
|
-
}<% } %>
|
|
54
42
|
},
|
|
55
43
|
<% } %>
|
|
56
|
-
|
|
57
|
-
head: () => ({
|
|
44
|
+
head: () => ({
|
|
58
45
|
meta: [
|
|
59
46
|
{
|
|
60
47
|
charSet: 'utf-8',
|
|
@@ -74,35 +61,9 @@ export const Route = <% if (hasContext) { %>createRootRouteWithContext<MyRouterC
|
|
|
74
61
|
},
|
|
75
62
|
],
|
|
76
63
|
}),
|
|
77
|
-
<% } %>
|
|
78
|
-
<% if (addOnEnabled.start) { %>
|
|
79
64
|
shellComponent: RootDocument
|
|
80
|
-
<% } else { %>
|
|
81
|
-
component: () => (
|
|
82
|
-
<>
|
|
83
|
-
<% for(const integration of integrations.filter(i => i.type === 'provider')) { %><<%= integration.jsName %>>
|
|
84
|
-
<% } %><% if (addOns.length) { %><Header />
|
|
85
|
-
<% } %><Outlet />
|
|
86
|
-
<TanStackDevtools
|
|
87
|
-
config={{
|
|
88
|
-
position: 'bottom-right',
|
|
89
|
-
}}
|
|
90
|
-
plugins={[
|
|
91
|
-
{
|
|
92
|
-
name: 'Tanstack Router',
|
|
93
|
-
render: <TanStackRouterDevtoolsPanel />,
|
|
94
|
-
},
|
|
95
|
-
<% for(const integration of integrations.filter(i => i.type === 'devtools')) { %><%= integration.jsName %>,<% } %>
|
|
96
|
-
]}
|
|
97
|
-
/>
|
|
98
|
-
<% for(const integration of integrations.filter(i => i.type === 'layout')) { %><<%= integration.jsName %> />
|
|
99
|
-
<% } %><% for(const integration of integrations.filter(i => i.type === 'provider').reverse()) { %></<%= integration.jsName %>>
|
|
100
|
-
<% } %>
|
|
101
|
-
</>)
|
|
102
|
-
<% } %>
|
|
103
65
|
})
|
|
104
66
|
|
|
105
|
-
<% if (addOnEnabled.start) { %>
|
|
106
67
|
function RootDocument({ children }: { children: React.ReactNode }) {
|
|
107
68
|
return (
|
|
108
69
|
<% if (addOnEnabled.paraglide) { %><html lang={getLocale()}><% } else { %><html lang="en"><% } %>
|
|
@@ -132,4 +93,3 @@ function RootDocument({ children }: { children: React.ReactNode }) {
|
|
|
132
93
|
</html>
|
|
133
94
|
)
|
|
134
95
|
}
|
|
135
|
-
<% } %>
|
|
@@ -1,67 +1,105 @@
|
|
|
1
|
-
<% if (codeRouter || addOnEnabled.start) { ignoreFile() } %>
|
|
2
1
|
import { createFileRoute } from "@tanstack/react-router";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import {
|
|
3
|
+
Zap, Server, Route as RouteIcon, Shield, Waves, Sparkles,
|
|
4
|
+
} from "lucide-react";
|
|
6
5
|
|
|
7
|
-
export const Route = createFileRoute("/")({
|
|
8
|
-
component: App,
|
|
9
|
-
});
|
|
6
|
+
export const Route = createFileRoute("/")({ component: App });
|
|
10
7
|
|
|
11
8
|
function App() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
9
|
+
const features = [
|
|
10
|
+
{
|
|
11
|
+
icon: <Zap className="w-12 h-12 text-cyan-400" />,
|
|
12
|
+
title: "Powerful Server Functions",
|
|
13
|
+
description: "Write server-side code that seamlessly integrates with your client components. Type-safe, secure, and simple.",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
icon: <Server className="w-12 h-12 text-cyan-400" />,
|
|
17
|
+
title: "Flexible Server Side Rendering",
|
|
18
|
+
description: "Full-document SSR, streaming, and progressive enhancement out of the box. Control exactly what renders where.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
icon: <RouteIcon className="w-12 h-12 text-cyan-400" />,
|
|
22
|
+
title: "API Routes",
|
|
23
|
+
description: "Build type-safe API endpoints alongside your application. No separate backend needed.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
icon: <Shield className="w-12 h-12 text-cyan-400" />,
|
|
27
|
+
title: "Strongly Typed Everything",
|
|
28
|
+
description: "End-to-end type safety from server to client. Catch errors before they reach production.",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
icon: <Waves className="w-12 h-12 text-cyan-400" />,
|
|
32
|
+
title: "Full Streaming Support",
|
|
33
|
+
description: "Stream data from server to client progressively. Perfect for AI applications and real-time updates.",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
icon: <Sparkles className="w-12 h-12 text-cyan-400" />,
|
|
37
|
+
title: "Next Generation Ready",
|
|
38
|
+
description: "Built from the ground up for modern web applications. Deploy anywhere JavaScript runs.",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className="min-h-screen bg-gradient-to-b from-slate-900 via-slate-800 to-slate-900">
|
|
44
|
+
<section className="relative py-20 px-6 text-center overflow-hidden">
|
|
45
|
+
<div className="absolute inset-0 bg-gradient-to-r from-cyan-500/10 via-blue-500/10 to-purple-500/10"></div>
|
|
46
|
+
<div className="relative max-w-5xl mx-auto">
|
|
47
|
+
<div className="flex items-center justify-center gap-6 mb-6">
|
|
48
|
+
<img
|
|
49
|
+
src="/tanstack-circle-logo.png"
|
|
50
|
+
alt="TanStack Logo"
|
|
51
|
+
className="w-24 h-24 md:w-32 md:h-32"
|
|
52
|
+
/>
|
|
53
|
+
<h1 className="text-6xl md:text-7xl font-black text-white [letter-spacing:-0.08em]">
|
|
54
|
+
<span className="text-gray-300">TANSTACK</span>{" "}
|
|
55
|
+
<span className="bg-gradient-to-r from-cyan-400 to-blue-400 bg-clip-text text-transparent">
|
|
56
|
+
START
|
|
57
|
+
</span>
|
|
58
|
+
</h1>
|
|
59
|
+
</div>
|
|
60
|
+
<p className="text-2xl md:text-3xl text-gray-300 mb-4 font-light">
|
|
61
|
+
The framework for next generation AI applications
|
|
62
|
+
</p>
|
|
63
|
+
<p className="text-lg text-gray-400 max-w-3xl mx-auto mb-8">
|
|
64
|
+
Full-stack framework powered by TanStack Router for React and Solid.
|
|
65
|
+
Build modern applications with server functions, streaming, and type
|
|
66
|
+
safety.
|
|
67
|
+
</p>
|
|
68
|
+
<div className="flex flex-col items-center gap-4">
|
|
69
|
+
<a
|
|
70
|
+
href="https://tanstack.com/start"
|
|
71
|
+
target="_blank"
|
|
72
|
+
rel="noopener noreferrer"
|
|
73
|
+
className="px-8 py-3 bg-cyan-500 hover:bg-cyan-600 text-white font-semibold rounded-lg transition-colors shadow-lg shadow-cyan-500/50"
|
|
74
|
+
>
|
|
75
|
+
Documentation
|
|
76
|
+
</a>
|
|
77
|
+
<p className="text-gray-400 text-sm mt-2">
|
|
78
|
+
Begin your TanStack Start journey by editing{" "}
|
|
79
|
+
<code className="px-2 py-1 bg-slate-700 rounded text-cyan-400">
|
|
80
|
+
/src/routes/index.tsx
|
|
81
|
+
</code>
|
|
82
|
+
</p>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</section>
|
|
86
|
+
|
|
87
|
+
<section className="py-16 px-6 max-w-7xl mx-auto">
|
|
88
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
89
|
+
{features.map((feature, index) => (
|
|
90
|
+
<div
|
|
91
|
+
key={index}
|
|
92
|
+
className="bg-slate-800/50 backdrop-blur-sm border border-slate-700 rounded-xl p-6 hover:border-cyan-500/50 transition-all duration-300 hover:shadow-lg hover:shadow-cyan-500/10"
|
|
93
|
+
>
|
|
94
|
+
<div className="mb-4">{feature.icon}</div>
|
|
95
|
+
<h3 className="text-xl font-semibold text-white mb-3">
|
|
96
|
+
{feature.title}
|
|
97
|
+
</h3>
|
|
98
|
+
<p className="text-gray-400 leading-relaxed">{feature.description}</p>
|
|
99
|
+
</div>
|
|
100
|
+
))}
|
|
101
|
+
</div>
|
|
102
|
+
</section>
|
|
65
103
|
</div>
|
|
66
|
-
|
|
104
|
+
);
|
|
67
105
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
3
|
body {
|
|
4
|
-
|
|
4
|
+
@apply m-0;
|
|
5
5
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
|
|
6
6
|
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
|
7
7
|
sans-serif;
|
|
@@ -1,33 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
import { devtools } from '@tanstack/devtools-vite'
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
<%
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
|
|
1
|
+
import { defineConfig } from 'vite'
|
|
2
|
+
import { devtools } from '@tanstack/devtools-vite'
|
|
3
|
+
<% if (addOnEnabled.paraglide) { -%>
|
|
4
|
+
import { paraglideVitePlugin } from "@inlang/paraglide-js"
|
|
5
|
+
<% } -%>
|
|
6
|
+
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
|
|
7
|
+
import viteReact from '@vitejs/plugin-react'
|
|
8
|
+
import viteTsConfigPaths from 'vite-tsconfig-paths'
|
|
9
|
+
import { fileURLToPath, URL } from 'url'
|
|
10
|
+
import tailwindcss from "@tailwindcss/vite"
|
|
11
|
+
<% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
|
|
12
12
|
<% } %>
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
export default defineConfig({
|
|
16
|
-
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
17
|
-
project: './project.inlang',
|
|
18
|
-
outdir: './src/paraglide',
|
|
19
|
-
strategy: ['url'],
|
|
20
|
-
}), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %> <% if(fileRouter) { %>tanstackRouter({
|
|
21
|
-
target: "react",
|
|
22
|
-
autoCodeSplitting: true,
|
|
23
|
-
}), <% } %>viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
24
|
-
babel: {
|
|
25
|
-
plugins: ["babel-plugin-react-compiler"],
|
|
26
|
-
},
|
|
27
|
-
}<% } %>)<% if (tailwind) { %>, tailwindcss()<% } %><% if (addOnEnabled['module-federation']) { %>, federation(federationConfig)<% } %>],
|
|
14
|
+
const config = defineConfig({
|
|
28
15
|
resolve: {
|
|
29
16
|
alias: {
|
|
30
17
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
31
18
|
},
|
|
32
|
-
}
|
|
33
|
-
|
|
19
|
+
},
|
|
20
|
+
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
21
|
+
project: './project.inlang',
|
|
22
|
+
outdir: './src/paraglide',
|
|
23
|
+
strategy: ['url'],
|
|
24
|
+
}), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %>
|
|
25
|
+
// this is the plugin that enables path aliases
|
|
26
|
+
viteTsConfigPaths({
|
|
27
|
+
projects: ['./tsconfig.json'],
|
|
28
|
+
}),
|
|
29
|
+
tailwindcss(),
|
|
30
|
+
tanstackStart(),
|
|
31
|
+
viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
32
|
+
babel: {
|
|
33
|
+
plugins: ["babel-plugin-react-compiler"],
|
|
34
|
+
},
|
|
35
|
+
}<% } %>),
|
|
36
|
+
],
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
export default config
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFileRoute } from '@tanstack/solid-router'
|
|
2
|
+
import { auth } from '../../../lib/auth'
|
|
3
|
+
|
|
4
|
+
export const Route = createFileRoute('/api/auth/$')({
|
|
5
|
+
server: {
|
|
6
|
+
handlers: {
|
|
7
|
+
GET: ({ request }) => auth.handler(request),
|
|
8
|
+
POST: ({ request }) => auth.handler(request),
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
})
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { defineSchema, defineTable } from 'convex/server'
|
|
2
|
+
import { v } from 'convex/values'
|
|
3
|
+
|
|
4
|
+
export default defineSchema({
|
|
5
|
+
products: defineTable({
|
|
6
|
+
title: v.string(),
|
|
7
|
+
imageId: v.string(),
|
|
8
|
+
price: v.number(),
|
|
9
|
+
}),
|
|
10
|
+
todos: defineTable({
|
|
11
|
+
text: v.string(),
|
|
12
|
+
completed: v.boolean(),
|
|
13
|
+
}),
|
|
14
|
+
})
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { mutation, query } from './_generated/server'
|
|
2
|
+
import { v } from 'convex/values'
|
|
3
|
+
|
|
4
|
+
export const list = query({
|
|
5
|
+
args: {},
|
|
6
|
+
handler: async (ctx) => {
|
|
7
|
+
return await ctx.db
|
|
8
|
+
.query('todos')
|
|
9
|
+
.withIndex('by_creation_time')
|
|
10
|
+
.order('desc')
|
|
11
|
+
.collect()
|
|
12
|
+
},
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
export const add = mutation({
|
|
16
|
+
args: { text: v.string() },
|
|
17
|
+
handler: async (ctx, args) => {
|
|
18
|
+
return await ctx.db.insert('todos', {
|
|
19
|
+
text: args.text,
|
|
20
|
+
completed: false,
|
|
21
|
+
})
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
export const toggle = mutation({
|
|
26
|
+
args: { id: v.id('todos') },
|
|
27
|
+
handler: async (ctx, args) => {
|
|
28
|
+
const todo = await ctx.db.get(args.id)
|
|
29
|
+
if (!todo) {
|
|
30
|
+
throw new Error('Todo not found')
|
|
31
|
+
}
|
|
32
|
+
return await ctx.db.patch(args.id, {
|
|
33
|
+
completed: !todo.completed,
|
|
34
|
+
})
|
|
35
|
+
},
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
export const remove = mutation({
|
|
39
|
+
args: { id: v.id('todos') },
|
|
40
|
+
handler: async (ctx, args) => {
|
|
41
|
+
return await ctx.db.delete(args.id)
|
|
42
|
+
},
|
|
43
|
+
})
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Derived, Store } from '@tanstack/store'
|
|
2
|
+
|
|
3
|
+
export const store = new Store({
|
|
4
|
+
firstName: 'Jane',
|
|
5
|
+
lastName: 'Smith',
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
export const fullName = new Derived({
|
|
9
|
+
fn: () => `${store.state.firstName} ${store.state.lastName}`,
|
|
10
|
+
deps: [store],
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
fullName.mount()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createEnv } from "@t3-oss/env-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
export const env = createEnv({
|
|
5
|
+
server: {
|
|
6
|
+
SERVER_URL: z.url().optional(),
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The prefix that client-side variables must have. This is enforced both at
|
|
11
|
+
* a type-level and at runtime.
|
|
12
|
+
*/
|
|
13
|
+
clientPrefix: "VITE_",
|
|
14
|
+
|
|
15
|
+
client: {
|
|
16
|
+
VITE_APP_TITLE: z.string().min(1).optional(),
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* What object holds the environment variables at runtime. This is usually
|
|
21
|
+
* `process.env` or `import.meta.env`.
|
|
22
|
+
*/
|
|
23
|
+
runtimeEnv: import.meta.env,
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* By default, this library will feed the environment variables directly to
|
|
27
|
+
* the Zod validator.
|
|
28
|
+
*
|
|
29
|
+
* This means that if you have an empty string for a value that is supposed
|
|
30
|
+
* to be a number (e.g. `PORT=` in a ".env" file), Zod will incorrectly flag
|
|
31
|
+
* it as a type mismatch violation. Additionally, if you have an empty string
|
|
32
|
+
* for a value that is supposed to be a string with a default value (e.g.
|
|
33
|
+
* `DOMAIN=` in an ".env" file), the default value will never be applied.
|
|
34
|
+
*
|
|
35
|
+
* In order to solve these issues, we recommend that all new projects
|
|
36
|
+
* explicitly specify this option as true.
|
|
37
|
+
*/
|
|
38
|
+
emptyStringAsUndefined: true,
|
|
39
|
+
});
|