From 71d4abf45145adab53ddb1150a866fc0a2a31ca0 Mon Sep 17 00:00:00 2001 From: Sean Derrow Date: Mon, 26 Feb 2024 01:15:27 -0500 Subject: [PATCH 1/3] [fix] MongooseQueryOptions typing --- types/models.d.ts | 10 +++++----- types/query.d.ts | 37 +++++++++++++++++++++---------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/types/models.d.ts b/types/models.d.ts index a77aa25525e..2a1b73aa05a 100644 --- a/types/models.d.ts +++ b/types/models.d.ts @@ -228,7 +228,7 @@ declare module 'mongoose' { /** Creates a `countDocuments` query: counts the number of documents that match `filter`. */ countDocuments( filter?: FilterQuery, - options?: (mongodb.CountOptions & Omit, 'lean' | 'timestamps'>) | null + options?: (mongodb.CountOptions & MongooseBaseQueryOptions) | null ): QueryWithHelpers< number, THydratedDocumentType, @@ -266,7 +266,7 @@ declare module 'mongoose' { */ deleteMany( filter?: FilterQuery, - options?: (mongodb.DeleteOptions & Omit, 'lean' | 'timestamps'>) | null + options?: (mongodb.DeleteOptions & MongooseBaseQueryOptions) | null ): QueryWithHelpers< mongodb.DeleteResult, THydratedDocumentType, @@ -291,7 +291,7 @@ declare module 'mongoose' { */ deleteOne( filter?: FilterQuery, - options?: (mongodb.DeleteOptions & Omit, 'lean' | 'timestamps'>) | null + options?: (mongodb.DeleteOptions & MongooseBaseQueryOptions) | null ): QueryWithHelpers< mongodb.DeleteResult, THydratedDocumentType, @@ -743,14 +743,14 @@ declare module 'mongoose' { updateMany( filter?: FilterQuery, update?: UpdateQuery | UpdateWithAggregationPipeline, - options?: (mongodb.UpdateOptions & Omit, 'lean'>) | null + options?: (mongodb.UpdateOptions & MongooseUpdateQueryOptions) | null ): QueryWithHelpers; /** Creates a `updateOne` query: updates the first document that matches `filter` with `update`. */ updateOne( filter?: FilterQuery, update?: UpdateQuery | UpdateWithAggregationPipeline, - options?: (mongodb.UpdateOptions & Omit, 'lean'>) | null + options?: (mongodb.UpdateOptions & MongooseUpdateQueryOptions) | null ): QueryWithHelpers; /** Creates a Query, applies the passed conditions, and returns the Query. */ diff --git a/types/query.d.ts b/types/query.d.ts index 0bdda904350..1bfb4950647 100644 --- a/types/query.d.ts +++ b/types/query.d.ts @@ -17,25 +17,30 @@ declare module 'mongoose' { */ type FilterQuery = _FilterQuery; - type MongooseQueryOptions = Pick< - QueryOptions, - 'context' | - 'lean' | - 'multipleCastError' | - 'overwriteDiscriminatorKey' | - 'populate' | - 'runValidators' | - 'sanitizeProjection' | - 'sanitizeFilter' | - 'setDefaultsOnInsert' | - 'strict' | - 'strictQuery' | - 'timestamps' | - 'translateAliases' - > & { + type MongooseBaseQueryOptionKeys = + | "context" + | "multipleCastError" + | "overwriteDiscriminatorKey" + | "populate" + | "runValidators" + | "sanitizeProjection" + | "sanitizeFilter" + | "setDefaultsOnInsert" + | "strict" + | "strictQuery" + | "translateAliases"; + + type MongooseQueryOptions< + DocType = unknown, + Keys extends keyof QueryOptions = MongooseBaseQueryOptionKeys | "timestamps" | "lean" + > = Pick, Keys> & { [other: string]: any; }; + type MongooseBaseQueryOptions = MongooseQueryOptions; + + type MongooseUpdateQueryOptions = MongooseQueryOptions; + type ProjectionFields = { [Key in keyof DocType]?: any } & Record; type QueryWithHelpers = Query & THelpers; From ec781d560f8e0c556fb3e1d6305a3cc0407dce95 Mon Sep 17 00:00:00 2001 From: Sean Derrow Date: Mon, 26 Feb 2024 01:34:02 -0500 Subject: [PATCH 2/3] Lint --- types/query.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/types/query.d.ts b/types/query.d.ts index 1bfb4950647..f450182ffdb 100644 --- a/types/query.d.ts +++ b/types/query.d.ts @@ -39,7 +39,10 @@ declare module 'mongoose' { type MongooseBaseQueryOptions = MongooseQueryOptions; - type MongooseUpdateQueryOptions = MongooseQueryOptions; + type MongooseUpdateQueryOptions = MongooseQueryOptions< + DocType, + MongooseBaseQueryOptionKeys | "timestamps" + >; type ProjectionFields = { [Key in keyof DocType]?: any } & Record; From 4df404b1f4d143b79fc3eb40751b7f7525b1e27b Mon Sep 17 00:00:00 2001 From: Sean Derrow Date: Mon, 26 Feb 2024 02:02:16 -0500 Subject: [PATCH 3/3] More lint --- types/query.d.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/types/query.d.ts b/types/query.d.ts index f450182ffdb..6d53f4f473e 100644 --- a/types/query.d.ts +++ b/types/query.d.ts @@ -18,21 +18,21 @@ declare module 'mongoose' { type FilterQuery = _FilterQuery; type MongooseBaseQueryOptionKeys = - | "context" - | "multipleCastError" - | "overwriteDiscriminatorKey" - | "populate" - | "runValidators" - | "sanitizeProjection" - | "sanitizeFilter" - | "setDefaultsOnInsert" - | "strict" - | "strictQuery" - | "translateAliases"; + | 'context' + | 'multipleCastError' + | 'overwriteDiscriminatorKey' + | 'populate' + | 'runValidators' + | 'sanitizeProjection' + | 'sanitizeFilter' + | 'setDefaultsOnInsert' + | 'strict' + | 'strictQuery' + | 'translateAliases'; type MongooseQueryOptions< DocType = unknown, - Keys extends keyof QueryOptions = MongooseBaseQueryOptionKeys | "timestamps" | "lean" + Keys extends keyof QueryOptions = MongooseBaseQueryOptionKeys | 'timestamps' | 'lean' > = Pick, Keys> & { [other: string]: any; }; @@ -41,7 +41,7 @@ declare module 'mongoose' { type MongooseUpdateQueryOptions = MongooseQueryOptions< DocType, - MongooseBaseQueryOptionKeys | "timestamps" + MongooseBaseQueryOptionKeys | 'timestamps' >; type ProjectionFields = { [Key in keyof DocType]?: any } & Record;