@m2k-5f/pgtx 2.5.2 → 2.6.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.
Files changed (39) hide show
  1. package/dist/batch.d.ts +14 -0
  2. package/dist/batch.d.ts.map +1 -0
  3. package/dist/batch.js +35 -0
  4. package/dist/clauses/array.clause.js +2 -2
  5. package/dist/clauses/exclude.clause.d.ts.map +1 -1
  6. package/dist/clauses/exclude.clause.js +2 -2
  7. package/dist/clauses/fragment.clause.d.ts.map +1 -1
  8. package/dist/clauses/fragment.clause.js +2 -5
  9. package/dist/clauses/iden.caluse.js +1 -1
  10. package/dist/clauses/insert.clause.d.ts.map +1 -1
  11. package/dist/clauses/insert.clause.js +10 -9
  12. package/dist/clauses/literal.clause.js +1 -1
  13. package/dist/clauses/update.clause.js +2 -2
  14. package/dist/clauses/where.clause.js +2 -2
  15. package/dist/connection.d.ts +14 -14
  16. package/dist/connection.d.ts.map +1 -1
  17. package/dist/connection.js +151 -204
  18. package/dist/error.d.ts +3 -0
  19. package/dist/error.d.ts.map +1 -1
  20. package/dist/error.js +3 -0
  21. package/dist/pool.d.ts.map +1 -1
  22. package/dist/pool.js +2 -2
  23. package/dist/protocol/connection-request-writer.d.ts.map +1 -1
  24. package/dist/protocol/connection-request-writer.js +1 -0
  25. package/dist/query.d.ts +29 -22
  26. package/dist/query.d.ts.map +1 -1
  27. package/dist/query.js +41 -32
  28. package/dist/queue.d.ts +17 -0
  29. package/dist/queue.d.ts.map +1 -1
  30. package/dist/queue.js +44 -4
  31. package/dist/transaction.d.ts +3 -3
  32. package/dist/transaction.d.ts.map +1 -1
  33. package/dist/transaction.js +2 -4
  34. package/dist/types.d.ts +1 -1
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/utils/template-compiler.d.ts +2 -2
  37. package/dist/utils/template-compiler.d.ts.map +1 -1
  38. package/dist/utils/template-compiler.js +14 -9
  39. package/package.json +8 -6
@@ -0,0 +1,14 @@
1
+ import { PostgresError } from "./error";
2
+ import { ConnectionRequestWriter } from "./protocol/connection-request-writer";
3
+ import { PostgresQuery } from "./query";
4
+ export declare class Batch {
5
+ private _queryQueue;
6
+ private _buffer;
7
+ constructor(buffer: ConnectionRequestWriter);
8
+ registerQuery(query: PostgresQuery, timeout: number): void;
9
+ end(): ConnectionRequestWriter;
10
+ get current(): PostgresQuery;
11
+ next(): void;
12
+ reject(cause: PostgresError): void;
13
+ }
14
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAc,aAAa,EAAsB,MAAM,SAAS,CAAC;AAGxE,qBAAa,KAAK;IACd,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAAyB;gBAE5B,MAAM,EAAE,uBAAuB;IAK3C,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM;IAgBnD,GAAG;IAIH,IAAI,OAAO,kBAEV;IAED,IAAI;IAIJ,MAAM,CAAC,KAAK,EAAE,aAAa;CAK9B"}
package/dist/batch.js ADDED
@@ -0,0 +1,35 @@
1
+ import { ParseQuery } from "./query";
2
+ import { Queue } from "./queue";
3
+ export class Batch {
4
+ constructor(buffer) {
5
+ this._queryQueue = new Queue();
6
+ this._buffer = buffer;
7
+ }
8
+ registerQuery(query, timeout) {
9
+ this._queryQueue.push(query);
10
+ query.startTimeout(timeout);
11
+ if (query instanceof ParseQuery) {
12
+ this._buffer
13
+ .writeParse(query.statement, query.text)
14
+ .writeDescribe(query.statement);
15
+ return;
16
+ }
17
+ this._buffer
18
+ .writeBind("", query.statement, query.args)
19
+ .writeExecute("");
20
+ }
21
+ end() {
22
+ return this._buffer.writeSync();
23
+ }
24
+ get current() {
25
+ return this._queryQueue.current;
26
+ }
27
+ next() {
28
+ this._queryQueue.next();
29
+ }
30
+ reject(cause) {
31
+ while (this._queryQueue.hasMore) {
32
+ this._queryQueue.shift.reject(cause);
33
+ }
34
+ }
35
+ }
@@ -16,13 +16,13 @@ export class ArrayClause extends Clause {
16
16
  throw new TypeError(`Array item at index ${index} is undefined`);
17
17
  }
