@opengis/fastify-table 2.5.21 → 2.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/server/plugins/file/uploadMultiPart.d.ts.map +1 -1
  2. package/dist/server/plugins/file/uploadMultiPart.js +7 -4
  3. package/dist/server/plugins/file/utils/inspectContent.d.ts +6 -0
  4. package/dist/server/plugins/file/utils/inspectContent.d.ts.map +1 -0
  5. package/dist/server/plugins/file/utils/inspectContent.js +58 -0
  6. package/dist/server/plugins/pg/funcs/autoIndex.d.ts.map +1 -1
  7. package/dist/server/plugins/pg/funcs/autoIndex.js +8 -3
  8. package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
  9. package/dist/server/plugins/pg/funcs/pool.js +3 -0
  10. package/dist/server/plugins/table/funcs/getFilterSQL/index.js +1 -1
  11. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.d.ts +2 -0
  12. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.d.ts.map +1 -0
  13. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/formatValue.js +211 -0
  14. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.d.ts +8 -0
  15. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.d.ts.map +1 -0
  16. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterList.js +90 -0
  17. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.d.ts +17 -0
  18. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.d.ts.map +1 -0
  19. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getFilterQuery.js +90 -0
  20. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.d.ts +17 -0
  21. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.d.ts.map +1 -0
  22. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getRangeQuery.js +340 -0
  23. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.d.ts +9 -0
  24. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.d.ts.map +1 -0
  25. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/getTableSql.js +40 -0
  26. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.d.ts +19 -0
  27. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.d.ts.map +1 -0
  28. package/dist/server/plugins/table/funcs/getFilterSQLParametrized/index.js +156 -0
  29. package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
  30. package/dist/server/routes/table/functions/getData.js +35 -29
  31. package/dist/server/routes/table/functions/prettify.d.ts +2 -0
  32. package/dist/server/routes/table/functions/prettify.d.ts.map +1 -0
  33. package/dist/server/routes/table/functions/prettify.js +11 -0
  34. package/dist/utils.d.ts +2 -0
  35. package/dist/utils.d.ts.map +1 -1
  36. package/dist/utils.js +2 -0
  37. package/package.json +1 -1
  38. package/dist/server/plugins/policy/funcs/checkSQL.d.ts +0 -8
  39. package/dist/server/plugins/policy/funcs/checkSQL.d.ts.map +0 -1
  40. package/dist/server/plugins/policy/funcs/checkSQL.js +0 -19
  41. package/dist/server/plugins/policy/sqlInjection.d.ts +0 -3
  42. package/dist/server/plugins/policy/sqlInjection.d.ts.map +0 -1
  43. package/dist/server/plugins/policy/sqlInjection.js +0 -33
  44. package/dist/server/plugins/table/funcs/getData.d.ts +0 -2
  45. package/dist/server/plugins/table/funcs/getData.d.ts.map +0 -1
  46. package/dist/server/plugins/table/funcs/getData.js +0 -25
@@ -1,6 +1,6 @@
1
1
  import config from "../../../../config.js";
2
2
  import { handlebars, handlebarsSync } from "../../../helpers/index.js";
3
- import getFilterSQL from "../../../plugins/table/funcs/getFilterSQL/index.js";
3
+ import getFilterSQLParametrized from "../../../plugins/table/funcs/getFilterSQLParametrized/index.js";
4
4
  import getAccess from "../../../plugins/crud/funcs/getAccess.js";
5
5
  import setToken from "../../../plugins/crud/funcs/setToken.js";
6
6
  import getToken from "../../../plugins/crud/funcs/getToken.js";
@@ -20,6 +20,7 @@ import locales from "../controllers/utils/locales.js";
20
20
  import conditions from "../controllers/utils/conditions.js";
21
21
  import { resources } from "../../../plugins/access/funcs/getResources.js";
22
22
  import { BadRequestError, ForbiddenError, NotFoundError, UnauthorizedError, } from "../../../../errors.js";
