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