UNPKG

payload-is

Version:

A comprehensive TypeScript/JavaScript type checking library providing functions to check data types, collections, primitives, and built-in objects

29 lines (26 loc) 930 B
import { isFunction } from "./function.ts"; import { isUndefined } from "./nil.ts"; import { isObject } from "./object.ts"; // iterator export function isIterator(payload: unknown): payload is Iterator<any> { return ( (typeof Iterator !== "undefined" && payload instanceof Iterator) || (typeof Symbol !== "undefined" && !isUndefined(Symbol.iterator) && isObject(payload) && isFunction((payload as IteratorObject<any>)[Symbol.iterator]) && (payload as IteratorObject<any>)[Symbol.iterator]() === payload) ); } // AsyncIterator export function isAsyncIterator( payload: unknown ): payload is AsyncIterator<any> { return ( typeof Symbol !== "undefined" && !isUndefined(Symbol.asyncIterator) && isObject(payload) && isFunction((payload as AsyncIteratorObject<any>)[Symbol.asyncIterator]) && (payload as AsyncIteratorObject<any>)[Symbol.asyncIterator]() === payload ); }