You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
744 B
23 lines
744 B
'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; |
|
};
|
|
|