pqb 0.61.13 → 0.62.1

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,8 +1,8 @@
1
- import * as pqb from 'pqb';
2
- import { ColumnSchemaConfig, DefaultSchemaConfig, DefaultColumnTypes, DbOptions, DbResult, AdapterConfigBase, QuerySchema, AdapterBase, RecordStringOrNumber, QueryResultRow, QueryResult, QueryArraysResult, TransactionArgs, QueryError, TransactionAdapterBase } from 'pqb';
3
1
  import { PoolConfig, Pool, PoolClient } from 'pg';
2
+ import { AdapterConfigBase, AdapterBase, QuerySchema, RecordStringOrNumber, QueryResultRow, QueryResult, QueryArraysResult, TransactionArgs, TransactionAdapterBase, ColumnSchemaConfig, DefaultSchemaConfig, DefaultColumnTypes, DbOptions, DbResult } from 'pqb/internal';
3
+ import { QueryError } from 'pqb';
4
4
 
5
- declare const createDb: <SchemaConfig extends ColumnSchemaConfig<pqb.Column.Pick.Data> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>({ log, ...options }: DbOptions<SchemaConfig, ColumnTypes> & Omit<NodePostgresAdapterOptions, 'log'>) => DbResult<ColumnTypes>;
5
+ declare const createDb: <SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>({ log, ...options }: DbOptions<SchemaConfig, ColumnTypes> & Omit<NodePostgresAdapterOptions, "log">) => DbResult<ColumnTypes>;
6
6
  interface TypeParsers {
7
7
  [K: number]: (input: string) => unknown;
8
8
  }
@@ -66,11 +66,12 @@ declare class NodePostgresTransactionAdapter implements TransactionAdapterBase {
66
66
  getHost(): string;
67
67
  getSchema(): QuerySchema | undefined;
68
68
  connect(): Promise<PoolClient>;
69
- query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[], catchingSavepoint?: string): Promise<QueryResult<T>>;
70
- arrays<R extends any[] = any[]>(text: string, values?: unknown[], catchingSavepoint?: string): Promise<QueryArraysResult<R>>;
69
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[], startingSavepoint?: string, releasingSavepoint?: string): Promise<QueryResult<T>>;
70
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[], startingSavepoint?: string, releasingSavepoint?: string): Promise<QueryArraysResult<R>>;
71
71
  transaction<Result>(...args: TransactionArgs<Result>): Promise<Result>;
72
72
  close(): Promise<void>;
73
73
  assignError(to: QueryError, from: Error): void;
74
74
  }
75
75
 
76
- export { type AdapterConfig, NodePostgresAdapter, type NodePostgresAdapterOptions, NodePostgresTransactionAdapter, type TypeParsers, createDb };
76
+ export { NodePostgresAdapter, NodePostgresTransactionAdapter, createDb };
77
+ export type { AdapterConfig, NodePostgresAdapterOptions, TypeParsers };
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var pg = require('pg');
4
+ var internal = require('pqb/internal');
4
5
  var pqb = require('pqb');
5
6
 
