index.js 733 B

12345678910111213141516171819202122232425
  1. 'use strict';
  2. var reflectSetProto = require('./Reflect.setPrototypeOf');
  3. var originalSetProto = require('./Object.setPrototypeOf');
  4. var setDunderProto = require('dunder-proto/set');
  5. var $TypeError = require('es-errors/type');
  6. /** @type {import('.')} */
  7. module.exports = reflectSetProto
  8. ? function setProto(O, proto) {
  9. // @ts-expect-error TS can't narrow inside a closure, for some reason
  10. if (reflectSetProto(O, proto)) {
  11. return O;
  12. }
  13. throw new $TypeError('Reflect.setPrototypeOf: failed to set [[Prototype]]');
  14. }
  15. : originalSetProto || (
  16. setDunderProto ? function setProto(O, proto) {
  17. // @ts-expect-error TS can't narrow inside a closure, for some reason
  18. setDunderProto(O, proto);
  19. return O;
  20. } : null
  21. );