@prairielearn/postgres 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +35 -0
- package/dist/default-pool.d.ts +21 -18
- package/dist/default-pool.js +5 -1
- package/dist/default-pool.js.map +1 -1
- package/dist/default-pool.test.js +1 -0
- package/dist/default-pool.test.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pool.d.ts +56 -38
- package/dist/pool.js +93 -26
- package/dist/pool.js.map +1 -1
- package/package.json +5 -1
- package/src/default-pool.test.ts +1 -0
- package/src/default-pool.ts +3 -0
- package/src/index.ts +1 -0
- package/src/pool.ts +137 -41
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -156,6 +156,41 @@ const { user, course } = await sqldb.runInTransactionAsync(async () => {
|
|
|
156
156
|
|
|
157
157
|
`runInTransaction` will start a transaction and then execute the provided function. Any nested query will use the same client and thus run inside the transaction. If the function throws an error, the transaction is rolled back; otherwise, it is committed.
|
|
158
158
|
|
|
159
|
+
### Cursors
|
|
160
|
+
|
|
161
|
+
For very large queries that don't need to fit in memory all at once, it's possible to use a cursor to read a limited number of rows at a time.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { queryCursor } from '@prairielearn/postgres';
|
|
165
|
+
|
|
166
|
+
const cursor = await queryCursor(sql.select_all_users, {});
|
|
167
|
+
for await (const users of cursor.iterate(100)) {
|
|
168
|
+
// `users` will have up to 100 rows in it.
|
|
169
|
+
for (const user of users) {
|
|
170
|
+
console.log(user);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
You can optionally pass a Zod schema to parse and validate each row:
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
import { z } from 'zod';
|
|
179
|
+
import { queryValidatedCursor } from '@prairielearn/postgres';
|
|
180
|
+
|
|
181
|
+
const UserSchema = z.object({
|
|
182
|
+
id: z.string(),
|
|
183
|
+
name: z.string(),
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const cursor = await queryValidatedCursor(sql.select_all_users, {}, UserSchema);
|
|
187
|
+
for await (const users of cursor.iterate(100)) {
|
|
188
|
+
for (const user of users) {
|
|
189
|
+
console.log(user);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
159
194
|
### Callback-style functions
|
|
160
195
|
|
|
161
196
|
For most functions that return promises, there are corresponding versions that work with Node-style callbacks:
|
package/dist/default-pool.d.ts
CHANGED
|
@@ -8,24 +8,24 @@ export declare const close: (callback: (err: NodeJS.ErrnoException) => void) =>
|
|
|
8
8
|
export declare const closeAsync: () => Promise<void>;
|
|
9
9
|
export declare const getClientAsync: () => Promise<import("pg").PoolClient>;
|
|
10
10
|
export declare const getClient: (callback: (error: Error | null, client?: import("pg").PoolClient | undefined, done?: (() => void) | undefined) => void) => void;
|
|
11
|
-
export declare const queryWithClient: (arg1: import("pg").PoolClient, arg2: string, arg3:
|
|
12
|
-
export declare const queryWithClientAsync: (client: import("pg").PoolClient, sql: string, params:
|
|
13
|
-
export declare const queryWithClientOneRow: (arg1: import("pg").PoolClient, arg2: string, arg3:
|
|
14
|
-
export declare const queryWithClientOneRowAsync: (client: import("pg").PoolClient, sql: string, params:
|
|
15
|
-
export declare const queryWithClientZeroOrOneRow: (arg1: import("pg").PoolClient, arg2: string, arg3:
|
|
16
|
-
export declare const queryWithClientZeroOrOneRowAsync: (client: import("pg").PoolClient, sql: string, params:
|
|
11
|
+
export declare const queryWithClient: (arg1: import("pg").PoolClient, arg2: string, arg3: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
12
|
+
export declare const queryWithClientAsync: (client: import("pg").PoolClient, sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
13
|
+
export declare const queryWithClientOneRow: (arg1: import("pg").PoolClient, arg2: string, arg3: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
14
|
+
export declare const queryWithClientOneRowAsync: (client: import("pg").PoolClient, sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
15
|
+
export declare const queryWithClientZeroOrOneRow: (arg1: import("pg").PoolClient, arg2: string, arg3: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
16
|
+
export declare const queryWithClientZeroOrOneRowAsync: (client: import("pg").PoolClient, sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
17
17
|
export declare const rollbackWithClientAsync: (client: import("pg").PoolClient) => Promise<void>;
|
|
18
18
|
export declare const rollbackWithClient: (client: import("pg").PoolClient, _done: (release?: any) => void, callback: (err: Error | null) => void) => void;
|
|
19
19
|
export declare const beginTransactionAsync: () => Promise<import("pg").PoolClient>;
|
|
20
20
|
export declare const endTransactionAsync: (client: import("pg").PoolClient, err: Error | null | undefined) => Promise<void>;
|
|
21
21
|
export declare const endTransaction: (client: import("pg").PoolClient, _done: (rollback?: any) => void, err: Error | null | undefined, callback: (error: Error | null) => void) => void;
|
|
22
22
|
export declare const runInTransactionAsync: <T>(fn: (client: import("pg").PoolClient) => Promise<T>) => Promise<T>;
|
|
23
|
-
export declare const query: (arg1: string, arg2:
|
|
24
|
-
export declare const queryAsync: (sql: string, params:
|
|
25
|
-
export declare const queryOneRow: (arg1: string, arg2:
|
|
26
|
-
export declare const queryOneRowAsync: (sql: string, params:
|
|
27
|
-
export declare const queryZeroOrOneRow: (arg1: string, arg2:
|
|
28
|
-
export declare const queryZeroOrOneRowAsync: (sql: string, params:
|
|
23
|
+
export declare const query: (arg1: string, arg2: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
24
|
+
export declare const queryAsync: (sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
25
|
+
export declare const queryOneRow: (arg1: string, arg2: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
26
|
+
export declare const queryOneRowAsync: (sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
27
|
+
export declare const queryZeroOrOneRow: (arg1: string, arg2: import("./pool").QueryParams, callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
28
|
+
export declare const queryZeroOrOneRowAsync: (sql: string, params: import("./pool").QueryParams) => Promise<import("pg").QueryResult<any>>;
|
|
29
29
|
export declare const call: (arg1: string, arg2: any[], callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
30
30
|
export declare const callAsync: (functionName: string, params: any[]) => Promise<import("pg").QueryResult<any>>;
|
|
31
31
|
export declare const callOneRow: (arg1: string, arg2: any[], callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
@@ -38,15 +38,18 @@ export declare const callWithClientOneRow: (arg1: import("pg").PoolClient, arg2:
|
|
|
38
38
|
export declare const callWithClientOneRowAsync: (client: import("pg").PoolClient, functionName: string, params: any[]) => Promise<import("pg").QueryResult<any>>;
|
|
39
39
|
export declare const callWithClientZeroOrOneRow: (arg1: import("pg").PoolClient, arg2: string, arg3: any[], callback: (err: NodeJS.ErrnoException | null, result: import("pg").QueryResult<any>) => void) => void;
|
|
40
40
|
export declare const callWithClientZeroOrOneRowAsync: (client: import("pg").PoolClient, functionName: string, params: any[]) => Promise<import("pg").QueryResult<any>>;
|
|
41
|
-
export declare const queryValidatedRows: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
42
|
-
export declare const queryValidatedOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
43
|
-
export declare const queryValidatedZeroOrOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
44
|
-
export declare const queryValidatedSingleColumnRows: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
45
|
-
export declare const queryValidatedSingleColumnOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
46
|
-
export declare const queryValidatedSingleColumnZeroOrOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params:
|
|
41
|
+
export declare const queryValidatedRows: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model>[]>;
|
|
42
|
+
export declare const queryValidatedOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model>>;
|
|
43
|
+
export declare const queryValidatedZeroOrOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model> | null>;
|
|
44
|
+
export declare const queryValidatedSingleColumnRows: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model>[]>;
|
|
45
|
+
export declare const queryValidatedSingleColumnOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model>>;
|
|
46
|
+
export declare const queryValidatedSingleColumnZeroOrOneRow: <Model extends import("zod").ZodTypeAny>(query: string, params: import("./pool").QueryParams, model: Model) => Promise<import("zod").TypeOf<Model> | null>;
|
|
47
47
|
export declare const callValidatedRows: <Model extends import("zod").ZodTypeAny>(sprocName: string, params: any[], model: Model) => Promise<import("zod").TypeOf<Model>[]>;
|
|
48
48
|
export declare const callValidatedOneRow: <Model extends import("zod").ZodTypeAny>(sprocName: string, params: any[], model: Model) => Promise<import("zod").TypeOf<Model>>;
|
|
49
49
|
export declare const callValidatedZeroOrOneRow: <Model extends import("zod").ZodTypeAny>(sprocName: string, params: any[], model: Model) => Promise<import("zod").TypeOf<Model> | null>;
|
|
50
|
+
export declare const queryCursorWithClient: (client: import("pg").PoolClient, sql: string, params: import("./pool").QueryParams) => Promise<import("pg-cursor")<any>>;
|
|
51
|
+
export declare const queryCursor: <Model extends import("zod").ZodTypeAny>(sql: string, params: import("./pool").QueryParams) => Promise<import("./pool").CursorIterator<import("zod").TypeOf<Model>>>;
|
|
52
|
+
export declare const queryValidatedCursor: <Model extends import("zod").ZodTypeAny>(sql: string, params: import("./pool").QueryParams, model: Model) => Promise<import("./pool").CursorIterator<import("zod").TypeOf<Model>>>;
|
|
50
53
|
export declare const setSearchSchema: (schema: string) => Promise<void>;
|
|
51
54
|
export declare const getSearchSchema: () => string | null;
|
|
52
55
|
export declare const setRandomSearchSchema: (arg1: string, callback: (err: NodeJS.ErrnoException, result: string) => void) => void;
|
package/dist/default-pool.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.setSearchSchema = exports.queryValidatedCursor = exports.queryCursor = exports.queryCursorWithClient = exports.callValidatedZeroOrOneRow = exports.callValidatedOneRow = exports.callValidatedRows = exports.queryValidatedSingleColumnZeroOrOneRow = exports.queryValidatedSingleColumnOneRow = exports.queryValidatedSingleColumnRows = exports.queryValidatedZeroOrOneRow = exports.queryValidatedOneRow = exports.queryValidatedRows = exports.callWithClientZeroOrOneRowAsync = exports.callWithClientZeroOrOneRow = exports.callWithClientOneRowAsync = exports.callWithClientOneRow = exports.callWithClientAsync = exports.callWithClient = exports.callZeroOrOneRowAsync = exports.callZeroOrOneRow = exports.callOneRowAsync = exports.callOneRow = exports.callAsync = exports.call = exports.queryZeroOrOneRowAsync = exports.queryZeroOrOneRow = exports.queryOneRowAsync = exports.queryOneRow = exports.queryAsync = exports.query = exports.runInTransactionAsync = exports.endTransaction = exports.endTransactionAsync = exports.beginTransactionAsync = exports.rollbackWithClient = exports.rollbackWithClientAsync = exports.queryWithClientZeroOrOneRowAsync = exports.queryWithClientZeroOrOneRow = exports.queryWithClientOneRowAsync = exports.queryWithClientOneRow = exports.queryWithClientAsync = exports.queryWithClient = exports.getClient = exports.getClientAsync = exports.closeAsync = exports.close = exports.initAsync = exports.init = exports.defaultPool = void 0;
|
|
4
|
+
exports.setRandomSearchSchemaAsync = exports.setRandomSearchSchema = exports.getSearchSchema = void 0;
|
|
4
5
|
const pool_1 = require("./pool");
|
|
5
6
|
const defaultPool = new pool_1.PostgresPool();
|
|
6
7
|
exports.defaultPool = defaultPool;
|
|
@@ -57,6 +58,9 @@ exports.queryValidatedSingleColumnZeroOrOneRow = defaultPool.queryValidatedSingl
|
|
|
57
58
|
exports.callValidatedRows = defaultPool.callValidatedRows.bind(defaultPool);
|
|
58
59
|
exports.callValidatedOneRow = defaultPool.callValidatedOneRow.bind(defaultPool);
|
|
59
60
|
exports.callValidatedZeroOrOneRow = defaultPool.callValidatedZeroOrOneRow.bind(defaultPool);
|
|
61
|
+
exports.queryCursorWithClient = defaultPool.queryCursorWithClient.bind(defaultPool);
|
|
62
|
+
exports.queryCursor = defaultPool.queryCursor.bind(defaultPool);
|
|
63
|
+
exports.queryValidatedCursor = defaultPool.queryValidatedCursor.bind(defaultPool);
|
|
60
64
|
exports.setSearchSchema = defaultPool.setSearchSchema.bind(defaultPool);
|
|
61
65
|
exports.getSearchSchema = defaultPool.getSearchSchema.bind(defaultPool);
|
|
62
66
|
exports.setRandomSearchSchema = defaultPool.setRandomSearchSchema.bind(defaultPool);
|
package/dist/default-pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pool.js","sourceRoot":"","sources":["../src/default-pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-pool.js","sourceRoot":"","sources":["../src/default-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-pool.test.js","sourceRoot":"","sources":["../src/default-pool.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,iCAAsC;AACtC,uDAAyC;AAEzC;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,kBAAkB;IAClB,MAAM;IACN,WAAW;IACX,cAAc;IACd,aAAa;IACb,UAAU;IACV,YAAY;IACZ,WAAW;IACX,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,mBAAY,EAAE,CAAC;QAEhC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,aAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,aAAM,CAAC,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,aAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,aAAM,CAAC,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,mBAAY,EAAE,CAAC;QAEhC,MAAM,eAAe,GAAG;YACtB,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACnC,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1D,cAAc;SACf,CAAC;QAEF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,aAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"default-pool.test.js","sourceRoot":"","sources":["../src/default-pool.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,iCAAsC;AACtC,uDAAyC;AAEzC;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,kBAAkB;IAClB,MAAM;IACN,WAAW;IACX,cAAc;IACd,aAAa;IACb,8BAA8B;IAC9B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,mBAAY,EAAE,CAAC;QAEhC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,aAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,aAAM,CAAC,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEL,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,aAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,aAAM,CAAC,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAI,mBAAY,EAAE,CAAC;QAEhC,MAAM,eAAe,GAAG;YACtB,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACnC,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1D,cAAc;SACf,CAAC;QAEF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,aAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,mCAAiD;AAAxC,iGAAA,OAAO,OAAA;AAAE,sGAAA,YAAY,OAAA;AAC9B,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,mCAAiD;AAAxC,iGAAA,OAAO,OAAA;AAAE,sGAAA,YAAY,OAAA;AAC9B,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AAErB,iDAA+B"}
|
package/dist/pool.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import pg, { QueryResult } from 'pg';
|
|
3
|
+
import Cursor from 'pg-cursor';
|
|
3
4
|
import { z } from 'zod';
|
|
4
|
-
type
|
|
5
|
+
export type QueryParams = Record<string, any> | any[];
|
|
6
|
+
export interface CursorIterator<T> {
|
|
7
|
+
iterate: (batchSize: number) => AsyncGenerator<T[]>;
|
|
8
|
+
}
|
|
5
9
|
export declare class PostgresError extends Error {
|
|
6
10
|
data: Record<string, any>;
|
|
7
11
|
constructor(message: string, data: Record<string, any>);
|
|
@@ -52,31 +56,31 @@ export declare class PostgresPool {
|
|
|
52
56
|
/**
|
|
53
57
|
* Performs a query with the given client.
|
|
54
58
|
*/
|
|
55
|
-
queryWithClientAsync(client: pg.PoolClient, sql: string, params:
|
|
59
|
+
queryWithClientAsync(client: pg.PoolClient, sql: string, params: QueryParams): Promise<pg.QueryResult>;
|
|
56
60
|
/**
|
|
57
61
|
* Performs a query with the given client.
|
|
58
62
|
*/
|
|
59
|
-
queryWithClient: (arg1: pg.PoolClient, arg2: string, arg3:
|
|
63
|
+
queryWithClient: (arg1: pg.PoolClient, arg2: string, arg3: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
60
64
|
/**
|
|
61
65
|
* Performs a query with the given client. Errors if the query returns more
|
|
62
66
|
* than one row.
|
|
63
67
|
*/
|
|
64
|
-
queryWithClientOneRowAsync(client: pg.PoolClient, sql: string, params:
|
|
68
|
+
queryWithClientOneRowAsync(client: pg.PoolClient, sql: string, params: QueryParams): Promise<pg.QueryResult>;
|
|
65
69
|
/**
|
|
66
70
|
* Performs a query with the given client. Errors if the query returns more
|
|
67
71
|
* than one row.
|
|
68
72
|
*/
|
|
69
|
-
queryWithClientOneRow: (arg1: pg.PoolClient, arg2: string, arg3:
|
|
73
|
+
queryWithClientOneRow: (arg1: pg.PoolClient, arg2: string, arg3: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
70
74
|
/**
|
|
71
75
|
* Performs a query with the given client. Errors if the query returns more
|
|
72
76
|
* than one row.
|
|
73
77
|
*/
|
|
74
|
-
queryWithClientZeroOrOneRowAsync(client: pg.PoolClient, sql: string, params:
|
|
78
|
+
queryWithClientZeroOrOneRowAsync(client: pg.PoolClient, sql: string, params: QueryParams): Promise<QueryResult>;
|
|
75
79
|
/**
|
|
76
80
|
* Performs a query with the given client. Errors if the query returns more
|
|
77
81
|
* than one row.
|
|
78
82
|
*/
|
|
79
|
-
queryWithClientZeroOrOneRow: (arg1: pg.PoolClient, arg2: string, arg3:
|
|
83
|
+
queryWithClientZeroOrOneRow: (arg1: pg.PoolClient, arg2: string, arg3: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
80
84
|
/**
|
|
81
85
|
* Rolls back the current transaction for the given client.
|
|
82
86
|
*/
|
|
@@ -111,31 +115,31 @@ export declare class PostgresPool {
|
|
|
111
115
|
/**
|
|
112
116
|
* Executes a query with the specified parameters.
|
|
113
117
|
*/
|
|
114
|
-
queryAsync(sql: string, params:
|
|
118
|
+
queryAsync(sql: string, params: QueryParams): Promise<QueryResult>;
|
|
115
119
|
/**
|
|
116
120
|
* Executes a query with the specified parameters.
|
|
117
121
|
*/
|
|
118
|
-
query: (arg1: string, arg2:
|
|
122
|
+
query: (arg1: string, arg2: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
119
123
|
/**
|
|
120
124
|
* Executes a query with the specified parameters. Errors if the query does
|
|
121
125
|
* not return exactly one row.
|
|
122
126
|
*/
|
|
123
|
-
queryOneRowAsync(sql: string, params:
|
|
127
|
+
queryOneRowAsync(sql: string, params: QueryParams): Promise<pg.QueryResult>;
|
|
124
128
|
/**
|
|
125
129
|
* Executes a query with the specified parameters. Errors if the query does
|
|
126
130
|
* not return exactly one row.
|
|
127
131
|
*/
|
|
128
|
-
queryOneRow: (arg1: string, arg2:
|
|
132
|
+
queryOneRow: (arg1: string, arg2: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
129
133
|
/**
|
|
130
134
|
* Executes a query with the specified parameters. Errors if the query
|
|
131
135
|
* returns more than one row.
|
|
132
136
|
*/
|
|
133
|
-
queryZeroOrOneRowAsync(sql: string, params:
|
|
137
|
+
queryZeroOrOneRowAsync(sql: string, params: QueryParams): Promise<pg.QueryResult>;
|
|
134
138
|
/**
|
|
135
139
|
* Executes a query with the specified parameters. Errors if the query
|
|
136
140
|
* returns more than one row.
|
|
137
141
|
*/
|
|
138
|
-
queryZeroOrOneRow: (arg1: string, arg2:
|
|
142
|
+
queryZeroOrOneRow: (arg1: string, arg2: QueryParams, callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
139
143
|
/**
|
|
140
144
|
* Calls the given function with the specified parameters.
|
|
141
145
|
*/
|
|
@@ -193,55 +197,70 @@ export declare class PostgresPool {
|
|
|
193
197
|
*/
|
|
194
198
|
callWithClientZeroOrOneRow: (arg1: pg.PoolClient, arg2: string, arg3: any[], callback: (err: NodeJS.ErrnoException | null, result: pg.QueryResult<any>) => void) => void;
|
|
195
199
|
/**
|
|
196
|
-
* Wrapper around {@link queryAsync} that
|
|
197
|
-
*
|
|
200
|
+
* Wrapper around {@link queryAsync} that parses the resulting rows with the
|
|
201
|
+
* given Zod schema. Returns only the rows of the query.
|
|
198
202
|
*/
|
|
199
|
-
queryValidatedRows<Model extends z.ZodTypeAny>(query: string, params:
|
|
203
|
+
queryValidatedRows<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model>[]>;
|
|
200
204
|
/**
|
|
201
|
-
* Wrapper around {@link queryOneRowAsync} that
|
|
202
|
-
*
|
|
205
|
+
* Wrapper around {@link queryOneRowAsync} that parses the resulting row with
|
|
206
|
+
* the given Zod schema. Returns only a single row of the query.
|
|
203
207
|
*/
|
|
204
|
-
queryValidatedOneRow<Model extends z.ZodTypeAny>(query: string, params:
|
|
208
|
+
queryValidatedOneRow<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model>>;
|
|
205
209
|
/**
|
|
206
|
-
* Wrapper around {@link queryZeroOrOneRowAsync} that
|
|
207
|
-
*
|
|
208
|
-
* Returns either the single row of the query or `null`.
|
|
210
|
+
* Wrapper around {@link queryZeroOrOneRowAsync} that parses the resulting row
|
|
211
|
+
* (if any) with the given Zod schema. Returns either a single row or `null`.
|
|
209
212
|
*/
|
|
210
|
-
queryValidatedZeroOrOneRow<Model extends z.ZodTypeAny>(query: string, params:
|
|
213
|
+
queryValidatedZeroOrOneRow<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model> | null>;
|
|
211
214
|
/**
|
|
212
215
|
* Wrapper around {@link queryAsync} that validates that only one column is
|
|
213
|
-
* returned and the data in it
|
|
216
|
+
* returned and parses the data in it with the given Zod schema. Returns only
|
|
214
217
|
* the single column of the query as an array.
|
|
215
218
|
*/
|
|
216
|
-
queryValidatedSingleColumnRows<Model extends z.ZodTypeAny>(query: string, params:
|
|
219
|
+
queryValidatedSingleColumnRows<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model>[]>;
|
|
217
220
|
/**
|
|
218
221
|
* Wrapper around {@link queryOneRowAsync} that validates that only one column
|
|
219
|
-
* is returned and the data in it
|
|
222
|
+
* is returned and parses the data in it with the given Zod schema. Returns
|
|
220
223
|
* only the single entry.
|
|
221
224
|
*/
|
|
222
|
-
queryValidatedSingleColumnOneRow<Model extends z.ZodTypeAny>(query: string, params:
|
|
225
|
+
queryValidatedSingleColumnOneRow<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model>>;
|
|
223
226
|
/**
|
|
224
227
|
* Wrapper around {@link queryZeroOrOneRowAsync} that validates that only one
|
|
225
|
-
* column is returned and the data in it
|
|
226
|
-
*
|
|
228
|
+
* column is returned and parses the data in it (if any) with the given Zod
|
|
229
|
+
* schema. Returns either the single row of the query or `null`.
|
|
227
230
|
*/
|
|
228
|
-
queryValidatedSingleColumnZeroOrOneRow<Model extends z.ZodTypeAny>(query: string, params:
|
|
231
|
+
queryValidatedSingleColumnZeroOrOneRow<Model extends z.ZodTypeAny>(query: string, params: QueryParams, model: Model): Promise<z.infer<Model> | null>;
|
|
229
232
|
/**
|
|
230
|
-
* Wrapper around {@link callAsync} that
|
|
231
|
-
*
|
|
233
|
+
* Wrapper around {@link callAsync} that parses the resulting rows with the
|
|
234
|
+
* given Zod schema. Returns only the rows.
|
|
232
235
|
*/
|
|
233
236
|
callValidatedRows<Model extends z.ZodTypeAny>(sprocName: string, params: any[], model: Model): Promise<z.infer<Model>[]>;
|
|
234
237
|
/**
|
|
235
|
-
* Wrapper around {@link callOneRowAsync} that
|
|
236
|
-
*
|
|
238
|
+
* Wrapper around {@link callOneRowAsync} that parses the resulting rows with
|
|
239
|
+
* the given Zod schema. Returns only a single row.
|
|
237
240
|
*/
|
|
238
241
|
callValidatedOneRow<Model extends z.ZodTypeAny>(sprocName: string, params: any[], model: Model): Promise<z.infer<Model>>;
|
|
239
242
|
/**
|
|
240
|
-
* Wrapper around {@link callZeroOrOneRowAsync} that
|
|
241
|
-
*
|
|
242
|
-
* Returns at most a single row.
|
|
243
|
+
* Wrapper around {@link callZeroOrOneRowAsync} that parses the resulting row
|
|
244
|
+
* (if any) with the given Zod schema. Returns at most a single row.
|
|
243
245
|
*/
|
|
244
246
|
callValidatedZeroOrOneRow<Model extends z.ZodTypeAny>(sprocName: string, params: any[], model: Model): Promise<z.infer<Model> | null>;
|
|
247
|
+
/**
|
|
248
|
+
* Returns a {@link Cursor} for the given query. The cursor can be used to
|
|
249
|
+
* read results in batches, which is useful for large result sets.
|
|
250
|
+
*/
|
|
251
|
+
queryCursorWithClient(client: pg.PoolClient, sql: string, params: QueryParams): Promise<Cursor>;
|
|
252
|
+
/**
|
|
253
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
254
|
+
* results of the query in batches, which is useful for large result sets.
|
|
255
|
+
*/
|
|
256
|
+
queryCursor<Model extends z.ZodTypeAny>(sql: string, params: QueryParams): Promise<CursorIterator<z.infer<Model>>>;
|
|
257
|
+
/**
|
|
258
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
259
|
+
* results of the query in batches, which is useful for large result sets.
|
|
260
|
+
* Each row will be parsed by the given Zod schema.
|
|
261
|
+
*/
|
|
262
|
+
queryValidatedCursor<Model extends z.ZodTypeAny>(sql: string, params: QueryParams, model: Model): Promise<CursorIterator<z.infer<Model>>>;
|
|
263
|
+
private queryValidatedCursorInternal;
|
|
245
264
|
/**
|
|
246
265
|
* Set the schema to use for the search path.
|
|
247
266
|
*
|
|
@@ -274,4 +293,3 @@ export declare class PostgresPool {
|
|
|
274
293
|
/** The total number of queries that have been executed by this pool. */
|
|
275
294
|
get queryCount(): number;
|
|
276
295
|
}
|
|
277
|
-
export {};
|
package/dist/pool.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.PostgresPool = exports.PostgresError = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
8
|
const pg_1 = __importDefault(require("pg"));
|
|
9
|
+
const pg_cursor_1 = __importDefault(require("pg-cursor"));
|
|
9
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
11
|
const debug_1 = __importDefault(require("debug"));
|
|
11
12
|
const node_util_1 = require("node:util");
|
|
@@ -115,6 +116,19 @@ function escapeIdentifier(identifier) {
|
|
|
115
116
|
// https://www.postgresql.org/docs/12/sql-syntax-lexical.html
|
|
116
117
|
return pg_1.default.Client.prototype.escapeIdentifier(identifier);
|
|
117
118
|
}
|
|
119
|
+
function enhanceError(err, sql, params) {
|
|
120
|
+
// Copy the error so we don't end up with a circular reference in the
|
|
121
|
+
// final error.
|
|
122
|
+
const sqlError = { ...err };
|
|
123
|
+
// `message` is a non-enumerable property, so we need to copy it manually to
|
|
124
|
+
// the error object.
|
|
125
|
+
sqlError.message = err.message;
|
|
126
|
+
return addDataToError(err, {
|
|
127
|
+
sqlError: sqlError,
|
|
128
|
+
sql: sql,
|
|
129
|
+
sqlParams: params,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
118
132
|
class PostgresPool {
|
|
119
133
|
constructor() {
|
|
120
134
|
/** The pool from which clients will be acquired. */
|
|
@@ -320,14 +334,7 @@ class PostgresPool {
|
|
|
320
334
|
return result;
|
|
321
335
|
}
|
|
322
336
|
catch (err) {
|
|
323
|
-
|
|
324
|
-
const sqlError = JSON.parse(JSON.stringify(err));
|
|
325
|
-
sqlError.message = err.message;
|
|
326
|
-
throw addDataToError(err, {
|
|
327
|
-
sqlError: sqlError,
|
|
328
|
-
sql: sql,
|
|
329
|
-
sqlParams: params,
|
|
330
|
-
});
|
|
337
|
+
throw enhanceError(err, sql, params);
|
|
331
338
|
}
|
|
332
339
|
}
|
|
333
340
|
/**
|
|
@@ -620,25 +627,24 @@ class PostgresPool {
|
|
|
620
627
|
return result;
|
|
621
628
|
}
|
|
622
629
|
/**
|
|
623
|
-
* Wrapper around {@link queryAsync} that
|
|
624
|
-
*
|
|
630
|
+
* Wrapper around {@link queryAsync} that parses the resulting rows with the
|
|
631
|
+
* given Zod schema. Returns only the rows of the query.
|
|
625
632
|
*/
|
|
626
633
|
async queryValidatedRows(query, params, model) {
|
|
627
634
|
const results = await this.queryAsync(query, params);
|
|
628
635
|
return zod_1.z.array(model).parse(results.rows);
|
|
629
636
|
}
|
|
630
637
|
/**
|
|
631
|
-
* Wrapper around {@link queryOneRowAsync} that
|
|
632
|
-
*
|
|
638
|
+
* Wrapper around {@link queryOneRowAsync} that parses the resulting row with
|
|
639
|
+
* the given Zod schema. Returns only a single row of the query.
|
|
633
640
|
*/
|
|
634
641
|
async queryValidatedOneRow(query, params, model) {
|
|
635
642
|
const results = await this.queryOneRowAsync(query, params);
|
|
636
643
|
return model.parse(results.rows[0]);
|
|
637
644
|
}
|
|
638
645
|
/**
|
|
639
|
-
* Wrapper around {@link queryZeroOrOneRowAsync} that
|
|
640
|
-
*
|
|
641
|
-
* Returns either the single row of the query or `null`.
|
|
646
|
+
* Wrapper around {@link queryZeroOrOneRowAsync} that parses the resulting row
|
|
647
|
+
* (if any) with the given Zod schema. Returns either a single row or `null`.
|
|
642
648
|
*/
|
|
643
649
|
async queryValidatedZeroOrOneRow(query, params, model) {
|
|
644
650
|
const results = await this.queryZeroOrOneRowAsync(query, params);
|
|
@@ -651,7 +657,7 @@ class PostgresPool {
|
|
|
651
657
|
}
|
|
652
658
|
/**
|
|
653
659
|
* Wrapper around {@link queryAsync} that validates that only one column is
|
|
654
|
-
* returned and the data in it
|
|
660
|
+
* returned and parses the data in it with the given Zod schema. Returns only
|
|
655
661
|
* the single column of the query as an array.
|
|
656
662
|
*/
|
|
657
663
|
async queryValidatedSingleColumnRows(query, params, model) {
|
|
@@ -665,7 +671,7 @@ class PostgresPool {
|
|
|
665
671
|
}
|
|
666
672
|
/**
|
|
667
673
|
* Wrapper around {@link queryOneRowAsync} that validates that only one column
|
|
668
|
-
* is returned and the data in it
|
|
674
|
+
* is returned and parses the data in it with the given Zod schema. Returns
|
|
669
675
|
* only the single entry.
|
|
670
676
|
*/
|
|
671
677
|
async queryValidatedSingleColumnOneRow(query, params, model) {
|
|
@@ -678,8 +684,8 @@ class PostgresPool {
|
|
|
678
684
|
}
|
|
679
685
|
/**
|
|
680
686
|
* Wrapper around {@link queryZeroOrOneRowAsync} that validates that only one
|
|
681
|
-
* column is returned and the data in it
|
|
682
|
-
*
|
|
687
|
+
* column is returned and parses the data in it (if any) with the given Zod
|
|
688
|
+
* schema. Returns either the single row of the query or `null`.
|
|
683
689
|
*/
|
|
684
690
|
async queryValidatedSingleColumnZeroOrOneRow(query, params, model) {
|
|
685
691
|
const results = await this.queryZeroOrOneRowAsync(query, params);
|
|
@@ -695,25 +701,24 @@ class PostgresPool {
|
|
|
695
701
|
}
|
|
696
702
|
}
|
|
697
703
|
/**
|
|
698
|
-
* Wrapper around {@link callAsync} that
|
|
699
|
-
*
|
|
704
|
+
* Wrapper around {@link callAsync} that parses the resulting rows with the
|
|
705
|
+
* given Zod schema. Returns only the rows.
|
|
700
706
|
*/
|
|
701
707
|
async callValidatedRows(sprocName, params, model) {
|
|
702
708
|
const results = await this.callAsync(sprocName, params);
|
|
703
709
|
return zod_1.z.array(model).parse(results.rows);
|
|
704
710
|
}
|
|
705
711
|
/**
|
|
706
|
-
* Wrapper around {@link callOneRowAsync} that
|
|
707
|
-
*
|
|
712
|
+
* Wrapper around {@link callOneRowAsync} that parses the resulting rows with
|
|
713
|
+
* the given Zod schema. Returns only a single row.
|
|
708
714
|
*/
|
|
709
715
|
async callValidatedOneRow(sprocName, params, model) {
|
|
710
716
|
const results = await this.callOneRowAsync(sprocName, params);
|
|
711
717
|
return model.parse(results.rows[0]);
|
|
712
718
|
}
|
|
713
719
|
/**
|
|
714
|
-
* Wrapper around {@link callZeroOrOneRowAsync} that
|
|
715
|
-
*
|
|
716
|
-
* Returns at most a single row.
|
|
720
|
+
* Wrapper around {@link callZeroOrOneRowAsync} that parses the resulting row
|
|
721
|
+
* (if any) with the given Zod schema. Returns at most a single row.
|
|
717
722
|
*/
|
|
718
723
|
async callValidatedZeroOrOneRow(sprocName, params, model) {
|
|
719
724
|
const results = await this.callZeroOrOneRowAsync(sprocName, params);
|
|
@@ -724,6 +729,68 @@ class PostgresPool {
|
|
|
724
729
|
return model.parse(results.rows[0]);
|
|
725
730
|
}
|
|
726
731
|
}
|
|
732
|
+
/**
|
|
733
|
+
* Returns a {@link Cursor} for the given query. The cursor can be used to
|
|
734
|
+
* read results in batches, which is useful for large result sets.
|
|
735
|
+
*/
|
|
736
|
+
async queryCursorWithClient(client, sql, params) {
|
|
737
|
+
this._queryCount += 1;
|
|
738
|
+
debug('queryCursorWithClient()', 'sql:', debugString(sql));
|
|
739
|
+
debug('queryCursorWithClient()', 'params:', debugParams(params));
|
|
740
|
+
const { processedSql, paramsArray } = paramsToArray(sql, params);
|
|
741
|
+
lastQueryMap.set(client, processedSql);
|
|
742
|
+
return client.query(new pg_cursor_1.default(processedSql, paramsArray));
|
|
743
|
+
}
|
|
744
|
+
/**
|
|
745
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
746
|
+
* results of the query in batches, which is useful for large result sets.
|
|
747
|
+
*/
|
|
748
|
+
async queryCursor(sql, params) {
|
|
749
|
+
return this.queryValidatedCursorInternal(sql, params);
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
753
|
+
* results of the query in batches, which is useful for large result sets.
|
|
754
|
+
* Each row will be parsed by the given Zod schema.
|
|
755
|
+
*/
|
|
756
|
+
async queryValidatedCursor(sql, params, model) {
|
|
757
|
+
return this.queryValidatedCursorInternal(sql, params, model);
|
|
758
|
+
}
|
|
759
|
+
async queryValidatedCursorInternal(sql, params, model) {
|
|
760
|
+
const client = await this.getClientAsync();
|
|
761
|
+
const cursor = await this.queryCursorWithClient(client, sql, params);
|
|
762
|
+
let iterateCalled = false;
|
|
763
|
+
return {
|
|
764
|
+
iterate: async function* (batchSize) {
|
|
765
|
+
// Safety check: if someone calls iterate multiple times, they're
|
|
766
|
+
// definitely doing something wrong.
|
|
767
|
+
if (iterateCalled) {
|
|
768
|
+
throw new Error('iterate() called multiple times');
|
|
769
|
+
}
|
|
770
|
+
iterateCalled = true;
|
|
771
|
+
try {
|
|
772
|
+
while (true) {
|
|
773
|
+
const rows = await cursor.read(batchSize);
|
|
774
|
+
if (rows.length === 0) {
|
|
775
|
+
break;
|
|
776
|
+
}
|
|
777
|
+
if (model) {
|
|
778
|
+
yield zod_1.z.array(model).parse(rows);
|
|
779
|
+
}
|
|
780
|
+
else {
|
|
781
|
+
yield rows;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
catch (err) {
|
|
786
|
+
throw enhanceError(err, sql, params);
|
|
787
|
+
}
|
|
788
|
+
finally {
|
|
789
|
+
client.release();
|
|
790
|
+
}
|
|
791
|
+
},
|
|
792
|
+
};
|
|
793
|
+
}
|
|
727
794
|
/**
|
|
728
795
|
* Set the schema to use for the search path.
|
|
729
796
|
*
|
package/dist/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,4CAAqC;AACrC,0DAA6B;AAC7B,kDAAiC;AACjC,yCAAwC;AACxC,uDAAqD;AACrD,6BAAwB;AAIxB,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,aAAa,GAAG,mBAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,MAAM,YAAY,GAAmC,IAAI,OAAO,EAAE,CAAC;AACnE,MAAM,eAAe,GAAmC,IAAI,OAAO,EAAE,CAAC;AAEtE,SAAS,cAAc,CAAC,GAAU,EAAE,IAAyB;IAC1D,GAAW,CAAC,IAAI,GAAG;QAClB,GAAG,CAAE,GAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,GAAG,IAAI;KACR,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAa,aAAc,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,IAAyB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AARD,sCAQC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,cAAc,CAAC;IAC1C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE;QAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAClB,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,CAAC,CAAC;IACN,IAAI;QACF,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAC5B;IAAC,OAAO,GAAG,EAAE;QACZ,CAAC,GAAG,uBAAuB,CAAC;KAC7B;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,MAAc;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,OAAO;YACL,YAAY,EAAE,GAAG;YACjB,WAAW,EAAE,MAAM;SACpB,CAAC;KACH;IACD,IAAI,CAAC,gBAAC,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAE/E,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAChC,IAAI,MAAM,CAAC;IACX,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAG,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,WAAW,GAAU,EAAE,CAAC;IAC5B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,IAAA,gBAAC,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClB,IAAI,CAAC,IAAA,gBAAC,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,gBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxB,GAAG,CAAC,CAAC,CAAC;oBACJ,QAAQ;wBACR,gBAAC,CAAC,GAAG,CAAC,gBAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;4BACrE,OAAO,GAAG,GAAG,CAAC,CAAC;wBACjB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBACZ,GAAG,CAAC;gBACN,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5B,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C;iBAAM;gBACL,OAAO,EAAE,CAAC;gBACV,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7B;SACF;QACD,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KACxE;IACD,YAAY,IAAI,YAAY,CAAC;IAC7B,YAAY,GAAG,EAAE,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,sEAAsE;IACtE,mDAAmD;IACnD,sDAAsD;IACtD,6DAA6D;IAC7D,OAAO,YAAE,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,MAAa,YAAY;IAAzB;QACE,oDAAoD;QAC5C,SAAI,GAAmB,IAAI,CAAC;QACpC;;;;;WAKG;QACK,cAAS,GAAqC,IAAI,oCAAiB,EAAE,CAAC;QACtE,iBAAY,GAAkB,IAAI,CAAC;QAC3C,gEAAgE;QACxD,gBAAW,GAAG,CAAC,CAAC;QAmDxB;;WAEG;QACH,SAAI,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAWnC;;WAEG;QACH,UAAK,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QA2FrC;;WAEG;QACH,oBAAe,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAyBzD;;;WAGG;QACH,0BAAqB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAyBrE;;;WAGG;QACH,gCAA2B,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QA6IjF;;WAEG;QACH,UAAK,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAoBrC;;;WAGG;QACH,gBAAW,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAoBjD;;;WAGG;QACH,sBAAiB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAe7D;;WAEG;QACH,SAAI,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAoBnC;;;WAGG;QACH,eAAU,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAoB/C;;;WAGG;QACH,qBAAgB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAmB3D;;WAEG;QACH,mBAAc,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAwBvD;;;WAGG;QACH,yBAAoB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAwBnE;;;WAGG;QACH,+BAA0B,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAuM/E;;WAEG;QACH,0BAAqB,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAqBvE,CAAC;IAzwBC;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,QAAuB,EACvB,gBAA+D;QAE/D,IAAI,CAAC,IAAI,GAAG,IAAI,YAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,MAAM;YACzC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3C,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzB,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAChC,sEAAsE;YACtE,oEAAoE;YACpE,oEAAoE;YACpE,yEAAyE;YACzE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,wCAAwC;QACxC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,UAAU,IAAI,aAAa,CAAC,MAAM,EAAE;YACzC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO;aACR;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,UAAU,KAAK,aAAa,CAAC,MAAM,EAAE;oBACvC,MAAM,IAAI,KAAK,CACb,uCAAuC,aAAa,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,CACvF,CAAC;iBACH;gBAED,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1C,UAAU,EAAE,CAAC;gBACb,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;aAC9D;SACF;IACH,CAAC;IAOD;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAOD;;;;;;;;OAQG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,wEAAwE;QACxE,sBAAsB;QACtB,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtE,yEAAyE;QACzE,sEAAsE;QACtE,sEAAsE;QACtE,wEAAwE;QACxE,8BAA8B;QAC9B,EAAE;QACF,8DAA8D;QAC9D,kEAAkE;QAClE,wEAAwE;QACxE,mEAAmE;QACnE,qEAAqE;QACrE,gDAAgD;QAChD,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,kEAAkE;QAClE,yEAAyE;QACzE,+CAA+C;QAC/C,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,kBAAkB,KAAK,IAAI,CAAC,YAAY,EAAE;YACzE,MAAM,gBAAgB,GAAG,sBAAsB,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YAC5F,IAAI;gBACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;aAC/D;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,GAAG,CAAC;aACX;YACD,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAChD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAkF;QAC1F,IAAI,CAAC,cAAc,EAAE;aAClB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aACxD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CACxB,MAAqB,EACrB,GAAW,EACX,MAAc;QAEd,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,mBAAmB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI;YACF,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC7D,KAAK,CAAC,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjE,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,GAAQ,EAAE;YACjB,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC/B,MAAM,cAAc,CAAC,GAAG,EAAE;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,GAAG;gBACR,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;IACH,CAAC;IAOD;;;OAGG;IACH,KAAK,CAAC,0BAA0B,CAC9B,MAAqB,EACrB,GAAW,EACX,MAAc;QAEd,KAAK,CAAC,yBAAyB,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,yBAAyB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,uBAAuB,MAAM,CAAC,QAAQ,EAAE,EAAE;gBAChE,GAAG;gBACH,SAAS,EAAE,MAAM;gBACjB,MAAM;aACP,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,iCAAiC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;;OAGG;IACH,KAAK,CAAC,gCAAgC,CACpC,MAAqB,EACrB,GAAW,EACX,MAAc;QAEd,KAAK,CAAC,+BAA+B,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,KAAK,CAAC,+BAA+B,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,aAAa,CAAC,uBAAuB,MAAM,CAAC,QAAQ,EAAE,EAAE;gBAChE,GAAG;gBACH,SAAS,EAAE,MAAM;gBACjB,MAAM;aACP,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,uCAAuC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,MAAqB;QACjD,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9B,uDAAuD;QACvD,IAAI;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,sEAAsE;YACtE,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE;gBAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;SACF;QAAC,OAAO,GAAQ,EAAE;YACjB,8DAA8D;YAC9D,qEAAqE;YACrE,qEAAqE;YACrE,qEAAqE;YACrE,yBAAyB;YACzB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,MAAqB,EACrB,KAA8B,EAC9B,QAAqC;QAErC,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1B,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB;QACzB,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAClE,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CAAC,MAAqB,EAAE,GAA6B;QAC5E,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI;gBACF,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC5C;YAAC,OAAO,WAAgB,EAAE;gBACzB,MAAM,cAAc,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;aACvE;YAED,qEAAqE;YACrE,2EAA2E;YAC3E,4EAA4E;YAC5E,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;SACpD;aAAM;YACL,IAAI;gBACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvD;oBAAS;gBACR,0EAA0E;gBAC1E,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE;oBAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;iBAClB;aACF;SACF;IACH,CAAC;IAED;;;OAGG;IACH,cAAc,CACZ,MAAqB,EACrB,KAA+B,EAC/B,GAA6B,EAC7B,QAAuC;QAEvC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC;aAClC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,qBAAqB,CAAI,EAAyC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClD,IAAI,MAAS,CAAC;QACd,IAAI;YACF,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;SAC7D;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC;SACX;QAED,yEAAyE;QACzE,wEAAwE;QACxE,iDAAiD;QACjD,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,MAAc;QAC1C,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;SAC7D;gBAAS;YACR,qDAAqD;YACrD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,SAAS,EAAE;gBAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;SACF;IACH,CAAC;IAOD;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAc;QAChD,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,uBAAuB,MAAM,CAAC,QAAQ,EAAE,EAAE;gBAChE,GAAG;gBACH,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAAC,GAAW,EAAE,MAAc;QACtD,KAAK,CAAC,qBAAqB,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,qBAAqB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,aAAa,CAAC,uBAAuB,MAAM,CAAC,QAAQ,EAAE,EAAE;gBAChE,GAAG;gBACH,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,6BAA6B,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,YAAoB,EAAE,MAAa;QACjD,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3C,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,gBAAC,CAAC,GAAG,CAAC,gBAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,MAAM,GAAG,GAAG,iBAAiB,gBAAgB,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,CAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,MAAa;QACvD,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACjD,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE;gBAChE,YAAY;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAAoB,EAAE,MAAa;QAC7D,KAAK,CAAC,oBAAoB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACvD,KAAK,CAAC,oBAAoB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,aAAa,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE;gBAChE,YAAY;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,4BAA4B,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,MAAqB,EACrB,YAAoB,EACpB,MAAa;QAEb,KAAK,CAAC,kBAAkB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACrD,KAAK,CAAC,kBAAkB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,gBAAC,CAAC,GAAG,CAAC,gBAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjF,MAAM,GAAG,GAAG,iBAAiB,gBAAgB,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACpE,KAAK,CAAC,0BAA0B,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD;;;OAGG;IACH,KAAK,CAAC,yBAAyB,CAC7B,MAAqB,EACrB,YAAoB,EACpB,MAAa;QAEb,KAAK,CAAC,wBAAwB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3D,KAAK,CAAC,wBAAwB,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE;gBAChE,YAAY;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,gCAAgC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;;OAGG;IACH,KAAK,CAAC,+BAA+B,CACnC,MAAqB,EACrB,YAAoB,EACpB,MAAa;QAEb,KAAK,CAAC,8BAA8B,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACjE,KAAK,CAAC,8BAA8B,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,aAAa,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE;gBAChE,YAAY;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;SACJ;QACD,KAAK,CAAC,sCAAsC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC;IAChB,CAAC;IAQD;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,OAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,0BAA0B,CAC9B,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,8BAA8B,CAClC,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SACtE;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,OAAO,OAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gCAAgC,CACpC,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SACtE;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,sCAAsC,CAC1C,KAAa,EACb,MAA2B,EAC3B,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SACtE;QACD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;SACjD;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CACrB,SAAiB,EACjB,MAAa,EACb,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,OAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,MAAa,EACb,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,yBAAyB,CAC7B,SAAiB,EACjB,MAAa,EACb,KAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC3B,OAAO;SACR;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,+BAA+B,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACrF,4FAA4F;QAC5F,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,0BAA0B,CAAC,MAAc;QAC7C,uCAAuC;QACvC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,oGAAoG;QACpG,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,gFAAgF;QAChF,MAAM,KAAK,GAAG,sCAAsC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,gBAAC,CAAC,KAAK,CAAC,CAAC,EAAE;YACxB,OAAO,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,0EAA0E;QAC1E,oDAAoD;QACpD,wFAAwF;QACxF,MAAM,MAAM,GAAG,GAAG,WAAW,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACvD,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAOD,6CAA6C;IAC7C,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,sCAAsC;IACtC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,0EAA0E;IAC1E,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,wEAAwE;IACxE,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAvxBD,oCAuxBC"}
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prairielearn/postgres",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc",
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@types/debug": "^4.1.7",
|
|
20
20
|
"@types/lodash": "^4.14.191",
|
|
21
|
+
"@types/pg-cursor": "^2.7.0",
|
|
22
|
+
"pg": "^8.10.0",
|
|
23
|
+
"pg-cursor": "^2.9.0",
|
|
24
|
+
"pg-pool": "^3.6.0",
|
|
21
25
|
"zod": "^3.20.6"
|
|
22
26
|
}
|
|
23
27
|
}
|
package/src/default-pool.test.ts
CHANGED
package/src/default-pool.ts
CHANGED
|
@@ -62,6 +62,9 @@ export const queryValidatedSingleColumnZeroOrOneRow =
|
|
|
62
62
|
export const callValidatedRows = defaultPool.callValidatedRows.bind(defaultPool);
|
|
63
63
|
export const callValidatedOneRow = defaultPool.callValidatedOneRow.bind(defaultPool);
|
|
64
64
|
export const callValidatedZeroOrOneRow = defaultPool.callValidatedZeroOrOneRow.bind(defaultPool);
|
|
65
|
+
export const queryCursorWithClient = defaultPool.queryCursorWithClient.bind(defaultPool);
|
|
66
|
+
export const queryCursor = defaultPool.queryCursor.bind(defaultPool);
|
|
67
|
+
export const queryValidatedCursor = defaultPool.queryValidatedCursor.bind(defaultPool);
|
|
65
68
|
export const setSearchSchema = defaultPool.setSearchSchema.bind(defaultPool);
|
|
66
69
|
export const getSearchSchema = defaultPool.getSearchSchema.bind(defaultPool);
|
|
67
70
|
export const setRandomSearchSchema = defaultPool.setRandomSearchSchema.bind(defaultPool);
|
package/src/index.ts
CHANGED
package/src/pool.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import pg, { QueryResult } from 'pg';
|
|
3
|
+
import Cursor from 'pg-cursor';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import debugFactory from 'debug';
|
|
5
6
|
import { callbackify } from 'node:util';
|
|
6
7
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
7
8
|
import { z } from 'zod';
|
|
8
9
|
|
|
9
|
-
type
|
|
10
|
+
export type QueryParams = Record<string, any> | any[];
|
|
11
|
+
|
|
12
|
+
export interface CursorIterator<T> {
|
|
13
|
+
iterate: (batchSize: number) => AsyncGenerator<T[]>;
|
|
14
|
+
}
|
|
10
15
|
|
|
11
16
|
const debug = debugFactory('prairielib:' + path.basename(__filename, '.js'));
|
|
12
17
|
const lastQueryMap: WeakMap<pg.PoolClient, string> = new WeakMap();
|
|
@@ -44,7 +49,7 @@ function debugString(s: string): string {
|
|
|
44
49
|
/**
|
|
45
50
|
* Formats a set of params for debugging.
|
|
46
51
|
*/
|
|
47
|
-
function debugParams(params:
|
|
52
|
+
function debugParams(params: QueryParams): string {
|
|
48
53
|
let s;
|
|
49
54
|
try {
|
|
50
55
|
s = JSON.stringify(params);
|
|
@@ -58,7 +63,10 @@ function debugParams(params: Params): string {
|
|
|
58
63
|
* Given an SQL string and params, creates an array of params and an SQL string
|
|
59
64
|
* with any named dollar-sign placeholders replaced with parameters.
|
|
60
65
|
*/
|
|
61
|
-
function paramsToArray(
|
|
66
|
+
function paramsToArray(
|
|
67
|
+
sql: string,
|
|
68
|
+
params: QueryParams
|
|
69
|
+
): { processedSql: string; paramsArray: any } {
|
|
62
70
|
if (typeof sql !== 'string') throw new Error('SQL must be a string');
|
|
63
71
|
if (Array.isArray(params)) {
|
|
64
72
|
return {
|
|
@@ -114,6 +122,22 @@ function escapeIdentifier(identifier: string): string {
|
|
|
114
122
|
return pg.Client.prototype.escapeIdentifier(identifier);
|
|
115
123
|
}
|
|
116
124
|
|
|
125
|
+
function enhanceError(err: Error, sql: string, params: QueryParams): Error {
|
|
126
|
+
// Copy the error so we don't end up with a circular reference in the
|
|
127
|
+
// final error.
|
|
128
|
+
const sqlError = { ...err };
|
|
129
|
+
|
|
130
|
+
// `message` is a non-enumerable property, so we need to copy it manually to
|
|
131
|
+
// the error object.
|
|
132
|
+
sqlError.message = err.message;
|
|
133
|
+
|
|
134
|
+
return addDataToError(err, {
|
|
135
|
+
sqlError: sqlError,
|
|
136
|
+
sql: sql,
|
|
137
|
+
sqlParams: params,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
117
141
|
export class PostgresPool {
|
|
118
142
|
/** The pool from which clients will be acquired. */
|
|
119
143
|
private pool: pg.Pool | null = null;
|
|
@@ -262,7 +286,7 @@ export class PostgresPool {
|
|
|
262
286
|
async queryWithClientAsync(
|
|
263
287
|
client: pg.PoolClient,
|
|
264
288
|
sql: string,
|
|
265
|
-
params:
|
|
289
|
+
params: QueryParams
|
|
266
290
|
): Promise<pg.QueryResult> {
|
|
267
291
|
this._queryCount += 1;
|
|
268
292
|
debug('queryWithClient()', 'sql:', debugString(sql));
|
|
@@ -274,14 +298,7 @@ export class PostgresPool {
|
|
|
274
298
|
debug('queryWithClient() success', 'rowCount:', result.rowCount);
|
|
275
299
|
return result;
|
|
276
300
|
} catch (err: any) {
|
|
277
|
-
|
|
278
|
-
const sqlError = JSON.parse(JSON.stringify(err));
|
|
279
|
-
sqlError.message = err.message;
|
|
280
|
-
throw addDataToError(err, {
|
|
281
|
-
sqlError: sqlError,
|
|
282
|
-
sql: sql,
|
|
283
|
-
sqlParams: params,
|
|
284
|
-
});
|
|
301
|
+
throw enhanceError(err, sql, params);
|
|
285
302
|
}
|
|
286
303
|
}
|
|
287
304
|
|
|
@@ -297,7 +314,7 @@ export class PostgresPool {
|
|
|
297
314
|
async queryWithClientOneRowAsync(
|
|
298
315
|
client: pg.PoolClient,
|
|
299
316
|
sql: string,
|
|
300
|
-
params:
|
|
317
|
+
params: QueryParams
|
|
301
318
|
): Promise<pg.QueryResult> {
|
|
302
319
|
debug('queryWithClientOneRow()', 'sql:', debugString(sql));
|
|
303
320
|
debug('queryWithClientOneRow()', 'params:', debugParams(params));
|
|
@@ -326,7 +343,7 @@ export class PostgresPool {
|
|
|
326
343
|
async queryWithClientZeroOrOneRowAsync(
|
|
327
344
|
client: pg.PoolClient,
|
|
328
345
|
sql: string,
|
|
329
|
-
params:
|
|
346
|
+
params: QueryParams
|
|
330
347
|
): Promise<QueryResult> {
|
|
331
348
|
debug('queryWithClientZeroOrOneRow()', 'sql:', debugString(sql));
|
|
332
349
|
debug('queryWithClientZeroOrOneRow()', 'params:', debugParams(params));
|
|
@@ -473,7 +490,7 @@ export class PostgresPool {
|
|
|
473
490
|
/**
|
|
474
491
|
* Executes a query with the specified parameters.
|
|
475
492
|
*/
|
|
476
|
-
async queryAsync(sql: string, params:
|
|
493
|
+
async queryAsync(sql: string, params: QueryParams): Promise<QueryResult> {
|
|
477
494
|
debug('query()', 'sql:', debugString(sql));
|
|
478
495
|
debug('query()', 'params:', debugParams(params));
|
|
479
496
|
const client = await this.getClientAsync();
|
|
@@ -496,7 +513,7 @@ export class PostgresPool {
|
|
|
496
513
|
* Executes a query with the specified parameters. Errors if the query does
|
|
497
514
|
* not return exactly one row.
|
|
498
515
|
*/
|
|
499
|
-
async queryOneRowAsync(sql: string, params:
|
|
516
|
+
async queryOneRowAsync(sql: string, params: QueryParams): Promise<pg.QueryResult> {
|
|
500
517
|
debug('queryOneRow()', 'sql:', debugString(sql));
|
|
501
518
|
debug('queryOneRow()', 'params:', debugParams(params));
|
|
502
519
|
const result = await this.queryAsync(sql, params);
|
|
@@ -520,7 +537,7 @@ export class PostgresPool {
|
|
|
520
537
|
* Executes a query with the specified parameters. Errors if the query
|
|
521
538
|
* returns more than one row.
|
|
522
539
|
*/
|
|
523
|
-
async queryZeroOrOneRowAsync(sql: string, params:
|
|
540
|
+
async queryZeroOrOneRowAsync(sql: string, params: QueryParams): Promise<pg.QueryResult> {
|
|
524
541
|
debug('queryZeroOrOneRow()', 'sql:', debugString(sql));
|
|
525
542
|
debug('queryZeroOrOneRow()', 'params:', debugParams(params));
|
|
526
543
|
const result = await this.queryAsync(sql, params);
|
|
@@ -685,12 +702,12 @@ export class PostgresPool {
|
|
|
685
702
|
callWithClientZeroOrOneRow = callbackify(this.callWithClientZeroOrOneRowAsync);
|
|
686
703
|
|
|
687
704
|
/**
|
|
688
|
-
* Wrapper around {@link queryAsync} that
|
|
689
|
-
*
|
|
705
|
+
* Wrapper around {@link queryAsync} that parses the resulting rows with the
|
|
706
|
+
* given Zod schema. Returns only the rows of the query.
|
|
690
707
|
*/
|
|
691
708
|
async queryValidatedRows<Model extends z.ZodTypeAny>(
|
|
692
709
|
query: string,
|
|
693
|
-
params:
|
|
710
|
+
params: QueryParams,
|
|
694
711
|
model: Model
|
|
695
712
|
): Promise<z.infer<Model>[]> {
|
|
696
713
|
const results = await this.queryAsync(query, params);
|
|
@@ -698,12 +715,12 @@ export class PostgresPool {
|
|
|
698
715
|
}
|
|
699
716
|
|
|
700
717
|
/**
|
|
701
|
-
* Wrapper around {@link queryOneRowAsync} that
|
|
702
|
-
*
|
|
718
|
+
* Wrapper around {@link queryOneRowAsync} that parses the resulting row with
|
|
719
|
+
* the given Zod schema. Returns only a single row of the query.
|
|
703
720
|
*/
|
|
704
721
|
async queryValidatedOneRow<Model extends z.ZodTypeAny>(
|
|
705
722
|
query: string,
|
|
706
|
-
params:
|
|
723
|
+
params: QueryParams,
|
|
707
724
|
model: Model
|
|
708
725
|
): Promise<z.infer<Model>> {
|
|
709
726
|
const results = await this.queryOneRowAsync(query, params);
|
|
@@ -711,13 +728,12 @@ export class PostgresPool {
|
|
|
711
728
|
}
|
|
712
729
|
|
|
713
730
|
/**
|
|
714
|
-
* Wrapper around {@link queryZeroOrOneRowAsync} that
|
|
715
|
-
*
|
|
716
|
-
* Returns either the single row of the query or `null`.
|
|
731
|
+
* Wrapper around {@link queryZeroOrOneRowAsync} that parses the resulting row
|
|
732
|
+
* (if any) with the given Zod schema. Returns either a single row or `null`.
|
|
717
733
|
*/
|
|
718
734
|
async queryValidatedZeroOrOneRow<Model extends z.ZodTypeAny>(
|
|
719
735
|
query: string,
|
|
720
|
-
params:
|
|
736
|
+
params: QueryParams,
|
|
721
737
|
model: Model
|
|
722
738
|
): Promise<z.infer<Model> | null> {
|
|
723
739
|
const results = await this.queryZeroOrOneRowAsync(query, params);
|
|
@@ -730,12 +746,12 @@ export class PostgresPool {
|
|
|
730
746
|
|
|
731
747
|
/**
|
|
732
748
|
* Wrapper around {@link queryAsync} that validates that only one column is
|
|
733
|
-
* returned and the data in it
|
|
749
|
+
* returned and parses the data in it with the given Zod schema. Returns only
|
|
734
750
|
* the single column of the query as an array.
|
|
735
751
|
*/
|
|
736
752
|
async queryValidatedSingleColumnRows<Model extends z.ZodTypeAny>(
|
|
737
753
|
query: string,
|
|
738
|
-
params:
|
|
754
|
+
params: QueryParams,
|
|
739
755
|
model: Model
|
|
740
756
|
): Promise<z.infer<Model>[]> {
|
|
741
757
|
const results = await this.queryAsync(query, params);
|
|
@@ -749,12 +765,12 @@ export class PostgresPool {
|
|
|
749
765
|
|
|
750
766
|
/**
|
|
751
767
|
* Wrapper around {@link queryOneRowAsync} that validates that only one column
|
|
752
|
-
* is returned and the data in it
|
|
768
|
+
* is returned and parses the data in it with the given Zod schema. Returns
|
|
753
769
|
* only the single entry.
|
|
754
770
|
*/
|
|
755
771
|
async queryValidatedSingleColumnOneRow<Model extends z.ZodTypeAny>(
|
|
756
772
|
query: string,
|
|
757
|
-
params:
|
|
773
|
+
params: QueryParams,
|
|
758
774
|
model: Model
|
|
759
775
|
): Promise<z.infer<Model>> {
|
|
760
776
|
const results = await this.queryOneRowAsync(query, params);
|
|
@@ -767,12 +783,12 @@ export class PostgresPool {
|
|
|
767
783
|
|
|
768
784
|
/**
|
|
769
785
|
* Wrapper around {@link queryZeroOrOneRowAsync} that validates that only one
|
|
770
|
-
* column is returned and the data in it
|
|
771
|
-
*
|
|
786
|
+
* column is returned and parses the data in it (if any) with the given Zod
|
|
787
|
+
* schema. Returns either the single row of the query or `null`.
|
|
772
788
|
*/
|
|
773
789
|
async queryValidatedSingleColumnZeroOrOneRow<Model extends z.ZodTypeAny>(
|
|
774
790
|
query: string,
|
|
775
|
-
params:
|
|
791
|
+
params: QueryParams,
|
|
776
792
|
model: Model
|
|
777
793
|
): Promise<z.infer<Model> | null> {
|
|
778
794
|
const results = await this.queryZeroOrOneRowAsync(query, params);
|
|
@@ -788,8 +804,8 @@ export class PostgresPool {
|
|
|
788
804
|
}
|
|
789
805
|
|
|
790
806
|
/**
|
|
791
|
-
* Wrapper around {@link callAsync} that
|
|
792
|
-
*
|
|
807
|
+
* Wrapper around {@link callAsync} that parses the resulting rows with the
|
|
808
|
+
* given Zod schema. Returns only the rows.
|
|
793
809
|
*/
|
|
794
810
|
async callValidatedRows<Model extends z.ZodTypeAny>(
|
|
795
811
|
sprocName: string,
|
|
@@ -801,8 +817,8 @@ export class PostgresPool {
|
|
|
801
817
|
}
|
|
802
818
|
|
|
803
819
|
/**
|
|
804
|
-
* Wrapper around {@link callOneRowAsync} that
|
|
805
|
-
*
|
|
820
|
+
* Wrapper around {@link callOneRowAsync} that parses the resulting rows with
|
|
821
|
+
* the given Zod schema. Returns only a single row.
|
|
806
822
|
*/
|
|
807
823
|
async callValidatedOneRow<Model extends z.ZodTypeAny>(
|
|
808
824
|
sprocName: string,
|
|
@@ -814,9 +830,8 @@ export class PostgresPool {
|
|
|
814
830
|
}
|
|
815
831
|
|
|
816
832
|
/**
|
|
817
|
-
* Wrapper around {@link callZeroOrOneRowAsync} that
|
|
818
|
-
*
|
|
819
|
-
* Returns at most a single row.
|
|
833
|
+
* Wrapper around {@link callZeroOrOneRowAsync} that parses the resulting row
|
|
834
|
+
* (if any) with the given Zod schema. Returns at most a single row.
|
|
820
835
|
*/
|
|
821
836
|
async callValidatedZeroOrOneRow<Model extends z.ZodTypeAny>(
|
|
822
837
|
sprocName: string,
|
|
@@ -831,6 +846,87 @@ export class PostgresPool {
|
|
|
831
846
|
}
|
|
832
847
|
}
|
|
833
848
|
|
|
849
|
+
/**
|
|
850
|
+
* Returns a {@link Cursor} for the given query. The cursor can be used to
|
|
851
|
+
* read results in batches, which is useful for large result sets.
|
|
852
|
+
*/
|
|
853
|
+
async queryCursorWithClient(
|
|
854
|
+
client: pg.PoolClient,
|
|
855
|
+
sql: string,
|
|
856
|
+
params: QueryParams
|
|
857
|
+
): Promise<Cursor> {
|
|
858
|
+
this._queryCount += 1;
|
|
859
|
+
debug('queryCursorWithClient()', 'sql:', debugString(sql));
|
|
860
|
+
debug('queryCursorWithClient()', 'params:', debugParams(params));
|
|
861
|
+
const { processedSql, paramsArray } = paramsToArray(sql, params);
|
|
862
|
+
lastQueryMap.set(client, processedSql);
|
|
863
|
+
return client.query(new Cursor(processedSql, paramsArray));
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
868
|
+
* results of the query in batches, which is useful for large result sets.
|
|
869
|
+
*/
|
|
870
|
+
async queryCursor<Model extends z.ZodTypeAny>(
|
|
871
|
+
sql: string,
|
|
872
|
+
params: QueryParams
|
|
873
|
+
): Promise<CursorIterator<z.infer<Model>>> {
|
|
874
|
+
return this.queryValidatedCursorInternal(sql, params);
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* Returns an {@link CursorIterator} that can be used to iterate over the
|
|
879
|
+
* results of the query in batches, which is useful for large result sets.
|
|
880
|
+
* Each row will be parsed by the given Zod schema.
|
|
881
|
+
*/
|
|
882
|
+
async queryValidatedCursor<Model extends z.ZodTypeAny>(
|
|
883
|
+
sql: string,
|
|
884
|
+
params: QueryParams,
|
|
885
|
+
model: Model
|
|
886
|
+
): Promise<CursorIterator<z.infer<Model>>> {
|
|
887
|
+
return this.queryValidatedCursorInternal(sql, params, model);
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
private async queryValidatedCursorInternal<Model extends z.ZodTypeAny>(
|
|
891
|
+
sql: string,
|
|
892
|
+
params: QueryParams,
|
|
893
|
+
model?: Model
|
|
894
|
+
): Promise<CursorIterator<z.infer<Model>>> {
|
|
895
|
+
const client = await this.getClientAsync();
|
|
896
|
+
const cursor = await this.queryCursorWithClient(client, sql, params);
|
|
897
|
+
|
|
898
|
+
let iterateCalled = false;
|
|
899
|
+
return {
|
|
900
|
+
iterate: async function* (batchSize: number) {
|
|
901
|
+
// Safety check: if someone calls iterate multiple times, they're
|
|
902
|
+
// definitely doing something wrong.
|
|
903
|
+
if (iterateCalled) {
|
|
904
|
+
throw new Error('iterate() called multiple times');
|
|
905
|
+
}
|
|
906
|
+
iterateCalled = true;
|
|
907
|
+
|
|
908
|
+
try {
|
|
909
|
+
while (true) {
|
|
910
|
+
const rows = await cursor.read(batchSize);
|
|
911
|
+
if (rows.length === 0) {
|
|
912
|
+
break;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
if (model) {
|
|
916
|
+
yield z.array(model).parse(rows);
|
|
917
|
+
} else {
|
|
918
|
+
yield rows;
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
} catch (err: any) {
|
|
922
|
+
throw enhanceError(err, sql, params);
|
|
923
|
+
} finally {
|
|
924
|
+
client.release();
|
|
925
|
+
}
|
|
926
|
+
},
|
|
927
|
+
};
|
|
928
|
+
}
|
|
929
|
+
|
|
834
930
|
/**
|
|
835
931
|
* Set the schema to use for the search path.
|
|
836
932
|
*
|