1.2 KiB
1.2 KiB
SvelteKit Integration
What It Is
Run Elysia on SvelteKit server routes.
Setup
- Create
src/routes/[...slugs]/+server.ts - Define Elysia server
- Export fallback handler:
// src/routes/[...slugs]/+server.ts
import { Elysia, t } from 'elysia'
const app = new Elysia()
.get('/', 'hello SvelteKit')
.post('/', ({ body }) => body, {
body: t.Object({ name: t.String() })
})
interface WithRequest {
request: Request
}
export const fallback = ({ request }: WithRequest) => app.handle(request)
Treat as normal SvelteKit server route.
Prefix for Non-Root
If placed in src/routes/api/[...slugs]/+server.ts, set prefix:
// src/routes/api/[...slugs]/+server.ts
import { Elysia, t } from 'elysia'
const app = new Elysia({ prefix: '/api' })
.get('/', () => 'hi')
.post('/', ({ body }) => body, {
body: t.Object({ name: t.String() })
})
type RequestHandler = (v: { request: Request }) => Response | Promise<Response>
export const fallback: RequestHandler = ({ request }) => app.handle(request)
Ensures routing works in any location.
pnpm
Manual install:
pnpm add @sinclair/typebox openapi-types