UNPKG

@bestcodetools/api-node-base

Version:

BestCodeTools Node Base for Backend API

84 lines 2.76 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const assert_1 = __importDefault(require("assert")); const externals_1 = require("../../../externals"); class HttpApp { constructor(options = {}) { this.internalListeningPort = null; this.listening = false; this.options = { ...options }; this.app = (0, externals_1.express)(); const jsonOptions = { limit: '50mb', ...this.options.json, }; const rawOptions = { limit: '50mb', ...this.options.raw, }; const urlencodedOptions = { limit: '256kb', extended: true, ...this.options.urlencoded, }; const textOptions = { limit: '50mb', ...this.options.text, }; this.app.use(externals_1.express.json(jsonOptions)); this.app.use(externals_1.express.raw(rawOptions)); this.app.use(externals_1.express.urlencoded(urlencodedOptions)); this.app.use(externals_1.express.text(textOptions)); } isListening() { return this.listening; } get listeningPort() { return this.internalListeningPort; } get rawApp() { return this.app; } get rawServer() { return this.server; } start() { return new Promise((resolve, reject) => { try { if (this.server) throw new Error('server.already.started'); const onListenCallback = () => { const addressInfo = this.server.address(); this.internalListeningPort = addressInfo.port; resolve(addressInfo); }; this.server = this.options.port ? this.app.listen(this.options.port, onListenCallback) : this.app.listen(onListenCallback); this.server.on('close', () => { this.listening = false; Object.assign(this, { server: null }); }); } catch (error) { reject(error); } }).then(() => { this.listening = true; }); } async stop() { if (!this.server) { throw new Error('server.not.started'); } const result = await new Promise((resolve) => { this.server.close((error) => { return resolve(error); }); }); (0, assert_1.default)(!result, result); } } exports.default = HttpApp; //# sourceMappingURL=index.js.map