test(better auth): implementation start of better auth

This commit is contained in:
2025-09-19 22:23:32 -05:00
parent 6c56dfa810
commit 6faee89b25
37 changed files with 3433 additions and 16 deletions

View File

@@ -0,0 +1,11 @@
import { createAuthClient } from "better-auth/client";
import { usernameClient } from "better-auth/client/plugins";
export const authClient = createAuthClient({
baseURL: `${window.location.origin}/lst/api/auth`, // 👈 This is fine
callbacks: {
onUpdate: (session: any) => console.log("Session updated", session),
onSignIn: (session: any) => console.log("Signed in!", session),
onSignOut: () => console.log("Signed out!"),
},
plugins: [usernameClient()],
});

View File

@@ -1,6 +1,6 @@
import { clsx, type ClassValue } from "clsx"
import { twMerge } from "tailwind-merge"
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))
return twMerge(clsx(inputs));
}

View File

@@ -1,12 +1,15 @@
import { StrictMode } from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import { RouterProvider, createRouter } from "@tanstack/react-router";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
// Import the generated route tree
import { routeTree } from "./routeTree.gen";
// Create a client
const queryClient = new QueryClient();
// Create a new router instance
const router = createRouter({ routeTree, basepath: "/lst/app" });
@@ -19,6 +22,8 @@ declare module "@tanstack/react-router" {
ReactDOM.createRoot(document.getElementById("root")!).render(
<StrictMode>
<RouterProvider router={router} />
<QueryClientProvider client={queryClient}>
<RouterProvider router={router} />
</QueryClientProvider>
</StrictMode>
);

View File

@@ -9,38 +9,160 @@
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
import { Route as rootRouteImport } from './routes/__root'
import { Route as _adminRouteImport } from './routes/__admin'
import { Route as AdminLayoutRouteRouteImport } from './routes/_adminLayout/route'
import { Route as IndexRouteImport } from './routes/index'
import { Route as AdminSettingsRouteImport } from './routes/admin_/settings'
import { Route as AdminLayoutAdminIndexRouteImport } from './routes/_adminLayout/admin/index'
import { Route as AdminLayoutAdminUsersRouteImport } from './routes/_adminLayout/admin/users'
import { Route as AdminLayoutAdminServersRouteImport } from './routes/_adminLayout/admin/servers'
import { Route as AdminLayoutAdminUserUserIdRouteImport } from './routes/_adminLayout/admin/user/$userId'
import { Route as AdminLayoutAdminServersServerIdRouteImport } from './routes/_adminLayout/admin/servers/$serverId'
import { Route as AdminLayoutAdminServersServerIdEditRouteImport } from './routes/_adminLayout/admin/servers/$serverId_/edit'
const _adminRoute = _adminRouteImport.update({
id: '/__admin',
getParentRoute: () => rootRouteImport,
} as any)
const AdminLayoutRouteRoute = AdminLayoutRouteRouteImport.update({
id: '/_adminLayout',
getParentRoute: () => rootRouteImport,
} as any)
const IndexRoute = IndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => rootRouteImport,
} as any)
const AdminSettingsRoute = AdminSettingsRouteImport.update({
id: '/admin_/settings',
path: '/admin/settings',
getParentRoute: () => rootRouteImport,
} as any)
const AdminLayoutAdminIndexRoute = AdminLayoutAdminIndexRouteImport.update({
id: '/admin/',
path: '/admin/',
getParentRoute: () => AdminLayoutRouteRoute,
} as any)
const AdminLayoutAdminUsersRoute = AdminLayoutAdminUsersRouteImport.update({
id: '/admin/users',
path: '/admin/users',
getParentRoute: () => AdminLayoutRouteRoute,
} as any)
const AdminLayoutAdminServersRoute = AdminLayoutAdminServersRouteImport.update({
id: '/admin/servers',
path: '/admin/servers',
getParentRoute: () => AdminLayoutRouteRoute,
} as any)
const AdminLayoutAdminUserUserIdRoute =
AdminLayoutAdminUserUserIdRouteImport.update({
id: '/admin/user/$userId',
path: '/admin/user/$userId',
getParentRoute: () => AdminLayoutRouteRoute,
} as any)
const AdminLayoutAdminServersServerIdRoute =
AdminLayoutAdminServersServerIdRouteImport.update({
id: '/$serverId',
path: '/$serverId',
getParentRoute: () => AdminLayoutAdminServersRoute,
} as any)
const AdminLayoutAdminServersServerIdEditRoute =
AdminLayoutAdminServersServerIdEditRouteImport.update({
id: '/$serverId_/edit',
path: '/$serverId/edit',
getParentRoute: () => AdminLayoutAdminServersRoute,
} as any)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/admin/settings': typeof AdminSettingsRoute
'/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
'/admin/users': typeof AdminLayoutAdminUsersRoute
'/admin': typeof AdminLayoutAdminIndexRoute
'/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
'/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
'/admin/servers/$serverId/edit': typeof AdminLayoutAdminServersServerIdEditRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/admin/settings': typeof AdminSettingsRoute
'/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
'/admin/users': typeof AdminLayoutAdminUsersRoute
'/admin': typeof AdminLayoutAdminIndexRoute
'/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
'/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
'/admin/servers/$serverId/edit': typeof AdminLayoutAdminServersServerIdEditRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
'/': typeof IndexRoute
'/_adminLayout': typeof AdminLayoutRouteRouteWithChildren
'/__admin': typeof _adminRoute
'/admin_/settings': typeof AdminSettingsRoute
'/_adminLayout/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
'/_adminLayout/admin/users': typeof AdminLayoutAdminUsersRoute
'/_adminLayout/admin/': typeof AdminLayoutAdminIndexRoute
'/_adminLayout/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
'/_adminLayout/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
'/_adminLayout/admin/servers/$serverId_/edit': typeof AdminLayoutAdminServersServerIdEditRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths: '/'
fullPaths:
| '/'
| '/admin/settings'
| '/admin/servers'
| '/admin/users'
| '/admin'
| '/admin/servers/$serverId'
| '/admin/user/$userId'
| '/admin/servers/$serverId/edit'
fileRoutesByTo: FileRoutesByTo
to: '/'
id: '__root__' | '/'
to:
| '/'
| '/admin/settings'
| '/admin/servers'
| '/admin/users'
| '/admin'
| '/admin/servers/$serverId'
| '/admin/user/$userId'
| '/admin/servers/$serverId/edit'
id:
| '__root__'
| '/'
| '/_adminLayout'
| '/__admin'
| '/admin_/settings'
| '/_adminLayout/admin/servers'
| '/_adminLayout/admin/users'
| '/_adminLayout/admin/'
| '/_adminLayout/admin/servers/$serverId'
| '/_adminLayout/admin/user/$userId'
| '/_adminLayout/admin/servers/$serverId_/edit'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
AdminLayoutRouteRoute: typeof AdminLayoutRouteRouteWithChildren
_adminRoute: typeof _adminRoute
AdminSettingsRoute: typeof AdminSettingsRoute
}
declare module '@tanstack/react-router' {
interface FileRoutesByPath {
'/__admin': {
id: '/__admin'
path: ''
fullPath: ''
preLoaderRoute: typeof _adminRouteImport
parentRoute: typeof rootRouteImport
}
'/_adminLayout': {
id: '/_adminLayout'
path: ''
fullPath: ''
preLoaderRoute: typeof AdminLayoutRouteRouteImport
parentRoute: typeof rootRouteImport
}
'/': {
id: '/'
path: '/'
@@ -48,11 +170,97 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof IndexRouteImport
parentRoute: typeof rootRouteImport
}
'/admin_/settings': {
id: '/admin_/settings'
path: '/admin/settings'
fullPath: '/admin/settings'
preLoaderRoute: typeof AdminSettingsRouteImport
parentRoute: typeof rootRouteImport
}
'/_adminLayout/admin/': {
id: '/_adminLayout/admin/'
path: '/admin'
fullPath: '/admin'
preLoaderRoute: typeof AdminLayoutAdminIndexRouteImport
parentRoute: typeof AdminLayoutRouteRoute
}
'/_adminLayout/admin/users': {
id: '/_adminLayout/admin/users'
path: '/admin/users'
fullPath: '/admin/users'
preLoaderRoute: typeof AdminLayoutAdminUsersRouteImport
parentRoute: typeof AdminLayoutRouteRoute
}
'/_adminLayout/admin/servers': {
id: '/_adminLayout/admin/servers'
path: '/admin/servers'
fullPath: '/admin/servers'
preLoaderRoute: typeof AdminLayoutAdminServersRouteImport
parentRoute: typeof AdminLayoutRouteRoute
}
'/_adminLayout/admin/user/$userId': {
id: '/_adminLayout/admin/user/$userId'
path: '/admin/user/$userId'
fullPath: '/admin/user/$userId'
preLoaderRoute: typeof AdminLayoutAdminUserUserIdRouteImport
parentRoute: typeof AdminLayoutRouteRoute
}
'/_adminLayout/admin/servers/$serverId': {
id: '/_adminLayout/admin/servers/$serverId'
path: '/$serverId'
fullPath: '/admin/servers/$serverId'
preLoaderRoute: typeof AdminLayoutAdminServersServerIdRouteImport
parentRoute: typeof AdminLayoutAdminServersRoute
}
'/_adminLayout/admin/servers/$serverId_/edit': {
id: '/_adminLayout/admin/servers/$serverId_/edit'
path: '/$serverId/edit'
fullPath: '/admin/servers/$serverId/edit'
preLoaderRoute: typeof AdminLayoutAdminServersServerIdEditRouteImport
parentRoute: typeof AdminLayoutAdminServersRoute
}
}
}
interface AdminLayoutAdminServersRouteChildren {
AdminLayoutAdminServersServerIdRoute: typeof AdminLayoutAdminServersServerIdRoute
AdminLayoutAdminServersServerIdEditRoute: typeof AdminLayoutAdminServersServerIdEditRoute
}
const AdminLayoutAdminServersRouteChildren: AdminLayoutAdminServersRouteChildren =
{
AdminLayoutAdminServersServerIdRoute: AdminLayoutAdminServersServerIdRoute,
AdminLayoutAdminServersServerIdEditRoute:
AdminLayoutAdminServersServerIdEditRoute,
}
const AdminLayoutAdminServersRouteWithChildren =
AdminLayoutAdminServersRoute._addFileChildren(
AdminLayoutAdminServersRouteChildren,
)
interface AdminLayoutRouteRouteChildren {
AdminLayoutAdminServersRoute: typeof AdminLayoutAdminServersRouteWithChildren
AdminLayoutAdminUsersRoute: typeof AdminLayoutAdminUsersRoute
AdminLayoutAdminIndexRoute: typeof AdminLayoutAdminIndexRoute
AdminLayoutAdminUserUserIdRoute: typeof AdminLayoutAdminUserUserIdRoute
}
const AdminLayoutRouteRouteChildren: AdminLayoutRouteRouteChildren = {
AdminLayoutAdminServersRoute: AdminLayoutAdminServersRouteWithChildren,
AdminLayoutAdminUsersRoute: AdminLayoutAdminUsersRoute,
AdminLayoutAdminIndexRoute: AdminLayoutAdminIndexRoute,
AdminLayoutAdminUserUserIdRoute: AdminLayoutAdminUserUserIdRoute,
}
const AdminLayoutRouteRouteWithChildren =
AdminLayoutRouteRoute._addFileChildren(AdminLayoutRouteRouteChildren)
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
AdminLayoutRouteRoute: AdminLayoutRouteRouteWithChildren,
_adminRoute: _adminRoute,
AdminSettingsRoute: AdminSettingsRoute,
}
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/__admin')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/(__admin)/__admin"!</div>
}

