UNPKG

@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
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); }