@trifrost/core
Version:
Blazingly fast, runtime-agnostic server framework for modern edge and node environments
80 lines (79 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidHandler = isValidHandler;
exports.isValidGrouper = isValidGrouper;
exports.isValidMiddleware = isValidMiddleware;
exports.isValidLimit = isValidLimit;
exports.isValidBodyParser = isValidBodyParser;
exports.normalizeMiddleware = normalizeMiddleware;
const number_1 = require("@valkyriestudios/utils/number");
const constants_1 = require("../types/constants");
/**
* Validates whether or not a provided value is a valid handler or handler config
* @param {TriFrostRouteHandler} val - Value to check
*/
function isValidHandler(val) {
if (typeof val === 'function')
return true;
if (typeof val?.fn !== 'function')
return false;
if ('timeout' in val &&
!(0, number_1.isIntGt)(val.timeout, 0) &&
val.timeout !== null)
return false;
return true;
}
/**
* Validates whether or not a provided value is a valid grouper or grouper config
* @param {TriFrostRouteHandler} val - Value to check
*/
function isValidGrouper(val) {
if (typeof val === 'function')
return true;
if (typeof val?.fn !== 'function')
return false;
if ('timeout' in val &&
!(0, number_1.isIntGt)(val.timeout, 0) &&
val.timeout !== null)
return false;
return true;
}
/**
* Validates whether or not a provided value is a valid handler or handler config
* @param {TriFrostRouteHandler} val - Value to check
*/
function isValidMiddleware(val) {
return typeof val === 'function';
}
/**
* Validates whether or not a provided value is a valid handler or handler config
* @param {number|TriFrostRateLimitLimitFunction} val - Value to check
*/
function isValidLimit(val) {
return (0, number_1.isIntGt)(val, 0) || typeof val === 'function';
}
/**
* Validates whether or not a provided value is a valid bodyparser config
*
* @param {TriFrostBodyParserOptions|null} val - Value to verify
*/
function isValidBodyParser(val) {
return val === null || Object.prototype.toString.call(val) === '[object Object]';
}
/**
* Normalizes middleware for internal usage
* @param {TriFrostMiddleware[]} val - Value to normalize
*/
function normalizeMiddleware(val) {
const acc = [];
for (let i = 0; i < val.length; i++) {
const el = val[i];
acc.push({
name: Reflect.get(el, constants_1.Sym_TriFrostName) || 'anonymous_mware',
description: Reflect.get(el, constants_1.Sym_TriFrostDescription) || null,
fingerprint: Reflect.get(el, constants_1.Sym_TriFrostFingerPrint) || null,
handler: el,
});
}
return acc;
}