nhb-toolbox
Version:
A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.
61 lines (60 loc) • 1.68 kB
JavaScript
import { isString } from './primitives.js';
export function isArray(value) {
return Array.isArray(value);
}
export function isValidArray(value) {
return Array.isArray(value) && value?.length > 0;
}
export function isObject(value) {
return value !== null && typeof value === 'object' && !isArray(value);
}
export function isNotEmptyObject(value) {
return isObject(value) && Object.keys(value)?.length > 0;
}
export function isObjectWithKeys(value, keys) {
return isObject(value) && keys?.every((key) => key in value);
}
export function isEmptyObject(value) {
return isObject(value) && Object.keys(value)?.length === 0;
}
export function isFunction(value) {
return typeof value === 'function';
}
export const isMethodDescriptor = (descriptor) => {
return !!descriptor && typeof descriptor?.value === 'function';
};
export function isDate(value) {
return value instanceof Date;
}
export function isArrayOfType(value, typeCheck) {
return isArray(value) && value?.every(typeCheck);
}
export function isPromise(value) {
return isObject(value) && isFunction(value.then);
}
export function isSet(value) {
return value instanceof Set;
}
export function isMap(value) {
return value instanceof Map;
}
export function isRegExp(value) {
return value instanceof RegExp;
}
export function isError(value) {
return value instanceof Error;
}
export function isJSON(value) {
if (!isString(value))
return false;
try {
JSON.parse(value);
return true;
}
catch {
return false;
}
}
export function isReturningPromise(fn) {
return isFunction(fn) && fn.constructor?.name === 'AsyncFunction';
}