UNPKG

marko

Version:

Optimized runtime for Marko templates.

32 lines (31 loc) 2.15 kB
export type Many<T> = [T, T, ...T[]]; export type OneMany<T> = T | Many<T>; export type Opt<T> = undefined | OneMany<T>; export type Compare<T> = (a: T, b: T) => number; export declare class Sorted<T> { compare: Compare<T>; constructor(compare: Compare<T>); add<U extends NonNullable<T>>(data: Opt<U>, item: U): OneMany<U>; union<U extends NonNullable<T>>(a: Opt<U>, b: Opt<U>): Opt<U>; find<U extends NonNullable<T>>(data: Opt<U>, item: U): U | undefined; has<U extends NonNullable<T>>(data: Opt<U>, item: U): boolean; findIndex<U extends NonNullable<T>>(data: Opt<U>, item: U): number; groupBy<U extends NonNullable<T>, K>(data: Opt<U>, cb: (item: U) => K): Map<K, OneMany<U>>; isSuperset<U extends NonNullable<T>>(superset: Opt<U>, subset: Opt<U>): boolean; } export declare function push<T>(data: Opt<T>, item: T): OneMany<T>; export declare function concat<T>(a: Opt<T>, b: Opt<T>): Opt<T>; export declare function size<T>(data: Opt<T>): number; export declare function filter<T>(data: Opt<T>, cb: (item: T) => boolean): Opt<T>; export declare function forEach<T>(data: Opt<T>, cb: (item: T, index: number) => void): void; export declare function fromIter<T>(data: Iterable<T>): T | Many<T> | undefined; export declare function toIter<T>(data: Opt<T>): Iterable<T>; export declare function includes<T>(data: Opt<T>, item: T): boolean; export declare function find<T>(data: Opt<T>, cb: (item: T, index: number) => boolean): Opt<T>; export declare function some<T>(data: Opt<T>, cb: (item: T, index: number) => boolean): boolean; export declare function toArray<T, R>(data: Opt<T>, cb: (item: T, index: number) => R): R[]; export declare function mapToString<T>(data: Opt<T>, sep: string, cb: (item: T, index: number) => string): string; export declare function filterMap<T, R>(data: Opt<T>, cb: (item: T) => undefined | R): Opt<R>; export declare function findSorted<T>(compare: Compare<T>, data: T[], item: T): T | undefined; export declare function findIndexSorted<T>(compare: Compare<T>, data: T[], item: T): number; export declare function addSorted<T, U extends T[]>(compare: Compare<T>, data: U, item: T): U;