UNPKG

@trifrost/core

Version:

Blazingly fast, runtime-agnostic server framework for modern edge and node environments

72 lines (71 loc) 2.34 kB
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; }