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