'use strict';
const defined = function (val) {
return typeof val !== 'undefined' && val !== null;
};
const object = function (val) {
return typeof val === 'object';
};
const plainObject = function (val) {
return Object.prototype.toString.call(val) === '[object Object]';
};
const fn = function (val) {
return typeof val === 'function';
};
const bool = function (val) {
return typeof val === 'boolean';
};
const buffer = function (val) {
return val instanceof Buffer;
};
const typedArray = function (val) {
if (defined(val)) {
switch (val.constructor) {
case Uint8Array:
case Uint8ClampedArray:
case Int8Array:
case Uint16Array:
case Int16Array:
case Uint32Array:
case Int32Array:
case Float32Array:
case Float64Array:
return true;
}
}
return false;
};
const arrayBuffer = function (val) {
return val instanceof ArrayBuffer;
};
const string = function (val) {
return typeof val === 'string' && val.length > 0;
};
const number = function (val) {
return typeof val === 'number' && !Number.isNaN(val);
};
const integer = function (val) {
return Number.isInteger(val);
};
const inRange = function (val, min, max) {
return val >= min && val <= max;
};
const inArray = function (val, list) {
return list.includes(val);
};
const invalidParameterError = function (name, expected, actual) {
return new Error(
`Expected ${expected} for ${name} but received ${actual} of type ${typeof actual}`
);
};
module.exports = {
defined: defined,
object: object,
plainObject: plainObject,
fn: fn,
bool: bool,
buffer: buffer,
typedArray: typedArray,
arrayBuffer: arrayBuffer,
string: string,
number: number,
integer: integer,
inRange: inRange,
inArray: inArray,
invalidParameterError: invalidParameterError
};