@berish/linq
Version:
LINQ - very usefull helper for working with arrays and collections
56 lines (55 loc) • 3.73 kB
TypeScript
import Decimal from 'decimal.js';
type CallbackType<T, Response> = (item: T, index: number, linq: LINQ<T>) => Response;
type CallbackWithAccumType<T, Response, Accum> = (item: T, index: number, linq: LINQ<T>, accum: Accum) => Response;
type CallbackCompareType<T, Response> = (a: T, b: T) => Response;
type CallbackOnlyItemType<T, Response> = (item: T) => Response;
type OfTypeStringValues = 'string' | 'number' | 'bigint' | 'boolean' | 'symbol' | 'undefined' | 'object' | 'function';
export default class LINQ<T> extends Array<T> {
static from<T>(items?: T[] | LINQ<T>): LINQ<T>;
static isLINQ(data: any): data is LINQ<any>;
toArray(): T[];
clone(): LINQ<T>;
equals(linq: any[]): boolean;
equalsValues<K>(linq: any[], selectFunc?: CallbackType<T, K>): boolean;
where(whereFunc?: CallbackType<T, boolean>): LINQ<T>;
whereInSelect<K>(selectFunc: CallbackType<T, K>, whereFunc: CallbackType<K, boolean>): LINQ<T>;
whereInSelectWithAccum<K, Accum = LINQ<K>>(selectFunc: CallbackType<T, K>, getAccumFunc: (selected: LINQ<K>, linq: LINQ<T>) => Accum, whereFunc: CallbackWithAccumType<K, boolean, Accum>): LINQ<T>;
select(): LINQ<T>;
select<K>(selectFunc: CallbackType<T, K>): LINQ<K>;
selectMany<K>(selectFunc?: CallbackType<T, K[]>): LINQ<K>;
take(count: number): LINQ<T>;
skip(count: number): LINQ<T>;
count(whereFunc?: CallbackType<T, boolean>): number;
indexWhere(whereFunc?: CallbackType<T, boolean>): LINQ<number>;
elementsAtIndex(indexes: number[]): LINQ<T>;
notNull<K>(selectFunc?: CallbackType<T, K>): LINQ<T>;
notEmpty<K>(selectFunc?: CallbackType<T, K>): LINQ<T>;
first(whereFunc?: CallbackType<T, boolean>): T;
last(whereFunc?: CallbackType<T, boolean>): T;
distinct<K>(selectFunc?: CallbackType<T, K>): LINQ<T>;
max(numberFunc?: CallbackType<T, Decimal.Value>): LINQ<T>;
maxValue(numberFunc?: CallbackType<T, Decimal.Value>): Decimal;
min(numberFunc?: CallbackType<T, Decimal.Value>): LINQ<T>;
minValue(numberFunc?: CallbackType<T, Decimal.Value>): Decimal;
ofType<Type extends new (...args: any[]) => any, K>(type: OfTypeStringValues | OfTypeStringValues[] | Type | Type[] | (OfTypeStringValues | Type)[], selectFunc?: CallbackType<T, K>): LINQ<T>;
orderByAscending<K>(sortSelectFunc?: CallbackOnlyItemType<T, K>): LINQ<T>;
orderByDescending<K>(sortSelectFunc?: CallbackOnlyItemType<T, K>): LINQ<T>;
sum(selectFunc?: CallbackType<T, Decimal.Value>): Decimal;
except<K>(items: T | T[] | LINQ<T>, selectFunc?: CallbackType<T, K>): LINQ<T>;
groupBy<K>(selectFunc: CallbackType<T, K>, compareKeyFunc?: CallbackCompareType<K, boolean>): LINQ<[K, LINQ<T>]>;
contains<K>(value: T, selectFunc?: CallbackOnlyItemType<T, K>): boolean;
containsAll<K>(value: T[] | LINQ<T>, selectFunc?: CallbackType<T, K>): boolean;
average(selectFunc?: CallbackType<T, Decimal.Value>, whereFunc?: CallbackType<T, boolean>): Decimal;
intersect<K>(items: T | T[] | LINQ<T>, selectFunc?: CallbackType<T, K>): LINQ<T>;
reverse(): LINQ<T>;
concat(...items: ConcatArray<T>[]): LINQ<T>;
concat(...items: (T | ConcatArray<T>)[]): LINQ<T>;
concat(...items: (T | ConcatArray<T> | LINQ<T>)[]): LINQ<T>;
slice(start?: number, end?: number): LINQ<T>;
splice(start: number, deleteCount?: number): LINQ<T>;
splice(start: number, deleteCount: number, ...items: T[]): LINQ<T>;
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): LINQ<U>;
filter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): LINQ<S>;
filter(callbackfn: (value: T, index: number, array: T[]) => unknown, thisArg?: any): LINQ<T>;
}
export {};