firelordjs
Version:
🔥 High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience
5 lines (4 loc) • 710 B
TypeScript
import { MetaType } from '../metaTypeCreator';
import { QueryConstraints, OrderByConstraint } from '../queryConstraints';
export type GetFirstOrderBy<T extends MetaType, QCs extends readonly QueryConstraints[]> = QCs extends [infer H, ...infer Rest] ? H extends OrderByConstraint<string> ? H : Rest extends readonly QueryConstraints[] ? GetFirstOrderBy<T, Rest> : never : true;
export type GetAllOrderBy<T extends MetaType, QCs extends readonly QueryConstraints[], AllOrderBy extends OrderByConstraint<string>[]> = QCs extends [infer H, ...infer Rest] ? Rest extends readonly QueryConstraints[] ? GetAllOrderBy<T, Rest, H extends OrderByConstraint<string> ? [...AllOrderBy, H] : AllOrderBy> : [] : AllOrderBy;