@m2k-5f/pgtx 2.8.1 → 2.8.2

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 (46) hide show
  1. package/README.md +107 -47
  2. package/dist/clauses/array.clause.d.ts.map +1 -1
  3. package/dist/clauses/array.clause.js +0 -5
  4. package/dist/clauses/iden.caluse.d.ts.map +1 -1
  5. package/dist/clauses/iden.caluse.js +0 -2
  6. package/dist/clauses/insert.clause.d.ts.map +1 -1
  7. package/dist/clauses/insert.clause.js +5 -6
  8. package/dist/clauses/literal.clause.d.ts.map +1 -1
  9. package/dist/clauses/literal.clause.js +0 -3
  10. package/dist/clauses/update.clause.d.ts.map +1 -1
  11. package/dist/clauses/update.clause.js +0 -2
  12. package/dist/clauses/where.clause.d.ts.map +1 -1
  13. package/dist/clauses/where.clause.js +0 -2
  14. package/dist/connection.d.ts +3 -2
  15. package/dist/connection.d.ts.map +1 -1
  16. package/dist/connection.js +76 -41
  17. package/dist/error.d.ts +1 -0
  18. package/dist/error.d.ts.map +1 -1
  19. package/dist/error.js +1 -0
  20. package/dist/index.d.ts +30 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/pool.d.ts +2 -0
  24. package/dist/pool.d.ts.map +1 -1
  25. package/dist/pool.js +6 -0
  26. package/dist/protocol/connection-request-writer.d.ts +1 -1
  27. package/dist/protocol/connection-request-writer.d.ts.map +1 -1
  28. package/dist/protocol/connection-request-writer.js +1 -3
  29. package/dist/protocol/connection-response-reader.d.ts +1 -1
  30. package/dist/protocol/connection-response-reader.js +1 -1
  31. package/dist/protocol/constants.js +8 -8
  32. package/dist/protocol/types.d.ts +0 -2
  33. package/dist/protocol/types.d.ts.map +1 -1
  34. package/dist/protocol/types.js +2 -2
  35. package/dist/query.d.ts +9 -11
  36. package/dist/query.d.ts.map +1 -1
  37. package/dist/query.js +8 -10
  38. package/dist/transaction.d.ts +10 -2
  39. package/dist/transaction.d.ts.map +1 -1
  40. package/dist/transaction.js +78 -23
  41. package/dist/types.d.ts +2 -2
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils.d.ts +0 -2
  44. package/dist/utils.d.ts.map +1 -1
  45. package/dist/utils.js +0 -46
  46. package/package.json +1 -1
package/dist/query.js CHANGED
@@ -7,12 +7,11 @@ export class Query {
7
7
  }
8
8
  }
