UNPKG

@mini2/core

Version:

Mini Express Framework - Lightweight and modular Express.js framework with TypeScript support

85 lines 3.72 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = __importDefault(require("express")); const cors_1 = __importDefault(require("cors")); const morgan_1 = __importDefault(require("morgan")); const rest_1 = require("./rest"); const inversify_1 = require("inversify"); const swagger_1 = require("./swagger"); const types_1 = require("./types"); const container_1 = __importDefault(require("./container")); const http_expection_1 = __importDefault(require("./expections/http.expection")); let App = class App { constructor(controllers) { this.controllers = controllers; this.app = (0, express_1.default)(); this.container = container_1.default; console.log(this.controllers); } async init(config) { this.app.use(express_1.default.json()); this.app.use(express_1.default.urlencoded({ extended: true })); this.app.use((0, cors_1.default)()); this.app.use((0, morgan_1.default)('dev')); this.app.listen(config.port, () => { console.log(`Server is running on port ${config.port}`); }); const swaggerIntegration = new swagger_1.SwaggerIntegration({ title: config.applicationName, description: `API documentation for ${config.applicationName}`, version: '1.0.0', servers: [ { url: `http://${config.host}:${config.port}`, description: 'Development server', }, ], docsPath: '/api-docs', jsonPath: '/api-docs.json', }); swaggerIntegration.generateSwaggerSpec(this.controllers); swaggerIntegration.setupSwagger(this.app); (0, rest_1.buildApp)(this.app, this.controllers); } getApp() { return this.app; } async afterInit(standartErrorHandler = true) { if (standartErrorHandler) { this.app.use((error, _req, res, _next) => { if (error instanceof http_expection_1.default) { res.status(error.code).json(error.messageJson); } else { console.error("Unexpected error:", error); res.status(500).json({ errorId: 1, message: "Some error happen", }); } }); } } }; App = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.multiInject)(types_1.MINI_TYPES.IController)), __metadata("design:paramtypes", [Array]) ], App); exports.default = App; //# sourceMappingURL=app.js.map