import { IterableActivity, isSource, Source } from "./activity"; function firstGen(n: number): IterableActivity { return function* (source: Source) { let i = 0; for (const item of source) { yield item; if (++i >= n) { break; } } }; } export function first(n: number): IterableActivity; export function first(source: Source, n: number): IterableIterator; export function first(s_or_n: Source | number, n?: number): IterableActivity | IterableIterator { if (!isSource(s_or_n)) return firstGen(s_or_n); return firstGen(n!)(s_or_n); }