UNPKG

ow

Version:

Function argument validation for humans

55 lines (51 loc) 2.09 kB
import { Predicate } from './predicate.js'; export class ArrayBufferPredicate extends Predicate { typeName; /** @hidden */ constructor(type, options, validators) { super(type, options, validators); this.typeName = type; } /** Test an array buffer to have a specific byte length. @param byteLength - The byte length of the array buffer. */ byteLength(byteLength) { return this.addValidator({ message: (value, label) => `Expected ${label} to have byte length of \`${byteLength}\`, got \`${value.byteLength}\``, validator: value => value.byteLength === byteLength, }); } /** Test an array buffer to have a minimum byte length. @param byteLength - The minimum byte length of the array buffer. */ minByteLength(byteLength) { return this.addValidator({ message: (value, label) => `Expected ${label} to have a minimum byte length of \`${byteLength}\`, got \`${value.byteLength}\``, validator: value => value.byteLength >= byteLength, negatedMessage: (value, label) => `Expected ${label} to have a maximum byte length of \`${byteLength - 1}\`, got \`${value.byteLength}\``, }); } /** Test an array buffer to have a minimum byte length. @param length - The minimum byte length of the array buffer. */ maxByteLength(byteLength) { return this.addValidator({ message: (value, label) => `Expected ${label} to have a maximum byte length of \`${byteLength}\`, got \`${value.byteLength}\``, validator: value => value.byteLength <= byteLength, negatedMessage: (value, label) => `Expected ${label} to have a minimum byte length of \`${byteLength + 1}\`, got \`${value.byteLength}\``, }); } /** @hidden */ withValidators(validators) { // eslint-disable-next-line @typescript-eslint/naming-convention const Constructor = this.constructor; return new Constructor(this.typeName, this.options, validators); } }