From 46e43f4bde4a35785b4997b81e86cd19f046b69b Mon Sep 17 00:00:00 2001 From: Minteck Date: Tue, 21 Dec 2021 16:52:28 +0100 Subject: Commit --- src/node_modules/is-generator-function/index.js | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/node_modules/is-generator-function/index.js (limited to 'src/node_modules/is-generator-function/index.js') diff --git a/src/node_modules/is-generator-function/index.js b/src/node_modules/is-generator-function/index.js new file mode 100644 index 0000000..d9cc21f --- /dev/null +++ b/src/node_modules/is-generator-function/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var toStr = Object.prototype.toString; +var fnToStr = Function.prototype.toString; +var isFnRegex = /^\s*(?:function)?\*/; +var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; +var getProto = Object.getPrototypeOf; +var getGeneratorFunc = function () { // eslint-disable-line consistent-return + if (!hasToStringTag) { + return false; + } + try { + return Function('return function*() {}')(); + } catch (e) { + } +}; +var generatorFunc = getGeneratorFunc(); +var GeneratorFunction = getProto && generatorFunc ? getProto(generatorFunc) : false; + +module.exports = function isGeneratorFunction(fn) { + if (typeof fn !== 'function') { + return false; + } + if (isFnRegex.test(fnToStr.call(fn))) { + return true; + } + if (!hasToStringTag) { + var str = toStr.call(fn); + return str === '[object GeneratorFunction]'; + } + return getProto && getProto(fn) === GeneratorFunction; +}; -- cgit