wtf-is-this
Version:
Type checker for JS
121 lines (110 loc) • 3.66 kB
JavaScript
function _typeof(obj) {
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);
}
/*
globals
Symbol
*/
var isString = function isString(i) {
return typeof i === "string" || i instanceof String;
};
var isArray = function isArray(i) {
return Array.isArray(i);
};
var isObject = function isObject(i) {
if (i === null || isArray(i)) {
return false;
}
return typeof i === "function" || _typeof(i) === "object";
};
var isDate = function isDate(value) {
var getDay = Date.prototype.getDay;
var tryDateObject = function tryDateGetDayCall(value) {
try {
getDay.call(value);
return true;
} catch (e) {
return false;
}
};
var toStr = Object.prototype.toString;
var dateClass = "[object Date]";
var hasToStringTag = typeof Symbol === "function" && _typeof(Symbol.toStringTag) === "symbol";
if (_typeof(value) !== "object" || value === null) {
return false;
}
return hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;
};
var isFunction = function isFunction(i) {
return i && {}.toString.call(i) === "[object Function]";
};
var isFloat = function isFloat(n) {
return Number(n) === n && n % 1 !== 0;
};
var isInteger = function isInteger(n) {
return Number(n) === n && n % 1 === 0;
};
var isNumber = function isNumber(n) {
return isFloat(n) || isInteger(n);
};
var isEmpty = function isEmpty(value) {
if (value === null) return true;
if (value === undefined) return true;
if (isObject(value) && !Object.keys(value).length) return true;
if (!value.length) return true;
};
var isRegExp = function isRegExp(input) {
return Object.prototype.toString.call(input) === "[object RegExp]";
};
var isBoolean = function isBoolean(input) {
return input === true || input === false;
};
var isISO8601 = function isISO8601(input) {
var re = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/;
return re.test(input);
};
var isNull = function isNull(i) {
return i == null || i == undefined;
};
var isColor = function isColor(input) {
if (isString(input)) {
var re = /#(?:[a-f\d]{3}){1,2}\b|rgb\((?:(?:\s*0*(?:25[0-5]|2[0-4]\d|1?\d?\d)\s*,){2}\s*0*(?:25[0-5]|2[0-4]\d|1?\d?\d)|\s*0*(?:100(?:\.0+)?|\d?\d(?:\.\d+)?)%(?:\s*,\s*0*(?:100(?:\.0+)?|\d?\d(?:\.\d+)?)%){2})\s*\)|hsl\(\s*0*(?:360|3[0-5]\d|[12]?\d?\d)\s*(?:,\s*0*(?:100(?:\.0+)?|\d?\d(?:\.\d+)?)%\s*){2}\)|(?:rgba\((?:(?:\s*0*(?:25[0-5]|2[0-4]\d|1?\d?\d)\s*,){3}|(?:\s*0*(?:100(?:\.0+)?|\d?\d(?:\.\d+)?)%\s*,){3})|hsla\(\s*0*(?:360|3[0-5]\d|[12]?\d?\d)\s*(?:,\s*0*(?:100(?:\.0+)?|\d?\d(?:\.\d+)?)%\s*){2},)\s*0*(?:1(?:\.0+)?|0(?:\.\d+)?)\s*\)/gi;
var results = input.match(re);
if (results) {
if (results.length == 1) {
if (results[0] == input) {
return true;
}
}
}
}
return false;
};
var index = {
string: isString,
object: isObject,
date: isDate,
fn: isFunction,
array: isArray,
float: isFloat,
integer: isInteger,
number: isNumber,
regexp: isRegExp,
boolean: isBoolean,
empty: isEmpty,
ISO8601: isISO8601,
color: isColor,
null: isNull
};
export default index;
export { isArray, isBoolean, isColor, isDate, isEmpty, isFloat, isFunction, isISO8601, isInteger, isNull, isNumber, isObject, isRegExp, isString };
//# sourceMappingURL=index.es.js.map