private static isConstructedBuiltInObject()

in Clients/AmbrosiaJS/Ambrosia-Node/src/Meta.ts [1292:1368]


    private static isConstructedBuiltInObject(obj: any): boolean
    {
        // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
        // Aside: An alternative, but MUCH slower approach, is this:
        //        const isBuiltInObject: boolean = /\{\s+\[native code\]/.test(Function.prototype.toString.call(obj.constructor))
        const isBuiltInObject: boolean = 
            // Fundamental objects
         // (obj instanceof Object) || // Omitted so that user-defined objects (eg. class instances) don't get reported as being built-in objects
            (obj instanceof Function) ||
            (obj instanceof Boolean) ||
            (obj instanceof Symbol) ||
            
            // Error objects
            (obj instanceof Error) ||
         // (obj instanceof AggregateError) || // No TypeScript definition for this [in TS 4.1.2]
            (obj instanceof EvalError) ||
         // (obj instanceof InternalError) || // No TypeScript definition for this [in TS 4.1.2]
            (obj instanceof RangeError) ||
            (obj instanceof ReferenceError) ||
            (obj instanceof SyntaxError) ||
            (obj instanceof TypeError) ||
            (obj instanceof URIError) ||
            
            // Numbers and dates
            (obj instanceof Number) ||
            (obj instanceof BigInt) ||
            (obj instanceof Date) ||

            // Text processing
            (obj instanceof String) ||
            (obj instanceof RegExp) ||

            // Indexed collections
            (obj instanceof Array) ||
            (obj instanceof Int8Array) ||
            (obj instanceof Uint8Array) ||
            (obj instanceof Uint8ClampedArray) ||
            (obj instanceof Int16Array) ||
            (obj instanceof Uint16Array) ||
            (obj instanceof Int32Array) ||
            (obj instanceof Uint32Array) ||
            (obj instanceof Float32Array) ||
            (obj instanceof Float64Array) ||
            (obj instanceof BigInt64Array) ||
            (obj instanceof BigUint64Array) ||

            // Keyed collections
            (obj instanceof Map) ||
            (obj instanceof Set) ||
            (obj instanceof WeakMap) ||
            (obj instanceof WeakSet) ||

            // Structured data
            (obj instanceof ArrayBuffer) ||
            (obj instanceof SharedArrayBuffer) ||
            (obj instanceof DataView) ||

            // Control abstraction objects
            (obj instanceof Promise) ||

            // Internationalization
            (obj instanceof Intl.Collator) ||
            (obj instanceof Intl.DateTimeFormat) ||
            (obj instanceof Intl.NumberFormat) ||
            (obj instanceof Intl.PluralRules) ||

            // WebAssembly
            (obj instanceof WebAssembly.Module) ||
            (obj instanceof WebAssembly.Instance) ||
            (obj instanceof WebAssembly.Memory) ||
            (obj instanceof WebAssembly.Table) ||
            (obj instanceof WebAssembly.CompileError) ||
            (obj instanceof WebAssembly.LinkError) ||
            (obj instanceof WebAssembly.RuntimeError);

        return (isBuiltInObject);
    }