18
18
  if (index)
19
- params.text.push(this.separator);
19
+ params.text += this.separator;
20
20
  if (value instanceof Clause) {
21
21
  value.mapIntoQuery(params);
22
22
  }
23
23
  else {
24
24
  params.args.push(value);
25
- params.text.push(`$${params.args.length}`);
25
+ params.text += `$${params.args.length}`;
26
26
  }
27
27
  });
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exclude.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/exclude.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,MAAM;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;IAD7B,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB;IAI7C,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAMnD"}
1
+ {"version":3,"file":"exclude.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/exclude.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,MAAM;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;IAD7B,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB;IAI7C,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAInD"}
@@ -8,7 +8,7 @@ export class ExcludeUpdateClause extends Clause {
8
8
  return new ExcludeUpdateClause(fields);
9
9
  }
10
10
  mapIntoQuery(params) {
11
- params.text.push(this.fields.map(f => `${f} = EXCLUDED.${f}`)
12
- .join(', '));
11
+ params.text += this.fields.map(f => `${f} = EXCLUDED.${f}`)
12
+ .join(', ');
13
13
  }
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fragment.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/fragment.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAI,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,qBAAa,cAAe,SAAQ,MAAM;IAElC,QAAQ,CAAC,SAAS,EAAE,oBAAoB;IACxC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAFxB,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAIpD,YAAY,CAAC,MAAM,EAAE,oBAAoB;CASrD"}
1
+ {"version":3,"file":"fragment.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/fragment.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAI,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,qBAAa,cAAe,SAAQ,MAAM;IAElC,QAAQ,CAAC,SAAS,EAAE,oBAAoB;IACxC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAFxB,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAIpD,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAMrD"}
@@ -10,11 +10,8 @@ export class FragmentClause extends Clause {
10
10
  return new FragmentClause(strings, values);
11
11
  }
12
12
  mapIntoQuery(params) {
13
- const compiled = compileSqlTemplate({
14
- args: this.args,
15
- templates: this.templates
16
- }, params.args.length);
13
+ const compiled = compileSqlTemplate(this.templates, this.args, params.args.length);
17
14
  params.args.push(...compiled.args);
18
- params.text.push(compiled.text);
15
+ params.text += compiled.text;
19
16
  }
20
17
  }
@@ -10,6 +10,6 @@ export class IdentifierClause extends Clause {
10
10
  return new IdentifierClause(identificator);
11
11
  }
12
12
  mapIntoQuery(params) {
13
- params.text.push(`"${this.value}"`);
13
+ params.text += `"${this.value}"`;
14
14
  }
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"insert.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/insert.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,MAAM;IAE/D,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;IADzB,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAO5D,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAyBrD"}
1
+ {"version":3,"file":"insert.clause.d.ts","sourceRoot":"","sources":["../../src/clauses/insert.clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAE,SAAQ,MAAM;IAE/D,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;IADzB,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAO5D,YAAY,CAAC,MAAM,EAAE,oBAAoB;CAwBrD"}
@@ -13,20 +13,21 @@ export class InsertClause extends Clause {
13
13
  mapIntoQuery(params) {
14
14
  const columns = Object.keys(this.inserts[0]);
15
15
  const columnsCount = columns.length;
16
- params.text.push(`(${columns.join(', ')}) VALUES `);
16
+ params.text += `(${columns.join(', ')}) VALUES `;
17
17
  this.inserts.forEach((object, index) => {
18
18
  if (Object.keys(object).length !== columnsCount) {
19
19
  throw new Error(`all rows must have the same columns`);
20
20
  }
21
21
  if (index)
22
- params.text.push(', ');
23
- params.text.push(`(${Object.values(object).map(value => {
24
- if (value === undefined)
25
- return "DEFAULT";
26
- params.args.push(value);
27
- return `$${params.args.length}`;
28
- })
29
- .join(", ")})`);
22
+ params.text += ', ';
23
+ params.text +=
24
+ `(${Object.values(object).map(value => {
25
+ if (value === undefined)
26
+ return "DEFAULT";
27
+ params.args.push(value);
28
+ return `$${params.args.length}`;
29
+ })
30
+ .join(", ")})`;
30
31
  });
31
32
  }
32
33
  }
@@ -11,6 +11,6 @@ export class LiteralClause extends Clause {
11
11
  return new LiteralClause(value);
12
12
  }
13
13
  mapIntoQuery(params) {
14
- params.text.push(this.value);
14
+ params.text += this.value;
15
15
  }
16
16
  }
