@@ -770,22 +770,31 @@ type Projection<Schema extends object> = Partial<{
770770
771771
772772type MongoUpdateOperators < Schema extends object > = Partial < {
773- $set : Partial < Record < string , MongoCommandValue > & Schema > ;
774- $setOnInsert : Partial < Record < string , MongoCommandValue > & Schema > ;
775- $unset : Partial < Record < string , "" > & Schema > ;
776- $rename : Partial < Record < string , string > & Schema > ;
773+ $set : Partial < Record < string , MongoCommandValue > & Schema >
774+ $setOnInsert : Partial < Record < string , MongoCommandValue > & Schema >
775+ $unset : Partial < Record < string , "" > & Schema >
776+ $rename : Partial < Record < string , string > & Schema >
777777 $inc : Partial < Record < string , number > & {
778- [ key in keyof Schema as Schema [ key ] extends number | Date ? key : never ] : Schema [ key ] extends number ? number : Date ;
779- } > ;
778+ [ key in keyof Schema as Schema [ key ] extends number | Date ? key : never ] : Schema [ key ] extends number ? number : Date
779+ } >
780780 $mul : Partial < Record < string , number > & {
781- [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number ;
782- } > ;
781+ [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number
782+ } >
783783 $min : Partial < Record < string , number > & {
784- [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number ;
785- } > ;
784+ [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number
785+ } >
786786 $max : Partial < Record < string , number > & {
787- [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number ;
788- } > ;
787+ [ key in keyof Schema as Schema [ key ] extends number ? key : never ] : number
788+ } >
789+ $pop : Partial < Record < string , - 1 | 1 > & {
790+ [ key in keyof Schema as Schema [ key ] extends Array < infer U > ? key : never ] : - 1 | 1
791+ } >
792+ $push : Partial < Record < string , MongoCommandValue > & {
793+ [ key in keyof Schema as Schema [ key ] extends Array < infer U > ? key : never ] : Schema [ key ] | MongoUpdateArrayOperatorModifiers < Schema [ key ] >
794+ } >
795+ $addToSet : Partial < Record < string , MongoCommandValue > & {
796+ [ key in keyof Schema as Schema [ key ] extends Array < infer U > ? key : never ] : Schema [ key ] | MongoUpdateArrayOperatorUniversalModifiers < Schema [ key ] >
797+ } >
789798} >
790799
791800/*
@@ -795,12 +804,15 @@ type MongoUpdateArrayOperators<T extends Array> = {
795804}
796805*/
797806
798- type MongoUpdateArrayOperatorModifiers < Schema extends Array > = {
799- $each : Schema ,
800- $position : number ,
801- $slice : number ,
802- $sort : SortOrder | 1 | - 1
803- }
807+ type MongoUpdateArrayOperatorUniversalModifiers < T > = Partial < {
808+ $each : T extends Array < infer U > ? T : T [ ]
809+ } >
810+
811+ type MongoUpdateArrayOperatorModifiers < T > = MongoUpdateArrayOperatorUniversalModifiers < T > & Partial < {
812+ $position : number
813+ $slice : number
814+ $sort : 1 | - 1
815+ } >
804816
805817type MongoUpdateCommand < Schema extends object > = MongoUpdateOperators < Schema >
806818
0 commit comments