From 70c6dc530f714174889b974295cc0578dc730b30 Mon Sep 17 00:00:00 2001 From: Mohammad Date: Sun, 31 Jul 2022 23:06:44 +0200 Subject: [PATCH] temp --- test/types/lean.test.ts | 2 +- test/types/schema.test.ts | 2 +- types/inferschematype.d.ts | 17 ++++++++++++++--- types/schemaoptions.d.ts | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/test/types/lean.test.ts b/test/types/lean.test.ts index f3ffc4fe275..235a84577e8 100644 --- a/test/types/lean.test.ts +++ b/test/types/lean.test.ts @@ -1,4 +1,4 @@ -import { Schema, model, Document, LeanDocument, Types, BaseDocumentType, DocTypeFromUnion, DocTypeFromGeneric } from 'mongoose'; +import { Schema, model, Document, LeanDocument, Types, BaseDocumentType, DocTypeFromUnion, DocTypeFromGeneric, ApplySchemaOptions } from 'mongoose'; import { expectError, expectNotType, expectType } from 'tsd'; const schema: Schema = new Schema({ name: { type: 'String' } }); diff --git a/test/types/schema.test.ts b/test/types/schema.test.ts index fd444506037..f01f69fbe60 100644 --- a/test/types/schema.test.ts +++ b/test/types/schema.test.ts @@ -705,5 +705,5 @@ function gh12122() { expectType({} as ObtainSchemaGeneric); const Test3 = new Schema({ test: String }, { timestamps: true }); - expectType<{ test?: string; createdAt: Date; updatedAt: Date; }>({} as InferSchemaType); + expectType<{ _id: Types.ObjectId; test?: string; createdAt: Date; updatedAt: Date; }>({} as InferSchemaType); } diff --git a/types/inferschematype.d.ts b/types/inferschematype.d.ts index d1e48d1dd98..37ae9d9ef37 100644 --- a/types/inferschematype.d.ts +++ b/types/inferschematype.d.ts @@ -66,13 +66,24 @@ declare module 'mongoose' { */ type ResolveSchemaOptions = Omit, 'statics' | 'methods' | 'query' | 'virtuals'>; - type ApplySchemaOptions = FlatRecord>; + type ApplySchemaOptions = FlatRecord<(P extends 'paths' + ? ResolveTimestamps, O> + : ResolveId + )>; } -type Resolve_timestamps = O extends { timestamps: false } +type ResolveTimestamps = O extends { timestamps: false } ? T - : T extends { timestamps: any } ? T : MergeType; + : T extends { timestamps: any } ? T : MergeType; + +type ResolveId = O extends { id: false } + ? T + : T extends { id: any } ? T : MergeType; + +type Resolve_id = T extends { _id: any } + ? T + : O extends { _id: false } ? T : MergeType; /** * @summary Checks if a document path is required or optional. diff --git a/types/schemaoptions.d.ts b/types/schemaoptions.d.ts index 931f0ff15e2..3a915480c14 100644 --- a/types/schemaoptions.d.ts +++ b/types/schemaoptions.d.ts @@ -215,7 +215,7 @@ declare module 'mongoose' { interface DefaultSchemaOptions { typeKey: 'type'; id: true; - _id: '_id'; + _id: true; timestamps: false; versionKey: '__v' }