react-querybuilder
Version:
React Query Builder component for constructing queries and filters, with utilities for executing them in various database and evaluation contexts
20 lines (19 loc) • 1.16 kB
text/typescript
type MAXIMUM_ALLOWED_NUMBER = 45;
type MappedNumber<
N extends number,
Result extends Array<unknown> = []
> = Result["length"] extends N ? Result : MappedNumber<N, [...Result, Result["length"]]>;
type NumberRange = MappedNumber<MAXIMUM_ALLOWED_NUMBER>[number];
type OddEnd = "1" | "3" | "5" | "7" | "9";
type IsOdd<T extends `${number}`> = T extends `${infer Int}${infer Rest}` ? Rest extends "" ? Int extends OddEnd ? true : false : Rest extends `${number}` ? IsOdd<Rest> : false : false;
type Compare<Num extends number> = Num extends number ? IsOdd<`${Num}`> extends true ? Num : never : never;
type OddRange = Compare<NumberRange>;
export type OddRangeWithZero = OddRange | 0;
export declare const isOddOrZero: (n: number) => n is OddRangeWithZero;
type MAXIMUM_ALLOWED_BOUNDARY = 80;
export type MappedTuple<
Tuple extends Array<unknown>,
Result extends Array<unknown> = [],
Count extends ReadonlyArray<number> = []
> = Count["length"] extends MAXIMUM_ALLOWED_BOUNDARY ? Result : Tuple extends [] ? [] : Result extends [] ? MappedTuple<Tuple, Tuple, [...Count, 1]> : MappedTuple<Tuple, Result | [...Result, ...Tuple], [...Count, 1]>;
export {};