You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
4.9 KiB
209 lines
4.9 KiB
'use strict'; |
|
|
|
function getType(payload) { |
|
return Object.prototype.toString.call(payload).slice(8, -1); |
|
} |
|
|
|
function isAnyObject(payload) { |
|
return getType(payload) === "Object"; |
|
} |
|
|
|
function isArray(payload) { |
|
return getType(payload) === "Array"; |
|
} |
|
|
|
function isBlob(payload) { |
|
return getType(payload) === "Blob"; |
|
} |
|
|
|
function isBoolean(payload) { |
|
return getType(payload) === "Boolean"; |
|
} |
|
|
|
function isDate(payload) { |
|
return getType(payload) === "Date" && !isNaN(payload); |
|
} |
|
|
|
function isEmptyArray(payload) { |
|
return isArray(payload) && payload.length === 0; |
|
} |
|
|
|
function isPlainObject(payload) { |
|
if (getType(payload) !== "Object") |
|
return false; |
|
const prototype = Object.getPrototypeOf(payload); |
|
return !!prototype && prototype.constructor === Object && prototype === Object.prototype; |
|
} |
|
|
|
function isEmptyObject(payload) { |
|
return isPlainObject(payload) && Object.keys(payload).length === 0; |
|
} |
|
|
|
function isEmptyString(payload) { |
|
return payload === ""; |
|
} |
|
|
|
function isError(payload) { |
|
return getType(payload) === "Error" || payload instanceof Error; |
|
} |
|
|
|
function isFile(payload) { |
|
return getType(payload) === "File"; |
|
} |
|
|
|
function isFullArray(payload) { |
|
return isArray(payload) && payload.length > 0; |
|
} |
|
|
|
function isFullObject(payload) { |
|
return isPlainObject(payload) && Object.keys(payload).length > 0; |
|
} |
|
|
|
function isString(payload) { |
|
return getType(payload) === "String"; |
|
} |
|
|
|
function isFullString(payload) { |
|
return isString(payload) && payload !== ""; |
|
} |
|
|
|
function isFunction(payload) { |
|
return typeof payload === "function"; |
|
} |
|
|
|
function isType(payload, type) { |
|
if (!(type instanceof Function)) { |
|
throw new TypeError("Type must be a function"); |
|
} |
|
if (!Object.prototype.hasOwnProperty.call(type, "prototype")) { |
|
throw new TypeError("Type is not a class"); |
|
} |
|
const name = type.name; |
|
return getType(payload) === name || Boolean(payload && payload.constructor === type); |
|
} |
|
|
|
function isInstanceOf(value, classOrClassName) { |
|
if (typeof classOrClassName === "function") { |
|
for (let p = value; p; p = Object.getPrototypeOf(p)) { |
|
if (isType(p, classOrClassName)) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} else { |
|
for (let p = value; p; p = Object.getPrototypeOf(p)) { |
|
if (getType(p) === classOrClassName) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
} |
|
|
|
function isMap(payload) { |
|
return getType(payload) === "Map"; |
|
} |
|
|
|
function isNaNValue(payload) { |
|
return getType(payload) === "Number" && isNaN(payload); |
|
} |
|
|
|
function isNumber(payload) { |
|
return getType(payload) === "Number" && !isNaN(payload); |
|
} |
|
|
|
function isNegativeNumber(payload) { |
|
return isNumber(payload) && payload < 0; |
|
} |
|
|
|
function isNull(payload) { |
|
return getType(payload) === "Null"; |
|
} |
|
|
|
function isOneOf(a, b, c, d, e) { |
|
return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value); |
|
} |
|
|
|
function isUndefined(payload) { |
|
return getType(payload) === "Undefined"; |
|
} |
|
|
|
const isNullOrUndefined = isOneOf(isNull, isUndefined); |
|
|
|
function isObject(payload) { |
|
return isPlainObject(payload); |
|
} |
|
|
|
function isObjectLike(payload) { |
|
return isAnyObject(payload); |
|
} |
|
|
|
function isPositiveNumber(payload) { |
|
return isNumber(payload) && payload > 0; |
|
} |
|
|
|
function isSymbol(payload) { |
|
return getType(payload) === "Symbol"; |
|
} |
|
|
|
function isPrimitive(payload) { |
|
return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload); |
|
} |
|
|
|
function isPromise(payload) { |
|
return getType(payload) === "Promise"; |
|
} |
|
|
|
function isRegExp(payload) { |
|
return getType(payload) === "RegExp"; |
|
} |
|
|
|
function isSet(payload) { |
|
return getType(payload) === "Set"; |
|
} |
|
|
|
function isWeakMap(payload) { |
|
return getType(payload) === "WeakMap"; |
|
} |
|
|
|
function isWeakSet(payload) { |
|
return getType(payload) === "WeakSet"; |
|
} |
|
|
|
exports.getType = getType; |
|
exports.isAnyObject = isAnyObject; |
|
exports.isArray = isArray; |
|
exports.isBlob = isBlob; |
|
exports.isBoolean = isBoolean; |
|
exports.isDate = isDate; |
|
exports.isEmptyArray = isEmptyArray; |
|
exports.isEmptyObject = isEmptyObject; |
|
exports.isEmptyString = isEmptyString; |
|
exports.isError = isError; |
|
exports.isFile = isFile; |
|
exports.isFullArray = isFullArray; |
|
exports.isFullObject = isFullObject; |
|
exports.isFullString = isFullString; |
|
exports.isFunction = isFunction; |
|
exports.isInstanceOf = isInstanceOf; |
|
exports.isMap = isMap; |
|
exports.isNaNValue = isNaNValue; |
|
exports.isNegativeNumber = isNegativeNumber; |
|
exports.isNull = isNull; |
|
exports.isNullOrUndefined = isNullOrUndefined; |
|
exports.isNumber = isNumber; |
|
exports.isObject = isObject; |
|
exports.isObjectLike = isObjectLike; |
|
exports.isOneOf = isOneOf; |
|
exports.isPlainObject = isPlainObject; |
|
exports.isPositiveNumber = isPositiveNumber; |
|
exports.isPrimitive = isPrimitive; |
|
exports.isPromise = isPromise; |
|
exports.isRegExp = isRegExp; |
|
exports.isSet = isSet; |
|
exports.isString = isString; |
|
exports.isSymbol = isSymbol; |
|
exports.isType = isType; |
|
exports.isUndefined = isUndefined; |
|
exports.isWeakMap = isWeakMap; |
|
exports.isWeakSet = isWeakSet;
|
|
|