UNPKG

jet-validators

Version:

Fast, zero-dependency TypeScript validators and utilities for runtime checks, parsing, and lightweight object schema validation.

41 lines (40 loc) 1.34 kB
import { markSafe } from '../utils/parseObject/mark-safe.js'; export function isValidArray(arg, minLength, maxLength) { return isValidArrayCore(arg, false, false, minLength, maxLength); } export function isOptionalValidArray(arg, minLength, maxLength) { return isValidArrayCore(arg, true, false, minLength, maxLength); } export function isNullableValidArray(arg, minLength, maxLength) { return isValidArrayCore(arg, false, true, minLength, maxLength); } export function isNullishValidArray(arg, minLength, maxLength) { return isValidArrayCore(arg, true, true, minLength, maxLength); } function isValidArrayCore(arr, optional, nullable, minLength = 0, maxLength) { const lookup = new Set(arr); const validator = (arg) => { if (arg === undefined) { return !!optional; } if (arg === null) { return !!nullable; } if (!Array.isArray(arg)) { return false; } if (arg.length < minLength) { return false; } if (maxLength !== undefined && arg.length > maxLength) { return false; } for (let i = 0; i < arg.length; i++) { if (!lookup.has(arg[i])) { return false; } } return true; }; return markSafe(validator); }