UNPKG

mongorai

Version:

Light MongoDB client for the web. Minimalistic UI used React with minimum dependencies.

65 lines (64 loc) 2.34 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.start = void 0; const express_1 = __importDefault(require("express")); const cors_1 = __importDefault(require("cors")); const path_1 = __importDefault(require("path")); const node_util_1 = require("node:util"); const index_js_1 = require("./lib/index.js"); const index_js_2 = require("./routes/index.js"); const index_js_3 = require("./middlewares/index.js"); const cyanColor = '\x1b[36m'; const resetColor = '\x1b[0m'; const server = (0, express_1.default)(); const errHandler = (err, _, res, next) => { if (res.headersSent) return next(err); const status = err?.status || 500; const message = (err instanceof Error) ? err.message : 'Unknown error'; if (status === 500) { console.error('Unhandled error:', (0, node_util_1.inspect)(err, { depth: null, colors: true })); } else { console.warn(`Got a ${status} error on serverside. ${message}`, (0, node_util_1.inspect)(err, { depth: 2, colors: true })); } res.status(status).json({ ok: false, message: status === 500 ? 'Internal server error. Please contact support.' : message, errorId: Date.now() }); }; const setupServer = () => { const SERVER_PORT = process.env.MONGORAI_SERVER_PORT || 3100; server.use((0, cors_1.default)()); server.use(index_js_3.basicAuth); server.use('/api', index_js_2.api); server.use('/', express_1.default.static(path_1.default.resolve(__dirname, 'front/'))); server.get('/*splat', (_, res) => { res.sendFile(path_1.default.resolve(__dirname, 'front/index.html')); }); server.use(errHandler); server.listen(SERVER_PORT, () => console.log(`${cyanColor}[Mongorai]${resetColor} listening on port ${SERVER_PORT}`)); }; const start = async () => { console.log(`${cyanColor}[Mongorai]${resetColor} Starting...`); try { await index_js_1.Init.load(); setupServer(); } catch (err) { console.error(err); process.exit(1); } }; exports.start = start; if (require.main === module) { (async () => { await (0, exports.start)(); })(); }