UNPKG

mongoose-restapi-ui

Version:

Rest api library for your mongoose apps, with react ui: mongoose-restapi-ui-component react library

75 lines 3.36 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var express_1 = require("express"); var model_1 = require("./definitions/model"); var permissionSchema_1 = require("./models/permissionSchema"); var model_2 = require("./controllers/model"); var roleSchema_1 = require("./models/roleSchema"); function ApiRouter(options) { if (options === void 0) { options = { isMongo4: false }; } var isMongo4 = options.isMongo4, routerOptions = __rest(options, ["isMongo4"]); var models = {}; var router = express_1.Router(routerOptions); var permissionModel = null; var roleModel = null; var globalRoute = ''; router.roleModel = function () { return roleModel; }; router.setGlobalRoute = function (path) { if (!path.startsWith('/')) console.error('Please, provide a valid path (must be start with slash "/")'); globalRoute = path.endsWith('/') ? path.slice(0, -1) : path; }; router.setConnection = function (connection) { permissionModel = connection.model(model_1.PERMISSION_MODEL, permissionSchema_1.default); roleModel = connection.model(model_1.ROLE_MODEL, roleSchema_1.default); }; router.setModel = function (route, model, serveOptions) { var _a = model_2.default(router, route, model, models, permissionModel, roleModel, serveOptions, isMongo4), infoModel = _a.infoModel, emitter = _a.emitter; infoModel.route = "" + globalRoute + route; models[infoModel.name] = { infoModel: infoModel, emitter: emitter }; return emitter; }; router.setRoleEndpoints = function (route) { if (route === void 0) { route = '/roles'; } return model_2.setRoleEndpoints(router, route, roleModel); }; router.publishUiTree = function () { return function (req, response) { var map = []; var target = Object.keys(models).length; Object.keys(models).forEach(function (key) { models[key].emitter.getMaxPermission(req, function (err, perm) { if (err) return response.status(500).send(err.message); map.push(__assign({}, models[key].infoModel, { perm: perm })); if (map.length === target) { response.send(map); } }); }); }; }; return router; } exports.ApiRouter = ApiRouter; //# sourceMappingURL=router.js.map