Admins configure one mail server; each staff member gets their own mailbox login. Read, reply and compose against real IMAP/SMTP. IMAP and SMTP are raw TCP, so none of this can run in a browser — every operation is a TanStack Start server function. mail.functions.ts ships to the client bundle, so imapflow/nodemailer/mailparser and the crypto helpers are imported inside handlers, never at the top level. Verified that Nitro inlines all three into .output/server/_libs, since the Docker runner stage copies only .output and has no node_modules. Note this ties the app to the Node deployment: the default local build targets Cloudflare Workers, which cannot open IMAP sockets. Credential handling, since a mailbox password grants full read and send access to someone's mail: - user_mailboxes has RLS enabled, no policies, and SELECT revoked from anon and authenticated. Verified: teacher and admin both see zero rows and no ciphertext; only service_role can read it. The revoke is belt and braces — Supabase's default privileges had granted SELECT, leaving the table one stray policy away from leaking. - Passwords are sealed with AES-256-GCM using MAIL_CRED_KEY from .env.secret, so a database dump alone opens nothing. GCM also makes tampering fail the auth tag instead of decrypting to garbage. - Provisioning verifies credentials against the live IMAP server before storing them, so typos surface at setup rather than as a broken inbox. Message bodies render as plain text; sender HTML is never injected, which would execute sender-controlled markup and leak read receipts via tracking pixels. Mailboxes are limited to admins and teachers. Students are excluded deliberately — external mail for minors carries archiving, monitoring and consent obligations that should be chosen, not inherited. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
538 lines
20 KiB
TypeScript
538 lines
20 KiB
TypeScript
/* eslint-disable */
|
|
|
|
// @ts-nocheck
|
|
|
|
// noinspection JSUnusedGlobalSymbols
|
|
|
|
// This file was automatically generated by TanStack Router.
|
|
// You should NOT make any changes in this file as it will be overwritten.
|
|
// 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 AuthRouteImport } from './routes/auth'
|
|
import { Route as AuthenticatedRouteRouteImport } from './routes/_authenticated/route'
|
|
import { Route as IndexRouteImport } from './routes/index'
|
|
import { Route as IntakeTokenRouteImport } from './routes/intake.$token'
|
|
import { Route as AuthenticatedStudentsRouteImport } from './routes/_authenticated/students'
|
|
import { Route as AuthenticatedReportsRouteImport } from './routes/_authenticated/reports'
|
|
import { Route as AuthenticatedPlansRouteImport } from './routes/_authenticated/plans'
|
|
import { Route as AuthenticatedMessagesRouteImport } from './routes/_authenticated/messages'
|
|
import { Route as AuthenticatedMailRouteImport } from './routes/_authenticated/mail'
|
|
import { Route as AuthenticatedLedgerRouteImport } from './routes/_authenticated/ledger'
|
|
import { Route as AuthenticatedFormsRouteImport } from './routes/_authenticated/forms'
|
|
import { Route as AuthenticatedDashboardRouteImport } from './routes/_authenticated/dashboard'
|
|
import { Route as AuthenticatedClassesRouteImport } from './routes/_authenticated/classes'
|
|
import { Route as AuthenticatedCalendarRouteImport } from './routes/_authenticated/calendar'
|
|
import { Route as AuthenticatedAttendanceRouteImport } from './routes/_authenticated/attendance'
|
|
import { Route as AuthenticatedAdminRouteImport } from './routes/_authenticated/admin'
|
|
import { Route as AuthenticatedStudentsIndexRouteImport } from './routes/_authenticated/students.index'
|
|
import { Route as AuthenticatedClassesIndexRouteImport } from './routes/_authenticated/classes.index'
|
|
import { Route as AuthenticatedStudentsNewRouteImport } from './routes/_authenticated/students.new'
|
|
import { Route as AuthenticatedStudentsIdRouteImport } from './routes/_authenticated/students.$id'
|
|
import { Route as AuthenticatedInvoiceIdRouteImport } from './routes/_authenticated/invoice.$id'
|
|
import { Route as AuthenticatedClassesIdRouteImport } from './routes/_authenticated/classes.$id'
|
|
|
|
const AuthRoute = AuthRouteImport.update({
|
|
id: '/auth',
|
|
path: '/auth',
|
|
getParentRoute: () => rootRouteImport,
|
|
} as any)
|
|
const AuthenticatedRouteRoute = AuthenticatedRouteRouteImport.update({
|
|
id: '/_authenticated',
|
|
getParentRoute: () => rootRouteImport,
|
|
} as any)
|
|
const IndexRoute = IndexRouteImport.update({
|
|
id: '/',
|
|
path: '/',
|
|
getParentRoute: () => rootRouteImport,
|
|
} as any)
|
|
const IntakeTokenRoute = IntakeTokenRouteImport.update({
|
|
id: '/intake/$token',
|
|
path: '/intake/$token',
|
|
getParentRoute: () => rootRouteImport,
|
|
} as any)
|
|
const AuthenticatedStudentsRoute = AuthenticatedStudentsRouteImport.update({
|
|
id: '/students',
|
|
path: '/students',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedReportsRoute = AuthenticatedReportsRouteImport.update({
|
|
id: '/reports',
|
|
path: '/reports',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedPlansRoute = AuthenticatedPlansRouteImport.update({
|
|
id: '/plans',
|
|
path: '/plans',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedMessagesRoute = AuthenticatedMessagesRouteImport.update({
|
|
id: '/messages',
|
|
path: '/messages',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedMailRoute = AuthenticatedMailRouteImport.update({
|
|
id: '/mail',
|
|
path: '/mail',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedLedgerRoute = AuthenticatedLedgerRouteImport.update({
|
|
id: '/ledger',
|
|
path: '/ledger',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedFormsRoute = AuthenticatedFormsRouteImport.update({
|
|
id: '/forms',
|
|
path: '/forms',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedDashboardRoute = AuthenticatedDashboardRouteImport.update({
|
|
id: '/dashboard',
|
|
path: '/dashboard',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedClassesRoute = AuthenticatedClassesRouteImport.update({
|
|
id: '/classes',
|
|
path: '/classes',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedCalendarRoute = AuthenticatedCalendarRouteImport.update({
|
|
id: '/calendar',
|
|
path: '/calendar',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedAttendanceRoute = AuthenticatedAttendanceRouteImport.update({
|
|
id: '/attendance',
|
|
path: '/attendance',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedAdminRoute = AuthenticatedAdminRouteImport.update({
|
|
id: '/admin',
|
|
path: '/admin',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedStudentsIndexRoute =
|
|
AuthenticatedStudentsIndexRouteImport.update({
|
|
id: '/',
|
|
path: '/',
|
|
getParentRoute: () => AuthenticatedStudentsRoute,
|
|
} as any)
|
|
const AuthenticatedClassesIndexRoute =
|
|
AuthenticatedClassesIndexRouteImport.update({
|
|
id: '/',
|
|
path: '/',
|
|
getParentRoute: () => AuthenticatedClassesRoute,
|
|
} as any)
|
|
const AuthenticatedStudentsNewRoute =
|
|
AuthenticatedStudentsNewRouteImport.update({
|
|
id: '/new',
|
|
path: '/new',
|
|
getParentRoute: () => AuthenticatedStudentsRoute,
|
|
} as any)
|
|
const AuthenticatedStudentsIdRoute = AuthenticatedStudentsIdRouteImport.update({
|
|
id: '/$id',
|
|
path: '/$id',
|
|
getParentRoute: () => AuthenticatedStudentsRoute,
|
|
} as any)
|
|
const AuthenticatedInvoiceIdRoute = AuthenticatedInvoiceIdRouteImport.update({
|
|
id: '/invoice/$id',
|
|
path: '/invoice/$id',
|
|
getParentRoute: () => AuthenticatedRouteRoute,
|
|
} as any)
|
|
const AuthenticatedClassesIdRoute = AuthenticatedClassesIdRouteImport.update({
|
|
id: '/$id',
|
|
path: '/$id',
|
|
getParentRoute: () => AuthenticatedClassesRoute,
|
|
} as any)
|
|
|
|
export interface FileRoutesByFullPath {
|
|
'/': typeof IndexRoute
|
|
'/auth': typeof AuthRoute
|
|
'/admin': typeof AuthenticatedAdminRoute
|
|
'/attendance': typeof AuthenticatedAttendanceRoute
|
|
'/calendar': typeof AuthenticatedCalendarRoute
|
|
'/classes': typeof AuthenticatedClassesRouteWithChildren
|
|
'/dashboard': typeof AuthenticatedDashboardRoute
|
|
'/forms': typeof AuthenticatedFormsRoute
|
|
'/ledger': typeof AuthenticatedLedgerRoute
|
|
'/mail': typeof AuthenticatedMailRoute
|
|
'/messages': typeof AuthenticatedMessagesRoute
|
|
'/plans': typeof AuthenticatedPlansRoute
|
|
'/reports': typeof AuthenticatedReportsRoute
|
|
'/students': typeof AuthenticatedStudentsRouteWithChildren
|
|
'/intake/$token': typeof IntakeTokenRoute
|
|
'/classes/$id': typeof AuthenticatedClassesIdRoute
|
|
'/invoice/$id': typeof AuthenticatedInvoiceIdRoute
|
|
'/students/$id': typeof AuthenticatedStudentsIdRoute
|
|
'/students/new': typeof AuthenticatedStudentsNewRoute
|
|
'/classes/': typeof AuthenticatedClassesIndexRoute
|
|
'/students/': typeof AuthenticatedStudentsIndexRoute
|
|
}
|
|
export interface FileRoutesByTo {
|
|
'/': typeof IndexRoute
|
|
'/auth': typeof AuthRoute
|
|
'/admin': typeof AuthenticatedAdminRoute
|
|
'/attendance': typeof AuthenticatedAttendanceRoute
|
|
'/calendar': typeof AuthenticatedCalendarRoute
|
|
'/dashboard': typeof AuthenticatedDashboardRoute
|
|
'/forms': typeof AuthenticatedFormsRoute
|
|
'/ledger': typeof AuthenticatedLedgerRoute
|
|
'/mail': typeof AuthenticatedMailRoute
|
|
'/messages': typeof AuthenticatedMessagesRoute
|
|
'/plans': typeof AuthenticatedPlansRoute
|
|
'/reports': typeof AuthenticatedReportsRoute
|
|
'/intake/$token': typeof IntakeTokenRoute
|
|
'/classes/$id': typeof AuthenticatedClassesIdRoute
|
|
'/invoice/$id': typeof AuthenticatedInvoiceIdRoute
|
|
'/students/$id': typeof AuthenticatedStudentsIdRoute
|
|
'/students/new': typeof AuthenticatedStudentsNewRoute
|
|
'/classes': typeof AuthenticatedClassesIndexRoute
|
|
'/students': typeof AuthenticatedStudentsIndexRoute
|
|
}
|
|
export interface FileRoutesById {
|
|
__root__: typeof rootRouteImport
|
|
'/': typeof IndexRoute
|
|
'/_authenticated': typeof AuthenticatedRouteRouteWithChildren
|
|
'/auth': typeof AuthRoute
|
|
'/_authenticated/admin': typeof AuthenticatedAdminRoute
|
|
'/_authenticated/attendance': typeof AuthenticatedAttendanceRoute
|
|
'/_authenticated/calendar': typeof AuthenticatedCalendarRoute
|
|
'/_authenticated/classes': typeof AuthenticatedClassesRouteWithChildren
|
|
'/_authenticated/dashboard': typeof AuthenticatedDashboardRoute
|
|
'/_authenticated/forms': typeof AuthenticatedFormsRoute
|
|
'/_authenticated/ledger': typeof AuthenticatedLedgerRoute
|
|
'/_authenticated/mail': typeof AuthenticatedMailRoute
|
|
'/_authenticated/messages': typeof AuthenticatedMessagesRoute
|
|
'/_authenticated/plans': typeof AuthenticatedPlansRoute
|
|
'/_authenticated/reports': typeof AuthenticatedReportsRoute
|
|
'/_authenticated/students': typeof AuthenticatedStudentsRouteWithChildren
|
|
'/intake/$token': typeof IntakeTokenRoute
|
|
'/_authenticated/classes/$id': typeof AuthenticatedClassesIdRoute
|
|
'/_authenticated/invoice/$id': typeof AuthenticatedInvoiceIdRoute
|
|
'/_authenticated/students/$id': typeof AuthenticatedStudentsIdRoute
|
|
'/_authenticated/students/new': typeof AuthenticatedStudentsNewRoute
|
|
'/_authenticated/classes/': typeof AuthenticatedClassesIndexRoute
|
|
'/_authenticated/students/': typeof AuthenticatedStudentsIndexRoute
|
|
}
|
|
export interface FileRouteTypes {
|
|
fileRoutesByFullPath: FileRoutesByFullPath
|
|
fullPaths:
|
|
| '/'
|
|
| '/auth'
|
|
| '/admin'
|
|
| '/attendance'
|
|
| '/calendar'
|
|
| '/classes'
|
|
| '/dashboard'
|
|
| '/forms'
|
|
| '/ledger'
|
|
| '/mail'
|
|
| '/messages'
|
|
| '/plans'
|
|
| '/reports'
|
|
| '/students'
|
|
| '/intake/$token'
|
|
| '/classes/$id'
|
|
| '/invoice/$id'
|
|
| '/students/$id'
|
|
| '/students/new'
|
|
| '/classes/'
|
|
| '/students/'
|
|
fileRoutesByTo: FileRoutesByTo
|
|
to:
|
|
| '/'
|
|
| '/auth'
|
|
| '/admin'
|
|
| '/attendance'
|
|
| '/calendar'
|
|
| '/dashboard'
|
|
| '/forms'
|
|
| '/ledger'
|
|
| '/mail'
|
|
| '/messages'
|
|
| '/plans'
|
|
| '/reports'
|
|
| '/intake/$token'
|
|
| '/classes/$id'
|
|
| '/invoice/$id'
|
|
| '/students/$id'
|
|
| '/students/new'
|
|
| '/classes'
|
|
| '/students'
|
|
id:
|
|
| '__root__'
|
|
| '/'
|
|
| '/_authenticated'
|
|
| '/auth'
|
|
| '/_authenticated/admin'
|
|
| '/_authenticated/attendance'
|
|
| '/_authenticated/calendar'
|
|
| '/_authenticated/classes'
|
|
| '/_authenticated/dashboard'
|
|
| '/_authenticated/forms'
|
|
| '/_authenticated/ledger'
|
|
| '/_authenticated/mail'
|
|
| '/_authenticated/messages'
|
|
| '/_authenticated/plans'
|
|
| '/_authenticated/reports'
|
|
| '/_authenticated/students'
|
|
| '/intake/$token'
|
|
| '/_authenticated/classes/$id'
|
|
| '/_authenticated/invoice/$id'
|
|
| '/_authenticated/students/$id'
|
|
| '/_authenticated/students/new'
|
|
| '/_authenticated/classes/'
|
|
| '/_authenticated/students/'
|
|
fileRoutesById: FileRoutesById
|
|
}
|
|
export interface RootRouteChildren {
|
|
IndexRoute: typeof IndexRoute
|
|
AuthenticatedRouteRoute: typeof AuthenticatedRouteRouteWithChildren
|
|
AuthRoute: typeof AuthRoute
|
|
IntakeTokenRoute: typeof IntakeTokenRoute
|
|
}
|
|
|
|
declare module '@tanstack/react-router' {
|
|
interface FileRoutesByPath {
|
|
'/auth': {
|
|
id: '/auth'
|
|
path: '/auth'
|
|
fullPath: '/auth'
|
|
preLoaderRoute: typeof AuthRouteImport
|
|
parentRoute: typeof rootRouteImport
|
|
}
|
|
'/_authenticated': {
|
|
id: '/_authenticated'
|
|
path: ''
|
|
fullPath: '/'
|
|
preLoaderRoute: typeof AuthenticatedRouteRouteImport
|
|
parentRoute: typeof rootRouteImport
|
|
}
|
|
'/': {
|
|
id: '/'
|
|
path: '/'
|
|
fullPath: '/'
|
|
preLoaderRoute: typeof IndexRouteImport
|
|
parentRoute: typeof rootRouteImport
|
|
}
|
|
'/intake/$token': {
|
|
id: '/intake/$token'
|
|
path: '/intake/$token'
|
|
fullPath: '/intake/$token'
|
|
preLoaderRoute: typeof IntakeTokenRouteImport
|
|
parentRoute: typeof rootRouteImport
|
|
}
|
|
'/_authenticated/students': {
|
|
id: '/_authenticated/students'
|
|
path: '/students'
|
|
fullPath: '/students'
|
|
preLoaderRoute: typeof AuthenticatedStudentsRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/reports': {
|
|
id: '/_authenticated/reports'
|
|
path: '/reports'
|
|
fullPath: '/reports'
|
|
preLoaderRoute: typeof AuthenticatedReportsRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/plans': {
|
|
id: '/_authenticated/plans'
|
|
path: '/plans'
|
|
fullPath: '/plans'
|
|
preLoaderRoute: typeof AuthenticatedPlansRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/messages': {
|
|
id: '/_authenticated/messages'
|
|
path: '/messages'
|
|
fullPath: '/messages'
|
|
preLoaderRoute: typeof AuthenticatedMessagesRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/mail': {
|
|
id: '/_authenticated/mail'
|
|
path: '/mail'
|
|
fullPath: '/mail'
|
|
preLoaderRoute: typeof AuthenticatedMailRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/ledger': {
|
|
id: '/_authenticated/ledger'
|
|
path: '/ledger'
|
|
fullPath: '/ledger'
|
|
preLoaderRoute: typeof AuthenticatedLedgerRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/forms': {
|
|
id: '/_authenticated/forms'
|
|
path: '/forms'
|
|
fullPath: '/forms'
|
|
preLoaderRoute: typeof AuthenticatedFormsRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/dashboard': {
|
|
id: '/_authenticated/dashboard'
|
|
path: '/dashboard'
|
|
fullPath: '/dashboard'
|
|
preLoaderRoute: typeof AuthenticatedDashboardRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/classes': {
|
|
id: '/_authenticated/classes'
|
|
path: '/classes'
|
|
fullPath: '/classes'
|
|
preLoaderRoute: typeof AuthenticatedClassesRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/calendar': {
|
|
id: '/_authenticated/calendar'
|
|
path: '/calendar'
|
|
fullPath: '/calendar'
|
|
preLoaderRoute: typeof AuthenticatedCalendarRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/attendance': {
|
|
id: '/_authenticated/attendance'
|
|
path: '/attendance'
|
|
fullPath: '/attendance'
|
|
preLoaderRoute: typeof AuthenticatedAttendanceRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/admin': {
|
|
id: '/_authenticated/admin'
|
|
path: '/admin'
|
|
fullPath: '/admin'
|
|
preLoaderRoute: typeof AuthenticatedAdminRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/students/': {
|
|
id: '/_authenticated/students/'
|
|
path: '/'
|
|
fullPath: '/students/'
|
|
preLoaderRoute: typeof AuthenticatedStudentsIndexRouteImport
|
|
parentRoute: typeof AuthenticatedStudentsRoute
|
|
}
|
|
'/_authenticated/classes/': {
|
|
id: '/_authenticated/classes/'
|
|
path: '/'
|
|
fullPath: '/classes/'
|
|
preLoaderRoute: typeof AuthenticatedClassesIndexRouteImport
|
|
parentRoute: typeof AuthenticatedClassesRoute
|
|
}
|
|
'/_authenticated/students/new': {
|
|
id: '/_authenticated/students/new'
|
|
path: '/new'
|
|
fullPath: '/students/new'
|
|
preLoaderRoute: typeof AuthenticatedStudentsNewRouteImport
|
|
parentRoute: typeof AuthenticatedStudentsRoute
|
|
}
|
|
'/_authenticated/students/$id': {
|
|
id: '/_authenticated/students/$id'
|
|
path: '/$id'
|
|
fullPath: '/students/$id'
|
|
preLoaderRoute: typeof AuthenticatedStudentsIdRouteImport
|
|
parentRoute: typeof AuthenticatedStudentsRoute
|
|
}
|
|
'/_authenticated/invoice/$id': {
|
|
id: '/_authenticated/invoice/$id'
|
|
path: '/invoice/$id'
|
|
fullPath: '/invoice/$id'
|
|
preLoaderRoute: typeof AuthenticatedInvoiceIdRouteImport
|
|
parentRoute: typeof AuthenticatedRouteRoute
|
|
}
|
|
'/_authenticated/classes/$id': {
|
|
id: '/_authenticated/classes/$id'
|
|
path: '/$id'
|
|
fullPath: '/classes/$id'
|
|
preLoaderRoute: typeof AuthenticatedClassesIdRouteImport
|
|
parentRoute: typeof AuthenticatedClassesRoute
|
|
}
|
|
}
|
|
}
|
|
|
|
interface AuthenticatedClassesRouteChildren {
|
|
AuthenticatedClassesIdRoute: typeof AuthenticatedClassesIdRoute
|
|
AuthenticatedClassesIndexRoute: typeof AuthenticatedClassesIndexRoute
|
|
}
|
|
|
|
const AuthenticatedClassesRouteChildren: AuthenticatedClassesRouteChildren = {
|
|
AuthenticatedClassesIdRoute: AuthenticatedClassesIdRoute,
|
|
AuthenticatedClassesIndexRoute: AuthenticatedClassesIndexRoute,
|
|
}
|
|
|
|
const AuthenticatedClassesRouteWithChildren =
|
|
AuthenticatedClassesRoute._addFileChildren(AuthenticatedClassesRouteChildren)
|
|
|
|
interface AuthenticatedStudentsRouteChildren {
|
|
AuthenticatedStudentsIdRoute: typeof AuthenticatedStudentsIdRoute
|
|
AuthenticatedStudentsNewRoute: typeof AuthenticatedStudentsNewRoute
|
|
AuthenticatedStudentsIndexRoute: typeof AuthenticatedStudentsIndexRoute
|
|
}
|
|
|
|
const AuthenticatedStudentsRouteChildren: AuthenticatedStudentsRouteChildren = {
|
|
AuthenticatedStudentsIdRoute: AuthenticatedStudentsIdRoute,
|
|
AuthenticatedStudentsNewRoute: AuthenticatedStudentsNewRoute,
|
|
AuthenticatedStudentsIndexRoute: AuthenticatedStudentsIndexRoute,
|
|
}
|
|
|
|
const AuthenticatedStudentsRouteWithChildren =
|
|
AuthenticatedStudentsRoute._addFileChildren(
|
|
AuthenticatedStudentsRouteChildren,
|
|
)
|
|
|
|
interface AuthenticatedRouteRouteChildren {
|
|
AuthenticatedAdminRoute: typeof AuthenticatedAdminRoute
|
|
AuthenticatedAttendanceRoute: typeof AuthenticatedAttendanceRoute
|
|
AuthenticatedCalendarRoute: typeof AuthenticatedCalendarRoute
|
|
AuthenticatedClassesRoute: typeof AuthenticatedClassesRouteWithChildren
|
|
AuthenticatedDashboardRoute: typeof AuthenticatedDashboardRoute
|
|
AuthenticatedFormsRoute: typeof AuthenticatedFormsRoute
|
|
AuthenticatedLedgerRoute: typeof AuthenticatedLedgerRoute
|
|
AuthenticatedMailRoute: typeof AuthenticatedMailRoute
|
|
AuthenticatedMessagesRoute: typeof AuthenticatedMessagesRoute
|
|
AuthenticatedPlansRoute: typeof AuthenticatedPlansRoute
|
|
AuthenticatedReportsRoute: typeof AuthenticatedReportsRoute
|
|
AuthenticatedStudentsRoute: typeof AuthenticatedStudentsRouteWithChildren
|
|
AuthenticatedInvoiceIdRoute: typeof AuthenticatedInvoiceIdRoute
|
|
}
|
|
|
|
const AuthenticatedRouteRouteChildren: AuthenticatedRouteRouteChildren = {
|
|
AuthenticatedAdminRoute: AuthenticatedAdminRoute,
|
|
AuthenticatedAttendanceRoute: AuthenticatedAttendanceRoute,
|
|
AuthenticatedCalendarRoute: AuthenticatedCalendarRoute,
|
|
AuthenticatedClassesRoute: AuthenticatedClassesRouteWithChildren,
|
|
AuthenticatedDashboardRoute: AuthenticatedDashboardRoute,
|
|
AuthenticatedFormsRoute: AuthenticatedFormsRoute,
|
|
AuthenticatedLedgerRoute: AuthenticatedLedgerRoute,
|
|
AuthenticatedMailRoute: AuthenticatedMailRoute,
|
|
AuthenticatedMessagesRoute: AuthenticatedMessagesRoute,
|
|
AuthenticatedPlansRoute: AuthenticatedPlansRoute,
|
|
AuthenticatedReportsRoute: AuthenticatedReportsRoute,
|
|
AuthenticatedStudentsRoute: AuthenticatedStudentsRouteWithChildren,
|
|
AuthenticatedInvoiceIdRoute: AuthenticatedInvoiceIdRoute,
|
|
}
|
|
|
|
const AuthenticatedRouteRouteWithChildren =
|
|
AuthenticatedRouteRoute._addFileChildren(AuthenticatedRouteRouteChildren)
|
|
|
|
const rootRouteChildren: RootRouteChildren = {
|
|
IndexRoute: IndexRoute,
|
|
AuthenticatedRouteRoute: AuthenticatedRouteRouteWithChildren,
|
|
AuthRoute: AuthRoute,
|
|
IntakeTokenRoute: IntakeTokenRoute,
|
|
}
|
|
export const routeTree = rootRouteImport
|
|
._addFileChildren(rootRouteChildren)
|
|
._addFileTypes<FileRouteTypes>()
|
|
|
|
import type { getRouter } from './router.tsx'
|
|
import type { startInstance } from './start.ts'
|
|
declare module '@tanstack/react-start' {
|
|
interface Register {
|
|
ssr: true
|
|
router: Awaited<ReturnType<typeof getRouter>>
|
|
config: Awaited<ReturnType<typeof startInstance.getOptions>>
|
|
}
|
|
}
|