@juit/pgproxy-persister 1.2.0 → 1.3.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/index.cjs CHANGED
@@ -21,7 +21,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // index.ts
22
22
  var index_exports = {};
23
23
  __export(index_exports, {
24
- SQL: () => import_pgproxy_client.SQL
24
+ SQL: () => import_pgproxy_client.SQL,
25
+ escape: () => import_pgproxy_client.escape
25
26
  });
26
27
  module.exports = __toCommonJS(index_exports);
27
28
  var import_pgproxy_client = require("@juit/pgproxy-client");
@@ -30,6 +31,7 @@ __reExport(index_exports, require("./persister.cjs"), module.exports);
30
31
  // Annotate the CommonJS export names for ESM import in node:
31
32
  0 && (module.exports = {
32
33
  SQL,
34
+ escape,
33
35
  ...require("./model.cjs"),
34
36
  ...require("./persister.cjs")
35
37
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAAoB;AACpB,0BAAc,wBAFd;AAGA,0BAAc,4BAHd;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,4BAA4B;AAC5B,0BAAc,wBAFd;AAGA,0BAAc,4BAHd;",
5
5
  "names": []
6
6
  }
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { SQL } from '@juit/pgproxy-client';
1
+ export { escape, SQL } from '@juit/pgproxy-client';
2
2
  export * from './model';
3
3
  export * from './persister';
package/dist/index.mjs CHANGED
@@ -1,8 +1,9 @@
1
1
  // index.ts
2
- import { SQL } from "@juit/pgproxy-client";
2
+ import { escape, SQL } from "@juit/pgproxy-client";
3
3
  export * from "./model.mjs";
4
4
  export * from "./persister.mjs";
5
5
  export {
6
- SQL
6
+ SQL,
7
+ escape
7
8
  };
8
9
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "mappings": ";AACA,SAAS,WAAW;AACpB,cAAc;AACd,cAAc;",
4
+ "mappings": ";AACA,SAAS,QAAQ,WAAW;AAC5B,cAAc;AACd,cAAc;",
5
5
  "names": []
6
6
  }
package/dist/model.cjs CHANGED
@@ -20,10 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // model.ts
21
21
  var model_exports = {};
22
22
  __export(model_exports, {
23
- Model: () => Model,
24
- escape: () => escape
23
+ Model: () => Model
25
24
  });
26
25
  module.exports = __toCommonJS(model_exports);
26
+ var import_pgproxy_client = require("@juit/pgproxy-client");
27
27
  function assert(assertion, message) {
28
28
  if (!assertion) throw new Error(message);
29
29
  }
