@webda/postgres 4.0.0-beta.1 → 4.0.0-beta.3

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/lib/sqlstore.js CHANGED
@@ -1,61 +1,310 @@
1
- import { Store, StoreNotFoundError, StoreParameters, UpdateConditionFailError } from "@webda/core";
1
+ import { MemoryRepository, Store, StoreNotFoundError, StoreParameters, UpdateConditionFailError } from "@webda/core";
2
2
  import * as WebdaQL from "@webda/ql";
3
+ /** Base parameters for SQL-backed stores */
3
4
  export class SQLStoreParameters extends StoreParameters {
5
+ /**
6
+ * @override
7
+ * @param params - raw parameters
8
+ * @returns this
9
+ */
10
+ load(params) {
11
+ super.load(params);
12
+ return this;
13
+ }
4
14
  }
15
+ /** Extends ComparisonExpression to emit SQL-compatible string literals for JSONB comparisons */
5
16
  export class SQLComparisonExpression extends WebdaQL.ComparisonExpression {
17
+ /**
18
+ * Single quotes are doubled so a value can never close the literal. Backslashes stay
19
+ * literal: with `standard_conforming_strings` (PostgreSQL default) `\\` is not an
20
+ * escape character in '...' strings — only LIKE gives it a meaning.
21
+ *
22
+ * @override
23
+ * @param value - the value to stringify
24
+ * @returns SQL-compatible string literal
25
+ */
6
26
  toStringValue(value) {
7
27
  if (typeof value === "string") {
8
- return `'${value}'`;
28
+ return `'${value.replace(/'/g, "''")}'`;
9
29
  }
10
30
  return super.toStringValue(value);
11
31
  }
32
+ /**
33
+ * @override
34
+ * @returns SQL attribute expression with type cast
35
+ */
12
36
  toStringAttribute() {
13
37
  switch (typeof this.value) {
14
38
  case "boolean":
15
- return `CAST(${this.attribute[0]} AS boolean)`;
39
+ return `COALESCE(${this.attribute[0]}, false) AS boolean`;
16
40
  case "number":
17
- // coalesce(data#>>'{${this.attribute[0]}}', '0') ?
18
- return `CAST(${this.attribute[0]} AS bigint)`;
41
+ return `COALESCE(${this.attribute[0]}, 0) AS bigint`;
19
42
  default:
20
43
  return this.attribute[0];
21
44
  }
22
45
  }
23
46
  }
