scats
Version:
Useful scala classes in typescript
86 lines (85 loc) • 4.16 kB
TypeScript
import { Mappable } from './mappable.js';
import { HashMap, HashSet, Option } from './index.js';
import { Filterable } from './util.js';
import { ArrayIterable } from './array-iterable.js';
export declare abstract class ArrayBackedCollection<T, C extends ArrayIterable<T, any>> extends ArrayIterable<T, C> {
protected abstract readonly items: T[];
protected checkWithinBounds(lo: number, hi: number): void;
get reverse(): C;
get toArray(): T[];
get(index: number): T;
get toSet(): HashSet<T>;
indexOf(item: T): number;
get distinct(): C;
distinctBy(key: (item: T) => string | number): C;
appended(item: T): C;
appendedAll(other: Iterable<T>): C;
prepended(item: T): C;
prependedAll(other: Iterable<T>): C;
concat(other: Iterable<T>): C;
slice(from: number, until: number): C;
sort(param: (a: T, b: T) => number): C;
sortBy(fieldToNumber: (a: T) => number): C;
get length(): number;
}
export declare class Collection<T> extends ArrayBackedCollection<T, Collection<T>> implements Mappable<T>, Filterable<T, Collection<T>> {
protected readonly items: T[];
constructor(items: T[]);
static empty: Collection<any>;
protected fromArray(array: T[]): Collection<T>;
static of<T>(...items: T[]): Collection<T>;
static from<T>(elements: Iterable<T>): Collection<T>;
static fill<A>(len: number): (elem: (idx: number) => A) => Collection<A>;
map<B>(f: (item: T) => B): Collection<B>;
flatMap<B>(f: (item: T) => Collection<B>): Collection<B>;
flatMapOption<B>(f: (item: T) => Option<B>): Collection<B>;
mapPromise<B>(f: (v: T) => Promise<B>): Promise<Collection<B>>;
mapPromiseAll<B>(f: (v: T) => Promise<B>): Promise<Collection<B>>;
flatMapPromise<B>(f: (item: T) => Promise<Collection<B>>): Promise<Collection<B>>;
flatMapPromiseAll<B>(f: (v: T) => Promise<Collection<B>>): Promise<Collection<B>>;
flatten<B>(): Collection<B>;
get toBuffer(): ArrayBuffer<T>;
toMap<K, V>(mapper: (item: T) => [K, V]): HashMap<K, V>;
zip<B>(that: Collection<B>): Collection<[T, B]>;
zipAll<B>(that: Collection<B>, thisElem: T, thatElem: B): Collection<[T, B]>;
}
export declare const Nil: Collection<any>;
export declare class ArrayBuffer<T> extends ArrayBackedCollection<T, ArrayBuffer<T>> implements Mappable<T>, Filterable<T, ArrayBuffer<T>> {
protected readonly items: T[];
static get empty(): ArrayBuffer<any>;
constructor(items?: T[]);
static of<T>(...elements: T[]): ArrayBuffer<T>;
static from<T>(elements: Iterable<T>): ArrayBuffer<T>;
static fill<A>(len: number): (elem: (idx: number) => A) => ArrayBuffer<A>;
protected fromArray(array: T[]): ArrayBuffer<T>;
private normalized;
update(index: number, element: T): void;
set(index: number, element: T): void;
clear(): void;
append(element: T): this;
appendAll(elements: Iterable<T>): this;
prepend(element: T): this;
prependAll(elements: Iterable<T>): this;
insert(idx: number, element: T): void;
insertAll(idx: number, elements: Iterable<T>): void;
remove(index: number, count?: number): void;
subtractOne(element: T): this;
subtractAll(elements: Iterable<T>): this;
sort(compareFn?: (a: T, b: T) => number): this;
filterInPlace(p: (element: T) => boolean): this;
dropInPlace(n: number): this;
dropRightInPlace(n: number): this;
takeInPlace(n: number): this;
takeRightInPlace(n: number): this;
sliceInPlace(start: number, end: number): this;
get toCollection(): Collection<T>;
flatMap<B>(f: (item: T) => ArrayBuffer<B>): ArrayBuffer<B>;
flatMapOption<B>(f: (item: T) => Option<B>): ArrayBuffer<B>;
flatMapPromise<B>(f: (item: T) => Promise<ArrayBuffer<B>>): Promise<ArrayBuffer<B>>;
map<B>(f: (item: T) => B): ArrayBuffer<B>;
mapPromise<B>(f: (v: T) => Promise<B>): Promise<ArrayBuffer<B>>;
mapPromiseAll<B>(f: (v: T) => Promise<B>): Promise<ArrayBuffer<B>>;
flatMapPromiseAll<B>(f: (v: T) => Promise<ArrayBuffer<B>>): Promise<ArrayBuffer<B>>;
flatten<B>(): ArrayBuffer<B>;
toMap<K, V>(mapper: (item: T) => [K, V]): HashMap<K, V>;
}