; | |
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; | |