UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.

128 lines (127 loc) 5.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "setupServer", { enumerable: true, get: function() { return setupServer; } }); const _express = /*#__PURE__*/ _interop_require_wildcard(require("express")); const _cookieparser = /*#__PURE__*/ _interop_require_default(require("cookie-parser")); const _passport = /*#__PURE__*/ _interop_require_default(require("passport")); const _cors = /*#__PURE__*/ _interop_require_default(require("cors")); const _helmet = /*#__PURE__*/ _interop_require_default(require("helmet")); const _awilixexpress = require("awilix-express"); const _container = require("./container"); const _database = require("./middleware/database"); const _globalmiddleware = require("./middleware/global.middleware"); const _passport1 = require("./middleware/passport"); const _serverconstants = require("./server.constants"); const _path = require("path"); const _fsutils = require("./utils/fs.utils"); const _envutils = require("./utils/env.utils"); const _promclient = require("prom-client"); const _logger = require("./handlers/logger"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const httpRequestsTotal = new _promclient.Counter({ name: "http_requests_total", help: "HTTP requests executed" }); async function setupServer() { const httpServer = (0, _express.default)(); const experimentalTypeormEnabled = (0, _envutils.getEnvOrDefault)(_serverconstants.AppConstants.ENABLE_EXPERIMENTAL_TYPEORM, _serverconstants.AppConstants.enableExperimentalTypeormDefault) === "true"; if (experimentalTypeormEnabled) { const dbFolder = process.env[_serverconstants.AppConstants.DATABASE_PATH] ?? "./database"; (0, _fsutils.ensureDirExists)((0, _path.join)((0, _fsutils.superRootPath)(), dbFolder)); } const container = (0, _container.configureContainer)(experimentalTypeormEnabled); (0, _passport1.initializePassportStrategies)(_passport.default, container); httpServer.use((req, res, next)=>{ const route = req.route?.path ?? req.path ?? "unknown"; if (route.includes("/api")) { const start = process.hrtime(); res.on("finish", ()=>{ httpRequestsTotal.inc(); const delta = process.hrtime(start); const duration = delta[0] + delta[1] / 1e9; const logger = new _logger.LoggerService("HttpRequest"); logger.newDebug({ message: `HTTP request ${req.method} ${req.originalUrl} ${res.statusCode}`, method: req.method, path: req.originalUrl, statusCode: res.statusCode, responseTimeMs: duration.toFixed(2), clientIp: req.ip, userAgent: req.get("User-Agent") }); }); } next(); }).use((0, _cors.default)({ origin: "*", methods: "GET,HEAD,PUT,PATCH,POST,DELETE" })).use((0, _helmet.default)({ contentSecurityPolicy: false })).use((0, _express.json)({ limit: "10mb" })).use((0, _cookieparser.default)()).use((0, _express.urlencoded)({ extended: false })).use(_passport.default.initialize()).use(_passport.default.authenticate([ "jwt", "anonymous" ], { session: false })).use((0, _awilixexpress.scopePerRequest)(container)).use(_database.interceptDatabaseError).use(_globalmiddleware.validateWizardCompleted).use(_globalmiddleware.interceptRoles); return { httpServer, container }; } //# sourceMappingURL=server.core.js.map