lin-mizar
Version:
The core library of Lin CMS
114 lines (113 loc) • 5.05 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinRouter = exports.routeMetaInfo = void 0;
const tslib_1 = require("tslib");
const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
const utils_1 = require("../utils");
const lodash_1 = require("lodash");
exports.routeMetaInfo = new Map();
/**
* lin-router继承自koa-router
* 即可使用全部的koa-router api
* 也可使用以 lin 为前缀的方法,用于视图函数的权限
*/
class LinRouter extends koa_router_1.default {
constructor(linRouterOptions) {
super(linRouterOptions);
// 如果存在 permission,默认挂载之
this.mountPermission = true;
if (linRouterOptions) {
if (linRouterOptions.module) {
this.module = linRouterOptions.module;
}
if (lodash_1.isBoolean(linRouterOptions.mountPermission)) {
this.mountPermission = linRouterOptions.mountPermission;
}
}
}
permission(permission, mount) {
return {
permission,
module: this.module,
mount: lodash_1.isBoolean(mount) ? mount : this.mountPermission
};
}
linOption(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'OPTION ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.options(name, path, meta, ...middleware);
}
return this.options(name, path, ...middleware);
}
linHead(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'HEAD ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.head(name, path, meta, ...middleware);
}
return this.head(name, path, ...middleware);
}
linGet(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'GET ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.get(name, path, meta, ...middleware);
}
return this.get(name, path, ...middleware);
}
linPut(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'PUT ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.put(name, path, meta, ...middleware);
}
return this.put(name, path, ...middleware);
}
linPatch(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'PATCH ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.patch(name, path, meta, ...middleware);
}
return this.patch(name, path, ...middleware);
}
linPost(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'POST ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.post(name, path, meta, ...middleware);
}
return this.post(name, path, ...middleware);
}
linDelete(name, path, meta, ...middleware) {
if (meta && meta.mount) {
utils_1.assert(!!(meta.permission && meta.module), 'permission and module must not be empty, if you want to mount');
const endpoint = 'DELETE ' + name;
exports.routeMetaInfo.set(endpoint, { permission: meta.permission, module: meta.module });
}
if (utils_1.isFunction(meta)) {
return this.delete(name, path, meta, ...middleware);
}
return this.delete(name, path, ...middleware);
}
}
exports.LinRouter = LinRouter;