Skip to content

Commit 70c6dc5

Browse files
temp
1 parent 8b42562 commit 70c6dc5

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

test/types/lean.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Schema, model, Document, LeanDocument, Types, BaseDocumentType, DocTypeFromUnion, DocTypeFromGeneric } from 'mongoose';
1+
import { Schema, model, Document, LeanDocument, Types, BaseDocumentType, DocTypeFromUnion, DocTypeFromGeneric, ApplySchemaOptions } from 'mongoose';
22
import { expectError, expectNotType, expectType } from 'tsd';
33

44
const schema: Schema = new Schema({ name: { type: 'String' } });

test/types/schema.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,5 +705,5 @@ function gh12122() {
705705
expectType<DefaultSchemaOptions>({} as ObtainSchemaGeneric<typeof Test2, 'TSchemaOptions'>);
706706

707707
const Test3 = new Schema({ test: String }, { timestamps: true });
708-
expectType<{ test?: string; createdAt: Date; updatedAt: Date; }>({} as InferSchemaType<typeof Test3>);
708+
expectType<{ _id: Types.ObjectId; test?: string; createdAt: Date; updatedAt: Date; }>({} as InferSchemaType<typeof Test3>);
709709
}

types/inferschematype.d.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,24 @@ declare module 'mongoose' {
6666
*/
6767
type ResolveSchemaOptions<T> = Omit<MergeType<DefaultSchemaOptions, T>, 'statics' | 'methods' | 'query' | 'virtuals'>;
6868

69-
type ApplySchemaOptions<T, O = DefaultSchemaOptions> = FlatRecord<Resolve_timestamps<T, O>>;
69+
type ApplySchemaOptions<T, O = DefaultSchemaOptions, P extends 'paths' | 'virtuals' = 'paths'> = FlatRecord<(P extends 'paths'
70+
? ResolveTimestamps<Resolve_id< T, O>, O>
71+
: ResolveId<T, O>
72+
)>;
7073
}
7174

7275

73-
type Resolve_timestamps<T, O> = O extends { timestamps: false }
76+
type ResolveTimestamps<T, O> = O extends { timestamps: false }
7477
? T
75-
: T extends { timestamps: any } ? T : MergeType<T, { createdAt: Date ;updatedAt: Date }>;
78+
: T extends { timestamps: any } ? T : MergeType<T, { createdAt: Date; updatedAt: Date }>;
79+
80+
type ResolveId<T, O> = O extends { id: false }
81+
? T
82+
: T extends { id: any } ? T : MergeType<T, { id: string }>;
83+
84+
type Resolve_id<T, O> = T extends { _id: any }
85+
? T
86+
: O extends { _id: false } ? T : MergeType<T, { _id: Types.ObjectId }>;
7687

7788
/**
7889
* @summary Checks if a document path is required or optional.

types/schemaoptions.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ declare module 'mongoose' {
215215
interface DefaultSchemaOptions {
216216
typeKey: 'type';
217217
id: true;
218-
_id: '_id';
218+
_id: true;
219219
timestamps: false;
220220
versionKey: '__v'
221221
}

0 commit comments

Comments
 (0)