UNPKG

emnida

Version:

This library will using for the check to some type on the javascript.

746 lines (654 loc) 21.9 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.emnida = {})); }(this, (function (exports) { 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function n(r){return (n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(r)}var o=function(){try{return window}catch(n){return global}}();var p=function(){try{return window}catch(n){return global}}();function s(n){return "string"==typeof n}function h(n){return "number"==typeof n}function d(n){return "boolean"==typeof n}function b(n){return void 0===n}function m(n){return null===n}function g(r){return "symbol"===n(r)}function A(n){return "bigint"==typeof n}function w(n){return (null==n?void 0:n.constructor)===Object}function S(n){return "function"==typeof n}function j(n){return n instanceof RegExp}function M(n){return !!S(p.Map)&&n instanceof Map}function O(n){return !!S(p.Set)&&n instanceof Set}function k(n){return s(n)||h(n)||d(n)||b(n)||m(n)||g(n)||A(n)}function E(n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r))return !1;return !0}var N={__proto__:null,isString:s,isNumber:h,isBoolean:d,isUndefined:b,isNull:m,isSymbol:g,isBigInt:A,isPlainObject:w,isFunction:S,isArray:function(n){return Array.isArray(n)},isRegExp:j,isElement:function(n){return !(!S(p.HTMLElement)&&!w(p.HTMLElement))&&n instanceof HTMLElement},isDate:function(n){return n instanceof Date},isArrayLikeObject:function(n){return (null==n?void 0:n.length)>=0},isIterableObject:function(n){return !!S(p.Symbol)&&"function"==typeof(null==n?void 0:n[Symbol.iterator])},isMap:M,isSet:O,isWeakMap:function(n){return !!S(p.WeakMap)&&n instanceof WeakMap},isWeakSet:function(n){return !!S(p.WeakSet)&&n instanceof WeakSet},isPrimitive:k,isEmpty:E,isObject:function(r){return "object"===n(r)}};var B=N.isUndefined,P=N.isNull,_=N.isFunction;function C(n,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},e=_(n)?n:t;return B(r)||P(r)||(e=e.bind(r)),e}function H(){for(var n=this,r=arguments.length,t=new Array(r),e=0;e<r;e++)t[e]=arguments[e];if(Array.from)return Array.from.apply(Array,t);var o=Object.prototype.toString,i=function(n){return "function"==typeof n||"[object Function]"===o.call(n)},u=function(n){var r=Number(n);return isNaN(r)?0:0!==r&&isFinite(r)?(r>0?1:-1)*Math.floor(Math.abs(r)):r},a=Math.pow(2,53)-1,f=function(n){var r=u(n);return Math.min(Math.max(r,0),a)};return function(r){var e=n,o=Object(r);if(null==r)throw new TypeError("Array.from requires an array-like object - not null or undefined");var u,a=t.length>1?t[1]:void 0;if(void 0!==a){if(!i(a))throw new TypeError("Array.from: when provided, the second argument must be a function");t.length>2&&(u=t[2]);}for(var c,l=f(o.length),y=i(e)?Object(new e(l)):new Array(l),v=0;v<l;)c=o[v],y[v]=a?void 0===u?a(c,v):a.call(u,c,v):c,v+=1;return y.length=l,y}.apply(void 0,t)}var J=N.isArrayLikeObject,K=N.isIterableObject,Q=N.isMap,X=N.isSet,Y=N.isEmpty;function nn(n,r,t){var e=C(r,t,(function(n){return n})),o=C(r,t,(function(n,r){return {k:r,v:n}})),i=[];switch(!0){case J(n)||Q(n)||X(n)||K(n):switch(!0){case Q(n):return n.forEach((function(n,r){i.push(o(n,r));})),i;case X(n):return n.forEach((function(n,r){i.push(e(n,r));})),i;default:return H(n,r,t)}default:return Y(n)?i:Object.keys(n).reduce((function(r,t){return r.push(o(n[t],t)),r}),i)}} function getGlobalObject() { try { return window; } catch (e) { return global; } } function getSize(v) { switch (true) { case !isEmpty(v === null || v === void 0 ? void 0 : v.length): return v.length; default: { var _toArray; return ((_toArray = nn(v)) === null || _toArray === void 0 ? void 0 : _toArray.length) || 0; } } } function isEqualAtObject(v, vv) { var stacks = [{ preV: v, nextV: vv }]; var stack; var _loop = function _loop() { var _ref = stack || {}, preV = _ref.preV, nextV = _ref.nextV; switch (true) { case isPrimitive(preV) || isFunction(preV): { if (preV !== nextV) { return { v: false }; } break; } case isRegExp(preV): { if (preV.toString() !== nextV.toString()) { return { v: false }; } break; } case preV instanceof String || preV instanceof Number || preV instanceof Boolean: { if (preV.valueOf() !== nextV.valueOf()) { return { v: false }; } break; } default: { if (getSize(preV) !== getSize(nextV)) { return { v: false }; } var i = 0; nn(preV, function (vv, k) { var _nextV = nextV[k]; if (isMap(nextV)) { _nextV = nextV.get(k); } if (isSet(nextV)) { if (nextV.has(vv)) { _nextV = nn(nextV)[i]; } } stacks.push({ preV: vv, nextV: _nextV }); i++; }); break; } } }; while (stack = stacks.pop()) { var _ret = _loop(); if (_typeof(_ret) === "object") return _ret.v; } return true; } var globalObject = getGlobalObject(); /** * This function evaluates whether an arguments is string type * @param {*} value An any value * @returns {boolean} * @example * isString('test'); // true */ function isString(value) { return typeof value === 'string'; } /** * This function evaluates whether an arguments is number type * @param {*} value An any value * @returns {boolean} * @example * isNumber(1); // true */ function isNumber(value) { return typeof value === 'number'; } /** * This function evaluates whether an arguments is boolean type * @param {*} value An any value * @returns {boolean} * @example * isBoolean(true); // true */ function isBoolean(value) { return typeof value === 'boolean'; } /** * This function evaluates whether an arguments is undefined * @param {*} value An any value * @returns {boolean} * @example * isUndefined(undefined); // true */ function isUndefined(value) { return value === undefined; } /** * This function evaluates whether an arguments is defined * @param {*} value An any value * @returns {boolean} * @example * isDefined(undefined); // false */ function isDefined(value) { return !isUndefined(value); } /** * This function evaluates whether an arguments is null * @param {*} value An any value * @returns {boolean} * @example * isNull(null); // true */ function isNull(value) { return value === null; } /** * This function evaluates whether an arguments is symbol type * @param {*} value An any value * @returns {boolean} * @example * isSymbol(Symbol(1)); // true */ function isSymbol(value) { return _typeof(value) === 'symbol'; } /** * This function evaluates whether an arguments is bigint type * @param {*} value An any value * @returns {boolean} * @example * isBigInt(10n); // true */ function isBigInt(value) { return typeof value === 'bigint'; } /** * This function evaluates whether an arguments is function type * @param {*} value An any value * @returns {boolean} * @example * isFunction(function(){}); // true */ function isFunction(value) { return typeof value === 'function'; } /** * This function evaluates whether an arguments is object type * @param {*} value An any value * @returns {boolean} * @example * isObject(null); // true */ function isObject(value) { return _typeof(value) === 'object'; } /** * This function evaluates whether an arguments is object type not included null * @param {*} value An any value * @returns {boolean} * @example * isObject(null); // false */ function isObjectNotIncludeNull(value) { return isObject(value) && !isNull(value); } /** * This function evaluates whether an arguments is plain object * @param {*} value An any value * @returns {boolean} * @example * isPlainObject({}); // true */ function isPlainObject(value) { // I added value.length condition because an arguments has length property. return isUndefined(value === null || value === void 0 ? void 0 : value.length) && (value === null || value === void 0 ? void 0 : value.constructor) === Object; } /** * This function evaluates whether an arguments is array type * @param {*} value An any value * @returns {boolean} * @example * isArray([]); // true */ function isArray(value) { return Array.isArray(value); } /** * This function evaluates whether an arguments is regex * @param {*} value An any value * @returns {boolean} * @example * isRegExp(new RegExp('\s+')); // true */ function isRegExp(value) { return value instanceof RegExp; } /** * This function evaluates whether an arguments is element * @param {*} value An any value * @returns {boolean} * @example * isElement(document.documentElement); // true */ function isElement(value) { if (!(isFunction(globalObject.HTMLElement) || isPlainObject(globalObject.HTMLElement))) { return false; } return value instanceof HTMLElement; } /** * This function evaluates whether an arguments is date * @param {*} value An any value * @returns {boolean} * @example * isDate(new Date()); // true */ function isDate(value) { return value instanceof Date; } /** * This function evaluates whether an arguments is array like object * @param {*} value An any value * @returns {boolean} * @example * isArrayLikeObject([]); // true */ // https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from function isArrayLikeObject(value) { return (value === null || value === void 0 ? void 0 : value.length) > 0; } /** * This function evaluates whether an arguments is iterable object * @param {*} value An any value * @returns {boolean} * @example * isIterableObject([]); // true */ function isIterableObject(value) { if (!isFunction(globalObject.Symbol)) { return false; } return typeof (value === null || value === void 0 ? void 0 : value[Symbol.iterator]) === 'function'; } /** * This function evaluates whether an arguments is Map * @param {*} value An any value * @returns {boolean} * @example * isMap(new Map()); // true */ function isMap(value) { if (!isFunction(globalObject.Map)) { return false; } return value instanceof Map; } /** * This function evaluates whether an arguments is Set * @param {*} value An any value * @returns {boolean} * @example * isSet(new Set()); // true */ function isSet(value) { if (!isFunction(globalObject.Set)) { return false; } return value instanceof Set; } /** * This function evaluates whether an arguments is WeakMap * @param {*} value An any value * @returns {boolean} * @example * isWeakMap(new WeakMap()); // true */ function isWeakMap(value) { if (!isFunction(globalObject.WeakMap)) { return false; } return value instanceof WeakMap; } /** * This function evaluates whether an arguments is WeakSet * @param {*} value An any value * @returns {boolean} * @example * isWeakSet(new WeakSet()); // true */ function isWeakSet(value) { if (!isFunction(globalObject.WeakSet)) { return false; } return value instanceof WeakSet; } /** * This function evaluates whether an arguments is primitive type * @param {*} value An any value * @returns {boolean} * @example * isPrimitive('test'); // true */ function isPrimitive(value) { return isString(value) || isNumber(value) || isBoolean(value) || isUndefined(value) || isNull(value) || isSymbol(value) || isBigInt(value); } /** * This function evaluates whether an arguments is empty * @param {*} value An any value * @returns {boolean} * @example * isEmpty(1); // true */ function isEmpty(value) { for (var k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { return false; } } return true; } /** * This function evaluates whether an arguments is json plain object string * @param {*} value An any value * @returns {boolean} * @example * isJSONPlainObjectString('{ "x": 1 }'); // true */ function isJSONPlainObjectString(value) { try { return isPlainObject(JSON.parse(value)); } catch (e) { return false; } } /** * This function evaluates whether an arguments is json array string * @param {*} value An any value * @returns {boolean} * @example * isJSONArrayString('[1]'); // true */ function isJSONArrayString(value) { try { return isArray(JSON.parse(value)); } catch (e) { return false; } } /** * This function evaluates whether an arguments is json plain object string or json array string * @param {*} value An any value * @returns {boolean} * @example * isJSONObjectString('{ "x": 1 }'); // true */ function isJSONObjectString(value) { return isJSONPlainObjectString(value) || isJSONArrayString(value); } function _isInteger(v) { if (Number.isInteger) { return Number.isInteger(v); } return _isFinite(v) && Math.floor(v) === v; } function _isFinite(v) { if (Number.isFinite) { return Number.isFinite(v); } return isNumber(v) && isFinite(v); } function _isNaN(v) { if (Number.isNaN) { return Number.isNaN(v); } return v !== v; } function isNumberOrBigInt(value) { return isNumber(value) || isBigInt(value); } /** * This function evaluates whether an arguments is floating point number * @param {*} value An any value * @returns {boolean} * @example * isFloat(1.1); // true */ function isFloat(value) { if (isNumberOrBigInt(value)) { return parseFloat(value) % 1 !== 0; } return false; } /** * This function evaluates whether an arguments is finite number * @param {*} value An any value * @returns {boolean} * @example * isFinite(1); // true */ function isFinite$1(value) { return _isFinite(value); } /** * This function evaluates whether an arguments is infinite number * @param {*} value An any value * @returns {boolean} * @example * isInfinite(null); // true */ function isInfinite(value) { return !_isFinite(value); } /** * This function evaluates whether an arguments is not a number * @param {*} value An any value * @returns {boolean} * @example * isNaN(NaN); // true */ function isNaN$1(value) { return _isNaN(value); } /** * This function evaluates whether first argument is greater * @param {*} value An any value which will be compared * @param {*} comparisonValue An any value which will be compared * @returns {boolean} * @example * isGreater(10, 1); // true */ function isGreater(value, comparisonValue) { if (isNumberOrBigInt(value) && isNumberOrBigInt(comparisonValue)) { return value > comparisonValue; } return false; } /** * This function evaluates whether first argument is greater or equal * @param {*} value An any value which will be compared * @param {*} comparisonValue An any value which will be compared * @returns {boolean} * @example * isGreaterOrEqual(10, 10); // true */ function isGreaterOrEqual(value, comparisonValue) { if (isNumberOrBigInt(value) && isNumberOrBigInt(comparisonValue)) { return value >= comparisonValue; } return false; } /** * This function evaluates whether first argument is less * @param {*} value An any value which will be compared * @param {*} comparisonValue An any value which will be compared * @returns {boolean} * @example * isLess(1, 10); // true */ function isLess(value, comparisonValue) { if (isNumberOrBigInt(value) && isNumberOrBigInt(comparisonValue)) { return value < comparisonValue; } return false; } /** * This function evaluates whether first argument is less or equal * @param {*} value An any value which will be compared * @param {*} comparisonValue An any value which will be compared * @returns {boolean} * @example * isLessOrEqual(10, 10); // true */ function isLessOrEqual(value, comparisonValue) { if (isNumberOrBigInt(value) && isNumberOrBigInt(comparisonValue)) { return value <= comparisonValue; } return false; } /** * This function evaluates whether an arguments is zero * @param {*} value An any value * @returns {boolean} * @example * isZero(0); // true */ function isZero(value) { if (isNumberOrBigInt(value)) { return value === 0; } return false; } /** * This function evaluates whether an arguments is integer * @param {*} value An any value * @returns {boolean} * @example * isInteger(1); // true */ function isInteger(value) { return _isInteger(value); } /** * This function evaluates whether equal first argument and second argument * @param {*} value An any value which will be compared * @param {*} comparisonValue An any value which will be compared * @returns {boolean} * @example * isEqual(1, 1); // true */ function isEqual(value, comparisonValue) { switch (true) { case isPrimitive(value) || isFunction(value): { return value === comparisonValue; } case isRegExp(value): { return value.toString() === comparisonValue.toString(); } case value instanceof String || value instanceof Number || value instanceof Boolean: { return value.valueOf() === comparisonValue.valueOf(); } default: { return isEqualAtObject(value, comparisonValue); } } } /** * This function evaluates whether equal first function and second function casted as string * @param {Function} value A function which will be compared * @param {Function} comparisonValue A function which will be compared * @returns {boolean} * @example * isEqualAtStringFunction(function() {}, function() {}); // true */ function isEqualAtStringFunction(value, comparisonValue) { if (isFunction(value)) { return value.toString() === comparisonValue.toString(); } return false; } /** * This function evaluates whether equal first symbol and second symbol casted as string * @param {Symbol} value A symbol which will be compared * @param {Symbol} comparisonValue A symbol which will be compared * @returns {boolean} * @example * isEqualAtStringSymbol(Symbol(1), Symbol(1)); // true */ function isEqualAtStringSymbol(value, comparisonValue) { if (isSymbol(value)) { return value.toString() === comparisonValue.toString(); } return false; } exports.isArray = isArray; exports.isArrayLikeObject = isArrayLikeObject; exports.isBigInt = isBigInt; exports.isBoolean = isBoolean; exports.isDate = isDate; exports.isDefined = isDefined; exports.isElement = isElement; exports.isEmpty = isEmpty; exports.isEqual = isEqual; exports.isEqualAtStringFunction = isEqualAtStringFunction; exports.isEqualAtStringSymbol = isEqualAtStringSymbol; exports.isFinite = isFinite$1; exports.isFloat = isFloat; exports.isFunction = isFunction; exports.isGreater = isGreater; exports.isGreaterOrEqual = isGreaterOrEqual; exports.isInfinite = isInfinite; exports.isInteger = isInteger; exports.isIterableObject = isIterableObject; exports.isJSONArrayString = isJSONArrayString; exports.isJSONObjectString = isJSONObjectString; exports.isJSONPlainObjectString = isJSONPlainObjectString; exports.isLess = isLess; exports.isLessOrEqual = isLessOrEqual; exports.isMap = isMap; exports.isNaN = isNaN$1; exports.isNull = isNull; exports.isNumber = isNumber; exports.isObject = isObject; exports.isObjectNotIncludeNull = isObjectNotIncludeNull; exports.isPlainObject = isPlainObject; exports.isPrimitive = isPrimitive; exports.isRegExp = isRegExp; exports.isSet = isSet; exports.isString = isString; exports.isSymbol = isSymbol; exports.isUndefined = isUndefined; exports.isWeakMap = isWeakMap; exports.isWeakSet = isWeakSet; exports.isZero = isZero; Object.defineProperty(exports, '__esModule', { value: true }); })));