@technobuddha/library
Version:
A large library of useful functions
50 lines • 2.56 kB
JavaScript
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==