import express from 'express'; import http from 'http'; import cors from 'cors'; import helmet from 'helmet'; import basicAuth from 'express-basic-auth'; import { Server as SocketIOServer } from 'socket.io'; import { serverConfig } from './config/serverConfig'; import { pp, shim } from './utils'; import mock from './data/mock'; import { websocketSetup as initWebsockets } from './websockets/index'; import { initEndpoints } from './endpoints/index'; import { generateRandomClaimCode } from 'discreetly-claimcodes'; import { listEndpoints } from './endpoints/utils'; // TODO https://www.npmjs.com/package/winston const app = express(); shim(); app.use(express.json()); app.use( cors({ origin: '*' }) ); app.use(helmet()); app.disable('x-powered-by'); const admin_password = process.env.PASSWORD ? process.env.PASSWORD : // eslint-disable-next-line @typescript-eslint/no-unsafe-call (generateRandomClaimCode(4) as string); const adminAuth = basicAuth({ users: { admin: admin_password } }); function initAppListeners(PORT) { const httpServer = http.createServer(app).listen(PORT, () => { pp(`Server is running at port ${PORT}`); }); return app } /** * This is the main entry point for the server */ let _app if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') { console.log('~~~~DEVELOPMENT MODE~~~~'); console.log(serverConfig); const PORT = 3001; initEndpoints(app, adminAuth); _app = initAppListeners(PORT); initWebsockets(_app); listEndpoints(_app); mock(_app); // TODO! This is dangerous and only for development console.log('Admin password: ' + admin_password); } else { initEndpoints(app, adminAuth); _app = initAppListeners(process.env.PORT); initWebsockets(_app); } export default _app;