anux-common
Version:
[](https://travis-ci.com/Anupheaus/anux-common) [](https://www.codacy.com/app/Anuphea
83 lines (82 loc) • 3.81 kB
TypeScript
import './object';
import { MapDelegate, SimpleMapDelegate, IArrayOrderByConfig, IArrayDiff, IMergeWithOptions } from '../models';
import { SortDirections } from '../models/sort';
import { DeepPartial, Record, TypeOf, Upsertable, Updatable, IsPrimitiveOrRecordType } from './global';
import './reflect';
declare type FilterDelegate<T> = (item: T, index: number) => boolean;
declare type UpdateDelegate<T> = MapDelegate<T, DeepPartial<T>>;
declare type CalculationDelegate<T> = (item: T, index: number, prevItem: T, nextItem: T) => number;
declare type DiffMatcherDelegate<T, P> = (sourceItem: T, targetItem: P, sourceIndex: number, targetIndex: number) => boolean;
declare type RemoveNull<T> = Exclude<T, null | undefined>;
export declare class ArrayExtensions<T> {
mapMany<V>(map: MapDelegate<T, V[]>): V[];
ofType<V>(type: TypeOf<V>): V[];
ofType(type: 'string'): string[];
ofType(type: 'number'): number[];
cast<V>(): V[];
single(): T | undefined;
single(filter: FilterDelegate<T>): T | undefined;
first(): T | undefined;
first(filter: FilterDelegate<T>): T | undefined;
last(): T | undefined;
last(filter: FilterDelegate<T>): T | undefined;
clone(): T[];
remove(item: T): T[];
removeAt(index: number): T[];
removeByFilter(filter: FilterDelegate<T>): T[];
removeById(id: string): T[];
indexOfId(id: string): number;
findById(id: string): T | undefined;
upsert(item: Upsertable<IsPrimitiveOrRecordType<T>>): T[];
upsert(item: Upsertable<IsPrimitiveOrRecordType<T>>, index: number): T[];
upsertMany(this: T[], items: Upsertable<IsPrimitiveOrRecordType<T>>[], newIndex?: number): T[];
upsertWhere(filter: FilterDelegate<T>, update: UpdateDelegate<T | undefined>): T[];
replace(item: T): T[];
replace(item: T, index: number): T[];
replaceMany(items: T[]): T[];
replaceMany(items: T[], index: number): T[];
update(item: Updatable<T & Record>): T[];
update(filter: FilterDelegate<T>, update: UpdateDelegate<T>): T[];
insert(item: T): T[];
insert(item: T, index: number): T[];
chunk(size: number): T[][];
clear(): void;
move(from: number, to: number): T[];
orderBy<R>(sorterDelegate: SimpleMapDelegate<T, R>): T[];
orderBy<R>(sorterDelegate: SimpleMapDelegate<T, R>, direction: SortDirections): T[];
orderBy(config: IArrayOrderByConfig<T>[]): T[];
removeNull(): RemoveNull<T>[];
except(array: T[]): T[];
except<U extends Record>(array: U[]): T[];
distinct(): T[];
distinct<V>(delegate: MapDelegate<T, V>): T[];
equals(array: T[]): boolean;
equals(array: T[], ignoreOrder: boolean): boolean;
sum(): number;
sum(delegate: CalculationDelegate<T>): number;
min(): number;
min(delegate: CalculationDelegate<T>): number;
max(): number;
max(delegate: CalculationDelegate<T>): number;
average(): number;
average(delegate: CalculationDelegate<T>): number;
absorb(array: T[]): T[];
any(): T;
takeUntil(this: T[], delegate: FilterDelegate<T>): T[];
takeUntil(this: T[], delegate: FilterDelegate<T>, andIncluding: boolean): T[];
diff<P extends Record>(items: P[]): IArrayDiff<T, P>;
diff<P>(items: P[], matcher: DiffMatcherDelegate<T, P>): IArrayDiff<T, P>;
ids(): string[];
mergeWith<P>(items: P[]): T[];
mergeWith<P>(items: P[], options: IMergeWithOptions<T, P>): T[];
syncWith<P>(items: P[]): T[];
syncWith<P>(items: P[], options: IMergeWithOptions<T, P>): T[];
take(count: number): T[];
takeLast(count: number): T[];
skip(count: number): T[];
}
export declare class ArrayConstructorExtensions {
ofSize<T = any>(length: number): T[];
empty(): Readonly<any[]>;
}
export {};