| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /*!
- Copyright 2013 Lovell Fuller and others.
- SPDX-License-Identifier: Apache-2.0
- */
- /**
- * Is this value defined and not null?
- * @private
- */
- const defined = (val) => typeof val !== 'undefined' && val !== null;
- /**
- * Is this value an object?
- * @private
- */
- const object = (val) => typeof val === 'object';
- /**
- * Is this value a plain object?
- * @private
- */
- const plainObject = (val) => Object.prototype.toString.call(val) === '[object Object]';
- /**
- * Is this value a function?
- * @private
- */
- const fn = (val) => typeof val === 'function';
- /**
- * Is this value a boolean?
- * @private
- */
- const bool = (val) => typeof val === 'boolean';
- /**
- * Is this value a Buffer object?
- * @private
- */
- const buffer = (val) => val instanceof Buffer;
- /**
- * Is this value a typed array object?. E.g. Uint8Array or Uint8ClampedArray?
- * @private
- */
- const typedArray = (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;
- };
- /**
- * Is this value an ArrayBuffer object?
- * @private
- */
- const arrayBuffer = (val) => val instanceof ArrayBuffer;
- /**
- * Is this value a non-empty string?
- * @private
- */
- const string = (val) => typeof val === 'string' && val.length > 0;
- /**
- * Is this value a real number?
- * @private
- */
- const number = (val) => typeof val === 'number' && !Number.isNaN(val);
- /**
- * Is this value an integer?
- * @private
- */
- const integer = (val) => Number.isInteger(val);
- /**
- * Is this value within an inclusive given range?
- * @private
- */
- const inRange = (val, min, max) => val >= min && val <= max;
- /**
- * Is this value within the elements of an array?
- * @private
- */
- const inArray = (val, list) => list.includes(val);
- /**
- * Create an Error with a message relating to an invalid parameter.
- *
- * @param {string} name - parameter name.
- * @param {string} expected - description of the type/value/range expected.
- * @param {*} actual - the value received.
- * @returns {Error} Containing the formatted message.
- * @private
- */
- const invalidParameterError = (name, expected, actual) => new Error(
- `Expected ${expected} for ${name} but received ${actual} of type ${typeof actual}`
- );
- /**
- * Ensures an Error from C++ contains a JS stack.
- *
- * @param {Error} native - Error with message from C++.
- * @param {Error} context - Error with stack from JS.
- * @returns {Error} Error with message and stack.
- * @private
- */
- const nativeError = (native, context) => {
- context.message = native.message;
- return context;
- };
- module.exports = {
- defined,
- object,
- plainObject,
- fn,
- bool,
- buffer,
- typedArray,
- arrayBuffer,
- string,
- number,
- integer,
- inRange,
- inArray,
- invalidParameterError,
- nativeError
- };
|