prostgles-server 4.2.453 → 4.2.455

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBlE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF,eAAO,MAAM,eAAe,oSAMlB,CAAC;AAEX,eAAO,MAAM,6BAA6B,EAqBrC,MAAM,CAAC,CAAC,OAAO,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtD;;;GAGG;AACH,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,mBAAmB,KAAG,MAuW3D,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC7C,CAAC;AACF,eAAO,MAAM,qBAAqB,GAAI,KAAK,GAAG,EAAE,wBAAwB,iBAAiB,WAgBxF,CAAC"}
1
+ {"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiBlE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAElF,eAAO,MAAM,eAAe,oSAMlB,CAAC;AAEX,eAAO,MAAM,6BAA6B,EAqBrC,MAAM,CAAC,CAAC,OAAO,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtD;;;GAGG;AACH,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,mBAAmB,KAAG,MA+V3D,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC7C,CAAC;AACF,eAAO,MAAM,qBAAqB,GAAI,KAAK,GAAG,EAAE,wBAAwB,iBAAiB,WAgBxF,CAAC"}
package/dist/Filtering.js CHANGED
@@ -47,24 +47,25 @@ exports.FILTER_OPERAND_TO_SQL_OPERAND = Object.fromEntries(exports.FILTER_OPERAN
47
47
  return [filterOperand, sqlOperand];
48
48
  }));
