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
JavaScript
;
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