@prairielearn/postgres 1.9.3 → 2.0.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/dist/pool.test.js CHANGED
@@ -1,119 +1,114 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = __importDefault(require("chai"));
7
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
8
- const node_stream_1 = require("node:stream");
9
- const promises_1 = require("node:stream/promises");
10
- const zod_1 = require("zod");
11
- const default_pool_1 = require("./default-pool");
12
- const test_utils_1 = require("./test-utils");
13
- chai_1.default.use(chai_as_promised_1.default);
14
- const { assert } = chai_1.default;
15
- const postgresTestUtils = (0, test_utils_1.makePostgresTestUtils)({
1
+ import chai from 'chai';
2
+ import chaiAsPromised from 'chai-as-promised';
3
+ import { Writable } from 'node:stream';
4
+ import { pipeline } from 'node:stream/promises';
5
+ import { z, ZodError } from 'zod';
6
+ import { queryAsync, queryRows, queryRow, queryOptionalRow, callRows, callRow, callOptionalRow, queryCursor, queryValidatedCursor, } from './default-pool.js';
7
+ import { makePostgresTestUtils } from './test-utils.js';
8
+ chai.use(chaiAsPromised);
9
+ const { assert } = chai;
10
+ const postgresTestUtils = makePostgresTestUtils({
16
11
  database: 'prairielearn_postgres',
17
12
  });
18
- const WorkspaceSchema = zod_1.z.object({
19
- id: zod_1.z.string(),
20
- created_at: zod_1.z.date(),
13
+ const WorkspaceSchema = z.object({
14
+ id: z.string(),
15
+ created_at: z.date(),
21
16
  });
22
- const SprocTwoColumnsSchema = zod_1.z.object({
23
- id: zod_1.z.string(),
24
- negative: zod_1.z.number(),
17
+ const SprocTwoColumnsSchema = z.object({
18
+ id: z.string(),
19
+ negative: z.number(),
25
20
  });
26
21
  describe('@prairielearn/postgres', function () {
27
22
  before(async () => {
28
23
  await postgresTestUtils.createDatabase();
29
- await (0, default_pool_1.queryAsync)('CREATE TABLE workspaces (id BIGSERIAL PRIMARY KEY, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP);', {});
30
- await (0, default_pool_1.queryAsync)('INSERT INTO workspaces (id) SELECT s FROM generate_series(1, 100) AS s', {});
31
- await (0, default_pool_1.queryAsync)('CREATE FUNCTION test_sproc_one_column(num_entries INT) RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;', {});
32
- await (0, default_pool_1.queryAsync)('CREATE FUNCTION test_sproc_two_columns(num_entries INT) RETURNS TABLE (id BIGINT, negative INT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id, -s AS negative FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;', {});
33
- await (0, default_pool_1.queryAsync)('CREATE FUNCTION test_sproc_one_column_ten_rows() RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, 10) AS s; END; $$ LANGUAGE plpgsql;', {});
34
- await (0, default_pool_1.queryAsync)('CREATE FUNCTION test_sproc_one_column_one_row(OUT id BIGINT) AS $$ BEGIN id = 1; END; $$ LANGUAGE plpgsql;', {});
24
+ await queryAsync('CREATE TABLE workspaces (id BIGSERIAL PRIMARY KEY, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP);', {});
25
+ await queryAsync('INSERT INTO workspaces (id) SELECT s FROM generate_series(1, 100) AS s', {});
26
+ await queryAsync('CREATE FUNCTION test_sproc_one_column(num_entries INT) RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;', {});
27
+ await queryAsync('CREATE FUNCTION test_sproc_two_columns(num_entries INT) RETURNS TABLE (id BIGINT, negative INT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id, -s AS negative FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;', {});
28
+ await queryAsync('CREATE FUNCTION test_sproc_one_column_ten_rows() RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, 10) AS s; END; $$ LANGUAGE plpgsql;', {});
29
+ await queryAsync('CREATE FUNCTION test_sproc_one_column_one_row(OUT id BIGINT) AS $$ BEGIN id = 1; END; $$ LANGUAGE plpgsql;', {});
35
30
  });
36
31
  after(async () => {
37
32
  await postgresTestUtils.dropDatabase();
38
33
  });
39
34
  describe('queryRows', () => {
40
35
  it('handles single column', async () => {
41
- const rows = await (0, default_pool_1.queryRows)('SELECT id FROM workspaces WHERE id <= 10;', zod_1.z.string());
36
+ const rows = await queryRows('SELECT id FROM workspaces WHERE id <= 10;', z.string());
42
37
  assert.lengthOf(rows, 10);
43
38
  assert.equal(rows[0], '1');
44
39
  });
45
40
  it('handles multiple columns', async () => {
46
- const rows = await (0, default_pool_1.queryRows)('SELECT * FROM workspaces WHERE id <= 10;', WorkspaceSchema);
41
+ const rows = await queryRows('SELECT * FROM workspaces WHERE id <= 10;', WorkspaceSchema);
47
42
  assert.lengthOf(rows, 10);
48
43
  assert.equal(rows[0].id, '1');
49
44
  assert.isNotNull(rows[0].created_at);
50
45
  });
51
46
  it('handles parameters', async () => {
52
- const rows = await (0, default_pool_1.queryRows)('SELECT * FROM workspaces WHERE id <= $1;', [10], WorkspaceSchema);
47
+ const rows = await queryRows('SELECT * FROM workspaces WHERE id <= $1;', [10], WorkspaceSchema);
53
48
  assert.lengthOf(rows, 10);
54
49
  });
55
50
  });
56
51
  describe('queryRow', () => {
57
52
  it('handles single column', async () => {
58
- const row = await (0, default_pool_1.queryRow)('SELECT id FROM workspaces WHERE id = 1;', zod_1.z.string());
53
+ const row = await queryRow('SELECT id FROM workspaces WHERE id = 1;', z.string());
59
54
  assert.equal(row, '1');
60
55
  });
61
56
  it('handles multiple columns', async () => {
62
- const row = await (0, default_pool_1.queryRow)('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);
57
+ const row = await queryRow('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);
63
58
  assert.equal(row.id, '1');
64
59
  assert.isNotNull(row.created_at);
65
60
  });
66
61
  it('handles parameters', async () => {
67
- const row = await (0, default_pool_1.queryRow)('SELECT * FROM workspaces WHERE id = $1;', [1], WorkspaceSchema);
62
+ const row = await queryRow('SELECT * FROM workspaces WHERE id = $1;', [1], WorkspaceSchema);
68
63
  assert.equal(row.id, '1');
69
64
  });
70
65
  it('rejects results with zero rows', async () => {
71
- const rows = (0, default_pool_1.queryRow)('SELECT * FROM workspaces WHERE id = -1;', WorkspaceSchema);
66
+ const rows = queryRow('SELECT * FROM workspaces WHERE id = -1;', WorkspaceSchema);
72
67
  await assert.isRejected(rows, 'Incorrect rowCount: 0');
73
68
  });
74
69
  it('rejects results with multiple rows', async () => {
75
- const rows = (0, default_pool_1.queryRow)('SELECT * FROM workspaces', WorkspaceSchema);
70
+ const rows = queryRow('SELECT * FROM workspaces', WorkspaceSchema);
76
71
  await assert.isRejected(rows, 'Incorrect rowCount: 100');
77
72
  });
78
73
  });
79
74
  describe('queryOptionalRow', () => {
80
75
  it('handles single column', async () => {
81
- const row = await (0, default_pool_1.queryRow)('SELECT id FROM workspaces WHERE id = 1;', zod_1.z.string());
76
+ const row = await queryRow('SELECT id FROM workspaces WHERE id = 1;', z.string());
82
77
  assert.equal(row, '1');
83
78
  });
84
79
  it('handles multiple columns', async () => {
85
- const row = await (0, default_pool_1.queryOptionalRow)('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);
80
+ const row = await queryOptionalRow('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);
86
81
  assert.isNotNull(row);
87
82
  assert.equal(row?.id, '1');
88
83
  assert.isNotNull(row?.created_at);
89
84
  });
90
85
  it('handles parameters', async () => {
91
- const row = await (0, default_pool_1.queryOptionalRow)('SELECT * FROM workspaces WHERE id = $1;', [1], WorkspaceSchema);
86
+ const row = await queryOptionalRow('SELECT * FROM workspaces WHERE id = $1;', [1], WorkspaceSchema);
92
87
  assert.isNotNull(row);
93
88
  assert.equal(row?.id, '1');
94
89
  });
95
90
  it('handles missing result', async () => {
96
- const row = await (0, default_pool_1.queryOptionalRow)('SELECT * FROM workspaces WHERE id = -1;', WorkspaceSchema);
91
+ const row = await queryOptionalRow('SELECT * FROM workspaces WHERE id = -1;', WorkspaceSchema);
97
92
  assert.isNull(row);
98
93
  });
99
94
  it('rejects with multiple rows', async () => {
100
- const rows = (0, default_pool_1.queryOptionalRow)('SELECT * FROM workspaces', WorkspaceSchema);
95
+ const rows = queryOptionalRow('SELECT * FROM workspaces', WorkspaceSchema);
101
96
  await assert.isRejected(rows, 'Incorrect rowCount: 100');
102
97
  });
103
98
  });
104
99
  describe('callRows', () => {
105
100
  it('handles single column', async () => {
106
- const rows = await (0, default_pool_1.callRows)('test_sproc_one_column_ten_rows', zod_1.z.string());
101
+ const rows = await callRows('test_sproc_one_column_ten_rows', z.string());
107
102
  assert.lengthOf(rows, 10);
108
103
  assert.equal(rows[0], '1');
109
104
  });
110
105
  it('handles parameters', async () => {
111
- const rows = await (0, default_pool_1.callRows)('test_sproc_one_column', [10], zod_1.z.string());
106
+ const rows = await callRows('test_sproc_one_column', [10], z.string());
112
107
  assert.lengthOf(rows, 10);
113
108
  assert.equal(rows[0], '1');
114
109
  });
115
110
  it('handles multiple columns', async () => {
116
- const rows = await (0, default_pool_1.callRows)('test_sproc_two_columns', [20], SprocTwoColumnsSchema);
111
+ const rows = await callRows('test_sproc_two_columns', [20], SprocTwoColumnsSchema);
117
112
  assert.lengthOf(rows, 20);
118
113
  assert.equal(rows[0].id, '1');
119
114
  assert.equal(rows[0].negative, -1);
@@ -123,54 +118,54 @@ describe('@prairielearn/postgres', function () {
123
118
  });
124
119
  describe('callRow', () => {
125
120
  it('handles single column', async () => {
126
- const row = await (0, default_pool_1.callRow)('test_sproc_one_column_one_row', zod_1.z.string());
121
+ const row = await callRow('test_sproc_one_column_one_row', z.string());
127
122
  assert.equal(row, '1');
128
123
  });
129
124
  it('handles parameters', async () => {
130
- const row = await (0, default_pool_1.callRow)('test_sproc_one_column', [1], zod_1.z.string());
125
+ const row = await callRow('test_sproc_one_column', [1], z.string());
131
126
  assert.equal(row, '1');
132
127
  });
133
128
  it('handles multiple columns', async () => {
134
- const row = await (0, default_pool_1.callRow)('test_sproc_two_columns', [1], SprocTwoColumnsSchema);
129
+ const row = await callRow('test_sproc_two_columns', [1], SprocTwoColumnsSchema);
135
130
  assert.equal(row.id, '1');
136
131
  assert.equal(row.negative, -1);
137
132
  });
138
133
  it('rejects results with zero rows', async () => {
139
- const row = (0, default_pool_1.callRow)('test_sproc_two_columns', [0], SprocTwoColumnsSchema);
134
+ const row = callRow('test_sproc_two_columns', [0], SprocTwoColumnsSchema);
140
135
  await assert.isRejected(row, 'Incorrect rowCount: 0');
141
136
  });
142
137
  it('rejects results with multiple rows', async () => {
143
- const rows = (0, default_pool_1.callRow)('test_sproc_two_columns', [100], SprocTwoColumnsSchema);
138
+ const rows = callRow('test_sproc_two_columns', [100], SprocTwoColumnsSchema);
144
139
  await assert.isRejected(rows, 'Incorrect rowCount: 100');
145
140
  });
146
141
  });
147
142
  describe('callOptionalRow', () => {
148
143
  it('handles single column', async () => {
149
- const row = await (0, default_pool_1.callOptionalRow)('test_sproc_one_column_one_row', zod_1.z.string());
144
+ const row = await callOptionalRow('test_sproc_one_column_one_row', z.string());
150
145
  assert.equal(row, '1');
151
146
  });
152
147
  it('handles parameters', async () => {
153
- const row = await (0, default_pool_1.callOptionalRow)('test_sproc_one_column', [1], zod_1.z.string());
148
+ const row = await callOptionalRow('test_sproc_one_column', [1], z.string());
154
149
  assert.equal(row, '1');
155
150
  });
156
151
  it('handles multiple columns', async () => {
157
- const row = await (0, default_pool_1.callOptionalRow)('test_sproc_two_columns', [1], SprocTwoColumnsSchema);
152
+ const row = await callOptionalRow('test_sproc_two_columns', [1], SprocTwoColumnsSchema);
158
153
  assert.isNotNull(row);
159
154
  assert.equal(row?.id, '1');
160
155
  assert.equal(row?.negative, -1);
161
156
  });
162
157
  it('handles results with zero rows', async () => {
163
- const row = await (0, default_pool_1.callOptionalRow)('test_sproc_two_columns', [0], SprocTwoColumnsSchema);
158
+ const row = await callOptionalRow('test_sproc_two_columns', [0], SprocTwoColumnsSchema);
164
159
  assert.isNull(row);
165
160
  });
166
161
  it('rejects results with multiple rows', async () => {
167
- const rows = (0, default_pool_1.callOptionalRow)('test_sproc_two_columns', [100], SprocTwoColumnsSchema);
162
+ const rows = callOptionalRow('test_sproc_two_columns', [100], SprocTwoColumnsSchema);
168
163
  await assert.isRejected(rows, 'Incorrect rowCount: 100');
169
164
  });
170
165
  });
171
166
  describe('queryCursor', () => {
172
167
  it('returns zero rows', async () => {
173
- const cursor = await (0, default_pool_1.queryCursor)('SELECT * FROM workspaces WHERE id = 10000;', {});
168
+ const cursor = await queryCursor('SELECT * FROM workspaces WHERE id = 10000;', {});
174
169
  const rowBatches = [];
175
170
  for await (const rows of cursor.iterate(10)) {
176
171
  rowBatches.push(rows);
@@ -178,7 +173,7 @@ describe('@prairielearn/postgres', function () {
178
173
  assert.lengthOf(rowBatches, 0);
179
174
  });
180
175
  it('returns one row at a time', async () => {
181
- const cursor = await (0, default_pool_1.queryCursor)('SELECT * FROM workspaces WHERE id <= 2;', {});
176
+ const cursor = await queryCursor('SELECT * FROM workspaces WHERE id <= 2;', {});
182
177
  const rowBatches = [];
183
178
  for await (const rows of cursor.iterate(1)) {
184
179
  rowBatches.push(rows);
@@ -188,7 +183,7 @@ describe('@prairielearn/postgres', function () {
188
183
  assert.lengthOf(rowBatches[1], 1);
189
184
  });
190
185
  it('returns all rows at once', async () => {
191
- const cursor = (0, default_pool_1.queryCursor)('SELECT * FROM workspaces WHERE id <= 10;', {});
186
+ const cursor = queryCursor('SELECT * FROM workspaces WHERE id <= 10;', {});
192
187
  const rowBatches = [];
193
188
  for await (const rows of (await cursor).iterate(10)) {
194
189
  rowBatches.push(rows);
@@ -197,7 +192,7 @@ describe('@prairielearn/postgres', function () {
197
192
  assert.lengthOf(rowBatches[0], 10);
198
193
  });
199
194
  it('handles errors', async () => {
200
- const cursor = await (0, default_pool_1.queryCursor)('NOT VALID SQL', { foo: 'bar' });
195
+ const cursor = await queryCursor('NOT VALID SQL', { foo: 'bar' });
201
196
  async function readAllRows() {
202
197
  const allRows = [];
203
198
  for await (const rows of cursor.iterate(10)) {
@@ -216,15 +211,15 @@ describe('@prairielearn/postgres', function () {
216
211
  });
217
212
  });
218
213
  describe('queryValidatedCursor', () => {
219
- const WorkspaceSchema = zod_1.z.object({
220
- id: zod_1.z.string(),
214
+ const WorkspaceSchema = z.object({
215
+ id: z.string(),
221
216
  });
222
- const BadWorkspaceSchema = zod_1.z.object({
223
- badProperty: zod_1.z.string(),
217
+ const BadWorkspaceSchema = z.object({
218
+ badProperty: z.string(),
224
219
  });
225
220
  describe('iterator', () => {
226
221
  it('validates with provided schema', async () => {
227
- const cursor = await (0, default_pool_1.queryValidatedCursor)('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, WorkspaceSchema);
222
+ const cursor = await queryValidatedCursor('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, WorkspaceSchema);
228
223
  const allRows = [];
229
224
  for await (const rows of cursor.iterate(10)) {
230
225
  allRows.push(...rows);
@@ -235,7 +230,7 @@ describe('@prairielearn/postgres', function () {
235
230
  assert.isUndefined(workspace.state);
236
231
  });
237
232
  it('throws error when validation fails', async () => {
238
- const cursor = await (0, default_pool_1.queryValidatedCursor)('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, BadWorkspaceSchema);
233
+ const cursor = await queryValidatedCursor('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, BadWorkspaceSchema);
239
234
  async function readAllRows() {
240
235
  const allRows = [];
241
236
  for await (const rows of cursor.iterate(10)) {
@@ -244,13 +239,13 @@ describe('@prairielearn/postgres', function () {
244
239
  return allRows;
245
240
  }
246
241
  const maybeError = await readAllRows().catch((err) => err);
247
- assert.instanceOf(maybeError, zod_1.ZodError);
242
+ assert.instanceOf(maybeError, ZodError);
248
243
  assert.lengthOf(maybeError.errors, 10);
249
244
  });
250
245
  });
251
246
  describe('stream', () => {
252
247
  it('validates with provided schema', async () => {
253
- const cursor = await (0, default_pool_1.queryValidatedCursor)('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, WorkspaceSchema);
248
+ const cursor = await queryValidatedCursor('SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;', {}, WorkspaceSchema);
254
249
  const stream = cursor.stream(1);
255
250
  const allRows = [];
256
251
  for await (const row of stream) {
@@ -259,7 +254,7 @@ describe('@prairielearn/postgres', function () {
259
254
  assert.lengthOf(allRows, 10);
260
255
  });
261
256
  it('emits an error when validation fails', async () => {
262
- const cursor = await (0, default_pool_1.queryValidatedCursor)('SELECT * FROM workspaces ORDER BY id ASC;', {}, BadWorkspaceSchema);
257
+ const cursor = await queryValidatedCursor('SELECT * FROM workspaces ORDER BY id ASC;', {}, BadWorkspaceSchema);
263
258
  const stream = cursor.stream(1);
264
259
  async function readAllRows() {
265
260
  const allRows = [];
@@ -269,15 +264,15 @@ describe('@prairielearn/postgres', function () {
269
264
  return allRows;
270
265
  }
271
266
  const maybeError = await readAllRows().catch((err) => err);
272
- assert.instanceOf(maybeError, zod_1.ZodError);
267
+ assert.instanceOf(maybeError, ZodError);
273
268
  assert.lengthOf(maybeError.errors, 1);
274
269
  });
275
270
  it('closes the cursor when the stream is closed', async () => {
276
- const cursor = await (0, default_pool_1.queryValidatedCursor)('SELECT * FROM workspaces;', {}, WorkspaceSchema);
271
+ const cursor = await queryValidatedCursor('SELECT * FROM workspaces;', {}, WorkspaceSchema);
277
272
  const stream = cursor.stream(1);
278
273
  const rows = [];
279
274
  const ac = new AbortController();
280
- const writable = new node_stream_1.Writable({
275
+ const writable = new Writable({
281
276
  objectMode: true,
282
277
  write(chunk, _encoding, callback) {
283
278
  rows.push(chunk);
@@ -288,7 +283,7 @@ describe('@prairielearn/postgres', function () {
288
283
  callback();
289
284
  },
290
285
  });
291
- await assert.isRejected((0, promises_1.pipeline)(stream, writable, { signal: ac.signal }));
286
+ await assert.isRejected(pipeline(stream, writable, { signal: ac.signal }));
292
287
  assert.lengthOf(rows, 1);
293
288
  });
294
289
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pool.test.js","sourceRoot":"","sources":["../src/pool.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.test.js","sourceRoot":"","sources":["../src/pool.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,EACL,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,eAAe,EACf,WAAW,EACX,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAExB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;IAC9C,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE;IACjC,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,UAAU,CACd,uGAAuG,EACvG,EAAE,CACH,CAAC;QACF,MAAM,UAAU,CAAC,wEAAwE,EAAE,EAAE,CAAC,CAAC;QAC/F,MAAM,UAAU,CACd,uMAAuM,EACvM,EAAE,CACH,CAAC;QACF,MAAM,UAAU,CACd,sOAAsO,EACtO,EAAE,CACH,CAAC;QACF,MAAM,UAAU,CACd,wLAAwL,EACxL,EAAE,CACH,CAAC;QACF,MAAM,UAAU,CACd,4GAA4G,EAC5G,EAAE,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,2CAA2C,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACtF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,0CAA0C,EAAE,eAAe,CAAC,CAAC;YAC1F,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,GAAG,MAAM,SAAS,CAC1B,0CAA0C,EAC1C,CAAC,EAAE,CAAC,EACJ,eAAe,CAChB,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,yCAAyC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,wCAAwC,EAAE,eAAe,CAAC,CAAC;YACtF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC5F,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,yCAAyC,EAAE,eAAe,CAAC,CAAC;YAClF,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,yCAAyC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,wCAAwC,EAAE,eAAe,CAAC,CAAC;YAC9F,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,yCAAyC,EACzC,CAAC,CAAC,CAAC,EACH,eAAe,CAChB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,yCAAyC,EACzC,eAAe,CAChB,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,gCAAgC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC1E,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC7E,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,+BAA+B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACxF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACxF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,IAAI,GAAG,eAAe,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACrF,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,4CAA4C,EAAE,EAAE,CAAC,CAAC;YACnF,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,yCAAyC,EAAE,EAAE,CAAC,CAAC;YAChF,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,MAAM,GAAG,WAAW,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAElE,KAAK,UAAU,WAAW;gBACxB,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;YAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;YACxB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,0DAA0D,EAC1D,EAAE,EACF,eAAe,CAChB,CAAC;gBACF,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAQ,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,0DAA0D,EAC1D,EAAE,EACF,kBAAkB,CACnB,CAAC;gBAEF,KAAK,UAAU,WAAW;oBACxB,MAAM,OAAO,GAAG,EAAE,CAAC;oBACnB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBACxB,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC9C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,0DAA0D,EAC1D,EAAE,EACF,eAAe,CAChB,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;gBAED,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC,2CAA2C,EAC3C,EAAE,EACF,kBAAkB,CACnB,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEhC,KAAK,UAAU,WAAW;oBACxB,MAAM,OAAO,GAAG,EAAE,CAAC;oBACnB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;gBAC3D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,2BAA2B,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;gBAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEhC,MAAM,IAAI,GAAU,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;oBAC5B,UAAU,EAAE,IAAI;oBAChB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ;wBAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAEjB,qEAAqE;wBACrE,oEAAoE;wBACpE,yCAAyC;wBACzC,EAAE,CAAC,KAAK,EAAE,CAAC;wBACX,QAAQ,EAAE,CAAC;oBACb,CAAC;iBACF,CAAC,CAAC;gBAEH,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC3E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { Writable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { z, ZodError } from 'zod';\n\nimport {\n queryAsync,\n queryRows,\n queryRow,\n queryOptionalRow,\n callRows,\n callRow,\n callOptionalRow,\n queryCursor,\n queryValidatedCursor,\n} from './default-pool.js';\nimport { makePostgresTestUtils } from './test-utils.js';\n\nchai.use(chaiAsPromised);\nconst { assert } = chai;\n\nconst postgresTestUtils = makePostgresTestUtils({\n database: 'prairielearn_postgres',\n});\n\nconst WorkspaceSchema = z.object({\n id: z.string(),\n created_at: z.date(),\n});\n\nconst SprocTwoColumnsSchema = z.object({\n id: z.string(),\n negative: z.number(),\n});\n\ndescribe('@prairielearn/postgres', function () {\n before(async () => {\n await postgresTestUtils.createDatabase();\n await queryAsync(\n 'CREATE TABLE workspaces (id BIGSERIAL PRIMARY KEY, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP);',\n {},\n );\n await queryAsync('INSERT INTO workspaces (id) SELECT s FROM generate_series(1, 100) AS s', {});\n await queryAsync(\n 'CREATE FUNCTION test_sproc_one_column(num_entries INT) RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;',\n {},\n );\n await queryAsync(\n 'CREATE FUNCTION test_sproc_two_columns(num_entries INT) RETURNS TABLE (id BIGINT, negative INT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id, -s AS negative FROM generate_series(1, num_entries) AS s; END; $$ LANGUAGE plpgsql;',\n {},\n );\n await queryAsync(\n 'CREATE FUNCTION test_sproc_one_column_ten_rows() RETURNS TABLE (id BIGINT) AS $$ BEGIN RETURN QUERY SELECT s::BIGINT AS id FROM generate_series(1, 10) AS s; END; $$ LANGUAGE plpgsql;',\n {},\n );\n await queryAsync(\n 'CREATE FUNCTION test_sproc_one_column_one_row(OUT id BIGINT) AS $$ BEGIN id = 1; END; $$ LANGUAGE plpgsql;',\n {},\n );\n });\n\n after(async () => {\n await postgresTestUtils.dropDatabase();\n });\n\n describe('queryRows', () => {\n it('handles single column', async () => {\n const rows = await queryRows('SELECT id FROM workspaces WHERE id <= 10;', z.string());\n assert.lengthOf(rows, 10);\n assert.equal(rows[0], '1');\n });\n\n it('handles multiple columns', async () => {\n const rows = await queryRows('SELECT * FROM workspaces WHERE id <= 10;', WorkspaceSchema);\n assert.lengthOf(rows, 10);\n assert.equal(rows[0].id, '1');\n assert.isNotNull(rows[0].created_at);\n });\n\n it('handles parameters', async () => {\n const rows = await queryRows(\n 'SELECT * FROM workspaces WHERE id <= $1;',\n [10],\n WorkspaceSchema,\n );\n assert.lengthOf(rows, 10);\n });\n });\n\n describe('queryRow', () => {\n it('handles single column', async () => {\n const row = await queryRow('SELECT id FROM workspaces WHERE id = 1;', z.string());\n assert.equal(row, '1');\n });\n\n it('handles multiple columns', async () => {\n const row = await queryRow('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);\n assert.equal(row.id, '1');\n assert.isNotNull(row.created_at);\n });\n\n it('handles parameters', async () => {\n const row = await queryRow('SELECT * FROM workspaces WHERE id = $1;', [1], WorkspaceSchema);\n assert.equal(row.id, '1');\n });\n\n it('rejects results with zero rows', async () => {\n const rows = queryRow('SELECT * FROM workspaces WHERE id = -1;', WorkspaceSchema);\n await assert.isRejected(rows, 'Incorrect rowCount: 0');\n });\n\n it('rejects results with multiple rows', async () => {\n const rows = queryRow('SELECT * FROM workspaces', WorkspaceSchema);\n await assert.isRejected(rows, 'Incorrect rowCount: 100');\n });\n });\n\n describe('queryOptionalRow', () => {\n it('handles single column', async () => {\n const row = await queryRow('SELECT id FROM workspaces WHERE id = 1;', z.string());\n assert.equal(row, '1');\n });\n\n it('handles multiple columns', async () => {\n const row = await queryOptionalRow('SELECT * FROM workspaces WHERE id = 1;', WorkspaceSchema);\n assert.isNotNull(row);\n assert.equal(row?.id, '1');\n assert.isNotNull(row?.created_at);\n });\n\n it('handles parameters', async () => {\n const row = await queryOptionalRow(\n 'SELECT * FROM workspaces WHERE id = $1;',\n [1],\n WorkspaceSchema,\n );\n assert.isNotNull(row);\n assert.equal(row?.id, '1');\n });\n\n it('handles missing result', async () => {\n const row = await queryOptionalRow(\n 'SELECT * FROM workspaces WHERE id = -1;',\n WorkspaceSchema,\n );\n assert.isNull(row);\n });\n\n it('rejects with multiple rows', async () => {\n const rows = queryOptionalRow('SELECT * FROM workspaces', WorkspaceSchema);\n await assert.isRejected(rows, 'Incorrect rowCount: 100');\n });\n });\n\n describe('callRows', () => {\n it('handles single column', async () => {\n const rows = await callRows('test_sproc_one_column_ten_rows', z.string());\n assert.lengthOf(rows, 10);\n assert.equal(rows[0], '1');\n });\n\n it('handles parameters', async () => {\n const rows = await callRows('test_sproc_one_column', [10], z.string());\n assert.lengthOf(rows, 10);\n assert.equal(rows[0], '1');\n });\n\n it('handles multiple columns', async () => {\n const rows = await callRows('test_sproc_two_columns', [20], SprocTwoColumnsSchema);\n assert.lengthOf(rows, 20);\n assert.equal(rows[0].id, '1');\n assert.equal(rows[0].negative, -1);\n assert.equal(rows[19].id, '20');\n assert.equal(rows[19].negative, -20);\n });\n });\n\n describe('callRow', () => {\n it('handles single column', async () => {\n const row = await callRow('test_sproc_one_column_one_row', z.string());\n assert.equal(row, '1');\n });\n\n it('handles parameters', async () => {\n const row = await callRow('test_sproc_one_column', [1], z.string());\n assert.equal(row, '1');\n });\n\n it('handles multiple columns', async () => {\n const row = await callRow('test_sproc_two_columns', [1], SprocTwoColumnsSchema);\n assert.equal(row.id, '1');\n assert.equal(row.negative, -1);\n });\n\n it('rejects results with zero rows', async () => {\n const row = callRow('test_sproc_two_columns', [0], SprocTwoColumnsSchema);\n await assert.isRejected(row, 'Incorrect rowCount: 0');\n });\n\n it('rejects results with multiple rows', async () => {\n const rows = callRow('test_sproc_two_columns', [100], SprocTwoColumnsSchema);\n await assert.isRejected(rows, 'Incorrect rowCount: 100');\n });\n });\n\n describe('callOptionalRow', () => {\n it('handles single column', async () => {\n const row = await callOptionalRow('test_sproc_one_column_one_row', z.string());\n assert.equal(row, '1');\n });\n\n it('handles parameters', async () => {\n const row = await callOptionalRow('test_sproc_one_column', [1], z.string());\n assert.equal(row, '1');\n });\n\n it('handles multiple columns', async () => {\n const row = await callOptionalRow('test_sproc_two_columns', [1], SprocTwoColumnsSchema);\n assert.isNotNull(row);\n assert.equal(row?.id, '1');\n assert.equal(row?.negative, -1);\n });\n\n it('handles results with zero rows', async () => {\n const row = await callOptionalRow('test_sproc_two_columns', [0], SprocTwoColumnsSchema);\n assert.isNull(row);\n });\n\n it('rejects results with multiple rows', async () => {\n const rows = callOptionalRow('test_sproc_two_columns', [100], SprocTwoColumnsSchema);\n await assert.isRejected(rows, 'Incorrect rowCount: 100');\n });\n });\n\n describe('queryCursor', () => {\n it('returns zero rows', async () => {\n const cursor = await queryCursor('SELECT * FROM workspaces WHERE id = 10000;', {});\n const rowBatches = [];\n for await (const rows of cursor.iterate(10)) {\n rowBatches.push(rows);\n }\n assert.lengthOf(rowBatches, 0);\n });\n\n it('returns one row at a time', async () => {\n const cursor = await queryCursor('SELECT * FROM workspaces WHERE id <= 2;', {});\n const rowBatches = [];\n for await (const rows of cursor.iterate(1)) {\n rowBatches.push(rows);\n }\n assert.lengthOf(rowBatches, 2);\n assert.lengthOf(rowBatches[0], 1);\n assert.lengthOf(rowBatches[1], 1);\n });\n\n it('returns all rows at once', async () => {\n const cursor = queryCursor('SELECT * FROM workspaces WHERE id <= 10;', {});\n const rowBatches = [];\n for await (const rows of (await cursor).iterate(10)) {\n rowBatches.push(rows);\n }\n assert.lengthOf(rowBatches, 1);\n assert.lengthOf(rowBatches[0], 10);\n });\n\n it('handles errors', async () => {\n const cursor = await queryCursor('NOT VALID SQL', { foo: 'bar' });\n\n async function readAllRows() {\n const allRows = [];\n for await (const rows of cursor.iterate(10)) {\n allRows.push(...rows);\n }\n return allRows;\n }\n\n const maybeError = await readAllRows().catch((err) => err);\n assert.instanceOf(maybeError, Error);\n assert.match(maybeError.message, /syntax error/);\n assert.isDefined(maybeError.data);\n assert.equal(maybeError.data.sql, 'NOT VALID SQL');\n assert.deepEqual(maybeError.data.sqlParams, { foo: 'bar' });\n assert.isDefined(maybeError.data.sqlError);\n assert.equal(maybeError.data.sqlError.severity, 'ERROR');\n });\n });\n\n describe('queryValidatedCursor', () => {\n const WorkspaceSchema = z.object({\n id: z.string(),\n });\n\n const BadWorkspaceSchema = z.object({\n badProperty: z.string(),\n });\n\n describe('iterator', () => {\n it('validates with provided schema', async () => {\n const cursor = await queryValidatedCursor(\n 'SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;',\n {},\n WorkspaceSchema,\n );\n const allRows = [];\n for await (const rows of cursor.iterate(10)) {\n allRows.push(...rows);\n }\n assert.lengthOf(allRows, 10);\n const workspace = allRows[0] as any;\n assert.equal(workspace.id, '1');\n assert.isUndefined(workspace.state);\n });\n\n it('throws error when validation fails', async () => {\n const cursor = await queryValidatedCursor(\n 'SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;',\n {},\n BadWorkspaceSchema,\n );\n\n async function readAllRows() {\n const allRows = [];\n for await (const rows of cursor.iterate(10)) {\n allRows.push(...rows);\n }\n return allRows;\n }\n\n const maybeError = await readAllRows().catch((err) => err);\n assert.instanceOf(maybeError, ZodError);\n assert.lengthOf(maybeError.errors, 10);\n });\n });\n\n describe('stream', () => {\n it('validates with provided schema', async () => {\n const cursor = await queryValidatedCursor(\n 'SELECT * FROM workspaces WHERE id <= 10 ORDER BY id ASC;',\n {},\n WorkspaceSchema,\n );\n const stream = cursor.stream(1);\n const allRows = [];\n for await (const row of stream) {\n allRows.push(row);\n }\n\n assert.lengthOf(allRows, 10);\n });\n\n it('emits an error when validation fails', async () => {\n const cursor = await queryValidatedCursor(\n 'SELECT * FROM workspaces ORDER BY id ASC;',\n {},\n BadWorkspaceSchema,\n );\n const stream = cursor.stream(1);\n\n async function readAllRows() {\n const allRows = [];\n for await (const row of stream) {\n allRows.push(row);\n }\n return allRows;\n }\n\n const maybeError = await readAllRows().catch((err) => err);\n assert.instanceOf(maybeError, ZodError);\n assert.lengthOf(maybeError.errors, 1);\n });\n\n it('closes the cursor when the stream is closed', async () => {\n const cursor = await queryValidatedCursor('SELECT * FROM workspaces;', {}, WorkspaceSchema);\n const stream = cursor.stream(1);\n\n const rows: any[] = [];\n const ac = new AbortController();\n const writable = new Writable({\n objectMode: true,\n write(chunk, _encoding, callback) {\n rows.push(chunk);\n\n // After receiving the first row, abort the stream. This lets us test\n // that the underlying cursor is closed. If it is *not* closed, this\n // `after` hook will fail with a timeout.\n ac.abort();\n callback();\n },\n });\n\n await assert.isRejected(pipeline(stream, writable, { signal: ac.signal }));\n assert.lengthOf(rows, 1);\n });\n });\n });\n});\n"]}
@@ -1,39 +1,10 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.makePostgresTestUtils = void 0;
30
- const pg_1 = __importDefault(require("pg"));
31
- const defaultPool = __importStar(require("./default-pool"));
1
+ import pg from 'pg';
2
+ import * as defaultPool from './default-pool.js';
32
3
  const POSTGRES_USER = 'postgres';
33
4
  const POSTGRES_HOST = 'localhost';
34
5
  const POSTGRES_DATABASE = 'postgres';
35
6
  async function createDatabase(options, { dropExistingDatabase = true, configurePool = true, database, templateDatabase, prepare, } = {}) {
36
- const client = new pg_1.default.Client({
7
+ const client = new pg.Client({
37
8
  ...getPoolConfig(options),
38
9
  database: options.defaultDatabase ?? POSTGRES_DATABASE,
39
10
  });
@@ -66,7 +37,7 @@ async function createDatabase(options, { dropExistingDatabase = true, configureP
66
37
  }
67
38
  }
68
39
  async function resetDatabase(options) {
69
- const client = new pg_1.default.Client(getPoolConfig(options));
40
+ const client = new pg.Client(getPoolConfig(options));
70
41
  await client.connect();
71
42
  await client.query(`
72
43
  DO
@@ -93,7 +64,7 @@ async function dropDatabase(options, { closePool = true, force = false, database
93
64
  console.log(`PL_KEEP_TEST_DB environment variable set, not dropping database ${databaseName}`);
94
65
  return;
95
66
  }
96
- const client = new pg_1.default.Client({
67
+ const client = new pg.Client({
97
68
  ...getPoolConfig(options),
98
69
  database: options.defaultDatabase ?? POSTGRES_DATABASE,
99
70
  });
@@ -112,7 +83,7 @@ function getPoolConfig(options) {
112
83
  database: getDatabaseNameForCurrentMochaWorker(options.database),
113
84
  };
114
85
  }
115
- function makePostgresTestUtils(options) {
86
+ export function makePostgresTestUtils(options) {
116
87
  return {
117
88
  createDatabase: (createOptions) => createDatabase(options, createOptions),
118
89
  resetDatabase: () => resetDatabase(options),
@@ -121,5 +92,4 @@ function makePostgresTestUtils(options) {
121
92
  getPoolConfig: () => getPoolConfig(options),
122
93
  };
123
94
  }
124
- exports.makePostgresTestUtils = makePostgresTestUtils;
125
95
  //# sourceMappingURL=test-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import pg from 'pg';\n\nimport * as defaultPool from './default-pool.js';\n\nconst POSTGRES_USER = 'postgres';\nconst POSTGRES_HOST = 'localhost';\nconst POSTGRES_DATABASE = 'postgres';\n\nexport interface PostgresTestUtilsOptions {\n database: string;\n user?: string;\n host?: string;\n poolConfig?: Pick<pg.PoolConfig, 'max' | 'idleTimeoutMillis'>;\n defaultDatabase?: string;\n prepareAfterReset?: (client: pg.Client) => Promise<void>;\n}\n\ninterface CreateDatabaseOptions {\n dropExistingDatabase?: boolean;\n database?: string;\n templateDatabase?: string;\n configurePool?: boolean;\n prepare?: (client: pg.Client) => Promise<void>;\n}\n\ninterface DropDatabaseOptions {\n database?: string;\n force?: boolean;\n closePool?: boolean;\n}\n\nasync function createDatabase(\n options: PostgresTestUtilsOptions,\n {\n dropExistingDatabase = true,\n configurePool = true,\n database,\n templateDatabase,\n prepare,\n }: CreateDatabaseOptions = {},\n): Promise<void> {\n const client = new pg.Client({\n ...getPoolConfig(options),\n database: options.defaultDatabase ?? POSTGRES_DATABASE,\n });\n await client.connect();\n\n const escapedDatabase = client.escapeIdentifier(\n database ?? getDatabaseNameForCurrentMochaWorker(options.database),\n );\n if (dropExistingDatabase ?? true) {\n await client.query(`DROP DATABASE IF EXISTS ${escapedDatabase}`);\n }\n\n if (templateDatabase) {\n const escapedTemplateDatabase = client.escapeIdentifier(templateDatabase);\n await client.query(`CREATE DATABASE ${escapedDatabase} TEMPLATE ${escapedTemplateDatabase}`);\n } else {\n await client.query(`CREATE DATABASE ${escapedDatabase}`);\n }\n\n await client.end();\n\n await prepare?.(client);\n\n if (configurePool) {\n await defaultPool.initAsync(\n {\n user: options.user ?? POSTGRES_USER,\n host: options.host ?? POSTGRES_HOST,\n database: getDatabaseNameForCurrentMochaWorker(options.database),\n // Offer sensible default, but these can be overridden by `options.poolConfig`.\n max: 10,\n idleTimeoutMillis: 30000,\n ...(options.poolConfig ?? {}),\n },\n (err) => {\n throw err;\n },\n );\n }\n}\n\nasync function resetDatabase(options: PostgresTestUtilsOptions): Promise<void> {\n const client = new pg.Client(getPoolConfig(options));\n await client.connect();\n await client.query(`\n DO\n $func$\n BEGIN\n EXECUTE (\n SELECT 'TRUNCATE TABLE ' || string_agg(oid::regclass::text, ', ') || ' RESTART IDENTITY CASCADE'\n FROM pg_class\n WHERE relkind = 'r'\n AND relnamespace = 'public'::regnamespace\n );\n END\n $func$;\n `);\n await options.prepareAfterReset?.(client);\n await client.end();\n}\n\nasync function dropDatabase(\n options: PostgresTestUtilsOptions,\n { closePool = true, force = false, database }: DropDatabaseOptions = {},\n): Promise<void> {\n if (closePool) {\n await defaultPool.closeAsync();\n }\n\n const databaseName = database ?? getDatabaseNameForCurrentMochaWorker(options.database);\n if ('PL_KEEP_TEST_DB' in process.env && !force) {\n console.log(`PL_KEEP_TEST_DB environment variable set, not dropping database ${databaseName}`);\n return;\n }\n\n const client = new pg.Client({\n ...getPoolConfig(options),\n database: options.defaultDatabase ?? POSTGRES_DATABASE,\n });\n await client.connect();\n await client.query(`DROP DATABASE IF EXISTS ${client.escapeIdentifier(databaseName)}`);\n await client.end();\n}\n\nfunction getDatabaseNameForCurrentMochaWorker(namespace: string): string {\n const workerId = process.env.MOCHA_WORKER_ID ?? '1';\n return `${namespace}_${workerId}`;\n}\n\nfunction getPoolConfig(options: PostgresTestUtilsOptions): pg.PoolConfig {\n return {\n user: options.user ?? POSTGRES_USER,\n host: options.host ?? POSTGRES_HOST,\n database: getDatabaseNameForCurrentMochaWorker(options.database),\n };\n}\n\nexport interface PostgresTestUtils {\n createDatabase: (options?: CreateDatabaseOptions) => Promise<void>;\n resetDatabase: () => Promise<void>;\n dropDatabase: (options?: DropDatabaseOptions) => Promise<void>;\n getDatabaseNameForCurrentMochaWorker: () => string;\n getPoolConfig: () => pg.PoolConfig;\n}\n\nexport function makePostgresTestUtils(options: PostgresTestUtilsOptions): PostgresTestUtils {\n return {\n createDatabase: (createOptions?: CreateDatabaseOptions) =>\n createDatabase(options, createOptions),\n resetDatabase: () => resetDatabase(options),\n dropDatabase: (dropOptions?: DropDatabaseOptions) => dropDatabase(options, dropOptions),\n getDatabaseNameForCurrentMochaWorker: () =>\n getDatabaseNameForCurrentMochaWorker(options.database),\n getPoolConfig: () => getPoolConfig(options),\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@prairielearn/postgres",
3
- "version": "1.9.3",
3
+ "version": "2.0.0",
4
+ "type": "module",
4
5
  "main": "./dist/index.js",
5
6
  "repository": {
6
7
  "type": "git",
@@ -10,17 +11,17 @@
10
11
  "scripts": {
11
12
  "build": "tsc",
12
13
  "dev": "tsc --watch --preserveWatchOutput",
13
- "test": "mocha --no-config --require tsx src/*.test.ts"
14
+ "test": "mocha src/**/*.test.ts"
14
15
  },
15
16
  "devDependencies": {
16
17
  "@prairielearn/tsconfig": "^0.0.0",
17
18
  "@types/mocha": "^10.0.6",
18
19
  "@types/multipipe": "^3.0.5",
19
- "@types/node": "^20.11.30",
20
+ "@types/node": "^20.12.2",
20
21
  "chai": "^4.4.1",
21
22
  "chai-as-promised": "^7.1.1",
22
23
  "mocha": "^10.4.0",
23
- "tsx": "^4.7.1",
24
+ "tsx": "^4.9.3",
24
25
  "typescript": "^5.4.3"
25
26
  },
26
27
  "dependencies": {
@@ -28,9 +29,9 @@
28
29
  "@types/lodash": "^4.17.0",
29
30
  "@types/pg-cursor": "^2.7.2",
30
31
  "multipipe": "^4.0.0",
31
- "pg": "^8.11.3",
32
- "pg-cursor": "^2.10.3",
33
- "pg-pool": "^3.6.1",
32
+ "pg": "^8.11.4",
33
+ "pg-cursor": "^2.10.4",
34
+ "pg-pool": "^3.6.2",
34
35
  "zod": "^3.22.4"
35
36
  }
36
37
  }
@@ -1,12 +1,13 @@
1
1
  import { assert } from 'chai';
2
- import { PostgresPool } from './pool';
3
- import * as pgPool from './default-pool';
2
+ import { PostgresPool } from './pool.js';
3
+ import * as pgPool from './default-pool.js';
4
4
 
5
5
  /**
6
6
  * Properties on {@link PostgresPool} that should not be available on the default
7
7
  * pool's exports.
8
8
  */
9
9
  const HIDDEN_PROPERTIES = new Set([
10
+ 'constructor',
10
11
  // Private members
11
12
  'pool',
12
13
  'alsClient',
@@ -1,4 +1,4 @@
1
- import { PostgresPool, type CursorIterator, type QueryParams } from './pool';
1
+ import { PostgresPool, type CursorIterator, type QueryParams } from './pool.js';
2
2
 
3
3
  const defaultPool = new PostgresPool();
4
4
  export { defaultPool, type CursorIterator, type QueryParams };
package/src/index.ts CHANGED
@@ -1,8 +1,12 @@
1
- export { PoolClient } from 'pg';
1
+ export { type PoolClient } from 'pg';
2
2
 
3
- export { loadSql, loadSqlEquiv } from './loader';
4
- export { PostgresPool } from './pool';
3
+ export { loadSql, loadSqlEquiv } from './loader.js';
4
+ export { PostgresPool } from './pool.js';
5
5
 
6
- export * from './default-pool';
6
+ export * from './default-pool.js';
7
7
 
8
- export { makePostgresTestUtils, PostgresTestUtils, PostgresTestUtilsOptions } from './test-utils';
8
+ export {
9
+ makePostgresTestUtils,
10
+ type PostgresTestUtils,
11
+ type PostgresTestUtilsOptions,
12
+ } from './test-utils.js';