mongoose 9.8.1 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,12 +56,28 @@ declare module 'mongoose' {
56
56
  type HydratedDocTypeHint<T> = T extends { __hydratedDocTypeHint: infer U } ? U
57
57
  : never;
58
58
 
59
+ type DiscriminatorHydratedKey<TBaseSchema extends Schema> =
60
+ ObtainSchemaGeneric<TBaseSchema, 'TSchemaOptions'> extends infer TSchemaOptions ?
61
+ 'discriminatorKey' extends keyof TSchemaOptions ?
62
+ TSchemaOptions['discriminatorKey'] extends string ? TSchemaOptions['discriminatorKey'] : '__t'
63
+ : '__t'
64
+ : '__t';
65
+
66
+ type DiscriminatorHydratedBaseType<TBaseSchema extends Schema> =
67
+ InferHydratedDocTypeFromSchema<TBaseSchema> extends Record<DiscriminatorHydratedKey<TBaseSchema>, any> ?
68
+ InferHydratedDocTypeFromSchema<TBaseSchema>
69
+ : MergeType<InferHydratedDocTypeFromSchema<TBaseSchema>, { [K in DiscriminatorHydratedKey<TBaseSchema>]?: null }>;
70
+
59
71
  type ResolveDiscriminatorHydratedPathType<TBaseSchema extends Schema, TDiscriminators> =
60
72
  IsAny<TDiscriminators> extends true ? never
61
73
  : TDiscriminators extends Record<string, any> ?
62
- TDiscriminators[keyof TDiscriminators] extends Schema ?
63
- MergeType<InferHydratedDocTypeFromSchema<TBaseSchema>, InferHydratedDocTypeFromSchema<TDiscriminators[keyof TDiscriminators]>>
64
- : never
74
+ DiscriminatorHydratedBaseType<TBaseSchema> |
75
+ {
76
+ [K in keyof TDiscriminators]: TDiscriminators[K] extends Schema ?
77
+ MergeType<InferHydratedDocTypeFromSchema<TBaseSchema>, InferHydratedDocTypeFromSchema<TDiscriminators[K]>> &
78
+ { [KDiscriminatorKey in DiscriminatorHydratedKey<TBaseSchema>]: K }
79
+ : never
80
+ }[keyof TDiscriminators]
65
81
  : never;
66
82
 
67
83
  type HydratedDiscriminatorEnumType<T> = string extends keyof T ? never
@@ -45,12 +45,28 @@ declare module 'mongoose' {
45
45
  type RawDocTypeHint<T> = IsAny<T> extends true ? never
46
46
  : T extends { __rawDocTypeHint: infer U } ? U: never;
47
47
 
48
+ type DiscriminatorRawKey<TBaseSchema extends Schema> =
49
+ ObtainSchemaGeneric<TBaseSchema, 'TSchemaOptions'> extends infer TSchemaOptions ?
50
+ 'discriminatorKey' extends keyof TSchemaOptions ?
51
+ TSchemaOptions['discriminatorKey'] extends string ? TSchemaOptions['discriminatorKey'] : '__t'
52
+ : '__t'
53
+ : '__t';
54
+
55
+ type DiscriminatorRawBaseType<TBaseSchema extends Schema> =
56
+ InferRawDocTypeFromSchema<TBaseSchema> extends Record<DiscriminatorRawKey<TBaseSchema>, any> ?
57
+ InferRawDocTypeFromSchema<TBaseSchema>
58
+ : MergeType<InferRawDocTypeFromSchema<TBaseSchema>, { [K in DiscriminatorRawKey<TBaseSchema>]?: null }>;
59
+
48
60
  type ResolveDiscriminatorRawPathType<TBaseSchema extends Schema, TDiscriminators> =
49
61
  IsAny<TDiscriminators> extends true ? never
50
62
  : TDiscriminators extends Record<string, any> ?
51
- TDiscriminators[keyof TDiscriminators] extends Schema ?
52
- MergeType<InferRawDocTypeFromSchema<TBaseSchema>, InferRawDocTypeFromSchema<TDiscriminators[keyof TDiscriminators]>>
53
- : never
63
+ DiscriminatorRawBaseType<TBaseSchema> |
64
+ {
65
+ [K in keyof TDiscriminators]: TDiscriminators[K] extends Schema ?
66
+ MergeType<InferRawDocTypeFromSchema<TBaseSchema>, InferRawDocTypeFromSchema<TDiscriminators[K]>> &
67
+ { [KDiscriminatorKey in DiscriminatorRawKey<TBaseSchema>]: K }
68
+ : never
69
+ }[keyof TDiscriminators]
54
70
  : never;
55
71
 
56
72
  type RawDiscriminatorEnumType<T> = string extends keyof T ? never
@@ -283,6 +283,7 @@ declare module 'mongoose' {
283
283
  typeKey: 'type';
284
284
  id: true;
285
285
  _id: true;
286
+ discriminatorKey: '__t';
286
287
  timestamps: false;
287
288
  versionKey: '__v'
288
289
  }
@@ -115,7 +115,7 @@ declare module 'mongoose' {
115
115
  * The default value for this path. If a function, Mongoose executes the function
116
116
  * and uses the return value as the default.
117
117
  */
118
- default?: DefaultType<T> | ((this: THydratedDocumentType, doc: THydratedDocumentType) => DefaultType<T> | null | undefined) | null;
118
+ default?: DefaultType<T> | ((this: THydratedDocumentType, doc: THydratedDocumentType) => DefaultType<T> | null | undefined) | null | undefined;
119
119
 
120
120
  /**
121
121
  * The model that `populate()` should use if populating this path.