brf/server/server.ts
2025-11-27 12:22:51 +01:00

37 lines
900 B
TypeScript

import fastify, { type FastifyServerOptions } from 'fastify'
import fstatic from '@fastify/static'
import StatusError from './lib/status_error.ts'
import env from './env.ts'
import ErrorHandler from './handlers/error.ts'
import vitePlugin from './plugins/vite.ts'
import apiRoutes from './routes/api.ts'
import templatePublic from './templates/public.ts'
export default async (options: FastifyServerOptions) => {
const server = fastify(options)
server.setNotFoundHandler(() => {
throw new StatusError(404)
})
server.register(fstatic, {
root: new URL('../uploads', import.meta.url),
prefix: '/uploads/',
})
server.register(vitePlugin, {
mode: env.NODE_ENV,
createErrorHandler: ErrorHandler,
entries: {
public: {
path: '/',
template: templatePublic,
},
},
})
server.register(apiRoutes, { prefix: '/api' })
return server
}