UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

79 lines (78 loc) 3.59 kB
import { List } from './List'; import { Construct } from './Constructor'; import { PlainSort, Sort } from './Sort'; import { GetProperty } from './Get'; import { ArrayLike } from './Array'; import { Optional } from './Types'; import type { Id } from './Id'; export type FilterValue = { label?: string; value: any; count?: number; }; export type Filter = { label?: string; field: string; shortField?: string; values: FilterValue[]; }; export declare const toFilter: (field: string, value: any) => Filter; export declare const toShortFilter: (field: string, shortField: string, value: any) => Filter; export type PageOptions = { take?: number; skip?: number; sort?: Sort[]; sorts?: PlainSort; filters?: Filter[]; }; export type PageListOptions = Exclude<PageOptions, 'sort'> & { total?: number; }; export declare class PageList<T = unknown> extends List<T> { private _options?; get options(): Optional<PageListOptions>; get take(): number; get skip(): number; get total(): Optional<number>; get sorts(): Optional<PlainSort>; get filters(): Optional<Filter[]>; get meta(): PageListOptions; get ids(): PageList<Id>; asc(p: GetProperty<T, any>): PageList<T>; desc(p: GetProperty<T, any>): PageList<T>; diff(others: ArrayLike<T>): PageList<T>; diffByKey<U = T>(others: ArrayLike<U>, key: keyof T & keyof U): PageList<T>; symmetricDiff(others: ArrayLike<T>): PageList<T>; symmetricDiffByKey(others: ArrayLike<T>, key: keyof T): PageList<T>; intersect(others: ArrayLike<T>): PageList<T>; intersectByKey<U>(others: ArrayLike<U>, key: keyof T & keyof U): PageList<T>; map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<U>; flatMap<U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray<U> | U, params?: This): PageList<U>; mapDefined<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<NonNullable<U>>; mapAsync(f: (i: T) => Promise<T>): Promise<PageList<T>>; areEqual(...items: ArrayLike<T>): boolean; distinct(): PageList<T>; distinctByKey(key: keyof T): PageList<T>; distinctByValue(): PageList<T>; filter(p: (value: T, index: number, array: T[]) => unknown, params?: unknown): PageList<T>; accumulate(...keys: (keyof T)[]): PageList<T>; concat(...items: ConcatArray<T>[]): PageList<T>; concat(...items: (T | ConcatArray<T>)[]): PageList<T>; reverse(): PageList<T>; splice(start: number, deleteCount?: number): PageList<T>; splice(start: number, deleteCount: number, ...items: T[]): PageList<T>; remove(item: T): PageList<T>; replace(key: keyof T, item: T): PageList<T>; switch(item: T): PageList<T>; defined(): PageList<NonNullable<T>>; orElse(...alt: ArrayLike<T>): Optional<PageList<T>>; slice(start?: number, end?: number): PageList<T>; update<U = T>(p: (value: T, index: number, array: T[]) => unknown, val: T | ((v: U) => T)): PageList<T>; updateFirst<U = T>(p: (value: T, index: number, array: T[]) => unknown, val: T | ((v: U) => T)): PageList<T>; updateFirstById<U = T>(id: Id, val: T | ((v: U) => T)): PageList<T>; updateById<U = T>(id: Id, val: T | ((v: U) => T)): PageList<T>; private setPageOptions; } export declare const isPageList: <T>(l?: unknown) => l is PageList<T>; export declare const toPageList: <T>(items?: T[], options?: PageListOptions | PageList) => PageList<T>; export declare const asPageList: <T, U>(c: Construct<T>, items?: PageList<U>) => PageList<T>;