UNPKG

doddle

Version:

Tiny yet feature-packed (async) iteration toolkit.

132 lines (128 loc) 5.4 kB
export type Get_Concat_Element_Type<T, S> = T extends never ? never : S /** * The stage of yielding at which a function should be called. * * @inline */ export type EachCallStage = "before" | "after" | "both" | undefined /** * Options for `takeWhile` and similar predicate-based subsequence operations. * * @inline */ export interface TakeWhileOptions { takeFinal?: boolean } /** * Options for `skipWhile` and similar predicate-based skipping operators. * * @inline */ export interface SkipWhileOptions { /** Whether to skip the boundary element for which the predicate returns `false`. */ skipFinal?: boolean } export const enum SkippingMode { None = 0, Skipping = 1, NotSkipping = 2 } type neverToUndefined<T> = T extends never ? undefined : T export type getZipValuesType<Xs extends [any, ...any[]]> = { [K in keyof Xs]: neverToUndefined<Xs[K]> | undefined } export type getWindowArgsType<T, L> = L extends 0 ? [] : number extends L ? [T, ...(T | undefined)[]] : L extends 1 ? [T] : L extends 2 ? [T, T?] : L extends 3 ? [T, T?, T?] : L extends 4 ? [T, T?, T?, T?] : L extends 5 ? [T, T?, T?, T?, T?] : L extends 6 ? [T, T?, T?, T?, T?, T?] : L extends 7 ? [T, T?, T?, T?, T?, T?, T?] : L extends 8 ? [T, T?, T?, T?, T?, T?, T?, T?] : L extends 9 ? [T, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 10 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 11 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 12 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 13 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 14 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?] : L extends 15 ? [T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?] : [ T, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, ...T[] ] export type getWindowOutputType<T, L> = L extends 0 ? [] : number extends L ? [T, ...T[]] : L extends 1 ? [T] : L extends 2 ? [T, T] | getWindowOutputType<T, 1> : L extends 3 ? [T, T, T] | getWindowOutputType<T, 2> : L extends 4 ? [T, T, T, T] | getWindowOutputType<T, 3> : L extends 5 ? [T, T, T, T, T] | getWindowOutputType<T, 4> : L extends 6 ? [T, T, T, T, T, T] | getWindowOutputType<T, 5> : L extends 7 ? [T, T, T, T, T, T, T] | getWindowOutputType<T, 6> : L extends 8 ? [T, T, T, T, T, T, T, T] | getWindowOutputType<T, 7> : L extends 9 ? [T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 8> : L extends 10 ? [T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 9> : L extends 11 ? [T, T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 10> : L extends 12 ? [T, T, T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 11> : L extends 13 ? | [T, T, T, T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 12> : L extends 14 ? | [T, T, T, T, T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 13> : L extends 15 ? | [T, T, T, T, T, T, T, T, T, T, T, T, T, T, T] | getWindowOutputType<T, 14> : | [T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, ...T[]] | getWindowOutputType<T, 15>