import type { Function } from "@vangware/types"; import type { IsomorphicGeneratorFunction } from "./types/IsomorphicGeneratorFunction.js"; /** * Takes a generator function and returns an iterable iterator or asynchronous * iterable iterator object. * * @category Common * @example * ```typescript * const identityGenerator = function* (value) { yield value; }; * const iterableIterator = createIterableIterator(identityGenerator); * * const fooIdentity = iterableIterator("foo"); * * for (const value of fooIdentity) { * console.log(value); // "foo" * } * * // Same IterableIterator as above, return values again: * * for (const value of fooIdentity) { * console.log(value); // "foo" * } * ``` * @param generatorFunction Generator to be used every time `[Symbol.iterator]` is called. * @returns Iterable iterator object. */ export declare const createIterableIterator: < GeneratorFunction_1 extends IsomorphicGeneratorFunction, >( generatorFunction: GeneratorFunction_1, ) => GeneratorFunction_1 extends IsomorphicGeneratorFunction ? GeneratorFunction_1 extends Function< never, { readonly next: ( ...args: [] | [void] ) => Promise>; readonly return?: | (( value?: void | PromiseLike | undefined, ) => Promise>) | undefined; readonly throw?: | ((e?: any) => Promise>) | undefined; } > ? { readonly [Symbol.asyncIterator]: () => AsyncIterableIterator; readonly next: ( ...args: [] | [undefined] ) => Promise>; readonly return?: | ((value?: any) => Promise>) | undefined; readonly throw?: | ((e?: any) => Promise>) | undefined; } : { readonly [Symbol.iterator]: () => IterableIterator; readonly next: ( ...args: [] | [undefined] ) => IteratorResult; readonly return?: | ((value?: any) => IteratorResult) | undefined; readonly throw?: | ((e?: any) => IteratorResult) | undefined; } : never;