23
+ import prettify from "./prettify.js";
23
24
  const components = {
24
25
  "vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
25
26
  "vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
@@ -121,7 +122,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
121
122
  else if (checkInline[paramsTable]) {
122
123
  loadTable.sql = checkInline[paramsTable];
123
124
  }
124
- if (query?.sql === "0")
125
+ if (query?.sql === 0 && process.platform === "win32")
125
126
  return loadTable;
126
127
  if (!pg) {
127
128
  throw Error("empty pg");
@@ -257,7 +258,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
257
258
  isdefault,
258
259
  ].filter(Boolean).length;
259
260
  const fData = checkFilter
260
- ? await getFilterSQL({
261
+ ? await getFilterSQLParametrized({
261
262
  pg,
262
263
  table: loadTable
263
264
  ? tokenData?.table || resources[paramsTable] || paramsTable
@@ -273,42 +274,47 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
273
274
  })
274
275
  : {};
275
276
  timeArr.push(Date.now());
277
+ const args = Array.from(fData.args || []);
278
+ if (objectId) {
279
+ args.push(objectId);
280
+ Object.assign(idx, { id: args.length });
281
+ }
282
+ else if (query?.key && loadTable.key) {
283
+ args.push(query.key);
284
+ Object.assign(idx, { id: args.length });
285
+ }
276
286
  const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
277
- ? `${loadTable?.key || tokenData?.key}=$1`
287
+ ? `${loadTable?.key || tokenData?.key}=$${args.length}`
278
288
  : null;
279
- const args = (objectId ? [objectId] : null) ||
280
- (query?.key && loadTable.key ? [query.key] : []);
281
- if (args[0]) {
282
- Object.assign(idx, { id: 1 });
283
- }
284
- const isSingle = !!idx.id;
285
289
  const limit = (called
286
290
  ? query?.limit || defaultLimit
287
291
  : Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
288
292
  args.push(limit);
289
- Object.assign(idx, { limit: idx.id ? 2 : 1 });
293
+ Object.assign(idx, { limit: args.length });
290
294
  const offset = query?.page && query?.page > 0 && !objectId ? (query?.page - 1) * limit : 0;
291
295
  args.push(offset);
292
- Object.assign(idx, { offset: idx.id ? 3 : 2 });
296
+ Object.assign(idx, { offset: args.length });
293
297
  const order = getOrder(query?.order, query?.desc, loadTable?.order, columnList, loadTable?.sqlColumns, !!called);
294
- const isSearchable = Array.isArray(loadTable?.meta?.search) &&
295
- loadTable.meta.search.length &&
298
+ const isSearchable = loadTable?.meta?.search &&
299
+ typeof loadTable.meta.search === "string" &&
296
300
  query?.search &&
297
- !isSingle;
301
+ !idx.id;
298
302
  if (isSearchable) {
299
303
  args.push(`%${query.search.replace(/%/g, "\\%")}%`);
300
- Object.assign(idx, { search: Object.keys(idx).length + 1 });
304
+ Object.assign(idx, { search: args.length });
301
305
  }
302
306
  if (meta?.bbox && query?.polyline) {
303
307
  args.push(query.polyline);
304
- Object.assign(idx, { polyline: Object.keys(idx).length + 1 });
308
+ Object.assign(idx, {
309
+ polyline: args.length,
310
+ });
305
311
  }
306
312
  if (config.trace)
307
313
  console.log(order);
308
314
  const search = isSearchable
309
- ? `(${loadTable?.meta?.search
310
- ?.split(",")
311
- ?.map((el) => `${el} ilike $${idx.search}`)
315
+ ? `(${loadTable.meta.search
316
+ .split(",")
317
+ .map((el) => `${el} ilike $${idx.search}`)
312
318
  .join(" or ")})`
313
319
  : null;
314
320
  const queryBbox = query?.bbox
@@ -368,13 +374,13 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
368
374
  ${order} limit $${idx.limit}::bigint offset $${idx.offset}::bigint`;
369
375
  if (q1.includes("{{uid}}")) {
370
376
  args.push(uid || "");
371
- Object.assign(idx, { uid: Object.keys(idx).length + 1 });
377
+ Object.assign(idx, { uid: args.length });
372
378
  }
373
379
  const q = q1.replace(/'{{uid}}'/g, `$${idx.uid}`);
374
380
  if (config.trace)
375
381
  console.log(q);
376
- if (query?.sql === "1") {
377
- return q;
382
+ if (query?.sql === 1 && process.platform === "win32") {
383
+ return prettify(q, args);
378
384
  }
379
385
  const rows = await pg.query(q, args).then((r) => r.rows || []);
380
386
  if (!rows.length &&
@@ -409,18 +415,18 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
409
415
  });
410
416
  }
411
417
  const idx1 = {};
412
- const args1 = [];
418
+ const args1 = Array.from(fData.args || []);
413
419
  if (idx.search) {
414
420
  args1.push(args[idx.search - 1]);
415
- Object.assign(idx1, { search: Object.keys(idx1).length + 1 });
421
+ Object.assign(idx1, { search: args1.length });
416
422
  }
417
423
  if (idx.uid) {
418
424
  args1.push(args[idx.uid - 1]);
419
- Object.assign(idx1, { uid: Object.keys(idx1).length + 1 });
425
+ Object.assign(idx1, { uid: args1.length });
420
426
  }
421
427
  if (idx.polyline) {
422
428
  args1.push(args[idx.polyline - 1]);
423
- Object.assign(idx1, { polyline: Object.keys(idx1).length + 1 });
429
+ Object.assign(idx1, { polyline: args1.length });
424
430
  }
425
431
  const search1 = idx.search
426
432
  ? `(${loadTable.meta.search
@@ -464,8 +470,8 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
464
470
  where ${[loadTable?.query, tokenData?.query, accessQuery, contextQuery]
465
471
  .filter(Boolean)
466
472
  .join(" and ") || "true"} `.replace(/'{{uid}}'/g, `$${idx1.uid}`);
467
- if (query?.sql === "2") {
468
- return qCount;
473
+ if (query?.sql === 2 && process.platform === "win32") {
474
+ return prettify(qCount, args1);
469
475
  }
470
476
  const counts = keyQuery || objectId
471
477
  ? { total: rows.length, filtered: rows.length }
@@ -0,0 +1,2 @@
1
+ export default function prettify(q: string, args: any[]): string;
2
+ //# sourceMappingURL=prettify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prettify.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/prettify.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAetD"}
@@ -0,0 +1,11 @@
1
+ export default function prettify(q, args) {
2
+ if (!q)
3
+ throw new Error("query is empty");
4
+ if (!args?.length)
5
+ return q;
6
+ return q.replace(/\$(\d+)/g, (_, ind) => `${Array.isArray(args[ind - 1])
7
+ ? `'{${args[ind - 1]}}'`
8
+ : ["number", "boolean"].includes(typeof args[ind - 1])
9
+ ? args[ind - 1]
10
+ : `'${args[ind - 1]}'`}`);
11
+ }
package/dist/utils.d.ts CHANGED
@@ -26,6 +26,7 @@ export { default as metaFormat } from "./server/plugins/table/funcs/metaFormat/i
26
26
  export { default as autoIndex } from "./server/plugins/pg/funcs/autoIndex.js";
27
27
  export { default as getSelectVal } from "./server/plugins/table/funcs/metaFormat/getSelectVal.js";
28
28
  export { default as getFilterSQL } from "./server/plugins/table/funcs/getFilterSQL/index.js";
29
+ export { default as getFilterSQLParametrized } from "./server/plugins/table/funcs/getFilterSQLParametrized/index.js";
29
30
  export { default as getSelect } from "./server/plugins/table/funcs/getSelect.js";
30
31
  export { default as getSelectMeta } from "./server/plugins/table/funcs/getSelectMeta.js";
31
32
  export { default as gisIRColumn } from "./server/plugins/table/funcs/gisIRColumn.js";
@@ -70,6 +71,7 @@ export { uploadMultiPart, rotateFilenameFS, rotateFilenameS3, } from "./server/p
70
71
  export { default as getMimeType } from "./server/plugins/file/providers/mime/index.js";
71
72
  export { default as getFileType } from "./server/plugins/file/utils/getFileType.js";
72
73
  export { default as allowedExtensions } from "./server/plugins/file/utils/allowedExtensions.js";
74
+ export { default as inspectContent } from "./server/plugins/file/utils/inspectContent.js";
73
75
  export { default as grpc } from "./server/plugins/grpc/grpc.js";
74
76
  export { default as file2json } from "./server/plugins/grpc/file2json.js";
75
77
  export { default as officeConverter } from "./server/plugins/grpc/office2pdf.js";
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAGvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AACrH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAGtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAG5E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAG1F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qDAAqD,CAAC;AAE3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACpG,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAE9F,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAEnG,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,MAAM,IAAI,oBAAoB,EAC9B,OAAO,IAAI,kBAAkB,EAC7B,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAGnF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAC;;AAE1D,wBAAoB"}
package/dist/utils.js CHANGED
@@ -34,6 +34,7 @@ export { default as metaFormat } from "./server/plugins/table/funcs/metaFormat/i
34
34
  export { default as autoIndex } from "./server/plugins/pg/funcs/autoIndex.js";
35
35
  export { default as getSelectVal } from "./server/plugins/table/funcs/metaFormat/getSelectVal.js";
36
36
  export { default as getFilterSQL } from "./server/plugins/table/funcs/getFilterSQL/index.js";
37
+ export { default as getFilterSQLParametrized } from "./server/plugins/table/funcs/getFilterSQLParametrized/index.js";
37
38
  export { default as getSelect } from "./server/plugins/table/funcs/getSelect.js";
38
39
  export { default as getSelectMeta } from "./server/plugins/table/funcs/getSelectMeta.js";
39
40
  export { default as gisIRColumn } from "./server/plugins/table/funcs/gisIRColumn.js";
@@ -86,6 +87,7 @@ export { uploadMultiPart, rotateFilenameFS, rotateFilenameS3, } from "./server/p
86
87
  export { default as getMimeType } from "./server/plugins/file/providers/mime/index.js";
87
88
  export { default as getFileType } from "./server/plugins/file/utils/getFileType.js";
88
89
  export { default as allowedExtensions } from "./server/plugins/file/utils/allowedExtensions.js";
90
+ export { default as inspectContent } from "./server/plugins/file/utils/inspectContent.js";
89
91
  // grpc
90
92
  export { default as grpc } from "./server/plugins/grpc/grpc.js";
91
93
  export { default as file2json } from "./server/plugins/grpc/file2json.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fastify-table",
3
- "version": "2.5.21",
3
+ "version": "2.5.23",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "keywords": [
@@ -1,8 +0,0 @@
1
- export default function checkSQL({ body, schema }: any): {
2
- body: any;
3
- error?: undefined;
4
- } | {
5
- error: string;
6
- body: any;
7
- };
8
- //# sourceMappingURL=checkSQL.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkSQL.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/policy/funcs/checkSQL.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAW,EAAE,EAAE,GAAG;;;;;;EA0B1D"}
@@ -1,19 +0,0 @@
1
- import sqlInjection from "../sqlInjection.js";
2
- export default function checkSQL({ body, schema = {} }) {
3
- const data = typeof body === "string" ? body : JSON.stringify(body);
4
- const stopWords = sqlInjection.filter((el) => data?.toLowerCase?.()?.includes?.(el));
5
- if (!stopWords.length)
6
- return { body };
7
- const disabledCheckFields = Object.keys(schema || {})?.filter((el) => schema?.[el]?.sqlCheck === false); // exclude specific columns
8
- const field = Object.keys(body)?.find((key) => body[key]?.toLowerCase &&
9
- !disabledCheckFields.includes(key) &&
10
- body[key].toLowerCase().includes(stopWords[0]));
11
- if (field) {
12
- console.error(stopWords[0], field, body[field]);
13
- return {
14
- error: `rule: ${stopWords[0]} | attr: ${field} | val: ${body[field]}`,
15
- body,
16
- };
17
- }
18
- return { body };
19
- }
@@ -1,3 +0,0 @@
1
- declare const sqlInjection: string[];
2
- export default sqlInjection;
3
- //# sourceMappingURL=sqlInjection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlInjection.d.ts","sourceRoot":"","sources":["../../../../server/plugins/policy/sqlInjection.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,YAAY,UA8BjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,33 +0,0 @@
1
- /* eslint-disable no-script-url */
2
- const sqlInjection = [
3
- '()',
4
- '^',
5
- '*',
6
- 'like ',
7
- '@variable',
8
- '@@variable',
9
- 'group by ',
10
- 'union ',
11
- 'select ',
12
- 'having ',
13
- 'as injectx',
14
- 'where ',
15
- 'rlike ',
16
- 'if(',
17
- 'sleep(',
18
- 'waitfor delay',
19
- 'benchmark(',
20
- 'pg_sleep(',
21
- "'\\\"",
22
- 'randomblob(',
23
- 'order by ',
24
- 'union all ',
25
- '+or',
26
- 'or ',
27
- 'and ',
28
- "'' ",
29
- '""" ',
30
- '<script',
31
- 'javascript:',
32
- ];
33
- export default sqlInjection;
@@ -1,2 +0,0 @@
1
- export default function getData({ id, table, pg, headers, filter, state, limit, page, search, user, order, desc, sql, contextQuery, sufix, filterList, }: any, reply: any, called?: any): Promise<any>;
2
- //# sourceMappingURL=getData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getData.ts"],"names":[],"mappings":"AAEA,wBAA8B,OAAO,CACnC,EACE,EAAE,EACF,KAAK,EACL,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,KAAK,EACL,UAAU,GACX,EAAE,GAAG,EACN,KAAK,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,GAAG,gBA4Bb"}
@@ -1,25 +0,0 @@
1
- import routeData from "../../../routes/table/controllers/tableData.js";
2
- export default async function getData({ id, table, pg, headers, filter, state, limit, page, search, user, order, desc, sql, contextQuery, sufix, filterList, }, reply, called) {
3
- const params = { table, id };
4
- const query = {
5
- filter,
6
- limit,
7
- page,
8
- search,
9
- sql,
10
- state,
11
- order,
12
- desc,
13
- };
14
- const result = await routeData({
15
- pg,
16
- headers,
17
- params,
18
- query,
19
- user,
20
- contextQuery,
21
- sufix,
22
- filterList,
23
- }, reply, called);
24
- return result;
25
- }