@@ -715,81 +715,93 @@ declare module 'mongoose' {
715
715
*/
716
716
export type BufferToBinary < T > = T extends Buffer
717
717
? mongodb . Binary
718
- : T extends TreatAsPrimitives
718
+ : T extends Document
719
719
? T
720
- : T extends Record < string , any > ? {
721
- [ K in keyof T ] : T [ K ] extends Buffer
722
- ? mongodb . Binary
723
- : T [ K ] extends Types . DocumentArray < infer ItemType >
724
- ? Types . DocumentArray < BufferToBinary < ItemType > >
725
- : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
726
- ? HydratedSingleSubdocument < SubdocType >
727
- : BufferToBinary < T [ K ] > ;
720
+ : T extends TreatAsPrimitives
721
+ ? T
722
+ : T extends Record < string , any > ? {
723
+ [ K in keyof T ] : T [ K ] extends Buffer
724
+ ? mongodb . Binary
725
+ : T [ K ] extends Types . DocumentArray < infer ItemType >
726
+ ? Types . DocumentArray < BufferToBinary < ItemType > >
727
+ : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
728
+ ? HydratedSingleSubdocument < BufferToBinary < SubdocType > >
729
+ : BufferToBinary < T [ K ] > ;
728
730
} : T ;
729
731
730
732
/**
731
733
* Converts any Buffer properties into { type: 'buffer', data: [1, 2, 3] } format for JSON serialization
732
734
*/
733
735
export type BufferToJSON < T > = T extends Buffer
734
736
? { type : 'buffer' , data : number [ ] }
735
- : T extends TreatAsPrimitives
737
+ : T extends Document
736
738
? T
737
- : T extends Record < string , any > ? {
738
- [ K in keyof T ] : T [ K ] extends Buffer
739
- ? { type : 'buffer' , data : number [ ] }
740
- : T [ K ] extends Types . DocumentArray < infer ItemType >
741
- ? Types . DocumentArray < BufferToBinary < ItemType > >
742
- : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
743
- ? HydratedSingleSubdocument < SubdocType >
744
- : BufferToBinary < T [ K ] > ;
745
- } : T ;
739
+ : T extends TreatAsPrimitives
740
+ ? T
741
+ : T extends Record < string , any > ? {
742
+ [ K in keyof T ] : T [ K ] extends Buffer
743
+ ? { type : 'buffer' , data : number [ ] }
744
+ : T [ K ] extends Types . DocumentArray < infer ItemType >
745
+ ? Types . DocumentArray < BufferToBinary < ItemType > >
746
+ : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
747
+ ? HydratedSingleSubdocument < SubdocType >
748
+ : BufferToBinary < T [ K ] > ;
749
+ } : T ;
746
750
747
751
/**
748
752
* Converts any ObjectId properties into strings for JSON serialization
749
753
*/
750
754
export type ObjectIdToString < T > = T extends mongodb . ObjectId
751
755
? string
752
- : T extends TreatAsPrimitives
756
+ : T extends Document
753
757
? T
754
- : T extends Record < string , any > ? {
755
- [ K in keyof T ] : T [ K ] extends mongodb . ObjectId
756
- ? string
757
- : T [ K ] extends Types . DocumentArray < infer ItemType >
758
- ? Types . DocumentArray < ObjectIdToString < ItemType > >
759
- : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
760
- ? HydratedSingleSubdocument < ObjectIdToString < SubdocType > >
761
- : ObjectIdToString < T [ K ] > ;
762
- } : T ;
758
+ : T extends TreatAsPrimitives
759
+ ? T
760
+ : T extends Record < string , any > ? {
761
+ [ K in keyof T ] : T [ K ] extends mongodb . ObjectId
762
+ ? string
763
+ : T [ K ] extends Types . DocumentArray < infer ItemType >
764
+ ? Types . DocumentArray < ObjectIdToString < ItemType > >
765
+ : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
766
+ ? HydratedSingleSubdocument < ObjectIdToString < SubdocType > >
767
+ : ObjectIdToString < T [ K ] > ;
768
+ } : T ;
763
769
764
770
/**
765
771
* Converts any Date properties into strings for JSON serialization
766
772
*/
767
773
export type DateToString < T > = T extends NativeDate
768
774
? string
769
- : T extends TreatAsPrimitives
775
+ : T extends Document
770
776
? T
771
- : T extends Record < string , any > ? {
772
- [ K in keyof T ] : T [ K ] extends NativeDate
773
- ? string
774
- : T [ K ] extends ( NativeDate | null | undefined )
775
- ? string | null | undefined
776
- : T [ K ] extends Types . DocumentArray < infer ItemType >
777
- ? Types . DocumentArray < DateToString < ItemType > >
778
- : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
779
- ? HydratedSingleSubdocument < DateToString < SubdocType > >
780
- : DateToString < T [ K ] > ;
781
- } : T ;
777
+ : T extends TreatAsPrimitives
778
+ ? T
779
+ : T extends Record < string , any > ? {
780
+ [ K in keyof T ] : T [ K ] extends NativeDate
781
+ ? string
782
+ : T [ K ] extends ( NativeDate | null | undefined )
783
+ ? string | null | undefined
784
+ : T [ K ] extends Types . DocumentArray < infer ItemType >
785
+ ? Types . DocumentArray < DateToString < ItemType > >
786
+ : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
787
+ ? HydratedSingleSubdocument < DateToString < SubdocType > >
788
+ : DateToString < T [ K ] > ;
789
+ } : T ;
782
790
783
791
/**
784
792
* Converts any Mongoose subdocuments (single nested or doc arrays) into POJO equivalents
785
793
*/
786
- export type SubdocsToPOJOs < T > = T extends TreatAsPrimitives ? T : T extends Record < string , any > ? {
787
- [ K in keyof T ] : T [ K ] extends Types . DocumentArray < infer ItemType >
788
- ? ItemType [ ]
789
- : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
790
- ? SubdocType
791
- : SubdocsToPOJOs < T [ K ] > ;
792
- } : T ;
794
+ export type SubdocsToPOJOs < T > = T extends Document
795
+ ? T
796
+ : T extends TreatAsPrimitives
797
+ ? T
798
+ : T extends Record < string , any > ? {
799
+ [ K in keyof T ] : T [ K ] extends Types . DocumentArray < infer ItemType >
800
+ ? ItemType [ ]
801
+ : T [ K ] extends Types . Subdocument < unknown , unknown , infer SubdocType >
802
+ ? SubdocType
803
+ : SubdocsToPOJOs < T [ K ] > ;
804
+ } : T ;
793
805
794
806
export type JSONSerialized < T > = SubdocsToPOJOs <
795
807
FlattenMaps <
0 commit comments