import { performance } from 'node:perf_hooks' /** Returns the milliseconds elapsed since January 1, 1970 00:00:00 UTC. */ export const __date_now = Date.now /** Returns the function bound to the given object. */ export const __function_bind = Function.bind.bind(Function.call as unknown as any) as any>(callback: TFunc, thisArg: unknown, ...args: TArgs) => TFunc /** Returns the function called with the specified values. */ export const __function_call = Function.call.bind(Function.call as unknown as any) as any>(callback: TFunc, thisArg: unknown, ...args: TArgs[]) => ReturnType /** Returns an object with the specified prototype. */ export const __object_create = Object.create as { (value: T): any extends T ? Record : T } /** Returns whether an object has a property with the specified name. */ export const __object_hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty) as { (object: T1, key: T2): T2 extends keyof T1 ? true : false } /** Returns a string representation of an object. */ export const __object_toString = Function.call.bind(Object.prototype.toString) as { (value: any): string } /** Returns whether the object prototype exists in another object. */ export const __object_isPrototypeOf = Function.call.bind(Object.prototype.isPrototypeOf) as { (p: T1, v: T2): T2 extends T1 ? true : false } /** Current high resolution millisecond timestamp. */ export const __performance_now = performance.now as () => number /** Returns the string escaped for use inside regular expressions. */ export const __string_escapeRegExp = (value: string) => value.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&') // @ts-ignore export const INTERNALS = new WeakMap() export const internalsOf = (target: T | object, className: string, propName: string): T => { const internals: T = INTERNALS.get(target) if (!internals) throw new TypeError(`${className}.${propName} can only be used on instances of ${className}`) return internals } export const allowStringTag = (value: any) => value.prototype[Symbol.toStringTag] = value.name /** Returns any kind of path as a posix path. */ export const pathToPosix = (pathname: any) => String( pathname == null ? '' : pathname ).replace( // convert slashes /\\+/g, '/' ).replace( // prefix a slash to drive letters /^(?=[A-Za-z]:\/)/, '/' ).replace( // encode path characters /%/g, '%25' ).replace( /\n/g, '%0A' ).replace( /\r/g, '%0D' ).replace( /\t/g, '%09' )