| import { Elysia } from 'elysia' |
| import { autoload } from 'elysia-autoload' |
| import { staticPlugin } from '@elysiajs/static' |
| import { swagger } from '@elysiajs/swagger' |
| import { tmpdir } from 'node:os' |
| import logixlysia from 'logixlysia' |
|
|
| const optsElysia = { |
| serve: { maxRequestBodySize: Number.MAX_SAFE_INTEGER } |
| } |
|
|
| const optsLoad = { prefix: '/v1' } |
|
|
| const optsLog = { |
| ip: true, |
| startupMessageFormat: 'simple', |
| timestamp: { translateTime: '[HH:MM:ss]' } |
| } |
|
|
| const optsStatic = { |
| alwaysStatic: true, |
| assets: tmpdir(), |
| prefix: '/file' |
| } |
|
|
| const optsSwagger = { |
| documentation: { |
| info: { |
| title: 'Ella API Documentation', |
| version: '1.0.0' |
| } |
| }, |
| exclude: [new RegExp(optsStatic.prefix)], |
| path: '/docs', |
| provider: 'swagger-ui' |
| } |
|
|
| export const app = new Elysia(optsElysia) |
| .use(logixlysia({ config: optsLog })) |
| .use(await autoload(optsLoad)) |
| .use(staticPlugin(optsStatic)) |
| .use(swagger(optsSwagger)) |
| .get('/favicon.ico', () => Bun.file('favicon.ico')) |
| .get('/', ({ redirect }) => redirect(optsSwagger.path)) |
|
|
| await app.modules |
| app.listen(Bun.env.PORT, () => ( |
| console.log(app.routes.map((x) => x.path)) |
| )) |