UNPKG

ramda-adjunct

Version:

Ramda Adjunct is the most popular and most comprehensive set of utilities for use with Ramda, providing a variety of useful, well tested functions with excellent documentation.

44 lines (40 loc) 1.14 kB
import { type, is, F as stubFalse, either, identical, pipe, curryN, } from 'ramda'; let GeneratorFunction = null; let legacyCheck = null; try { GeneratorFunction = new Function('return function* () {}')().constructor; // eslint-disable-line no-new-func legacyCheck = is(GeneratorFunction); } catch (e) { legacyCheck = stubFalse; } /** * Checks if input value is `Generator Function`. * * @func isGeneratorFunction * @memberOf RA * @since {@link https://char0n.github.io/ramda-adjunct/0.5.0|v0.5.0} * @category Type * @sig * -> Boolean * @param {*} val The value to test * @return {boolean} * @see {@link RA.isFunction|isFunction}, {@link RA.isAsyncFunction|isAsyncFunction}, {@link RA.isNotGeneratorFunction|isNotGeneratorFunction} * @example * * RA.isGeneratorFunction(function* test() { }); //=> true * RA.isGeneratorFunction(null); //=> false * RA.isGeneratorFunction(function test() { }); //=> false * RA.isGeneratorFunction(() => {}); //=> false */ const isGeneratorFunction = curryN( 1, either(pipe(type, identical('GeneratorFunction')), legacyCheck) ); export default isGeneratorFunction;