YM
2025-08-07 e5c64590b336221f132ed28ae4ae6dca3e03055c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'use strict';
 
var reflectGetProto = require('./Reflect.getPrototypeOf');
var originalGetProto = require('./Object.getPrototypeOf');
 
var getDunderProto = require('dunder-proto/get');
 
/** @type {import('.')} */
module.exports = reflectGetProto
    ? function getProto(O) {
        // @ts-expect-error TS can't narrow inside a closure, for some reason
        return reflectGetProto(O);
    }
    : originalGetProto
        ? function getProto(O) {
            if (!O || (typeof O !== 'object' && typeof O !== 'function')) {
                throw new TypeError('getProto: not an object');
            }
            // @ts-expect-error TS can't narrow inside a closure, for some reason
            return originalGetProto(O);
        }
        : getDunderProto
            ? function getProto(O) {
                // @ts-expect-error TS can't narrow inside a closure, for some reason
                return getDunderProto(O);
            }
            : null;