UNPKG

async-collection-utils

Version:

A well tested and typed collection of map, forEach, reduce, filter etc. utility functions supporting arrays, sets, maps, plain objects, iterators in both async and synchronous versions.

153 lines (134 loc) 35 kB
type ObjectKey = string | number | symbol; type StringifiedObjectKey<TKey extends ObjectKey> = TKey extends string ? TKey : string; type ObjectEntry<TKey extends ObjectKey, TValue> = [ StringifiedObjectKey<TKey>, TValue ]; declare const Break: unique symbol; declare class LastClass<T> { value: T; constructor(value: T); } type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array; type CustomAsyncIterable<TValue, TReturn> = { next: () => Promise<IteratorResult<TValue, TReturn>>; }; type CustomIterable<TValue, TReturn> = { next: () => IteratorResult<TValue, TReturn>; }; declare const Last: <T>(value: T) => LastClass<T>; declare const entries: <TValue, TKey extends ObjectKey>(object: Record<TKey, TValue>) => ObjectEntry<TKey, TValue>[]; declare const keys: <TValue, TKey extends ObjectKey>(object: Record<TKey, TValue>) => StringifiedObjectKey<TKey>[]; declare function asyncMap<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<Array<TUpdateValue>>; declare function asyncMap<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<Set<TUpdateValue>>; declare function asyncMap<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<Map<TCollection extends Map<infer TKey, unknown> ? TKey : never, TUpdateValue>>; declare function asyncMap<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => Promise<TCollection[number] | typeof Break | LastClass<TCollection[number]>>): Promise<TCollection>; declare function asyncMap<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<AsyncGenerator<TUpdateValue>>; declare function asyncMap<TCollection extends CustomAsyncIterable<unknown, unknown>, TUpdateValue>(asyncIterable: TCollection, callback: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<AsyncGenerator<TUpdateValue>>; declare function asyncMap<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<{ [K in keyof TCollection]: TUpdateValue; }>; declare function map<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): Array<TUpdateValue>; declare function map<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): Set<TUpdateValue>; declare function map<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): Map<TCollection extends Map<infer TKey, unknown> ? TKey : never, TUpdateValue>; declare function map<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => TCollection[number] | typeof Break | LastClass<TCollection[number]>): TCollection; declare function map<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): Generator<TUpdateValue>; declare function map<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): { [K in keyof TCollection]: TUpdateValue; }; declare function asyncMapToArray<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function asyncMapToArray<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function asyncMapToArray<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function asyncMapToArray<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => Promise<TCollection[number] | typeof Break | LastClass<TCollection[number]>>): Promise<TCollection[number][]>; declare function asyncMapToArray<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function asyncMapToArray<TCollection extends CustomAsyncIterable<unknown, unknown>, TUpdateValue>(asyncIterable: TCollection, callback: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function asyncMapToArray<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<TUpdateValue | typeof Break | LastClass<TUpdateValue>>): Promise<TUpdateValue[]>; declare function mapToArray<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): TUpdateValue[]; declare function mapToArray<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): TUpdateValue[]; declare function mapToArray<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): TUpdateValue[]; declare function mapToArray<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => TCollection[number] | typeof Break | LastClass<TCollection[number]>): TCollection[number][]; declare function mapToArray<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): TUpdateValue[]; declare function mapToArray<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => TUpdateValue | typeof Break | LastClass<TUpdateValue>): TUpdateValue[]; declare function asyncFlatMap<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<Array<TUpdateValue>>; declare function asyncFlatMap<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<Set<TUpdateValue>>; declare function asyncFlatMap<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => Promise<TCollection[number] | TCollection[number][] | typeof Break | LastClass<TCollection[number] | TCollection[number][]>>): Promise<TCollection>; declare function asyncFlatMap<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<AsyncGenerator<TUpdateValue>>; declare function asyncFlatMap<TCollection extends CustomAsyncIterable<unknown, unknown>, TUpdateValue>(asyncIterable: TCollection, callback: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<AsyncGenerator<TUpdateValue>>; declare function flatMap<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): Array<TUpdateValue>; declare function flatMap<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): Set<TUpdateValue>; declare function flatMap<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => TCollection[number] | TCollection[number][] | typeof Break | LastClass<TCollection[number] | TCollection[number][]>): TCollection; declare function flatMap<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): Generator<TUpdateValue>; declare function asyncFlatMapToArray<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function asyncFlatMapToArray<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function asyncFlatMapToArray<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function asyncFlatMapToArray<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => Promise<TCollection[number] | TCollection[number][] | typeof Break | LastClass<TCollection[number] | TCollection[number][]>>): Promise<TCollection[number][]>; declare function asyncFlatMapToArray<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function asyncFlatMapToArray<TCollection extends CustomAsyncIterable<unknown, unknown>, TUpdateValue>(asyncIterable: TCollection, callback: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function asyncFlatMapToArray<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>>): Promise<TUpdateValue[]>; declare function flatMapToArray<TCollection extends unknown[], TUpdateValue>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): TUpdateValue[]; declare function flatMapToArray<TCollection extends Set<unknown>, TUpdateValue>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): TUpdateValue[]; declare function flatMapToArray<TCollection extends Map<unknown, unknown>, TUpdateValue>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): TUpdateValue[]; declare function flatMapToArray<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => TCollection[number] | TCollection[number][] | typeof Break | LastClass<TCollection[number] | TCollection[number][]>): TCollection[number][]; declare function flatMapToArray<TCollection extends CustomIterable<unknown, unknown>, TUpdateValue>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): TUpdateValue[]; declare function flatMapToArray<TCollection extends Record<string | number | symbol, unknown>, TUpdateValue>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => TUpdateValue | TUpdateValue[] | typeof Break | LastClass<TUpdateValue | TUpdateValue[]>): TUpdateValue[]; declare function asyncFilter<TCollection extends unknown[]>(array: TCollection, predicate: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<Array<TCollection[number]>>; declare function asyncFilter<TCollection extends Set<unknown>>(set: TCollection, predicate: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<Set<TCollection extends Set<infer TValue> ? TValue : never>>; declare function asyncFilter<TCollection extends Map<unknown, unknown>>(map: TCollection, predicate: (value: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<Map<TCollection extends Map<infer TKey, unknown> ? TKey : never, TCollection extends Map<unknown, infer TValue> ? TValue : never>>; declare function asyncFilter<TCollection extends TypedArray>(typedArray: TCollection, predicate: (item: TCollection[number], index: number, arr: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection>; declare function asyncFilter<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, predicate: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<AsyncGenerator<TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never>>; declare function asyncFilter<TCollection extends CustomAsyncIterable<unknown, unknown>>(asyncIterable: TCollection, predicate: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<AsyncGenerator<TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never>>; declare function asyncFilter<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, predicate: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<{ [K in keyof TCollection]: TCollection[K]; }>; declare function filter<TCollection extends unknown[]>(array: TCollection, predicate: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => boolean | typeof Break | LastClass<boolean>): Array<TCollection[number]>; declare function filter<TCollection extends Set<unknown>>(set: TCollection, predicate: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => boolean | typeof Break | LastClass<boolean>): Set<TCollection extends Set<infer TValue> ? TValue : never>; declare function filter<TCollection extends Map<unknown, unknown>>(map: TCollection, predicate: (value: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => boolean | typeof Break | LastClass<boolean>): Map<TCollection extends Map<infer TKey, unknown> ? TKey : never, TCollection extends Map<unknown, infer TValue> ? TValue : never>; declare function filter<TCollection extends TypedArray>(typedArray: TCollection, predicate: (item: TCollection[number], index: number, arr: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection; declare function filter<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, predicate: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => boolean | typeof Break | LastClass<boolean>): Generator<TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never>; declare function filter<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, predicate: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => boolean | typeof Break | LastClass<boolean>): { [K in keyof TCollection]: TCollection[K]; }; declare function asyncFilterToArray<TCollection extends unknown[]>(array: TCollection, predicate: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection[number][]>; declare function asyncFilterToArray<TCollection extends Set<unknown>>(set: TCollection, predicate: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection extends Set<infer TValue> ? TValue[] : never>; declare function asyncFilterToArray<TCollection extends Map<unknown, unknown>>(map: TCollection, predicate: (value: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection extends Map<unknown, infer TValue> ? TValue[] : never>; declare function asyncFilterToArray<TCollection extends TypedArray>(typedArray: TCollection, predicate: (item: TCollection[number], index: number, arr: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection[number][]>; declare function asyncFilterToArray<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, predicate: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection extends CustomIterable<infer TValue, unknown> ? TValue[] : never>; declare function asyncFilterToArray<TCollection extends CustomAsyncIterable<unknown, unknown>>(asyncIterable: TCollection, predicate: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue[] : never>; declare function asyncFilterToArray<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, predicate: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<boolean | typeof Break | LastClass<boolean>>): Promise<TCollection[keyof TCollection][]>; declare function filterToArray<TCollection extends unknown[]>(array: TCollection, predicate: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection[number][]; declare function filterToArray<TCollection extends Set<unknown>>(set: TCollection, predicate: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection extends Set<infer TValue> ? TValue[] : never; declare function filterToArray<TCollection extends Map<unknown, unknown>>(map: TCollection, predicate: (value: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection extends Map<unknown, infer TValue> ? TValue[] : never; declare function filterToArray<TCollection extends TypedArray>(typedArray: TCollection, predicate: (item: TCollection[number], index: number, arr: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection[number][]; declare function filterToArray<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, predicate: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection extends CustomIterable<infer TValue, unknown> ? TValue[] : never; declare function filterToArray<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, predicate: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => boolean | typeof Break | LastClass<boolean>): TCollection[keyof TCollection][]; declare function asyncReduce<TCollection extends unknown[], TAccumulator = TCollection extends Array<infer TValue> ? TValue : never>(array: TCollection, callback: (acc: TAccumulator, item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends Set<unknown>, TAccumulator = TCollection extends Set<infer TValue> ? TValue : never>(set: TCollection, callback: (acc: TAccumulator, item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends Map<unknown, unknown>, TAccumulator = TCollection extends Map<unknown, infer TValue> ? TValue : never>(map: TCollection, callback: (acc: TAccumulator, item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends TypedArray, TAccumulator = TCollection[number]>(typedArray: TCollection, callback: (acc: TAccumulator, item: TCollection[number], index: number, arr: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends CustomIterable<unknown, unknown>, TAccumulator = TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never>(iterable: TCollection, callback: (acc: TAccumulator, item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends CustomAsyncIterable<unknown, unknown>, TAccumulator = TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never>(asyncIterable: TCollection, callback: (acc: TAccumulator, item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function asyncReduce<TCollection extends Record<string | number | symbol, unknown>, TAccumulator = TCollection[keyof TCollection]>(obj: TCollection, callback: (acc: TAccumulator, value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<TAccumulator | typeof Break | LastClass<TAccumulator>>, initialValue?: TAccumulator): Promise<TAccumulator>; declare function reduce<TCollection extends unknown[], TAccumulator = TCollection extends Array<infer TValue> ? TValue : never>(array: TCollection, callback: (acc: TAccumulator, item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function reduce<TCollection extends Set<unknown>, TAccumulator = TCollection extends Set<infer TValue> ? TValue : never>(set: TCollection, callback: (acc: TAccumulator, item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function reduce<TCollection extends Map<unknown, unknown>, TAccumulator = TCollection extends Map<unknown, infer TValue> ? TValue : never>(map: TCollection, callback: (acc: TAccumulator, item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function reduce<TCollection extends TypedArray, TAccumulator = TCollection[number]>(typedArray: TCollection, callback: (acc: TAccumulator, item: TCollection[number], index: number, arr: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function reduce<TCollection extends CustomIterable<unknown, unknown>, TAccumulator = TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never>(iterable: TCollection, callback: (acc: TAccumulator, item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function reduce<TCollection extends Record<string | number | symbol, unknown>, TAccumulator = TCollection[keyof TCollection]>(obj: TCollection, callback: (acc: TAccumulator, value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => TAccumulator | typeof Break | LastClass<TAccumulator>, initialValue?: TAccumulator): TAccumulator; declare function asyncForEach<TCollection extends unknown[]>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends Set<unknown>>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends Map<unknown, unknown>>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends CustomAsyncIterable<unknown, unknown>>(asyncIterable: TCollection, callback: (item: TCollection extends CustomAsyncIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function asyncForEach<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => Promise<void | typeof Break>): Promise<void>; declare function forEach<TCollection extends unknown[]>(array: TCollection, callback: (item: TCollection extends Array<infer TValue> ? TValue : never, index: number, arr: TCollection) => void | typeof Break): void; declare function forEach<TCollection extends Set<unknown>>(set: TCollection, callback: (item: TCollection extends Set<infer TValue> ? TValue : never, index: number, set: TCollection) => void | typeof Break): void; declare function forEach<TCollection extends Map<unknown, unknown>>(map: TCollection, callback: (item: TCollection extends Map<unknown, infer TValue> ? TValue : never, key: TCollection extends Map<infer TKey, unknown> ? TKey : never, map: TCollection) => void | typeof Break): void; declare function forEach<TCollection extends TypedArray>(typedArray: TCollection, callback: (item: TCollection[number], index: number, arr: TCollection) => void | typeof Break): void; declare function forEach<TCollection extends CustomIterable<unknown, unknown>>(iterable: TCollection, callback: (item: TCollection extends CustomIterable<infer TValue, unknown> ? TValue : never, index: number, iterable: TCollection) => void | typeof Break): void; declare function forEach<TCollection extends Record<string | number | symbol, unknown>>(obj: TCollection, callback: (value: TCollection[keyof TCollection], key: keyof TCollection & string, object: TCollection) => void | typeof Break): void; declare function batch<TCollection extends Array<any>>(array: TCollection extends Iterator<any> ? never : TCollection, batchSize: number): Array<TCollection extends Array<infer TValue> ? TValue[] : never>; declare function batch<TCollection extends Set<any>>(set: TCollection, batchSize: number): Set<TCollection extends Set<infer TValue> ? TValue[] : never>; declare function batch<TCollection extends CustomIterable<any, any>, TUpdateValue>(iterable: TCollection, batchSize: number): Generator<TCollection extends CustomIterable<infer TValue, any> ? TValue[] : never>; declare function batch<TCollection extends CustomAsyncIterable<any, any>>(asyncIterable: TCollection, batchSize: number): AsyncGenerator<TCollection extends CustomAsyncIterable<infer TValue, any> ? TValue[] : never>; export { Break, Last, asyncFilter, asyncFilterToArray, asyncFlatMap, asyncFlatMapToArray, asyncForEach, asyncMap, asyncMapToArray, asyncReduce, batch, entries, filter, filterToArray, flatMap, flatMapToArray, forEach, keys, map, mapToArray, reduce };