datum-merge
Version:
Simplified diff and merging for deeply nested objects
70 lines (69 loc) • 1.9 kB
JavaScript
export function isString(value) {
return typeof value === 'string';
}
export function isNumber(value) {
return typeof value === 'number';
}
export function isBoolean(value) {
return typeof value === 'boolean';
}
export function isPrimitive(value) {
return ['string', 'number', 'boolean'].includes(typeof value);
}
export function isNullish(value) {
return value === undefined || value === null;
}
export function emptyString(str) {
return (str == null)
|| (str === '')
|| (/^\s*$/.test(str));
}
export function integerString(str) {
return ((str != null)
&& (str !== '')
&& Number.isSafeInteger(Number(str.toString())));
}
export function isObject(value) {
return typeof value === 'object'
&& !Array.isArray(value)
&& value !== null;
}
export function emptyObject(obj) {
return (obj === undefined)
|| (obj === null)
|| (!Object.keys(obj).length);
}
export function isArrayOfAny(value) {
return Array.isArray(value);
}
export function emptyArray(arr) {
return Array.isArray(arr) && !(arr === null || arr === void 0 ? void 0 : arr.length);
}
export function isArrayOf(arr, typeCheck) {
return Array.isArray(arr)
&& arr.length > 0
&& arr.every(typeCheck);
}
export function isArrayOfSame(arr) {
return Array.isArray(arr)
&& new Set(arr.map((e) => typeof e)).size === 1
? typeof arr[0] : false;
}
export function emptyValue(value) {
return (value === undefined)
|| (value === null)
|| (Array.isArray(value) && !value.length)
|| (typeof value === "object" && !Object.keys(value).length);
}
export function typeOfValue(value) {
const type = typeof value;
if (type !== 'object') {
return type;
}
else if (Array.isArray(value)) {
return 'array';
}
else {
return 'object';
}
}