@jsenv/plugin-transpilation
Version:
20 lines (18 loc) • 589 B
JavaScript
/* @minVersion 7.23.6 */
// https://tc39.es/ecma262/#sec-setfunctionname
export default function setFunctionName(fn, name, prefix) {
if (typeof name === "symbol") {
// Here `undefined` is possible, we check for it in the next line.
name = name.description;
name = name ? "[" + name + "]" : "";
}
// In some older browsers .name was non-configurable, here we catch any
// errors thrown by defineProperty.
try {
Object.defineProperty(fn, "name", {
configurable: true,
value: prefix ? prefix + " " + name : name,
});
} catch (_) {}
return fn;
}