@otwdesign/db-core 1.0.1 → 1.1.0

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,3 +1,9 @@
1
1
  import type { ConnectionConfig, Driver } from '../types.ts';
2
+ import { type PostgresOptions } from './postgres.ts';
3
+ /** What the drivers are given, by kind: PostgreSQL's packages, for one. */
4
+ export interface DriverOptions {
5
+ /** Where a PostgreSQL connection's pg and pg-cursor come from. */
6
+ postgres?: PostgresOptions;
7
+ }
2
8
  /** The driver for a connection, by its URL's scheme. It connects on first use. */
3
- export declare function openDriver(connection: ConnectionConfig): Driver;
9
+ export declare function openDriver(connection: ConnectionConfig, options?: DriverOptions): Driver;
@@ -3,10 +3,10 @@ import { mysqlDriver } from "./mysql.js";
3
3
  import { postgresDriver } from "./postgres.js";
4
4
  import { sqliteDriver } from "./sqlite.js";
5
5
  /** The driver for a connection, by its URL's scheme. It connects on first use. */
6
- export function openDriver(connection) {
6
+ export function openDriver(connection, options = {}) {
7
7
  const kind = driverKind(connection.url, `Connection "${connection.name}"`);
8
8
  if (kind === 'postgres')
9
- return postgresDriver(connection.url);
9
+ return postgresDriver(connection.url, options.postgres);
10
10
  if (kind === 'mysql')
11
11
  return mysqlDriver(connection.url);
12
12
  return sqliteDriver(connection.url);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,UAA4B;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9D,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACxD,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ1C,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,UAA4B,EAAE,UAAyB,EAAE;IAClF,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,UAAU,CAAC,IAAI,GAAG,CAAC,CAAA;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChF,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACxD,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACrC,CAAC"}
@@ -1,6 +1,21 @@
1
1
  import type { Driver } from '../types.ts';
2
+ /**
3
+ * Imports pg and pg-cursor, as `() => Promise.all([import('pg'), import('pg-cursor')])` does.
4
+ * Each may be its import's namespace or the package's own export.
5
+ */
6
+ export type PostgresModules = () => Promise<readonly [pg: unknown, pgCursor: unknown]>;
7
+ /** How a PostgreSQL driver gets the packages it runs on. */
8
+ export interface PostgresOptions {
9
+ /**
10
+ * Where pg and pg-cursor come from. By default they're imported where the app runs, from the
11
+ * app's own dependencies. A package that brings them as its own dependencies and is bundled into
12
+ * the app, such as the OTW CMS plugin, passes its own imports: the app's bundler resolves those
13
+ * from that package, which pnpm requires, since it keeps a package's dependencies beside it.
14
+ */
15
+ modules?: PostgresModules;
16
+ }
2
17
  /**
3
18
  * A PostgreSQL driver for `url`. It connects on first use, with a pool of up to three
4
19
  * connections, each closed after 10 s unused; an admin tool needs few.
5
20
  */
6
- export declare function postgresDriver(url: string): Driver;
21
+ export declare function postgresDriver(url: string, options?: PostgresOptions): Driver;
@@ -13,36 +13,59 @@ const READ_CLEANUP = 'ROLLBACK; SELECT pg_advisory_unlock_all()';
13
13
  const NOT_IN_TRANSACTION = '25001';
14
14
  /** "canceling statement due to user request", after a cancel. */
15
15
  const CANCELED = '57014';
16
- let modules;
16
+ // Imported where the app runs, not bundled: an app installs only the drivers it uses, and a
17
+ // bundler (Next.js) mustn't fail on one it doesn't have.
18
+ const fromApp = () => Promise.all([
19
+ import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg'),
20
+ import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg-cursor'),
21
+ ]);
22
+ let appModules;
17
23
  /** pg and pg-cursor, imported on the first PostgreSQL connection, so other hosts never load them. */
18
- function loadModules() {
19
- // Imported where the host runs, not bundled: a site installs only the drivers it uses, and a
20
- // bundler (Next.js) mustn't fail on one it doesn't have.
21
- modules ??= Promise.all([
22
- import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg'),
23
- import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg-cursor'),
24
- ]).then(([pg, cursor]) => ({ Pool: pg.Pool, Cursor: cursor.default }), (error) => {
25
- modules = undefined;
26
- throw new DbAdminError(`PostgreSQL connections need the pg and pg-cursor packages: npm install pg pg-cursor (${error.message})`, 500, 'driver-missing');
24
+ function loadModules(given) {
25
+ if (given)
26
+ return load(given, 'Could not load pg and pg-cursor');
27
+ appModules ??= load(fromApp, 'PostgreSQL connections need the pg and pg-cursor packages, installed in the app: npm install pg pg-cursor').catch((error) => {
28
+ appModules = undefined;
29
+ throw error;
27
30
  });
28
- return modules;
31
+ return appModules;
32
+ }
33
+ async function load(modules, failure) {
34
+ let pg, cursor;
35
+ try {
36
+ ;
37
+ [pg, cursor] = await modules();
38
+ }
39
+ catch (error) {
40
+ throw new DbAdminError(`${failure}: ${error.message}`, 500, 'driver-missing');
41
+ }
42
+ // A CommonJS package's import has its export as the default, and pg's ESM entry names Pool too.
43
+ const exports = pg;
44
+ const PoolClass = exports.Pool ?? exports.default?.Pool;
45
+ const Cursor = cursor?.default ?? cursor;
46
+ if (typeof PoolClass !== 'function' || typeof Cursor !== 'function') {
47
+ throw new DbAdminError(`${failure}: they aren't pg's and pg-cursor's`, 500, 'driver-missing');
48
+ }
49
+ return { Pool: PoolClass, Cursor: Cursor };
29
50
  }
30
51
  /**
31
52
  * A PostgreSQL driver for `url`. It connects on first use, with a pool of up to three
32
53
  * connections, each closed after 10 s unused; an admin tool needs few.
33
54
  */
34
- export function postgresDriver(url) {
35
- return new PostgresDriver(url);
55
+ export function postgresDriver(url, options = {}) {
56
+ return new PostgresDriver(url, options.modules);
36
57
  }
37
58
  class PostgresDriver {
38
59
  kind = 'postgres';
39
60
  capabilities = { schemas: true, transactionalDdl: true, cancel: true };
40
61
  sql = { identifier: quote, literal };
41
62
  #config;
63
+ #modules;
42
64
  #pool;
43
65
  /** Type names by OID, filled as results bring new ones. */
44
66
  #typeNames = new Map();
45
- constructor(url) {
67
+ constructor(url, modules) {
68
+ this.#modules = modules;
46
69
  this.#config = {
47
70
  connectionString: url,
48
71
  max: 3,
@@ -52,11 +75,15 @@ class PostgresDriver {
52
75
  };
53
76
  }
54
77
  #open() {
55
- this.#pool ??= loadModules().then((modules) => {
78
+ this.#pool ??= loadModules(this.#modules).then((modules) => {
56
79
  const pool = new modules.Pool(this.#config);
57
80
  // An idle connection the server drops would otherwise take the whole process with it.
58
81
  pool.on('error', (error) => console.error('otw-db: a PostgreSQL connection failed', error));
59
82
  return { pool, modules };
83
+ }, (error) => {
84
+ // Nothing opened: the next call tries again.
85
+ this.#pool = undefined;
86
+ throw error;
60
87
  });
61
88
  return this.#pool;
62
89
  }
@@ -255,8 +282,9 @@ class PostgresDriver {
255
282
  async close() {
256
283
  const opened = this.#pool;
257
284
  this.#pool = undefined;
258
- if (opened)
259
- await (await opened).pool.end();
285
+ // One that failed to open has nothing to close.
286
+ const pool = await opened?.catch(() => undefined);
287
+ await pool?.pool.end();
260
288
  }
261
289
  }
262
290
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/drivers/postgres.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/drivers/postgres.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { connectionsFromEnv, driverKind } from './connections.ts';
2
- export { openDriver } from './drivers/index.ts';
2
+ export { openDriver, type DriverOptions } from './drivers/index.ts';
3
3
  export { backtick, mysqlDriver, mysqlLiteral } from './drivers/mysql.ts';
4
4
  export { sqliteDriver, sqliteLiteral, sqlitePath } from './drivers/sqlite.ts';
5
5
  export { pgliteDriver, type PGliteLike, type PGliteQueryable } from './drivers/pglite.ts';
6
- export { postgresDriver } from './drivers/postgres.ts';
6
+ export { postgresDriver, type PostgresModules, type PostgresOptions } from './drivers/postgres.ts';
7
7
  export { literal as literalPostgres, quote as quotePostgres } from './drivers/postgres-catalog.ts';
8
8
  export { ConnectionError, DbAdminError, QueryError } from './errors.ts';
9
9
  export { EXPORT_TYPES, exportStream, type ExportBatch } from './export.ts';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAyC,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAA;AAC1E,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,GAIf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAgC,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAyC,MAAM,qBAAqB,CAAA;AACzF,OAAO,EAAE,cAAc,EAA8C,MAAM,uBAAuB,CAAA;AAClG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAA;AAC1E,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,GAIf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAgC,MAAM,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otwdesign/db-core",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "A database manager's engine and HTTP API, as one Fetch handler: browse, query and inspect PostgreSQL, MySQL and SQLite from any app.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "OTW SRL",
@@ -52,7 +52,7 @@
52
52
  "NOTICE"
53
53
  ],
54
54
  "dependencies": {
55
- "@otwdesign/db-ui": "1.0.1"
55
+ "@otwdesign/db-ui": "1.1.0"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "pg": "^8.11.0",
@@ -1,13 +1,19 @@
1
1
  import { driverKind } from '../connections.ts'
2
2
  import type { ConnectionConfig, Driver } from '../types.ts'
3
3
  import { mysqlDriver } from './mysql.ts'
4
- import { postgresDriver } from './postgres.ts'
4
+ import { postgresDriver, type PostgresOptions } from './postgres.ts'
5
5
  import { sqliteDriver } from './sqlite.ts'
6
6
 
7
+ /** What the drivers are given, by kind: PostgreSQL's packages, for one. */
8
+ export interface DriverOptions {
9
+ /** Where a PostgreSQL connection's pg and pg-cursor come from. */
10
+ postgres?: PostgresOptions
11
+ }
12
+
7
13
  /** The driver for a connection, by its URL's scheme. It connects on first use. */
8
- export function openDriver(connection: ConnectionConfig): Driver {
14
+ export function openDriver(connection: ConnectionConfig, options: DriverOptions = {}): Driver {
9
15
  const kind = driverKind(connection.url, `Connection "${connection.name}"`)
10
- if (kind === 'postgres') return postgresDriver(connection.url)
16
+ if (kind === 'postgres') return postgresDriver(connection.url, options.postgres)
11
17
  if (kind === 'mysql') return mysqlDriver(connection.url)
12
18
  return sqliteDriver(connection.url)
13
19
  }
@@ -50,35 +50,69 @@ interface Modules {
50
50
  Cursor: typeof CursorClass
51
51
  }
52
52
 
53
- let modules: Promise<Modules> | undefined
53
+ /**
54
+ * Imports pg and pg-cursor, as `() => Promise.all([import('pg'), import('pg-cursor')])` does.
55
+ * Each may be its import's namespace or the package's own export.
56
+ */
57
+ export type PostgresModules = () => Promise<readonly [pg: unknown, pgCursor: unknown]>
54
58
 
55
- /** pg and pg-cursor, imported on the first PostgreSQL connection, so other hosts never load them. */
56
- function loadModules(): Promise<Modules> {
57
- // Imported where the host runs, not bundled: a site installs only the drivers it uses, and a
58
- // bundler (Next.js) mustn't fail on one it doesn't have.
59
- modules ??= Promise.all([
59
+ /** How a PostgreSQL driver gets the packages it runs on. */
60
+ export interface PostgresOptions {
61
+ /**
62
+ * Where pg and pg-cursor come from. By default they're imported where the app runs, from the
63
+ * app's own dependencies. A package that brings them as its own dependencies and is bundled into
64
+ * the app, such as the OTW CMS plugin, passes its own imports: the app's bundler resolves those
65
+ * from that package, which pnpm requires, since it keeps a package's dependencies beside it.
66
+ */
67
+ modules?: PostgresModules
68
+ }
69
+
70
+ // Imported where the app runs, not bundled: an app installs only the drivers it uses, and a
71
+ // bundler (Next.js) mustn't fail on one it doesn't have.
72
+ const fromApp: PostgresModules = () =>
73
+ Promise.all([
60
74
  import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg'),
61
75
  import(/* webpackIgnore: true */ /* turbopackIgnore: true */ 'pg-cursor'),
62
- ]).then(
63
- ([pg, cursor]) => ({ Pool: pg.Pool, Cursor: cursor.default }),
64
- (error: unknown) => {
65
- modules = undefined
66
- throw new DbAdminError(
67
- `PostgreSQL connections need the pg and pg-cursor packages: npm install pg pg-cursor (${(error as Error).message})`,
68
- 500,
69
- 'driver-missing',
70
- )
71
- },
72
- )
73
- return modules
76
+ ])
77
+
78
+ let appModules: Promise<Modules> | undefined
79
+
80
+ /** pg and pg-cursor, imported on the first PostgreSQL connection, so other hosts never load them. */
81
+ function loadModules(given: PostgresModules | undefined): Promise<Modules> {
82
+ if (given) return load(given, 'Could not load pg and pg-cursor')
83
+ appModules ??= load(
84
+ fromApp,
85
+ 'PostgreSQL connections need the pg and pg-cursor packages, installed in the app: npm install pg pg-cursor',
86
+ ).catch((error: unknown) => {
87
+ appModules = undefined
88
+ throw error
89
+ })
90
+ return appModules
91
+ }
92
+
93
+ async function load(modules: PostgresModules, failure: string): Promise<Modules> {
94
+ let pg: unknown, cursor: unknown
95
+ try {
96
+ ;[pg, cursor] = await modules()
97
+ } catch (error) {
98
+ throw new DbAdminError(`${failure}: ${(error as Error).message}`, 500, 'driver-missing')
99
+ }
100
+ // A CommonJS package's import has its export as the default, and pg's ESM entry names Pool too.
101
+ const exports = pg as { Pool?: typeof Pool; default?: { Pool?: typeof Pool } }
102
+ const PoolClass = exports.Pool ?? exports.default?.Pool
103
+ const Cursor = (cursor as { default?: unknown } | undefined)?.default ?? cursor
104
+ if (typeof PoolClass !== 'function' || typeof Cursor !== 'function') {
105
+ throw new DbAdminError(`${failure}: they aren't pg's and pg-cursor's`, 500, 'driver-missing')
106
+ }
107
+ return { Pool: PoolClass, Cursor: Cursor as typeof CursorClass }
74
108
  }
75
109
 
76
110
  /**
77
111
  * A PostgreSQL driver for `url`. It connects on first use, with a pool of up to three
78
112
  * connections, each closed after 10 s unused; an admin tool needs few.
79
113
  */
80
- export function postgresDriver(url: string): Driver {
81
- return new PostgresDriver(url)
114
+ export function postgresDriver(url: string, options: PostgresOptions = {}): Driver {
115
+ return new PostgresDriver(url, options.modules)
82
116
  }
83
117
 
84
118
  class PostgresDriver implements Driver {
@@ -86,11 +120,13 @@ class PostgresDriver implements Driver {
86
120
  readonly capabilities: Capabilities = { schemas: true, transactionalDdl: true, cancel: true }
87
121
  readonly sql = { identifier: quote, literal }
88
122
  readonly #config: PoolConfig
123
+ readonly #modules: PostgresModules | undefined
89
124
  #pool: Promise<{ pool: Pool; modules: Modules }> | undefined
90
125
  /** Type names by OID, filled as results bring new ones. */
91
126
  readonly #typeNames = new Map<number, string>()
92
127
 
93
- constructor(url: string) {
128
+ constructor(url: string, modules: PostgresModules | undefined) {
129
+ this.#modules = modules
94
130
  this.#config = {
95
131
  connectionString: url,
96
132
  max: 3,
@@ -101,12 +137,19 @@ class PostgresDriver implements Driver {
101
137
  }
102
138
 
103
139
  #open(): Promise<{ pool: Pool; modules: Modules }> {
104
- this.#pool ??= loadModules().then((modules) => {
105
- const pool = new modules.Pool(this.#config)
106
- // An idle connection the server drops would otherwise take the whole process with it.
107
- pool.on('error', (error) => console.error('otw-db: a PostgreSQL connection failed', error))
108
- return { pool, modules }
109
- })
140
+ this.#pool ??= loadModules(this.#modules).then(
141
+ (modules) => {
142
+ const pool = new modules.Pool(this.#config)
143
+ // An idle connection the server drops would otherwise take the whole process with it.
144
+ pool.on('error', (error) => console.error('otw-db: a PostgreSQL connection failed', error))
145
+ return { pool, modules }
146
+ },
147
+ (error: unknown) => {
148
+ // Nothing opened: the next call tries again.
149
+ this.#pool = undefined
150
+ throw error
151
+ },
152
+ )
110
153
  return this.#pool
111
154
  }
112
155
 
@@ -332,7 +375,9 @@ class PostgresDriver implements Driver {
332
375
  async close(): Promise<void> {
333
376
  const opened = this.#pool
334
377
  this.#pool = undefined
335
- if (opened) await (await opened).pool.end()
378
+ // One that failed to open has nothing to close.
379
+ const pool = await opened?.catch(() => undefined)
380
+ await pool?.pool.end()
336
381
  }
337
382
  }
338
383
 
package/src/index.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { connectionsFromEnv, driverKind } from './connections.ts'
2
- export { openDriver } from './drivers/index.ts'
2
+ export { openDriver, type DriverOptions } from './drivers/index.ts'
3
3
  export { backtick, mysqlDriver, mysqlLiteral } from './drivers/mysql.ts'
4
4
  export { sqliteDriver, sqliteLiteral, sqlitePath } from './drivers/sqlite.ts'
5
5
  export { pgliteDriver, type PGliteLike, type PGliteQueryable } from './drivers/pglite.ts'
6
- export { postgresDriver } from './drivers/postgres.ts'
6
+ export { postgresDriver, type PostgresModules, type PostgresOptions } from './drivers/postgres.ts'
7
7
  export { literal as literalPostgres, quote as quotePostgres } from './drivers/postgres-catalog.ts'
8
8
  export { ConnectionError, DbAdminError, QueryError } from './errors.ts'
9
9
  export { EXPORT_TYPES, exportStream, type ExportBatch } from './export.ts'