/** * {@link Sync} namespace. * * @module Sync */ import { Enhancements } from "./enhancements"; import { EnhancedGenerator } from "./sync-impl"; import { Sync as SyncMixin } from './sync-mixin'; /** * Namespace for the aynchronous version of the generic generator operators. */ export declare namespace Sync { /** * Literal type indicating a synchronous generator. Only a type, not a value. */ type type = 'sync'; /** * See [[Enhancements.asArray]] * @return **Returns:** [[Sync.Generator]] */ const asArray: (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => T[]; /** * Return a generator concatenating this with the supplied generator(s). * * See [[Enhancements.concat]] * @return **Returns:** [[Sync.Generator]] */ const concat: (...gens: (globalThis.Generator | Iterator | Iterable | Enhancements)[]) => EnhancedGenerator; /** * See [[Enhancements.every]] */ const every: { (p: (v: T, idx: number) => boolean, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => boolean; (p: (v: T_1, idx: number) => boolean): (gen: globalThis.Generator | Iterator | Iterable | Enhancements, thisArg?: any) => boolean; (p: (v: T_2, idx: number) => boolean, gen: globalThis.Generator | Iterator | Iterable | Enhancements): boolean; (p: (v: T_3, idx: number) => boolean, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements): boolean; (pred: (v: T_4, idx: number) => boolean, genOrThis?: any, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): boolean | ((gen: Iterable | globalThis.Generator | Iterator | Enhancements) => boolean); }; /** * See [[Enhancements.filter]] * @return **Returns:** [[Sync.Generator]] */ const filter: { (f: (v: T, idx: number) => boolean): import("./types").GenOpValue<"sync", T, T, []>; (f: (v: T_1, idx: number) => boolean, thisArg: any): import("./types").GenOpValue<"sync", T_1, T_1, []>; (f: (v: T_2, idx: number) => boolean, iter: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (f: (v: T_3, idx: number) => boolean, thisArg: any, iter: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (f: (v: T_4, idx: number) => boolean, thisArg?: any, iter?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): EnhancedGenerator; }; /** * See [[Enhancements.flat]] * @return **Returns:** [[Sync.Generator]] */ const flat: { (depth: D): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator; (depth: D_1, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (gen: globalThis.Generator | Iterator | Iterable | Enhancements, depth?: D_2 | undefined): EnhancedGenerator; (depth: D_3 | globalThis.Generator | Iterator | Iterable | Enhancements, gen?: D_3 | globalThis.Generator | Iterator | Iterable | Enhancements | undefined): EnhancedGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator) | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements, thisObj: any) => EnhancedGenerator); }; /** * See [[Enhancements.flatMap]] * @return **Returns:** [[Sync.Generator]] */ const flatMap: { (f: (v: T, idx: number) => R, depth: D): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator; (f: (v: T_1, idx: number) => R_1): (gen: globalThis.Generator | Iterator | Iterable | Enhancements, depth?: D_1 | undefined) => EnhancedGenerator; (f: (v: T_2, idx: number) => R_2, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (f: (v: T_3, idx: number) => R_3, depth: D_3, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (f: (v: T_4, idx: number) => R_4, depthOrGen?: D_4 | globalThis.Generator | Iterator | Iterable | Enhancements | undefined, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): EnhancedGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator) | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements, depth?: D_4 | undefined) => EnhancedGenerator); }; /** * See [[Enhancements.forEach]] */ const forEach: { (f: (v: T, idx: number) => void, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements): void; (f: (v: T_1, idx: number) => void, gen: globalThis.Generator | Iterator | Iterable | Enhancements): void; (f: (v: T_2, idx: number) => void, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => void; (f: (v: T_3, idx: number) => void): (gen: globalThis.Generator | Iterator | Iterable | Enhancements, thisArg?: any) => void; }; /** * See [[Enhancements.join]] */ const join: { (sep: string): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => string; (gen: globalThis.Generator | Iterator | Iterable | Enhancements, sep?: string | undefined): string; (genOrSeparator: string | globalThis.Generator | Iterator | Iterable | Enhancements, sep?: string | undefined): string | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements) => string); }; /** * See [[Enhancements.limit]] * @return **Returns:** [[Sync.Generator]] */ const limit: { (max: number, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (max: number): import("./types").GenOp<"sync", []>; }; /** * See [[Enhancements.map]] * @return **Returns:** [[Sync.Generator]] */ const map: { (f: (v: T, idx: number) => V): import("./types").GenOpValue<"sync", T, V, []>; (f: (v: T_1, idx: number) => V_1, thisArg?: any): import("./types").GenOpValue<"sync", T_1, V_1, []>; (f: (v: T_2, idx: number) => V_2, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (f: (v: T_3, idx: number) => V_3, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; }; const merge: (...sources: (globalThis.Generator | Iterator | Iterable | Enhancements)[]) => EnhancedGenerator; /** * Create an [[Sync.Generator]] which yields the supplied values. * @return **Returns:** [[Sync.Generator]] */ const of: (...values: T) => EnhancedGenerator, TReturn, TNext>; /** * See [[Enhancements.reduce]] */ const reduce: { (f: (acc: A | T, v: T) => A, gen: globalThis.Generator | Iterator | Iterable | Enhancements): A; (f: (acc: A_1 | T_1, v: T_1) => A_1): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => A_1; (f: (acc: A_2, v: T_2) => A_2): (init: A_2, gen: globalThis.Generator | Iterator | Iterable | Enhancements) => A_2; (f: (acc: A_3, v: T_3) => A_3, init: A_3, gen: globalThis.Generator | Iterator | Iterable | Enhancements): A_3; (f: (acc: A_4, v: T_4) => A_4, init: A_4): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => A_4; (f: (acc: A_5 | T_5, v: T_5) => A_5, initOrGen?: (A_5 | (A_5 extends PromiseLike ? R : A_5)) | globalThis.Generator | Iterator | Iterable | Enhancements | undefined, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): (A_5 | (A_5 extends PromiseLike ? R : A_5)) | ((gen: Iterable | globalThis.Generator | Iterator | Enhancements) => A_5 | (A_5 extends PromiseLike ? R : A_5)) | ((f: (acc: A_5, v: T_5) => A_5 | (A_5 extends PromiseLike ? R : A_5), init: A_5) => A_5 | (A_5 extends PromiseLike ? R : A_5)) | ((f: (acc: A_5 | T_5, v: T_5) => A_5 | (A_5 extends PromiseLike ? R : A_5)) => A_5 | (A_5 extends PromiseLike ? R : A_5)); }; /** * See [[Enhancements.repeat]] * @return **Returns:** [[Sync.Generator]] */ const repeat: (value: T, repetitions: number) => EnhancedGenerator; /** * See [[Enhancements.repeatLast]] * @return **Returns:** [[Sync.Generator]] */ const repeatLast: (gen: globalThis.Generator | Iterator | Iterable | Enhancements, max: number) => EnhancedGenerator; /** * See [[Enhancements.slice]] * @return **Returns:** [[Sync.Generator]] */ const slice: { (start: number, end: number): (iter: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator; (start: number, end: number, iter: globalThis.Generator | Iterator | Iterable | Enhancements): EnhancedGenerator; (start: number, end: number, iter?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): EnhancedGenerator | ((gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator); }; /** * See [[Enhancements.some]] */ const some: { (p: (v: T, idx: number) => boolean, thisArg?: any): (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => boolean; (p: (v: T_1, idx: number) => boolean): (gen: globalThis.Generator | Iterator | Iterable | Enhancements, thisArg?: any) => boolean; (p: (v: T_2, idx: number) => boolean, gen: globalThis.Generator | Iterator | Iterable | Enhancements): boolean; (p: (v: T_3, idx: number) => boolean, thisArg: any, gen: globalThis.Generator | Iterator | Iterable | Enhancements): boolean; (pred: (v: T_4, idx: number) => boolean, thisOrGen?: any, gen?: globalThis.Generator | Iterator | Iterable | Enhancements | undefined): boolean | ((gen: Iterable | globalThis.Generator | Iterator | Enhancements) => boolean); }; /** * See [[Enhancements.sort]] */ const sort: (cmp?: ((a: T, b: T) => number) | undefined) => (...sources: (globalThis.Generator | Iterator | Iterable | Enhancements)[]) => T[]; /** * See [[Enhancements.zip]] * @return **Returns:** [[Sync.Generator]] */ const zip: (...gens: (globalThis.Generator | Iterator | Iterable | Enhancements)[]) => EnhancedGenerator; /** * Convert any `Iterator` or `Iterable` to a [[Sync.Generator]]. * @return **Returns:** [[Sync.Generator]] */ const enhance: (gen: globalThis.Generator | Iterator | Iterable | Enhancements) => EnhancedGenerator; /** * An enhanced generator that can be used in various ways. * * Most methods come both as instance (prototype) methods and as static methods. They * provide equivalent functionality, but the static methods allow use on `Iterator` and * `Iterable` objects without first converting to a generator. * * The {@link Sync.enhance} method will add additional instance methods to * an ordinary generator's prototype (a new prototype, **not** modifying any global prototype!). * It can also be used to convert `Iterator` and `Iterable` objects to [[Generator]]. * * For methods which return an [[Sync.Generator]], care is take to propagate any `Generator.throw` * and `Generator.return` calls to any supplied generators, so they can properly terminate. * * The exceptions are [[Enhancements.flat]] (and by extension, [[Enhancements.flatMap]]), which cannot know what nested generators * they might encounter in the future. Any generators encountered so far will be terminated, however. * * @typeParam T the type of values returned in the iteration result. * @typeParam TReturn the type of values returned in the iteration result when the generator terminates * @typeParam TNext the type of value which can be passed to `.next(val)`. * * See also {@link EnhancedAsyncGenerator | Async.Generator} */ type Generator = EnhancedGenerator; /** * Given an abstract class that implements `Iterable`, * this returns a class that implements {@link IEnhancements}, allowing * one to treat it as if it were an array, in supporting methods such as * {@link IEnhancements.map | .map()} and {@link IEnhancements.filter | .filter()}. * * Usage: * * ```typescript * class MySyncIterable implements Iterable { * *[Symbol.iterator]() { * yield 1; * yield 2; * yield 3; * } * } * * class MyEnhancedSyncIterable extends Sync.Mixin(MySyncIterable) { * constructor() { * super(); * } * } * const foo = new MyEnhancedSyncIterable(); * foo.map(i => i * 2).asArray(); // => [2, 4, 6] * foo.map(i => i + 2).asArray(); // => [3, 4, 5] * ``` * @param Base a constructor for a class that implements `Iterable`. * @returns a new constructor for an enhanced class. */ const Mixin: typeof SyncMixin.Mixin; /** * Turn a function that returns an `Iterator` into an `Iterable` object which can be repeatedly * iterated over, invoking the function each time to produce a new `Iterator`. * @param fn A function that returns an `Iterator` * @param args Arguments to be passed to the function * @returns */ const wrap: (fn: (...args: PARAMS) => Iterator, ...args: PARAMS) => import("./sync-wrap").SyncFunctionWrapper; } //# sourceMappingURL=sync.d.ts.map