@typed-sql/postgres 1.0.0-beta.2 → 1.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.
@@ -1,7 +1,10 @@
1
1
  var _a;
2
- import { renderQuery } from "@typed-sql/core";
2
+ import { renderQuery, } from "@typed-sql/core";
3
+ import { createPostgresPreparedQueryState, preparePostgresQuery, } from "./prepared.js";
4
+ import { PostgresQueryStream, validatePostgresStreamBatchSize } from "./stream.js";
3
5
  import { defaultPostgresTypePolicy } from "./type-policy.js";
4
6
  const defaultPolicy = defaultPostgresTypePolicy;
7
+ const emptyBatchResults = Object.freeze([]);
5
8
  const oids = {
6
9
  int8: 20,
7
10
  date: 1082,
@@ -121,61 +124,547 @@ class PostgresDatabaseImplementation {
121
124
  #client;
122
125
  #parsers;
123
126
  #ownsPool;
127
+ #prepared;
124
128
  #transactionDepth;
125
- constructor(pool, client, parsers, ownsPool, depth) {
129
+ #transactionScopeOpen = true;
130
+ #transactionOperationFailed = false;
131
+ #transactionOperationError;
132
+ #transactionState;
133
+ #transactionExecutes = new Set();
134
+ #transactionStreams = new Set();
135
+ constructor(pool, client, parsers, ownsPool, depth, prepared, transactionState = {
136
+ activeBatch: undefined,
137
+ activeExecutes: new Set(),
138
+ activePipeline: undefined,
139
+ activeStreams: new Set(),
140
+ discardLease: false,
141
+ firstDatabaseOperationError: undefined,
142
+ unsafe: false,
143
+ unsafeDepth: undefined,
144
+ unsafeError: undefined,
145
+ valid: true,
146
+ }) {
126
147
  this.#pool = pool;
127
148
  this.#client = client;
128
149
  this.#parsers = parsers;
129
150
  this.#ownsPool = ownsPool;
130
151
  this.#transactionDepth = depth;
152
+ this.#prepared = prepared;
153
+ this.#transactionState = transactionState;
131
154
  }
132
155
  async execute(query) {
133
- const rendered = renderQuery(query, postgresRenderer);
134
- const result = await (this.#client ?? this.#pool).query({
135
- text: rendered.text,
136
- values: rendered.values.map(encodeValue),
137
- types: this.#parsers,
156
+ this.#assertTransactionScopeOpen();
157
+ this.#rejectOperationDuringTransactionStream("execute another query");
158
+ this.#rejectOperationDuringTransactionBatch("execute another query");
159
+ this.#rejectOperationDuringTransactionPipeline("execute another query");
160
+ const config = this.#queryConfig(query);
161
+ let operation;
162
+ try {
163
+ operation = (this.#client ?? this.#pool).query(config);
164
+ }
165
+ catch (error) {
166
+ this.#recordTransactionOperationFailure(error);
167
+ throw error;
168
+ }
169
+ if (this.#client !== undefined) {
170
+ this.#transactionExecutes.add(operation);
171
+ this.#transactionState.activeExecutes.add(operation);
172
+ }
173
+ try {
174
+ const result = await operation;
175
+ return result.rows;
176
+ }
177
+ catch (error) {
178
+ this.#recordTransactionOperationFailure(error);
179
+ throw error;
180
+ }
181
+ finally {
182
+ this.#transactionExecutes.delete(operation);
183
+ this.#transactionState.activeExecutes.delete(operation);
184
+ }
185
+ }
186
+ async batch(queries) {
187
+ this.#assertTransactionScopeOpen();
188
+ this.#rejectOperationDuringTransactionStream("execute a query batch");
189
+ this.#rejectOperationDuringTransactionBatch("execute another query batch");
190
+ this.#rejectOperationDuringTransactionPipeline("execute a query batch");
191
+ if (queries.length === 0)
192
+ return emptyBatchResults;
193
+ const querySnapshot = [...queries];
194
+ if (this.#client !== undefined) {
195
+ const operation = this.#executeBatch(this.#client, querySnapshot);
196
+ this.#transactionState.activeBatch = operation;
197
+ try {
198
+ return await operation;
199
+ }
200
+ catch (error) {
201
+ this.#recordTransactionOperationFailure(error);
202
+ throw error;
203
+ }
204
+ finally {
205
+ if (this.#transactionState.activeBatch === operation)
206
+ this.#transactionState.activeBatch = undefined;
207
+ }
208
+ }
209
+ const client = await this.#pool.connect();
210
+ let results;
211
+ try {
212
+ results = await this.#executeBatch(client, querySnapshot);
213
+ }
214
+ catch (error) {
215
+ try {
216
+ client.release(error instanceof Error ? error : true);
217
+ }
218
+ catch {
219
+ /* Preserve the first query failure. */
220
+ }
221
+ throw error;
222
+ }
223
+ client.release();
224
+ return results;
225
+ }
226
+ async pipeline(queries) {
227
+ this.#assertTransactionScopeOpen();
228
+ this.#rejectOperationDuringTransactionStream("execute a query pipeline");
229
+ this.#rejectOperationDuringTransactionBatch("execute a query pipeline");
230
+ this.#rejectOperationDuringTransactionExecute("execute a query pipeline");
231
+ this.#rejectOperationDuringTransactionPipeline("execute another query pipeline");
232
+ if (queries.length === 0)
233
+ return emptyBatchResults;
234
+ const configs = [...queries].map((value) => this.#queryConfig(value));
235
+ if (this.#client !== undefined) {
236
+ this.#assertPipelineClient(this.#client);
237
+ const operation = this.#executePipeline(this.#client, configs);
238
+ this.#transactionState.activePipeline = operation;
239
+ try {
240
+ return await operation;
241
+ }
242
+ catch (error) {
243
+ this.#recordTransactionOperationFailure(error);
244
+ throw error;
245
+ }
246
+ finally {
247
+ if (this.#transactionState.activePipeline === operation)
248
+ this.#transactionState.activePipeline = undefined;
249
+ }
250
+ }
251
+ const client = await this.#pool.connect();
252
+ try {
253
+ this.#assertPipelineClient(client);
254
+ }
255
+ catch (error) {
256
+ try {
257
+ client.release();
258
+ }
259
+ catch {
260
+ /* Preserve the missing pipeline-capability error. */
261
+ }
262
+ throw error;
263
+ }
264
+ try {
265
+ const results = await this.#executePipeline(client, configs);
266
+ client.release();
267
+ return results;
268
+ }
269
+ catch (error) {
270
+ try {
271
+ client.release(error instanceof Error ? error : true);
272
+ }
273
+ catch {
274
+ /* Preserve the first pipeline failure. */
275
+ }
276
+ throw error;
277
+ }
278
+ }
279
+ stream(query, options = {}) {
280
+ this.#assertTransactionScopeOpen();
281
+ this.#rejectOperationDuringTransactionStream("start another query stream");
282
+ this.#rejectOperationDuringTransactionBatch("start a query stream");
283
+ this.#rejectOperationDuringTransactionPipeline("start a query stream");
284
+ const batchSize = validatePostgresStreamBatchSize(options.batchSize);
285
+ const config = this.#queryConfig(query);
286
+ let stream;
287
+ stream = new PostgresQueryStream({
288
+ batchSize,
289
+ start: async () => {
290
+ await this.#pool.ensureCursor?.();
291
+ const client = this.#client ?? (await this.#pool.connect());
292
+ const release = this.#client === undefined
293
+ ? (cleanupError) => client.release(cleanupError === undefined ? undefined : cleanupError instanceof Error ? cleanupError : true)
294
+ : undefined;
295
+ if (client.openCursor === undefined) {
296
+ try {
297
+ release?.();
298
+ }
299
+ catch {
300
+ /* The missing-capability failure remains primary. */
301
+ }
302
+ throw new Error("PostgreSQL streaming requires the application-owned pg-cursor package. Install it with: pnpm add pg-cursor");
303
+ }
304
+ try {
305
+ const cursor = await client.openCursor(config);
306
+ return { cursor, ...(release === undefined ? {} : { release }) };
307
+ }
308
+ catch (error) {
309
+ this.#recordTransactionOperationFailure(error);
310
+ try {
311
+ release?.(error);
312
+ }
313
+ catch {
314
+ /* Preserve cursor creation or optional-dependency failures. */
315
+ }
316
+ throw error;
317
+ }
318
+ },
319
+ ...(this.#client === undefined
320
+ ? {}
321
+ : {
322
+ onStart: () => {
323
+ this.#assertTransactionScopeOpen();
324
+ this.#rejectOperationDuringTransactionStream("start another query stream");
325
+ this.#rejectOperationDuringTransactionBatch("start a query stream");
326
+ this.#rejectOperationDuringTransactionPipeline("start a query stream");
327
+ this.#transactionState.activeStreams.add(stream);
328
+ },
329
+ onClose: () => {
330
+ this.#transactionState.activeStreams.delete(stream);
331
+ this.#transactionStreams.delete(stream);
332
+ },
333
+ onError: (error) => this.#recordTransactionOperationFailure(error),
334
+ }),
138
335
  });
139
- return result.rows;
336
+ if (this.#client !== undefined)
337
+ this.#transactionStreams.add(stream);
338
+ return stream;
339
+ }
340
+ prepare(statementName, factory) {
341
+ this.#assertTransactionScopeOpen();
342
+ return preparePostgresQuery(this.#prepared, postgresRenderer, statementName, factory);
140
343
  }
141
344
  async transaction(fn) {
345
+ this.#assertTransactionScopeOpen();
346
+ this.#rejectOperationDuringTransactionStream("start a nested transaction");
347
+ this.#rejectOperationDuringTransactionBatch("start a nested transaction");
348
+ this.#rejectOperationDuringTransactionPipeline("start a nested transaction");
142
349
  if (this.#client !== undefined)
143
350
  return this.#nestedTransaction(fn);
144
351
  const client = await this.#pool.connect();
352
+ const scope = new _a(this.#pool, client, this.#parsers, false, 1, this.#prepared, {
353
+ activeBatch: undefined,
354
+ activeExecutes: new Set(),
355
+ activePipeline: undefined,
356
+ activeStreams: new Set(),
357
+ discardLease: false,
358
+ firstDatabaseOperationError: undefined,
359
+ unsafe: false,
360
+ unsafeDepth: undefined,
361
+ unsafeError: undefined,
362
+ valid: true,
363
+ });
364
+ let result;
145
365
  try {
146
- await client.query("BEGIN");
147
- const result = await fn(new _a(this.#pool, client, this.#parsers, false, 1));
148
- await client.query("COMMIT");
149
- return result;
366
+ try {
367
+ await client.query("BEGIN");
368
+ }
369
+ catch (error) {
370
+ scope.#recordTransactionOperationFailure(error);
371
+ throw error;
372
+ }
373
+ try {
374
+ result = await fn(scope);
375
+ }
376
+ finally {
377
+ scope.#transactionScopeOpen = false;
378
+ scope.#transactionState.valid = false;
379
+ }
380
+ scope.#throwIfTransactionCannotCommit();
381
+ await scope.#rejectLeakedTransactionWork();
382
+ try {
383
+ await client.query("COMMIT");
384
+ }
385
+ catch (error) {
386
+ scope.#recordTransactionOperationFailure(error);
387
+ throw error;
388
+ }
150
389
  }
151
390
  catch (error) {
391
+ scope.#transactionScopeOpen = false;
392
+ scope.#transactionState.valid = false;
393
+ await scope.#settleTransactionExecutesPreservingError();
394
+ await scope.#closeTransactionStreamsPreservingError();
395
+ await scope.#settleTransactionPipelinePreservingError();
396
+ await scope.#settleTransactionBatchPreservingError();
152
397
  try {
153
398
  await client.query("ROLLBACK");
154
399
  }
400
+ catch (cleanupError) {
401
+ scope.#markTransactionStateUnsafe(cleanupError);
402
+ /* Preserve the original error. */
403
+ }
404
+ try {
405
+ client.release(scope.#transactionLeaseReleaseError());
406
+ }
155
407
  catch {
156
408
  /* Preserve the original error. */
157
409
  }
158
410
  throw error;
159
411
  }
160
- finally {
161
- client.release();
162
- }
412
+ client.release(scope.#transactionLeaseReleaseError());
413
+ return result;
163
414
  }
164
415
  async #nestedTransaction(fn) {
165
416
  const client = this.#client;
166
417
  const depth = this.#transactionDepth + 1;
167
418
  const savepoint = `typed_sql_${depth}`;
168
- await client.query(`SAVEPOINT ${savepoint}`);
169
419
  try {
170
- const result = await fn(new _a(this.#pool, client, this.#parsers, false, depth));
171
- await client.query(`RELEASE SAVEPOINT ${savepoint}`);
420
+ await client.query(`SAVEPOINT ${savepoint}`);
421
+ }
422
+ catch (error) {
423
+ this.#recordTransactionOperationFailure(error);
424
+ throw error;
425
+ }
426
+ const scope = new _a(this.#pool, client, this.#parsers, false, depth, this.#prepared, this.#transactionState);
427
+ try {
428
+ let result;
429
+ try {
430
+ result = await fn(scope);
431
+ }
432
+ finally {
433
+ scope.#transactionScopeOpen = false;
434
+ }
435
+ if (!scope.#transactionState.valid) {
436
+ throw new Error("The parent PostgreSQL transaction scope ended before its nested transaction completed");
437
+ }
438
+ scope.#throwIfTransactionCannotCommit();
439
+ await scope.#rejectLeakedTransactionWork();
440
+ try {
441
+ await client.query(`RELEASE SAVEPOINT ${savepoint}`);
442
+ }
443
+ catch (error) {
444
+ scope.#recordTransactionOperationFailure(error);
445
+ throw error;
446
+ }
172
447
  return result;
173
448
  }
174
449
  catch (error) {
175
- await client.query(`ROLLBACK TO SAVEPOINT ${savepoint}`);
450
+ await scope.#settleTransactionExecutesPreservingError();
451
+ await scope.#closeTransactionStreamsPreservingError();
452
+ await scope.#settleTransactionPipelinePreservingError();
453
+ await scope.#settleTransactionBatchPreservingError();
454
+ if (scope.#transactionState.valid) {
455
+ try {
456
+ await client.query(`ROLLBACK TO SAVEPOINT ${savepoint}`);
457
+ scope.#recoverTransactionStateAfterSavepoint(depth);
458
+ }
459
+ catch (cleanupError) {
460
+ scope.#markTransactionStateUnsafe(cleanupError);
461
+ /* Preserve the original callback, query, or release error. */
462
+ }
463
+ }
176
464
  throw error;
177
465
  }
178
466
  }
467
+ #queryConfig(query) {
468
+ const prepared = this.#prepared.queries.get(query);
469
+ const rendered = prepared?.rendered ?? renderQuery(query, postgresRenderer);
470
+ return {
471
+ ...(prepared === undefined ? {} : { name: prepared.statementName }),
472
+ text: rendered.text,
473
+ values: rendered.values.map(encodeValue),
474
+ types: this.#parsers,
475
+ };
476
+ }
477
+ async #executeBatch(client, queries) {
478
+ const results = [];
479
+ for (const value of queries) {
480
+ this.#assertTransactionScopeOpen();
481
+ const query = value;
482
+ const result = await client.query(this.#queryConfig(query));
483
+ results.push(result.rows);
484
+ }
485
+ return results;
486
+ }
487
+ async #executePipeline(client, configs) {
488
+ const operations = [];
489
+ let dispatchFailed = false;
490
+ let dispatchError;
491
+ for (const config of configs) {
492
+ try {
493
+ operations.push(client.query(config));
494
+ }
495
+ catch (error) {
496
+ dispatchFailed = true;
497
+ dispatchError = error;
498
+ break;
499
+ }
500
+ }
501
+ const settlements = await Promise.allSettled(operations);
502
+ if (dispatchFailed)
503
+ throw dispatchError;
504
+ const results = [];
505
+ for (const settlement of settlements) {
506
+ if (settlement.status === "rejected")
507
+ throw settlement.reason;
508
+ results.push(settlement.value.rows);
509
+ }
510
+ return results;
511
+ }
512
+ #assertPipelineClient(client) {
513
+ if (client.pipeline !== true) {
514
+ throw new Error("PostgreSQL query pipelining requires pg 8.23.0 or newer and pipeline mode. Create the application-owned Pool with { pipeline: true }");
515
+ }
516
+ }
517
+ async #rejectLeakedTransactionWork() {
518
+ const leakedStreams = this.#transactionStreams.size > 0 || this.#transactionState.activeStreams.size > 0;
519
+ const leakedExecutes = this.#transactionExecutes.size > 0 || this.#transactionState.activeExecutes.size > 0;
520
+ const leakedPipeline = this.#transactionState.activePipeline !== undefined;
521
+ const leakedBatch = this.#transactionState.activeBatch !== undefined;
522
+ if (!leakedStreams && !leakedExecutes && !leakedPipeline && !leakedBatch)
523
+ return;
524
+ await this.#settleTransactionExecutesPreservingError();
525
+ await this.#closeTransactionStreamsPreservingError();
526
+ await this.#settleTransactionPipelinePreservingError();
527
+ await this.#settleTransactionBatchPreservingError();
528
+ if (leakedExecutes) {
529
+ throw new Error("A PostgreSQL transaction callback returned before an execute operation completed; await execute before returning");
530
+ }
531
+ if (leakedBatch) {
532
+ throw new Error("A PostgreSQL transaction callback returned before its query batch completed; await the batch before returning");
533
+ }
534
+ if (leakedPipeline) {
535
+ throw new Error("A PostgreSQL transaction callback returned before its query pipeline completed; await the pipeline before returning");
536
+ }
537
+ throw new Error("A PostgreSQL transaction callback returned before all query streams were completed or closed");
538
+ }
539
+ async #settleTransactionExecutesPreservingError() {
540
+ const operations = new Set([...this.#transactionExecutes, ...this.#transactionState.activeExecutes]);
541
+ for (const operation of operations) {
542
+ try {
543
+ await operation;
544
+ }
545
+ catch {
546
+ /* The callback or transaction misuse error remains primary. */
547
+ }
548
+ }
549
+ }
550
+ async #closeTransactionStreamsPreservingError() {
551
+ const streams = new Set([...this.#transactionStreams, ...this.#transactionState.activeStreams]);
552
+ for (const stream of streams) {
553
+ try {
554
+ await stream.close();
555
+ }
556
+ catch {
557
+ /* The callback or transaction misuse error remains primary. */
558
+ }
559
+ }
560
+ }
561
+ async #settleTransactionBatchPreservingError() {
562
+ const operation = this.#transactionState.activeBatch;
563
+ if (operation === undefined)
564
+ return;
565
+ try {
566
+ await operation;
567
+ }
568
+ catch {
569
+ /* The callback or transaction misuse error remains primary. */
570
+ }
571
+ }
572
+ async #settleTransactionPipelinePreservingError() {
573
+ const operation = this.#transactionState.activePipeline;
574
+ if (operation === undefined)
575
+ return;
576
+ try {
577
+ await operation;
578
+ }
579
+ catch {
580
+ /* The callback or transaction misuse error remains primary. */
581
+ }
582
+ }
583
+ #rejectOperationDuringTransactionStream(operation) {
584
+ if (this.#client !== undefined && this.#transactionState.activeStreams.size > 0) {
585
+ throw new Error(`Cannot ${operation} while a PostgreSQL transaction query stream is still open; complete or close the stream first`);
586
+ }
587
+ }
588
+ #rejectOperationDuringTransactionBatch(operation) {
589
+ if (this.#client !== undefined && this.#transactionState.activeBatch !== undefined) {
590
+ throw new Error(`Cannot ${operation} while a PostgreSQL transaction query batch is still running; await the batch first`);
591
+ }
592
+ }
593
+ #rejectOperationDuringTransactionExecute(operation) {
594
+ if (this.#client !== undefined && this.#transactionState.activeExecutes.size > 0) {
595
+ throw new Error(`Cannot ${operation} while a PostgreSQL transaction execute operation is still running; await execute first`);
596
+ }
597
+ }
598
+ #rejectOperationDuringTransactionPipeline(operation) {
599
+ if (this.#client !== undefined && this.#transactionState.activePipeline !== undefined) {
600
+ throw new Error(`Cannot ${operation} while a PostgreSQL transaction query pipeline is still running; await the pipeline first`);
601
+ }
602
+ }
603
+ #recordTransactionOperationFailure(error) {
604
+ if (this.#client === undefined)
605
+ return;
606
+ if (!this.#transactionOperationFailed) {
607
+ this.#transactionOperationFailed = true;
608
+ this.#transactionOperationError = error;
609
+ }
610
+ this.#markTransactionStateUnsafe(error);
611
+ }
612
+ #markTransactionStateUnsafe(error) {
613
+ if (!this.#transactionState.discardLease) {
614
+ this.#transactionState.discardLease = true;
615
+ this.#transactionState.firstDatabaseOperationError = error;
616
+ }
617
+ if (!this.#transactionState.unsafe ||
618
+ this.#transactionState.unsafeDepth === undefined ||
619
+ this.#transactionDepth < this.#transactionState.unsafeDepth) {
620
+ this.#transactionState.unsafe = true;
621
+ this.#transactionState.unsafeDepth = this.#transactionDepth;
622
+ this.#transactionState.unsafeError = error;
623
+ }
624
+ }
625
+ #recoverTransactionStateAfterSavepoint(depth) {
626
+ if (this.#transactionState.unsafeDepth === undefined || this.#transactionState.unsafeDepth < depth)
627
+ return;
628
+ this.#transactionState.unsafe = false;
629
+ this.#transactionState.unsafeDepth = undefined;
630
+ this.#transactionState.unsafeError = undefined;
631
+ }
632
+ #transactionLeaseReleaseError() {
633
+ if (!this.#transactionState.discardLease)
634
+ return undefined;
635
+ return this.#transactionState.firstDatabaseOperationError instanceof Error
636
+ ? this.#transactionState.firstDatabaseOperationError
637
+ : true;
638
+ }
639
+ #throwIfTransactionCannotCommit() {
640
+ if (this.#transactionOperationFailed) {
641
+ if (this.#transactionOperationError !== undefined)
642
+ throw this.#transactionOperationError;
643
+ throw new Error("A PostgreSQL transaction operation failed and the transaction cannot be committed");
644
+ }
645
+ if (this.#transactionState.unsafe) {
646
+ throw new Error("The PostgreSQL transaction connection did not complete recovery and cannot be committed", {
647
+ cause: this.#transactionState.unsafeError,
648
+ });
649
+ }
650
+ }
651
+ #assertTransactionScopeOpen() {
652
+ if (this.#client === undefined)
653
+ return;
654
+ if (!this.#transactionScopeOpen || !this.#transactionState.valid) {
655
+ throw new Error("This PostgreSQL transaction scope has ended and can no longer be used");
656
+ }
657
+ if (this.#transactionOperationFailed) {
658
+ throw new Error("This PostgreSQL transaction scope cannot continue after a database operation failed", {
659
+ cause: this.#transactionOperationError,
660
+ });
661
+ }
662
+ if (this.#transactionState.unsafe) {
663
+ throw new Error("The PostgreSQL transaction cannot continue until its failed operation is rolled back", {
664
+ cause: this.#transactionState.unsafeError,
665
+ });
666
+ }
667
+ }
179
668
  async close() {
180
669
  if (this.#client !== undefined)
181
670
  throw new Error("Cannot close a database from inside a transaction");
@@ -185,6 +674,6 @@ class PostgresDatabaseImplementation {
185
674
  }
186
675
  _a = PostgresDatabaseImplementation;
187
676
  export function createPostgresDatabase(options) {
188
- return new PostgresDatabaseImplementation(options.pool, undefined, createPostgresTypeParsers(options.typePolicy ?? defaultPolicy, options.decimal, options.fallbackTypeParsers), options.ownsPool ?? false, 0);
677
+ return new PostgresDatabaseImplementation(options.pool, undefined, createPostgresTypeParsers(options.typePolicy ?? defaultPolicy, options.decimal, options.fallbackTypeParsers), options.ownsPool ?? false, 0, createPostgresPreparedQueryState());
189
678
  }
190
679
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../src/runtime.ts"],"names":[],"mappings":"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"}