@webda/postgres 4.0.0-beta.2 → 4.0.0-beta.4

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,322 @@
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
+ * @param prepare - awaited before every statement (e.g. to ensure the table exists)
71
+ */
72
+ constructor(model, pks, client, table, separator, prepare) {
73
+ // Pass an empty Map — we do NOT use in-memory storage
74
+ super(model, pks, separator, new Map());
75
+ this.client = client;
76
+ this.table = table;
77
+ this.prepare = prepare;
78
+ }
79
+ /**
80
+ * The backing table name for this repository's model.
81
+ * @returns the table name
82
+ * @internal Not part of the @webda/models Repository interface.
83
+ */
84
+ getTable() {
85
+ return this.table;
86
+ }
87
+ /**
88
+ * Ensure the backing table for this repository's model exists.
89
+ * Owns the per-model DDL previously held by PostgresStore.checkTable().
90
+ * @internal Not part of the @webda/models Repository interface.
91
+ */
92
+ async setupTable() {
93
+ 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))`);
94
+ }
95
+ /**
96
+ * Run a statement against the client once {@link prepare} has resolved.
97
+ * @param q - the SQL statement
98
+ * @param values - the statement parameters
99
+ * @returns the raw pg query result
100
+ */
101
+ async execute(q, values) {
102
+ await this.prepare?.();
103
+ return this.client.query(q, values);
104
+ }
105
+ /**
106
+ * Map an expression attribute path array to a JSONB path expression.
107
+ * @param attribute - the attribute path
108
+ * @returns the JSONB path expression
109
+ */
110
+ mapExpressionAttribute(attribute) {
111
+ return `data#>>'{${attribute.join(",")}}'`;
112
+ }
113
+ /**
114
+ * Build a SQL WHERE sub-expression from a write-condition.
115
+ * @param writeCondition - the expected value
116
+ * @param writeConditionField - the field to check
117
+ * @param params - the existing params array (will be extended in place)
118
+ * @returns the SQL AND clause
119
+ */
120
+ getQueryCondition(writeCondition, writeConditionField, params) {
121
+ const condition = writeCondition instanceof Date ? writeCondition.toISOString() : writeCondition;
122
+ params.push(condition);
123
+ return ` AND data->>'${writeConditionField}'=$${params.length}`;
28
124
  }
29
125
  /**
30
- * Add the SELECT * FROM table if the query is not a full query
31
- * @param q query to complete
32
- * @returns
126
+ * Run a raw SQL query and return typed results.
127
+ * @param q - the SQL query (WHERE clause or full query)
128
+ * @param values - the query parameters
129
+ * @returns the raw pg query result
33
130
  */
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
131
+ async sqlQuery(q, values = []) {
39
132
  if (!q.startsWith("DELETE") && !q.startsWith("INSERT") && !q.startsWith("SELECT") && !q.startsWith("UPDATE")) {
40
- return `SELECT * FROM ${this.parameters.table} WHERE ${q}`;
133
+ q = `SELECT * FROM ${this.table} WHERE ${q}`;
41
134
  }
42
- return q;
135
+ return this.execute(q, values);
43
136
  }
