UNPKG

gypsum

Version:

Simple and easy lightweight typescript server side framework on Node.js.

58 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const express = require("express"); const cors = require("cors"); const object_1 = require("tools-box/object"); const types_1 = require("../../types"); const logger_1 = require("../../misc/logger"); const context_1 = require("../../context"); function pushApis(expressApp, app) { const logger = new logger_1.Logger(app.name); const router = express.Router(); let appModels = app.publicModels; if (appModels) { for (let i = 0; i < appModels.length; i++) { let model = appModels[i]; logger.info(`Implementing ${model.name} model services`); if (model.$get('apiType') === types_1.API_TYPES.SOCKET) continue; let corsOptions = {}; let appCors = app.$get('cors'); object_1.extend(corsOptions, appCors); let modelCors = model.$get('cors'); if (modelCors) object_1.extend(corsOptions, modelCors); let services = model.$getServices(); for (let service in services) { if (services[service].apiType === types_1.API_TYPES.SOCKET) continue; let serviceCors = services[service].cors; if (serviceCors) object_1.extend(corsOptions, serviceCors); logger.info(`adding service for ${app.name} app: (${services[service].method}) - ${services[service].path}`); router.options(services[service].path, cors(corsOptions), (req, res) => res.status(204).end()); router[services[service].method](services[service].path, (req, res, next) => { logger.info(`service request: (${req.method}) ${req.hostname}${req.path}`); next(); }, cors(corsOptions), context_1.Context.Rest(app.name, model, services[service])); } } } expressApp.use(router); expressApp.use((err, req, res, next) => { logger.error(err); console.trace(err); if (err) { res.status(types_1.RESPONSE_CODES.UNKNOWN_ERROR).json(new types_1.Response({ data: new types_1.ResponseError({ message: 'unkown error', original: err, code: types_1.RESPONSE_CODES.UNKNOWN_ERROR }) })); } else { res.status(types_1.RESPONSE_CODES.NOT_FOUND).json(new types_1.Response({ data: new types_1.ResponseError({ message: '404 not found!', original: err, code: types_1.RESPONSE_CODES.NOT_FOUND }) })); } }); } exports.pushApis = pushApis; //# sourceMappingURL=push_apis.js.map