mongorai
Version:
Light MongoDB client for the web. Minimalistic UI used React with minimum dependencies.
65 lines (64 loc) • 2.34 kB
JavaScript
;
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)();
})();
}