From 459a5f8cf35819ee0bdec7bb6ed64863eb4f6758 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 25 Aug 2018 20:21:04 +0100 Subject: [PATCH 1/2] UpdateType(mongoose): add interfaces for promisified schema validators Add `AsyncPromiseValidationFn`, `AsyncPromiseValidationOpts` as described in this document https://mongoosejs.com/docs/validation.html --- types/mongoose/index.d.ts | 12 +++++++++++- types/mongoose/mongoose-tests.ts | 10 +++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/types/mongoose/index.d.ts b/types/mongoose/index.d.ts index 316887ac9c..26347c850e 100644 --- a/types/mongoose/index.d.ts +++ b/types/mongoose/index.d.ts @@ -977,7 +977,9 @@ declare module "mongoose" { validate?: RegExp | [RegExp, string] | SchemaTypeOpts.ValidateFn | [SchemaTypeOpts.ValidateFn, string] | SchemaTypeOpts.ValidateOpts | SchemaTypeOpts.ValidateOpts[] | - SchemaTypeOpts.AsyncValidateOpts | SchemaTypeOpts.AsyncValidateOpts[]; + SchemaTypeOpts.AsyncValidateOpts | SchemaTypeOpts.AsyncValidateOpts[] | + SchemaTypeOpts.AsyncPromiseValidationFn | SchemaTypeOpts.AsyncPromiseValidationFn[] | + SchemaTypeOpts.AsyncPromiseValidationOpts | SchemaTypeOpts.AsyncPromiseValidationOpts[]; /** Declares an unique index. */ unique?: boolean | any; @@ -1060,6 +1062,14 @@ declare module "mongoose" { validator: AsyncValidateFn; } + interface AsyncPromiseValidationFn { + (value: T): Promise; + } + + interface AsyncPromiseValidationOpts extends ValidateOptsBase { + validator: AsyncPromiseValidationFn; + } + interface EnumOpts { values?: T[]; message?: string; diff --git a/types/mongoose/mongoose-tests.ts b/types/mongoose/mongoose-tests.ts index da5aa792d8..f745600e4b 100644 --- a/types/mongoose/mongoose-tests.ts +++ b/types/mongoose/mongoose-tests.ts @@ -524,7 +524,15 @@ new mongoose.Schema({ setImmediate(done, true); } } - } + }, + promiseValidated: { + type: Number, + validate: { + validator: async (val: number) => { + return val === 2; + } + } + }, }); new mongoose.Schema({ name: { type: String, validate: [ { validator: () => {return true}, msg: 'uh oh' }, From e62fd8963a733b35b0180157b113d2c2d4793cdf Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 30 Aug 2018 13:28:56 +0100 Subject: [PATCH 2/2] UpdateType(mongoose): resolve merge branch conflicts --- types/mongoose/index.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/types/mongoose/index.d.ts b/types/mongoose/index.d.ts index 26347c850e..5db31bf4f6 100644 --- a/types/mongoose/index.d.ts +++ b/types/mongoose/index.d.ts @@ -976,10 +976,10 @@ declare module "mongoose" { */ validate?: RegExp | [RegExp, string] | SchemaTypeOpts.ValidateFn | [SchemaTypeOpts.ValidateFn, string] | - SchemaTypeOpts.ValidateOpts | SchemaTypeOpts.ValidateOpts[] | - SchemaTypeOpts.AsyncValidateOpts | SchemaTypeOpts.AsyncValidateOpts[] | - SchemaTypeOpts.AsyncPromiseValidationFn | SchemaTypeOpts.AsyncPromiseValidationFn[] | - SchemaTypeOpts.AsyncPromiseValidationOpts | SchemaTypeOpts.AsyncPromiseValidationOpts[]; + SchemaTypeOpts.ValidateOpts | SchemaTypeOpts.AsyncValidateOpts | + SchemaTypeOpts.AsyncPromiseValidationFn | SchemaTypeOpts.AsyncPromiseValidationOpts | + (SchemaTypeOpts.ValidateOpts | SchemaTypeOpts.AsyncValidateOpts | + SchemaTypeOpts.AsyncPromiseValidationFn | SchemaTypeOpts.AsyncPromiseValidationOpts)[]; /** Declares an unique index. */ unique?: boolean | any;