UNPKG

lin-mizar

Version:
114 lines (113 loc) 5.05 kB
"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;