49
49
  const parseFilterItem = (args) => {
50
- const { filter: _f, select, tableAliasRaw, allowedColumnNames } = args;
51
- if (!_f || (0, prostgles_types_1.isEmpty)(_f))
50
+ const { filter: filterItem, select, tableAliasRaw, allowedColumnNames } = args;
51
+ if (!filterItem || (0, prostgles_types_1.isEmpty)(filterItem))
52
52
  return "";
53
- const mErr = (msg) => {
54
- throw `${msg}: ${JSON.stringify(_f, null, 2)}`;
53
+ const makeError = (msg) => {
54
+ throw `${msg}: ${JSON.stringify(filterItem, null, 2)}`;
55
55
  };
56
56
  const asValue = (v) => DboBuilderTypes_1.pgp.as.format("$1", [v]);
57
- const fKeys = (0, prostgles_types_1.getKeys)(_f);
58
- if (fKeys.length === 0) {
57
+ const filterEntries = Object.entries(filterItem);
58
+ const [firstFilterEntry, ...otherFilterEnties] = filterEntries;
59
+ if (!firstFilterEntry) {
59
60
  return "";
60
61
  /**
61
62
  * { field1: cond1, field2: cond2 }
62
63
  */
63
64
  }
64
- else if (fKeys.length > 1) {
65
- return fKeys
66
- .map((fk) => (0, exports.parseFilterItem)({
67
- filter: { [fk]: _f[fk] },
65
+ else if (otherFilterEnties.length) {
66
+ return filterEntries
67
+ .map(([filterKey, filterValue]) => (0, exports.parseFilterItem)({
68
+ filter: { [filterKey]: filterValue },
68
69
  select,
69
70
  tableAliasRaw,
70
71
  allowedColumnNames,
@@ -72,12 +73,13 @@ const parseFilterItem = (args) => {
72
73
  .sort() /* sorted to ensure duplicate subscription channels are not created due to different condition order */
73
74
  .join(" AND ");
74
75
  }
75
- const fKey = fKeys[0];
76
+ // const fKey: string = filterKeys[0]!;
77
+ const [firstFilterKey, firstFilterValue] = firstFilterEntry;
76
78
  let selItem;
77
79
  if (select) {
78
- selItem = select.find((s) => fKey === s.alias);
80
+ selItem = select.find((s) => firstFilterKey === s.alias);
79
81
  }
80
- let rightF = _f[fKey];
82
+ let rightF = firstFilterValue;
81
83
  const validateSelectedItemFilter = (selectedItem) => {
82
84
  const fields = selectedItem?.fields;
83
85
  if (Array.isArray(fields) && fields.length) {
@@ -105,14 +107,14 @@ const parseFilterItem = (args) => {
105
107
  if (!selItem) {
106
108
  /* See if dot notation. Pick the best matching starting string */
107
109
  if (select) {
108
- selItem = select.find((s) => dot_notation_delims.find((delimiter) => fKey.startsWith(s.alias + delimiter)));
110
+ selItem = select.find((s) => dot_notation_delims.find((delimiter) => firstFilterKey.startsWith(s.alias + delimiter)));
109
111
  validateSelectedItemFilter(selItem);
110
112
  }
111
113
  if (!selItem) {
112
- return mErr("Bad filter. Could not match to a column or alias or dot notation" +
114
+ return makeError("Bad filter. Could not match to a column or alias or dot notation" +
113
115
  select?.map((s) => s.alias).join(", "));
114
116
  }
115
- let remainingStr = fKey.slice(selItem.alias.length);
117
+ let remainingStr = firstFilterKey.slice(selItem.alias.length);
116
118
  /* Is json path spec */
117
119
  if (remainingStr.startsWith("->")) {
118
120
  /** Has shorthand operand 'col->>key.<>' */
@@ -176,7 +178,7 @@ const parseFilterItem = (args) => {
176
178
  nextIdx = -1;
177
179
  }
178
180
  const key = remainingStr.slice(currIdx + 1, nIdx);
179
- curObj[key] = nextIdx > -1 ? {} : _f[fKey];
181
+ curObj[key] = nextIdx > -1 ? {} : firstFilterValue;
180
182
  curObj = curObj[key];
181
183
  currIdx = nextIdx;
182
184
  }
@@ -184,20 +186,20 @@ const parseFilterItem = (args) => {
184
186
  }
185
187
  else {
186
188
  // console.trace(141, select, selItem, remainingStr)
187
- mErr("Bad filter. Could not find the valid col name or alias or col json path");
189
+ makeError("Bad filter. Could not find the valid col name or alias or col json path");
188
190
  }
189
191
  }
190
192
  else {
191
193
  leftQ = getLeftQ(selItem);
192
194
  }
193
195
  if (!leftQ)
194
- mErr("Internal error: leftQ missing?!");
196
+ makeError("Internal error: leftQ missing?!");
195
197
  const parseRightVal = (val, expect) => {
196
198
  try {
197
199
  return (0, exports.parseFilterRightValue)(val, { selectItem: selItem, expect });
198
200
  }
199
201
  catch (e) {
200
- return mErr(e);
202
+ return makeError(e);
201
203
  }
202
204
  };
203
205
  /* Matching sel item */
@@ -226,7 +228,7 @@ const parseFilterItem = (args) => {
226
228
  }
227
229
  else if ((filterKeys.length !== 1 || !(0, prostgles_types_1.isDefined)(filterOperand)) &&
228
230
  selItem.column_udt_type !== "jsonb") {
229
- return mErr("Bad filter. Expecting one key only");
231
+ return makeError("Bad filter. Expecting one key only");
230
232
  }
231
233
  else if ((0, prostgles_types_1.isObject)(filterValue) && !(filterValue instanceof Date)) {
232
234
  /**
@@ -279,39 +281,29 @@ const parseFilterItem = (args) => {
279
281
  else if (["<=", "$lte"].includes(filterOperand)) {
280
282
  return leftQ + " <= " + parseRightVal(filterValue);
281
283
  }
282
- else if (["$in"].includes(filterOperand)) {
283
- if (filterValue !== null && !Array.isArray(filterValue))
284
- return mErr("In filter expects an array");
284
+ else if (["$in", "$nin"].includes(filterOperand)) {
285
+ const isIn = filterOperand === "$in";
286
+ if (filterValue !== null && !Array.isArray(filterValue)) {
287
+ return makeError("In filter expects an array");
288
+ }
285
289
  if (!filterValue?.length) {
286
- return " FALSE ";
290
+ return isIn ? " FALSE " : " TRUE ";
287
291
  }
288
- const filterNonNullValues = filterValue.filter((v) => v !== null);
289
- let c1 = "", c2 = "";
290
- if (filterNonNullValues.length) {
291
- c1 = leftQ + " IN " + parseRightVal(filterNonNullValues, "csv");
292
+ const nonNullFilterValues = filterValue.filter((v) => v !== null);
293
+ const conditions = [];
294
+ if (nonNullFilterValues.length) {
295
+ conditions.push(leftQ + (isIn ? " IN " : " NOT IN ") + parseRightVal(nonNullFilterValues, "csv"));
292
296
  }
293
297
  if (filterValue.includes(null)) {
294
- c2 = ` ${leftQ} IS NULL `;
295
- }
296
- return [c1, c2].filter((c) => c).join(" OR ");
297
- }
298
- else if (["$nin"].includes(filterOperand)) {
299
- if (filterValue !== null && !Array.isArray(filterValue))
300
- return mErr("In filter expects an array");
301
- if (!filterValue?.length) {
302
- return " TRUE ";
298
+ const comparator = isIn ? " IS NULL " : " IS NOT NULL ";
299
+ conditions.push(` ${leftQ} ${comparator} `);
303
300
  }
304
- const nonNullFilterValues = filterValue.filter((v) => v !== null);
305
- let c1 = "", c2 = "";
306
- if (nonNullFilterValues.length)
307
- c1 = leftQ + " NOT IN " + parseRightVal(nonNullFilterValues, "csv");
308
- if (filterValue.includes(null))
309
- c2 = ` ${leftQ} IS NOT NULL `;
310
- return [c1, c2].filter((c) => c).join(" AND ");
301
+ const joinedConditions = conditions.join(isIn ? " OR " : " AND ");
302
+ return conditions.length > 1 ? `(${joinedConditions})` : joinedConditions;
311
303
  }
312
304
  else if (["$between"].includes(filterOperand)) {
313
305
  if (!Array.isArray(filterValue) || filterValue.length !== 2) {
314
- return mErr("Between filter expects an array of two values");
306
+ return makeError("Between filter expects an array of two values");
315
307
  }
316
308
  return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
317
309
  }
@@ -343,7 +335,7 @@ const parseFilterItem = (args) => {
343
335
  /* FTSQuery */
344
336
  }
345
337
  else if (["@@"].includes(filterOperand) &&
346
- prostgles_types_1.TextFilter_FullTextSearchFilterKeys.includes(funcName)) {
338
+ (0, prostgles_types_1.includes)(prostgles_types_1.TextFilter_FullTextSearchFilterKeys, funcName)) {
347
339
  let lq = `to_tsvector(${leftQ}::text)`;
348
340
  if (selItem.columnPGDataType === "tsvector")
349
341
  lq = leftQ;
@@ -351,11 +343,11 @@ const parseFilterItem = (args) => {
351
343
  return res;
352
344
  }
353
345
  else {
354
- return mErr("Unrecognised filter operand: " + filterOperand + " ");
346
+ return makeError("Unrecognised filter operand: " + filterOperand + " ");
355
347
  }
356
348
  }
357
349
  else {
358
- return mErr("Unrecognised filter operand: " + filterOperand + " ");
350
+ return makeError("Unrecognised filter operand: " + filterOperand + " ");
359
351
  }
360
352
  }
361
353
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"Filtering.js","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Filtering.js","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"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"}
package/lib/Filtering.ts CHANGED
@@ -60,27 +60,28 @@ type ParseFilterItemArgs = {
60
60
  };
61
61
 
62
62
  export const parseFilterItem = (args: ParseFilterItemArgs): string => {
63
- const { filter: _f, select, tableAliasRaw, allowedColumnNames } = args;
63
+ const { filter: filterItem, select, tableAliasRaw, allowedColumnNames } = args;
64
64
 
65
- if (!_f || isEmpty(_f)) return "";
65
+ if (!filterItem || isEmpty(filterItem)) return "";
66
66
 
67
- const mErr = (msg: string) => {
68
- throw `${msg}: ${JSON.stringify(_f, null, 2)}`;
67
+ const makeError = (msg: string) => {
68
+ throw `${msg}: ${JSON.stringify(filterItem, null, 2)}`;
69
69
  };
70
70
  const asValue = (v: any) => pgp.as.format("$1", [v]);
71
71
 
72
- const fKeys = getKeys(_f);
73
- if (fKeys.length === 0) {
72
+ const filterEntries = Object.entries(filterItem);
73
+ const [firstFilterEntry, ...otherFilterEnties] = filterEntries;
74
+ if (!firstFilterEntry) {
74
75
  return "";
75
76
 
76
77
  /**
77
78
  * { field1: cond1, field2: cond2 }
78
79
  */
79
- } else if (fKeys.length > 1) {
80
- return fKeys
81
- .map((fk) =>
80
+ } else if (otherFilterEnties.length) {
81
+ return filterEntries
82
+ .map(([filterKey, filterValue]) =>
82
83
  parseFilterItem({
83
- filter: { [fk]: _f[fk] },
84
+ filter: { [filterKey]: filterValue },
84
85
  select,
85
86
  tableAliasRaw,
86
87
  allowedColumnNames,
@@ -90,13 +91,13 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
90
91
  .join(" AND ");
91
92
  }
92
93
 
93
- const fKey: string = fKeys[0]!;
94
-
94
+ // const fKey: string = filterKeys[0]!;
95
+ const [firstFilterKey, firstFilterValue] = firstFilterEntry;
95
96
  let selItem: SelectItemValidated | undefined;
96
97
  if (select) {
97
- selItem = select.find((s) => fKey === s.alias);
98
+ selItem = select.find((s) => firstFilterKey === s.alias);
98
99
  }
99
- let rightF: FilterDataType<any> = (_f as any)[fKey];
100
+ let rightF = firstFilterValue;
100
101
 
101
102
  const validateSelectedItemFilter = (selectedItem: SelectItemValidated | undefined) => {
102
103
  const fields = selectedItem?.fields;
@@ -129,18 +130,18 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
129
130
  /* See if dot notation. Pick the best matching starting string */
130
131
  if (select) {
131
132
  selItem = select.find((s) =>
132
- dot_notation_delims.find((delimiter) => fKey.startsWith(s.alias + delimiter)),
133
+ dot_notation_delims.find((delimiter) => firstFilterKey.startsWith(s.alias + delimiter)),
133
134
  );
134
135
  validateSelectedItemFilter(selItem);
135
136
  }
136
137
  if (!selItem) {
137
- return mErr(
138
+ return makeError(
138
139
  "Bad filter. Could not match to a column or alias or dot notation" +
139
140
  select?.map((s) => s.alias).join(", "),
140
141
  );
141
142
  }
142
143
 
143
- let remainingStr = fKey.slice(selItem.alias.length);
144
+ let remainingStr = firstFilterKey.slice(selItem.alias.length);
144
145
 
145
146
  /* Is json path spec */
146
147
  if (remainingStr.startsWith("->")) {
@@ -220,7 +221,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
220
221
  }
221
222
 
222
223
  const key = remainingStr.slice(currIdx + 1, nIdx);
223
- curObj[key] = nextIdx > -1 ? {} : (_f as any)[fKey];
224
+ curObj[key] = nextIdx > -1 ? {} : firstFilterValue;
224
225
  curObj = curObj[key];
225
226
 
226
227
  currIdx = nextIdx;
@@ -229,19 +230,19 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
229
230
  rightF = res;
230
231
  } else {
231
232
  // console.trace(141, select, selItem, remainingStr)
232
- mErr("Bad filter. Could not find the valid col name or alias or col json path");
233
+ makeError("Bad filter. Could not find the valid col name or alias or col json path");
233
234
  }
234
235
  } else {
235
236
  leftQ = getLeftQ(selItem);
236
237
  }
237
238
 
238
- if (!leftQ) mErr("Internal error: leftQ missing?!");
239
+ if (!leftQ) makeError("Internal error: leftQ missing?!");
239
240
 
240
241
  const parseRightVal = (val: any, expect?: "csv" | "array" | "json" | "jsonb") => {
241
242
  try {
242
243
  return parseFilterRightValue(val, { selectItem: selItem, expect });
243
244
  } catch (e: any) {
244
- return mErr(e);
245
+ return makeError(e);
245
246
  }
246
247
  };
247
248
 
@@ -278,7 +279,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
278
279
  (filterKeys.length !== 1 || !isDefined(filterOperand)) &&
279
280
  selItem.column_udt_type !== "jsonb"
280
281
  ) {
281
- return mErr("Bad filter. Expecting one key only");
282
+ return makeError("Bad filter. Expecting one key only");
282
283
  } else if (isObject(filterValue) && !(filterValue instanceof Date)) {
283
284
  /**
284
285
  * Filter notation
@@ -324,40 +325,31 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
324
325
  return leftQ + " >= " + parseRightVal(filterValue);
325
326
  } else if (["<=", "$lte"].includes(filterOperand)) {
326
327
  return leftQ + " <= " + parseRightVal(filterValue);
327
- } else if (["$in"].includes(filterOperand)) {
328
- if (filterValue !== null && !Array.isArray(filterValue))
329
- return mErr("In filter expects an array");
328
+ } else if (["$in", "$nin"].includes(filterOperand)) {
329
+ const isIn = filterOperand === "$in";
330
+ if (filterValue !== null && !Array.isArray(filterValue)) {
331
+ return makeError("In filter expects an array");
332
+ }
330
333
  if (!filterValue?.length) {
331
- return " FALSE ";
334
+ return isIn ? " FALSE " : " TRUE ";
332
335
  }
333
336
 
334
- const filterNonNullValues: any[] = filterValue.filter((v: any) => v !== null);
335
- let c1 = "",
336
- c2 = "";
337
- if (filterNonNullValues.length) {
338
- c1 = leftQ + " IN " + parseRightVal(filterNonNullValues, "csv");
337
+ const nonNullFilterValues = filterValue.filter((v) => v !== null);
338
+ const conditions: string[] = [];
339
+ if (nonNullFilterValues.length) {
340
+ conditions.push(
341
+ leftQ + (isIn ? " IN " : " NOT IN ") + parseRightVal(nonNullFilterValues, "csv"),
342
+ );
339
343
  }
340
344
  if (filterValue.includes(null)) {
341
- c2 = ` ${leftQ} IS NULL `;
345
+ const comparator = isIn ? " IS NULL " : " IS NOT NULL ";
346
+ conditions.push(` ${leftQ} ${comparator} `);
342
347
  }
343
- return [c1, c2].filter((c) => c).join(" OR ");
344
- } else if (["$nin"].includes(filterOperand)) {
345
- if (filterValue !== null && !Array.isArray(filterValue))
346
- return mErr("In filter expects an array");
347
- if (!filterValue?.length) {
348
- return " TRUE ";
349
- }
350
-
351
- const nonNullFilterValues: any[] = filterValue.filter((v: any) => v !== null);
352
- let c1 = "",
353
- c2 = "";
354
- if (nonNullFilterValues.length)
355
- c1 = leftQ + " NOT IN " + parseRightVal(nonNullFilterValues, "csv");
356
- if (filterValue.includes(null)) c2 = ` ${leftQ} IS NOT NULL `;
357
- return [c1, c2].filter((c) => c).join(" AND ");
348
+ const joinedConditions = conditions.join(isIn ? " OR " : " AND ");
349
+ return conditions.length > 1 ? `(${joinedConditions})` : joinedConditions;
358
350
  } else if (["$between"].includes(filterOperand)) {
359
351
  if (!Array.isArray(filterValue) || filterValue.length !== 2) {
360
- return mErr("Between filter expects an array of two values");
352
+ return makeError("Between filter expects an array of two values");
361
353
  }
362
354
  return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
363
355
  } else if (["$ilike"].includes(filterOperand)) {
@@ -389,7 +381,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
389
381
  /* FTSQuery */
390
382
  } else if (
391
383
  ["@@"].includes(filterOperand) &&
392
- TextFilter_FullTextSearchFilterKeys.includes(funcName! as any)
384
+ includes(TextFilter_FullTextSearchFilterKeys, funcName)
393
385
  ) {
394
386
  let lq = `to_tsvector(${leftQ}::text)`;
395
387
  if (selItem.columnPGDataType === "tsvector") lq = leftQ!;
@@ -398,10 +390,10 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
398
390
 
399
391
  return res;
400
392
  } else {
401
- return mErr("Unrecognised filter operand: " + filterOperand + " ");
393
+ return makeError("Unrecognised filter operand: " + filterOperand + " ");
402
394
  }
403
395
  } else {
404
- return mErr("Unrecognised filter operand: " + filterOperand + " ");
396
+ return makeError("Unrecognised filter operand: " + filterOperand + " ");
405
397
  }
406
398
  } else {
407
399
  /* Is an equal filter */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.453",
3
+ "version": "4.2.455",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,8 +38,8 @@
38
38
  ],
39
39
  "homepage": "https://prostgles.com",
40
40
  "dependencies": {
41
- "@aws-sdk/client-ses": "^3.993.0",
42
- "@aws-sdk/credential-provider-node": "^3.972.10",
41
+ "@aws-sdk/client-ses": "^3.1000.0",
42
+ "@aws-sdk/credential-provider-node": "^3.972.14",
43
43
  "@types/passport": "^1.0.17",
44
44
  "@types/passport-facebook": "^3.0.4",
45
45
  "@types/passport-github2": "^1.2.9",
@@ -54,8 +54,8 @@
54
54
  "passport-google-oauth20": "^2.0.0",
55
55
  "passport-microsoft": "^2.1.0",
56
56
  "passport-oauth2": "^1.8.0",
57
- "pg": "^8.15.6",
58
- "pg-cursor": "^2.17.0",
57
+ "pg": "^8.19.0",
58
+ "pg-cursor": "^2.18.0",
59
59
  "pg-promise": "^12.6.1",
60
60
  "prostgles-types": "^4.0.211"
61
61
  },
@@ -63,16 +63,16 @@
63
63
  "@eslint/js": "^9.22.0",
64
64
  "@types/express": "^4.17.25",
65
65
  "@types/json-schema": "^7.0.15",
66
- "@types/node": "^22.19.11",
67
- "@types/nodemailer": "^6.4.22",
68
- "@types/pg": "^8.16.0",
66
+ "@types/node": "^22.19.13",
67
+ "@types/nodemailer": "^6.4.23",
68
+ "@types/pg": "^8.18.0",
69
69
  "@types/pg-cursor": "^2.7.2",
70
70
  "@types/sharp": "^0.30.5",
71
- "eslint": "^9.39.2",
71
+ "eslint": "^9.39.3",
72
72
  "eslint-plugin-security": "^3.0.1",
73
73
  "prettier": "^3.8.1",
74
74
  "socket.io": "^4.8.3",
75
75
  "typescript": "^5.9.3",
76
- "typescript-eslint": "^8.56.0"
76
+ "typescript-eslint": "^8.56.1"
77
77
  }
78
78
  }