44
137
  /**
45
- * @override
138
+ * Deserialize a raw JSON object from the database into a model instance.
139
+ * @param data - the raw JSON object from the JSONB column
140
+ * @returns the model instance
46
141
  */
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);
142
+ fromJSON(data) {
143
+ const instance = new this.model({});
144
+ if (typeof instance.load === "function") {
145
+ instance.load(data);
146
+ }
147
+ else {
148
+ Object.assign(instance, data);
149
+ }
150
+ return instance;
151
+ }
152
+ /** @override */
153
+ async get(primaryKey) {
154
+ const key = this.getPrimaryKey(primaryKey).toString();
155
+ const res = await this.sqlQuery(`SELECT data FROM ${this.table} WHERE uuid=$1`, [key]);
156
+ if (res.rowCount === 0) {
157
+ throw new Error(`Not found: ${key}`);
158
+ }
159
+ return this.fromJSON(res.rows[0].data);
160
+ }
161
+ /** @override */
162
+ async create(data, _save = true) {
163
+ // Persist the built item: a primary key generated by the model (e.g. UuidModel)
164
+ // must be the one stored in the row, not only the one used as key
165
+ const item = this.buildItem(data);
166
+ const key = this.getPrimaryKey(item).toString();
167
+ await this.execute(`INSERT INTO ${this.table}(uuid,data) VALUES($1, $2)`, [key, JSON.stringify(item)]);
168
+ return item;
169
+ }
170
+ /** @override */
171
+ async update(data, conditionField, condition) {
172
+ const key = this.getPrimaryKey(data).toString();
173
+ const args = [JSON.stringify(data), key];
174
+ let q = `UPDATE ${this.table} SET data=$1 WHERE uuid=$2`;
175
+ if (conditionField) {
176
+ q += this.getQueryCondition(condition, conditionField, args);
177
+ }
178
+ const res = await this.execute(q, args);
179
+ if (res.rowCount === 0) {
180
+ throw new UpdateConditionFailError(key, conditionField, condition);
52
181
  }
53
- const res = await this.sqlQuery(query, args);
54
- if (res.rowCount === 0 && writeCondition) {
55
- throw new UpdateConditionFailError(uid, writeConditionField, writeCondition);
182
+ }
183
+ /** @override */
184
+ async patch(primaryKey, data, conditionField, condition) {
185
+ const key = this.getPrimaryKey(primaryKey).toString();
186
+ const args = [JSON.stringify(data), key];
187
+ let q = `UPDATE ${this.table} SET data = data || $1::jsonb WHERE uuid=$2`;
188
+ if (conditionField) {
189
+ q += this.getQueryCondition(condition, conditionField, args);
190
+ }
191
+ const res = await this.execute(q, args);
192
+ if (res.rowCount === 0) {
193
+ throw new UpdateConditionFailError(key, conditionField, condition);
194
+ }
195
+ }
196
+ /** @override */
197
+ async delete(primaryKey, conditionField, condition) {
198
+ const key = this.getPrimaryKey(primaryKey).toString();
199
+ const args = [key];
200
+ let q = `DELETE FROM ${this.table} WHERE uuid=$1`;
201
+ if (conditionField) {
202
+ q += this.getQueryCondition(condition, conditionField, args);
203
+ const res = await this.execute(q, args);
204
+ if (res.rowCount === 0) {
205
+ throw new UpdateConditionFailError(key, conditionField, condition);
206
+ }
207
+ }
208
+ else {
209
+ await this.execute(q, args);
210
+ }
211
+ }
212
+ /** @override */
213
+ async exists(primaryKey) {
214
+ const key = this.getPrimaryKey(primaryKey).toString();
215
+ const res = await this.execute(`SELECT uuid FROM ${this.table} WHERE uuid=$1`, [key]);
216
+ return res.rowCount === 1;
217
+ }
218
+ /** @override */
219
+ async removeAttribute(primaryKey, attribute, conditionField, condition) {
220
+ const key = this.getPrimaryKey(primaryKey).toString();
221
+ const args = [String(attribute), key];
222
+ let q = `UPDATE ${this.table} SET data = data - $1 WHERE uuid=$2`;
223
+ if (conditionField) {
224
+ q += this.getQueryCondition(condition, conditionField, args);
225
+ }
226
+ const res = await this.execute(q, args);
227
+ if (res.rowCount === 0) {
228
+ if (conditionField) {
229
+ throw new UpdateConditionFailError(key, conditionField, condition);
230
+ }
231
+ else {
232
+ throw new StoreNotFoundError(key, this.table);
233
+ }
56
234
  }
57
235
  }
236
+ /** @override */
237
+ async incrementAttributes(primaryKey, info, _conditionField, _condition) {
238
+ const key = this.getPrimaryKey(primaryKey).toString();
239
+ const updateDate = new Date();
240
+ const args = [key];
241
+ let data = "data";
242
+ const entries = Array.isArray(info)
243
+ ? info.map((e) => typeof e === "string" ? { property: e, value: 1 } : { property: e.property, value: e.value ?? 1 })
244
+ : Object.entries(info).map(([property, value]) => ({ property: String(property), value: value }));
245
+ entries.forEach((p, index) => {
246
+ args.push(p.value);
247
+ data = `jsonb_set(${data}, '{${p.property}}', (COALESCE(data->>'${p.property}','0')::int + $${index + 2})::text::jsonb)::jsonb`;
248
+ });
249
+ const q = `UPDATE ${this.table} SET data = jsonb_set(${data}, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
250
+ const res = await this.execute(q, args);
251
+ if (res.rowCount === 0) {
252
+ throw new StoreNotFoundError(key, this.table);
253
+ }
254
+ }
255
+ /** @override */
256
+ async upsertItemToCollection(primaryKey, collection, item, index, itemWriteConditionField, itemWriteCondition) {
257
+ const key = this.getPrimaryKey(primaryKey).toString();
258
+ const attr = String(collection);
259
+ const updateDate = new Date();
260
+ const args = [key];
261
+ let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'],`;
262
+ if (index === undefined) {
263
+ q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) || '[${JSON.stringify(item)}]'::jsonb)::jsonb`;
264
+ }
265
+ else {
266
+ q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}', '${JSON.stringify(item)}'::jsonb)::jsonb)`;
267
+ }
268
+ q += `, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
269
+ if (itemWriteCondition !== undefined) {
270
+ args.push(itemWriteCondition);
271
+ q += ` AND (data#>>'{${attr}, ${index}}')::jsonb->>'${String(itemWriteConditionField)}'=$${args.length}`;
272
+ }
273
+ const res = await this.execute(q, args);
274
+ if (res.rowCount === 0) {
275
+ if (itemWriteCondition !== undefined) {
276
+ throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
277
+ }
278
+ else {
279
+ throw new StoreNotFoundError(key, this.table);
280
+ }
281
+ }
282
+ }
283
+ /** @override */
284
+ async deleteItemFromCollection(primaryKey, collection, index, itemWriteConditionField, itemWriteCondition) {
285
+ const key = this.getPrimaryKey(primaryKey).toString();
286
+ const attr = String(collection);
287
+ const updateDate = new Date();
288
+ const args = [key];
289
+ let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'], COALESCE(`;
290
+ q += `((data->'${attr}')::jsonb - ${index})`;
291
+ q += `, '[]'::jsonb))::jsonb, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
292
+ if (itemWriteCondition !== undefined) {
293
+ args.push(itemWriteCondition);
294
+ q += ` AND (data#>>'{${attr}, ${index}}')::jsonb->>'${String(itemWriteConditionField)}'=$2`;
295
+ }
296
+ const res = await this.execute(q, args);
297
+ if (res.rowCount === 0) {
298
+ if (itemWriteCondition !== undefined) {
299
+ throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
300
+ }
301
+ else {
302
+ throw new StoreNotFoundError(key, this.table);
303
+ }
304
+ }
305
+ }
306
+ /**
307
+ * Duplicate and translate a WebdaQL expression into SQL-friendly JSONB path expressions.
308
+ * @param expression - the WebdaQL expression
309
+ * @returns the translated expression
310
+ */
58
311
  duplicateExpression(expression) {
312
+ if (expression instanceof WebdaQL.LogicalExpression && expression.children.length === 0) {
313
+ // An empty AND / OR matches everything: emit an explicit SQL TRUE (not "( )")
314
+ return new WebdaQL.BooleanExpression(true);
315
+ }
316
+ if (expression instanceof WebdaQL.BooleanExpression) {
317
+ // TRUE / FALSE are valid SQL booleans
318
+ return new WebdaQL.BooleanExpression(expression.value);
319
+ }
59
320
  if (expression instanceof WebdaQL.AndExpression) {
60
321
  return new WebdaQL.AndExpression(expression.children.map(exp => this.duplicateExpression(exp)));
61
322
  }
@@ -68,100 +329,61 @@ export class SQLStore extends Store {
68
329
  return new WebdaQL.OrExpression(expression.value.map(v => new SQLComparisonExpression("=", attr, v)));
69
330
  }
70
331
  if (expression.operator === "CONTAINS") {
71
- return new SQLComparisonExpression(
72
- // Small hack
73
- "?", "(" + this.mapExpressionAttribute(expression.attribute) + ")::jsonb", expression.value);
332
+ return new SQLComparisonExpression("?", "(" + this.mapExpressionAttribute(expression.attribute) + ")::jsonb", expression.value);
74
333
  }
334
+ // IS NULL / IS NOT NULL map natively: `data#>>'{a}'` is NULL for a missing key and a JSON null
75
335
  return new SQLComparisonExpression(expression.operator, this.mapExpressionAttribute(expression.attribute), expression.value);
76
336
  }
