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