fei.wang
9 天以前 ae7b22322555448d95fd56f505bafa325c167a26
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
'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
    );