| 1234567891011121314151617181920212223 | 
							- '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;
 
- };
 
 
  |