View File

@@ -1,8 +1,13 @@
import { createRootRoute, Outlet } from "@tanstack/react-router";
import { createRootRoute, Link, Outlet } from "@tanstack/react-router";
import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
const RootLayout = () => (
<>
<nav className="flex gap-1">
<Link to="/">Home</Link>
{/* <Link to="/admin">Admin</Link> */}
</nav>
<hr></hr>
<Outlet />
<TanStackRouterDevtools />
</>

View File

@@ -0,0 +1,23 @@
import { Link } from "@tanstack/react-router";
export default function Nav() {
return (
<div>
<nav className="flex gap-1">
<Link
to="/admin"
className="[&.active]:font-bold"
activeOptions={{ exact: true }}
>
Admin
</Link>
<Link to="/admin/servers" className="[&.active]:font-bold">
Servers
</Link>
<Link to="/admin/users" className="[&.active]:font-bold">
Users
</Link>
</nav>
</div>
);
}

View File

@@ -0,0 +1,8 @@
import { getRouteApi } from "@tanstack/react-router";
export default function Server() {
const { useParams } = getRouteApi("/_adminLayout/admin/servers/$serverId");
const { serverId } = useParams();
return <div>server id {serverId}!</div>;
}

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/_adminLayout/admin/')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/_adminLayout/admin/"!</div>
}

