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.
- package/dist/index.d.ts +4780 -5231
- package/dist/index.js +1754 -1751
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1749 -1521
- package/dist/index.mjs.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.js +663 -0
- package/dist/internal.js.map +1 -0
- package/dist/internal.mjs +2 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/node-postgres.d.ts +7 -6
- package/dist/node-postgres.js +43 -27
- package/dist/node-postgres.js.map +1 -1
- package/dist/node-postgres.mjs +38 -22
- package/dist/node-postgres.mjs.map +1 -1
- package/dist/postgres-js.d.ts +7 -6
- package/dist/postgres-js.js +40 -29
- package/dist/postgres-js.js.map +1 -1
- package/dist/postgres-js.mjs +33 -22
- package/dist/postgres-js.mjs.map +1 -1
- package/dist/public.d.ts +1 -0
- package/dist/public.js +35 -0
- package/dist/public.js.map +1 -0
- package/dist/public.mjs +2 -0
- package/dist/public.mjs.map +1 -0
- package/package.json +28 -19
package/dist/postgres-js.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var postgres = require('postgres');
|
|
4
|
+
var internal = require('pqb/internal');
|
|
4
5
|
var pqb = require('pqb');
|
|
5
6
|
|
|
6
7
|
const transactionArgs = {
|
|
@@ -63,11 +64,11 @@ const types = {
|
|
|
63
64
|
dateAndTimestampAsStrings: {
|
|
64
65
|
to: 25,
|
|
65
66
|
from: [1082, 1114, 1184],
|
|
66
|
-
parse:
|
|
67
|
+
parse: internal.returnArg
|
|
67
68
|
},
|
|
68
69
|
interval: {
|
|
69
70
|
from: [1186],
|
|
70
|
-
serialize:
|
|
71
|
+
serialize: internal.returnArg,
|
|
71
72
|
parse(str) {
|
|
72
73
|
const [years, , months, , days, , time] = str.split(" ");
|
|
73
74
|
const [hours, minutes, seconds] = time.split(":");
|
|
@@ -85,7 +86,7 @@ const types = {
|
|
|
85
86
|
json: {
|
|
86
87
|
to: 114,
|
|
87
88
|
from: [114, 3802],
|
|
88
|
-
serialize:
|
|
89
|
+
serialize: internal.returnArg,
|
|
89
90
|
parse: (x) => {
|
|
90
91
|
return JSON.parse(x);
|
|
91
92
|
}
|
|
@@ -98,7 +99,7 @@ class PostgresJsAdapter {
|
|
|
98
99
|
this.sql = this.configure(config);
|
|
99
100
|
this.locals = config.searchPath ? {
|
|
100
101
|
search_path: config.searchPath
|
|
101
|
-
} :
|
|
102
|
+
} : internal.emptyObject;
|
|
102
103
|
}
|
|
103
104
|
isInTransaction() {
|
|
104
105
|
return false;
|
|
@@ -133,13 +134,13 @@ class PostgresJsAdapter {
|
|
|
133
134
|
sql = postgres(this.config);
|
|
134
135
|
}
|
|
135
136
|
if (config.connectRetry) {
|
|
136
|
-
|
|
137
|
+
internal.setConnectRetryConfig(
|
|
137
138
|
this,
|
|
138
|
-
config.connectRetry === true ?
|
|
139
|
+
config.connectRetry === true ? internal.emptyObject : config.connectRetry
|
|
139
140
|
);
|
|
140
141
|
if (!this.wrappedWithConnectRetry) {
|
|
141
|
-
this.query =
|
|
142
|
-
this.arrays =
|
|
142
|
+
this.query = internal.wrapAdapterFnWithConnectRetry(this, this.query);
|
|
143
|
+
this.arrays = internal.wrapAdapterFnWithConnectRetry(this, this.arrays);
|
|
143
144
|
this.wrappedWithConnectRetry = true;
|
|
144
145
|
}
|
|
145
146
|
}
|
|
@@ -246,28 +247,32 @@ class PostgresJsAdapter {
|
|
|
246
247
|
to.routine = from.routine;
|
|
247
248
|
}
|
|
248
249
|
}
|
|
249
|
-
const query = (sql, text, values,
|
|
250
|
+
const query = (sql, text, values, startingSavepoint, releasingSavepoint, arrays2) => {
|
|
250
251
|
let query2 = sql.unsafe(text, values);
|
|
251
252
|
if (arrays2) query2 = query2.values();
|
|
252
|
-
if (
|
|
253
|
-
return Promise.all([
|
|
254
|
-
sql.unsafe(`SAVEPOINT "${catchingSavepoint}"`),
|
|
255
|
-
query2,
|
|
256
|
-
sql.unsafe(`RELEASE SAVEPOINT "${catchingSavepoint}"`)
|
|
257
|
-
]).then(
|
|
258
|
-
(results) => {
|
|
259
|
-
return wrapResult(results[1]);
|
|
260
|
-
},
|
|
261
|
-
(err) => sql.unsafe(`ROLLBACK TO SAVEPOINT "${catchingSavepoint}"`).then(() => {
|
|
262
|
-
throw err;
|
|
263
|
-
})
|
|
264
|
-
);
|
|
265
|
-
} else {
|
|
253
|
+
if (!startingSavepoint && !releasingSavepoint) {
|
|
266
254
|
return query2.then(wrapResult);
|
|
267
255
|
}
|
|
256
|
+
return Promise.all([
|
|
257
|
+
startingSavepoint && sql.unsafe(`SAVEPOINT "${startingSavepoint}"`),
|
|
258
|
+
query2,
|
|
259
|
+
releasingSavepoint && sql.unsafe(`RELEASE SAVEPOINT "${releasingSavepoint}"`)
|
|
260
|
+
]).then(
|
|
261
|
+
(results) => {
|
|
262
|
+
return wrapResult(results[1]);
|
|
263
|
+
},
|
|
264
|
+
(err) => {
|
|
265
|
+
if (!releasingSavepoint) {
|
|
266
|
+
throw err;
|
|
267
|
+
}
|
|
268
|
+
return sql.unsafe(`ROLLBACK TO SAVEPOINT "${releasingSavepoint}"`).then(() => {
|
|
269
|
+
throw err;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
);
|
|
268
273
|
};
|
|
269
|
-
const arrays = (sql, text, values,
|
|
270
|
-
return query(sql, text, values,
|
|
274
|
+
const arrays = (sql, text, values, startingSavepoint, releasingSavepoint) => {
|
|
275
|
+
return query(sql, text, values, startingSavepoint, releasingSavepoint, true);
|
|
271
276
|
};
|
|
272
277
|
class PostgresJsTransactionAdapter {
|
|
273
278
|
constructor(adapter, sql, parent, locals) {
|
|
@@ -301,12 +306,18 @@ class PostgresJsTransactionAdapter {
|
|
|
301
306
|
getSchema() {
|
|
302
307
|
return this.adapter.getSchema();
|
|
303
308
|
}
|
|
304
|
-
query(text, values,
|
|
305
|
-
return query(this.sql, text, values,
|
|
309
|
+
query(text, values, startingSavepoint, releasingSavepoint) {
|
|
310
|
+
return query(this.sql, text, values, startingSavepoint, releasingSavepoint);
|
|
306
311
|
}
|
|
307
312
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
308
|
-
arrays(text, values,
|
|
309
|
-
return arrays(
|
|
313
|
+
arrays(text, values, startingSavepoint, releasingSavepoint) {
|
|
314
|
+
return arrays(
|
|
315
|
+
this.sql,
|
|
316
|
+
text,
|
|
317
|
+
values,
|
|
318
|
+
startingSavepoint,
|
|
319
|
+
releasingSavepoint
|
|
320
|
+
);
|
|
310
321
|
}
|
|
311
322
|
async transaction(...args) {
|
|
312
323
|
const { cb, options } = getTransactionArgs(args);
|
package/dist/postgres-js.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-js.js","sources":["../src/adapters/adapter.utils.ts","../src/adapters/postgres-js.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 postgres, { Error, Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterBase,\n AdapterConfigBase,\n emptyObject,\n MaybeArray,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n createDbWithAdapter,\n DbResult,\n ColumnSchemaConfig,\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 interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n> extends PostgresJsAdapterOptions,\n DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new PostgresJsAdapter(options as never),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>,\n AdapterConfigBase {\n databaseURL?: string;\n searchPath?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport class PostgresJsAdapter implements AdapterBase {\n sql: postgres.Sql;\n searchPath?: string;\n config: PostgresJsAdapterOptions;\n errorClass = postgres.PostgresError;\n locals: RecordStringOrNumber;\n private wrappedWithConnectRetry?: boolean;\n\n constructor(config: PostgresJsAdapterOptions) {\n this.config = { ...config, types };\n this.sql = this.configure(config);\n this.locals = config.searchPath\n ? {\n search_path: config.searchPath,\n }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: PostgresJsAdapterOptions): postgres.Sql {\n this.searchPath = config.searchPath;\n if (this.searchPath) {\n this.config.connection = {\n ...config.connection,\n search_path: this.searchPath,\n };\n }\n\n let sql;\n if (this.config.databaseURL) {\n const urlString = this.config.databaseURL;\n const url = new URL(urlString);\n\n const ssl = url.searchParams.get('ssl');\n if (ssl === 'false' || ssl === 'true') {\n this.config.ssl = ssl === 'true';\n }\n\n const searchPath = url.searchParams.get('searchPath');\n if (searchPath) {\n this.searchPath = searchPath;\n url.searchParams.delete('searchPath');\n this.config.connection = {\n ...config.connection,\n search_path: searchPath,\n };\n }\n\n sql = postgres(url.toString(), this.config);\n } else {\n sql = postgres(this.config);\n }\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n if (!this.wrappedWithConnectRetry) {\n this.query = wrapAdapterFnWithConnectRetry(this, this.query);\n this.arrays = wrapAdapterFnWithConnectRetry(this, this.arrays);\n this.wrappedWithConnectRetry = true;\n }\n }\n\n return sql;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n private replaceSql(config: PostgresJsAdapterOptions): Promise<void> {\n const { sql } = this;\n // Swap the client before ending the old one so the adapter remains reusable\n this.sql = this.configure(config);\n return sql.end();\n }\n\n async updateConfig(config: PostgresJsAdapterOptions): Promise<void> {\n await this.replaceSql({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\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 PostgresJsAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new PostgresJsAdapter({ ...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 query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values);\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 arrays(this.sql, text, values);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const { cb, options } = getTransactionArgs(args);\n\n const fn = (sql: TransactionSql) => {\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n return cb(\n new PostgresJsTransactionAdapter(this, sql as never, this, locals),\n ).then((res) => {\n ok = true;\n return (result = res);\n });\n };\n\n return (\n options?.options\n ? this.sql.begin(options.options, fn)\n : this.sql.begin(fn)\n ).catch((err) => {\n if (ok) return result;\n\n throw err;\n }) as never;\n }\n\n close(): Promise<void> {\n return this.replaceSql(this.config);\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as postgres.PostgresError;\n to.message = from.message;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.schema = from.schema_name;\n to.table = from.table_name;\n to.constraint = from.constraint_name;\n to.hint = from.hint;\n to.position = from.position;\n to.where = from.where;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst query = <T extends QueryResultRow = QueryResultRow>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n arrays?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = sql.unsafe(text, values as never) as any;\n\n if (arrays) query = query.values();\n\n if (catchingSavepoint) {\n return Promise.all([\n sql.unsafe(`SAVEPOINT \"${catchingSavepoint}\"`),\n query,\n sql.unsafe(`RELEASE SAVEPOINT \"${catchingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) =>\n sql.unsafe(`ROLLBACK TO SAVEPOINT \"${catchingSavepoint}\"`).then(() => {\n throw err;\n }),\n );\n } else {\n return query.then(wrapResult);\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst arrays = <R extends any[] = any[]>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n): Promise<QueryArraysResult<R>> => {\n return query(sql, text, values, catchingSavepoint, true);\n};\n\nexport class PostgresJsTransactionAdapter implements TransactionAdapterBase {\n errorClass = postgres.PostgresError;\n\n constructor(\n public adapter: PostgresJsAdapter,\n public sql: postgres.Sql,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {}\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: PostgresJsAdapterOptions): 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.searchPath;\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values, catchingSavepoint);\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 catchingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return arrays(this.sql, text, values, catchingSavepoint);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n this.sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new PostgresJsTransactionAdapter(this.adapter, this.sql, this, locals),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.sql.unsafe(resetLocalsSql);\n }\n\n return res;\n }\n\n close(): Promise<void> {\n return this.sql.end();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["createDbWithAdapter","returnArg","emptyObject","setConnectRetryConfig","wrapAdapterFnWithConnectRetry","arrays","query"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres-js.js","sources":["../src/adapters/adapter.utils.ts","../src/adapters/postgres-js.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 postgres, { Error, Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterBase,\n AdapterConfigBase,\n emptyObject,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\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 interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new PostgresJsAdapter(options as never),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, AdapterConfigBase {\n databaseURL?: string;\n searchPath?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport class PostgresJsAdapter implements AdapterBase {\n sql: postgres.Sql;\n searchPath?: string;\n config: PostgresJsAdapterOptions;\n errorClass = postgres.PostgresError;\n locals: RecordStringOrNumber;\n private wrappedWithConnectRetry?: boolean;\n\n constructor(config: PostgresJsAdapterOptions) {\n this.config = { ...config, types };\n this.sql = this.configure(config);\n this.locals = config.searchPath\n ? {\n search_path: config.searchPath,\n }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: PostgresJsAdapterOptions): postgres.Sql {\n this.searchPath = config.searchPath;\n if (this.searchPath) {\n this.config.connection = {\n ...config.connection,\n search_path: this.searchPath,\n };\n }\n\n let sql;\n if (this.config.databaseURL) {\n const urlString = this.config.databaseURL;\n const url = new URL(urlString);\n\n const ssl = url.searchParams.get('ssl');\n if (ssl === 'false' || ssl === 'true') {\n this.config.ssl = ssl === 'true';\n }\n\n const searchPath = url.searchParams.get('searchPath');\n if (searchPath) {\n this.searchPath = searchPath;\n url.searchParams.delete('searchPath');\n this.config.connection = {\n ...config.connection,\n search_path: searchPath,\n };\n }\n\n sql = postgres(url.toString(), this.config);\n } else {\n sql = postgres(this.config);\n }\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n if (!this.wrappedWithConnectRetry) {\n this.query = wrapAdapterFnWithConnectRetry(this, this.query);\n this.arrays = wrapAdapterFnWithConnectRetry(this, this.arrays);\n this.wrappedWithConnectRetry = true;\n }\n }\n\n return sql;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n private replaceSql(config: PostgresJsAdapterOptions): Promise<void> {\n const { sql } = this;\n // Swap the client before ending the old one so the adapter remains reusable\n this.sql = this.configure(config);\n return sql.end();\n }\n\n async updateConfig(config: PostgresJsAdapterOptions): Promise<void> {\n await this.replaceSql({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\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 PostgresJsAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new PostgresJsAdapter({ ...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 query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values);\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 arrays(this.sql, text, values);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const { cb, options } = getTransactionArgs(args);\n\n const fn = (sql: TransactionSql) => {\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n return cb(\n new PostgresJsTransactionAdapter(this, sql as never, this, locals),\n ).then((res) => {\n ok = true;\n return (result = res);\n });\n };\n\n return (\n options?.options\n ? this.sql.begin(options.options, fn)\n : this.sql.begin(fn)\n ).catch((err) => {\n if (ok) return result;\n\n throw err;\n }) as never;\n }\n\n close(): Promise<void> {\n return this.replaceSql(this.config);\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as postgres.PostgresError;\n to.message = from.message;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.schema = from.schema_name;\n to.table = from.table_name;\n to.constraint = from.constraint_name;\n to.hint = from.hint;\n to.position = from.position;\n to.where = from.where;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst query = <T extends QueryResultRow = QueryResultRow>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n arrays?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = sql.unsafe(text, values as never) as any;\n\n if (arrays) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && sql.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n sql.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return sql\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst arrays = <R extends any[] = any[]>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n): Promise<QueryArraysResult<R>> => {\n return query(sql, text, values, startingSavepoint, releasingSavepoint, true);\n};\n\nexport class PostgresJsTransactionAdapter implements TransactionAdapterBase {\n errorClass = postgres.PostgresError;\n\n constructor(\n public adapter: PostgresJsAdapter,\n public sql: postgres.Sql,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {}\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: PostgresJsAdapterOptions): 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.searchPath;\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values, startingSavepoint, releasingSavepoint);\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 startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return arrays(\n this.sql,\n text,\n values,\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n this.sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new PostgresJsTransactionAdapter(this.adapter, this.sql, this, locals),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.sql.unsafe(resetLocalsSql);\n }\n\n return res;\n }\n\n close(): Promise<void> {\n return this.sql.end();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["createDbWithAdapter","returnArg","emptyObject","setConnectRetryConfig","wrapAdapterFnWithConnectRetry","arrays","query"],"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;;ACrBO,MAAM,QAAA,GAAW,CAItB,OAAA,KAC0B;AAC1B,EAAA,OAAOA,uBAAA,CAAoB;AAAA,IACzB,GAAG,OAAA;AAAA,IACH,OAAA,EAAS,IAAI,iBAAA,CAAkB,OAAgB;AAAA,GAChD,CAAA;AACH;AAYA,MAAM,gBAAA,CAAqE;AAAA,EAKzE,YAAY,MAAA,EAAmB;AAC7B,IAAA,IAAA,CAAK,WAAW,MAAA,CAAO,KAAA;AACvB,IAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,OAAO,SAAA,CAAU,OAAA;AAAA,EACjC;AACF;AAGA,MAAM,UAAA,GAAa,CAAC,MAAA,KAA0D;AAC5E,EAAA,IAAI,MAAA,CAAO,gBAAgB,KAAA,EAAO;AAChC,IAAA,OAAQ,MAAA,CAAuB,GAAA;AAAA,MAC7B,CAAC,GAAA,KAAQ,IAAI,gBAAA,CAAiB,GAAG;AAAA,KACnC;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO,IAAI,iBAAiB,MAAmB,CAAA;AAAA,EACjD;AACF,CAAA;AAEA,MAAM,KAAA,GAAwD;AAAA,EAC5D,KAAA,EAAO;AAAA,IACL,EAAA,EAAI,EAAA;AAAA,IACJ,IAAA,EAAM,EAAA;AAAA,IACN,SAAA,EAAW,CAAC,CAAA,KAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,CAAC,CAAA,CAAE,QAAA,CAAS,KAAK;AAAA;AAAA,GAEzD;AAAA,EACA,yBAAA,EAA2B;AAAA,IACzB,EAAA,EAAI,EAAA;AAAA,IACJ,IAAA,EAAM,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IACvB,KAAA,EAAOC;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,CAAC,IAAI,CAAA;AAAA,IACX,SAAA,EAAWA,kBAAA;AAAA,IACX,MAAM,GAAA,EAAa;AACjB,MAAA,MAAM,CAAC,KAAA,IAAS,MAAA,IAAU,IAAA,IAAQ,IAAI,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AACvD,MAAA,MAAM,CAAC,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AAEhD,MAAA,OAAO;AAAA,QACL,KAAA,EAAO,KAAA,GAAQ,MAAA,CAAO,KAAK,CAAA,GAAI,CAAA;AAAA,QAC/B,MAAA,EAAQ,MAAA,GAAS,MAAA,CAAO,MAAM,CAAA,GAAI,CAAA;AAAA,QAClC,IAAA,EAAM,IAAA,GAAO,MAAA,CAAO,IAAI,CAAA,GAAI,CAAA;AAAA,QAC5B,KAAA,EAAO,KAAA,GAAQ,MAAA,CAAO,KAAK,CAAA,GAAI,CAAA;AAAA,QAC/B,OAAA,EAAS,OAAA,GAAU,MAAA,CAAO,OAAO,CAAA,GAAI,CAAA;AAAA,QACrC,OAAA,EAAS,OAAA,GAAU,MAAA,CAAO,OAAO,CAAA,GAAI;AAAA,OACvC;AAAA,IACF;AAAA,GACF;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,GAAA;AAAA,IACJ,IAAA,EAAM,CAAC,GAAA,EAAK,IAAI,CAAA;AAAA,IAChB,SAAA,EAAWA,kBAAA;AAAA,IACX,KAAA,EAAO,CAAC,CAAA,KAAM;AACZ,MAAA,OAAO,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,IACrB;AAAA;AAEJ,CAAA;AAEO,MAAM,iBAAA,CAAyC;AAAA,EAQpD,YAAY,MAAA,EAAkC;AAJ9C,IAAA,IAAA,CAAA,UAAA,GAAa,QAAA,CAAS,aAAA;AAKpB,IAAA,IAAA,CAAK,MAAA,GAAS,EAAE,GAAG,MAAA,EAAQ,KAAA,EAAM;AACjC,IAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAChC,IAAA,IAAA,CAAK,MAAA,GAAS,OAAO,UAAA,GACjB;AAAA,MACE,aAAa,MAAA,CAAO;AAAA,KACtB,GACAC,oBAAA;AAAA,EACN;AAAA,EAEA,eAAA,GAA2B;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEQ,UAAU,MAAA,EAAgD;AAChE,IAAA,IAAA,CAAK,aAAa,MAAA,CAAO,UAAA;AACzB,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,IAAA,CAAK,OAAO,UAAA,GAAa;AAAA,QACvB,GAAG,MAAA,CAAO,UAAA;AAAA,QACV,aAAa,IAAA,CAAK;AAAA,OACpB;AAAA,IACF;AAEA,IAAA,IAAI,GAAA;AACJ,IAAA,IAAI,IAAA,CAAK,OAAO,WAAA,EAAa;AAC3B,MAAA,MAAM,SAAA,GAAY,KAAK,MAAA,CAAO,WAAA;AAC9B,MAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,SAAS,CAAA;AAE7B,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AACtC,MAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,GAAA,KAAQ,MAAA,EAAQ;AACrC,QAAA,IAAA,CAAK,MAAA,CAAO,MAAM,GAAA,KAAQ,MAAA;AAAA,MAC5B;AAEA,MAAA,MAAM,UAAA,GAAa,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,YAAY,CAAA;AACpD,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,GAAA,CAAI,YAAA,CAAa,OAAO,YAAY,CAAA;AACpC,QAAA,IAAA,CAAK,OAAO,UAAA,GAAa;AAAA,UACvB,GAAG,MAAA,CAAO,UAAA;AAAA,UACV,WAAA,EAAa;AAAA,SACf;AAAA,MACF;AAEA,MAAA,GAAA,GAAM,QAAA,CAAS,GAAA,CAAI,QAAA,EAAS,EAAG,KAAK,MAAM,CAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,GAAA,GAAM,QAAA,CAAS,KAAK,MAAM,CAAA;AAAA,IAC5B;AAEA,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,IAAI,CAAC,KAAK,uBAAA,EAAyB;AACjC,QAAA,IAAA,CAAK,KAAA,GAAQE,sCAAA,CAA8B,IAAA,EAAM,IAAA,CAAK,KAAK,CAAA;AAC3D,QAAA,IAAA,CAAK,MAAA,GAASA,sCAAA,CAA8B,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAC7D,QAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA;AAAA,MACjC;AAAA,IACF;AAEA,IAAA,OAAO,GAAA;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,EAEQ,WAAW,MAAA,EAAiD;AAClE,IAAA,MAAM,EAAE,KAAI,GAAI,IAAA;AAEhB,IAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAChC,IAAA,OAAO,IAAI,GAAA,EAAI;AAAA,EACjB;AAAA,EAEA,MAAM,aAAa,MAAA,EAAiD;AAClE,IAAA,MAAM,IAAA,CAAK,WAAW,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,QAAQ,CAAA;AAAA,EACrD;AAAA,EAEA,YAAY,MAAA,EAKI;AACd,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,iBAAA,CAAkB;AAAA,QAC3B,GAAG,IAAA,CAAK,MAAA;AAAA,QACR,WAAA,EAAa,IAAI,QAAA;AAAS,OAC3B,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAO,IAAI,kBAAkB,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,QAAQ,CAAA;AAAA,IAC5D;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,KAAA,CACE,MACA,MAAA,EACyB;AACzB,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,GAAA,EAAK,IAAA,EAAM,MAAM,CAAA;AAAA,EACrC;AAAA;AAAA,EAGA,MAAA,CACE,MACA,MAAA,EAC+B;AAC/B,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,IAAA,EAAM,MAAM,CAAA;AAAA,EACtC;AAAA,EAEA,MAAM,eAAuB,IAAA,EAAgD;AAC3E,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,MAAA;AAEJ,IAAA,MAAM,EAAE,EAAA,EAAI,OAAA,EAAQ,GAAI,mBAAmB,IAAI,CAAA;AAE/C,IAAA,MAAM,EAAA,GAAK,CAAC,GAAA,KAAwB;AAClC,MAAA,MAAM,SAAA,GAAY,gBAAgB,OAAO,CAAA;AACzC,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,GAAA,CAAI,MAAA,CAAO,SAAS,CAAA,CAAE,OAAA,EAAQ;AAAA,MAChC;AAEA,MAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAE/C,MAAA,OAAO,EAAA;AAAA,QACL,IAAI,4BAAA,CAA6B,IAAA,EAAM,GAAA,EAAc,MAAM,MAAM;AAAA,OACnE,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ;AACd,QAAA,EAAA,GAAK,IAAA;AACL,QAAA,OAAQ,MAAA,GAAS,GAAA;AAAA,MACnB,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,OAAA,CACE,SAAS,OAAA,GACL,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,QAAQ,OAAA,EAAS,EAAE,CAAA,GAClC,IAAA,CAAK,IAAI,KAAA,CAAM,EAAE,CAAA,EACrB,KAAA,CAAM,CAAC,GAAA,KAAQ;AACf,MAAA,IAAI,IAAI,OAAO,MAAA;AAEf,MAAA,MAAM,GAAA;AAAA,IACR,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,KAAA,GAAuB;AACrB,IAAA,OAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA;AAAA,EACpC;AAAA,EAEA,WAAA,CAAY,IAAgB,OAAA,EAAgB;AAC1C,IAAA,MAAM,IAAA,GAAO,OAAA;AACb,IAAA,EAAA,CAAG,UAAU,IAAA,CAAK,OAAA;AAClB,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,SAAS,IAAA,CAAK,WAAA;AACjB,IAAA,EAAA,CAAG,QAAQ,IAAA,CAAK,UAAA;AAChB,IAAA,EAAA,CAAG,aAAa,IAAA,CAAK,eAAA;AACrB,IAAA,EAAA,CAAG,OAAO,IAAA,CAAK,IAAA;AACf,IAAA,EAAA,CAAG,WAAW,IAAA,CAAK,QAAA;AACnB,IAAA,EAAA,CAAG,QAAQ,IAAA,CAAK,KAAA;AAChB,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,QAAQ,CACZ,GAAA,EACA,MACA,MAAA,EACA,iBAAA,EACA,oBACAC,OAAAA,KAC4B;AAE5B,EAAA,IAAIC,MAAAA,GAAQ,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,MAAe,CAAA;AAE5C,EAAA,IAAID,OAAAA,EAAQC,MAAAA,GAAQA,MAAAA,CAAM,MAAA,EAAO;AAEjC,EAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,kBAAA,EAAoB;AAC7C,IAAA,OAAOA,MAAAA,CAAM,KAAK,UAAU,CAAA;AAAA,EAC9B;AAEA,EAAA,OAAO,QAAQ,GAAA,CAAI;AAAA,IACjB,iBAAA,IAAqB,GAAA,CAAI,MAAA,CAAO,CAAA,WAAA,EAAc,iBAAiB,CAAA,CAAA,CAAG,CAAA;AAAA,IAClEA,MAAAA;AAAA,IACA,kBAAA,IACE,GAAA,CAAI,MAAA,CAAO,CAAA,mBAAA,EAAsB,kBAAkB,CAAA,CAAA,CAAG;AAAA,GACzD,CAAA,CAAE,IAAA;AAAA,IACD,CAAC,OAAA,KAAyB;AACxB,MAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,GAAA,KAAQ;AACP,MAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,QAAA,MAAM,GAAA;AAAA,MACR;AAEA,MAAA,OAAO,IACJ,MAAA,CAAO,CAAA,uBAAA,EAA0B,kBAAkB,CAAA,CAAA,CAAG,CAAA,CACtD,KAAK,MAAM;AACV,QAAA,MAAM,GAAA;AAAA,MACR,CAAC,CAAA;AAAA,IACL;AAAA,GACF;AACF,CAAA;AAGA,MAAM,SAAS,CACb,GAAA,EACA,IAAA,EACA,MAAA,EACA,mBACA,kBAAA,KACkC;AAClC,EAAA,OAAO,MAAM,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,iBAAA,EAAmB,oBAAoB,IAAI,CAAA;AAC7E,CAAA;AAEO,MAAM,4BAAA,CAA+D;AAAA,EAG1E,WAAA,CACS,OAAA,EACA,GAAA,EACA,MAAA,EACA,MAAA,EACP;AAJO,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,IAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AANT,IAAA,IAAA,CAAA,UAAA,GAAa,QAAA,CAAS,aAAA;AAAA,EAOnB;AAAA,EAEH,eAAA,GAAwB;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,aAAa,MAAA,EAAiD;AAC5D,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,KAAK,OAAA,CAAQ,UAAA;AAAA,EACtB;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,KAAA,CACE,IAAA,EACA,MAAA,EACA,iBAAA,EACA,kBAAA,EACyB;AACzB,IAAA,OAAO,MAAM,IAAA,CAAK,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,mBAAmB,kBAAkB,CAAA;AAAA,EAC5E;AAAA;AAAA,EAGA,MAAA,CACE,IAAA,EACA,MAAA,EACA,iBAAA,EACA,kBAAA,EAC+B;AAC/B,IAAA,OAAO,MAAA;AAAA,MACL,IAAA,CAAK,GAAA;AAAA,MACL,IAAA;AAAA,MACA,MAAA;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;AAC/C,IAAA,MAAM,SAAA,GAAY,gBAAgB,OAAO,CAAA;AACzC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,SAAS,CAAA,CAAE,OAAA,EAAQ;AAAA,IACrC;AAEA,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAE/C,IAAA,MAAM,MAAO,MAAM,EAAA;AAAA,MACjB,IAAI,4BAAA,CAA6B,IAAA,CAAK,SAAS,IAAA,CAAK,GAAA,EAAK,MAAM,MAAM;AAAA,KACvE;AAEA,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA;AAC7D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,cAAc,CAAA;AAAA,IACtC;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAEA,KAAA,GAAuB;AACrB,IAAA,OAAO,IAAA,CAAK,IAAI,GAAA,EAAI;AAAA,EACtB;AAAA,EAEA,WAAA,CAAY,IAAgB,IAAA,EAAa;AACvC,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,EAAA,EAAI,IAAI,CAAA;AAAA,EAC1C;AACF;;;;;;"}
|
package/dist/postgres-js.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import postgres from 'postgres';
|
|
2
|
-
import {
|
|
2
|
+
import { returnArg, emptyObject, setConnectRetryConfig, wrapAdapterFnWithConnectRetry } from 'pqb/internal';
|
|
3
|
+
import { createDbWithAdapter } from 'pqb';
|
|
3
4
|
|
|
4
5
|
const transactionArgs = {
|
|
5
6
|
cb: void 0,
|
|
@@ -244,28 +245,32 @@ class PostgresJsAdapter {
|
|
|
244
245
|
to.routine = from.routine;
|
|
245
246
|
}
|
|
246
247
|
}
|
|
247
|
-
const query = (sql, text, values,
|
|
248
|
+
const query = (sql, text, values, startingSavepoint, releasingSavepoint, arrays2) => {
|
|
248
249
|
let query2 = sql.unsafe(text, values);
|
|
249
250
|
if (arrays2) query2 = query2.values();
|
|
250
|
-
if (
|
|
251
|
-
return Promise.all([
|
|
252
|
-
sql.unsafe(`SAVEPOINT "${catchingSavepoint}"`),
|
|
253
|
-
query2,
|
|
254
|
-
sql.unsafe(`RELEASE SAVEPOINT "${catchingSavepoint}"`)
|
|
255
|
-
]).then(
|
|
256
|
-
(results) => {
|
|
257
|
-
return wrapResult(results[1]);
|
|
258
|
-
},
|
|
259
|
-
(err) => sql.unsafe(`ROLLBACK TO SAVEPOINT "${catchingSavepoint}"`).then(() => {
|
|
260
|
-
throw err;
|
|
261
|
-
})
|
|
262
|
-
);
|
|
263
|
-
} else {
|
|
251
|
+
if (!startingSavepoint && !releasingSavepoint) {
|
|
264
252
|
return query2.then(wrapResult);
|
|
265
253
|
}
|
|
254
|
+
return Promise.all([
|
|
255
|
+
startingSavepoint && sql.unsafe(`SAVEPOINT "${startingSavepoint}"`),
|
|
256
|
+
query2,
|
|
257
|
+
releasingSavepoint && sql.unsafe(`RELEASE SAVEPOINT "${releasingSavepoint}"`)
|
|
258
|
+
]).then(
|
|
259
|
+
(results) => {
|
|
260
|
+
return wrapResult(results[1]);
|
|
261
|
+
},
|
|
262
|
+
(err) => {
|
|
263
|
+
if (!releasingSavepoint) {
|
|
264
|
+
throw err;
|
|
265
|
+
}
|
|
266
|
+
return sql.unsafe(`ROLLBACK TO SAVEPOINT "${releasingSavepoint}"`).then(() => {
|
|
267
|
+
throw err;
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
);
|
|
266
271
|
};
|
|
267
|
-
const arrays = (sql, text, values,
|
|
268
|
-
return query(sql, text, values,
|
|
272
|
+
const arrays = (sql, text, values, startingSavepoint, releasingSavepoint) => {
|
|
273
|
+
return query(sql, text, values, startingSavepoint, releasingSavepoint, true);
|
|
269
274
|
};
|
|
270
275
|
class PostgresJsTransactionAdapter {
|
|
271
276
|
constructor(adapter, sql, parent, locals) {
|
|
@@ -299,12 +304,18 @@ class PostgresJsTransactionAdapter {
|
|
|
299
304
|
getSchema() {
|
|
300
305
|
return this.adapter.getSchema();
|
|
301
306
|
}
|
|
302
|
-
query(text, values,
|
|
303
|
-
return query(this.sql, text, values,
|
|
307
|
+
query(text, values, startingSavepoint, releasingSavepoint) {
|
|
308
|
+
return query(this.sql, text, values, startingSavepoint, releasingSavepoint);
|
|
304
309
|
}
|
|
305
310
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
306
|
-
arrays(text, values,
|
|
307
|
-
return arrays(
|
|
311
|
+
arrays(text, values, startingSavepoint, releasingSavepoint) {
|
|
312
|
+
return arrays(
|
|
313
|
+
this.sql,
|
|
314
|
+
text,
|
|
315
|
+
values,
|
|
316
|
+
startingSavepoint,
|
|
317
|
+
releasingSavepoint
|
|
318
|
+
);
|
|
308
319
|
}
|
|
309
320
|
async transaction(...args) {
|
|
310
321
|
const { cb, options } = getTransactionArgs(args);
|
package/dist/postgres-js.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-js.mjs","sources":["../src/adapters/adapter.utils.ts","../src/adapters/postgres-js.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 postgres, { Error, Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterBase,\n AdapterConfigBase,\n emptyObject,\n MaybeArray,\n QueryArraysResult,\n QueryError,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n createDbWithAdapter,\n DbResult,\n ColumnSchemaConfig,\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 interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n> extends PostgresJsAdapterOptions,\n DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new PostgresJsAdapter(options as never),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>,\n AdapterConfigBase {\n databaseURL?: string;\n searchPath?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport class PostgresJsAdapter implements AdapterBase {\n sql: postgres.Sql;\n searchPath?: string;\n config: PostgresJsAdapterOptions;\n errorClass = postgres.PostgresError;\n locals: RecordStringOrNumber;\n private wrappedWithConnectRetry?: boolean;\n\n constructor(config: PostgresJsAdapterOptions) {\n this.config = { ...config, types };\n this.sql = this.configure(config);\n this.locals = config.searchPath\n ? {\n search_path: config.searchPath,\n }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: PostgresJsAdapterOptions): postgres.Sql {\n this.searchPath = config.searchPath;\n if (this.searchPath) {\n this.config.connection = {\n ...config.connection,\n search_path: this.searchPath,\n };\n }\n\n let sql;\n if (this.config.databaseURL) {\n const urlString = this.config.databaseURL;\n const url = new URL(urlString);\n\n const ssl = url.searchParams.get('ssl');\n if (ssl === 'false' || ssl === 'true') {\n this.config.ssl = ssl === 'true';\n }\n\n const searchPath = url.searchParams.get('searchPath');\n if (searchPath) {\n this.searchPath = searchPath;\n url.searchParams.delete('searchPath');\n this.config.connection = {\n ...config.connection,\n search_path: searchPath,\n };\n }\n\n sql = postgres(url.toString(), this.config);\n } else {\n sql = postgres(this.config);\n }\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n if (!this.wrappedWithConnectRetry) {\n this.query = wrapAdapterFnWithConnectRetry(this, this.query);\n this.arrays = wrapAdapterFnWithConnectRetry(this, this.arrays);\n this.wrappedWithConnectRetry = true;\n }\n }\n\n return sql;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n private replaceSql(config: PostgresJsAdapterOptions): Promise<void> {\n const { sql } = this;\n // Swap the client before ending the old one so the adapter remains reusable\n this.sql = this.configure(config);\n return sql.end();\n }\n\n async updateConfig(config: PostgresJsAdapterOptions): Promise<void> {\n await this.replaceSql({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\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 PostgresJsAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new PostgresJsAdapter({ ...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 query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values);\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 arrays(this.sql, text, values);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const { cb, options } = getTransactionArgs(args);\n\n const fn = (sql: TransactionSql) => {\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n return cb(\n new PostgresJsTransactionAdapter(this, sql as never, this, locals),\n ).then((res) => {\n ok = true;\n return (result = res);\n });\n };\n\n return (\n options?.options\n ? this.sql.begin(options.options, fn)\n : this.sql.begin(fn)\n ).catch((err) => {\n if (ok) return result;\n\n throw err;\n }) as never;\n }\n\n close(): Promise<void> {\n return this.replaceSql(this.config);\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as postgres.PostgresError;\n to.message = from.message;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.schema = from.schema_name;\n to.table = from.table_name;\n to.constraint = from.constraint_name;\n to.hint = from.hint;\n to.position = from.position;\n to.where = from.where;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst query = <T extends QueryResultRow = QueryResultRow>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n arrays?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = sql.unsafe(text, values as never) as any;\n\n if (arrays) query = query.values();\n\n if (catchingSavepoint) {\n return Promise.all([\n sql.unsafe(`SAVEPOINT \"${catchingSavepoint}\"`),\n query,\n sql.unsafe(`RELEASE SAVEPOINT \"${catchingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) =>\n sql.unsafe(`ROLLBACK TO SAVEPOINT \"${catchingSavepoint}\"`).then(() => {\n throw err;\n }),\n );\n } else {\n return query.then(wrapResult);\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst arrays = <R extends any[] = any[]>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n): Promise<QueryArraysResult<R>> => {\n return query(sql, text, values, catchingSavepoint, true);\n};\n\nexport class PostgresJsTransactionAdapter implements TransactionAdapterBase {\n errorClass = postgres.PostgresError;\n\n constructor(\n public adapter: PostgresJsAdapter,\n public sql: postgres.Sql,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {}\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: PostgresJsAdapterOptions): 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.searchPath;\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n catchingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values, catchingSavepoint);\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 catchingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return arrays(this.sql, text, values, catchingSavepoint);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n this.sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new PostgresJsTransactionAdapter(this.adapter, this.sql, this, locals),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.sql.unsafe(resetLocalsSql);\n }\n\n return res;\n }\n\n close(): Promise<void> {\n return this.sql.end();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["arrays","query"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres-js.mjs","sources":["../src/adapters/adapter.utils.ts","../src/adapters/postgres-js.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 postgres, { Error, Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterBase,\n AdapterConfigBase,\n emptyObject,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n setConnectRetryConfig,\n wrapAdapterFnWithConnectRetry,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\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 interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new PostgresJsAdapter(options as never),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, AdapterConfigBase {\n databaseURL?: string;\n searchPath?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport class PostgresJsAdapter implements AdapterBase {\n sql: postgres.Sql;\n searchPath?: string;\n config: PostgresJsAdapterOptions;\n errorClass = postgres.PostgresError;\n locals: RecordStringOrNumber;\n private wrappedWithConnectRetry?: boolean;\n\n constructor(config: PostgresJsAdapterOptions) {\n this.config = { ...config, types };\n this.sql = this.configure(config);\n this.locals = config.searchPath\n ? {\n search_path: config.searchPath,\n }\n : emptyObject;\n }\n\n isInTransaction(): boolean {\n return false;\n }\n\n private configure(config: PostgresJsAdapterOptions): postgres.Sql {\n this.searchPath = config.searchPath;\n if (this.searchPath) {\n this.config.connection = {\n ...config.connection,\n search_path: this.searchPath,\n };\n }\n\n let sql;\n if (this.config.databaseURL) {\n const urlString = this.config.databaseURL;\n const url = new URL(urlString);\n\n const ssl = url.searchParams.get('ssl');\n if (ssl === 'false' || ssl === 'true') {\n this.config.ssl = ssl === 'true';\n }\n\n const searchPath = url.searchParams.get('searchPath');\n if (searchPath) {\n this.searchPath = searchPath;\n url.searchParams.delete('searchPath');\n this.config.connection = {\n ...config.connection,\n search_path: searchPath,\n };\n }\n\n sql = postgres(url.toString(), this.config);\n } else {\n sql = postgres(this.config);\n }\n\n if (config.connectRetry) {\n setConnectRetryConfig(\n this,\n config.connectRetry === true ? emptyObject : config.connectRetry,\n );\n\n if (!this.wrappedWithConnectRetry) {\n this.query = wrapAdapterFnWithConnectRetry(this, this.query);\n this.arrays = wrapAdapterFnWithConnectRetry(this, this.arrays);\n this.wrappedWithConnectRetry = true;\n }\n }\n\n return sql;\n }\n\n private getURL(): URL | undefined {\n return this.config.databaseURL\n ? new URL(this.config.databaseURL)\n : undefined;\n }\n\n private replaceSql(config: PostgresJsAdapterOptions): Promise<void> {\n const { sql } = this;\n // Swap the client before ending the old one so the adapter remains reusable\n this.sql = this.configure(config);\n return sql.end();\n }\n\n async updateConfig(config: PostgresJsAdapterOptions): Promise<void> {\n await this.replaceSql({ ...this.config, ...config });\n }\n\n reconfigure(params: {\n database?: string;\n user?: string;\n password?: string;\n searchPath?: string;\n }): AdapterBase {\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 PostgresJsAdapter({\n ...this.config,\n databaseURL: url.toString(),\n });\n } else {\n return new PostgresJsAdapter({ ...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 query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values);\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 arrays(this.sql, text, values);\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const { cb, options } = getTransactionArgs(args);\n\n const fn = (sql: TransactionSql) => {\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n return cb(\n new PostgresJsTransactionAdapter(this, sql as never, this, locals),\n ).then((res) => {\n ok = true;\n return (result = res);\n });\n };\n\n return (\n options?.options\n ? this.sql.begin(options.options, fn)\n : this.sql.begin(fn)\n ).catch((err) => {\n if (ok) return result;\n\n throw err;\n }) as never;\n }\n\n close(): Promise<void> {\n return this.replaceSql(this.config);\n }\n\n assignError(to: QueryError, dbError: Error) {\n const from = dbError as postgres.PostgresError;\n to.message = from.message;\n to.severity = from.severity;\n to.code = from.code;\n to.detail = from.detail;\n to.schema = from.schema_name;\n to.table = from.table_name;\n to.constraint = from.constraint_name;\n to.hint = from.hint;\n to.position = from.position;\n to.where = from.where;\n to.file = from.file;\n to.line = from.line;\n to.routine = from.routine;\n }\n}\n\nconst query = <T extends QueryResultRow = QueryResultRow>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n arrays?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = sql.unsafe(text, values as never) as any;\n\n if (arrays) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && sql.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n sql.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return sql\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst arrays = <R extends any[] = any[]>(\n sql: postgres.Sql,\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n): Promise<QueryArraysResult<R>> => {\n return query(sql, text, values, startingSavepoint, releasingSavepoint, true);\n};\n\nexport class PostgresJsTransactionAdapter implements TransactionAdapterBase {\n errorClass = postgres.PostgresError;\n\n constructor(\n public adapter: PostgresJsAdapter,\n public sql: postgres.Sql,\n public parent: AdapterBase,\n public locals: RecordStringOrNumber,\n ) {}\n\n isInTransaction(): true {\n return true;\n }\n\n updateConfig(config: PostgresJsAdapterOptions): 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.searchPath;\n }\n\n getHost(): string {\n return this.adapter.getHost();\n }\n\n getSchema(): QuerySchema | undefined {\n return this.adapter.getSchema();\n }\n\n query<T extends QueryResultRow = QueryResultRow>(\n text: string,\n values?: unknown[],\n startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryResult<T>> {\n return query(this.sql, text, values, startingSavepoint, releasingSavepoint);\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 startingSavepoint?: string,\n releasingSavepoint?: string,\n ): Promise<QueryArraysResult<R>> {\n return arrays(\n this.sql,\n text,\n values,\n startingSavepoint,\n releasingSavepoint,\n );\n }\n\n async transaction<Result>(...args: TransactionArgs<Result>): Promise<Result> {\n const { cb, options } = getTransactionArgs(args);\n const localsSql = getSetLocalsSql(options);\n if (localsSql) {\n this.sql.unsafe(localsSql).execute();\n }\n\n const locals = mergeLocals(this.locals, options);\n\n const res = (await cb(\n new PostgresJsTransactionAdapter(this.adapter, this.sql, this, locals),\n )) as Result;\n\n const resetLocalsSql = getResetLocalsSql(this.locals, options);\n if (resetLocalsSql) {\n await this.sql.unsafe(resetLocalsSql);\n }\n\n return res;\n }\n\n close(): Promise<void> {\n return this.sql.end();\n }\n\n assignError(to: QueryError, from: Error) {\n return this.adapter.assignError(to, from);\n }\n}\n"],"names":["arrays","query"],"mappings":"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"}
|
package/dist/public.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NotFoundError, OrchidOrmInternalError, QueryError, copyTableData, createDbWithAdapter, getColumnInfo, testTransaction } from './index';
|
package/dist/public.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "NotFoundError", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return index.NotFoundError; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "OrchidOrmInternalError", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return index.OrchidOrmInternalError; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "QueryError", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return index.QueryError; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "copyTableData", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return index.copyTableData; }
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "createDbWithAdapter", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return index.createDbWithAdapter; }
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, "getColumnInfo", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () { return index.getColumnInfo; }
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "testTransaction", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return index.testTransaction; }
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=public.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/public.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pqb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.1",
|
|
4
4
|
"description": "Postgres query builder",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pg",
|
|
7
|
+
"postgres",
|
|
8
|
+
"query-builder"
|
|
9
|
+
],
|
|
5
10
|
"homepage": "https://orchid-orm.netlify.app/guide/orm-and-query-builder.html",
|
|
11
|
+
"license": "ISC",
|
|
12
|
+
"author": "Roman Kushyn",
|
|
6
13
|
"repository": {
|
|
7
14
|
"type": "git",
|
|
8
15
|
"url": "https://github.com/romeerez/orchid-orm.git",
|
|
9
16
|
"directory": "packages/pqb"
|
|
10
17
|
},
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"main": "dist/public.js",
|
|
22
|
+
"module": "dist/public.mjs",
|
|
23
|
+
"typings": "dist/public.d.ts",
|
|
14
24
|
"exports": {
|
|
15
25
|
".": {
|
|
16
|
-
"require": "./dist/
|
|
17
|
-
"import": "./dist/
|
|
18
|
-
"types": "./dist/
|
|
26
|
+
"require": "./dist/public.js",
|
|
27
|
+
"import": "./dist/public.mjs",
|
|
28
|
+
"types": "./dist/public.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./internal": {
|
|
31
|
+
"require": "./dist/internal.js",
|
|
32
|
+
"import": "./dist/internal.mjs",
|
|
33
|
+
"types": "./dist/internal.d.ts"
|
|
19
34
|
},
|
|
20
35
|
"./node-postgres": {
|
|
21
36
|
"require": "./dist/node-postgres.js",
|
|
@@ -28,22 +43,12 @@
|
|
|
28
43
|
"types": "./dist/postgres-js.d.ts"
|
|
29
44
|
}
|
|
30
45
|
},
|
|
31
|
-
"files": [
|
|
32
|
-
"dist"
|
|
33
|
-
],
|
|
34
|
-
"keywords": [
|
|
35
|
-
"pg",
|
|
36
|
-
"postgres",
|
|
37
|
-
"query-builder"
|
|
38
|
-
],
|
|
39
|
-
"author": "Roman Kushyn",
|
|
40
|
-
"license": "ISC",
|
|
41
46
|
"dependencies": {
|
|
42
47
|
"@types/pg": ">=8"
|
|
43
48
|
},
|
|
44
49
|
"devDependencies": {
|
|
45
50
|
"zod": "^4.3.6",
|
|
46
|
-
"test-utils": "0.3.
|
|
51
|
+
"test-utils": "0.3.6"
|
|
47
52
|
},
|
|
48
53
|
"peerDependencies": {
|
|
49
54
|
"pg": ">=8",
|
|
@@ -62,6 +67,10 @@
|
|
|
62
67
|
"check": "jest",
|
|
63
68
|
"types": "tsc",
|
|
64
69
|
"test:ci": "jest --coverage --coverageReporters json-summary",
|
|
65
|
-
"build": "rimraf ./dist/ && rollup -c ./rollup.config.mjs"
|
|
70
|
+
"build": "rimraf ./dist/ && rollup -c ./rollup.config.mjs",
|
|
71
|
+
"lint": "oxlint --fix",
|
|
72
|
+
"lint:check": "oxlint",
|
|
73
|
+
"fmt": "oxfmt",
|
|
74
|
+
"fmt:check": "oxfmt --check"
|
|
66
75
|
}
|
|
67
76
|
}
|