UNPKG

is-it-type

Version:
174 lines (149 loc) 4.7 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var getGlobalThis = require('globalthis'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var getGlobalThis__default = /*#__PURE__*/_interopDefaultLegacy(getGlobalThis); /* -------------------- * is-it-type module * Entry point * ------------------*/ /* * Replication of core-util-is methods. * https://www.npmjs.com/package/core-util-is * NB `isBuffer()` is omitted and `isObject()` is different from `core-util-is`'s implementation */ var isArray = Array.isArray; function isBoolean(arg) { return isType('boolean', arg); } function isNull(arg) { return arg === null; } function isUndefined(arg) { return arg === void 0; // eslint-disable-line no-void } function isNullOrUndefined(arg) { return arg == null; } function isNumber(arg) { return isType('number', arg); } function isString(arg) { return isType('string', arg); } function isSymbol(arg) { return isType('symbol', arg); } function isRegExp(arg) { return arg instanceof RegExp; } function isDate(arg) { return arg instanceof Date; } function isError(arg) { return arg instanceof Error; } function isFunction(arg) { return isType('function', arg); } function isPrimitive(arg) { var type = getType(arg); return arg == null || type === 'boolean' || type === 'number' || type === 'string' || type === 'symbol'; } /* * Additional methods */ // Strings function isEmptyString(arg) { return arg === ''; } function isFullString(arg) { return isString(arg) && !isEmptyString(arg); } // Objects var getPrototypeOf = Object.getPrototypeOf, ObjectPrototype = Object.prototype, globalThis = getGlobalThis__default["default"](); function isObject(arg) { if (!isType('object', arg) || isNull(arg)) return false; var proto = getPrototypeOf(arg); if (proto === null || proto === ObjectPrototype) return true; while (true) { // eslint-disable-line no-constant-condition var nextProto = getPrototypeOf(proto); if (nextProto === null) return true; if (nextProto === ObjectPrototype) break; proto = nextProto; } return isNotNativeProto(proto); } function isNotNativeProto(proto) { var nativeProtos = []; for (var _i = 0, _arr = ['Function', 'Array', 'Number', 'Boolean', 'String', 'Symbol', 'Date', 'Promise', 'RegExp', 'Error', 'ArrayBuffer', 'DataView', 'Map', 'BigInt', 'Set', 'WeakMap', 'WeakSet', 'SharedArrayBuffer', 'FinalizationRegistry', 'WeakRef', 'URL', 'URLSearchParams', 'TextEncoder', 'TextDecoder']; _i < _arr.length; _i++) { var ctorName = _arr[_i]; var ctor = globalThis[ctorName]; if (ctor) nativeProtos.push(ctor.prototype); } if (typeof Uint8Array === 'function') nativeProtos.push(getPrototypeOf(Uint8Array.prototype)); if (typeof Set === 'function') { nativeProtos = new Set(nativeProtos); isNotNativeProto = function isNotNativeProto(p) { return !nativeProtos.has(p); }; // eslint-disable-line no-func-assign } else { isNotNativeProto = function isNotNativeProto(p) { return !nativeProtos.includes(p); }; // eslint-disable-line no-func-assign } return isNotNativeProto(proto); } function isEmptyObject(arg) { return isObject(arg) && Object.keys(arg).length === 0; } // Numbers function isInteger(arg) { return Number.isInteger(arg); } function isPositiveInteger(arg) { return isInteger(arg) && arg > 0; } function isPositiveIntegerOrZero(arg) { return isInteger(arg) && arg >= 0; } function isNegativeInteger(arg) { return isInteger(arg) && arg < 0; } function isNegativeIntegerOrZero(arg) { return isInteger(arg) && arg <= 0; } // Other function isType(type, arg) { return getType(arg) === type; } /* * Helpers */ function getType(arg) { return typeof arg; } exports.isArray = isArray; exports.isBoolean = isBoolean; exports.isDate = isDate; exports.isEmptyObject = isEmptyObject; exports.isEmptyString = isEmptyString; exports.isError = isError; exports.isFullString = isFullString; exports.isFunction = isFunction; exports.isInteger = isInteger; exports.isNegativeInteger = isNegativeInteger; exports.isNegativeIntegerOrZero = isNegativeIntegerOrZero; exports.isNull = isNull; exports.isNullOrUndefined = isNullOrUndefined; exports.isNumber = isNumber; exports.isObject = isObject; exports.isPositiveInteger = isPositiveInteger; exports.isPositiveIntegerOrZero = isPositiveIntegerOrZero; exports.isPrimitive = isPrimitive; exports.isRegExp = isRegExp; exports.isString = isString; exports.isSymbol = isSymbol; exports.isType = isType; exports.isUndefined = isUndefined; //# sourceMappingURL=is-it-type.js.map