24
- export class SQLStore extends Store {
25
- sqlQuery(q, values) {
26
- q = this.completeQuery(q);
27
- return this.executeQuery(q, values);
47
+ /**
48
+ * PostgreSQL-backed repository for a single model class.
49
+ *
50
+ * Stores every object as a JSONB `data` column alongside a `uuid` primary-key
51
+ * column. All CRUD operations hit the pg client; the inherited MemoryRepository
52
+ * serialize/deserialize helpers are reused for JSON ↔ model-instance
53
+ * conversion.
54
+ */
55
+ /**
56
+ * PostgreSQL-backed repository for a single model class.
57
+ *
58
+ * Stores every object as a JSONB `data` column alongside a `uuid` primary-key
59
+ * column. All CRUD operations hit the pg client; the inherited MemoryRepository
60
+ * serialize/deserialize helpers are reused for JSON to model-instance conversion.
61
+ */
62
+ export class PostgresRepository extends MemoryRepository {
63
+ /**
64
+ * Create a new PostgresRepository.
65
+ * @param model - the model class
66
+ * @param pks - primary key field names
67
+ * @param client - the pg client or pool
68
+ * @param table - the table name
69
+ * @param separator - composite key separator
70
+ */
71
+ constructor(model, pks, client, table, separator) {
72
+ // Pass an empty Map — we do NOT use in-memory storage
73
+ super(model, pks, separator, new Map());
74
+ this.client = client;
75
+ this.table = table;
28
76
  }
29
77
  /**
30
- * Add the SELECT * FROM table if the query is not a full query
31
- * @param q query to complete
32
- * @returns
78
+ * The backing table name for this repository's model.
79
+ * @returns the table name
80
+ * @internal Not part of the @webda/models Repository interface.
33
81
  */
34
- completeQuery(q) {
35
- // Should add the INNER JOIN from map
36
- // this.parameters.map
37
- // SELECT * FROM table as t1 LEFT JOIN table2 as t2 ON t2.target = t1.uuid
38
- // if not same db: table2 is map_${name}_external
82
+ getTable() {
83
+ return this.table;
84
+ }
85
+ /**
86
+ * Ensure the backing table for this repository's model exists.
87
+ * Owns the per-model DDL previously held by PostgresStore.checkTable().
88
+ * @internal Not part of the @webda/models Repository interface.
89
+ */
90
+ async setupTable() {
91
+ await this.client.query(`CREATE TABLE IF NOT EXISTS ${this.table} (uuid VARCHAR(255) NOT NULL, data jsonb, CONSTRAINT ${this.table}_pkey PRIMARY KEY (uuid))`);
92
+ }
93
+ /**
94
+ * Map an expression attribute path array to a JSONB path expression.
95
+ * @param attribute - the attribute path
96
+ * @returns the JSONB path expression
97
+ */
98
+ mapExpressionAttribute(attribute) {
99
+ return `data#>>'{${attribute.join(",")}}'`;
100
+ }
101
+ /**
102
+ * Build a SQL WHERE sub-expression from a write-condition.
103
+ * @param writeCondition - the expected value
104
+ * @param writeConditionField - the field to check
105
+ * @param params - the existing params array (will be extended in place)
106
+ * @returns the SQL AND clause
107
+ */
108
+ getQueryCondition(writeCondition, writeConditionField, params) {
109
+ const condition = writeCondition instanceof Date ? writeCondition.toISOString() : writeCondition;
110
+ params.push(condition);
111
+ return ` AND data->>'${writeConditionField}'=$${params.length}`;
112
+ }
113
+ /**
114
+ * Run a raw SQL query and return typed results.
115
+ * @param q - the SQL query (WHERE clause or full query)
116
+ * @param values - the query parameters
117
+ * @returns the raw pg query result
118
+ */
119
+ async sqlQuery(q, values = []) {
39
120
  if (!q.startsWith("DELETE") && !q.startsWith("INSERT") && !q.startsWith("SELECT") && !q.startsWith("UPDATE")) {
40
- return `SELECT * FROM ${this.parameters.table} WHERE ${q}`;
121
+ q = `SELECT * FROM ${this.table} WHERE ${q}`;
41
122
  }
42
- return q;
123
+ return this.client.query(q, values);
43
124
  }
44
125
  /**
45
- * @override
126
+ * Deserialize a raw JSON object from the database into a model instance.
127
+ * @param data - the raw JSON object from the JSONB column
128
+ * @returns the model instance
46
129
  */
47
- async _delete(uid, writeCondition, writeConditionField) {
48
- let query = `DELETE FROM ${this.parameters.table} WHERE uuid=$1`;
49
- const args = [uid];
50
- if (writeCondition) {
51
- query += this.getQueryCondition(writeCondition, writeConditionField, args);
130
+ fromJSON(data) {
131
+ const instance = new this.model({});
132
+ if (typeof instance.load === "function") {
133
+ instance.load(data);
134
+ }
135
+ else {
136
+ Object.assign(instance, data);
137
+ }
138
+ return instance;
139
+ }
140
+ /** @override */
141
+ async get(primaryKey) {
142
+ const key = this.getPrimaryKey(primaryKey).toString();
143
+ const res = await this.sqlQuery(`SELECT data FROM ${this.table} WHERE uuid=$1`, [key]);
144
+ if (res.rowCount === 0) {
145
+ throw new Error(`Not found: ${key}`);
146
+ }
147
+ return this.fromJSON(res.rows[0].data);
148
+ }
149
+ /** @override */
150
+ async create(data, _save = true) {
151
+ // Persist the built item: a primary key generated by the model (e.g. UuidModel)
152
+ // must be the one stored in the row, not only the one used as key
153
+ const item = this.buildItem(data);
154
+ const key = this.getPrimaryKey(item).toString();
155
+ await this.client.query(`INSERT INTO ${this.table}(uuid,data) VALUES($1, $2)`, [key, JSON.stringify(item)]);
156
+ return item;
157
+ }
158
+ /** @override */
159
+ async update(data, conditionField, condition) {
160
+ const key = this.getPrimaryKey(data).toString();
161
+ const args = [JSON.stringify(data), key];
162
+ let q = `UPDATE ${this.table} SET data=$1 WHERE uuid=$2`;
163
+ if (conditionField) {
164
+ q += this.getQueryCondition(condition, conditionField, args);
165
+ }
166
+ const res = await this.client.query(q, args);
167
+ if (res.rowCount === 0) {
168
+ throw new UpdateConditionFailError(key, conditionField, condition);
169
+ }
170
+ }
171
+ /** @override */
172
+ async patch(primaryKey, data, conditionField, condition) {
173
+ const key = this.getPrimaryKey(primaryKey).toString();
174
+ const args = [JSON.stringify(data), key];
175
+ let q = `UPDATE ${this.table} SET data = data || $1::jsonb WHERE uuid=$2`;
176
+ if (conditionField) {
177
+ q += this.getQueryCondition(condition, conditionField, args);
178
+ }
179
+ const res = await this.client.query(q, args);
180
+ if (res.rowCount === 0) {
181
+ throw new UpdateConditionFailError(key, conditionField, condition);
182
+ }
183
+ }
184
+ /** @override */
185
+ async delete(primaryKey, conditionField, condition) {
186
+ const key = this.getPrimaryKey(primaryKey).toString();
187
+ const args = [key];
188
+ let q = `DELETE FROM ${this.table} WHERE uuid=$1`;
189
+ if (conditionField) {
190
+ q += this.getQueryCondition(condition, conditionField, args);
191
+ const res = await this.client.query(q, args);
192
+ if (res.rowCount === 0) {
193
+ throw new UpdateConditionFailError(key, conditionField, condition);
194
+ }
195
+ }
196
+ else {
197
+ await this.client.query(q, args);
198
+ }
199
+ }
200
+ /** @override */
201
+ async exists(primaryKey) {
202
+ const key = this.getPrimaryKey(primaryKey).toString();
203
+ const res = await this.client.query(`SELECT uuid FROM ${this.table} WHERE uuid=$1`, [key]);
204
+ return res.rowCount === 1;
205
+ }
206
+ /** @override */
207
+ async removeAttribute(primaryKey, attribute, conditionField, condition) {
208
+ const key = this.getPrimaryKey(primaryKey).toString();
209
+ const args = [String(attribute), key];
210
+ let q = `UPDATE ${this.table} SET data = data - $1 WHERE uuid=$2`;
211
+ if (conditionField) {
212
+ q += this.getQueryCondition(condition, conditionField, args);
213
+ }
214
+ const res = await this.client.query(q, args);
215
+ if (res.rowCount === 0) {
216
+ if (conditionField) {
217
+ throw new UpdateConditionFailError(key, conditionField, condition);
218
+ }
219
+ else {
220
+ throw new StoreNotFoundError(key, this.table);
221
+ }
52
222
  }
53
- let res = await this.sqlQuery(query, args);
54
- if (res.rowCount === 0 && writeCondition) {
55
- throw new UpdateConditionFailError(uid, writeConditionField, writeCondition);
223
+ }
224
+ /** @override */
225
+ async incrementAttributes(primaryKey, info, _conditionField, _condition) {
226
+ const key = this.getPrimaryKey(primaryKey).toString();
227
+ const updateDate = new Date();
228
+ const args = [key];
229
+ let data = "data";
230
+ const entries = Array.isArray(info)
231
+ ? info.map((e) => typeof e === "string" ? { property: e, value: 1 } : { property: e.property, value: e.value ?? 1 })
232
+ : Object.entries(info).map(([property, value]) => ({ property: String(property), value: value }));
233
+ entries.forEach((p, index) => {
234
+ args.push(p.value);
235
+ data = `jsonb_set(${data}, '{${p.property}}', (COALESCE(data->>'${p.property}','0')::int + $${index + 2})::text::jsonb)::jsonb`;
236
+ });
237
+ const q = `UPDATE ${this.table} SET data = jsonb_set(${data}, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
238
+ const res = await this.client.query(q, args);
239
+ if (res.rowCount === 0) {
240
+ throw new StoreNotFoundError(key, this.table);
241
+ }
242
+ }
243
+ /** @override */
244
+ async upsertItemToCollection(primaryKey, collection, item, index, itemWriteConditionField, itemWriteCondition) {
245
+ const key = this.getPrimaryKey(primaryKey).toString();
246
+ const attr = String(collection);
247
+ const updateDate = new Date();
248
+ const args = [key];
249
+ let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'],`;
250
+ if (index === undefined) {
251
+ q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) || '[${JSON.stringify(item)}]'::jsonb)::jsonb`;
252
+ }
253
+ else {
254
+ q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}', '${JSON.stringify(item)}'::jsonb)::jsonb)`;
255
+ }
256
+ q += `, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
257
+ if (itemWriteCondition !== undefined) {
258
+ args.push(itemWriteCondition);
259
+ q += ` AND (data#>>'{${attr}, ${index}}')::jsonb->>'${String(itemWriteConditionField)}'=$${args.length}`;
260
+ }
261
+ const res = await this.client.query(q, args);
262
+ if (res.rowCount === 0) {
263
+ if (itemWriteCondition !== undefined) {
264
+ throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
265
+ }
266
+ else {
267
+ throw new StoreNotFoundError(key, this.table);
268
+ }
56
269
  }
57
270
  }
271
+ /** @override */
272
+ async deleteItemFromCollection(primaryKey, collection, index, itemWriteConditionField, itemWriteCondition) {
273
+ const key = this.getPrimaryKey(primaryKey).toString();
274
+ const attr = String(collection);
275
+ const updateDate = new Date();
276
+ const args = [key];
277
+ let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'], COALESCE(`;
278
+ q += `((data->'${attr}')::jsonb - ${index})`;
279
+ q += `, '[]'::jsonb))::jsonb, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
280
+ if (itemWriteCondition !== undefined) {
281
+ args.push(itemWriteCondition);
282
+ q += ` AND (data#>>'{${attr}, ${index}}')::jsonb->>'${String(itemWriteConditionField)}'=$2`;
283
+ }
284
+ const res = await this.client.query(q, args);
285
+ if (res.rowCount === 0) {
286
+ if (itemWriteCondition !== undefined) {
287
+ throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
288
+ }
289
+ else {
290
+ throw new StoreNotFoundError(key, this.table);
291
+ }
292
+ }
293
+ }
294
+ /**
295
+ * Duplicate and translate a WebdaQL expression into SQL-friendly JSONB path expressions.
296
+ * @param expression - the WebdaQL expression
297
+ * @returns the translated expression
298
+ */
58
299
  duplicateExpression(expression) {
300
+ if (expression instanceof WebdaQL.LogicalExpression && expression.children.length === 0) {
301
+ // An empty AND / OR matches everything: emit an explicit SQL TRUE (not "( )")
302
+ return new WebdaQL.BooleanExpression(true);
303
+ }
304
+ if (expression instanceof WebdaQL.BooleanExpression) {
305
+ // TRUE / FALSE are valid SQL booleans
306
+ return new WebdaQL.BooleanExpression(expression.value);
307
+ }
59
308
  if (expression instanceof WebdaQL.AndExpression) {
60
309
  return new WebdaQL.AndExpression(expression.children.map(exp => this.duplicateExpression(exp)));
61
310
  }
@@ -68,100 +317,61 @@ export class SQLStore extends Store {
68
317
  return new WebdaQL.OrExpression(expression.value.map(v => new SQLComparisonExpression("=", attr, v)));
69
318
  }
70
319
  if (expression.operator === "CONTAINS") {
71
- return new SQLComparisonExpression(
72
- // Small hack
73
- "?", "(" + this.mapExpressionAttribute(expression.attribute) + ")::jsonb", expression.value);
320
+ return new SQLComparisonExpression("?", "(" + this.mapExpressionAttribute(expression.attribute) + ")::jsonb", expression.value);
74
321
  }
322
+ // IS NULL / IS NOT NULL map natively: `data#>>'{a}'` is NULL for a missing key and a JSON null
75
323
  return new SQLComparisonExpression(expression.operator, this.mapExpressionAttribute(expression.attribute), expression.value);
76
324
  }
325
+ return expression;
77
326
  }
78
- /**
79
- * @override
80
- */
81
- async find(query) {
82
- // Update condition
83
- let sql = this.duplicateExpression(query.filter).toString() || "TRUE";
84
- let offset = 0;
85
- offset = parseInt(query.continuationToken || "0", 10);
86
- if (query.orderBy && query.orderBy.length) {
327
+ /** @override — use SQL WHERE clause instead of in-memory scan */
328
+ async query(queryStr) {
329
+ const WebdaQLMod = await import("@webda/ql");
330
+ const parsed = WebdaQLMod.parse(queryStr);
331
+ let sql = this.duplicateExpression(parsed.filter).toString();
332
+ const offset = parseInt(parsed.continuationToken || "0", 10);
333
+ if (parsed.orderBy && parsed.orderBy.length) {
87
334
  sql +=
88
335
  " ORDER BY " +
89
- query.orderBy.map(c => `${this.mapExpressionAttribute(c.field.split("."))} ${c.direction}`).join(", ");
336
+ parsed.orderBy
337
+ .map((c) => `${this.mapExpressionAttribute(c.field.split("."))} ${c.direction}`)
338
+ .join(", ");
90
339
  }
91
- sql += ` LIMIT ${query.limit || "1000"}`;
340
+ const limit = parsed.limit || 1000;
341
+ sql += ` LIMIT ${limit}`;
92
342
  if (offset) {
93
343
  sql += ` OFFSET ${offset}`;
94
344
  }
95
- const results = (await this.sqlQuery(sql, [])).rows.map(c => this.initModel(c));
345
+ const res = await this.sqlQuery(sql, []);
346
+ const results = res.rows.map(r => this.fromJSON(r.data));
96
347
  return {
97
348
  results,
98
- continuationToken: query.limit <= results.length ? (offset + query.limit).toString() : undefined,
99
- filter: new WebdaQL.AndExpression([])
349
+ continuationToken: limit <= results.length ? (offset + limit).toString() : undefined
100
350
  };
101
351
  }
102
- /**
103
- * @override
104
- */
105
- async _exists(uid) {
106
- let res = await this.sqlQuery(`SELECT uuid FROM ${this.parameters.table} WHERE ${this.getModel().getUuidField()} = $1`, [this.getUuid(uid)]);
107
- return res.rowCount === 1;
108
- }
109
- /**
110
- * @override
111
- */
112
- async _get(uid, raiseIfNotFound) {
113
- let res = await this.sqlQuery(`${this.getModel().getUuidField()} = $1`, [this.getUuid(uid)]);
114
- if (res.rowCount === 0 && raiseIfNotFound) {
115
- throw new StoreNotFoundError(uid, this.getName());
116
- }
117
- return res.rows.shift();
118
- }
119
- /**
120
- * @override
121
- */
122
- async getAll(list) {
123
- if (list) {
124
- return (await this.sqlQuery(list.map((_, index) => `uuid=$${index + 1}`).join(" OR "), list)).rows;
125
- }
126
- return (await this.sqlQuery("TRUE", [])).rows;
127
- }
128
- /**
129
- * @override
130
- */
131
- async _update(object, uid, itemWriteCondition, itemWriteConditionField) {
132
- let q = `UPDATE ${this.parameters.table} SET data=$1 WHERE uuid=$2`;
133
- const args = [object.toStoredJSON(true), this.getUuid(uid)];
134
- if (itemWriteCondition) {
135
- q += this.getQueryCondition(itemWriteCondition, itemWriteConditionField, args);
136
- }
137
- let res = await this.sqlQuery(q, args);
138
- if (res.rowCount === 0) {
139
- throw new UpdateConditionFailError(uid, itemWriteConditionField, itemWriteCondition);
352
+ /** @override — iterate via paginated SQL queries */
353
+ async *iterate(queryStr) {
354
+ const WebdaQLMod = await import("@webda/ql");
355
+ const parsed = WebdaQLMod.parse(queryStr);
356
+ if (!parsed.limit) {
357
+ parsed.limit = 100;
140
358
  }
141
- return object;
142
- }
143
- getUuid(object) {
144
- let id;
145
- if (typeof object === "string") {
146
- id = object;
147
- }
148
- else {
149
- id = object.getUuid();
150
- }
151
- return id;
359
+ do {
360
+ const res = await this.query(parsed.toString?.() ?? queryStr);
361
+ for (const item of res.results) {
362
+ yield item;
363
+ }
364
+ parsed.continuationToken = res.continuationToken;
365
+ } while (parsed.continuationToken);
152
366
  }
153
367
  /**
154
- * @override
368
+ * Delete all rows from the table (used in tests).
155
369
  */
156
- async _save(object) {
157
- await this.sqlQuery(`INSERT INTO ${this.parameters.table}(uuid,data) VALUES($1, $2)`, [
158
- this.getUuid(object),
159
- object.toStoredJSON(true)
160
- ]);
161
- return object;
162
- }
163
370
  async __clean() {
164
- await this.sqlQuery(`DELETE FROM ${this.parameters.table}`, []);
371
+ await this.client.query(`DELETE FROM ${this.table}`, []);
165
372
  }
166
373
  }
374
+ /** Abstract base class for SQL-backed stores */
375
+ export class SQLStore extends Store {
376
+ }
167
377
  //# sourceMappingURL=sqlstore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAMrC,MAAM,OAAO,kBAAmB,SAAQ,eAAe;CAGtD;AAWD,MAAM,OAAO,uBAAwB,SAAQ,OAAO,CAAC,oBAAoB;IACvE,aAAa,CAAC,KAAkE;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,KAAK,GAAG,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB;QACf,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,SAAS;gBACZ,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC;YACjD,KAAK,QAAQ;gBACX,mDAAmD;gBACnD,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;YAChD;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAgB,QAAiF,SAAQ,KAG9G;IACC,QAAQ,CAAC,CAAS,EAAE,MAAc;QAChC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IASD;;;;OAIG;IACH,aAAa,CAAC,CAAS;QACrB,qCAAqC;QACrC,sBAAsB;QACtB,0EAA0E;QAC1E,iDAAiD;QACjD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7G,OAAO,iBAAiB,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,cAAmB,EAAE,mBAA2B;QACzE,IAAI,KAAK,GAAG,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,gBAAgB,CAAC;QACjE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAID,mBAAmB,CAAC,UAA8B;QAChD,IAAI,UAAU,YAAY,OAAO,CAAC,aAAa,EAAE,CAAC;YAChD,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;aAAM,IAAI,UAAU,YAAY,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,IAAI,UAAU,YAAY,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC9D,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC/D,OAAO,IAAI,OAAO,CAAC,YAAY,CAClB,UAAU,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CACjF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,IAAI,uBAAuB;gBAChC,aAAa;gBACR,GAAG,EACR,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,EACpE,UAAU,CAAC,KAAK,CACjB,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,uBAAuB,CAChC,UAAU,CAAC,QAAQ,EACnB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EACjD,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAoB;QAK7B,mBAAmB;QAEnB,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC;QACtE,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1C,GAAG;gBACD,YAAY;oBACZ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3G,CAAC;QACD,GAAG,IAAI,UAAU,KAAK,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,IAAI,WAAW,MAAM,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO;YACL,OAAO;YACP,iBAAiB,EAAE,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YAChG,MAAM,EAAE,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;SACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,oBAAoB,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,OAAO,EACxF,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CACpB,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,eAAyB;QAC/C,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;YAC1C,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAe;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrG,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAUD;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,kBAAwB,EAAE,uBAAgC;QAChG,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,4BAA4B,CAAC;QACpE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,kBAAkB,EAAE,CAAC;YACvB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,wBAAwB,CAAC,GAAG,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,MAAiC;QACvC,IAAI,EAAU,CAAC;QACf,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,EAAE,GAAG,MAAM,CAAC;QACd,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAS;QACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,4BAA4B,EAAE;YACpF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAErH,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAOrC,4CAA4C;AAC5C,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IAIrD;;;;OAIG;IACH,IAAI,CAAC,MAAW;QACd,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAaD,gGAAgG;AAChG,MAAM,OAAO,uBAAwB,SAAQ,OAAO,CAAC,oBAAoB;IACvE;;;;;;;;OAQG;IACH,aAAa,CAAC,KAAkE;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,SAAS;gBACZ,OAAO,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC5D,KAAK,QAAQ;gBACX,OAAO,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACvD;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH;;;;;;GAMG;AACH,MAAM,OAAO,kBAAyC,SAAQ,gBAAmB;IAC/E;;;;;;;OAOG;IACH,YACE,KAAQ,EACR,GAAa,EACM,MAAiB,EACjB,KAAa,EAChC,SAAkB;QAElB,sDAAsD;QACtD,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,GAAG,EAAyB,CAAC,CAAC;sBAL5C,MAAM;qBACN,KAAK;IAK1B,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,8BAA8B,IAAI,CAAC,KAAK,wDAAwD,IAAI,CAAC,KAAK,2BAA2B,CACtI,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,SAAmB;QACxC,OAAO,YAAY,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,cAAmB,EAAE,mBAA2B,EAAE,MAAa;QAC/E,MAAM,SAAS,GAAG,cAAc,YAAY,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QACjG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,gBAAgB,mBAAmB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,QAAQ,CAAC,CAAS,EAAE,MAAM,GAAU,EAAE;QACpD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7G,CAAC,GAAG,iBAAiB,IAAI,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACO,QAAQ,CAAC,IAAS;QAC1B,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAoB,CAAC;QACvD,IAAI,OAAQ,QAAgB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChD,QAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,QAAe,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,GAAG,CAAC,UAAe;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvF,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,MAAM,CAAC,IAAS,EAAE,KAAK,GAAY,IAAI;QAC3C,gFAAgF;QAChF,kEAAkE;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,4BAA4B,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,MAAM,CAAC,IAAS,EAAE,cAAoB,EAAE,SAAe;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,GAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,4BAA4B,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAwB,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,cAAwB,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,KAAK,CAAC,UAAe,EAAE,IAAS,EAAE,cAAoB,EAAE,SAAe;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,GAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,6CAA6C,CAAC;QAC1E,IAAI,cAAc,EAAE,CAAC;YACnB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAwB,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,cAAwB,EAAE,SAAS,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,MAAM,CAAC,UAAe,EAAE,cAAoB,EAAE,SAAe;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,GAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,eAAe,IAAI,CAAC,KAAK,gBAAgB,CAAC;QAClD,IAAI,cAAc,EAAE,CAAC;YACnB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAwB,EAAE,IAAI,CAAC,CAAC;YACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,cAAwB,EAAE,SAAS,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,MAAM,CAAC,UAAe;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3F,OAAO,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,eAAe,CAAC,UAAe,EAAE,SAAc,EAAE,cAAoB,EAAE,SAAe;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,GAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,qCAAqC,CAAC;QAClE,IAAI,cAAc,EAAE,CAAC;YACnB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,cAAwB,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,cAAwB,EAAE,SAAS,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,kBAAkB,CAAC,GAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,mBAAmB,CAAC,UAAe,EAAE,IAAS,EAAE,eAAqB,EAAE,UAAgB;QAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,MAAM,CAAC;QAClB,MAAM,OAAO,GAA+C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAClB,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAClG;YACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC,CAAC,CAAC;QAC9G,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,GAAG,aAAa,IAAI,OAAO,CAAC,CAAC,QAAQ,yBAAyB,CAAC,CAAC,QAAQ,kBAAkB,KAAK,GAAG,CAAC,wBAAwB,CAAC;QAClI,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,yBAAyB,IAAI,wBAAwB,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC;QACtI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,kBAAkB,CAAC,GAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,sBAAsB,CAC1B,UAAe,EACf,UAAe,EACf,IAAS,EACT,KAAc,EACd,uBAA6B,EAC7B,kBAAwB;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,uDAAuD,IAAI,KAAK,CAAC;QAC7F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,CAAC,IAAI,oBAAoB,IAAI,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACvG,CAAC;aAAM,CAAC;YACN,CAAC,IAAI,8BAA8B,IAAI,8BAA8B,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC5H,CAAC;QACD,CAAC,IAAI,wBAAwB,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC;QAChF,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC9B,CAAC,IAAI,kBAAkB,IAAI,KAAK,KAAK,iBAAiB,MAAM,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3G,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACtG,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,kBAAkB,CAAC,GAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,wBAAwB,CAC5B,UAAe,EACf,UAAe,EACf,KAAa,EACb,uBAA6B,EAC7B,kBAAwB;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAU,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,uDAAuD,IAAI,eAAe,CAAC;QACvG,CAAC,IAAI,YAAY,IAAI,eAAe,KAAK,GAAG,CAAC;QAC7C,CAAC,IAAI,8CAA8C,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC;QACtG,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC9B,CAAC,IAAI,kBAAkB,IAAI,KAAK,KAAK,iBAAiB,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC;QAC9F,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,wBAAwB,CAAC,GAAU,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACtG,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,kBAAkB,CAAC,GAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,UAA8B;QAChD,IAAI,UAAU,YAAY,OAAO,CAAC,iBAAiB,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxF,8EAA8E;YAC9E,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,UAAU,YAAY,OAAO,CAAC,iBAAiB,EAAE,CAAC;YACpD,sCAAsC;YACtC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,UAAU,YAAY,OAAO,CAAC,aAAa,EAAE,CAAC;YAChD,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;aAAM,IAAI,UAAU,YAAY,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,IAAI,UAAU,YAAY,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC9D,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC/D,OAAO,IAAI,OAAO,CAAC,YAAY,CAClB,UAAU,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CACjF,CAAC;YACJ,CAAC;YACD,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACvC,OAAO,IAAI,uBAAuB,CAC3B,GAAG,EACR,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,EACpE,UAAU,CAAC,KAAK,CACjB,CAAC;YACJ,CAAC;YACD,+FAA+F;YAC/F,OAAO,IAAI,uBAAuB,CAChC,UAAU,CAAC,QAAQ,EACnB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EACjD,UAAU,CAAC,KAAK,CACjB,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAE,MAAc,CAAC,iBAAiB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACtE,IAAK,MAAc,CAAC,OAAO,IAAK,MAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9D,GAAG;gBACD,YAAY;oBACX,MAAc,CAAC,OAAO;yBACpB,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;yBACpF,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK,IAAI,IAAI,CAAC;QAC5C,GAAG,IAAI,UAAU,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,IAAI,WAAW,MAAM,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,OAAO;YACL,OAAO;YACP,iBAAiB,EAAE,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SACrF,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,CAAC,OAAO,CAAC,QAAgB;QAC7B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAQ,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;QACrB,CAAC;QACD,GAAG,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,QAAQ,CAAC,CAAC;YAC9D,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC;YACb,CAAC;YACD,MAAM,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;QACnD,CAAC,QAAQ,MAAM,CAAC,iBAAiB,EAAE;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,OAAgB,QAA4D,SAAQ,KAAQ;CAEjG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webda/postgres",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.3",
4
4
  "description": "Implements Postgres on webda",
5
5
  "keywords": [
6
6
  "postgres",
@@ -10,35 +10,18 @@
10
10
  "repository": "git://github.com/loopingz/webda.io.git",
11
11
  "main": "lib/index.js",
12
12
  "typings": "lib/index.d.ts",
13
- "scripts": {
14
- "build": "webda build",
15
- "build:watch": "webda build --watch",
16
- "pretest": "npm run build",
17
- "lint": "prettier --check src/**/*",
18
- "lint:fix": "prettier --write src/**/*",
19
- "test": "c8 mocha"
20
- },
21
13
  "dependencies": {
22
- "@webda/core": "^4.0.0-beta.1",
23
- "pg": "^8.7.1"
14
+ "pg": "^8.20.0",
15
+ "@webda/core": "4.0.0-beta.3",
16
+ "@webda/ql": "4.0.0-beta.3",
17
+ "@webda/utils": "4.0.0-beta.3",
18
+ "@webda/workout": "4.0.0-beta.3"
24
19
  },
25
20
  "files": [
26
21
  "lib",
27
22
  "test",
28
23
  "webda.module.json"
29
24
  ],
30
- "c8": {
31
- "report-dir": "./reports",
32
- "reporter": [
33
- "html",
34
- "lcov",
35
- "json",
36
- "text"
37
- ],
38
- "exclude": [
39
- "**/*.spec.ts"
40
- ]
41
- },
42
25
  "homepage": "https://webda.io",
43
26
  "publishConfig": {
44
27
  "access": "public"
@@ -47,18 +30,38 @@
47
30
  "namespace": "Webda"
48
31
  },
49
32
  "devDependencies": {
50
- "@types/node": "18.11.13",
51
- "@webda/shell": "^4.0.0-beta.1"
33
+ "@types/node": "25.5.0",
34
+ "@types/pg": "^8.11.10",
35
+ "@vitest/coverage-v8": "^4.1.2",
36
+ "jscodeshift": "^17.3.0",
37
+ "skott": "^0.35.8",
38
+ "tsx": "^4.21.0",
39
+ "typescript": "7.1.0-dev.20260929.1",
40
+ "vite": "^6.0.0",
41
+ "vitest": "^4.1.2",
42
+ "@webda/test": "4.0.0-beta.3",
43
+ "@webda/compiler": "^4.0.0-beta.3"
52
44
  },
53
45
  "type": "module",
54
46
  "engines": {
55
- "node": ">=18.0.0"
47
+ "node": ">=22.0.0"
56
48
  },
57
49
  "nx": {
58
50
  "implicitDependencies": [
59
- "@webda/core",
60
- "@webda/shell"
51
+ "@webda/core"
61
52
  ]
62
53
  },
63
- "gitHead": "9f0c12d5e43b3484794b2a49c5701b8b9675c4a8"
64
- }
54
+ "license": "LGPL-3.0-only",
55
+ "scripts": {
56
+ "build": "webdac build",
57
+ "build:watch": "webdac build --watch",
58
+ "pretest": "npm run build",
59
+ "lint": "eslint",
60
+ "lint:fix": "eslint --fix",
61
+ "test": "vitest run",
62
+ "format": "prettier --check src/**/*",
63
+ "format:fix": "prettier --write src/**/*",
64
+ "deps:graph": "skott --showCircularDependencies --no-trackTypeOnlyDependencies --displayMode=raw -e .ts",
65
+ "codemod": "jscodeshift --parser=ts --extensions=tsx,ts -t ../codemod/current.mjs src"
66
+ }
67
+ }