blob: d5df1bf2d5358318fe475f4877c18f0506b6aad9 [file] [log] [blame] [edit]
'use strict';
var reflectSetProto = require('./Reflect.setPrototypeOf');
var originalSetProto = require('./Object.setPrototypeOf');
var setDunderProto = require('dunder-proto/set');
var $TypeError = require('es-errors/type');
/** @type {import('.')} */
module.exports = reflectSetProto
? function setProto(O, proto) {
// @ts-expect-error TS can't narrow inside a closure, for some reason
if (reflectSetProto(O, proto)) {
return O;
}
throw new $TypeError('Reflect.setPrototypeOf: failed to set [[Prototype]]');
}
: originalSetProto || (
setDunderProto ? function setProto(O, proto) {
// @ts-expect-error TS can't narrow inside a closure, for some reason
setDunderProto(O, proto);
return O;
} : null
);