diff --git a/ts/classes.doc.ts b/ts/classes.doc.ts index 03bee56..1edf03c 100644 --- a/ts/classes.doc.ts +++ b/ts/classes.doc.ts @@ -151,6 +151,12 @@ export function index(options?: IIndexOptions) { }; } +// Helper type to extract element type from arrays or return T itself +type ElementOf = T extends ReadonlyArray ? U : T; + +// Type for $in/$nin values - arrays of the element type +type InValues = ReadonlyArray>; + // Type that allows MongoDB operators on leaf values while maintaining nested type safety export type MongoFilterCondition = T | { $eq?: T; @@ -159,15 +165,15 @@ export type MongoFilterCondition = T | { $gte?: T; $lt?: T; $lte?: T; - $in?: T extends (infer U)[] ? U[] | U : T[]; - $nin?: T extends (infer U)[] ? U[] | U : T[]; + $in?: InValues; + $nin?: InValues; $exists?: boolean; $type?: string | number; $regex?: string | RegExp; $options?: string; - $all?: T extends (infer U)[] ? U[] : never; - $elemMatch?: T extends (infer U)[] ? MongoFilter : never; - $size?: T extends any[] ? number : never; + $all?: T extends ReadonlyArray ? ReadonlyArray : never; + $elemMatch?: T extends ReadonlyArray ? MongoFilter : never; + $size?: T extends ReadonlyArray ? number : never; $not?: MongoFilterCondition; };