37 lines
900 B
TypeScript
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
|
|
}
|