emnida
Version:
This library will using for the check to some type on the javascript.
746 lines (654 loc) • 21.9 kB
JavaScript
(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 });
})));