'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const typeofs = [ 'string', 'number', 'bigint', 'symbol' ]; const objectTypeNames = [ 'Function', 'Generator', 'AsyncGenerator', 'GeneratorFunction', 'AsyncGeneratorFunction', 'AsyncFunction', 'Observable', 'Array', 'Buffer', 'Object', 'RegExp', 'Date', 'Error', 'Map', 'Set', 'WeakMap', 'WeakSet', 'ArrayBuffer', 'SharedArrayBuffer', 'DataView', 'Promise', 'URL', 'HTMLElement', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', 'Float64Array', 'BigInt64Array', 'BigUint64Array' ]; function is(value) { if (value === null) { return 'null'; } if (value === undefined) { return 'undefined'; } if (value === true || value === false) { return 'boolean'; } const typeOf = typeof value; if (typeofs.includes(typeOf)) { return typeOf; } if (typeOf === 'function') { return 'Function'; } if (Array.isArray(value)) { return 'Array'; } if (isBuffer(value)) { return 'Buffer'; } const objectType = getObjectType(value); if (objectType) { return objectType; } return 'Object'; } function isBuffer(value) { return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value); } function getObjectType(value) { const objectTypeName = Object.prototype.toString.call(value).slice(8, -1); if (objectTypeNames.includes(objectTypeName)) { return objectTypeName; } return undefined; } exports.is = is;