From 53fa2492dab91cf4e273f07d80e24a6717904904 Mon Sep 17 00:00:00 2001 From: Florian Richter Date: Mon, 8 Oct 2018 23:28:49 +0200 Subject: [PATCH] mongodb: Fixed incomplete types from #29429 (#29546) * mongodb: Fixed incomplete types (#29429) * mongodb: Small fixes --- types/mongodb/index.d.ts | 100 +++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/types/mongodb/index.d.ts b/types/mongodb/index.d.ts index 03ff37a76d..3434cb070c 100644 --- a/types/mongodb/index.d.ts +++ b/types/mongodb/index.d.ts @@ -18,6 +18,7 @@ // Angela-1 // Mikael Lirbank // Hector Ribes +// Florian Richter // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -818,56 +819,65 @@ export interface Collection { watch(pipeline?: Object[], options?: ChangeStreamOptions & { startAtClusterTime?: Timestamp, session?: ClientSession }): ChangeStream; } +type Condition = { + $eq?: T[P]; + $gt?: T[P]; + $gte?: T[P]; + $in?: T[P][]; + $lt?: T[P]; + $lte?: T[P]; + $ne?: T[P]; + $nin?: T[P][]; + $and?: (FilterQuery | T[P])[]; + $or?: (FilterQuery | T[P])[]; + $not?: (FilterQuery | T[P])[] | T[P]; + $expr?: any; + $jsonSchema?: any; + $mod?: [number, number]; + $regex?: RegExp; + $options?: string; + $text?: { + $search: string; + $language?: string; + $caseSensitive?: boolean; + $diacraticSensitive?: boolean; + }; + $where: Object; + $geoIntersects?: Object; + $geoWithin?: Object; + $near?: Object; + $nearSphere?: Object; + $elemMatch?: Object; + $size?: number; + $bitsAllClear?: Object; + $bitsAllSet?: Object; + $bitsAnyClear?: Object; + $bitsAnySet?: Object; + [key: string]: any; +}; + /** https://docs.mongodb.com/manual/reference/operator/update */ export type UpdateQuery = { - $inc: { [P in keyof T]?: number } | { [key: string]: number }, - $min: { [P in keyof T]?: number } | { [key: string]: number }, - $max: { [P in keyof T]?: number } | { [key: string]: number }, - $mul: { [P in keyof T]?: number } | { [key: string]: number }, - $set: Partial | { [key: string]: any }, - $setOnInsert: Partial | { [key: string]: any }, - $unset: { [P in keyof T]?: '' } | { [key: string]: '' }, - $rename: { [key: string]: keyof T } | { [key: string]: string }, - $currentDate: { [P in keyof T]?: (true | { $type: 'timestamp' }) } | { [key: string]: (true | { $type: 'timestamp' }) }, + $inc?: { [P in keyof T]?: number } | { [key: string]: number }; + $min?: { [P in keyof T]?: number } | { [key: string]: number }; + $max?: { [P in keyof T]?: number } | { [key: string]: number }; + $mul?: { [P in keyof T]?: number } | { [key: string]: number }; + $set?: Partial | { [key: string]: any }; + $setOnInsert?: Partial | { [key: string]: any }; + $unset?: { [P in keyof T]?: '' } | { [key: string]: '' }; + $rename?: { [key: string]: keyof T } | { [key: string]: string }; + $currentDate?: { [P in keyof T]?: (true | { $type: 'timestamp' }) } | { [key: string]: (true | { $type: 'timestamp' }) }; + $addToSet?: Partial | { [key: string]: any }; + $pop?: { [P in keyof T]?: -1 | 1 } | { [key: string]: -1 | 1 }; + $pull?: Partial | { [key: string]: Condition }; + $push?: Partial | { [key: string]: any }; + $pushAll?: Partial | { [key: string]: Array }; + $each?: Partial | { [key: string]: Array }; + $bit?: { [P in keyof T]?: any } | { [key: string]: any }; }; export type FilterQuery = { - [P in keyof T]?: T[P] | { - $eq?: T[P]; - $gt?: T[P]; - $gte?: T[P]; - $in?: T[P][]; - $lt?: T[P]; - $lte?: T[P]; - $ne?: T[P]; - $nin?: T[P][]; - $and?: (FilterQuery | T[P])[]; - $or?: (FilterQuery | T[P])[]; - $not?: (FilterQuery | T[P])[] | T[P]; - $expr?: any; - $jsonSchema?: any; - $mod?: [number, number]; - $regex?: RegExp; - $options?: string; - $text?: { - $search: string; - $language?: string; - $caseSensitive?: boolean; - $diacraticSensitive?: boolean; - }; - $where: Object; - $geoIntersects?: Object; - $geoWithin?: Object; - $near?: Object; - $nearSphere?: Object; - $elemMatch?: Object; - $size?: number; - $bitsAllClear?: Object; - $bitsAllSet?: Object; - $bitsAnyClear?: Object; - $bitsAnySet?: Object; - [key: string]: any; - }; + [P in keyof T]?: T[P] | Condition; } | { [key: string]: any }; // Documentation: http://docs.mongodb.org/manual/reference/command/collStats/