mono/packages/core/dist/iterator.d.ts
2025-01-28 13:42:22 +01:00

75 lines
3.1 KiB
TypeScript

export declare namespace Iterable {
function is<T = any>(thing: any): thing is Iterable<T>;
function empty<T = any>(): Iterable<T>;
function single<T>(element: T): Iterable<T>;
function wrap<T>(iterableOrElement: Iterable<T> | T): Iterable<T>;
function from<T>(iterable: Iterable<T> | undefined | null): Iterable<T>;
function reverse<T>(array: Array<T>): Iterable<T>;
function isEmpty<T>(iterable: Iterable<T> | undefined | null): boolean;
function first<T>(iterable: Iterable<T>): T | undefined;
function some<T>(iterable: Iterable<T>, predicate: (t: T, i: number) => unknown): boolean;
function find<T, R extends T>(iterable: Iterable<T>, predicate: (t: T) => t is R): R | undefined;
function find<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): T | undefined;
function filter<T, R extends T>(iterable: Iterable<T>, predicate: (t: T) => t is R): Iterable<R>;
function filter<T>(iterable: Iterable<T>, predicate: (t: T) => boolean): Iterable<T>;
function map<T, R>(iterable: Iterable<T>, fn: (t: T, index: number) => R): Iterable<R>;
function flatMap<T, R>(iterable: Iterable<T>, fn: (t: T, index: number) => Iterable<R>): Iterable<R>;
function concat<T>(...iterables: Iterable<T>[]): Iterable<T>;
function reduce<T, R>(iterable: Iterable<T>, reducer: (previousValue: R, currentValue: T) => R, initialValue: R): R;
/**
* Returns an iterable slice of the array, with the same semantics as `array.slice()`.
*/
function slice<T>(arr: ReadonlyArray<T>, from: number, to?: number): Iterable<T>;
/**
* Consumes `atMost` elements from iterable and returns the consumed elements,
* and an iterable for the rest of the elements.
*/
function consume<T>(iterable: Iterable<T>, atMost?: number): [T[], Iterable<T>];
function asyncToArray<T>(iterable: AsyncIterable<T>): Promise<T[]>;
}
export interface IIterator<T> {
next(): T;
}
export declare class ArrayIterator<T> implements IIterator<T> {
private items;
protected start: number;
protected end: number;
protected index: number;
constructor(items: T[], start?: number, end?: number);
first(): T;
next(): T;
protected current(): T;
}
export declare class ArrayNavigator<T> extends ArrayIterator<T> implements INavigator<T> {
constructor(items: T[], start?: number, end?: number);
current(): T;
previous(): T;
first(): T;
last(): T;
parent(): T;
}
export declare class MappedIterator<T, R> implements IIterator<R> {
protected iterator: IIterator<T>;
protected fn: (item: T) => R;
constructor(iterator: IIterator<T>, fn: (item: T) => R);
next(): R;
}
export interface INavigator<T> extends IIterator<T> {
current(): T;
previous(): T;
parent(): T;
first(): T;
last(): T;
next(): T;
}
export declare class MappedNavigator<T, R> extends MappedIterator<T, R> implements INavigator<R> {
protected navigator: INavigator<T>;
constructor(navigator: INavigator<T>, fn: (item: T) => R);
current(): R;
previous(): R;
parent(): R;
first(): R;
last(): R;
next(): R;
}