|
import { NestFactory } from '@nestjs/core'; |
|
import { AppModule } from './app.module'; |
|
import { TrpcRouter } from '@server/trpc/trpc.router'; |
|
import { ConfigService } from '@nestjs/config'; |
|
import { json, urlencoded } from 'express'; |
|
import { NestExpressApplication } from '@nestjs/platform-express'; |
|
import { ConfigurationType } from './configuration'; |
|
import { join, resolve } from 'path'; |
|
import { readFileSync } from 'fs'; |
|
|
|
const packageJson = JSON.parse( |
|
readFileSync(resolve(__dirname, '..', './package.json'), 'utf-8'), |
|
); |
|
|
|
const appVersion = packageJson.version; |
|
console.log('appVersion: v' + appVersion); |
|
|
|
async function bootstrap() { |
|
const app = await NestFactory.create<NestExpressApplication>(AppModule); |
|
const configService = app.get(ConfigService); |
|
|
|
const { host, isProd, port } = |
|
configService.get<ConfigurationType['server']>('server')!; |
|
|
|
app.use(json({ limit: '10mb' })); |
|
app.use(urlencoded({ extended: true, limit: '10mb' })); |
|
|
|
app.useStaticAssets(join(__dirname, '..', 'client', 'assets'), { |
|
prefix: '/dash/assets/', |
|
}); |
|
app.setBaseViewsDir(join(__dirname, '..', 'client')); |
|
app.setViewEngine('hbs'); |
|
|
|
if (isProd) { |
|
app.enable('trust proxy'); |
|
} |
|
|
|
app.enableCors({ |
|
exposedHeaders: ['authorization'], |
|
}); |
|
|
|
const trpc = app.get(TrpcRouter); |
|
trpc.applyMiddleware(app); |
|
|
|
await app.listen(port, host); |
|
|
|
console.log(`Server is running at http://${host}:${port}`); |
|
} |
|
bootstrap(); |
|
|