9
9
  export class CollectQuery extends Query {
10
- constructor(meta, text, args, columns, resolvers, timeout) {
10
+ constructor(text, args, meta, resolvers, timeout) {
11
11
  super(timeout);
12
- this.meta = meta;
13
12
  this.text = text;
14
13
  this.args = args;
15
- this.columns = columns;
14
+ this.meta = meta;
16
15
  this.resolvers = resolvers;
17
16
  this._rows = [];
18
17
  }
@@ -29,11 +28,11 @@ export class CollectQuery extends Query {
29
28
  }
30
29
  }
31
30
  export class ExecuteQuery extends Query {
32
- constructor(meta, text, args, resolvers, timeout) {
31
+ constructor(text, args, meta, resolvers, timeout) {
33
32
  super(timeout);
34
- this.meta = meta;
35
33
  this.text = text;
36
34
  this.args = args;
35
+ this.meta = meta;
37
36
  this.resolvers = resolvers;
38
37
  }
39
38
  error(cause) {
@@ -46,13 +45,12 @@ export class ExecuteQuery extends Query {
46
45
  }
47
46
  }
48
47
  export class StreamQuery extends Query {
49
- constructor(meta, text, args, controller, columns, timeout) {
48
+ constructor(text, args, meta, controller, timeout) {
50
49
  super(timeout);
51
- this.meta = meta;
52
50
  this.text = text;
53
51
  this.args = args;
52
+ this.meta = meta;
54
53
  this.controller = controller;
55
- this.columns = columns;
56
54
  }
57
55
  push(value) {
58
56
  try {
@@ -73,10 +71,10 @@ export class StreamQuery extends Query {
73
71
  }
74
72
  }
75
73
  export class ParseQuery extends Query {
76
- constructor(meta, text, resolvers, timeout) {
74
+ constructor(text, meta, resolvers, timeout) {
77
75
  super(timeout);
78
- this.meta = meta;
79
76
  this.text = text;
77
+ this.meta = meta;
80
78
  this.resolvers = resolvers;
81
79
  }
82
80
  error(cause) {
@@ -25,14 +25,22 @@ export declare class Transaction {
25
25
  /**
26
26
  * Executes a query within the current transaction.
27
27
  */
28
- query<T extends Row>(strings: TemplateStringsArray, ...values: any[]): Future<T[], PostgresError>;
28
+ query<T extends Row>(templates: TemplateStringsArray, ...params: any[]): Future<T[], PostgresError>;
29
29
  /**
30
30
  * Like {@link query}, but for statements that don't return rows (INSERT/UPDATE/DDL/etc).
31
31
  *
32
32
  * @example
33
33
  * await tx.execute`UPDATE users SET name = ${name} WHERE id = ${id}`
34
34
  */
35
- execute(strings: TemplateStringsArray, ...params: any[]): Future<void, PostgresError>;
35
+ execute(templates: TemplateStringsArray, ...params: any[]): Future<void, PostgresError>;
36
+ /**
37
+ * Streams query results as a `ReadableStream`, without buffering rows in memory.
38
+ * Ideal for large result sets or piping straight into an HTTP response.
39
+ *
40
+ * @example
41
+ * for await (const row of conn.stream<User>`SELECT * FROM orders`) { ... }
42
+ */
43
+ stream<T extends Row>(templates: TemplateStringsArray, ...params: any[]): ReadableStream<T>;
36
44
  /**
37
45
  * Creates a sub-transaction using PostgreSQL SAVEPOINT.
38
46
  * If the callback throws, only the actions within this savepoint are rolled back.
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAwB,aAAa,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAE7B;;;GAGG;AACH,qBAAa,WAAW;IAIhB,QAAQ,CAAC,IAAI,EAAE,UAAU;IAH7B,OAAO,CAAC,UAAU,CAAiB;gBAGtB,IAAI,EAAE,UAAU;IAG7B;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;OAEG;IACI,MAAM;IAQb;;OAEG;IACI,QAAQ;IAQf;;OAEG;IACI,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAM3E;;;;;OAKG;IACI,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAM9D;;;;;;;;;OASG;IACI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;CAW9E"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAuE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5G,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAG7B;;;GAGG;AACH,qBAAa,WAAW;IAIhB,QAAQ,CAAC,IAAI,EAAE,UAAU;IAH7B,OAAO,CAAC,UAAU,CAAiB;gBAGtB,IAAI,EAAE,UAAU;IAI7B;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAGD;;OAEG;IACI,MAAM;IAMb;;OAEG;IACI,QAAQ;IAMf;;OAEG;IACI,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAyB7E;;;;;OAKG;IACI,OAAO,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAyBhE;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;IAsCvE;;;;;;;;;OASG;IACI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC;CAS9E"}
@@ -1,6 +1,7 @@
1
1
  import { Begin, Future } from "fluent-future";
2
2
  import { IdentifierClause } from "./clauses";
3
- import { ErrTransactionClosed } from "./error";
3
+ import { ErrConnectionClosed, ErrTransactionClosed } from "./error";
4
+ import { compileSqlTemplate } from "./utils";
4
5
  /**
5
6
  * Represents an active SQL transaction.
6
7
  * All queries are executed on a single dedicated connection.
@@ -20,29 +21,36 @@ export class Transaction {
20
21
  * Commits the current transaction.
21
22
  */
22
23
  commit() {
23
- if (this.isFinished)
24
- return Future.reject(ErrTransactionClosed);
25
- return this.conn.query `COMMIT`
26
- .tap(() => this.isFinished = true)
27
- .map(() => { });
24
+ return this.execute `COMMIT`
25
+ .tap(() => this.isFinished = true);
28
26
  }
29
27
  /**
30
28
  * Rolls back the current transaction.
31
29
  */
32
30
  rollback() {
33
- if (this.isFinished)
34
- return Future.reject(ErrTransactionClosed);
35
- return this.conn.query `ROLLBACK`
36
- .tap(() => this.isFinished = true)
37
- .map(() => { });
31
+ return this.execute `ROLLBACK`
32
+ .tap(() => this.isFinished = true);
38
33
  }
39
34
  /**
40
35
  * Executes a query within the current transaction.
41
36
  */
42
- query(strings, ...values) {
43
- if (this.isFinished)
37
+ query(templates, ...params) {
38
+ if (this.isFinished) {
39
+ this.conn['_logError'](ErrTransactionClosed);
44
40
  return Future.reject(ErrTransactionClosed);
45
- return this.conn.query(strings, ...values);
41
+ }
42
+ if (this.conn.isClosed) {
43
+ this.conn['_logError'](ErrConnectionClosed);
44
+ return Future.reject(ErrConnectionClosed);
45
+ }
46
+ const { text, args } = compileSqlTemplate(templates, params);
47
+ const resolvers = Future.withResolvers();
48
+ if (this.conn['_reconnecting']) {
49
+ return this.conn['_reconnecting']
50
+ .tapErr(err => this.conn['_logError'](err))
51
+ .andThen(() => this.conn['_performQuery'](text, args, resolvers));
52
+ }
53
+ return this.conn['_performQuery'](text, args, resolvers);
46
54
  }
47
55
  /**
48
56
  * Like {@link query}, but for statements that don't return rows (INSERT/UPDATE/DDL/etc).
@@ -50,10 +58,59 @@ export class Transaction {
50
58
  * @example
51
59
  * await tx.execute`UPDATE users SET name = ${name} WHERE id = ${id}`
52
60
  */
53
- execute(strings, ...params) {
54
- if (this.isFinished)
61
+ execute(templates, ...params) {
62
+ if (this.isFinished) {
63
+ this.conn['_logError'](ErrTransactionClosed);
55
64
  return Future.reject(ErrTransactionClosed);
56
- return this.conn.execute(strings, ...params);
65
+ }
66
+ if (this.conn.isClosed) {
67
+ this.conn['_logError'](ErrConnectionClosed);
68
+ return Future.reject(ErrConnectionClosed);
69
+ }
70
+ const { text, args } = compileSqlTemplate(templates, params);
71
+ const resolvers = Future.withResolvers();
72
+ if (this.conn['_reconnecting']) {
73
+ return this.conn['_reconnecting']
74
+ .tapErr(err => this.conn['_logError'](err))
75
+ .andThen(() => this.conn['_performExecute'](text, args, resolvers));
76
+ }
77
+ return this.conn['_performExecute'](text, args, resolvers);
78
+ }
79
+ /**
80
+ * Streams query results as a `ReadableStream`, without buffering rows in memory.
81
+ * Ideal for large result sets or piping straight into an HTTP response.
82
+ *
83
+ * @example
84
+ * for await (const row of conn.stream<User>`SELECT * FROM orders`) { ... }
85
+ */
86
+ stream(templates, ...params) {
87
+ if (this.isFinished) {
88
+ this.conn['_logError'](ErrTransactionClosed);
89
+ throw ErrTransactionClosed;
90
+ }
91
+ if (this.conn.isClosed) {
92
+ this.conn['_logError'](ErrConnectionClosed);
93
+ throw ErrConnectionClosed;
94
+ }
95
+ const { text, args } = compileSqlTemplate(templates, params);
96
+ let controller;
97
+ const stream = new ReadableStream({
98
+ start: c => {
99
+ controller = c;
100
+ }
101
+ });
102
+ if (this.conn['_reconnecting']) {
103
+ this.conn['_reconnecting']
104
+ .tap(() => this.conn['_performStream'](text, args, controller))
105
+ .tapErr(err => {
106
+ this.conn['_logError'](err);
107
+ controller.error(err);
108
+ })
109
+ .recover();
110
+ return stream;
111
+ }
112
+ this.conn['_performStream'](text, args, controller);
113
+ return stream;
57
114
  }
58
115
  /**
59
116
  * Creates a sub-transaction using PostgreSQL SAVEPOINT.
@@ -66,12 +123,10 @@ export class Transaction {
66
123
  * });
67
124
  */
68
125
  savepoint(name, callback) {
69
- if (this.isFinished)
70
- return Future.reject(ErrTransactionClosed);
71
126
  return Begin()
72
- .andThen(() => this.conn.query `SAVEPOINT ${IdentifierClause.create(name)}`)
73
- .andThen(() => Future.of(callback(this))
74
- .tap(() => this.conn.query `RELEASE SAVEPOINT ${IdentifierClause.create(name)}`)
75
- .tapErr(() => this.conn.query `ROLLBACK TO SAVEPOINT ${IdentifierClause.create(name)}`));
127
+ .andThen(() => this.query `SAVEPOINT ${IdentifierClause.create(name)}`)
128
+ .andThen(() => Future.of(() => callback(this))
129
+ .tap(() => this.query `RELEASE SAVEPOINT ${IdentifierClause.create(name)}`)
130
+ .tapErr(() => this.query `ROLLBACK TO SAVEPOINT ${IdentifierClause.create(name)}`));
76
131
  }
77
132
  }
package/dist/types.d.ts CHANGED
@@ -29,7 +29,7 @@ export type ConnectionPartialConfig = {
29
29
  logLevel?: LogLevel;
30
30
  int8toBigint?: boolean;
31
31
  queryTimeout?: number;
32
- syncShedule?: "beforeMicrotask" | "afterMicrotask" | "Immediate";
32
+ syncSсhedule?: "beforeMicrotask" | "afterMicrotask" | "Immediate";
33
33
  ssl?: SSLMode;
34
34
  caPath?: string;
35
35
  };
@@ -42,7 +42,7 @@ export type ConnectionConfig = {
42
42
  logLevel: LogLevel;
43
43
  int8toBigint: boolean;
44
44
  queryTimeout: number;
45
- syncShedule: "beforeMicrotask" | "afterMicrotask" | "Immediate";
45
+ syncSсhedule: "beforeMicrotask" | "afterMicrotask" | "Immediate";
46
46
  ssl: SSLMode;
47
47
  caPath?: string;
48
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -3,6 +3,4 @@ export declare function compileSqlTemplate(templates: TemplateStringsArray, args
3
3
  args: unknown[];
4
4
  text: QueryText;
5
5
  };
6
- export declare function prepareObject(obj: any): string;
7
- export declare function prepareValue(value: unknown): string | null;
8
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,SAAS,EAAE,MAAM,SAAS,CAAA;AAI3E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI;;UAGpD,SAAS;EAkCtD;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAM9C;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA0C1D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,SAAS,EAAE,MAAM,SAAS,CAAA;AAIzD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI;;UAGpD,SAAS;EA2BtD"}
package/dist/utils.js CHANGED
@@ -18,10 +18,6 @@ export function compileSqlTemplate(templates, args, argOffset = 0) {
18
18
  value.mapIntoQuery(query);
19
19
  }
20
20
  else {
21
- if (value === undefined) {
22
- throw new TypeError(`Query parameter at position ${query.args.length + argOffset + 1} is undefined.
23
- Use null if you want NULL in SQL, or ensure the value is defined.`);
24
- }
25
21
  query.args.push(value);
26
22
  query.text += `$${query.args.length + argOffset}`;
27
23
  }
@@ -29,45 +25,3 @@ export function compileSqlTemplate(templates, args, argOffset = 0) {
29
25
  !args.some(value => value instanceof Clause) && cache.set(templates, query.text);
30
26
  return query;
31
27
  }
32
- export function prepareObject(obj) {
33
- if (obj && typeof obj.toPG === "function") {
34
- return JSON.stringify(obj.toPG());
35
- }
36
- return JSON.stringify(obj);
37
- }
38
- export function prepareValue(value) {
39
- if (value === null || value === undefined) {
40
- return null;
41
- }
42
- if (typeof value === "object") {
43
- if (value instanceof Date) {
44
- return value.toISOString();
45
- }
46
- if (Buffer.isBuffer(value) || value instanceof Uint8Array) {
47
- return "\\x" + Buffer
48
- .from(value.buffer, value.byteOffset, value.byteLength)
49
- .toString("hex");
50
- }
51
- if (Array.isArray(value)) {
52
- const elements = value.map(el => {
53
- if (el === null || el === undefined)
54
- return "NULL";
55
- if (typeof el === "boolean")
56
- return el ? "true" : "false";
57
- if (typeof el === "object") {
58
- const res = prepareValue(el);
59
- return `"${res?.replace(/"/g, '\\"')}"`;
60
- }
61
- if (typeof el === "string") {
62
- return `"${el
63
- .replace(/\\/g, "\\\\")
64
- .replace(/"/g, '\\"')}"`;
65
- }
66
- return String(el);
67
- });
68
- return `{${elements.join(",")}}`;
69
- }
70
- return prepareObject(value);
71
- }
72
- return String(value);
73
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m2k-5f/pgtx",
3
- "version": "2.8.1",
3
+ "version": "2.8.2",
4
4
  "type": "module",
5
5
  "description": "Blazing-fast PostgreSQL driver with pipeline support.",
6
6
  "files": [