@agentuity/postgres 1.0.1 → 1.0.2

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.
@@ -1,56 +1,73 @@
1
1
  /**
2
- * Global registry for PostgreSQL clients.
2
+ * Global registry for PostgreSQL clients and pools.
3
3
  *
4
- * This module provides a way to track all active PostgreSQL clients
4
+ * This module provides a way to track all active PostgreSQL clients and pools
5
5
  * so they can be gracefully shut down together (e.g., on process exit).
6
6
  *
7
- * The runtime can use `shutdownAll()` to close all registered clients
7
+ * The runtime can use `shutdownAll()` to close all registered clients/pools
8
8
  * during graceful shutdown.
9
9
  *
10
10
  * When @agentuity/runtime is available, this module automatically registers
11
- * a shutdown hook so all postgres clients are closed during graceful shutdown.
11
+ * a shutdown hook so all postgres clients/pools are closed during graceful shutdown.
12
12
  */
13
- import type { PostgresClient } from './client';
14
13
  /**
15
- * Registers a client in the global registry.
16
- * Called automatically when a client is created.
14
+ * Common interface for registrable PostgreSQL connections.
15
+ * Both PostgresClient and PostgresPool implement this interface.
16
+ */
17
+ export interface Registrable {
18
+ /**
19
+ * Whether the connection is shutting down.
20
+ */
21
+ readonly shuttingDown: boolean;
22
+ /**
23
+ * Signal that the connection is shutting down.
24
+ */
25
+ shutdown(): void;
26
+ /**
27
+ * Close the connection.
28
+ */
29
+ close(): Promise<void>;
30
+ }
31
+ /**
32
+ * Registers a client or pool in the global registry.
33
+ * Called automatically when a client or pool is created.
17
34
  *
18
- * @param client - The client to register
35
+ * @param connection - The client or pool to register
19
36
  * @internal
20
37
  */
21
- export declare function registerClient(client: PostgresClient): void;
38
+ export declare function registerClient(connection: Registrable): void;
22
39
  /**
23
- * Unregisters a client from the global registry.
24
- * Called automatically when a client is closed.
40
+ * Unregisters a client or pool from the global registry.
41
+ * Called automatically when a client or pool is closed.
25
42
  *
26
- * @param client - The client to unregister
43
+ * @param connection - The client or pool to unregister
27
44
  * @internal
28
45
  */
29
- export declare function unregisterClient(client: PostgresClient): void;
46
+ export declare function unregisterClient(connection: Registrable): void;
30
47
  /**
31
- * Returns the number of registered clients.
48
+ * Returns the number of registered clients and pools.
32
49
  * Useful for debugging and testing.
33
50
  */
34
51
  export declare function getClientCount(): number;
35
52
  /**
36
- * Returns all registered clients.
53
+ * Returns all registered clients and pools.
37
54
  * Useful for debugging and monitoring.
38
55
  */
39
- export declare function getClients(): ReadonlySet<PostgresClient>;
56
+ export declare function getClients(): ReadonlySet<Registrable>;
40
57
  /**
41
- * Shuts down all registered PostgreSQL clients gracefully.
58
+ * Shuts down all registered PostgreSQL clients and pools gracefully.
42
59
  *
43
60
  * This function:
44
- * 1. Signals shutdown to all clients (prevents reconnection)
45
- * 2. Closes all clients in parallel
61
+ * 1. Signals shutdown to all clients/pools (prevents reconnection)
62
+ * 2. Closes all clients/pools in parallel
46
63
  * 3. Clears the registry
47
64
  *
48
65
  * This is intended to be called by the runtime during graceful shutdown.
49
66
  *
50
67
  * @param timeoutMs - Optional timeout in milliseconds. If provided, the function
51
- * will resolve after the timeout even if some clients haven't
68
+ * will resolve after the timeout even if some connections haven't
52
69
  * finished closing. Default: no timeout.
53
- * @returns A promise that resolves when all clients are closed (or timeout)
70
+ * @returns A promise that resolves when all connections are closed (or timeout)
54
71
  *
55
72
  * @example
56
73
  * ```typescript
@@ -64,7 +81,7 @@ export declare function getClients(): ReadonlySet<PostgresClient>;
64
81
  */
65
82
  export declare function shutdownAll(timeoutMs?: number): Promise<void>;
66
83
  /**
67
- * Checks if there are any active (non-shutdown) clients.
84
+ * Checks if there are any active (non-shutdown) clients or pools.
68
85
  * Useful for health checks.
69
86
  */
