UNPKG

data-collectors

Version:

A collection of composable reduction operations for arbitrary streams of values

19 lines (18 loc) 1.08 kB
import { Collector, BaseCollector } from "../collector"; import { Mapper } from "../collections/groupingBy"; export interface DistinctContainer<T, U> { keys: Map<U, number>; items: [U, T][]; } export declare class DistinctCollector<T, U, A, R> extends BaseCollector<T, DistinctContainer<T, U>, R> { protected keyer: Mapper<T, U>; protected collector: Collector<T, A, R>; constructor(keyer: Mapper<T, U>, collector: Collector<T, A, R>); supply(): DistinctContainer<T, U>; accumulate(container: DistinctContainer<T, U>, item: T): void; combine(container1: DistinctContainer<T, U>, container2: DistinctContainer<T, U>): DistinctContainer<T, U>; finish(container: DistinctContainer<T, U>): R; } export declare function distinct<T>(): Collector<T, DistinctContainer<T, T>, T[]>; export declare function distinct<T, U>(keyer: Mapper<T, U>): Collector<T, DistinctContainer<T, U>, T[]>; export declare function distinct<T, U, A, R>(keyer: Mapper<T, U>, collector?: Collector<U, any, R>): Collector<T, DistinctContainer<T, U>, R>;