337
+ return expression;
77
338
  }
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) {
339
+ /** @override — use SQL WHERE clause instead of in-memory scan */
340
+ async query(queryStr) {
341
+ const WebdaQLMod = await import("@webda/ql");
342
+ const parsed = WebdaQLMod.parse(queryStr);
343
+ let sql = this.duplicateExpression(parsed.filter).toString();
344
+ const offset = parseInt(parsed.continuationToken || "0", 10);
345
+ if (parsed.orderBy && parsed.orderBy.length) {
87
346
  sql +=
88
347
  " ORDER BY " +
89
- query.orderBy.map(c => `${this.mapExpressionAttribute(c.field.split("."))} ${c.direction}`).join(", ");
348
+ parsed.orderBy
349
+ .map((c) => `${this.mapExpressionAttribute(c.field.split("."))} ${c.direction}`)
350
+ .join(", ");
90
351
  }
91
- sql += ` LIMIT ${query.limit || "1000"}`;
352
+ const limit = parsed.limit || 1000;
353
+ sql += ` LIMIT ${limit}`;
92
354
  if (offset) {
93
355
  sql += ` OFFSET ${offset}`;
94
356
  }
95
- const results = (await this.sqlQuery(sql, [])).rows.map(c => this.initModel(c));
357
+ const res = await this.sqlQuery(sql, []);
358
+ const results = res.rows.map(r => this.fromJSON(r.data));
96
359
  return {
97
360
  results,
98
- continuationToken: query.limit <= results.length ? (offset + query.limit).toString() : undefined,
99
- filter: new WebdaQL.AndExpression([])
361
+ continuationToken: limit <= results.length ? (offset + limit).toString() : undefined
100
362
  };
101
363
  }
102
- /**
103
- * @override
104
- */
105
- async _exists(uid) {
106
- const 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
- const 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;
364
+ /** @override — iterate via paginated SQL queries */
365
+ async *iterate(queryStr) {
366
+ const WebdaQLMod = await import("@webda/ql");
367
+ const parsed = WebdaQLMod.parse(queryStr);
368
+ if (!parsed.limit) {
369
+ parsed.limit = 100;
125
370
  }
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
- const res = await this.sqlQuery(q, args);
138
- if (res.rowCount === 0) {
139
- throw new UpdateConditionFailError(uid, itemWriteConditionField, itemWriteCondition);
140
- }
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;
371
+ do {
372
+ const res = await this.query(parsed.toString?.() ?? queryStr);
373
+ for (const item of res.results) {
374
+ yield item;
375
+ }
376
+ parsed.continuationToken = res.continuationToken;
377
+ } while (parsed.continuationToken);
152
378
  }
153
379
  /**
154
- * @override
380
+ * Delete all rows from the table (used in tests).
155
381
  */
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
382
  async __clean() {
164
- await this.sqlQuery(`DELETE FROM ${this.parameters.table}`, []);
383
+ await this.execute(`DELETE FROM ${this.table}`, []);
165
384
  }
166
385
  }
386
+ /** Abstract base class for SQL-backed stores */
387
+ export class SQLStore extends Store {
388
+ }
167
389
  //# sourceMappingURL=sqlstore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlstore.js","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webda/postgres",
3
- "version": "4.0.0-beta.2",
3
+ "version": "4.0.0-beta.4",
4
4
  "description": "Implements Postgres on webda",
5
5
  "keywords": [
6
6
  "postgres",
@@ -10,38 +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": "eslint",
18
- "lint:fix": "eslint --fix",
19
- "test": "c8 mocha",
20
- "format": "prettier --check src/**/*",
21
- "format:fix": "prettier --write src/**/*"
22
- },
23
13
  "dependencies": {
24
- "@webda/core": "^4.0.0-beta.2",
25
- "@webda/ql": "^4.0.0-beta.2",
26
- "pg": "^8.7.1"
14
+ "pg": "^8.20.0",
15
+ "@webda/core": "4.0.0-beta.4",
16
+ "@webda/utils": "4.0.0-beta.4",
17
+ "@webda/ql": "4.0.0-beta.3",
18
+ "@webda/workout": "4.0.0-beta.3"
27
19
  },
28
20
  "files": [
29
21
  "lib",
30
22
  "test",
31
23
  "webda.module.json"
32
24
  ],
33
- "c8": {
34
- "report-dir": "./reports",
35
- "reporter": [
36
- "html",
37
- "lcov",
38
- "json",
39
- "text"
40
- ],
41
- "exclude": [
42
- "**/*.spec.ts"
43
- ]
44
- },
45
25
  "homepage": "https://webda.io",
46
26
  "publishConfig": {
47
27
  "access": "public"
@@ -50,20 +30,38 @@
50
30
  "namespace": "Webda"
51
31
  },
52
32
  "devDependencies": {
53
- "@types/node": "20.0.0",
54
- "@webda/shell": "^4.0.0-beta.2",
55
- "tsx": "^4.17.0"
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/compiler": "^4.0.0-beta.4",
43
+ "@webda/test": "4.0.0-beta.3"
56
44
  },
57
45
  "type": "module",
58
46
  "engines": {
59
- "node": ">=20.0.0"
47
+ "node": ">=22.0.0"
60
48
  },
61
49
  "nx": {
62
50
  "implicitDependencies": [
63
- "@webda/core",
64
- "@webda/shell"
51
+ "@webda/core"
65
52
  ]
66
53
  },
67
54
  "license": "LGPL-3.0-only",
68
- "gitHead": "e992dcfb82cefa6cd5c61c54a0e63778b6f53d8e"
69
- }
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
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "version": 2,
3
+ "parameters": {},
4
+ "services": {}
5
+ }