linkgress-orm 0.4.40 → 0.4.42
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/database/bun-client.d.ts +31 -0
- package/dist/database/bun-client.d.ts.map +1 -1
- package/dist/database/bun-client.js +143 -23
- package/dist/database/bun-client.js.map +1 -1
- package/dist/database/database-client.interface.d.ts +12 -0
- package/dist/database/database-client.interface.d.ts.map +1 -1
- package/dist/database/database-client.interface.js +16 -0
- package/dist/database/database-client.interface.js.map +1 -1
- package/dist/database/index.d.ts +2 -1
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js.map +1 -1
- package/dist/database/pg-client.d.ts +5 -2
- package/dist/database/pg-client.d.ts.map +1 -1
- package/dist/database/pg-client.js +21 -17
- package/dist/database/pg-client.js.map +1 -1
- package/dist/database/postgres-client.d.ts +9 -0
- package/dist/database/postgres-client.d.ts.map +1 -1
- package/dist/database/postgres-client.js +59 -15
- package/dist/database/postgres-client.js.map +1 -1
- package/dist/database/types.d.ts +9 -0
- package/dist/database/types.d.ts.map +1 -1
- package/dist/entity/db-context.d.ts +14 -2
- package/dist/entity/db-context.d.ts.map +1 -1
- package/dist/entity/db-context.js +55 -10
- package/dist/entity/db-context.js.map +1 -1
- package/dist/index.d.ts +42 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/query/collection-strategy.interface.d.ts +6 -0
- package/dist/query/collection-strategy.interface.d.ts.map +1 -1
- package/dist/query/conditions.d.ts +5 -0
- package/dist/query/conditions.d.ts.map +1 -1
- package/dist/query/conditions.js +13 -0
- package/dist/query/conditions.js.map +1 -1
- package/dist/query/cte-builder.d.ts +50 -2
- package/dist/query/cte-builder.d.ts.map +1 -1
- package/dist/query/cte-builder.js +68 -6
- package/dist/query/cte-builder.js.map +1 -1
- package/dist/query/grouped-query.d.ts +2 -0
- package/dist/query/grouped-query.d.ts.map +1 -1
- package/dist/query/grouped-query.js +4 -0
- package/dist/query/grouped-query.js.map +1 -1
- package/dist/query/query-builder.d.ts +15 -0
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +129 -8
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/strategies/cte-collection-strategy.js +98 -98
- package/dist/query/strategies/cte-collection-strategy.js.map +1 -1
- package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -1
- package/dist/query/strategies/lateral-collection-strategy.js +62 -58
- package/dist/query/strategies/lateral-collection-strategy.js.map +1 -1
- package/dist/query/strategies/temptable-collection-strategy.d.ts +3 -14
- package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -1
- package/dist/query/strategies/temptable-collection-strategy.js +106 -226
- package/dist/query/strategies/temptable-collection-strategy.js.map +1 -1
- package/dist/types/custom-types.d.ts +0 -4
- package/dist/types/custom-types.d.ts.map +1 -1
- package/dist/types/custom-types.js +29 -1
- package/dist/types/custom-types.js.map +1 -1
- package/package.json +4 -1
|
@@ -11,6 +11,16 @@ type BunSql = any;
|
|
|
11
11
|
export declare class BunClient extends DatabaseClient {
|
|
12
12
|
private sql;
|
|
13
13
|
private ownsConnection;
|
|
14
|
+
/**
|
|
15
|
+
* True when the client was constructed with `prepare: false` — Bun then uses
|
|
16
|
+
* unnamed statements with TEXT-format results, whose array decoding is
|
|
17
|
+
* correct (the binary decoder panics / mis-shapes arrays, see
|
|
18
|
+
* supportsBinaryArrayResults). Conservatively false for pre-built instances
|
|
19
|
+
* and connection strings, where the prepare mode is unknown.
|
|
20
|
+
*/
|
|
21
|
+
private usesTextResults;
|
|
22
|
+
/** See BunSqlOptions.datesAsStrings — linkgress-level Date→PG-text conversion. */
|
|
23
|
+
private datesAsStrings;
|
|
14
24
|
/**
|
|
15
25
|
* Create a BunClient
|
|
16
26
|
* @param config - Either a connection string, BunSqlOptions config object, or an existing Bun SQL instance
|
|
@@ -50,6 +60,15 @@ export declare class BunClient extends DatabaseClient {
|
|
|
50
60
|
* This allows true single round-trip optimization
|
|
51
61
|
*/
|
|
52
62
|
supportsMultiStatementQueries(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Normalize a Bun `.simple()` result into an array of result sets.
|
|
65
|
+
*
|
|
66
|
+
* For a SINGLE statement, `.simple()` returns the result set itself (an
|
|
67
|
+
* array of row objects); for MULTIPLE statements it returns an array with
|
|
68
|
+
* one result set per statement. Distinguish by element shape — a result
|
|
69
|
+
* set's elements are row objects, never arrays.
|
|
70
|
+
*/
|
|
71
|
+
private static normalizeSimpleResultSets;
|
|
53
72
|
/**
|
|
54
73
|
* Execute a multi-statement query using the simple protocol
|
|
55
74
|
* This bypasses prepared statements and allows multiple statements
|
|
@@ -66,6 +85,18 @@ export declare class BunClient extends DatabaseClient {
|
|
|
66
85
|
* No explicit toggle needed
|
|
67
86
|
*/
|
|
68
87
|
supportsBinaryProtocol(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Bun ≤ 1.3.14 cannot decode BINARY array result columns (alignment panic /
|
|
90
|
+
* object-shaped arrays — see debug/bun-sql-binary-array-repro.ts), so by
|
|
91
|
+
* default query builders aggregate via json_agg instead of array_agg.
|
|
92
|
+
*
|
|
93
|
+
* With `prepare: false`, Bun uses unnamed statements with TEXT-format
|
|
94
|
+
* results whose array decoding is correct — native arrays work and the
|
|
95
|
+
* panic surface disappears entirely (raw SQL included), at ~0.05ms/query
|
|
96
|
+
* re-parse cost. In that mode this returns true and strategies keep
|
|
97
|
+
* array_agg.
|
|
98
|
+
*/
|
|
99
|
+
supportsBinaryArrayResults(): boolean;
|
|
69
100
|
/**
|
|
70
101
|
* Get access to the underlying Bun SQL instance for advanced use cases
|
|
71
102
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun-client.d.ts","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"bun-client.d.ts","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,GAAG,CAAC;AAqGlB;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,cAAc;IAC3C,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,cAAc,CAAU;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe,CAAU;IACjC,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;IA+B7C,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAetG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBxH;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA0BhE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB3D;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;;;;;;;;;OAUG;IACH,0BAA0B,IAAI,OAAO;IAIrC;;OAEG;IACH,MAAM,IAAI,MAAM;CAGjB"}
|
|
@@ -2,23 +2,86 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BunClient = void 0;
|
|
4
4
|
const database_client_interface_1 = require("./database-client.interface");
|
|
5
|
+
/**
|
|
6
|
+
* Resolve Bun's SQL constructor.
|
|
7
|
+
*
|
|
8
|
+
* Bun exposes SQL on the `Bun` global and via the virtual `bun` module —
|
|
9
|
+
* there is no `bun:sql` builtin. Prefer the global (no module resolution
|
|
10
|
+
* involved, works under every bundler), fall back to `require('bun')` for
|
|
11
|
+
* environments that strip globals.
|
|
12
|
+
*/
|
|
13
|
+
function resolveBunSqlConstructor() {
|
|
14
|
+
const bunGlobal = globalThis.Bun;
|
|
15
|
+
if (bunGlobal && typeof bunGlobal.SQL === 'function') {
|
|
16
|
+
return bunGlobal.SQL;
|
|
17
|
+
}
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
19
|
+
const { SQL } = require('bun');
|
|
20
|
+
return SQL;
|
|
21
|
+
}
|
|
5
22
|
/**
|
|
6
23
|
* Check if a value is a Bun SQL instance
|
|
7
24
|
*/
|
|
8
25
|
function isBunSqlInstance(value) {
|
|
9
26
|
return value && typeof value === 'function' && typeof value.unsafe === 'function' && typeof value.close === 'function';
|
|
10
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* In text-results mode (`prepare: false`), Bun serializes object/array params
|
|
30
|
+
* with toString() — a jsonb param would reach the server as "[object Object]".
|
|
31
|
+
* Pre-stringify them: in the text protocol PostgreSQL parses the JSON string
|
|
32
|
+
* into the json/jsonb target correctly (matching binary-mode behavior).
|
|
33
|
+
* Dates pass through — Bun formats those itself.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Convert Date values in result rows to PostgreSQL-text strings, in place.
|
|
37
|
+
* 'YYYY-MM-DD HH:MM:SS.mmm' (UTC, no zone suffix); exactly-UTC-midnight
|
|
38
|
+
* values become plain 'YYYY-MM-DD' (DATE columns arrive as midnight Dates).
|
|
39
|
+
*/
|
|
40
|
+
function convertDatesToPgText(rows) {
|
|
41
|
+
for (const row of rows) {
|
|
42
|
+
for (const key in row) {
|
|
43
|
+
const value = row[key];
|
|
44
|
+
if (value instanceof Date) {
|
|
45
|
+
const iso = value.toISOString();
|
|
46
|
+
row[key] = iso.endsWith('T00:00:00.000Z') ? iso.slice(0, 10) : iso.slice(0, 23).replace('T', ' ');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function normalizeTextModeParams(params, textMode) {
|
|
52
|
+
const list = params || [];
|
|
53
|
+
if (!textMode) {
|
|
54
|
+
return list;
|
|
55
|
+
}
|
|
56
|
+
let needsCopy = false;
|
|
57
|
+
for (const param of list) {
|
|
58
|
+
if (param !== null && typeof param === 'object' && !(param instanceof Date)) {
|
|
59
|
+
needsCopy = true;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!needsCopy) {
|
|
64
|
+
return list;
|
|
65
|
+
}
|
|
66
|
+
return list.map(param => param !== null && typeof param === 'object' && !(param instanceof Date) ? JSON.stringify(param) : param);
|
|
67
|
+
}
|
|
11
68
|
/**
|
|
12
69
|
* Wrapper for the reserved connection from Bun SQL
|
|
13
70
|
*/
|
|
14
71
|
class BunPooledConnection {
|
|
15
|
-
constructor(reserved) {
|
|
72
|
+
constructor(reserved, textMode, datesAsStrings) {
|
|
16
73
|
this.reserved = reserved;
|
|
74
|
+
this.textMode = textMode;
|
|
75
|
+
this.datesAsStrings = datesAsStrings;
|
|
17
76
|
}
|
|
18
77
|
async query(sql, params, _options) {
|
|
19
|
-
|
|
78
|
+
// Bun result sets are real arrays — pass through without copying.
|
|
79
|
+
const result = await this.reserved.unsafe(sql, normalizeTextModeParams(params, this.textMode));
|
|
80
|
+
if (this.datesAsStrings) {
|
|
81
|
+
convertDatesToPgText(result);
|
|
82
|
+
}
|
|
20
83
|
return {
|
|
21
|
-
rows:
|
|
84
|
+
rows: result,
|
|
22
85
|
rowCount: result.count ?? result.length ?? null,
|
|
23
86
|
};
|
|
24
87
|
}
|
|
@@ -64,13 +127,18 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
64
127
|
if (isBunSqlInstance(config)) {
|
|
65
128
|
this.sql = config;
|
|
66
129
|
this.ownsConnection = false;
|
|
130
|
+
this.usesTextResults = false;
|
|
131
|
+
this.datesAsStrings = false;
|
|
67
132
|
}
|
|
68
133
|
else {
|
|
134
|
+
const isOptionsObject = typeof config === 'object' && config !== null;
|
|
135
|
+
this.usesTextResults = isOptionsObject && config.prepare === false;
|
|
136
|
+
this.datesAsStrings = isOptionsObject && config.datesAsStrings === true;
|
|
137
|
+
// Strip linkgress-level extensions before handing the options to Bun.
|
|
138
|
+
const bunConfig = isOptionsObject ? { ...config, datesAsStrings: undefined } : config;
|
|
69
139
|
try {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const { SQL } = require('bun:sql');
|
|
73
|
-
this.sql = new SQL(config);
|
|
140
|
+
const SQL = resolveBunSqlConstructor();
|
|
141
|
+
this.sql = new SQL(bunConfig);
|
|
74
142
|
this.ownsConnection = true;
|
|
75
143
|
}
|
|
76
144
|
catch (error) {
|
|
@@ -81,17 +149,21 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
81
149
|
}
|
|
82
150
|
}
|
|
83
151
|
async query(sql, params, _options) {
|
|
84
|
-
// Use unsafe() for parameterized queries (similar to postgres library)
|
|
85
|
-
|
|
152
|
+
// Use unsafe() for parameterized queries (similar to postgres library).
|
|
153
|
+
// Bun result sets are real arrays — pass through without copying.
|
|
154
|
+
const result = await this.sql.unsafe(sql, normalizeTextModeParams(params, this.usesTextResults));
|
|
155
|
+
if (this.datesAsStrings) {
|
|
156
|
+
convertDatesToPgText(result);
|
|
157
|
+
}
|
|
86
158
|
return {
|
|
87
|
-
rows:
|
|
159
|
+
rows: result,
|
|
88
160
|
rowCount: result.count ?? result.length ?? null,
|
|
89
161
|
};
|
|
90
162
|
}
|
|
91
163
|
async connect() {
|
|
92
164
|
// Bun SQL uses reserve() to get a dedicated connection from the pool
|
|
93
165
|
const reserved = await this.sql.reserve();
|
|
94
|
-
return new BunPooledConnection(reserved);
|
|
166
|
+
return new BunPooledConnection(reserved, this.usesTextResults, this.datesAsStrings);
|
|
95
167
|
}
|
|
96
168
|
async end() {
|
|
97
169
|
// Only close the connection if we created it
|
|
@@ -109,9 +181,12 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
109
181
|
async transaction(callback) {
|
|
110
182
|
return await this.sql.begin(async (tx) => {
|
|
111
183
|
const queryFn = async (sqlStr, params) => {
|
|
112
|
-
const result = await tx.unsafe(sqlStr, params
|
|
184
|
+
const result = await tx.unsafe(sqlStr, normalizeTextModeParams(params, this.usesTextResults));
|
|
185
|
+
if (this.datesAsStrings) {
|
|
186
|
+
convertDatesToPgText(result);
|
|
187
|
+
}
|
|
113
188
|
return {
|
|
114
|
-
rows:
|
|
189
|
+
rows: result,
|
|
115
190
|
rowCount: result.count ?? result.length ?? null,
|
|
116
191
|
};
|
|
117
192
|
};
|
|
@@ -125,6 +200,23 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
125
200
|
supportsMultiStatementQueries() {
|
|
126
201
|
return true;
|
|
127
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Normalize a Bun `.simple()` result into an array of result sets.
|
|
205
|
+
*
|
|
206
|
+
* For a SINGLE statement, `.simple()` returns the result set itself (an
|
|
207
|
+
* array of row objects); for MULTIPLE statements it returns an array with
|
|
208
|
+
* one result set per statement. Distinguish by element shape — a result
|
|
209
|
+
* set's elements are row objects, never arrays.
|
|
210
|
+
*/
|
|
211
|
+
static normalizeSimpleResultSets(results) {
|
|
212
|
+
if (!Array.isArray(results)) {
|
|
213
|
+
return [results];
|
|
214
|
+
}
|
|
215
|
+
if (results.length > 0) {
|
|
216
|
+
return Array.isArray(results[0]) ? results : [results];
|
|
217
|
+
}
|
|
218
|
+
return typeof results.command === 'string' ? [results] : results;
|
|
219
|
+
}
|
|
128
220
|
/**
|
|
129
221
|
* Execute a multi-statement query using the simple protocol
|
|
130
222
|
* This bypasses prepared statements and allows multiple statements
|
|
@@ -132,12 +224,22 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
132
224
|
*/
|
|
133
225
|
async querySimple(sql) {
|
|
134
226
|
const results = await this.sql.unsafe(sql).simple();
|
|
135
|
-
|
|
136
|
-
// Return the last
|
|
137
|
-
|
|
138
|
-
|
|
227
|
+
const resultSets = BunClient.normalizeSimpleResultSets(results);
|
|
228
|
+
// Return the last ROW-BEARING result set (the SELECT) — Bun emits an
|
|
229
|
+
// entry per statement, so trailing row-less cleanup statements
|
|
230
|
+
// (DROP TABLE) must not shadow the data-bearing one.
|
|
231
|
+
let lastResult = [];
|
|
232
|
+
for (let i = resultSets.length - 1; i >= 0; i--) {
|
|
233
|
+
if ((resultSets[i]?.length ?? 0) > 0) {
|
|
234
|
+
lastResult = resultSets[i];
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (this.datesAsStrings) {
|
|
239
|
+
convertDatesToPgText(lastResult);
|
|
240
|
+
}
|
|
139
241
|
return {
|
|
140
|
-
rows:
|
|
242
|
+
rows: lastResult,
|
|
141
243
|
rowCount: lastResult.count ?? lastResult.length ?? null,
|
|
142
244
|
};
|
|
143
245
|
}
|
|
@@ -148,11 +250,15 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
148
250
|
async querySimpleMulti(sql) {
|
|
149
251
|
const results = await this.sql.unsafe(sql).simple();
|
|
150
252
|
// Convert each result set to QueryResult format
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
253
|
+
return BunClient.normalizeSimpleResultSets(results).map((result) => {
|
|
254
|
+
if (this.datesAsStrings) {
|
|
255
|
+
convertDatesToPgText(result);
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
rows: result,
|
|
259
|
+
rowCount: result.count ?? result.length ?? null,
|
|
260
|
+
};
|
|
261
|
+
});
|
|
156
262
|
}
|
|
157
263
|
/**
|
|
158
264
|
* Bun SQL automatically uses binary protocol where appropriate
|
|
@@ -161,6 +267,20 @@ class BunClient extends database_client_interface_1.DatabaseClient {
|
|
|
161
267
|
supportsBinaryProtocol() {
|
|
162
268
|
return false; // No explicit control, but uses binary internally
|
|
163
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Bun ≤ 1.3.14 cannot decode BINARY array result columns (alignment panic /
|
|
272
|
+
* object-shaped arrays — see debug/bun-sql-binary-array-repro.ts), so by
|
|
273
|
+
* default query builders aggregate via json_agg instead of array_agg.
|
|
274
|
+
*
|
|
275
|
+
* With `prepare: false`, Bun uses unnamed statements with TEXT-format
|
|
276
|
+
* results whose array decoding is correct — native arrays work and the
|
|
277
|
+
* panic surface disappears entirely (raw SQL included), at ~0.05ms/query
|
|
278
|
+
* re-parse cost. In that mode this returns true and strategies keep
|
|
279
|
+
* array_agg.
|
|
280
|
+
*/
|
|
281
|
+
supportsBinaryArrayResults() {
|
|
282
|
+
return this.usesTextResults;
|
|
283
|
+
}
|
|
164
284
|
/**
|
|
165
285
|
* Get access to the underlying Bun SQL instance for advanced use cases
|
|
166
286
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun-client.js","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":";;;AAAA,2EAAmH;AAMnH;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;AACzH,CAAC;AAED;;GAEG;AACH,MAAM,mBAAmB;IACvB,YAAoB,QAAa;
|
|
1
|
+
{"version":3,"file":"bun-client.js","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,17 @@ export declare abstract class DatabaseClient {
|
|
|
102
102
|
* Default: false
|
|
103
103
|
*/
|
|
104
104
|
supportsBinaryProtocol(): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Whether the driver can decode native PostgreSQL ARRAY result columns
|
|
107
|
+
* (int[], text[], ...) in parameterized queries.
|
|
108
|
+
*
|
|
109
|
+
* Bun's SQL client (≤ 1.3.14) cannot: binary array results either panic the
|
|
110
|
+
* runtime ("incorrect alignment") or decode as numeric-keyed objects. When
|
|
111
|
+
* this returns false, query builders emit json_agg-based aggregations
|
|
112
|
+
* instead of array_agg so no native array ever reaches the wire.
|
|
113
|
+
* Default: true.
|
|
114
|
+
*/
|
|
115
|
+
supportsBinaryArrayResults(): boolean;
|
|
105
116
|
}
|
|
106
117
|
/**
|
|
107
118
|
* A wrapper client that routes queries through a transactional connection.
|
|
@@ -119,5 +130,6 @@ export declare class TransactionalClient extends DatabaseClient {
|
|
|
119
130
|
transaction<T>(_callback: (query: (sql: string, params?: any[], options?: QueryExecutionOptions) => Promise<QueryResult>) => Promise<T>): Promise<T>;
|
|
120
131
|
supportsMultiStatementQueries(): boolean;
|
|
121
132
|
supportsBinaryProtocol(): boolean;
|
|
133
|
+
supportsBinaryArrayResults(): boolean;
|
|
122
134
|
}
|
|
123
135
|
//# sourceMappingURL=database-client.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-client.interface.d.ts","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,8BAAsB,cAAc;IAClC;;OAEG;IACH,eAAe,IAAI,OAAO;IAG1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9G;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAE5J;;;;;;OAMG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;OAGG;IACH,sBAAsB,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"database-client.interface.d.ts","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,19 @@ class DatabaseClient {
|
|
|
48
48
|
supportsBinaryProtocol() {
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Whether the driver can decode native PostgreSQL ARRAY result columns
|
|
53
|
+
* (int[], text[], ...) in parameterized queries.
|
|
54
|
+
*
|
|
55
|
+
* Bun's SQL client (≤ 1.3.14) cannot: binary array results either panic the
|
|
56
|
+
* runtime ("incorrect alignment") or decode as numeric-keyed objects. When
|
|
57
|
+
* this returns false, query builders emit json_agg-based aggregations
|
|
58
|
+
* instead of array_agg so no native array ever reaches the wire.
|
|
59
|
+
* Default: true.
|
|
60
|
+
*/
|
|
61
|
+
supportsBinaryArrayResults() {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
51
64
|
}
|
|
52
65
|
exports.DatabaseClient = DatabaseClient;
|
|
53
66
|
/**
|
|
@@ -90,6 +103,9 @@ class TransactionalClient extends DatabaseClient {
|
|
|
90
103
|
supportsBinaryProtocol() {
|
|
91
104
|
return this.parentClient.supportsBinaryProtocol();
|
|
92
105
|
}
|
|
106
|
+
supportsBinaryArrayResults() {
|
|
107
|
+
return this.parentClient.supportsBinaryArrayResults();
|
|
108
|
+
}
|
|
93
109
|
}
|
|
94
110
|
exports.TransactionalClient = TransactionalClient;
|
|
95
111
|
//# sourceMappingURL=database-client.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-client.interface.js","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":";;;AAqCA;;;;;;;GAOG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAQ1C,YAAY,SAAiB,EAAE,GAAW,EAAE,KAAe;QACzD,KAAK,CAAC,iCAAiC,SAAS,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAjBD,8CAiBC;AAWD;;GAEG;AACH,MAAsB,cAAc;IAClC;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IA8BD;;;;;;OAMG;IACH,6BAA6B;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"database-client.interface.js","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":";;;AAqCA;;;;;;;GAOG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAQ1C,YAAY,SAAiB,EAAE,GAAW,EAAE,KAAe;QACzD,KAAK,CAAC,iCAAiC,SAAS,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAjBD,8CAiBC;AAWD;;GAEG;AACH,MAAsB,cAAc;IAClC;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IA8BD;;;;;;OAMG;IACH,6BAA6B;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,0BAA0B;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApED,wCAoEC;AAED;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,cAAc;IACrD,YACU,OAA+F,EAC/F,YAA4B;QAEpC,KAAK,EAAE,CAAC;QAHA,YAAO,GAAP,OAAO,CAAwF;QAC/F,iBAAY,GAAZ,YAAY,CAAgB;IAGtC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,MAAc,EAAE,OAA+B;QAC/E,gFAAgF;QAChF,iFAAiF;QACjF,6EAA6E;QAC7E,kDAAkD;QAClD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAmB,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,gEAAgE;QAChE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,6DAA6D;IAC/D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,SAAwH;QAC3I,+EAA+E;QAC/E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,6BAA6B;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;IACpD,CAAC;IAED,0BAA0B;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC;IACxD,CAAC;CACF;AAjDD,kDAiDC"}
|
package/dist/database/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { DatabaseClient,
|
|
1
|
+
export { DatabaseClient, QueryTimeoutError, } from './database-client.interface';
|
|
2
|
+
export type { PooledConnection, QueryResult, } from './database-client.interface';
|
|
2
3
|
export type { QueryExecutionOptions } from './database-client.interface';
|
|
3
4
|
export { PostgresClient } from './postgres-client';
|
|
4
5
|
export { PgClient } from './pg-client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;AAAA,yEAGqC;AAFnC,2HAAA,cAAc,OAAA;AACd,8HAAA,iBAAiB,OAAA;AAQnB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA"}
|
|
@@ -16,7 +16,7 @@ export declare class PgClient extends DatabaseClient {
|
|
|
16
16
|
* @param config - Either a PoolConfig object or an existing pg.Pool instance
|
|
17
17
|
*/
|
|
18
18
|
constructor(config: PoolConfig | Pool);
|
|
19
|
-
query<T = any>(sql: string, params?: any[],
|
|
19
|
+
query<T = any>(sql: string, params?: any[], _options?: QueryExecutionOptions): Promise<QueryResult<T>>;
|
|
20
20
|
connect(): Promise<PooledConnection>;
|
|
21
21
|
end(): Promise<void>;
|
|
22
22
|
getDriverName(): string;
|
|
@@ -32,7 +32,10 @@ export declare class PgClient extends DatabaseClient {
|
|
|
32
32
|
*/
|
|
33
33
|
supportsMultiStatementQueries(): boolean;
|
|
34
34
|
/**
|
|
35
|
-
* pg
|
|
35
|
+
* pg has no binary result protocol toggle. The previous implementation
|
|
36
|
+
* mapped `useBinaryProtocol` to pg's `rowMode: 'array'`, which is NOT the
|
|
37
|
+
* binary protocol — it changes the row SHAPE to positional arrays and would
|
|
38
|
+
* corrupt every column-name-based result mapping downstream.
|
|
36
39
|
*/
|
|
37
40
|
supportsBinaryProtocol(): boolean;
|
|
38
41
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-client.d.ts","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,IAAI,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"pg-client.d.ts","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,IAAI,GAAG,GAAG,CAAC;AA8BhB;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,cAAc,CAAU;IAEhC;;;OAGG;gBACS,MAAM,EAAE,UAAU,GAAG,IAAI;IAkC/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAStG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBxH;;;;OAIG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;OAKG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -15,12 +15,8 @@ class PgPooledConnection {
|
|
|
15
15
|
constructor(client) {
|
|
16
16
|
this.client = client;
|
|
17
17
|
}
|
|
18
|
-
async query(sql, params,
|
|
19
|
-
|
|
20
|
-
const queryConfig = options?.useBinaryProtocol
|
|
21
|
-
? { text: sql, values: params, rowMode: 'array' }
|
|
22
|
-
: { text: sql, values: params };
|
|
23
|
-
const result = await this.client.query(queryConfig);
|
|
18
|
+
async query(sql, params, _options) {
|
|
19
|
+
const result = await this.client.query(sql, params);
|
|
24
20
|
return {
|
|
25
21
|
rows: result.rows,
|
|
26
22
|
rowCount: result.rowCount,
|
|
@@ -50,24 +46,29 @@ class PgClient extends database_client_interface_1.DatabaseClient {
|
|
|
50
46
|
this.ownsConnection = false;
|
|
51
47
|
}
|
|
52
48
|
else {
|
|
49
|
+
let Pool;
|
|
53
50
|
try {
|
|
54
51
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
const pgModule = require('pg');
|
|
53
|
+
// Under ESM-interop loaders require() can return a module-namespace
|
|
54
|
+
// object ({ default: ... }) — unwrap it (same fix as PostgresClient).
|
|
55
|
+
Pool = pgModule?.Pool ?? pgModule?.default?.Pool;
|
|
58
56
|
}
|
|
59
57
|
catch (error) {
|
|
60
58
|
throw new Error('PgClient requires the "pg" package to be installed. ' +
|
|
61
59
|
'Install it with: npm install pg');
|
|
62
60
|
}
|
|
61
|
+
if (typeof Pool !== 'function') {
|
|
62
|
+
throw new Error('The "pg" package did not expose a Pool constructor (unexpected module shape).');
|
|
63
|
+
}
|
|
64
|
+
// Outside the try/catch: a pool-construction error (e.g. invalid options)
|
|
65
|
+
// must propagate as-is, not masquerade as a missing package.
|
|
66
|
+
this.pool = new Pool(config);
|
|
67
|
+
this.ownsConnection = true;
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
|
-
async query(sql, params,
|
|
66
|
-
|
|
67
|
-
const queryConfig = options?.useBinaryProtocol
|
|
68
|
-
? { text: sql, values: params, rowMode: 'array' }
|
|
69
|
-
: { text: sql, values: params };
|
|
70
|
-
const result = await this.pool.query(queryConfig);
|
|
70
|
+
async query(sql, params, _options) {
|
|
71
|
+
const result = await this.pool.query(sql, params);
|
|
71
72
|
return {
|
|
72
73
|
rows: result.rows,
|
|
73
74
|
rowCount: result.rowCount,
|
|
@@ -122,10 +123,13 @@ class PgClient extends database_client_interface_1.DatabaseClient {
|
|
|
122
123
|
return false;
|
|
123
124
|
}
|
|
124
125
|
/**
|
|
125
|
-
* pg
|
|
126
|
+
* pg has no binary result protocol toggle. The previous implementation
|
|
127
|
+
* mapped `useBinaryProtocol` to pg's `rowMode: 'array'`, which is NOT the
|
|
128
|
+
* binary protocol — it changes the row SHAPE to positional arrays and would
|
|
129
|
+
* corrupt every column-name-based result mapping downstream.
|
|
126
130
|
*/
|
|
127
131
|
supportsBinaryProtocol() {
|
|
128
|
-
return
|
|
132
|
+
return false;
|
|
129
133
|
}
|
|
130
134
|
/**
|
|
131
135
|
* Get access to the underlying pg Pool for advanced use cases
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-client.js","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":";;;AAAA,2EAAmH;AAOnH;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAU;IAClC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC;AAC3J,CAAC;AAED;;GAEG;AACH,MAAM,kBAAkB;IACtB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,MAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"pg-client.js","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,15 @@ export declare class PostgresClient extends DatabaseClient {
|
|
|
36
36
|
* This allows true single round-trip optimization
|
|
37
37
|
*/
|
|
38
38
|
supportsMultiStatementQueries(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Normalize a porsager `.simple()` result into an array of result sets.
|
|
41
|
+
*
|
|
42
|
+
* For a SINGLE statement, `.simple()` returns the RowList itself (an array of
|
|
43
|
+
* row objects carrying a string `command`); for MULTIPLE statements it
|
|
44
|
+
* returns a plain array of RowLists. Distinguish by element shape — a result
|
|
45
|
+
* set's elements are row objects, never arrays.
|
|
46
|
+
*/
|
|
47
|
+
private static normalizeSimpleResultSets;
|
|
39
48
|
/**
|
|
40
49
|
* Execute a multi-statement query using the simple protocol
|
|
41
50
|
* This bypasses prepared statements and allows multiple statements
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-client.d.ts","sourceRoot":"","sources":["../../src/database/postgres-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,KAAK,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-client.d.ts","sourceRoot":"","sources":["../../src/database/postgres-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,KAAK,GAAG,GAAG,GAAG,CAAC;AA6Jf;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,cAAc,CAAU;IAChC,yEAAyE;IACzE,OAAO,CAAC,uBAAuB,CAAC,CAAS;IAEzC;;;OAGG;gBACS,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,GAAG;IAmClD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAyBjB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAMrG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAcpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAQxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAqBhE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU3D;;;OAGG;IACG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAYzJ;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,MAAM,IAAI,GAAG;CAGd"}
|