@eggjs/controller-decorator
Version:
tegg controller decorator
46 lines • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HTTPPriorityUtil = void 0;
const path_to_regexp_1 = require("path-to-regexp");
class HTTPPriorityUtil {
/**
* | Path | RegExp index | priority |
* | --- | --- | --- |
* | /* | [0] | 0 |
* | /hello/:name | [1] | 1000 |
* | /hello/world/message/:message | [3] | 3000 |
* | /hello/:name/message/:message | [1, 3] | 4000 |
* | /hello/world | [] | 100000/Infinity? |
*
* priority = hasRegExp
* : regexpIndex.reduce((p,c) => p + c * 1000, 0)
* : 100000;
* @param {string} path -
*/
static calcPathPriority(path) {
const tokens = (0, path_to_regexp_1.parse)(path);
let priority = 0;
let hasRegExp = false;
let index = 0;
let token;
while ((token = tokens.shift())) {
if (typeof token === 'string') {
// /view/users/*
// token is [ '/view/users', '*' ]
index += (token.split('/').length - 1);
}
else {
hasRegExp = true;
priority += index++ * this.TOKEN_PRIORITY;
}
}
if (!hasRegExp) {
return this.DEFAULT_PRIORITY;
}
return priority;
}
}
exports.HTTPPriorityUtil = HTTPPriorityUtil;
HTTPPriorityUtil.DEFAULT_PRIORITY = 100000;
HTTPPriorityUtil.TOKEN_PRIORITY = 1000;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRUUFByaW9yaXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0hUVFBQcmlvcml0eVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXVDO0FBRXZDLE1BQWEsZ0JBQWdCO0lBSTNCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBWTtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssQ0FBQztRQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixnQkFBZ0I7Z0JBQ2hCLGtDQUFrQztnQkFDbEMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLFFBQVEsSUFBSSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O0FBdENILDRDQXVDQztBQXRDaUIsaUNBQWdCLEdBQUcsTUFBTSxDQUFDO0FBQ2xCLCtCQUFjLEdBQUcsSUFBSSxDQUFDIn0=