@tdb/util
Version:
Shared helpers and utilities.
99 lines (98 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var libs_1 = require("./libs");
var value_array_1 = require("./value.array");
function isPlainObject(value) {
if (libs_1.R.is(Object, value) === false) {
return false;
}
var ctr = value.constructor;
if (typeof ctr !== 'function') {
return false;
}
var prot = ctr.prototype;
if (libs_1.R.is(Object, prot) === false) {
return false;
}
if (prot.hasOwnProperty('isPrototypeOf') === false) {
return false;
}
return true;
}
exports.isPlainObject = isPlainObject;
function isBoolString(value) {
var asString = (value || '')
.toString()
.trim()
.toLowerCase();
return asString === 'true' || asString === 'false';
}
exports.isBoolString = isBoolString;
function isBlank(value) {
if (value === null || value === undefined) {
return true;
}
if (libs_1.R.is(Array, value) && value_array_1.compact(value).length === 0) {
return true;
}
if (libs_1.R.is(String, value) && value.trim() === '') {
return true;
}
return false;
}
exports.isBlank = isBlank;
function isNumeric(value) {
if (isBlank(value)) {
return false;
}
var num = parseFloat(value);
if (num === undefined) {
return false;
}
if (num.toString().length !== value.toString().length) {
return false;
}
return !Number.isNaN(num);
}
exports.isNumeric = isNumeric;
function isLetter(value) {
return (isAlpha(value) && libs_1.R.is(String, value) && value.length === 1);
}
exports.isLetter = isLetter;
function isAlpha(value) {
if (isBlank(value) || !libs_1.R.is(String, value)) {
return false;
}
var text = value;
if (text.length === 0) {
return false;
}
return Boolean(text.match(/^[a-zA-Z]+$/g));
}
exports.isAlpha = isAlpha;
function hasWhitespace(text) {
return Boolean(text.match(/\s/g));
}
exports.hasWhitespace = hasWhitespace;
function isPromise(value) {
return libs_1.R.is(Object, value) && libs_1.R.is(Function, value.then);
}
exports.isPromise = isPromise;
function isJson(value) {
if (!libs_1.R.is(String, value)) {
return false;
}
var text = value.trim();
return libs_1.R.startsWith('{', text) || libs_1.R.startsWith('[', text);
}
exports.isJson = isJson;
function isIsoDate(value) {
return value ? isoDateRegEx.test(value) : false;
}
exports.isIsoDate = isIsoDate;
var isoDateRegEx = new RegExp(/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/);
function isEmail(value) {
return value ? emailRegEx.test(value) : false;
}
exports.isEmail = isEmail;
var emailRegEx = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);