70
87
  export declare function hasActiveClients(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAuB/C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAE7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAAC,cAAc,CAAC,CAExD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAQ1C"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAuBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAAC,WAAW,CAAC,CAErD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAQ1C"}
package/dist/registry.js CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Global registry for PostgreSQL clients.
2
+ * Global registry for PostgreSQL clients and pools.
3
3
  *
4
- * This module provides a way to track all active PostgreSQL clients
4
+ * This module provides a way to track all active PostgreSQL clients and pools
5
5
  * so they can be gracefully shut down together (e.g., on process exit).
6
6
  *
7
- * The runtime can use `shutdownAll()` to close all registered clients
7
+ * The runtime can use `shutdownAll()` to close all registered clients/pools
8
8
  * during graceful shutdown.
9
9
  *
10
10
  * When @agentuity/runtime is available, this module automatically registers
11
- * a shutdown hook so all postgres clients are closed during graceful shutdown.
11
+ * a shutdown hook so all postgres clients/pools are closed during graceful shutdown.
12
12
  */
13
13
  /**
14
14
  * Symbol used to store the registry in globalThis to avoid conflicts.
@@ -19,7 +19,7 @@ const REGISTRY_KEY = Symbol.for('@agentuity/postgres:registry');
19
19
  */
20
20
  const RUNTIME_HOOK_REGISTERED = Symbol.for('@agentuity/postgres:runtime-hook-registered');
21
21
  /**
22
- * Gets the global client registry, creating it if it doesn't exist.
22
+ * Gets the global registry, creating it if it doesn't exist.
23
23
  */
