UNPKG

@technobuddha/library

Version:
50 lines 2.56 kB
import { isFunction } from "./is-function.js"; import { isNumber } from "./is-number.js"; import { isObject } from "./is-object.js"; // eslint-disable-next-line no-secrets/no-secrets /** * Checks if a value is a valid array-like length. * * A valid length is a non-negative integer less than Number.MAX_SAFE_INTEGER. * Used internally to validate the 'length' property of array-like objects. * @param value - The value to check. * @returns True if the value is a valid array-like length, otherwise false. * @example * ```typescript * isLength(3); // true * isLength(-1); // false * isLength(3.5); // false * isLength(Number.MAX_SAFE_INTEGER + 1); // false * ``` * @internal */ function isLength(value) { return isNumber(value) && value > -1 && value % 1 === 0 && value < Number.MAX_SAFE_INTEGER; } /** * Determines whether the provided value is array-like. * * A value is considered array-like if it is not null or undefined, is object-like, * is not a function, has a 'length' property, and the length is a valid array length. * @param value - The value to check. * @returns True if the value is array-like, otherwise false. * @group Object * @category Type Guards * @example * ```typescript * isArrayLike([1, 2, 3]); // true * isArrayLike('hello'); // true * isArrayLike({ length: 2 }); // true * isArrayLike({}); // false * isArrayLike(() => {}); // false * isArrayLike(null); // false * ``` */ export function isArrayLike(value) { return (value != null && isObject(value) && !isFunction(value) && 'length' in value && isLength(Object.length)); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXJyYXktbGlrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pcy1hcnJheS1saWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLGlEQUFpRDtBQUNqRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0FBQzdGLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFjO0lBQ3hDLE9BQU8sQ0FDTCxLQUFLLElBQUksSUFBSTtRQUNiLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDZixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDbEIsUUFBUSxJQUFJLEtBQUs7UUFDakIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FDeEIsQ0FBQztBQUNKLENBQUMifQ==