View File

@@ -0,0 +1,27 @@
import { createFileRoute, Link } from "@tanstack/react-router";
export const Route = createFileRoute("/_adminLayout/admin/servers")({
component: RouteComponent,
});
function RouteComponent() {
return (
<div>
Hello "/admin/servers"! <br />
<Link
to="/admin/servers/$serverId"
params={{
serverId: "5",
}}
>
Server 5
</Link>
<Link
to="/admin/servers/$serverId"
params={(prev) => ({ ...prev, serverId: "10" })}
>
Server 5
</Link>
</div>
);
}

View File

@@ -0,0 +1,10 @@
import { createFileRoute } from "@tanstack/react-router";
import Server from "../../-components/Server";
export const Route = createFileRoute("/_adminLayout/admin/servers/$serverId")({
component: RouteComponent,
});
function RouteComponent() {
return <Server />;
}

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/_adminLayout/admin/servers/$serverId_/edit')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/_adminLayout/admin/_server/$edit"!</div>
}

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/_adminLayout/admin/user/$userId')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/_adminLayout/admin/$userId"!</div>
}

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/_adminLayout/admin/users')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/admin/users"!</div>
}

View File

@@ -0,0 +1,16 @@
import { createFileRoute, Outlet } from "@tanstack/react-router";
import Nav from "./-components/Nav";
export const Route = createFileRoute("/_adminLayout")({
component: RouteComponent,
});
function RouteComponent() {
return (
<div>
<Nav />
<hr />
<Outlet />
</div>
);
}

View File

@@ -0,0 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/admin_/settings')({
component: RouteComponent,
})
function RouteComponent() {
return <div>Hello "/admin_/settings"!</div>
}

View File

@@ -7,12 +7,14 @@ export const Route = createFileRoute("/")({
function Index() {
return (
<div className="h-screen flex items-center justify-center">
<Button className="h-96 w-96">
<a href="/lst/d" target="_blank" className="text-4xl">
LST-DOCS
</a>
</Button>
<div>
<div className="h-screen flex items-center justify-center">
<Button className="h-96 w-96">
<a href="/lst/d" target="_blank" className="text-4xl">
LST-DOCS
</a>
</Button>
</div>
</div>
);
}