@js-data-tools/js-helpers
Version:
A set of JavaScript / TypeScript helper functions for parsing, converting, transforming and formatting data.
89 lines (88 loc) • 2.45 kB
JavaScript
export function alwaysTrue(input) {
return true;
}
export function isUndefined(input) {
return input === undefined;
}
export function isNullOrUndefined(input) {
return input === undefined || input === null;
}
export function notNullOrUndefined(input) {
return input !== undefined && input !== null;
}
export function isEmptyArray(input) {
return !input || (Array.isArray(input) && !input.length);
}
export function isNonEmptyArray(input) {
return Array.isArray(input) && input.length > 0;
}
export function isEmptySet(input) {
return !input || !input.size;
}
export function isNonEmptySet(input) {
return !!input && input.size > 0;
}
export function isEmptyMap(input) {
return !input || !input.size;
}
export function isNonEmptyMap(input) {
return !!input && input.size > 0;
}
export function isEmptyObject(input) {
return !input || !Object.keys(input).length;
}
export function isNonEmptyObject(input) {
return !!input && Object.keys(input).length > 0;
}
export function isEmptyValue(value) {
if (value === null || value === undefined) {
return true;
}
switch (typeof value) {
case "string":
return !value;
case "object":
if (Array.isArray(value)) {
return !value.length;
}
return !Object.keys(value).length;
}
return false;
}
export function isDefaultValue(value) {
if (value === null || value === undefined) {
return true;
}
switch (typeof value) {
case "object":
if (Array.isArray(value)) {
return !value.length;
}
return !Object.keys(value).length;
default:
return !value;
}
}
export function and(...predicates) {
const conditions = predicates?.filter(notNullOrUndefined);
if (!conditions || conditions.length === 0) {
return alwaysTrue;
}
if (conditions.length === 1) {
return conditions[0];
}
return (input) => conditions.every((test) => test(input));
}
export function or(...predicates) {
const conditions = predicates?.filter(notNullOrUndefined);
if (!conditions || conditions.length === 0) {
return alwaysTrue;
}
if (conditions.length === 1) {
return conditions[0];
}
return (input) => conditions.some((test) => test(input));
}
export function not(predicate) {
return (input) => !predicate(input);
}