@@ -159,23 +159,23 @@ type UnwrapPromiseArray<T> = T extends any[] ? {
159159
160160type Keys = string
161161
162- type SerializableObject < T , K extends readonly any [ ] > =
162+ type SerializableObject < T , K extends readonly any [ ] , TT > =
163163 number extends K [ 'length' ] ? { } :
164- ( Record < Keys & ( keyof T ) & ( K [ 'length' ] extends 0 ? string : K [ number ] ) , postgres . SerializableParameter | postgres . JSONValue > & Record < string , any > )
164+ ( Record < Keys & ( keyof T ) & ( K [ 'length' ] extends 0 ? string : K [ number ] ) , postgres . SerializableParameter < TT > | postgres . JSONValue > & Record < string , any > )
165165
166- type First < T , K extends readonly any [ ] > =
166+ type First < T , K extends readonly any [ ] , TT > =
167167 // Tagged template string call
168168 T extends TemplateStringsArray ? TemplateStringsArray :
169169 // Identifiers helper
170170 T extends string ? string :
171171 // Dynamic values helper (depth 2)
172172 T extends readonly any [ ] [ ] ? readonly postgres . EscapableArray [ ] :
173173 // Insert/update helper (depth 2)
174- T extends readonly ( object & infer R ) [ ] ? ( R extends postgres . SerializableParameter ? readonly postgres . SerializableParameter [ ] : readonly SerializableObject < R , K > [ ] ) :
174+ T extends readonly ( object & infer R ) [ ] ? ( R extends postgres . SerializableParameter < TT > ? readonly postgres . SerializableParameter < TT > [ ] : readonly SerializableObject < R , K , TT > [ ] ) :
175175 // Dynamic values/ANY helper (depth 1)
176- T extends readonly any [ ] ? ( readonly postgres . SerializableParameter [ ] ) :
176+ T extends readonly any [ ] ? ( readonly postgres . SerializableParameter < TT > [ ] ) :
177177 // Insert/update helper (depth 1)
178- T extends object ? SerializableObject < T , K > :
178+ T extends object ? SerializableObject < T , K , TT > :
179179 // Unexpected type
180180 never
181181
@@ -365,7 +365,7 @@ declare namespace postgres {
365365 raw : T | null ;
366366 }
367367
368- interface ArrayParameter < T extends SerializableParameter [ ] = SerializableParameter [ ] > extends Parameter < T | T [ ] > {
368+ interface ArrayParameter < T extends readonly any [ ] = readonly any [ ] > extends Parameter < T | T [ ] > {
369369 array : true ;
370370 }
371371
@@ -458,17 +458,17 @@ declare namespace postgres {
458458 | null
459459 | boolean
460460 | number
461- | bigint // weak: require the `postgres.BigInt` type
462461 | string
463462 | Date
464463 | Uint8Array ;
465464
466- type SerializableParameter = never
465+ type SerializableParameter < T = never > = never
466+ | T
467467 | Serializable
468468 | Helper < any >
469469 | Parameter < any >
470470 | ArrayParameter
471- | readonly SerializableParameter [ ] ;
471+ | readonly SerializableParameter < T > [ ] ;
472472
473473 type JSONValue = // using a dedicated type to detect symbols, bigints, and other non serializable types
474474 | null
@@ -584,15 +584,15 @@ declare namespace postgres {
584584 * @param rest Other optional arguments, depending on the helper type
585585 * @returns An helper object usable as tagged template parameter in sql queries
586586 */
587- < T , K extends Rest < T > > ( first : T & First < T , K > , ...rest : K ) : Return < T , K > ;
587+ < T , K extends Rest < T > > ( first : T & First < T , K , TTypes [ keyof TTypes ] > , ...rest : K ) : Return < T , K > ;
588588
589589 /**
590590 * Execute the SQL query passed as a template string. Can only be used as template string tag.
591591 * @param template The template generated from the template string
592592 * @param parameters Interpoled values of the template string
593593 * @returns A promise resolving to the result of your query
594594 */
595- < T extends readonly ( object | undefined ) [ ] = Row [ ] > ( template : TemplateStringsArray , ...parameters : readonly ( SerializableParameter | PendingQuery < any > ) [ ] ) : PendingQuery < AsRowList < T > > ;
595+ < T extends readonly ( object | undefined ) [ ] = Row [ ] > ( template : TemplateStringsArray , ...parameters : readonly ( SerializableParameter < TTypes [ keyof TTypes ] > | PendingQuery < any > ) [ ] ) : PendingQuery < AsRowList < T > > ;
596596
597597 CLOSE : { } ;
598598 END : this[ 'CLOSE' ] ;
@@ -605,7 +605,7 @@ declare namespace postgres {
605605 [ name in keyof TTypes ] : ( value : TTypes [ name ] ) => postgres . Parameter < TTypes [ name ] >
606606 } ;
607607
608- unsafe < T extends any [ ] = ( Row & Iterable < Row > ) [ ] > ( query : string , parameters ?: SerializableParameter [ ] , queryOptions ?: UnsafeQueryOptions ) : PendingQuery < AsRowList < T > > ;
608+ unsafe < T extends any [ ] = ( Row & Iterable < Row > ) [ ] > ( query : string , parameters ?: SerializableParameter < TTypes [ keyof TTypes ] > [ ] , queryOptions ?: UnsafeQueryOptions ) : PendingQuery < AsRowList < T > > ;
609609 end ( options ?: { timeout ?: number } ) : Promise < void > ;
610610
611611 listen ( channel : string , onnotify : ( value : string ) => void , onlisten ?: ( ) => void ) : ListenRequest ;
@@ -618,9 +618,9 @@ declare namespace postgres {
618618 begin < T > ( cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
619619 begin < T > ( options : string , cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
620620
621- array < T extends SerializableParameter [ ] = SerializableParameter [ ] > ( value : T , type ?: number ) : ArrayParameter < T > ;
621+ array < T extends SerializableParameter < TTypes [ keyof TTypes ] > [ ] = SerializableParameter < TTypes [ keyof TTypes ] > [ ] > ( value : T , type ?: number ) : ArrayParameter < T > ;
622622 file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , options ?: { cache ?: boolean } ) : PendingQuery < AsRowList < T > > ;
623- file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , args : SerializableParameter [ ] , options ?: { cache ?: boolean } ) : PendingQuery < AsRowList < T > > ;
623+ file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , args : SerializableParameter < TTypes [ keyof TTypes ] > [ ] , options ?: { cache ?: boolean } ) : PendingQuery < AsRowList < T > > ;
624624 json ( value : JSONValue ) : Parameter ;
625625 }
626626
0 commit comments