24
24
  function getRegistry() {
25
25
  const global = globalThis;
@@ -29,53 +29,53 @@ function getRegistry() {
29
29
  return global[REGISTRY_KEY];
30
30
  }
31
31
  /**
32
- * Registers a client in the global registry.
33
- * Called automatically when a client is created.
32
+ * Registers a client or pool in the global registry.
33
+ * Called automatically when a client or pool is created.
34
34
  *
35
- * @param client - The client to register
35
+ * @param connection - The client or pool to register
36
36
  * @internal
37
37
  */
38
- export function registerClient(client) {
39
- getRegistry().add(client);
38
+ export function registerClient(connection) {
39
+ getRegistry().add(connection);
40
40
  }
41
41
  /**
42
- * Unregisters a client from the global registry.
43
- * Called automatically when a client is closed.
42
+ * Unregisters a client or pool from the global registry.
43
+ * Called automatically when a client or pool is closed.
44
44
  *
45
- * @param client - The client to unregister
45
+ * @param connection - The client or pool to unregister
46
46
  * @internal
47
47
  */
48
- export function unregisterClient(client) {
49
- getRegistry().delete(client);
48
+ export function unregisterClient(connection) {
49
+ getRegistry().delete(connection);
50
50
  }
51
51
  /**
52
- * Returns the number of registered clients.
52
+ * Returns the number of registered clients and pools.
53
53
  * Useful for debugging and testing.
54
54
  */
55
55
  export function getClientCount() {
56
56
  return getRegistry().size;
57
57
  }
58
58
  /**
59
- * Returns all registered clients.
59
+ * Returns all registered clients and pools.
60
60
  * Useful for debugging and monitoring.
61
61
  */
62
62
  export function getClients() {
63
63
  return getRegistry();
64
64
  }
65
65
  /**
66
- * Shuts down all registered PostgreSQL clients gracefully.
66
+ * Shuts down all registered PostgreSQL clients and pools gracefully.
67
67
  *
68
68
  * This function:
69
- * 1. Signals shutdown to all clients (prevents reconnection)
70
- * 2. Closes all clients in parallel
69
+ * 1. Signals shutdown to all clients/pools (prevents reconnection)
70
+ * 2. Closes all clients/pools in parallel
71
71
  * 3. Clears the registry
72
72
  *
73
73
  * This is intended to be called by the runtime during graceful shutdown.
74
74
  *
75
75
  * @param timeoutMs - Optional timeout in milliseconds. If provided, the function
76
- * will resolve after the timeout even if some clients haven't
76
+ * will resolve after the timeout even if some connections haven't
77
77
  * finished closing. Default: no timeout.
78
- * @returns A promise that resolves when all clients are closed (or timeout)
78
+ * @returns A promise that resolves when all connections are closed (or timeout)
79
79
  *
80
80
  * @example
81
81
  * ```typescript
@@ -89,18 +89,18 @@ export function getClients() {
89
89
  */
90
90
  export async function shutdownAll(timeoutMs) {
91
91
  const registry = getRegistry();
92
- const clients = Array.from(registry);
93
- if (clients.length === 0) {
92
+ const connections = Array.from(registry);
93
+ if (connections.length === 0) {
94
94
  return;
95
95
  }
96
- // Signal shutdown to all clients first (prevents reconnection attempts)
97
- for (const client of clients) {
98
- client.shutdown();
96
+ // Signal shutdown to all connections first (prevents reconnection attempts)
97
+ for (const connection of connections) {
98
+ connection.shutdown();
99
99
  }
100
- // Close all clients in parallel
101
- const closePromises = clients.map(async (client) => {
100
+ // Close all connections in parallel
101
+ const closePromises = connections.map(async (connection) => {
102
102
  try {
103
- await client.close();
103
+ await connection.close();
104
104
  }
105
105
  catch {
106
106
  // Ignore close errors during shutdown
@@ -128,13 +128,13 @@ export async function shutdownAll(timeoutMs) {
128
128
  registry.clear();
129
129
  }
130
130
  /**
131
- * Checks if there are any active (non-shutdown) clients.
131
+ * Checks if there are any active (non-shutdown) clients or pools.
132
132
  * Useful for health checks.
133
133
  */
134
134
  export function hasActiveClients() {
135
135
  const registry = getRegistry();
136
- for (const client of registry) {
137
- if (!client.shuttingDown) {
136
+ for (const connection of registry) {
137
+ if (!connection.shuttingDown) {
138
138
  return true;
139
139
  }
140
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -210,4 +210,159 @@ export interface ReserveOptions {
210
210
  */
211
211
  timeout?: number;
212
212
  }
213
+ /**
214
+ * SSL configuration for pg.Pool connections.
215
+ */
216
+ export interface PoolSSLConfig {
217
+ /**
218
+ * Whether to reject unauthorized certificates.
219
+ * Set to `false` to allow self-signed certificates.
220
+ */
221
+ rejectUnauthorized?: boolean;
222
+ /**
223
+ * CA certificate(s) for verifying the server certificate.
224
+ */
225
+ ca?: string | Buffer | (string | Buffer)[];
226
+ /**
227
+ * Client certificate for mutual TLS authentication.
228
+ */
229
+ cert?: string | Buffer;
230
+ /**
231
+ * Client private key for mutual TLS authentication.
232
+ */
233
+ key?: string | Buffer;
234
+ }
235
+ /**
236
+ * Configuration options for PostgresPool.
237
+ * Extends standard pg.Pool options with reconnection support.
238
+ */
239
+ export interface PoolConfig {
240
+ /**
241
+ * PostgreSQL connection URL.
242
+ * If not provided, uses `process.env.DATABASE_URL`.
243
+ */
244
+ connectionString?: string;
245
+ /**
246
+ * Database hostname.
247
+ */
248
+ host?: string;
249
+ /**
250
+ * Database port.
251
+ * @default 5432
252
+ */
253
+ port?: number;
254
+ /**
255
+ * Database username.
256
+ */
257
+ user?: string;
258
+ /**
259
+ * Database password.
260
+ */
261
+ password?: string;
262
+ /**
263
+ * Database name.
264
+ */
265
+ database?: string;
266
+ /**
267
+ * Maximum number of connections in the pool.
268
+ * @default 10
269
+ */
270
+ max?: number;
271
+ /**
272
+ * Number of milliseconds a client must sit idle before being disconnected.
273
+ * Set to 0 to disable idle timeout.
274
+ * @default 10000
275
+ */
276
+ idleTimeoutMillis?: number;
277
+ /**
278
+ * Number of milliseconds to wait when connecting a new client before timing out.
279
+ * Set to 0 to disable connection timeout.
280
+ * @default 0
281
+ */
282
+ connectionTimeoutMillis?: number;
283
+ /**
284
+ * SSL configuration.
285
+ * Set to `true` to enable SSL with default settings.
286
+ * Set to an object to configure SSL options.
287
+ * Set to `false` or omit to disable SSL.
288
+ */
289
+ ssl?: boolean | PoolSSLConfig;
290
+ /**
291
+ * Reconnection configuration.
292
+ */
293
+ reconnect?: ReconnectConfig;
294
+ /**
295
+ * Whether to establish a connection immediately on pool creation.
296
+ * If true, the pool will verify connectivity by acquiring and releasing a client.
297
+ * If false (default), the first connection is made lazily on first query.
298
+ *
299
+ * @default false
300
+ */
301
+ preconnect?: boolean;
302
+ /**
303
+ * Callback invoked when the pool encounters an error.
304
+ */
305
+ onclose?: (error?: Error) => void;
306
+ /**
307
+ * Callback invoked when reconnection starts.
308
+ */
309
+ onreconnect?: (attempt: number) => void;
310
+ /**
311
+ * Callback invoked when reconnection succeeds.
312
+ */
313
+ onreconnected?: () => void;
314
+ /**
315
+ * Callback invoked when reconnection fails permanently.
316
+ */
317
+ onreconnectfailed?: (error: Error) => void;
318
+ }
319
+ /**
320
+ * Statistics about the pool state and reconnection history.
321
+ */
322
+ export interface PoolStats {
323
+ /**
324
+ * Whether the pool is currently connected.
325
+ */
326
+ connected: boolean;
327
+ /**
328
+ * Whether a reconnection attempt is in progress.
329
+ */
330
+ reconnecting: boolean;
331
+ /**
332
+ * Total number of clients in the pool.
333
+ */
334
+ totalCount: number;
335
+ /**
336
+ * Number of idle clients in the pool.
337
+ */
338
+ idleCount: number;
339
+ /**
340
+ * Number of clients currently waiting to be acquired.
341
+ */
342
+ waitingCount: number;
343
+ /**
344
+ * Total number of successful connections (including reconnections).
345
+ */
346
+ totalConnections: number;
347
+ /**
348
+ * Total number of reconnection attempts.
349
+ */
350
+ reconnectAttempts: number;
351
+ /**
352
+ * Total number of failed reconnection attempts.
353
+ */
354
+ failedReconnects: number;
355
+ /**
356
+ * Timestamp of the last successful connection.
357
+ */
358
+ lastConnectedAt: Date | null;
359
+ /**
360
+ * Timestamp of the last disconnection.
361
+ */
362
+ lastDisconnectedAt: Date | null;
363
+ /**
364
+ * Timestamp of the last reconnection attempt.
365
+ */
366
+ lastReconnectAttemptAt: Date | null;
367
+ }
213
368
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/postgres",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -31,10 +31,11 @@
31
31
  "prepublishOnly": "bun run clean && bun run build"
32
32
  },
33
33
  "dependencies": {
34
- "@agentuity/core": "1.0.1"
34
+ "@agentuity/core": "1.0.2",
35
+ "pg": "^8.13.1"
35
36
  },
36
37
  "peerDependencies": {
37
- "@agentuity/runtime": "1.0.1"
38
+ "@agentuity/runtime": "1.0.2"
38
39
  },
39
40
  "peerDependenciesMeta": {
40
41
  "@agentuity/runtime": {
@@ -42,10 +43,12 @@
42
43
  }
43
44
  },
44
45
  "devDependencies": {
45
- "@agentuity/runtime": "1.0.1",
46
- "@agentuity/test-utils": "1.0.1",
46
+ "@agentuity/runtime": "1.0.2",
47
+ "@agentuity/test-utils": "1.0.2",
47
48
  "@types/bun": "latest",
49
+ "@types/pg": "^8.11.14",
48
50
  "bun-types": "latest",
51
+ "kysely": "^0.27.6",
49
52
  "typescript": "^5.9.0"
50
53
  },
51
54
  "publishConfig": {
package/src/index.ts CHANGED
@@ -37,6 +37,9 @@ export { postgres, default } from './postgres';
37
37
  // Client class for advanced usage
38
38
  export { PostgresClient, createCallableClient, type CallablePostgresClient } from './client';
39
39
 
40
+ // Pool class for pg.Pool-based connections
41
+ export { PostgresPool, Pool, createPool } from './pool';
42
+
40
43
  // Transaction and reserved connection classes
41
44
  export { Transaction, Savepoint, ReservedConnection } from './transaction';
42
45
 
@@ -51,6 +54,9 @@ export type {
51
54
  TLSConfig,
52
55
  TransactionOptions,
53
56
  ReserveOptions,
57
+ PoolConfig,
58
+ PoolStats,
59
+ PoolSSLConfig,
54
60
  } from './types';
55
61
 
56
62
  // Errors
@@ -68,4 +74,10 @@ export {
68
74
  export { computeBackoff, sleep, mergeReconnectConfig, DEFAULT_RECONNECT_CONFIG } from './reconnect';
69
75
 
70
76
  // Global registry for coordinated shutdown
71
- export { shutdownAll, getClientCount, getClients, hasActiveClients } from './registry';
77
+ export {
78
+ shutdownAll,
79
+ getClientCount,
80
+ getClients,
81
+ hasActiveClients,
82
+ type Registrable,
83
+ } from './registry';