/
iliyagladkov
/
to-do-react
Обзор
Документация
Войти
/
iliyagladkov
/
to-do-react
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
node_modules/function.prototype.name/implementation.js
43 строки
1 KB
Iliya
Final
18 фев 2023, 15:04
18 фев 2023, 15:04
fae6815
Код
Авторство
О чём код?
'use strict'; var IsCallable = require('es-abstract/2021/IsCallable'); var functionsHaveNames = require('functions-have-names')(); var callBound = require('call-bind/callBound'); var $functionToString = callBound('Function.prototype.toString'); var $stringMatch = callBound('String.prototype.match'); var classRegex = /^class /; var isClass = function isClassConstructor(fn) { if (IsCallable(fn)) { return false; } if (typeof fn !== 'function') { return false; } try { var match = $stringMatch($functionToString(fn), classRegex); return !!match; } catch (e) {} return false; }; var regex = /\s*function\s+([^(\s]*)\s*/; var functionProto = Function.prototype; module.exports = function getName() { if (!isClass(this) && !IsCallable(this)) { throw new TypeError('Function.prototype.name sham getter called on non-function'); } if (functionsHaveNames) { return this.name; } if (this === functionProto) { return ''; } var str = $functionToString(this); var match = $stringMatch(str, regex); var name = match && match[1]; return name; };