require('dotenv/config'); /* eslint-disable */ import SanarMS from 'sanar-ms'; import winston from 'winston'; import express from 'express'; import { HealthController } from './controllers/health.controller'; import { SentryWinston } from './utils/winston-sentry'; import { router } from './routes'; import morgan = require('morgan'); import helmet = require('helmet'); import cookieParser = require('cookie-parser'); import cors = require('cors'); /* eslint-enable */ const ms = new SanarMS({ name: 'growth-sample-api', database: { enabled: false }, health: () => HealthController.getInstance().check(), logger: { transports: [ new SentryWinston({ level: 'warn', dsn: process.env.SENTRY_DSN }), new winston.transports.Console({ level: 'silly' }), ], }, envs: [ { name: 'SANARLINK_URL', type: 'string', required: true }, { name: 'RESMED_URL', type: 'string', required: true }, { name: 'NODE_ENV', type: 'string', required: true }, { name: 'HOST', type: 'string', required: true }, { name: 'PORT', type: 'string', required: false }, { name: 'JWT_SECRET', type: 'string', required: true }, { name: 'SENTRY_DSN', type: 'string', required: false }, { name: 'SANAR_ECOMMERCE_API_URL', type: 'string', required: true }, { name: 'SANAR_ECOMMERCE_API_KEY', type: 'string', required: true }, { name: 'SUBSCRIPTIONS_URL', type: 'string', required: true }, { name: 'WALLETS_URL', type: 'string', required: true }, ], }); ms.app.use(morgan('combined')); ms.app.use(helmet()); ms.app.use(express.json()); ms.app.use(express.urlencoded({ extended: false })); ms.app.use(cookieParser()); ms.app.use(cors()); ms.app.use('/', router); // Prevent jest + supertest leaks if (!module.parent) { ms.listen(); } export { ms };