UNPKG

linqcontainers

Version:

Linq-Collections (ES5): [IEnumerable, IQueryable, ...] + [List, Dictionary, Stack, ... + readonly]

169 lines (168 loc) 8.76 kB
import { IOrderedEnumerable, IEnumerable, IQueryable, IKeyValue, IGrouping } from "./Enumerables"; import { Action, Selector, Aggregator, Predicate, Indexer, Type, Dynamic } from "./Types"; import { Comparer } from "./Comparers"; export declare abstract class EnumerableCollection<TElement> implements IQueryable<TElement> { abstract copy(): IQueryable<TElement>; abstract asEnumerable(): IEnumerable<TElement>; abstract toArray(): TElement[]; toList(): IList<TElement>; toDictionary<TKey extends Indexer, TValue>(keySelector: Selector<TElement, TKey>, valueSelector: Selector<TElement, TValue>): IDictionary<TKey, TValue>; reverse(): IEnumerable<TElement>; concat(other: TElement[] | IQueryable<TElement>, ...others: Array<TElement[] | IQueryable<TElement>>): IEnumerable<TElement>; contains(element: TElement): boolean; where(predicate: Predicate<TElement>): IEnumerable<TElement>; select<TSelectorOut>(selector: Selector<TElement, TSelectorOut>): IEnumerable<TSelectorOut>; selectMany<TSelectorOut>(selector: Selector<TElement, TSelectorOut[] | List<TSelectorOut> | IEnumerable<TSelectorOut>>): IEnumerable<TSelectorOut>; elementAt(index: number): TElement; except(other: IQueryable<TElement>): IEnumerable<TElement>; first(): TElement; first(predicate: Predicate<TElement>): TElement; groupBy<TKey extends Indexer>(keySelector: Selector<TElement, TKey>): IEnumerable<IGrouping<TKey, TElement>>; groupBy<TKey extends Indexer, TValue>(keySelector: Selector<TElement, TKey>, valueSelector: Selector<TElement, TValue>): IEnumerable<IGrouping<TKey, TValue>>; last(): TElement; last(predicate: Predicate<TElement>): TElement; single(): TElement; single(predicate: Predicate<TElement>): TElement; singleOrDefault(): TElement | undefined; singleOrDefault(predicate: Predicate<TElement>): TElement | undefined; distinct(): IEnumerable<TElement>; distinct<TKey>(keySelector: Selector<TElement, TKey>): IEnumerable<TElement>; min(): TElement; min<TSelectorOut>(selector: Selector<TElement, TSelectorOut>): TSelectorOut; orderBy<TKey>(keySelector: Selector<TElement, TKey>): IOrderedEnumerable<TElement>; orderBy<TKey>(keySelector: Selector<TElement, TKey>, comparer: Comparer<TKey>): IOrderedEnumerable<TElement>; orderByDescending<TKey>(keySelector: Selector<TElement, TKey>): IOrderedEnumerable<TElement>; max(): TElement; max<TSelectorOut>(selector: Selector<TElement, TSelectorOut>): TSelectorOut; sum(selector: Selector<TElement, number>): number; skip(amount: number): IEnumerable<TElement>; take(amount: number): IEnumerable<TElement>; union(other: IQueryable<TElement>): IEnumerable<TElement>; aggregate(aggregator: Aggregator<TElement, TElement | undefined>): TElement; aggregate<TValue>(aggregator: Aggregator<TElement, TValue>, initialValue: TValue): TValue; any(): boolean; any(predicate: Predicate<TElement>): boolean; all(predicate: Predicate<TElement>): boolean; average(selector: Selector<TElement, number>): number; count(): number; count(predicate: Predicate<TElement>): number; elementAtOrDefault(index: number): TElement | undefined; firstOrDefault(): TElement | undefined; firstOrDefault(predicate: Predicate<TElement>): TElement | undefined; lastOrDefault(): TElement | undefined; lastOrDefault(predicate: Predicate<TElement>): TElement | undefined; forEach(action: Action<TElement>): void; } export declare abstract class ArrayQueryable<TElement> extends EnumerableCollection<TElement> { protected source: TElement[]; abstract copy(): IQueryable<TElement>; constructor(); constructor(elements: TElement[]); asArray(): TElement[]; toArray(): TElement[]; toList(): IList<TElement>; asEnumerable(): IEnumerable<TElement>; aggregate(aggregator: Aggregator<TElement, TElement | undefined>): TElement; aggregate<TValue>(aggregator: Aggregator<TElement, TValue>, initialValue: TValue): TValue; any(): boolean; any(predicate: Predicate<TElement>): boolean; all(predicate: Predicate<TElement>): boolean; average(selector: Selector<TElement, number>): number; count(): number; count(predicate: Predicate<TElement>): number; elementAtOrDefault(index: number): TElement | undefined; firstOrDefault(): TElement | undefined; firstOrDefault(predicate: Predicate<TElement>): TElement | undefined; groupBy<TKey extends Indexer>(keySelector: Selector<TElement, TKey>): IEnumerable<IGrouping<TKey, TElement>>; groupBy<TKey extends Indexer, TValue>(keySelector: Selector<TElement, TKey>, valueSelector: Selector<TElement, TValue>): IEnumerable<IGrouping<TKey, TValue>>; lastOrDefault(): TElement | undefined; lastOrDefault(predicate: Predicate<TElement>): TElement | undefined; forEach(action: Action<TElement>): void; } export interface IReadOnlyList<TElement> extends IQueryable<TElement> { copy(): IList<TElement>; get(index: number): TElement | undefined; indexOf(element: TElement): number; } export interface IList<TElement> extends IReadOnlyList<TElement> { asReadOnly(): IReadOnlyList<TElement>; asArray(): TElement[]; clear(): void; push(element: TElement): number; pushRange(elements: TElement[] | IQueryable<TElement>): number; pushFront(element: TElement): number; pop(): TElement | undefined; popFront(): TElement | undefined; remove(element: TElement): void; removeAt(index: number): TElement | undefined; set(index: number, element: TElement): void; insert(index: number, element: TElement): void; } export declare class List<TElement> extends ArrayQueryable<TElement> implements IList<TElement> { copy(): IList<TElement>; asReadOnly(): IReadOnlyList<TElement>; clear(): void; remove(element: TElement): void; removeAt(index: number): TElement | undefined; get(index: number): TElement | undefined; push(element: TElement): number; pushRange(elements: TElement[] | IQueryable<TElement>): number; pushFront(element: TElement): number; pop(): TElement | undefined; popFront(): TElement | undefined; set(index: number, element: TElement): void; insert(index: number, element: TElement): void; indexOf(element: TElement): number; } export interface IStack<TElement> extends IQueryable<TElement> { copy(): IStack<TElement>; asArray(): TElement[]; clear(): void; peek(): TElement | undefined; pop(): TElement | undefined; push(element: TElement): number; } export declare class Stack<TElement> extends ArrayQueryable<TElement> implements IStack<TElement> { copy(): IStack<TElement>; clear(): void; peek(): TElement | undefined; pop(): TElement | undefined; push(element: TElement): number; } export interface IReadOnlyDictionary<TKey extends Indexer, TValue> extends IQueryable<IKeyValue<TKey, TValue>> { copy(): IDictionary<TKey, TValue>; containsKey(key: TKey): boolean; containsValue(value: TValue): boolean; getKeys(): IList<TKey>; getValues(): IList<TValue>; get(key: TKey): TValue; } export interface IDictionary<TKey extends Indexer, TValue> extends IReadOnlyDictionary<TKey, TValue> { asReadOnly(): IReadOnlyDictionary<TKey, TValue>; clear(): void; remove(key: TKey): void; set(key: TKey, value: TValue): void; setOrUpdate(key: TKey, value: TValue): void; } export declare class Dictionary<TKey extends Indexer, TValue> extends EnumerableCollection<IKeyValue<TKey, TValue>> implements IDictionary<TKey, TValue> { static fromArray<TArray, TKey extends Indexer, TValue>(array: TArray[], keySelector: Selector<TArray, TKey>, valueSelector: Selector<TArray, TValue>): IDictionary<TKey, TValue>; static fromJsObject<TValue = string>(object: Dynamic): IDictionary<string, TValue>; protected dictionary: Dynamic; protected keyType: Type; constructor(); constructor(keyValuePairs: Array<IKeyValue<TKey, TValue>>); copy(): IDictionary<TKey, TValue>; asReadOnly(): IReadOnlyDictionary<TKey, TValue>; asEnumerable(): IEnumerable<IKeyValue<TKey, TValue>>; toArray(): Array<IKeyValue<TKey, TValue>>; clear(): void; containsKey(key: TKey): boolean; containsValue(value: TValue): boolean; getKeys(): IList<TKey>; protected getKeysFast(): string[]; getValues(): IList<TValue>; remove(key: TKey): void; get(key: TKey): TValue; set(key: TKey, value: TValue): void; setOrUpdate(key: TKey, value: TValue): void; }