import { BaseType, ExtractArr, LengthOfString, RelationKeys, RelationObj } from "./utils"; import { Sort } from "./sort"; import { Filters } from "./filters"; type GenNode = IsRoot extends true ? `${K}` : `.${K}`; export type DeepPopulateArr = RelationKeys> = K extends string | number ? GenNode | (LengthOfString extends ML ? never : `${GenNode}${DeepPopulateArr>, ML, false, `${L}1`>}`) : never; export type PopulateObj = { [K in RelationKeys]?: (RelationObj extends Array ? { sort?: Sort; populate?: Populate>>; filters?: Filters; } : { populate?: Populate>>; }) | "*"; }; export type Populate = (DeepPopulateArr)[] | PopulateObj | "*" | "deep" | number | ["deep", number]; export {};