From 3aec417f6d7adedf6df8182e81a2ba87930d45f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 12 Jul 2024 02:33:49 +0200 Subject: [PATCH] Router setup --- bun.lockb | Bin 265046 -> 273268 bytes packages/webui/package.json | 3 ++ packages/webui/src/App.tsx | 19 ------- packages/webui/src/Index.tsx | 45 ---------------- packages/webui/src/main.tsx | 23 ++++++++- packages/webui/src/routeTree.gen.ts | 62 +++++++++++++++++++++++ packages/webui/src/routes/__root.tsx | 12 +++++ packages/webui/src/routes/index.lazy.tsx | 9 ++++ packages/webui/vite.config.ts | 12 +++-- 9 files changed, 116 insertions(+), 69 deletions(-) delete mode 100644 packages/webui/src/App.tsx delete mode 100644 packages/webui/src/Index.tsx create mode 100644 packages/webui/src/routeTree.gen.ts create mode 100644 packages/webui/src/routes/__root.tsx create mode 100644 packages/webui/src/routes/index.lazy.tsx diff --git a/bun.lockb b/bun.lockb index a6e4ede6fbc1e414ca49fcaed0491018c78c4ea9..f12491a0f7e73583c99b5a9d3be90130700e1466 100755 GIT binary patch delta 33725 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 Ho(=yGF+oj- delta 28921 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 diff --git a/packages/webui/package.json b/packages/webui/package.json index 69a4ce8..1da50bf 100644 --- a/packages/webui/package.json +++ b/packages/webui/package.json @@ -11,6 +11,7 @@ "dependencies": { "@effect/schema": "^0.68.17", "@tanstack/react-query": "4", + "@tanstack/react-router": "^1.44.2", "@thilawyn/thilalib": "^0.1.5", "@todo-tests/common": "workspace:*", "@trpc/client": "^10.45.2", @@ -23,6 +24,8 @@ "react-dom": "^18.3.1" }, "devDependencies": { + "@tanstack/router-devtools": "^1.44.2", + "@tanstack/router-plugin": "^1.44.3", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@typescript-eslint/eslint-plugin": "^7.15.0", diff --git a/packages/webui/src/App.tsx b/packages/webui/src/App.tsx deleted file mode 100644 index 89b745e..0000000 --- a/packages/webui/src/App.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { PrimeReactProvider } from "primereact/api" -import "primereact/resources/themes/lara-light-cyan/theme.css" -import "./index.css" -import { VTodosSubscription } from "./todo/VTodosSubscription" -import { TRPCClientProvider } from "./trpc/TRPCClientProvider" - - -export function App() { - - return ( - - - {/* */} - - - - ) - -} diff --git a/packages/webui/src/Index.tsx b/packages/webui/src/Index.tsx deleted file mode 100644 index 1e33d3b..0000000 --- a/packages/webui/src/Index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Schema as S } from "@effect/schema" -import { JsonifiableTodo } from "@todo-tests/common/data" -import { flow } from "effect" -import { observable } from "mobx" -import { Todo } from "./data" -import { VTodos } from "./todo/VTodos" -import { trpc } from "./trpc/trpc" - - -const decodeTodos = flow( - S.decodeSync( - S.mutable(S.Array( - JsonifiableTodo.pipe(S.compose(Todo)) - )) - ), - - observable.array, -) - - -export function Index() { - - const todosQuery = trpc.todos.all.useQuery(undefined, { select: decodeTodos }) - - - return <> -
-

Todos

- - {function() { - switch (todosQuery.status) { - case "success": - return - - case "error": - return

Failed.

- - case "loading": - return

Loading...

- } - }()} -
- - -} diff --git a/packages/webui/src/main.tsx b/packages/webui/src/main.tsx index d9b858e..5451a81 100644 --- a/packages/webui/src/main.tsx +++ b/packages/webui/src/main.tsx @@ -1,10 +1,29 @@ +import { RouterProvider, createRouter } from "@tanstack/react-router" +import { PrimeReactProvider } from "primereact/api" import React from "react" import ReactDOM from "react-dom/client" -import { App } from "./App" +import { routeTree } from "./routeTree.gen" +import { TRPCClientProvider } from "./trpc/TRPCClientProvider" + +import "primereact/resources/themes/lara-light-cyan/theme.css" +import "./index.css" + + +const router = createRouter({ routeTree }) + +declare module "@tanstack/react-router" { + interface Register { + router: typeof router + } +} ReactDOM.createRoot(document.getElementById("root")!).render( - + + + + + ) diff --git a/packages/webui/src/routeTree.gen.ts b/packages/webui/src/routeTree.gen.ts new file mode 100644 index 0000000..e8428b4 --- /dev/null +++ b/packages/webui/src/routeTree.gen.ts @@ -0,0 +1,62 @@ +/* prettier-ignore-start */ + +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file is auto-generated by TanStack Router + +import { createFileRoute } from '@tanstack/react-router' + +// Import Routes + +import { Route as rootRoute } from './routes/__root' + +// Create Virtual Routes + +const IndexLazyImport = createFileRoute('/')() + +// Create/Update Routes + +const IndexLazyRoute = IndexLazyImport.update({ + path: '/', + getParentRoute: () => rootRoute, +} as any).lazy(() => import('./routes/index.lazy').then((d) => d.Route)) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexLazyImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +export const routeTree = rootRoute.addChildren({ IndexLazyRoute }) + +/* prettier-ignore-end */ + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/" + ] + }, + "/": { + "filePath": "index.lazy.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/packages/webui/src/routes/__root.tsx b/packages/webui/src/routes/__root.tsx new file mode 100644 index 0000000..98306c6 --- /dev/null +++ b/packages/webui/src/routes/__root.tsx @@ -0,0 +1,12 @@ +import { Outlet, createRootRoute } from "@tanstack/react-router" + + +export function Root() { + return <> +
+ +
+ +} + +export const Route = createRootRoute({ component: Root }) diff --git a/packages/webui/src/routes/index.lazy.tsx b/packages/webui/src/routes/index.lazy.tsx new file mode 100644 index 0000000..7bc912b --- /dev/null +++ b/packages/webui/src/routes/index.lazy.tsx @@ -0,0 +1,9 @@ +import { createLazyFileRoute } from "@tanstack/react-router" +import { VTodosSubscription } from "../todo/VTodosSubscription" + + +export function Index() { + return +} + +export const Route = createLazyFileRoute("/")({ component: Index }) diff --git a/packages/webui/vite.config.ts b/packages/webui/vite.config.ts index 5a33944..0949385 100644 --- a/packages/webui/vite.config.ts +++ b/packages/webui/vite.config.ts @@ -1,7 +1,13 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { TanStackRouterVite } from "@tanstack/router-plugin/vite" +import { default as react, default as viteReact } from "@vitejs/plugin-react" +import { defineConfig } from "vite" + // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], + plugins: [ + TanStackRouterVite(), + viteReact(), + react(), + ] })