ECMAScript spec abstract operations.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Shared utilities and record type validators that support the main abstract operations throughout the es-abstract library.
Core type detection utilities used throughout abstract operations.
/**
* Determines if a value is an Array
* @param argument - Value to test
* @returns true if argument is an Array
*/
function IsArray(argument: any): boolean;
/**
* Determines if a value is an object (non-null object)
* @param argument - Value to test
* @returns true if argument is an object
*/
function isObject(argument: any): boolean;
/**
* Determines if a value is a primitive
* @param argument - Value to test
* @returns true if argument is a primitive value
*/
function isPrimitive(argument: any): boolean;
/**
* Determines if a value is a valid property key
* @param argument - Value to test
* @returns true if argument can be used as property key
*/
function isPropertyKey(argument: any): boolean;
/**
* Determines if a number is finite
* @param number - Number to test
* @returns true if number is finite
*/
function isFinite(number: number): boolean;
/**
* Determines if a value is NaN
* @param number - Value to test
* @returns true if value is NaN
*/
function isNaN(number: any): boolean;
/**
* Determines if a number is an integer
* @param number - Number to test
* @returns true if number is an integer
*/
function isInteger(number: number): boolean;
/**
* Determines if a value is negative zero
* @param number - Number to test
* @returns true if number is -0
*/
function isNegativeZero(number: number): boolean;
/**
* Determines if a value is a byte value (0-255)
* @param number - Number to test
* @returns true if number is a valid byte value
*/
function isByteValue(number: number): boolean;
/**
* Determines if a value is a valid code point
* @param number - Number to test
* @returns true if number is a valid Unicode code point
*/
function isCodePoint(number: number): boolean;Usage Examples:
const IsArray = require('es-abstract/helpers/IsArray');
const isObject = require('es-abstract/helpers/isObject');
const isPrimitive = require('es-abstract/helpers/isPrimitive');
// Type checking
console.log(IsArray([1, 2, 3])); // true
console.log(isObject({})); // true
console.log(isPrimitive('hello')); // true
console.log(isPrimitive({})); // falseMathematical helper functions supporting numeric operations.
/**
* Returns the sign of a number
* @param number - Number to get sign of
* @returns -1, 0, or 1 indicating sign
*/
function sign(number: number): number;
/**
* Performs modulo operation
* @param x - Dividend
* @param y - Divisor
* @returns x modulo y
*/
function mod(x: number, y: number): number;
/**
* Performs BigInt modulo operation
* @param x - BigInt dividend
* @param y - BigInt divisor
* @returns x modulo y as BigInt
*/
function modBigInt(x: bigint, y: bigint): bigint;
/**
* Maximum safe integer value
* @returns Maximum safe integer (2^53 - 1)
*/
function maxSafeInteger(): number;
/**
* Maximum finite number value
* @returns Maximum finite number value
*/
function maxValue(): number;String processing and character manipulation utilities.
/**
* Determines if a character is a leading surrogate
* @param charCode - Character code to test
* @returns true if character is leading surrogate
*/
function isLeadingSurrogate(charCode: number): boolean;
/**
* Determines if a character is a trailing surrogate
* @param charCode - Character code to test
* @returns true if character is trailing surrogate
*/
function isTrailingSurrogate(charCode: number): boolean;
/**
* Determines if a character is a line terminator
* @param charCode - Character code to test
* @returns true if character is line terminator
*/
function isLineTerminator(charCode: number): boolean;
/**
* Pads a time component with leading zeros
* @param component - Time component number
* @param length - Desired string length
* @returns Zero-padded string
*/
function padTimeComponent(component: number, length: number): string;
/**
* Extracts substring from a string
* @param string - Source string
* @param start - Start index
* @param end - End index
* @returns Substring
*/
function substring(string: string, start: number, end: number): string;Array processing helper functions.
/**
* Tests if all array elements satisfy a predicate
* @param array - Array to test
* @param predicate - Test function
* @returns true if all elements satisfy predicate
*/
function every(array: any[], predicate: Function): boolean;
/**
* Executes a function for each array element
* @param array - Array to iterate
* @param callback - Function to execute
* @returns undefined
*/
function forEach(array: any[], callback: Function): undefined;
/**
* Tests if some array elements satisfy a predicate
* @param array - Array to test
* @param predicate - Test function
* @returns true if some elements satisfy predicate
*/
function some(array: any[], predicate: Function): boolean;
/**
* Reduces array to single value
* @param array - Array to reduce
* @param callback - Reducer function
* @param initialValue - Initial accumulator value
* @returns Reduced value
*/
function reduce(array: any[], callback: Function, initialValue?: any): any;Property descriptor and prototype manipulation utilities.
/**
* Gets own property descriptor
* @param object - Object to get descriptor from
* @param property - Property key
* @returns Property descriptor or undefined
*/
function getOwnPropertyDescriptor(object: any, property: PropertyKey): PropertyDescriptor | undefined;
/**
* Converts property descriptor to object form
* @param descriptor - Property descriptor to convert
* @returns Object representation of descriptor
*/
function fromPropertyDescriptor(descriptor: PropertyDescriptor): object | undefined;
/**
* Gets object's prototype
* @param object - Object to get prototype of
* @returns Prototype object or null
*/
function getProto(object: any): any;
/**
* Sets object's prototype
* @param object - Object to set prototype of
* @param proto - New prototype value
* @returns true if successful
*/
function setProto(object: any, proto: any): boolean;Function binding and calling utilities.
/**
* Creates bound function with call-bind
* @param fn - Function to bind
* @param thisArg - This value for binding
* @returns Bound function
*/
function callBind(fn: Function, thisArg?: any): Function;
/**
* Creates bound function with call-bound
* @param name - Method name to bind
* @returns Bound method function
*/
function callBound(name: string): Function;Binary representation and numeric conversion utilities.
/**
* Converts integer to binary string
* @param number - Integer to convert
* @param bitLength - Desired bit length
* @returns Binary string representation
*/
function intToBinaryString(number: number, bitLength: number): string;
/**
* Converts fraction to binary string
* @param fraction - Fraction to convert
* @param precision - Binary precision
* @returns Binary fraction string
*/
function fractionToBinaryString(fraction: number, precision: number): string;
/**
* Converts integer to N-byte representation
* @param value - Integer value
* @param n - Number of bytes
* @param signed - Whether integer is signed
* @param littleEndian - Byte ordering
* @returns Byte array
*/
function integerToNBytes(value: number, n: number, signed: boolean, littleEndian: boolean): number[];
/**
* Converts bytes to float16 value
* @param bytes - Byte array
* @param littleEndian - Byte ordering
* @returns Float16 value
*/
function bytesAsFloat16(bytes: number[], littleEndian: boolean): number;
/**
* Converts bytes to float32 value
* @param bytes - Byte array
* @param littleEndian - Byte ordering
* @returns Float32 value
*/
function bytesAsFloat32(bytes: number[], littleEndian: boolean): number;
/**
* Converts bytes to float64 value
* @param bytes - Byte array
* @param littleEndian - Byte ordering
* @returns Float64 value
*/
function bytesAsFloat64(bytes: number[], littleEndian: boolean): number;Iterator and symbol-related helper functions.
/**
* Gets iterator method from an object
* @param obj - Object to get iterator method from
* @returns Iterator method function or undefined
*/
function getIteratorMethod(obj: any): Function | undefined;
/**
* Gets symbol description
* @param symbol - Symbol to get description of
* @returns Symbol description string
*/
function getSymbolDescription(symbol: symbol): string | undefined;
/**
* Gets inferred name from a function
* @param fn - Function to get name from
* @returns Function name or empty string
*/
function getInferredName(fn: Function): string;Validators for ECMAScript specification record types.
/**
* Validates property descriptor record
* @param desc - Potential property descriptor
* @returns true if valid property descriptor
*/
function isPropertyDescriptor(desc: any): boolean;
/**
* Validates iterator record
* @param record - Potential iterator record
* @returns true if valid iterator record
*/
function isIteratorRecord(record: any): boolean;
/**
* Validates match record
* @param record - Potential match record
* @returns true if valid match record
*/
function isMatchRecord(record: any): boolean;
/**
* Validates promise capability record
* @param record - Potential promise capability record
* @returns true if valid promise capability record
*/
function isPromiseCapabilityRecord(record: any): boolean;
/**
* Validates async generator request record
* @param record - Potential async generator request record
* @returns true if valid async generator request record
*/
function isAsyncGeneratorRequestRecord(record: any): boolean;
/**
* Validates RegExp record
* @param record - Potential RegExp record
* @returns true if valid RegExp record
*/
function isRegExpRecord(record: any): boolean;
/**
* Validates set record
* @param record - Potential set record
* @returns true if valid set record
*/
function isSetRecord(record: any): boolean;
/**
* Asserts that a value is a specific record type
* @param Type - Record type name
* @param value - Value to validate
* @param name - Parameter name for error messages
* @returns The validated value
*/
function assertRecord(Type: string, value: any, name: string): any;Utilities for working with typed arrays and buffers.
/**
* Map of typed array constructor names to constructors
* @returns Object mapping names to typed array constructors
*/
function typedArrayConstructors(): object;
/**
* Gets default system endianness
* @returns 'little' or 'big' indicating system endianness
*/
function defaultEndianness(): string;
/**
* Converts bytes to integer value
* @param bytes - Byte array
* @param signed - Whether integer is signed
* @param littleEndian - Byte ordering
* @returns Integer value
*/
function bytesAsInteger(bytes: number[], signed: boolean, littleEndian: boolean): number;Regular expression testing and processing utilities.
/**
* Creates regex tester function
* @param regex - Regular expression to test with
* @returns Function that tests strings against regex
*/
function regexTester(regex: RegExp): Function;Time calculation and formatting utilities.
/**
* Time-related constants
* @returns Object with time constants (msPerSecond, etc.)
*/
function timeConstants(): object;
/**
* Gets time value from a Date
* @param date - Date object
* @returns Time value in milliseconds
*/
function timeValue(date: Date): number;// Import helper utilities
const IsArray = require('es-abstract/helpers/IsArray');
const isObject = require('es-abstract/helpers/isObject');
const assertRecord = require('es-abstract/helpers/assertRecord');
// Import record validators
const isPropertyDescriptor = require('es-abstract/helpers/records/property-descriptor');
const isIteratorRecord = require('es-abstract/helpers/records/iterator-record');Install with Tessl CLI
npx tessl i tessl/npm-es-abstract