@@ -5,7 +5,7 @@ import { Readable, Writable } from 'node:stream'
5
5
* @param options Connection options - default to the same as psql
6
6
* @returns An utility function to make queries to the server
7
7
*/
8
- declare function postgres < T extends PostgresTypeList > ( options ?: postgres . Options < T > ) : postgres . Sql < PostgresTypeList extends T ? { } : { [ type in keyof T ] : T [ type ] extends {
8
+ declare function postgres < T extends PostgresTypeList > ( options ?: postgres . Options < T > | undefined ) : postgres . Sql < PostgresTypeList extends T ? { } : { [ type in keyof T ] : T [ type ] extends {
9
9
serialize : ( value : infer R ) => any ,
10
10
parse : ( raw : any ) => infer R
11
11
} ? R : never } >
@@ -15,7 +15,7 @@ declare function postgres<T extends PostgresTypeList>(options?: postgres.Options
15
15
* @param options Connection options - default to the same as psql
16
16
* @returns An utility function to make queries to the server
17
17
*/
18
- declare function postgres < T extends PostgresTypeList > ( url : string , options ?: postgres . Options < T > ) : postgres . Sql < PostgresTypeList extends T ? { } : { [ type in keyof T ] : T [ type ] extends {
18
+ declare function postgres < T extends PostgresTypeList > ( url : string , options ?: postgres . Options < T > | undefined ) : postgres . Sql < PostgresTypeList extends T ? { } : { [ type in keyof T ] : T [ type ] extends {
19
19
serialize : ( value : infer R ) => any ,
20
20
parse : ( raw : any ) => infer R
21
21
} ? R : never } >
@@ -25,9 +25,9 @@ declare function postgres<T extends PostgresTypeList>(url: string, options?: pos
25
25
*/
26
26
interface BaseOptions < T extends PostgresTypeList > {
27
27
/** Postgres ip address[s] or domain name[s] */
28
- host : string | string [ ] ;
28
+ host : string | string [ ] | undefined ;
29
29
/** Postgres server[s] port[s] */
30
- port : number | number [ ] ;
30
+ port : number | number [ ] | undefined ;
31
31
/** unix socket path (usually '/tmp') */
32
32
path : string | undefined ;
33
33
/**
@@ -84,24 +84,24 @@ interface BaseOptions<T extends PostgresTypeList> {
84
84
/** Transforms incoming and outgoing column names */
85
85
column ?: ( ( column : string ) => string ) | {
86
86
/** SQL to JS */
87
- from ?: ( column : string ) => string ;
87
+ from ?: ( ( column : string ) => string ) | undefined ;
88
88
/** JS to SQL */
89
- to ?: ( column : string ) => string ;
90
- } ;
89
+ to ?: ( ( column : string ) => string ) | undefined ;
90
+ } | undefined ;
91
91
/** Transforms incoming and outgoing row values */
92
92
value ?: ( ( value : any ) => any ) | {
93
93
/** SQL to JS */
94
- from ?: ( value : unknown ) => any ;
94
+ from ?: ( ( value : unknown ) => any ) | undefined ;
95
95
// /** JS to SQL */
96
- // to?: (value: unknown) => any; // unused
97
- } ;
96
+ // to?: (( value: unknown) => any) | undefined ; // unused
97
+ } | undefined ;
98
98
/** Transforms entire rows */
99
99
row ?: ( ( row : postgres . Row ) => any ) | {
100
100
/** SQL to JS */
101
- from ?: ( row : postgres . Row ) => any ;
101
+ from ?: ( ( row : postgres . Row ) => any ) | undefined ;
102
102
// /** JS to SQL */
103
- // to?: (row: postgres.Row) => any; // unused
104
- } ;
103
+ // to?: (( row: postgres.Row) => any) | undefined ; // unused
104
+ } | undefined ;
105
105
} ;
106
106
/** Connection parameters */
107
107
connection : Partial < postgres . ConnectionParameters > ;
@@ -164,7 +164,7 @@ type Keys = string
164
164
165
165
type SerializableObject < T , K extends readonly any [ ] , TT > =
166
166
number extends K [ 'length' ] ? { } :
167
- ( Record < Keys & ( keyof T ) & ( K [ 'length' ] extends 0 ? string : K [ number ] ) , postgres . SerializableParameter < TT > | postgres . JSONValue > & Record < string , any > )
167
+ Partial < ( Record < Keys & ( keyof T ) & ( K [ 'length' ] extends 0 ? string : K [ number ] ) , postgres . ParameterOrJSON < TT > | undefined > & Record < string , any > ) >
168
168
169
169
type First < T , K extends readonly any [ ] , TT > =
170
170
// Tagged template string call
@@ -209,17 +209,17 @@ declare namespace postgres {
209
209
line : string ;
210
210
routine : string ;
211
211
212
- detail ?: string ;
213
- hint ?: string ;
214
- internal_position ?: string ;
215
- internal_query ?: string ;
216
- where ?: string ;
217
- schema_name ?: string ;
218
- table_name ?: string ;
219
- column_name ?: string ;
220
- data ?: string ;
221
- type_name ?: string ;
222
- constraint_name ?: string ;
212
+ detail ?: string | undefined ;
213
+ hint ?: string | undefined ;
214
+ internal_position ?: string | undefined ;
215
+ internal_query ?: string | undefined ;
216
+ where ?: string | undefined ;
217
+ schema_name ?: string | undefined ;
218
+ table_name ?: string | undefined ;
219
+ column_name ?: string | undefined ;
220
+ data ?: string | undefined ;
221
+ type_name ?: string | undefined ;
222
+ constraint_name ?: string | undefined ;
223
223
224
224
/** Only set when debug is enabled */
225
225
query : string ;
@@ -285,34 +285,34 @@ declare namespace postgres {
285
285
286
286
interface Options < T extends PostgresTypeList > extends Partial < BaseOptions < T > > {
287
287
/** @inheritdoc */
288
- host ?: string ;
288
+ host ?: string | undefined ;
289
289
/** @inheritdoc */
290
- port ?: number ;
290
+ port ?: number | undefined ;
291
291
/** @inheritdoc */
292
- path ?: string ;
292
+ path ?: string | undefined ;
293
293
/** Password of database user (an alias for `password`) */
294
- pass ?: Options < T > [ 'password' ] ;
294
+ pass ?: Options < T > [ 'password' ] | undefined ;
295
295
/**
296
296
* Password of database user
297
297
* @default process.env['PGPASSWORD']
298
298
*/
299
- password ?: string | ( ( ) => string | Promise < string > ) ;
299
+ password ?: string | ( ( ) => string | Promise < string > ) | undefined ;
300
300
/** Name of database to connect to (an alias for `database`) */
301
- db ?: Options < T > [ 'database' ] ;
301
+ db ?: Options < T > [ 'database' ] | undefined ;
302
302
/** Username of database user (an alias for `user`) */
303
- username ?: Options < T > [ 'user' ] ;
303
+ username ?: Options < T > [ 'user' ] | undefined ;
304
304
/** Postgres ip address or domain name (an alias for `host`) */
305
- hostname ?: Options < T > [ 'host' ] ;
305
+ hostname ?: Options < T > [ 'host' ] | undefined ;
306
306
/**
307
307
* Disable prepared mode
308
308
* @deprecated use "prepare" option instead
309
309
*/
310
- no_prepare ?: boolean ;
310
+ no_prepare ?: boolean | undefined ;
311
311
/**
312
312
* Idle connection timeout in seconds
313
313
* @deprecated use "idle_timeout" option instead
314
314
*/
315
- timeout ?: Options < T > [ 'idle_timeout' ] ;
315
+ timeout ?: Options < T > [ 'idle_timeout' ] | undefined ;
316
316
}
317
317
318
318
interface ParsedOptions < T extends JSToPostgresTypeMap > extends BaseOptions < { [ name in keyof T ] : PostgresType < T [ name ] > } > {
@@ -380,7 +380,7 @@ declare namespace postgres {
380
380
| 'CONNECTION_ENDED' ;
381
381
errno : this[ 'code' ] ;
382
382
address : string ;
383
- port ?: number ;
383
+ port ?: number | undefined ;
384
384
}
385
385
386
386
interface NotSupportedError extends globalThis . Error {
@@ -437,21 +437,21 @@ declare namespace postgres {
437
437
438
438
interface LargeObject {
439
439
writable ( options ?: {
440
- highWaterMark ?: number ,
441
- start ?: number
442
- } ) : Promise < Writable > ;
440
+ highWaterMark ?: number | undefined ,
441
+ start ?: number | undefined
442
+ } | undefined ) : Promise < Writable > ;
443
443
readable ( options ?: {
444
- highWaterMark ?: number ,
445
- start ?: number ,
446
- end ?: number
447
- } ) : Promise < Readable > ;
444
+ highWaterMark ?: number | undefined ,
445
+ start ?: number | undefined ,
446
+ end ?: number | undefined
447
+ } | undefined ) : Promise < Readable > ;
448
448
449
449
close ( ) : Promise < void > ;
450
450
tell ( ) : Promise < void > ;
451
451
read ( size : number ) : Promise < void > ;
452
452
write ( buffer : Uint8Array ) : Promise < [ { data : Uint8Array } ] > ;
453
453
truncate ( size : number ) : Promise < void > ;
454
- seek ( offset : number , whence ?: number ) : Promise < void > ;
454
+ seek ( offset : number , whence ?: number | undefined ) : Promise < void > ;
455
455
size ( ) : Promise < [ { position : bigint , size : bigint } ] > ;
456
456
}
457
457
@@ -499,7 +499,7 @@ declare namespace postgres {
499
499
type : number ;
500
500
table : number ;
501
501
number : number ;
502
- parser ?( raw : string ) : unknown ;
502
+ parser ?: ( ( raw : string ) => unknown ) | undefined ;
503
503
}
504
504
505
505
type ColumnList < T > = ( T extends string ? Column < T > : never ) [ ] ;
@@ -550,7 +550,7 @@ declare namespace postgres {
550
550
stream ( cb : ( row : NonNullable < TRow [ number ] > , result : ExecutionResult < TRow [ number ] > ) => void ) : never ;
551
551
forEach ( cb : ( row : NonNullable < TRow [ number ] > , result : ExecutionResult < TRow [ number ] > ) => void ) : Promise < ExecutionResult < TRow [ number ] > > ;
552
552
553
- cursor ( rows ?: number ) : AsyncIterable < NonNullable < TRow [ number ] > [ ] > ;
553
+ cursor ( rows ?: number | undefined ) : AsyncIterable < NonNullable < TRow [ number ] > [ ] > ;
554
554
cursor ( cb : ( row : [ NonNullable < TRow [ number ] > ] ) => void ) : Promise < ExecutionResult < TRow [ number ] > > ;
555
555
cursor ( rows : number , cb : ( rows : NonNullable < TRow [ number ] > [ ] ) => void ) : Promise < ExecutionResult < TRow [ number ] > > ;
556
556
}
@@ -583,6 +583,16 @@ declare namespace postgres {
583
583
rest : U ;
584
584
}
585
585
586
+ type Fragment = PendingQuery < any >
587
+
588
+ type ParameterOrJSON < T > =
589
+ | SerializableParameter < T >
590
+ | JSONValue
591
+
592
+ type ParameterOrFragment < T > =
593
+ | SerializableParameter < T >
594
+ | Fragment
595
+
586
596
interface Sql < TTypes extends JSToPostgresTypeMap > {
587
597
/**
588
598
* Query helper
@@ -598,7 +608,7 @@ declare namespace postgres {
598
608
* @param parameters Interpoled values of the template string
599
609
* @returns A promise resolving to the result of your query
600
610
*/
601
- < T extends readonly ( object | undefined ) [ ] = Row [ ] > ( template : TemplateStringsArray , ...parameters : readonly ( SerializableParameter < TTypes [ keyof TTypes ] > | PendingQuery < any > ) [ ] ) : PendingQuery < T > ;
611
+ < T extends readonly ( object | undefined ) [ ] = Row [ ] > ( template : TemplateStringsArray , ...parameters : readonly ( ParameterOrFragment < TTypes [ keyof TTypes ] > ) [ ] ) : PendingQuery < T > ;
602
612
603
613
CLOSE : { } ;
604
614
END : this[ 'CLOSE' ] ;
@@ -611,22 +621,22 @@ declare namespace postgres {
611
621
[ name in keyof TTypes ] : ( value : TTypes [ name ] ) => postgres . Parameter < TTypes [ name ] >
612
622
} ;
613
623
614
- unsafe < T extends any [ ] = ( Row & Iterable < Row > ) [ ] > ( query : string , parameters ?: SerializableParameter < TTypes [ keyof TTypes ] > [ ] , queryOptions ?: UnsafeQueryOptions ) : PendingQuery < T > ;
615
- end ( options ?: { timeout ?: number } ) : Promise < void > ;
624
+ unsafe < T extends any [ ] = ( Row & Iterable < Row > ) [ ] > ( query : string , parameters ?: ( ParameterOrJSON < TTypes [ keyof TTypes ] > ) [ ] | undefined , queryOptions ?: UnsafeQueryOptions | undefined ) : PendingQuery < T > ;
625
+ end ( options ?: { timeout ?: number | undefined } | undefined ) : Promise < void > ;
616
626
617
- listen ( channel : string , onnotify : ( value : string ) => void , onlisten ?: ( ) => void ) : ListenRequest ;
627
+ listen ( channel : string , onnotify : ( value : string ) => void , onlisten ?: ( ( ) => void ) | undefined ) : ListenRequest ;
618
628
notify ( channel : string , payload : string ) : PendingRequest ;
619
629
620
- subscribe ( event : string , cb : ( row : Row | null , info : ReplicationEvent ) => void , onsubscribe ?: ( ) => void ) : Promise < SubscriptionHandle > ;
630
+ subscribe ( event : string , cb : ( row : Row | null , info : ReplicationEvent ) => void , onsubscribe ?: ( ( ) => void ) | undefined ) : Promise < SubscriptionHandle > ;
621
631
622
- largeObject ( oid ?: number , /** @default 0x00020000 | 0x00040000 */ mode ?: number ) : Promise < LargeObject > ;
632
+ largeObject ( oid ?: number | undefined , /** @default 0x00020000 | 0x00040000 */ mode ?: number | undefined ) : Promise < LargeObject > ;
623
633
624
634
begin < T > ( cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
625
635
begin < T > ( options : string , cb : ( sql : TransactionSql < TTypes > ) => T | Promise < T > ) : Promise < UnwrapPromiseArray < T > > ;
626
636
627
- array < T extends SerializableParameter < TTypes [ keyof TTypes ] > [ ] = SerializableParameter < TTypes [ keyof TTypes ] > [ ] > ( value : T , type ?: number ) : ArrayParameter < T > ;
628
- file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , options ?: { cache ?: boolean } ) : PendingQuery < T > ;
629
- file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , args : SerializableParameter < TTypes [ keyof TTypes ] > [ ] , options ?: { cache ?: boolean } ) : PendingQuery < T > ;
637
+ array < T extends SerializableParameter < TTypes [ keyof TTypes ] > [ ] = SerializableParameter < TTypes [ keyof TTypes ] > [ ] > ( value : T , type ?: number | undefined ) : ArrayParameter < T > ;
638
+ file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , options ?: { cache ?: boolean | undefined } | undefined ) : PendingQuery < T > ;
639
+ file < T extends readonly any [ ] = Row [ ] > ( path : string | Buffer | URL | number , args : ( ParameterOrJSON < TTypes [ keyof TTypes ] > ) [ ] , options ?: { cache ?: boolean | undefined } | undefined ) : PendingQuery < T > ;
630
640
json ( value : JSONValue ) : Parameter ;
631
641
}
632
642
@@ -635,7 +645,7 @@ declare namespace postgres {
635
645
* When executes query as prepared statement.
636
646
* @default false
637
647
*/
638
- prepare ?: boolean ;
648
+ prepare ?: boolean | undefined ;
639
649
}
640
650
641
651
interface TransactionSql < TTypes extends JSToPostgresTypeMap > extends Sql < TTypes > {
0 commit comments