@@ -13,9 +13,9 @@ export class UpdateClause extends Clause {
13
13
  throw new Error('Update clause has no data to update. All values are `undefined`');
14
14
  entries.forEach(([key, value], index) => {
15
15
  if (index)
16
- params.text.push(', ');
16
+ params.text += ', ';
17
17
  params.args.push(value);
18
- params.text.push(`${key} = $${params.args.length}`);
18
+ params.text += `${key} = $${params.args.length}`;
19
19
  });
20
20
  }
21
21
  }
@@ -13,9 +13,9 @@ export class WhereClause extends Clause {
13
13
  throw new Error('Where clause has no data to update. All values are `undefined`');
14
14
  entries.forEach(([key, value], index) => {
15
15
  if (index)
16
- params.text.push(' AND ');
16
+ params.text += ' AND ';
17
17
  params.args.push(value);
18
- params.text.push(`"${key}" = $${params.args.length}`);
18
+ params.text += `"${key}" = $${params.args.length}`;
19
19
  });
20
20
  }
21
21
  }
@@ -1,4 +1,4 @@
1
- import { Branded } from "./types";
1
+ import { Branded, ColumnDescription } from "./types";
2
2
  import { Transaction } from "./transaction";
3
3
  import { Future } from 'fluent-future';
4
4
  import { PostgresError } from "./error";
@@ -12,10 +12,16 @@ export type ConnectionParams = {
12
12
  logLevel?: LogLevel;
13
13
  int8toBigint?: boolean;
14
14
  queryTimeout?: number;
15
+ batchCapacity?: number;
16
+ flushShedule?: "nextTick" | "Immediate";
15
17
  };
16
18
  export type StatementName = Branded<string, 'StatementName'>;
17
19
  export type QueryText = Branded<string, 'QueryText'>;
18
20
  export type ChannelName = Branded<string, "ChannelName">;
21
+ export type QueryMeta = {
22
+ statement: StatementName;
23
+ columns: ColumnDescription[];
24
+ };
19
25
  /**
20
26
  * Represents a single dedicated connection to the PostgreSQL database.
21
27
  *
@@ -48,21 +54,18 @@ export type ChannelName = Branded<string, "ChannelName">;
48
54
  */
49
55
  export declare class Connection {
50
56
  private readonly params;
51
- private _isFlushing;
57
+ private _activeBatch;
52
58
  private _isOpened;
53
59
  private _isReconnecting;
60
+ private _cachedBuffer;
54
61
  private _socket;
55
- private _writer;
56
- private _pipelinesQueue;
57
- private _described;
58
- private _describingPending;
62
+ private _batchQueue;
59
63
  private _parsed;
60
- private _parsingPending;
64
+ private _parsing;
61
65
  private _listeningCallbacks;
62
66
  private _stmtCounter;
63
67
  private _logLevel;
64
68
  private _nextStatement;
65
- private _checkOpened;
66
69
  private constructor();
67
70
  /**
68
71
  * Creates a new database connection.
@@ -83,6 +86,8 @@ export declare class Connection {
83
86
  * ```
84
87
  */
85
88
  static new(params: ConnectionParams): Future<Connection, PostgresError>;
89
+ private _registerBatch;
90
+ private _sync;
86
91
  /**
87
92
  * Executes a query using tagged template literals.
88
93
  *
@@ -193,17 +198,12 @@ export declare class Connection {
193
198
  */
194
199
  stream<T extends Record<string, any>>(templates: TemplateStringsArray, ...params: any[]): ReadableStream<T>;
195
200
  private _streamWithController;
196
- private _createQuery;
197
- private _createStream;
198
- private _writeQuery;
199
- private _registerFlush;
200
- private _flush;
201
201
  private _registerReconnect;
202
202
  private _resetConnectionState;
203
203
  private _reconnect;
204
204
  private _restoreSubscriptions;
205
205
  private _getCurrentQuery;
206
- private _rejectPipeline;
206
+ private _rejectAllBatches;
207
207
  private _handlePacket;
208
208
  /**
209
209
  * Checks if the connection is still alive and usable.
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}