@@ -39,10 +39,10 @@ function where(query, params) {
39
39
  for (const [column, value] of Object.entries(query)) {
40
40
  if (value === void 0) continue;
41
41
  if (value === null) {
42
- conditions.push(`${escape(column)} IS NULL`);
42
+ conditions.push(`${(0, import_pgproxy_client.escape)(column)} IS NULL`);
43
43
  } else {
44
44
  const index = params.push(value);
45
- conditions.push(`${escape(column)}=$${index}`);
45
+ conditions.push(`${(0, import_pgproxy_client.escape)(column)}=$${index}`);
46
46
  }
47
47
  count++;
48
48
  }
@@ -59,12 +59,12 @@ function insert(schema, table, query) {
59
59
  const values = [];
60
60
  for (const [column, value] of Object.entries(query)) {
61
61
  if (value === void 0) continue;
62
- const index = columns.push(`${escape(column)}`);
62
+ const index = columns.push(`${(0, import_pgproxy_client.escape)(column)}`);
63
63
  placeholders.push(`$${index}`);
64
64
  values.push(value);
65
65
  }
66
66
  return [
67
- columns.length == 0 ? `INSERT INTO ${escape(schema)}.${escape(table)} DEFAULT VALUES RETURNING *` : `INSERT INTO ${escape(schema)}.${escape(table)} (${columns.join()}) VALUES (${placeholders.join()}) RETURNING *`,
67
+ columns.length == 0 ? `INSERT INTO ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)} DEFAULT VALUES RETURNING *` : `INSERT INTO ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)} (${columns.join()}) VALUES (${placeholders.join()}) RETURNING *`,
68
68
  values
69
69
  ];
70
70
  }
@@ -79,22 +79,22 @@ function upsert(schema, table, keys, data) {
79
79
  const values = [];
80
80
  for (const [column, value] of Object.entries(object)) {
81
81
  if (value === void 0) continue;
82
- const index = columns.push(`${escape(column)}`);
82
+ const index = columns.push(`${(0, import_pgproxy_client.escape)(column)}`);
83
83
  placeholders.push(`$${index}`);
84
84
  values.push(value);
85
85
  }
86
86
  const conflictKeys = [];
87
87
  for (const [column, value] of Object.entries(keys)) {
88
- if (value !== void 0) conflictKeys.push(escape(column));
88
+ if (value !== void 0) conflictKeys.push((0, import_pgproxy_client.escape)(column));
89
89
  }
90
90
  const updates = [];
91
91
  for (const [column, value] of Object.entries(data)) {
92
92
  if (value === void 0) continue;
93
- updates.push(`${escape(column)}=$${updates.length + columns.length + 1}`);
93
+ updates.push(`${(0, import_pgproxy_client.escape)(column)}=$${updates.length + columns.length + 1}`);
94
94
  values.push(value);
95
95
  }
96
96
  return [
97
- `INSERT INTO ${escape(schema)}.${escape(table)} (${columns.join()}) VALUES (${placeholders.join()}) ON CONFLICT (${conflictKeys.join(",")}) DO UPDATE SET ${updates.join(",")} RETURNING *`,
97
+ `INSERT INTO ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)} (${columns.join()}) VALUES (${placeholders.join()}) ON CONFLICT (${conflictKeys.join(",")}) DO UPDATE SET ${updates.join(",")} RETURNING *`,
98
98
  values
99
99
  ];
100
100
  }
@@ -106,15 +106,15 @@ function select(schema, table, query, sort, offset, limit) {
106
106
  const order = [];
107
107
  for (const field of sort) {
108
108
  if (field.toLowerCase().endsWith(" desc")) {
109
- order.push(`${escape(field.slice(0, -5))} DESC`);
109
+ order.push(`${(0, import_pgproxy_client.escape)(field.slice(0, -5))} DESC`);
110
110
  } else if (field.toLowerCase().endsWith(" asc")) {
111
- order.push(`${escape(field.slice(0, -4))} ASC`);
111
+ order.push(`${(0, import_pgproxy_client.escape)(field.slice(0, -4))} ASC`);
112
112
  } else {
113
- order.push(escape(field));
113
+ order.push((0, import_pgproxy_client.escape)(field));
114
114
  }
115
115
  }
116
116
  const orderby = order.length == 0 ? "" : ` ORDER BY ${order.join(",")}`;
117
- let sql = `SELECT * FROM ${escape(schema)}.${escape(table)}${conditions}${orderby}`;
117
+ let sql = `SELECT * FROM ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)}${conditions}${orderby}`;
118
118
  if (offset && offset > 0) {
119
119
  sql += ` OFFSET $${values.length + 1}`;
120
120
  values.push(Math.floor(offset));
@@ -133,19 +133,19 @@ function update(schema, table, query, patch) {
133
133
  for (const [column, value] of Object.entries(patch)) {
134
134
  if (value === void 0) continue;
135
135
  const index = values.push(value);
136
- patches.push(`${escape(column)}=$${index}`);
136
+ patches.push(`${(0, import_pgproxy_client.escape)(column)}=$${index}`);
137
137
  }
138
138
  if (patches.length === 0) return select(schema, table, query, [], 0, 0);
139
139
  const [conditions, , count] = where(query, values);
140
140
  assert(count > 0, "Cowardly refusing to run UPDATE with empty query");
141
- const statement = `UPDATE ${escape(schema)}.${escape(table)} SET ${patches.join()}${conditions} RETURNING *`;
141
+ const statement = `UPDATE ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)} SET ${patches.join()}${conditions} RETURNING *`;
142
142
  return [statement, values];
143
143
  }
144
144
  function del(schema, table, query) {
145
145
  assertObject(query, "Called DELETE with a non-object query");
146
146
  const [conditions, values, count] = where(query, []);
147
147
  assert(count > 0, "Cowardly refusing to run DELETE with empty query");
148
- return [`DELETE FROM ${escape(schema)}.${escape(table)}${conditions} RETURNING *`, values];
148
+ return [`DELETE FROM ${(0, import_pgproxy_client.escape)(schema)}.${(0, import_pgproxy_client.escape)(table)}${conditions} RETURNING *`, values];
149
149
  }
150
150
  var ModelImpl = class {
151
151
  _connection;
@@ -190,13 +190,9 @@ var ModelImpl = class {
190
190
  return result.rowCount;
191
191
  }
192
192
  };
193
- function escape(str) {
194
- return `"${str.replaceAll('"', '""').trim()}"`;
195
- }
196
193
  var Model = ModelImpl;
197
194
  // Annotate the CommonJS export names for ESM import in node:
198
195
  0 && (module.exports = {
199
- Model,
200
- escape
196
+ Model
201
197
  });
202
198
  //# sourceMappingURL=model.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/model.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/dist/model.d.ts CHANGED
@@ -95,7 +95,5 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
95
95
  export interface ModelConstructor {
96
96
  new <Schema extends Record<string, ColumnDefinition>>(queryable: PGQueryable, table: string): Model<Schema>;
97
97
  }
98
- /** Escape a PostgreSQL identifier (table, column, ... names) */
99
- export declare function escape(str: string): string;
100
98
  export declare const Model: ModelConstructor;
101
99
  export {};
package/dist/model.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  // model.ts
2
+ import { escape } from "@juit/pgproxy-client";
2
3
  function assert(assertion, message) {
3
4
  if (!assertion) throw new Error(message);
4
5
  }
@@ -165,12 +166,8 @@ var ModelImpl = class {
165
166
  return result.rowCount;
166
167
  }
167
168
  };
168
- function escape(str) {
169
- return `"${str.replaceAll('"', '""').trim()}"`;
170
- }
171
169
  var Model = ModelImpl;
172
170
  export {
173
- Model,
174
- escape
171
+ Model
175
172
  };
176
173
  //# sourceMappingURL=model.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/model.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
6
10
  var __export = (target, all) => {
7
11
  for (var name in all)
8
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +20,47 @@ var __copyProps = (to, from, except, desc) => {
16
20
  return to;
17
21
  };
18
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var __using = (stack, value, async) => {
24
+ if (value != null) {
25
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
26
+ var dispose, inner;
27
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
28
+ if (dispose === void 0) {
29
+ dispose = value[__knownSymbol("dispose")];
30
+ if (async) inner = dispose;
31
+ }
32
+ if (typeof dispose !== "function") __typeError("Object not disposable");
33
+ if (inner) dispose = function() {
34
+ try {
35
+ inner.call(this);
36
+ } catch (e) {
37
+ return Promise.reject(e);
38
+ }
39
+ };
40
+ stack.push([async, dispose, value]);
41
+ } else if (async) {
42
+ stack.push([async]);
43
+ }
44
+ return value;
45
+ };
46
+ var __callDispose = (stack, error, hasError) => {
47
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
48
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
49
+ };
50
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
51
+ var next = (it) => {
52
+ while (it = stack.pop()) {
53
+ try {
54
+ var result = it[1] && it[1].call(it[2]);
55
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
56
+ } catch (e) {
57
+ fail(e);
58
+ }
59
+ }
60
+ if (hasError) throw error;
61
+ };
62
+ return next();
63
+ };
19
64
 
20
65
  // persister.ts
21
66
  var persister_exports = {};
@@ -26,8 +71,9 @@ module.exports = __toCommonJS(persister_exports);
26
71
  var import_pgproxy_client = require("@juit/pgproxy-client");
27
72
  var import_model = require("./model.cjs");
28
73
  var ConnectionImpl = class {
29
- constructor(_connection) {
30
- this._connection = _connection;
74
+ _connection;
75
+ constructor(connection) {
76
+ this._connection = connection;
31
77
  }
32
78
  begin() {
33
79
  return this._connection.begin();
@@ -45,6 +91,12 @@ var ConnectionImpl = class {
45
91
  in(table) {
46
92
  return new import_model.Model(this._connection, table);
47
93
  }
94
+ async close() {
95
+ await this._connection.close();
96
+ }
97
+ [Symbol.asyncDispose]() {
98
+ return this.close();
99
+ }
48
100
  };
49
101
  var PersisterImpl = class {
50
102
  _client;
@@ -54,6 +106,9 @@ var PersisterImpl = class {
54
106
  get registry() {
55
107
  return this._client.registry;
56
108
  }
109
+ get url() {
110
+ return this._client.url;
111
+ }
57
112
  async ping() {
58
113
  await this._client.query("SELECT now()");
59
114
  }
@@ -66,11 +121,28 @@ var PersisterImpl = class {
66
121
  await this._client.destroy();
67
122
  }
68
123
  async connect(consumer) {
69
- return await this._client.connect((conn) => consumer(new ConnectionImpl(conn)));
124
+ if (!consumer) {
125
+ const connection = await this._client.connect();
126
+ return new ConnectionImpl(connection);
127
+ } else {
128
+ var _stack = [];
129
+ try {
130
+ const connection = __using(_stack, await this._client.connect(), true);
131
+ return await consumer(new ConnectionImpl(connection));
132
+ } catch (_) {
133
+ var _error = _, _hasError = true;
134
+ } finally {
135
+ var _promise = __callDispose(_stack, _error, _hasError);
136
+ _promise && await _promise;
137
+ }
138
+ }
70
139
  }
71
140
  in(table) {
72
141
  return new import_model.Model(this._client, table);
73
142
  }
143
+ [Symbol.asyncDispose]() {
144
+ return this.destroy();
145
+ }
74
146
  };
75
147
  var Persister = PersisterImpl;
76
148
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/persister.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyB;AAEzB,mBAAsB;AAwEtB,IAAM,iBAAN,MAA2D;AAAA,EACzD,YACY,aACV;AADU;AAAA,EACT;AAAA,EAEH,QAA0B;AACxB,WAAO,KAAK,YAAY,MAAM;AAAA,EAChC;AAAA,EAEA,SAAwB;AACtB,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEA,WAA0B;AACxB,WAAO,KAAK,YAAY,SAAS;AAAA,EACnC;AAAA,EAEA,MAGE,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IACxB,OAAO,gBAAgB,WACnB,CAAE,aAAa,WAAY,IAC3B,CAAE,YAAY,OAAO,YAAY,MAAO;AAC9C,WAAO,KAAK,YAAY,MAAM,MAAM,MAAM;AAAA,EAC5C;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,mBAAM,KAAK,aAAa,KAAK;AAAA,EAC1C;AACF;AAEA,IAAM,gBAAN,MAAmE;AAAA,EACzD;AAAA,EAER,YAAY,KAAoB;AAC9B,SAAK,UAAU,IAAI,+BAAS,GAAG;AAAA,EACjC;AAAA,EAEA,IAAI,WAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,QAAQ,MAAM,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,MAGJ,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IAAI,OAAO,gBAAgB,WACnD,CAAE,aAAa,WAAY,IAAI,CAAE,YAAY,OAAO,YAAY,MAAO;AAEzE,UAAM,SAAS,KAAK,QAAQ,MAAkB,MAAM,MAAM;AAC1D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAyB;AAC7B,UAAM,KAAK,QAAQ,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAW,UAA2C;AAC1D,WAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,SAAS,SAAS,IAAI,eAAe,IAAI,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,mBAAM,KAAK,SAAS,KAAK;AAAA,EACtC;AACF;AAMO,IAAM,YAAkC;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyB;AAEzB,mBAAsB;AAuFtB,IAAM,iBAAN,MAAqE;AAAA,EAClD;AAAA,EAEjB,YAAY,YAA0B;AACpC,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,QAA0B;AACxB,WAAO,KAAK,YAAY,MAAM;AAAA,EAChC;AAAA,EAEA,SAAwB;AACtB,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEA,WAA0B;AACxB,WAAO,KAAK,YAAY,SAAS;AAAA,EACnC;AAAA,EAEA,MAGE,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IACxB,OAAO,gBAAgB,WACnB,CAAE,aAAa,WAAY,IAC3B,CAAE,YAAY,OAAO,YAAY,MAAO;AAC9C,WAAO,KAAK,YAAY,MAAM,MAAM,MAAM;AAAA,EAC5C;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,mBAAM,KAAK,aAAa,KAAK;AAAA,EAC1C;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,KAAK,YAAY,MAAM;AAAA,EAC/B;AAAA,EAEA,CAAC,OAAO,YAAY,IAAmB;AACrC,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;AAEA,IAAM,gBAAN,MAAmE;AAAA,EAChD;AAAA,EAEjB,YAAY,KAAsC;AAChD,SAAK,UAAU,IAAI,+BAAS,GAAU;AAAA,EACxC;AAAA,EAEA,IAAI,WAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,MAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,QAAQ,MAAM,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,MAGJ,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IAAI,OAAO,gBAAgB,WACnD,CAAE,aAAa,WAAY,IAAI,CAAE,YAAY,OAAO,YAAY,MAAO;AAEzE,UAAM,SAAS,KAAK,QAAQ,MAAkB,MAAM,MAAM;AAC1D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAyB;AAC7B,UAAM,KAAK,QAAQ,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAW,UAA2E;AAC1F,QAAI,CAAE,UAAU;AACd,YAAM,aAAa,MAAM,KAAK,QAAQ,QAAQ;AAC9C,aAAO,IAAI,eAAuB,UAAU;AAAA,IAC9C,OAAO;AACL;AAAA;AAAA,cAAY,aAAa,sBAAM,KAAK,QAAQ,QAAQ,GAA3B;AACzB,eAAO,MAAM,SAAS,IAAI,eAAuB,UAAU,CAAC;AAAA,eAD5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,mBAAM,KAAK,SAAS,KAAK;AAAA,EACtC;AAAA,EAEA,CAAC,OAAO,YAAY,IAAmB;AACrC,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;AAMO,IAAM,YAAkC;",
5
5
  "names": []
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { PGClient } from '@juit/pgproxy-client';
2
2
  import { Model } from './model';
3
- import type { PGTransactionable } from '@juit/pgproxy-client';
3
+ import type { PGClientOptions, PGTransactionable } from '@juit/pgproxy-client';
4
4
  import type { ColumnDefinition } from './model';
5
5
  export type InferModelType<Schema, Table extends string & keyof Schema> = Schema[Table] extends Record<string, ColumnDefinition> ? Model<Schema[Table]> : never;
6
6
  export interface ModelProvider<Schema> {
@@ -19,12 +19,24 @@ export interface Connection<Schema> extends ModelProvider<Schema>, PGTransaction
19
19
  */
20
20
  in<Table extends string>(table: Table & keyof Schema): InferModelType<Schema, Table & keyof Schema>;
21
21
  }
22
+ /**
23
+ * A connection to a database that can be asynchronously disposed of.
24
+ */
25
+ export interface DisposableConnection<Schema> extends Connection<Schema>, AsyncDisposable {
26
+ /** Forcedly close the underlying connection to the database */
27
+ close(): Promise<void>;
28
+ }
22
29
  /** A consumer for a {@link Connection} */
23
30
  export type Consumer<Schema, T> = (connection: Connection<Schema>) => T | PromiseLike<T>;
24
31
  /** Our main `Persister` interface */
25
- export interface Persister<Schema> extends ModelProvider<Schema>, PGClient {
32
+ export interface Persister<Schema = any> extends ModelProvider<Schema>, PGClient {
26
33
  /** Ping... Just ping the database. */
27
34
  ping(): Promise<void>;
35
+ /**
36
+ * Connect to the database and return an _async disposable_
37
+ * {@link PGConnection}.
38
+ */
39
+ connect(): Promise<DisposableConnection<Schema>>;
28
40
  /**
29
41
  * Connect to the database to execute a number of different queries.
30
42
  *
@@ -44,5 +56,6 @@ export interface Persister<Schema> extends ModelProvider<Schema>, PGClient {
44
56
  /** Constructor for {@link Persister} instances */
45
57
  export interface PersisterConstructor {
46
58
  new <Schema = Record<string, Record<string, ColumnDefinition>>>(url?: string | URL): Persister<Schema>;
59
+ new <Schema = Record<string, Record<string, ColumnDefinition>>>(options: PGClientOptions): Persister<Schema>;
47
60
  }
48
61
  export declare const Persister: PersisterConstructor;
@@ -1,9 +1,56 @@
1
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
2
+ var __typeError = (msg) => {
3
+ throw TypeError(msg);
4
+ };
5
+ var __using = (stack, value, async) => {
6
+ if (value != null) {
7
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
8
+ var dispose, inner;
9
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
10
+ if (dispose === void 0) {
11
+ dispose = value[__knownSymbol("dispose")];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") __typeError("Object not disposable");
15
+ if (inner) dispose = function() {
16
+ try {
17
+ inner.call(this);
18
+ } catch (e) {
19
+ return Promise.reject(e);
20
+ }
21
+ };
22
+ stack.push([async, dispose, value]);
23
+ } else if (async) {
24
+ stack.push([async]);
25
+ }
26
+ return value;
27
+ };
28
+ var __callDispose = (stack, error, hasError) => {
29
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
30
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
31
+ };
32
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
33
+ var next = (it) => {
34
+ while (it = stack.pop()) {
35
+ try {
36
+ var result = it[1] && it[1].call(it[2]);
37
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
38
+ } catch (e) {
39
+ fail(e);
40
+ }
41
+ }
42
+ if (hasError) throw error;
43
+ };
44
+ return next();
45
+ };
46
+
1
47
  // persister.ts
2
48
  import { PGClient } from "@juit/pgproxy-client";
3
49
  import { Model } from "./model.mjs";
4
50
  var ConnectionImpl = class {
5
- constructor(_connection) {
6
- this._connection = _connection;
51
+ _connection;
52
+ constructor(connection) {
53
+ this._connection = connection;
7
54
  }
8
55
  begin() {
9
56
  return this._connection.begin();
@@ -21,6 +68,12 @@ var ConnectionImpl = class {
21
68
  in(table) {
22
69
  return new Model(this._connection, table);
23
70
  }
71
+ async close() {
72
+ await this._connection.close();
73
+ }
74
+ [Symbol.asyncDispose]() {
75
+ return this.close();
76
+ }
24
77
  };
25
78
  var PersisterImpl = class {
26
79
  _client;
@@ -30,6 +83,9 @@ var PersisterImpl = class {
30
83
  get registry() {
31
84
  return this._client.registry;
32
85
  }
86
+ get url() {
87
+ return this._client.url;
88
+ }
33
89
  async ping() {
34
90
  await this._client.query("SELECT now()");
35
91
  }
@@ -42,11 +98,28 @@ var PersisterImpl = class {
42
98
  await this._client.destroy();
43
99
  }
44
100
  async connect(consumer) {
45
- return await this._client.connect((conn) => consumer(new ConnectionImpl(conn)));
101
+ if (!consumer) {
102
+ const connection = await this._client.connect();
103
+ return new ConnectionImpl(connection);
104
+ } else {
105
+ var _stack = [];
106
+ try {
107
+ const connection = __using(_stack, await this._client.connect(), true);
108
+ return await consumer(new ConnectionImpl(connection));
109
+ } catch (_) {
110
+ var _error = _, _hasError = true;
111
+ } finally {
112
+ var _promise = __callDispose(_stack, _error, _hasError);
113
+ _promise && await _promise;
114
+ }
115
+ }
46
116
  }
47
117
  in(table) {
48
118
  return new Model(this._client, table);
49
119
  }
120
+ [Symbol.asyncDispose]() {
121
+ return this.destroy();
122
+ }
50
123
  };
51
124
  var Persister = PersisterImpl;
52
125
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/persister.ts"],
4
- "mappings": ";AAAA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AAwEtB,IAAM,iBAAN,MAA2D;AAAA,EACzD,YACY,aACV;AADU;AAAA,EACT;AAAA,EAEH,QAA0B;AACxB,WAAO,KAAK,YAAY,MAAM;AAAA,EAChC;AAAA,EAEA,SAAwB;AACtB,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEA,WAA0B;AACxB,WAAO,KAAK,YAAY,SAAS;AAAA,EACnC;AAAA,EAEA,MAGE,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IACxB,OAAO,gBAAgB,WACnB,CAAE,aAAa,WAAY,IAC3B,CAAE,YAAY,OAAO,YAAY,MAAO;AAC9C,WAAO,KAAK,YAAY,MAAM,MAAM,MAAM;AAAA,EAC5C;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,MAAM,KAAK,aAAa,KAAK;AAAA,EAC1C;AACF;AAEA,IAAM,gBAAN,MAAmE;AAAA,EACzD;AAAA,EAER,YAAY,KAAoB;AAC9B,SAAK,UAAU,IAAI,SAAS,GAAG;AAAA,EACjC;AAAA,EAEA,IAAI,WAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,QAAQ,MAAM,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,MAGJ,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IAAI,OAAO,gBAAgB,WACnD,CAAE,aAAa,WAAY,IAAI,CAAE,YAAY,OAAO,YAAY,MAAO;AAEzE,UAAM,SAAS,KAAK,QAAQ,MAAkB,MAAM,MAAM;AAC1D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAyB;AAC7B,UAAM,KAAK,QAAQ,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAW,UAA2C;AAC1D,WAAO,MAAM,KAAK,QAAQ,QAAQ,CAAC,SAAS,SAAS,IAAI,eAAe,IAAI,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,MAAM,KAAK,SAAS,KAAK;AAAA,EACtC;AACF;AAMO,IAAM,YAAkC;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AAuFtB,IAAM,iBAAN,MAAqE;AAAA,EAClD;AAAA,EAEjB,YAAY,YAA0B;AACpC,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,QAA0B;AACxB,WAAO,KAAK,YAAY,MAAM;AAAA,EAChC;AAAA,EAEA,SAAwB;AACtB,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEA,WAA0B;AACxB,WAAO,KAAK,YAAY,SAAS;AAAA,EACnC;AAAA,EAEA,MAGE,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IACxB,OAAO,gBAAgB,WACnB,CAAE,aAAa,WAAY,IAC3B,CAAE,YAAY,OAAO,YAAY,MAAO;AAC9C,WAAO,KAAK,YAAY,MAAM,MAAM,MAAM;AAAA,EAC5C;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,MAAM,KAAK,aAAa,KAAK;AAAA,EAC1C;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,KAAK,YAAY,MAAM;AAAA,EAC/B;AAAA,EAEA,CAAC,OAAO,YAAY,IAAmB;AACrC,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;AAEA,IAAM,gBAAN,MAAmE;AAAA,EAChD;AAAA,EAEjB,YAAY,KAAsC;AAChD,SAAK,UAAU,IAAI,SAAS,GAAU;AAAA,EACxC;AAAA,EAEA,IAAI,WAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,IAAI,MAAqB;AACvB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,KAAK,QAAQ,MAAM,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,MAGJ,aAA+B,cAA8B,CAAC,GAAkC;AAChG,UAAM,CAAE,MAAM,SAAS,CAAC,CAAE,IAAI,OAAO,gBAAgB,WACnD,CAAE,aAAa,WAAY,IAAI,CAAE,YAAY,OAAO,YAAY,MAAO;AAEzE,UAAM,SAAS,KAAK,QAAQ,MAAkB,MAAM,MAAM;AAC1D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAyB;AAC7B,UAAM,KAAK,QAAQ,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAW,UAA2E;AAC1F,QAAI,CAAE,UAAU;AACd,YAAM,aAAa,MAAM,KAAK,QAAQ,QAAQ;AAC9C,aAAO,IAAI,eAAuB,UAAU;AAAA,IAC9C,OAAO;AACL;AAAA;AAAA,cAAY,aAAa,sBAAM,KAAK,QAAQ,QAAQ,GAA3B;AACzB,eAAO,MAAM,SAAS,IAAI,eAAuB,UAAU,CAAC;AAAA,eAD5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,GAAyB,OAA2E;AAClG,WAAO,IAAI,MAAM,KAAK,SAAS,KAAK;AAAA,EACtC;AAAA,EAEA,CAAC,OAAO,YAAY,IAAmB;AACrC,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;AAMO,IAAM,YAAkC;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juit/pgproxy-persister",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -53,7 +53,7 @@
53
53
  "src/"
54
54
  ],
55
55
  "dependencies": {
56
- "@juit/pgproxy-client": "1.2.0",
57
- "@juit/pgproxy-types": "1.2.0"
56
+ "@juit/pgproxy-client": "1.3.0",
57
+ "@juit/pgproxy-types": "1.3.0"
58
58
  }
59
59
  }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /* Export Persister and Model */
2
- export { SQL } from '@juit/pgproxy-client'
2
+ export { escape, SQL } from '@juit/pgproxy-client'
3
3
  export * from './model'
4
4
  export * from './persister'
package/src/model.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { escape } from '@juit/pgproxy-client'
2
+
1
3
  import type { PGQueryable } from '@juit/pgproxy-client'
2
4
 
3
5
  /* ========================================================================== *
@@ -464,9 +466,4 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
464
466
  * EXPORTS *
465
467
  * ========================================================================== */
466
468
 
467
- /** Escape a PostgreSQL identifier (table, column, ... names) */
468
- export function escape(str: string): string {
469
- return `"${str.replaceAll('"', '""').trim()}"`
470
- }
471
-
472
469
  export const Model: ModelConstructor = ModelImpl
package/src/persister.ts CHANGED
@@ -2,7 +2,7 @@ import { PGClient } from '@juit/pgproxy-client'
2
2
 
3
3
  import { Model } from './model'
4
4
 
5
- import type { PGQuery, PGResult, PGTransactionable } from '@juit/pgproxy-client'
5
+ import type { PGClientOptions, PGConnection, PGQuery, PGResult, PGTransactionable } from '@juit/pgproxy-client'
6
6
  import type { Registry } from '@juit/pgproxy-types'
7
7
  import type { ColumnDefinition } from './model'
8
8
 
@@ -37,14 +37,28 @@ export interface Connection<Schema> extends ModelProvider<Schema>, PGTransaction
37
37
  in<Table extends string>(table: Table & keyof Schema): InferModelType<Schema, Table & keyof Schema>
38
38
  }
39
39
 
40
+ /**
41
+ * A connection to a database that can be asynchronously disposed of.
42
+ */
43
+ export interface DisposableConnection<Schema> extends Connection<Schema>, AsyncDisposable {
44
+ /** Forcedly close the underlying connection to the database */
45
+ close(): Promise<void>
46
+ }
47
+
40
48
  /** A consumer for a {@link Connection} */
41
49
  export type Consumer<Schema, T> = (connection: Connection<Schema>) => T | PromiseLike<T>
42
50
 
43
51
  /** Our main `Persister` interface */
44
- export interface Persister<Schema> extends ModelProvider<Schema>, PGClient {
52
+ export interface Persister<Schema = any> extends ModelProvider<Schema>, PGClient {
45
53
  /** Ping... Just ping the database. */
46
54
  ping(): Promise<void>;
47
55
 
56
+ /**
57
+ * Connect to the database and return an _async disposable_
58
+ * {@link PGConnection}.
59
+ */
60
+ connect(): Promise<DisposableConnection<Schema>>
61
+
48
62
  /**
49
63
  * Connect to the database to execute a number of different queries.
50
64
  *
@@ -66,16 +80,19 @@ export interface Persister<Schema> extends ModelProvider<Schema>, PGClient {
66
80
  /** Constructor for {@link Persister} instances */
67
81
  export interface PersisterConstructor {
68
82
  new <Schema = Record<string, Record<string, ColumnDefinition>>>(url?: string | URL): Persister<Schema>
83
+ new <Schema = Record<string, Record<string, ColumnDefinition>>>(options: PGClientOptions): Persister<Schema>
69
84
  }
70
85
 
71
86
  /* ========================================================================== *
72
87
  * IMPLEMENTATION *
73
88
  * ========================================================================== */
74
89
 
75
- class ConnectionImpl<Schema> implements Connection<Schema> {
76
- constructor(
77
- private _connection: PGTransactionable,
78
- ) {}
90
+ class ConnectionImpl<Schema> implements DisposableConnection<Schema> {
91
+ private readonly _connection: PGConnection
92
+
93
+ constructor(connection: PGConnection) {
94
+ this._connection = connection
95
+ }
79
96
 
80
97
  begin(): Promise<boolean> {
81
98
  return this._connection.begin()
@@ -103,19 +120,31 @@ class ConnectionImpl<Schema> implements Connection<Schema> {
103
120
  in<Table extends string>(table: Table & keyof Schema): InferModelType<Schema, Table & keyof Schema> {
104
121
  return new Model(this._connection, table) as InferModelType<Schema, Table & keyof Schema>
105
122
  }
123
+
124
+ async close(): Promise<void> {
125
+ await this._connection.close()
126
+ }
127
+
128
+ [Symbol.asyncDispose](): Promise<void> {
129
+ return this.close()
130
+ }
106
131
  }
107
132
 
108
133
  class PersisterImpl<Schema> implements PGClient, Persister<Schema> {
109
- private _client: PGClient
134
+ private readonly _client: PGClient
110
135
 
111
- constructor(url?: string | URL) {
112
- this._client = new PGClient(url)
136
+ constructor(url?: string | URL | PGClientOptions) {
137
+ this._client = new PGClient(url as any)
113
138
  }
114
139
 
115
140
  get registry(): Registry {
116
141
  return this._client.registry
117
142
  }
118
143
 
144
+ get url(): Readonly<URL> {
145
+ return this._client.url
146
+ }
147
+
119
148
  async ping(): Promise<void> {
120
149
  await this._client.query('SELECT now()')
121
150
  }
@@ -135,13 +164,23 @@ class PersisterImpl<Schema> implements PGClient, Persister<Schema> {
135
164
  await this._client.destroy()
136
165
  }
137
166
 
138
- async connect<T>(consumer: Consumer<Schema, T>): Promise<T> {
139
- return await this._client.connect((conn) => consumer(new ConnectionImpl(conn)))
167
+ async connect<T>(consumer?: Consumer<Schema, T>): Promise<T | DisposableConnection<Schema>> {
168
+ if (! consumer) {
169
+ const connection = await this._client.connect()
170
+ return new ConnectionImpl<Schema>(connection)
171
+ } else {
172
+ await using connection = await this._client.connect()
173
+ return await consumer(new ConnectionImpl<Schema>(connection))
174
+ }
140
175
  }
141
176
 
142
177
  in<Table extends string>(table: Table & keyof Schema): InferModelType<Schema, Table & keyof Schema> {
143
178
  return new Model(this._client, table) as InferModelType<Schema, Table & keyof Schema>
144
179
  }
180
+
181
+ [Symbol.asyncDispose](): Promise<void> {
182
+ return this.destroy()
183
+ }
145
184
  }
146
185
 
147
186
  /* ========================================================================== *