fei.wang
10 天以前 ae7b22322555448d95fd56f505bafa325c167a26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'use strict';
 
var define = require('define-data-property');
var hasDescriptors = require('has-property-descriptors')();
var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();
 
var $TypeError = require('es-errors/type');
 
/** @type {import('.')} */
module.exports = function setFunctionName(fn, name) {
    if (typeof fn !== 'function') {
        throw new $TypeError('`fn` is not a function');
    }
    var loose = arguments.length > 2 && !!arguments[2];
    if (!loose || functionsHaveConfigurableNames) {
        if (hasDescriptors) {
            define(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);
        } else {
            define(/** @type {Parameters<define>[0]} */ (fn), 'name', name);
        }
    }
    return fn;
};