@@ -159,23 +159,23 @@ type UnwrapPromiseArray<T> = T extends any[] ? {
159
159
160
160
type Keys = string
161
161
162
- type SerializableObject < T , K extends readonly any [ ] > =
162
+ type SerializableObject < T , K extends readonly any [ ] , TT > =
163
163
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 > )
165
165
166
- type First < T , K extends readonly any [ ] > =
166
+ type First < T , K extends readonly any [ ] , TT > =
167
167
// Tagged template string call
168
168
T extends TemplateStringsArray ? TemplateStringsArray :
169
169
// Identifiers helper
170
170
T extends string ? string :
171
171
// Dynamic values helper (depth 2)
172
172
T extends readonly any [ ] [ ] ? readonly postgres . EscapableArray [ ] :
173
173
// 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 > [ ] ) :
175
175
// Dynamic values/ANY helper (depth 1)
176
- T extends readonly any [ ] ? ( readonly postgres . SerializableParameter [ ] ) :
176
+ T extends readonly any [ ] ? ( readonly postgres . SerializableParameter < TT > [ ] ) :
177
177
// Insert/update helper (depth 1)
178
- T extends object ? SerializableObject < T , K > :
178
+ T extends object ? SerializableObject < T , K , TT > :
179
179
// Unexpected type
180
180
never
181
181
@@ -365,7 +365,7 @@ declare namespace postgres {
365
365
raw : T | null ;
366
366
}
367
367
368
- interface ArrayParameter < T extends SerializableParameter [ ] = SerializableParameter [ ] > extends Parameter < T | T [ ] > {
368
+ interface ArrayParameter < T extends readonly any [ ] = readonly any [ ] > extends Parameter < T | T [ ] > {
369
369
array : true ;
370
370
}
371
371
@@ -458,17 +458,17 @@ declare namespace postgres {
458
458
| null
459
459
| boolean
460
460
| number
461
- | bigint // weak: require the `postgres.BigInt` type
462
461
| string
463
462
| Date
464
463
| Uint8Array ;
465
464
466
- type SerializableParameter = never
465
+ type SerializableParameter < T = never > = never
466
+ | T
467
467
| Serializable
468
468
| Helper < any >
469
469
| Parameter < any >
470
470
| ArrayParameter
471
- | readonly SerializableParameter [ ] ;
471
+ | readonly SerializableParameter < T > [ ] ;
472
472
473
473
type JSONValue = // using a dedicated type to detect symbols, bigints, and other non serializable types
474
474
| null
@@ -584,15 +584,15 @@ declare namespace postgres {
584
584
* @param rest Other optional arguments, depending on the helper type
585
585
* @returns An helper object usable as tagged template parameter in sql queries
586
586
*/
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 > ;
588
588
589
589
/**
590
590
* Execute the SQL query passed as a template string. Can only be used as template string tag.
591
591
* @param template The template generated from the template string
592
592
* @param parameters Interpoled values of the template string
593
593
* @returns A promise resolving to the result of your query
594
594
*/
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 > > ;
596
596
597
597
CLOSE : { } ;
598
598
END : this[ 'CLOSE' ] ;
@@ -605,7 +605,7 @@ declare namespace postgres {
605
605
[ name in keyof TTypes ] : ( value : TTypes [ name ] ) => postgres . Parameter < TTypes [ name ] >
606
606
} ;
607
607
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 > > ;
609
609
end ( options ?: { timeout ?: number } ) : Promise < void > ;
610
610
611
611
listen ( channel : string , onnotify : ( value : string ) => void , onlisten ?: ( ) => void ) : ListenRequest ;
@@ -618,9 +618,9 @@ declare namespace postgres {
618
618
begin < T > ( cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
619
619
begin < T > ( options : string , cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
620
620
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 > ;
622
622
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 > > ;
624
624
json ( value : JSONValue ) : Parameter ;
625
625
}
626
626
0 commit comments