6
7
  const transactionArgs = {
@@ -61,7 +62,7 @@ class NodePostgresAdapter {
61
62
  this.config = config;
62
63
  this.errorClass = pg.DatabaseError;
63
64
  this.pool = this.configure(config);
64
- this.locals = this.searchPath ? { search_path: this.searchPath } : pqb.emptyObject;
65
+ this.locals = this.searchPath ? { search_path: this.searchPath } : internal.emptyObject;
65
66
  }
66
67
  isInTransaction() {
67
68
  return false;
@@ -86,11 +87,11 @@ class NodePostgresAdapter {
86
87
  this.searchPath = searchPath === "public" ? void 0 : searchPath;
87
88
  const pool = new pg.Pool(config);
88
89
  if (config.connectRetry) {
89
- pqb.setConnectRetryConfig(
90
+ internal.setConnectRetryConfig(
90
91
  this,
91
- config.connectRetry === true ? pqb.emptyObject : config.connectRetry
92
+ config.connectRetry === true ? internal.emptyObject : config.connectRetry
92
93
  );
93
- this.connect = pqb.wrapAdapterFnWithConnectRetry(
94
+ this.connect = internal.wrapAdapterFnWithConnectRetry(
94
95
  this,
95
96
  () => this.pool.connect()
96
97
  );
@@ -213,7 +214,7 @@ class NodePostgresAdapter {
213
214
  }
214
215
  const defaultTypesConfig = {
215
216
  getTypeParser(id) {
216
- return defaultTypeParsers[id] || pqb.returnArg;
217
+ return defaultTypeParsers[id] || internal.returnArg;
217
218
  }
218
219
  };
219
220
  const setSearchPath = (client, searchPath) => {
@@ -223,7 +224,7 @@ const setSearchPath = (client, searchPath) => {
223
224
  }
224
225
  return;
225
226
  };
226
- const performQuery = async (adapter, text, values, rowMode, catchingSavepoint) => {
227
+ const performQuery = async (adapter, text, values, rowMode, startingSavepoint) => {
227
228
  const client = await adapter.connect();
228
229
  try {
229
230
  await setSearchPath(client, adapter.searchPath);
@@ -232,13 +233,13 @@ const performQuery = async (adapter, text, values, rowMode, catchingSavepoint) =
232
233
  text,
233
234
  values,
234
235
  rowMode,
235
- catchingSavepoint
236
+ startingSavepoint
236
237
  );
237
238
  } finally {
238
239
  client.release();
239
240
  }
240
241
  };
241
- const performQueryOnClient = async (client, text, values, rowMode, catchingSavepoint) => {
242
+ const performQueryOnClient = async (client, text, values, rowMode, startingSavepoint, releasingSavepoint) => {
242
243
  const params = {
243
244
  text,
244
245
  values,
@@ -254,27 +255,40 @@ const performQueryOnClient = async (client, text, values, rowMode, catchingSavep
254
255
  };
255
256
  });
256
257
  return __lock.then(() => {
257
- const promise2 = catchingSavepoint ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params) : client.query(params);
258
+ const promise2 = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(
259
+ client,
260
+ params,
261
+ startingSavepoint,
262
+ releasingSavepoint
263
+ ) : client.query(params);
258
264
  promise2.then(resolve, resolve);
259
265
  return promise2;
260
266
  });
261
267
  }
262
- const promise = catchingSavepoint ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params) : client.query(params);
263
- client.__lock = promise.catch(pqb.noop);
268
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(
269
+ client,
270
+ params,
271
+ startingSavepoint,
272
+ releasingSavepoint
273
+ ) : client.query(params);
274
+ client.__lock = promise.catch(internal.noop);
264
275
  return promise;
265
276
  };
266
- const performQueryOnClientWithSavepoint = (client, catchingSavepoint, params) => {
267
- return client.query(`SAVEPOINT "${catchingSavepoint}"`).then(async () => {
268
- let result;
269
- try {
270
- result = await client.query(params);
271
- } catch (err) {
272
- await client.query(`ROLLBACK TO SAVEPOINT "${catchingSavepoint}"`);
273
- throw err;
274
- }
275
- await client.query(`RELEASE SAVEPOINT "${catchingSavepoint}"`);
276
- return result;
277
- });
277
+ const performQueryOnClientWithSavepoint = (client, params, startingSavepoint, releasingSavepoint) => {
278
+ let promise = startingSavepoint ? client.query(`SAVEPOINT "${startingSavepoint}"`).then(() => client.query(params)) : client.query(params);
279
+ if (releasingSavepoint) {
280
+ promise = promise.then(
281
+ async (res) => {
282
+ await client.query(`RELEASE SAVEPOINT "${releasingSavepoint}"`);
283
+ return res;
284
+ },
285
+ async (err) => {
286
+ await client.query(`ROLLBACK TO SAVEPOINT "${releasingSavepoint}"`);
287
+ throw err;
288
+ }
289
+ );
290
+ }
291
+ return promise;
278
292
  };
279
293
  class NodePostgresTransactionAdapter {
280
294
  constructor(adapter, client, parent, locals) {
@@ -314,23 +328,25 @@ class NodePostgresTransactionAdapter {
314
328
  connect() {
315
329
  return Promise.resolve(this.client);
316
330
  }
317
- async query(text, values, catchingSavepoint) {
331
+ async query(text, values, startingSavepoint, releasingSavepoint) {
318
332
  return await performQueryOnClient(
319
333
  this.client,
320
334
  text,
321
335
  values,
322
336
  void 0,
323
- catchingSavepoint
337
+ startingSavepoint,
338
+ releasingSavepoint
324
339
  );
325
340
  }
326
341
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
327
- async arrays(text, values, catchingSavepoint) {
342
+ async arrays(text, values, startingSavepoint, releasingSavepoint) {
328
343
  return await performQueryOnClient(
329
344
  this.client,
330
345
  text,
331
346
  values,
332
347
  "array",
333
- catchingSavepoint
348
+ startingSavepoint,
349
+ releasingSavepoint
334
350
  );
335
351
  }
336
352
  async transaction(...args) {
@@ -1 +1 @@
1
- {"version":3,"file":"node-postgres.js","sources":["../src/adapters/adapter.utils.ts","../src/adapters/node-postgres.ts"],"sourcesContent":["import {\n AdapterTransactionOptions,\n TransactionAdapterBase,\n TransactionArgs,\n} from './adapter';\nimport { RecordStringOrNumber } from 'pqb';\n\ninterface SolvedTransactionArgs {\n options: AdapterTransactionOptions | undefined;\n cb: (adapter: TransactionAdapterBase) => Promise<unknown>;\n}\n\nconst transactionArgs: SolvedTransactionArgs = {\n cb: undefined,\n options: undefined,\n} as never;\n\nexport const getTransactionArgs = (args: TransactionArgs<unknown>) => {\n if (args[1]) {\n transactionArgs.options = args[0] as AdapterTransactionOptions;\n transactionArgs.cb = args[1];\n } else {\n transactionArgs.cb = args[0] as never;\n }\n return transactionArgs;\n};\n\nexport const mergeLocals = (\n locals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): RecordStringOrNumber =>\n options?.locals ? { ...locals, ...options.locals } : locals;\n\nexport const getSetLocalsSql = (\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .map(([key, value]) => `SET LOCAL ${key}=${value}`)\n .join('; ');\n};\n\nexport const getResetLocalsSql = (\n parentLocals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .reduce<string[]>((acc, [key, value]) => {\n if (parentLocals[key] !== value) {\n acc.push(`SET LOCAL ${key}=${parentLocals[key]}`);\n }\n return acc;\n }, [])\n .join('; ');\n};\n","import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n noop,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n createDbWithAdapter,\n TransactionAdapterBase,\n QuerySchema,\n TransactionArgs,\n RecordStringOrNumber,\n} from 'pqb';\nimport {\n getResetLocalsSql,\n getSetLocalsSql,\n getTransactionArgs,\n mergeLocals,\n} from './adapter.utils';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n searchPath?: string;\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n searchPath?: string;\n errorClass = DatabaseError;\n locals: RecordStringOrNumber;\n\n constructor(public config: NodePostgresAdapterOptions) {\n this.pool = this.configure(config);\n this.locals = this.searchPath\n ? { search_path: this.searchPath }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: NodePostgresAdapterOptions): Pool {\n let searchPath = config.searchPath;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!searchPath) {\n searchPath = url.searchParams.get('searchPath') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (searchPath)\n this.searchPath = searchPath === 'public' ? undefined : searchPath;\n\n const pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n\n return pool;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n async updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n await this.close();\n this.configure({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.searchPath !== undefined) {\n url.searchParams.set('searchPath', params.searchPath);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSearchPath(): string | undefined {\n return this.searchPath;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n getSchema(): QuerySchema | undefined {\n return this.config.schema;\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values, undefined) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const client = await this.connect();\n\n const { cb, options } = getTransactionArgs(args);\n\n try {\n await performQueryOnClient(\n client,\n options?.options ? 'BEGIN ' + options.options : 'BEGIN',\n );\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await client.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n let result;\n try {\n result = await cb(\n new NodePostgresTransactionAdapter(this, client, this, locals),\n );\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { searchPath?: string };\n}\n\nconst setSearchPath = (client: PoolClient, searchPath?: string) => {\n if (\n (client as unknown as ConnectionSchema).connection.searchPath !== searchPath\n ) {\n (client as unknown as ConnectionSchema).connection.searchPath = searchPath;\n return client.query(`SET search_path = ${searchPath || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n catchingSavepoint?: string,\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.searchPath);\n return await performQueryOnClient(\n client,\n text,\n values,\n rowMode,\n catchingSavepoint,\n );\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = async (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n catchingSavepoint?: string,\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise = catchingSavepoint\n ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params)\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise = catchingSavepoint\n ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params)\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n catchingSavepoint: string,\n params: unknown,\n) => {\n return client.query(`SAVEPOINT \"${catchingSavepoint}\"`).then(async () => {\n let result;\n try {\n result = await client.query(params as never);\n } catch (err) {\n await client.query(`ROLLBACK TO SAVEPOINT \"${catchingSavepoint}\"`);\n throw err;\n }\n await client.query(`RELEASE SAVEPOINT \"${catchingSavepoint}\"`);\n return result;\n });\n};\n\nexport class NodePostgresTransactionAdapter implements TransactionAdapterBase {\n pool: Pool;\n config: PoolConfig;\n searchPath?: string;\n errorClass = DatabaseError;\n\n constructor(\n public adapter: NodePostgresAdapter,\n public client: PoolClient,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.searchPath = adapter.searchPath;\n }\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n return this.adapter.updateConfig(config);\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSearchPath(): string | undefined {\n return this.adapter.getSearchPath();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n undefined,\n catchingSavepoint,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n 'array',\n catchingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await this.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new NodePostgresTransactionAdapter(\n this.adapter,\n this.client,\n this,\n locals,\n ),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.query(resetLocalsSql);\n }\n\n return res;\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["createDbWithAdapter","DatabaseError","emptyObject","setConnectRetryConfig","wrapAdapterFnWithConnectRetry","returnArg","promise","noop"],"mappings":"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"}
1
+ {"version":3,"file":"node-postgres.js","sources":["../src/adapters/adapter.utils.ts","../src/adapters/node-postgres.ts"],"sourcesContent":["import {\n AdapterTransactionOptions,\n TransactionAdapterBase,\n TransactionArgs,\n} from './adapter';\nimport { RecordStringOrNumber } from 'pqb/internal';\n\ninterface SolvedTransactionArgs {\n options: AdapterTransactionOptions | undefined;\n cb: (adapter: TransactionAdapterBase) => Promise<unknown>;\n}\n\nconst transactionArgs: SolvedTransactionArgs = {\n cb: undefined,\n options: undefined,\n} as never;\n\nexport const getTransactionArgs = (args: TransactionArgs<unknown>) => {\n if (args[1]) {\n transactionArgs.options = args[0] as AdapterTransactionOptions;\n transactionArgs.cb = args[1];\n } else {\n transactionArgs.cb = args[0] as never;\n }\n return transactionArgs;\n};\n\nexport const mergeLocals = (\n locals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): RecordStringOrNumber =>\n options?.locals ? { ...locals, ...options.locals } : locals;\n\nexport const getSetLocalsSql = (\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .map(([key, value]) => `SET LOCAL ${key}=${value}`)\n .join('; ');\n};\n\nexport const getResetLocalsSql = (\n parentLocals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .reduce<string[]>((acc, [key, value]) => {\n if (parentLocals[key] !== value) {\n acc.push(`SET LOCAL ${key}=${parentLocals[key]}`);\n }\n return acc;\n }, [])\n .join('; ');\n};\n","import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n noop,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n TransactionAdapterBase,\n QuerySchema,\n TransactionArgs,\n RecordStringOrNumber,\n} from 'pqb/internal';\nimport { QueryError, createDbWithAdapter } from 'pqb';\nimport {\n getResetLocalsSql,\n getSetLocalsSql,\n getTransactionArgs,\n mergeLocals,\n} from './adapter.utils';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase, Omit<PoolConfig, 'types' | 'connectionString'> {\n searchPath?: string;\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n searchPath?: string;\n errorClass = DatabaseError;\n locals: RecordStringOrNumber;\n\n constructor(public config: NodePostgresAdapterOptions) {\n this.pool = this.configure(config);\n this.locals = this.searchPath\n ? { search_path: this.searchPath }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: NodePostgresAdapterOptions): Pool {\n let searchPath = config.searchPath;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!searchPath) {\n searchPath = url.searchParams.get('searchPath') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (searchPath)\n this.searchPath = searchPath === 'public' ? undefined : searchPath;\n\n const pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n\n return pool;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n async updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n await this.close();\n this.configure({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.searchPath !== undefined) {\n url.searchParams.set('searchPath', params.searchPath);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSearchPath(): string | undefined {\n return this.searchPath;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n getSchema(): QuerySchema | undefined {\n return this.config.schema;\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values, undefined) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const client = await this.connect();\n\n const { cb, options } = getTransactionArgs(args);\n\n try {\n await performQueryOnClient(\n client,\n options?.options ? 'BEGIN ' + options.options : 'BEGIN',\n );\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await client.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n let result;\n try {\n result = await cb(\n new NodePostgresTransactionAdapter(this, client, this, locals),\n );\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { searchPath?: string };\n}\n\nconst setSearchPath = (client: PoolClient, searchPath?: string) => {\n if (\n (client as unknown as ConnectionSchema).connection.searchPath !== searchPath\n ) {\n (client as unknown as ConnectionSchema).connection.searchPath = searchPath;\n return client.query(`SET search_path = ${searchPath || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n startingSavepoint?: string,\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.searchPath);\n return await performQueryOnClient(\n client,\n text,\n values,\n rowMode,\n startingSavepoint,\n );\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = async (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n\nexport class NodePostgresTransactionAdapter implements TransactionAdapterBase {\n pool: Pool;\n config: PoolConfig;\n searchPath?: string;\n errorClass = DatabaseError;\n\n constructor(\n public adapter: NodePostgresAdapter,\n public client: PoolClient,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.searchPath = adapter.searchPath;\n }\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n return this.adapter.updateConfig(config);\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSearchPath(): string | undefined {\n return this.adapter.getSearchPath();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n undefined,\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n 'array',\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await this.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new NodePostgresTransactionAdapter(\n this.adapter,\n this.client,\n this,\n locals,\n ),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.query(resetLocalsSql);\n }\n\n return res;\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["createDbWithAdapter","DatabaseError","emptyObject","setConnectRetryConfig","wrapAdapterFnWithConnectRetry","returnArg","promise","noop"],"mappings":";;;;;;AAYA,MAAM,eAAA,GAAyC;AAAA,EAC7C,EAAA,EAAI,MAAA;AAAA,EACJ,OAAA,EAAS;AACX,CAAA;AAEO,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAmC;AACpE,EAAA,IAAI,IAAA,CAAK,CAAC,CAAA,EAAG;AACX,IAAA,eAAA,CAAgB,OAAA,GAAU,KAAK,CAAC,CAAA;AAChC,IAAA,eAAA,CAAgB,EAAA,GAAK,KAAK,CAAC,CAAA;AAAA,EAC7B,CAAA,MAAO;AACL,IAAA,eAAA,CAAgB,EAAA,GAAK,KAAK,CAAC,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,eAAA;AACT,CAAA;AAEO,MAAM,WAAA,GAAc,CACzB,MAAA,EACA,OAAA,KAEA,OAAA,EAAS,MAAA,GAAS,EAAE,GAAG,MAAA,EAAQ,GAAG,OAAA,CAAQ,MAAA,EAAO,GAAI,MAAA;AAEhD,MAAM,eAAA,GAAkB,CAC7B,OAAA,KACuB;AACvB,EAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AAEtB,EAAA,OAAO,OAAO,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,CACjC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,aAAa,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAA,CACjD,KAAK,IAAI,CAAA;AACd,CAAA;AAEO,MAAM,iBAAA,GAAoB,CAC/B,YAAA,EACA,OAAA,KACuB;AACvB,EAAA,IAAI,CAAC,SAAS,MAAA,EAAQ;AAEtB,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,CACjC,MAAA,CAAiB,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACvC,IAAA,IAAI,YAAA,CAAa,GAAG,CAAA,KAAM,KAAA,EAAO;AAC/B,MAAA,GAAA,CAAI,KAAK,CAAA,UAAA,EAAa,GAAG,IAAI,YAAA,CAAa,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,IAClD;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA,CACJ,KAAK,IAAI,CAAA;AACd,CAAA;;AC1BO,MAAM,WAAW,CAGtB;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KACqE;AACnE,EAAA,OAAOA,uBAAA,CAAoB;AAAA,IACzB,GAAG,OAAA;AAAA,IACH,GAAA;AAAA,IACA,OAAA,EAAS,IAAI,mBAAA,CAAoB,OAAO;AAAA,GACzC,CAAA;AACH;AAEA,MAAM,EAAE,OAAM,GAAI,EAAA;AAMlB,MAAM,qBAAkC,EAAC;AAEzC,KAAA,MAAW,GAAA,IAAO,MAAM,QAAA,EAAU;AAChC,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,QAAA,CAAS,GAAkC,CAAA;AAC5D,EAAA,kBAAA,CAAmB,EAAE,CAAA,GAAI,KAAA,CAAM,aAAA,CAAc,EAAE,CAAA;AACjD;AAEA;AAAA,EACE,MAAM,QAAA,CAAS,IAAA;AAAA,EACf,MAAM,QAAA,CAAS,SAAA;AAAA,EACf,MAAM,QAAA,CAAS,WAAA;AAAA,EACf,MAAM,QAAA,CAAS,MAAA;AAAA,EACf,MAAM,QAAA,CAAS;AACjB,CAAA,CAAE,OAAA,CAAQ,CAAC,EAAA,KAAO;AAChB,EAAA,OAAO,mBAAmB,EAAE,CAAA;AAC9B,CAAC,CAAA;AAYM,MAAM,mBAAA,CAA2C;AAAA,EAMtD,YAAmB,MAAA,EAAoC;AAApC,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAHnB,IAAA,IAAA,CAAA,UAAA,GAAaC,gBAAA;AAIX,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AACjC,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,UAAA,GACf,EAAE,WAAA,EAAa,IAAA,CAAK,YAAW,GAC/BC,oBAAA;AAAA,EACN;AAAA,EAEA,eAAA,GAA2B;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEQ,UAAU,MAAA,EAA0C;AAC1D,IAAA,IAAI,aAAa,MAAA,CAAO,UAAA;AACxB,IAAA,IAAI,OAAO,WAAA,EAAa;AACtB,MAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAA,CAAO,WAAW,CAAA;AAEtC,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AAEtC,MAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,QAAA,GAAA,CAAI,YAAA,CAAa,OAAO,KAAK,CAAA;AAAA,MAC/B,CAAA,MAAA,IAAW,CAAC,MAAA,CAAO,GAAA,IAAO,QAAQ,MAAA,EAAQ;AACxC,QAAA,MAAA,CAAO,GAAA,GAAM,IAAA;AAAA,MACf;AAEA,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,UAAA,GAAa,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,YAAY,CAAA,IAAK,MAAA;AAAA,MACrD;AAEA,MAAA,MAAA,CAAO,WAAA,GAAc,IAAI,QAAA,EAAS;AAClC,MAAC,MAAA,CAAsB,mBAAmB,MAAA,CAAO,WAAA;AAAA,IACnD;AAEA,IAAA,IAAI,UAAA;AACF,MAAA,IAAA,CAAK,UAAA,GAAa,UAAA,KAAe,QAAA,GAAW,MAAA,GAAY,UAAA;AAE1D,IAAA,MAAM,IAAA,GAAO,IAAI,EAAA,CAAG,IAAA,CAAK,MAAM,CAAA;AAE/B,IAAA,IAAI,OAAO,YAAA,EAAc;AACvB,MAAAC,8BAAA;AAAA,QACE,IAAA;AAAA,QACA,MAAA,CAAO,YAAA,KAAiB,IAAA,GAAOD,oBAAA,GAAc,MAAA,CAAO;AAAA,OACtD;AAEA,MAAA,IAAA,CAAK,OAAA,GAAUE,sCAAA;AAAA,QAA8B,IAAA;AAAA,QAAM,MACjD,IAAA,CAAK,IAAA,CAAK,OAAA;AAAQ,OACpB;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,MAAA,GAA0B;AAChC,IAAA,OAAO,IAAA,CAAK,OAAO,WAAA,GACf,IAAI,IAAI,IAAA,CAAK,MAAA,CAAO,WAAW,CAAA,GAC/B,MAAA;AAAA,EACN;AAAA,EAEA,MAAM,aAAa,MAAA,EAAmD;AACpE,IAAA,MAAM,KAAK,KAAA,EAAM;AACjB,IAAA,IAAA,CAAK,UAAU,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,QAAQ,CAAA;AAAA,EAC9C;AAAA,EAEA,YAAY,MAAA,EAKY;AACtB,IAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,QAAA,GAAA,CAAI,QAAA,GAAW,CAAA,CAAA,EAAI,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,MACpC;AAEA,MAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAW;AAC7B,QAAA,GAAA,CAAI,WAAW,MAAA,CAAO,IAAA;AAAA,MACxB;AAEA,MAAA,IAAI,MAAA,CAAO,aAAa,MAAA,EAAW;AACjC,QAAA,GAAA,CAAI,WAAW,MAAA,CAAO,QAAA;AAAA,MACxB;AAEA,MAAA,IAAI,MAAA,CAAO,eAAe,MAAA,EAAW;AACnC,QAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,YAAA,EAAc,MAAA,CAAO,UAAU,CAAA;AAAA,MACtD;AAEA,MAAA,OAAO,IAAI,mBAAA,CAAoB;AAAA,QAC7B,GAAG,IAAA,CAAK,MAAA;AAAA,QACR,WAAA,EAAa,IAAI,QAAA;AAAS,OAC3B,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAO,IAAI,oBAAoB,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,QAAQ,CAAA;AAAA,IAC9D;AAAA,EACF;AAAA,EAEA,WAAA,GAAsB;AACpB,IAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,IAAA,OAAO,MAAM,GAAA,CAAI,QAAA,CAAS,MAAM,CAAC,CAAA,GAAK,KAAK,MAAA,CAAO,QAAA;AAAA,EACpD;AAAA,EAEA,OAAA,GAAkB;AAChB,IAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,IAAA,OAAO,GAAA,GAAM,GAAA,CAAI,QAAA,GAAY,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,EAC3C;AAAA,EAEA,aAAA,GAAoC;AAClC,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EACd;AAAA,EAEA,OAAA,GAAkB;AAChB,IAAA,MAAM,GAAA,GAAM,KAAK,MAAA,EAAO;AACxB,IAAA,OAAO,GAAA,GAAM,GAAA,CAAI,QAAA,GAAY,IAAA,CAAK,MAAA,CAAO,IAAA;AAAA,EAC3C;AAAA,EAEA,SAAA,GAAqC;AACnC,IAAA,OAAO,KAAK,MAAA,CAAO,MAAA;AAAA,EACrB;AAAA,EAEA,OAAA,GAA+B;AAC7B,IAAA,OAAO,IAAA,CAAK,KAAK,OAAA,EAAQ;AAAA,EAC3B;AAAA,EAEA,KAAA,CACE,MACA,MAAA,EACyB;AACzB,IAAA,OAAO,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,MAAS,CAAA;AAAA,EACnD;AAAA;AAAA,EAGA,MAAA,CACE,MACA,MAAA,EAC+B;AAC/B,IAAA,OAAO,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,OAAO,CAAA;AAAA,EACjD;AAAA,EAEA,MAAM,eAAuB,IAAA,EAAgD;AAC3E,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,OAAA,EAAQ;AAElC,IAAA,MAAM,EAAE,EAAA,EAAI,OAAA,EAAQ,GAAI,mBAAmB,IAAI,CAAA;AAE/C,IAAA,IAAI;AACF,MAAA,MAAM,oBAAA;AAAA,QACJ,MAAA;AAAA,QACA,OAAA,EAAS,OAAA,GAAU,QAAA,GAAW,OAAA,CAAQ,OAAA,GAAU;AAAA,OAClD;AAEA,MAAA,MAAM,SAAA,GAAY,gBAAgB,OAAO,CAAA;AACzC,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,MAAM,MAAA,CAAO,MAAM,SAAS,CAAA;AAAA,MAC9B;AAEA,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAE/C,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI;AACF,QAAA,MAAA,GAAS,MAAM,EAAA;AAAA,UACb,IAAI,8BAAA,CAA+B,IAAA,EAAM,MAAA,EAAQ,MAAM,MAAM;AAAA,SAC/D;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,MAAM,oBAAA,CAAqB,QAAQ,UAAU,CAAA;AAC7C,QAAA,MAAM,GAAA;AAAA,MACR;AACA,MAAA,MAAM,oBAAA,CAAqB,QAAQ,QAAQ,CAAA;AAC3C,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,KAAA,GAAuB;AACrB,IAAA,MAAM,EAAE,MAAK,GAAI,IAAA;AACjB,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,EAAA,CAAG,IAAA,CAAK,KAAK,MAAM,CAAA;AACnC,IAAA,OAAO,KAAK,GAAA,EAAI;AAAA,EAClB;AAAA,EAEA,WAAA,CAAY,IAAgB,OAAA,EAAgB;AAC1C,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,EAAA,CAAG,UAAU,IAAA,CAAK,OAAA;AAClB,IAAC,EAAA,CAA2B,SAAS,IAAA,CAAK,MAAA;AAC1C,IAAC,EAAA,CAAyB,OAAO,IAAA,CAAK,IAAA;AACtC,IAAA,EAAA,CAAG,WAAW,IAAA,CAAK,QAAA;AACnB,IAAA,EAAA,CAAG,OAAO,IAAA,CAAK,IAAA;AACf,IAAA,EAAA,CAAG,SAAS,IAAA,CAAK,MAAA;AACjB,IAAA,EAAA,CAAG,OAAO,IAAA,CAAK,IAAA;AACf,IAAA,EAAA,CAAG,WAAW,IAAA,CAAK,QAAA;AACnB,IAAA,EAAA,CAAG,mBAAmB,IAAA,CAAK,gBAAA;AAC3B,IAAA,EAAA,CAAG,gBAAgB,IAAA,CAAK,aAAA;AACxB,IAAA,EAAA,CAAG,QAAQ,IAAA,CAAK,KAAA;AAChB,IAAA,EAAA,CAAG,SAAS,IAAA,CAAK,MAAA;AACjB,IAAA,EAAA,CAAG,QAAQ,IAAA,CAAK,KAAA;AAChB,IAAA,EAAA,CAAG,SAAS,IAAA,CAAK,MAAA;AACjB,IAAA,EAAA,CAAG,WAAW,IAAA,CAAK,QAAA;AACnB,IAAA,EAAA,CAAG,aAAa,IAAA,CAAK,UAAA;AACrB,IAAA,EAAA,CAAG,OAAO,IAAA,CAAK,IAAA;AACf,IAAA,EAAA,CAAG,OAAO,IAAA,CAAK,IAAA;AACf,IAAA,EAAA,CAAG,UAAU,IAAA,CAAK,OAAA;AAAA,EACpB;AACF;AAEA,MAAM,kBAAA,GAAqB;AAAA,EACzB,cAAc,EAAA,EAAY;AACxB,IAAA,OAAO,kBAAA,CAAmB,EAAE,CAAA,IAAKC,kBAAA;AAAA,EACnC;AACF,CAAA;AAMA,MAAM,aAAA,GAAgB,CAAC,MAAA,EAAoB,UAAA,KAAwB;AACjE,EAAA,IACG,MAAA,CAAuC,UAAA,CAAW,UAAA,KAAe,UAAA,EAClE;AACA,IAAC,MAAA,CAAuC,WAAW,UAAA,GAAa,UAAA;AAChE,IAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAA,kBAAA,EAAqB,UAAA,IAAc,QAAQ,CAAA,CAAE,CAAA;AAAA,EACnE;AACA,EAAA;AACF,CAAA;AAEA,MAAM,eAAe,OACnB,OAAA,EACA,IAAA,EACA,MAAA,EACA,SACA,iBAAA,KACG;AACH,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,OAAA,EAAQ;AACrC,EAAA,IAAI;AACF,IAAA,MAAM,aAAA,CAAc,MAAA,EAAQ,OAAA,CAAQ,UAAU,CAAA;AAC9C,IAAA,OAAO,MAAM,oBAAA;AAAA,MACX,MAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,SAAE;AACA,IAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,EACjB;AACF,CAAA;AAEA,MAAM,uBAAuB,OAC3B,MAAA,EACA,MACA,MAAA,EACA,OAAA,EACA,mBACA,kBAAA,KACG;AAEH,EAAA,MAAM,MAAA,GAAc;AAAA,IAClB,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO;AAAA,GACT;AAKA,EAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,IAAI,OAAA;AACJ,IAAC,MAAA,CAAoC,MAAA,GAAS,IAAI,OAAA,CAAc,CAAC,GAAA,KAAQ;AACvE,MAAA,OAAA,GAAU,MAAM;AACd,QAAA,GAAA,EAAI;AAAA,MACN,CAAA;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,KAAK,MAAM;AACvB,MAAA,MAAMC,QAAAA,GACJ,qBAAqB,kBAAA,GACjB,iCAAA;AAAA,QACE,MAAA;AAAA,QACA,MAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACF,GACA,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AACzB,MAAAA,QAAAA,CAAQ,IAAA,CAAK,OAAA,EAAS,OAAO,CAAA;AAC7B,MAAA,OAAOA,QAAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,OAAA,GACJ,qBAAqB,kBAAA,GACjB,iCAAA;AAAA,IACE,MAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF,GACA,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AAEzB,EAAC,MAAA,CAAoD,MAAA,GACnD,OAAA,CAAQ,KAAA,CAAMC,aAAI,CAAA;AAEpB,EAAA,OAAO,OAAA;AACT,CAAA;AAEA,MAAM,iCAAA,GAAoC,CACxC,MAAA,EACA,MAAA,EACA,mBACA,kBAAA,KACG;AACH,EAAA,IAAI,UAAU,iBAAA,GACV,MAAA,CACG,KAAA,CAAM,CAAA,WAAA,EAAc,iBAAiB,CAAA,CAAA,CAAG,CAAA,CACxC,IAAA,CAAK,MAAM,OAAO,KAAA,CAAM,MAAe,CAAC,CAAA,GAC3C,MAAA,CAAO,MAAM,MAAe,CAAA;AAEhC,EAAA,IAAI,kBAAA,EAAoB;AACtB,IAAA,OAAA,GAAU,OAAA,CAAQ,IAAA;AAAA,MAChB,OAAO,GAAA,KAAQ;AACb,QAAA,MAAM,MAAA,CAAO,KAAA,CAAM,CAAA,mBAAA,EAAsB,kBAAkB,CAAA,CAAA,CAAG,CAAA;AAC9D,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,OAAO,GAAA,KAAQ;AACb,QAAA,MAAM,MAAA,CAAO,KAAA,CAAM,CAAA,uBAAA,EAA0B,kBAAkB,CAAA,CAAA,CAAG,CAAA;AAClE,QAAA,MAAM,GAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT,CAAA;AAEO,MAAM,8BAAA,CAAiE;AAAA,EAM5E,WAAA,CACS,OAAA,EACA,MAAA,EACA,MAAA,EACA,MAAA,EACP;AAJO,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AANT,IAAA,IAAA,CAAA,UAAA,GAAaN,gBAAA;AAQX,IAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA;AACpB,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AACtB,IAAA,IAAA,CAAK,aAAa,OAAA,CAAQ,UAAA;AAAA,EAC5B;AAAA,EAEA,eAAA,GAAwB;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,aAAa,MAAA,EAAmD;AAC9D,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA;AAAA,EACzC;AAAA,EAEA,YAAY,MAAA,EAKI;AACd,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,MAAM,CAAA;AAAA,EACxC;AAAA,EAEA,WAAA,GAAsB;AACpB,IAAA,OAAO,IAAA,CAAK,QAAQ,WAAA,EAAY;AAAA,EAClC;AAAA,EAEA,OAAA,GAAkB;AAChB,IAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,EAAQ;AAAA,EAC9B;AAAA,EAEA,aAAA,GAAoC;AAClC,IAAA,OAAO,IAAA,CAAK,QAAQ,aAAA,EAAc;AAAA,EACpC;AAAA,EAEA,OAAA,GAAkB;AAChB,IAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,EAAQ;AAAA,EAC9B;AAAA,EAEA,SAAA,GAAqC;AACnC,IAAA,OAAO,IAAA,CAAK,QAAQ,SAAA,EAAU;AAAA,EAChC;AAAA,EAEA,OAAA,GAA+B;AAC7B,IAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,EACpC;AAAA,EAEA,MAAM,KAAA,CACJ,IAAA,EACA,MAAA,EACA,mBACA,kBAAA,EACyB;AACzB,IAAA,OAAO,MAAM,oBAAA;AAAA,MACX,IAAA,CAAK,MAAA;AAAA,MACL,IAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,MAAA,CACJ,IAAA,EACA,MAAA,EACA,mBACA,kBAAA,EAC+B;AAC/B,IAAA,OAAO,MAAM,oBAAA;AAAA,MACX,IAAA,CAAK,MAAA;AAAA,MACL,IAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,eAAuB,IAAA,EAAgD;AAC3E,IAAA,MAAM,EAAE,EAAA,EAAI,OAAA,EAAQ,GAAI,mBAAmB,IAAI,CAAA;AAE/C,IAAA,MAAM,SAAA,GAAY,gBAAgB,OAAO,CAAA;AACzC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,IAAA,CAAK,MAAM,SAAS,CAAA;AAAA,IAC5B;AAEA,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAE/C,IAAA,MAAM,MAAO,MAAM,EAAA;AAAA,MACjB,IAAI,8BAAA;AAAA,QACF,IAAA,CAAK,OAAA;AAAA,QACL,IAAA,CAAK,MAAA;AAAA,QACL,IAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAC7D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,IAAA,CAAK,MAAM,cAAc,CAAA;AAAA,IACjC;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,KAAA,GAAQ;AACN,IAAA,OAAO,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,EAC5B;AAAA,EAEA,WAAA,CAAY,IAAgB,IAAA,EAAa;AACvC,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,EAAA,EAAI,IAAI,CAAA;AAAA,EAC1C;AACF;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  import pg, { DatabaseError } from 'pg';
2
- import { createDbWithAdapter, emptyObject, setConnectRetryConfig, wrapAdapterFnWithConnectRetry, noop, returnArg } from 'pqb';
2
+ import { emptyObject, setConnectRetryConfig, wrapAdapterFnWithConnectRetry, noop, returnArg } from 'pqb/internal';
3
+ import { createDbWithAdapter } from 'pqb';
3
4
 
4
5
  const transactionArgs = {
5
6
  cb: void 0,
@@ -221,7 +222,7 @@ const setSearchPath = (client, searchPath) => {
221
222
  }
222
223
  return;
223
224
  };
224
- const performQuery = async (adapter, text, values, rowMode, catchingSavepoint) => {
225
+ const performQuery = async (adapter, text, values, rowMode, startingSavepoint) => {
225
226
  const client = await adapter.connect();
226
227
  try {
227
228
  await setSearchPath(client, adapter.searchPath);
@@ -230,13 +231,13 @@ const performQuery = async (adapter, text, values, rowMode, catchingSavepoint) =
230
231
  text,
231
232
  values,
232
233
  rowMode,
233
- catchingSavepoint
234
+ startingSavepoint
234
235
  );
235
236
  } finally {
236
237
  client.release();
237
238
  }
238
239
  };
239
- const performQueryOnClient = async (client, text, values, rowMode, catchingSavepoint) => {
240
+ const performQueryOnClient = async (client, text, values, rowMode, startingSavepoint, releasingSavepoint) => {
240
241
  const params = {
241
242
  text,
242
243
  values,
@@ -252,27 +253,40 @@ const performQueryOnClient = async (client, text, values, rowMode, catchingSavep
252
253
  };
253
254
  });
254
255
  return __lock.then(() => {
255
- const promise2 = catchingSavepoint ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params) : client.query(params);
256
+ const promise2 = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(
257
+ client,
258
+ params,
259
+ startingSavepoint,
260
+ releasingSavepoint
261
+ ) : client.query(params);
256
262
  promise2.then(resolve, resolve);
257
263
  return promise2;
258
264
  });
259
265
  }
260
- const promise = catchingSavepoint ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params) : client.query(params);
266
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(
267
+ client,
268
+ params,
269
+ startingSavepoint,
270
+ releasingSavepoint
271
+ ) : client.query(params);
261
272
  client.__lock = promise.catch(noop);
262
273
  return promise;
263
274
  };
264
- const performQueryOnClientWithSavepoint = (client, catchingSavepoint, params) => {
265
- return client.query(`SAVEPOINT "${catchingSavepoint}"`).then(async () => {
266
- let result;
267
- try {
268
- result = await client.query(params);
269
- } catch (err) {
270
- await client.query(`ROLLBACK TO SAVEPOINT "${catchingSavepoint}"`);
271
- throw err;
272
- }
273
- await client.query(`RELEASE SAVEPOINT "${catchingSavepoint}"`);
274
- return result;
275
- });
275
+ const performQueryOnClientWithSavepoint = (client, params, startingSavepoint, releasingSavepoint) => {
276
+ let promise = startingSavepoint ? client.query(`SAVEPOINT "${startingSavepoint}"`).then(() => client.query(params)) : client.query(params);
277
+ if (releasingSavepoint) {
278
+ promise = promise.then(
279
+ async (res) => {
280
+ await client.query(`RELEASE SAVEPOINT "${releasingSavepoint}"`);
281
+ return res;
282
+ },
283
+ async (err) => {
284
+ await client.query(`ROLLBACK TO SAVEPOINT "${releasingSavepoint}"`);
285
+ throw err;
286
+ }
287
+ );
288
+ }
289
+ return promise;
276
290
  };
277
291
  class NodePostgresTransactionAdapter {
278
292
  constructor(adapter, client, parent, locals) {
@@ -312,23 +326,25 @@ class NodePostgresTransactionAdapter {
312
326
  connect() {
313
327
  return Promise.resolve(this.client);
314
328
  }
315
- async query(text, values, catchingSavepoint) {
329
+ async query(text, values, startingSavepoint, releasingSavepoint) {
316
330
  return await performQueryOnClient(
317
331
  this.client,
318
332
  text,
319
333
  values,
320
334
  void 0,
321
- catchingSavepoint
335
+ startingSavepoint,
336
+ releasingSavepoint
322
337
  );
323
338
  }
324
339
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
325
- async arrays(text, values, catchingSavepoint) {
340
+ async arrays(text, values, startingSavepoint, releasingSavepoint) {
326
341
  return await performQueryOnClient(
327
342
  this.client,
328
343
  text,
329
344
  values,
330
345
  "array",
331
- catchingSavepoint
346
+ startingSavepoint,
347
+ releasingSavepoint
332
348
  );
333
349
  }
334
350
  async transaction(...args) {
@@ -1 +1 @@
1
- {"version":3,"file":"node-postgres.mjs","sources":["../src/adapters/adapter.utils.ts","../src/adapters/node-postgres.ts"],"sourcesContent":["import {\n AdapterTransactionOptions,\n TransactionAdapterBase,\n TransactionArgs,\n} from './adapter';\nimport { RecordStringOrNumber } from 'pqb';\n\ninterface SolvedTransactionArgs {\n options: AdapterTransactionOptions | undefined;\n cb: (adapter: TransactionAdapterBase) => Promise<unknown>;\n}\n\nconst transactionArgs: SolvedTransactionArgs = {\n cb: undefined,\n options: undefined,\n} as never;\n\nexport const getTransactionArgs = (args: TransactionArgs<unknown>) => {\n if (args[1]) {\n transactionArgs.options = args[0] as AdapterTransactionOptions;\n transactionArgs.cb = args[1];\n } else {\n transactionArgs.cb = args[0] as never;\n }\n return transactionArgs;\n};\n\nexport const mergeLocals = (\n locals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): RecordStringOrNumber =>\n options?.locals ? { ...locals, ...options.locals } : locals;\n\nexport const getSetLocalsSql = (\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .map(([key, value]) => `SET LOCAL ${key}=${value}`)\n .join('; ');\n};\n\nexport const getResetLocalsSql = (\n parentLocals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .reduce<string[]>((acc, [key, value]) => {\n if (parentLocals[key] !== value) {\n acc.push(`SET LOCAL ${key}=${parentLocals[key]}`);\n }\n return acc;\n }, [])\n .join('; ');\n};\n","import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n noop,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n createDbWithAdapter,\n TransactionAdapterBase,\n QuerySchema,\n TransactionArgs,\n RecordStringOrNumber,\n} from 'pqb';\nimport {\n getResetLocalsSql,\n getSetLocalsSql,\n getTransactionArgs,\n mergeLocals,\n} from './adapter.utils';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n searchPath?: string;\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n searchPath?: string;\n errorClass = DatabaseError;\n locals: RecordStringOrNumber;\n\n constructor(public config: NodePostgresAdapterOptions) {\n this.pool = this.configure(config);\n this.locals = this.searchPath\n ? { search_path: this.searchPath }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: NodePostgresAdapterOptions): Pool {\n let searchPath = config.searchPath;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!searchPath) {\n searchPath = url.searchParams.get('searchPath') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (searchPath)\n this.searchPath = searchPath === 'public' ? undefined : searchPath;\n\n const pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n\n return pool;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n async updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n await this.close();\n this.configure({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.searchPath !== undefined) {\n url.searchParams.set('searchPath', params.searchPath);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSearchPath(): string | undefined {\n return this.searchPath;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n getSchema(): QuerySchema | undefined {\n return this.config.schema;\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values, undefined) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const client = await this.connect();\n\n const { cb, options } = getTransactionArgs(args);\n\n try {\n await performQueryOnClient(\n client,\n options?.options ? 'BEGIN ' + options.options : 'BEGIN',\n );\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await client.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n let result;\n try {\n result = await cb(\n new NodePostgresTransactionAdapter(this, client, this, locals),\n );\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { searchPath?: string };\n}\n\nconst setSearchPath = (client: PoolClient, searchPath?: string) => {\n if (\n (client as unknown as ConnectionSchema).connection.searchPath !== searchPath\n ) {\n (client as unknown as ConnectionSchema).connection.searchPath = searchPath;\n return client.query(`SET search_path = ${searchPath || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n catchingSavepoint?: string,\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.searchPath);\n return await performQueryOnClient(\n client,\n text,\n values,\n rowMode,\n catchingSavepoint,\n );\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = async (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n catchingSavepoint?: string,\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise = catchingSavepoint\n ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params)\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise = catchingSavepoint\n ? performQueryOnClientWithSavepoint(client, catchingSavepoint, params)\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n catchingSavepoint: string,\n params: unknown,\n) => {\n return client.query(`SAVEPOINT \"${catchingSavepoint}\"`).then(async () => {\n let result;\n try {\n result = await client.query(params as never);\n } catch (err) {\n await client.query(`ROLLBACK TO SAVEPOINT \"${catchingSavepoint}\"`);\n throw err;\n }\n await client.query(`RELEASE SAVEPOINT \"${catchingSavepoint}\"`);\n return result;\n });\n};\n\nexport class NodePostgresTransactionAdapter implements TransactionAdapterBase {\n pool: Pool;\n config: PoolConfig;\n searchPath?: string;\n errorClass = DatabaseError;\n\n constructor(\n public adapter: NodePostgresAdapter,\n public client: PoolClient,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.searchPath = adapter.searchPath;\n }\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n return this.adapter.updateConfig(config);\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSearchPath(): string | undefined {\n return this.adapter.getSearchPath();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n undefined,\n catchingSavepoint,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n 'array',\n catchingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await this.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new NodePostgresTransactionAdapter(\n this.adapter,\n this.client,\n this,\n locals,\n ),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.query(resetLocalsSql);\n }\n\n return res;\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["promise"],"mappings":"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"}
1
+ {"version":3,"file":"node-postgres.mjs","sources":["../src/adapters/adapter.utils.ts","../src/adapters/node-postgres.ts"],"sourcesContent":["import {\n AdapterTransactionOptions,\n TransactionAdapterBase,\n TransactionArgs,\n} from './adapter';\nimport { RecordStringOrNumber } from 'pqb/internal';\n\ninterface SolvedTransactionArgs {\n options: AdapterTransactionOptions | undefined;\n cb: (adapter: TransactionAdapterBase) => Promise<unknown>;\n}\n\nconst transactionArgs: SolvedTransactionArgs = {\n cb: undefined,\n options: undefined,\n} as never;\n\nexport const getTransactionArgs = (args: TransactionArgs<unknown>) => {\n if (args[1]) {\n transactionArgs.options = args[0] as AdapterTransactionOptions;\n transactionArgs.cb = args[1];\n } else {\n transactionArgs.cb = args[0] as never;\n }\n return transactionArgs;\n};\n\nexport const mergeLocals = (\n locals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): RecordStringOrNumber =>\n options?.locals ? { ...locals, ...options.locals } : locals;\n\nexport const getSetLocalsSql = (\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .map(([key, value]) => `SET LOCAL ${key}=${value}`)\n .join('; ');\n};\n\nexport const getResetLocalsSql = (\n parentLocals: RecordStringOrNumber,\n options?: AdapterTransactionOptions,\n): string | undefined => {\n if (!options?.locals) return;\n\n return Object.entries(options.locals)\n .reduce<string[]>((acc, [key, value]) => {\n if (parentLocals[key] !== value) {\n acc.push(`SET LOCAL ${key}=${parentLocals[key]}`);\n }\n return acc;\n }, [])\n .join('; ');\n};\n","import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterBase,\n AdapterConfigBase,\n ColumnSchemaConfig,\n emptyObject,\n noop,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n TransactionAdapterBase,\n QuerySchema,\n TransactionArgs,\n RecordStringOrNumber,\n} from 'pqb/internal';\nimport { QueryError, createDbWithAdapter } from 'pqb';\nimport {\n getResetLocalsSql,\n getSetLocalsSql,\n getTransactionArgs,\n mergeLocals,\n} from './adapter.utils';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new NodePostgresAdapter(options),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends AdapterConfigBase, Omit<PoolConfig, 'types' | 'connectionString'> {\n searchPath?: string;\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport class NodePostgresAdapter implements AdapterBase {\n pool: Pool;\n searchPath?: string;\n errorClass = DatabaseError;\n locals: RecordStringOrNumber;\n\n constructor(public config: NodePostgresAdapterOptions) {\n this.pool = this.configure(config);\n this.locals = this.searchPath\n ? { search_path: this.searchPath }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: NodePostgresAdapterOptions): Pool {\n let searchPath = config.searchPath;\n if (config.databaseURL) {\n const url = new URL(config.databaseURL);\n\n const ssl = url.searchParams.get('ssl');\n\n if (ssl === 'false') {\n url.searchParams.delete('ssl');\n } else if (!config.ssl && ssl === 'true') {\n config.ssl = true;\n }\n\n if (!searchPath) {\n searchPath = url.searchParams.get('searchPath') || undefined;\n }\n\n config.databaseURL = url.toString();\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (searchPath)\n this.searchPath = searchPath === 'public' ? undefined : searchPath;\n\n const pool = new pg.Pool(config);\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n this.connect = wrapAdapterFnWithConnectRetry(this, () =>\n this.pool.connect(),\n );\n }\n\n return pool;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n async updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n await this.close();\n this.configure({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): NodePostgresAdapter {\n const url = this.getURL();\n if (url) {\n if ('database' in params) {\n url.pathname = `/${params.database}`;\n }\n\n if (params.user !== undefined) {\n url.username = params.user;\n }\n\n if (params.password !== undefined) {\n url.password = params.password;\n }\n\n if (params.searchPath !== undefined) {\n url.searchParams.set('searchPath', params.searchPath);\n }\n\n return new NodePostgresAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new NodePostgresAdapter({ ...this.config, ...params });\n }\n }\n\n getDatabase(): string {\n const url = this.getURL();\n return url ? url.pathname.slice(1) : (this.config.database as string);\n }\n\n getUser(): string {\n const url = this.getURL();\n return url ? url.username : (this.config.user as string);\n }\n\n getSearchPath(): string | undefined {\n return this.searchPath;\n }\n\n getHost(): string {\n const url = this.getURL();\n return url ? url.hostname : (this.config.host as string);\n }\n\n getSchema(): QuerySchema | undefined {\n return this.config.schema;\n }\n\n connect(): Promise<PoolClient> {\n return this.pool.connect();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return performQuery(this, text, values, undefined) as never;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n ): Promise<QueryArraysResult<R>> {\n return performQuery(this, text, values, 'array') as never;\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const client = await this.connect();\n\n const { cb, options } = getTransactionArgs(args);\n\n try {\n await performQueryOnClient(\n client,\n options?.options ? 'BEGIN ' + options.options : 'BEGIN',\n );\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await client.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n let result;\n try {\n result = await cb(\n new NodePostgresTransactionAdapter(this, client, this, locals),\n );\n } catch (err) {\n await performQueryOnClient(client, 'ROLLBACK');\n throw err;\n }\n await performQueryOnClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n }\n\n close(): Promise<void> {\n const { pool } = this;\n this.pool = new pg.Pool(this.config);\n return pool.end();\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as DatabaseError;\n to.message = from.message;\n (to as { length?: number }).length = from.length;\n (to as { name?: string }).name = from.name;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.hint = from.hint;\n to.position = from.position;\n to.internalPosition = from.internalPosition;\n to.internalQuery = from.internalQuery;\n to.where = from.where;\n to.schema = from.schema;\n to.table = from.table;\n to.column = from.column;\n to.dataType = from.dataType;\n to.constraint = from.constraint;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\ninterface ConnectionSchema {\n connection: { searchPath?: string };\n}\n\nconst setSearchPath = (client: PoolClient, searchPath?: string) => {\n if (\n (client as unknown as ConnectionSchema).connection.searchPath !== searchPath\n ) {\n (client as unknown as ConnectionSchema).connection.searchPath = searchPath;\n return client.query(`SET search_path = ${searchPath || 'public'}`);\n }\n return;\n};\n\nconst performQuery = async (\n adapter: NodePostgresAdapter,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n startingSavepoint?: string,\n) => {\n const client = await adapter.connect();\n try {\n await setSearchPath(client, adapter.searchPath);\n return await performQueryOnClient(\n client,\n text,\n values,\n rowMode,\n startingSavepoint,\n );\n } finally {\n client.release();\n }\n};\n\nconst performQueryOnClient = async (\n client: PoolClient,\n text: string,\n values?: unknown[],\n rowMode?: 'array',\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n\nexport class NodePostgresTransactionAdapter implements TransactionAdapterBase {\n pool: Pool;\n config: PoolConfig;\n searchPath?: string;\n errorClass = DatabaseError;\n\n constructor(\n public adapter: NodePostgresAdapter,\n public client: PoolClient,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {\n this.pool = adapter.pool;\n this.config = adapter.config;\n this.searchPath = adapter.searchPath;\n }\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: NodePostgresAdapterOptions): Promise<void> {\n return this.adapter.updateConfig(config);\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\n return this.adapter.reconfigure(params);\n }\n\n getDatabase(): string {\n return this.adapter.getDatabase();\n }\n\n getUser(): string {\n return this.adapter.getUser();\n }\n\n getSearchPath(): string | undefined {\n return this.adapter.getSearchPath();\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n connect(): Promise<PoolClient> {\n return Promise.resolve(this.client);\n }\n\n async query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n undefined,\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async arrays<R extends any[] = any[]>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return await performQueryOnClient(\n this.client,\n text,\n values,\n 'array',\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n await this.query(localsSql);\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new NodePostgresTransactionAdapter(\n this.adapter,\n this.client,\n this,\n locals,\n ),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.query(resetLocalsSql);\n }\n\n return res;\n }\n\n close() {\n return this.adapter.close();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["promise"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import * as pqb from 'pqb';
2
- import { ColumnSchemaConfig, DbOptions, DefaultSchemaConfig, DefaultColumnTypes, DbResult, AdapterConfigBase, QuerySchema, AdapterBase, RecordStringOrNumber, QueryResultRow, QueryResult, QueryArraysResult, TransactionArgs, QueryError, TransactionAdapterBase } from 'pqb';
3
1
  import postgres, { Error } from 'postgres';
2
+ import { ColumnSchemaConfig, AdapterConfigBase, QuerySchema, DbOptions, AdapterBase, RecordStringOrNumber, QueryResultRow, QueryResult, QueryArraysResult, TransactionArgs, TransactionAdapterBase, DefaultSchemaConfig, DefaultColumnTypes, DbResult } from 'pqb/internal';
3
+ import { QueryError } from 'pqb';
4
4
 
5
5
  interface CreatePostgresJsDbOptions<SchemaConfig extends ColumnSchemaConfig, ColumnTypes> extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {
6
6
  }
7
- declare const createDb: <SchemaConfig extends ColumnSchemaConfig<pqb.Column.Pick.Data> = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>(options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>) => DbResult<ColumnTypes>;
7
+ declare const createDb: <SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig, ColumnTypes = DefaultColumnTypes<SchemaConfig>>(options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>) => DbResult<ColumnTypes>;
8
8
  interface PostgresJsAdapterOptions extends postgres.Options<any>, AdapterConfigBase {
9
9
  databaseURL?: string;
10
10
  searchPath?: string;
@@ -60,11 +60,12 @@ declare class PostgresJsTransactionAdapter implements TransactionAdapterBase {
60
60
  getSearchPath(): string | undefined;
61
61
  getHost(): string;
62
62
  getSchema(): QuerySchema | undefined;
63
- query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[], catchingSavepoint?: string): Promise<QueryResult<T>>;
64
- arrays<R extends any[] = any[]>(text: string, values?: unknown[], catchingSavepoint?: string): Promise<QueryArraysResult<R>>;
63
+ query<T extends QueryResultRow = QueryResultRow>(text: string, values?: unknown[], startingSavepoint?: string, releasingSavepoint?: string): Promise<QueryResult<T>>;
64
+ arrays<R extends any[] = any[]>(text: string, values?: unknown[], startingSavepoint?: string, releasingSavepoint?: string): Promise<QueryArraysResult<R>>;
65
65
  transaction<Result>(...args: TransactionArgs<Result>): Promise<Result>;
66
66
  close(): Promise<void>;
67
67
  assignError(to: QueryError, from: Error): void;
68
68
  }
69
69
 
70
- export { type CreatePostgresJsDbOptions, PostgresJsAdapter, type PostgresJsAdapterOptions, PostgresJsTransactionAdapter, createDb };
70
+ export { PostgresJsAdapter, PostgresJsTransactionAdapter, createDb };
71
+ export type { CreatePostgresJsDbOptions, PostgresJsAdapterOptions };