@opengis/fastify-table 2.0.105 → 2.0.107

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 (127) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/script/adduser +15 -0
  3. package/dist/script/dump.js +176 -0
  4. package/dist/script/migrate.js +25 -0
  5. package/dist/server/migrations/users.sql +1 -1
  6. package/dist/server/plugins/auth/funcs/verifyPassword.d.ts.map +1 -1
  7. package/dist/server/plugins/auth/funcs/verifyPassword.js +3 -1
  8. package/dist/server/plugins/crud/funcs/dataInsert.js +1 -1
  9. package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
  10. package/dist/server/plugins/crud/funcs/dataUpdate.js +7 -4
  11. package/dist/server/plugins/file/providers/s3/client.d.ts +12 -4
  12. package/dist/server/plugins/file/providers/s3/client.d.ts.map +1 -1
  13. package/dist/server/plugins/file/providers/s3/client.js +21 -15
  14. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts +1 -1
  15. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.d.ts.map +1 -1
  16. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +9 -4
  17. package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts +1 -1
  18. package/dist/server/plugins/file/providers/s3/funcs/fileExists.d.ts.map +1 -1
  19. package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +13 -10
  20. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts +1 -1
  21. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.d.ts.map +1 -1
  22. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +4 -4
  23. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.d.ts +1 -1
  24. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.d.ts.map +1 -1
  25. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +1 -1
  26. package/dist/server/plugins/file/providers/s3/index.d.ts +1 -1
  27. package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
  28. package/dist/server/plugins/logger/getLogger.js +13 -10
  29. package/dist/server/plugins/logger/index.d.ts.map +1 -1
  30. package/dist/server/plugins/logger/index.js +7 -3
  31. package/dist/server/plugins/pg/funcs/getPG.d.ts.map +1 -1
  32. package/dist/server/plugins/pg/funcs/getPG.js +1 -0
  33. package/dist/server/plugins/pg/funcs/getPGAsync.js +1 -1
  34. package/dist/server/plugins/pg/funcs/init.d.ts +1 -1
  35. package/dist/server/plugins/pg/funcs/init.d.ts.map +1 -1
  36. package/dist/server/plugins/pg/funcs/init.js +20 -5
  37. package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
  38. package/dist/server/plugins/pg/funcs/pool.js +10 -16
  39. package/dist/server/plugins/pg/index.d.ts.map +1 -1
  40. package/dist/server/plugins/pg/index.js +3 -2
  41. package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
  42. package/dist/server/plugins/redis/funcs/getRedis.js +6 -4
  43. package/dist/server/plugins/redis/index.d.ts.map +1 -1
  44. package/dist/server/plugins/redis/index.js +4 -1
  45. package/dist/server/plugins/sqlite/index.d.ts.map +1 -1
  46. package/dist/server/plugins/sqlite/index.js +7 -3
  47. package/dist/server/plugins/table/funcs/getFilter.d.ts +1 -1
  48. package/dist/server/plugins/table/funcs/getFilter.d.ts.map +1 -1
  49. package/dist/server/plugins/table/funcs/getFilter.js +14 -1
  50. package/dist/server/plugins/table/funcs/getSelectMeta.d.ts +4 -2
  51. package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
  52. package/dist/server/plugins/table/funcs/getSelectMeta.js +21 -7
  53. package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +2 -2
  54. package/dist/server/plugins/table/funcs/gisIRColumn.js +1 -1
  55. package/dist/server/plugins/util/funcs/unflattenObject.d.ts.map +1 -1
  56. package/dist/server/plugins/util/funcs/unflattenObject.js +3 -1
  57. package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
  58. package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
  59. package/dist/server/routes/access/controllers/access.group.js +0 -1
  60. package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
  61. package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
  62. package/dist/server/routes/access/controllers/access.group.post.js +0 -1
  63. package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -4
  64. package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
  65. package/dist/server/routes/auth/controllers/core/registration.js +28 -9
  66. package/dist/server/routes/auth/controllers/core/updateUserInfo.js +1 -1
  67. package/dist/server/routes/auth/controllers/jwt/authorize.js +5 -5
  68. package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
  69. package/dist/server/routes/auth/controllers/jwt/token.js +10 -12
  70. package/dist/server/routes/cron/controllers/cronApi.d.ts +1 -1
  71. package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
  72. package/dist/server/routes/cron/controllers/cronApi.js +5 -3
  73. package/dist/server/routes/crud/controllers/insert.d.ts +1 -4
  74. package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
  75. package/dist/server/routes/crud/controllers/insert.js +24 -16
  76. package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
  77. package/dist/server/routes/crud/controllers/table.js +13 -6
  78. package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
  79. package/dist/server/routes/crud/controllers/update.js +23 -15
  80. package/dist/server/routes/file/controllers/delete.d.ts +1 -15
  81. package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
  82. package/dist/server/routes/file/controllers/delete.js +13 -20
  83. package/dist/server/routes/file/controllers/download.d.ts +2 -2
  84. package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
  85. package/dist/server/routes/file/controllers/download.js +39 -30
  86. package/dist/server/routes/file/controllers/files.d.ts +2 -1
  87. package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
  88. package/dist/server/routes/file/controllers/files.js +15 -11
  89. package/dist/server/routes/file/controllers/resize.d.ts +1 -2
  90. package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
  91. package/dist/server/routes/file/controllers/resize.js +17 -6
  92. package/dist/server/routes/file/controllers/upload.d.ts.map +1 -1
  93. package/dist/server/routes/file/controllers/upload.js +17 -16
  94. package/dist/server/routes/file/controllers/uploadImage.d.ts +11 -13
  95. package/dist/server/routes/file/controllers/uploadImage.d.ts.map +1 -1
  96. package/dist/server/routes/file/controllers/uploadImage.js +13 -15
  97. package/dist/server/routes/logger/controllers/logger.file.js +1 -1
  98. package/dist/server/routes/menu/controllers/interfaces.d.ts +1 -7
  99. package/dist/server/routes/menu/controllers/interfaces.d.ts.map +1 -1
  100. package/dist/server/routes/table/controllers/card.d.ts +1 -1
  101. package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
  102. package/dist/server/routes/table/controllers/card.js +15 -9
  103. package/dist/server/routes/table/controllers/filter.d.ts +1 -1
  104. package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
  105. package/dist/server/routes/table/controllers/filter.js +2 -2
  106. package/dist/server/routes/table/controllers/form.d.ts +1 -1
  107. package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
  108. package/dist/server/routes/table/controllers/form.js +8 -5
  109. package/dist/server/routes/table/controllers/search.d.ts +1 -1
  110. package/dist/server/routes/table/controllers/search.d.ts.map +1 -1
  111. package/dist/server/routes/table/controllers/search.js +5 -6
  112. package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
  113. package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
  114. package/dist/server/routes/table/controllers/suggest.js +53 -24
  115. package/dist/server/routes/table/functions/getData.d.ts +1 -1
  116. package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
  117. package/dist/server/routes/table/functions/getData.js +60 -34
  118. package/dist/server/routes/util/controllers/config.d.ts +2 -0
  119. package/dist/server/routes/util/controllers/config.d.ts.map +1 -0
  120. package/dist/server/routes/util/controllers/config.js +33 -0
  121. package/dist/server/routes/util/index.js +2 -2
  122. package/dist/server/types/core.d.ts +7 -0
  123. package/dist/server/types/core.d.ts.map +1 -1
  124. package/dist/utils.d.ts +1 -0
  125. package/dist/utils.d.ts.map +1 -1
  126. package/dist/utils.js +1 -0
  127. package/package.json +3 -3
@@ -1,30 +1,27 @@
1
1
  import path from "node:path";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { config, getPG, getTemplate, getSelectMeta, getMeta, applyHook, getSelectVal, logger, getSelect, metaFormat, getColumnCLS, } from "../../../../utils.js";
4
- const limit = 50;
5
- const headers = {
6
- "Access-Control-Allow-Origin": "*",
7
- "Access-Control-Allow-Methods": "GET",
8
- "Cache-Control": "no-cache",
9
- };
10
- async function getTableColumnMeta(tableName, column, filtered, pg) {
11
- if (!tableName || !column) {
4
+ const defaultLimit = 50;
5
+ async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg, }) {
6
+ if (!table || !column) {
12
7
  return null;
13
8
  }
14
- const loadTable = await getTemplate("table", tableName);
9
+ const loadTable = await getTemplate("table", table);
15
10
  const { data: clsName } = loadTable?.columns?.find?.((el) => el.name === column) || {};
16
11
  const { arr } = (await getSelect(clsName, pg)) || {};
17
12
  const original = filtered
18
- ? `with c(id,text) as (select ${column} as id, ${column} as text from ${loadTable?.table || tableName} group by ${column}) select id, text from c`
19
- : `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || tableName} group by ${column} limit ${limit}) select * from c`;
13
+ ? `with c(id,text) as (select ${column} as id, ${column} as text from ${loadTable?.table || table} group by ${column}) select id, text from c`
14
+ : `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || table} group by ${column} limit ${defaultLimit}) select * from c`;
20
15
  return {
21
16
  arr,
22
17
  original,
23
- searchQuery: '(lower("text") ~ $1 )',
18
+ searchQuery: startsWith && key
19
+ ? `(left(lower("text"),${key.length}) = $1 )`
20
+ : '(lower("text") ~ $1 )',
24
21
  pk: "id",
25
22
  };
26
23
  }
27
- export default async function suggest(req) {
24
+ export default async function suggest(req, reply) {
28
25
  const { params, query, pg: pg1, user } = req;
29
26
  const lang = query.lang || "ua";
30
27
  const time = Date.now();
@@ -40,8 +37,12 @@ export default async function suggest(req) {
40
37
  ? params.data.split(":")
41
38
  : [query.token, query.column];
42
39
  const selectName = query.sel || params.data;
43
- if (!selectName)
44
- return { status: 400, message: "name is required" };
40
+ if (!selectName) {
41
+ return reply.status(400).send({
42
+ error: "name is required",
43
+ code: 400,
44
+ });
45
+ }
45
46
  const { body: hookBody } = table || query.token
46
47
  ? (await applyHook("preSuggest", {
47
48
  pg: pg1,
@@ -51,32 +52,57 @@ export default async function suggest(req) {
51
52
  const body = await getTemplate("table", table || query.token);
52
53
  const tableName = hookBody?.table || body?.table || table || query.token;
53
54
  if (table && !pg1.pk?.[tableName]) {
54
- return { status: 400, message: "param name is invalid: 1" };
55
+ return reply.status(400).send({
56
+ error: "param name is invalid: 1",
57
+ code: 400,
58
+ });
55
59
  }
56
60
  const tableMeta = await getMeta({ pg: pg1, table: tableName });
57
61
  const columnExists = (hookBody?.columns ||
58
62
  body?.columns ||
59
63
  tableMeta?.columns)?.find((col) => col?.name === (column || query.column));
60
64
  if (table && (!column || !columnExists)) {
61
- return { status: 400, message: "param name is invalid: 2" };
65
+ return reply.status(400).send({
66
+ error: "param name is invalid: 2",
67
+ code: 400,
68
+ });
62
69
  }
63
70
  if (query.limit && query.limit < 0) {
64
- return { status: 400, message: "param limit is invalid" };
71
+ return reply.status(400).send({
72
+ error: "param limit is invalid",
73
+ code: 400,
74
+ });
65
75
  }
66
76
  const meta = tableName && column
67
- ? await getTableColumnMeta(table, column, query?.key || query?.val, pg1)
68
- : await getSelectMeta({
77
+ ? await getTableColumnMeta({
78
+ table,
79
+ column,
80
+ filtered: query?.key || query?.val,
81
+ startsWith: !!query.start,
82
+ key: query.key,
69
83
  pg: pg1,
84
+ })
85
+ : await getSelectMeta({
70
86
  name: selectName,
71
87
  nocache: query?.nocache,
88
+ startsWith: !!query.start,
89
+ key: query.key,
72
90
  parent,
91
+ pg: pg1,
73
92
  });
74
93
  if (meta?.minLength && query.key && query.key.length < meta?.minLength) {
75
- return { message: `min length: ${meta.minLength}` };
94
+ return reply.status(400).send({
95
+ error: `min length: ${meta.minLength}`,
96
+ code: 400,
97
+ });
76
98
  }
99
+ const limit = meta?.limit || defaultLimit;
77
100
  const pg = meta?.db ? getPG(meta.db) : pg1;
78
101
  if (!meta) {
79
- return { headers, status: 404, message: "Not found query select " };
102
+ return reply.status(404).send({
103
+ error: "Not found query select",
104
+ code: 404,
105
+ });
80
106
  }
81
107
  if (query.meta) {
82
108
  return meta;
@@ -183,7 +209,7 @@ export default async function suggest(req) {
183
209
  ? ` ${meta.pk}=any('{${query.val.replace(/'/g, "''")}}')`
184
210
  : "";
185
211
  const where = [search, val, meta.pk ? `${meta.pk} is not null` : null]
186
- .filter((el) => el)
212
+ .filter(Boolean)
187
213
  .join(" and ") || "true";
188
214
  const loadTable = await getTemplate("table", query.token);
189
215
  const tableName1 = hookBody?.table || loadTable?.table || query.token;
@@ -204,7 +230,7 @@ export default async function suggest(req) {
204
230
  return sqlSuggest;
205
231
  }
206
232
  // query
207
- const { rows: dataNew } = await pg.query(sqlSuggest, query.key ? [`${query.key.toLowerCase()}`] : []);
233
+ const { rows: dataNew } = await pg.query(sqlSuggest, query.key ? [query.key.toLowerCase()] : []);
208
234
  // const { rows: dataNew1 } = dataNew.length < limit ? await pg.query(sqlSuggest, query.key ? [`${query.key}`] : []) : {};
209
235
  // const ids = dataNew.map((el) => el.id);
210
236
  const data = dataNew.filter((el) => el.id && el.text);
@@ -223,6 +249,9 @@ export default async function suggest(req) {
223
249
  total: meta.count - 0,
224
250
  mode: type === "cls" ? "array" : "sql",
225
251
  db: meta.db,
252
+ sql: config.local || user?.user_type?.includes?.("admin")
253
+ ? sqlSuggest
254
+ : undefined,
226
255
  data: data.map((el) => ({
227
256
  count: el.count,
228
257
  id: el.id,
@@ -17,5 +17,5 @@ export default function dataAPI({ pg, params, table, id, headers, query, user, c
17
17
  filterList?: any[];
18
18
  actions?: string[];
19
19
  columns?: string[];
20
- }, reply: FastifyReply, called?: any): Promise<any>;
20
+ }, reply1?: FastifyReply, called?: any): Promise<any>;
21
21
  //# sourceMappingURL=getData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4DzD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,KAAK,EACL,EAAE,EACF,OAAY,EACZ,KAAU,EACV,IAAS,EACT,YAAY,EACZ,KAAY,EACZ,UAAU,EACV,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACtB,EAAE;IACD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,EACD,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,GAAG,gBAi0Bb"}
1
+ {"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4EzD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,KAAK,EACL,EAAE,EACF,OAAY,EACZ,KAAU,EACV,IAAS,EACT,YAAY,EACZ,KAAY,EACZ,UAAU,EACV,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACtB,EAAE;IACD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,EACD,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,GAAG,gBA+0Bb"}
@@ -22,6 +22,19 @@ const components = {
22
22
  "vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
23
23
  "vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
24
24
  };
25
+ const mockReply = {
26
+ response: {},
27
+ // redirect: (txt) => txt,
28
+ redirect: (txt) => Object.assign(mockReply.response, {
29
+ body: txt,
30
+ statusCode: mockReply.response.statusCode || 200,
31
+ }),
32
+ status: (statusCode) => {
33
+ Object.assign(mockReply.response, { status: statusCode });
34
+ return mockReply;
35
+ },
36
+ send: (txt) => Object.assign(mockReply.response, txt),
37
+ };
25
38
  function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = false) {
26
39
  if (iscalled && queryOrder) {
27
40
  return `order by ${queryOrder}`;
@@ -39,14 +52,17 @@ function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = fa
39
52
  const checkInline = {};
40
53
  const maxLimit = 100;
41
54
  const defaultLimit = 20;
42
- export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, }, reply, called) {
55
+ export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, }, reply1, called) {
43
56
  const time = Date.now();
44
57
  const timeArr = [Date.now()];
45
58
  const { uid } = user;
59
+ const reply = reply1 || mockReply;
46
60
  const checkQuery = (item) => user?.user_type === "superadmin" ? !item.includes("{{uid}}") : true;
47
61
  const paramsTable = params?.table || table;
48
62
  if (!paramsTable) {
49
- return { message: "not enough params: table", status: 400 };
63
+ return reply
64
+ .status(400)
65
+ .send({ error: "not enough params: table", code: 400 });
50
66
  }
51
67
  const hookData = (await applyHook("preData", {
52
68
  pg,
@@ -55,7 +71,10 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
55
71
  user,
56
72
  }));
57
73
  if (hookData?.message && hookData?.status) {
58
- return { message: hookData?.message, status: hookData?.status };
74
+ const response = hookData.status >= 400
75
+ ? { error: hookData.message, code: hookData.status }
76
+ : hookData.message;
77
+ return reply.status(hookData.status).send(response);
59
78
  }
60
79
  /* from tableData START */
61
80
  const tokenData1 = await getOpt(paramsTable, uid);
@@ -96,7 +115,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
96
115
  else if (checkInline[paramsTable]) {
97
116
  loadTable.sql = checkInline[paramsTable];
98
117
  }
99
- if (query.sql === "0")
118
+ if (query?.sql === "0")
100
119
  return loadTable;
101
120
  if (!pg) {
102
121
  return reply.status(500).send("empty pg");
@@ -143,8 +162,11 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
143
162
  const viewSql = await getTemplate("view", table1);
144
163
  timeArr.push(Date.now());
145
164
  if (tableMeta?.view) {
146
- if (!loadTable?.key && !tokenData?.key)
147
- return { message: `key not found: ${table1}`, status: 404 };
165
+ if (!loadTable?.key && !tokenData?.key) {
166
+ return reply
167
+ .status(404)
168
+ .send({ error: `key not found: ${table1}`, code: 404 });
169
+ }
148
170
  Object.assign(tableMeta, { pk: loadTable?.key || tokenData?.key });
149
171
  }
150
172
  const { pk, columns: dbColumns = [] } = (viewSql
@@ -160,7 +182,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
160
182
  Object.assign(col, locales[`${table1 || paramsTable}.${col.name}`] || {});
161
183
  });
162
184
  if (!pk) {
163
- return reply.status(404).send(`table not found: ${table1}`);
185
+ return reply
186
+ .status(404)
187
+ .send({ error: `table not found: ${table1}`, code: 404 });
164
188
  }
165
189
  const columnList = dbColumns.map((el) => el.name || el).join(",");
166
190
  const sqlTable = sql
@@ -200,57 +224,57 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
200
224
  pg,
201
225
  layer: paramsTable,
202
226
  column: objectId,
203
- sql: query.sql,
204
- filter: query.filter,
205
- search: query.search,
206
- state: query.state,
207
- custom: query.custom,
227
+ sql: query?.sql,
228
+ filter: query?.filter,
229
+ search: query?.search,
230
+ state: query?.state,
231
+ custom: query?.custom,
208
232
  });
209
233
  }
210
234
  const isdefault = !objectId ? filters.find((el) => el.default) : null;
211
235
  const checkFilter = [
212
- query.filter,
213
- query.search,
214
- query.state,
215
- query.custom,
236
+ query?.filter,
237
+ query?.search,
238
+ query?.state,
239
+ query?.custom,
216
240
  isdefault,
217
241
  ].filter(Boolean).length;
218
242
  const fData = checkFilter
219
243
  ? await getFilterSQL({
220
244
  pg,
221
245
  table: loadTable ? paramsTable : table1,
222
- filter: query.filter,
223
- search: query.search,
224
- state: query.state,
225
- custom: query.custom,
246
+ filter: query?.filter,
247
+ search: query?.search,
248
+ state: query?.state,
249
+ custom: query?.custom,
226
250
  uid,
227
251
  objectId,
228
252
  filterList,
229
253
  })
230
254
  : {};
231
255
  timeArr.push(Date.now());
232
- const keyQuery = query.key && (loadTable?.key || tokenData?.key) && !objectId
256
+ const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
233
257
  ? `${loadTable?.key || tokenData?.key}=$1`
234
258
  : null;
235
259
  const limit = (called
236
- ? query.limit || defaultLimit
237
- : Math.min(maxLimit, +(query.limit || defaultLimit))) || defaultLimit;
238
- const offset = query.page && query.page > 0 && !objectId
239
- ? ` offset ${(query.page - 1) * limit}`
260
+ ? query?.limit || defaultLimit
261
+ : Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
262
+ const offset = query?.page && query?.page > 0 && !objectId
263
+ ? ` offset ${(query?.page - 1) * limit}`
240
264
  : "";
241
- const order = getOrder(query.order, query.desc, loadTable?.order, columnList, !!called);
265
+ const order = getOrder(query?.order, query?.desc, loadTable?.order, columnList, !!called);
242
266
  if (config.trace)
243
267
  console.log(order);
244
- const search = loadTable?.meta?.search && query.search
268
+ const search = loadTable?.meta?.search && query?.search
245
269
  ? `(${loadTable?.meta?.search
246
270
  ?.split(",")
247
- ?.map((el) => `${el} ilike '%${query.search
271
+ ?.map((el) => `${el} ilike '%${query?.search
248
272
  .replace(/%/g, "\\%")
249
273
  .replace(/'/g, "''")}%'`)
250
274
  .join(" or ")})`
251
275
  : null;
252
276
  const queryBbox = query?.bbox
253
- ? query.bbox
277
+ ? query?.bbox
254
278
  .replace(/ /g, ",")
255
279
  .split(",")
256
280
  ?.map((el) => el - 0)
@@ -289,7 +313,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
289
313
  .filter(Boolean)
290
314
  .filter((el) => checkQuery(el));
291
315
  const q = `select ${pk ? `"${pk}" as id,` : ""}
292
- ${objectId || query.key
316
+ ${objectId || query?.key
293
317
  ? "*"
294
318
  : columnsParam || sqlColumns || cols || "*"}
295
319
  ${metaCols}
@@ -309,12 +333,12 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
309
333
  ${order} ${offset} limit ${limit}`.replace(/{{uid}}/g, uid);
310
334
  if (config.trace)
311
335
  console.log(q);
312
- if (query.sql === "1") {
336
+ if (query?.sql === "1") {
313
337
  return q;
314
338
  }
315
339
  const { rows = [] } = await pg
316
340
  .query(q, (objectId ? [objectId] : null) ||
317
- (query.key && loadTable.key ? [query.key] : []))
341
+ (query?.key && loadTable.key ? [query?.key] : []))
318
342
  .catch((err) => {
319
343
  console.error(err.toString());
320
344
  throw err;
@@ -322,7 +346,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
322
346
  if (!rows.length &&
323
347
  headers?.referer?.includes?.("/card/") &&
324
348
  headers?.referer?.includes?.(templateName)) {
325
- return reply.status(403).send("access restricted: empty rows");
349
+ return reply
350
+ .status(403)
351
+ .send({ error: "access restricted: empty rows", code: 403 });
326
352
  }
327
353
  timeArr.push(Date.now());
328
354
  if (uid &&
@@ -385,7 +411,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
385
411
  .filter(Boolean)
386
412
  .filter((el) => checkQuery(el))
387
413
  .join(" and ") || "true"} `.replace(/{{uid}}/g, uid);
388
- if (query.sql === "2") {
414
+ if (query?.sql === "2") {
389
415
  return qCount;
390
416
  }
391
417
  const counts = keyQuery || objectId
@@ -0,0 +1,2 @@
1
+ export default function apiConfig({ user }: any): Promise<any>;
2
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../server/routes/util/controllers/config.ts"],"names":[],"mappings":"AAyBA,wBAA8B,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,gBAOpD"}
@@ -0,0 +1,33 @@
1
+ import config from "../../../../config.js";
2
+ function substringObject(data, substr) {
3
+ if (typeof data === "boolean")
4
+ return data;
5
+ if (!data)
6
+ return "null";
7
+ // array string
8
+ if (typeof data === "string")
9
+ return data.substring(0, substr);
10
+ // array object
11
+ return Object.keys(data).reduce((acc, curr) => {
12
+ if (Array.isArray(data[curr])) {
13
+ return { [curr]: processObject(data[curr], substr) };
14
+ }
15
+ return { ...acc, [curr]: processObject(data[curr], substr) };
16
+ }, {});
17
+ }
18
+ function processObject(obj, substr) {
19
+ // root string
20
+ if (typeof obj === "string")
21
+ return obj.substring(0, substr);
22
+ // root array / object
23
+ return Array.isArray(obj)
24
+ ? obj.map((el) => substringObject(el, substr))
25
+ : substringObject(obj, substr);
26
+ }
27
+ export default async function apiConfig({ user }) {
28
+ if (config.local || (config.debug && user?.user_type?.includes?.("admin"))) {
29
+ return config;
30
+ }
31
+ const reductConfig = processObject(config, 3);
32
+ return reductConfig;
33
+ }
@@ -1,4 +1,4 @@
1
- import config from "../../../config.js";
1
+ import apiConfig from "./controllers/config.js";
2
2
  import nextId from "./controllers/next.id.js";
3
3
  import statusMonitor from "./controllers/status.monitor.js";
4
4
  import userTokens from "./controllers/user.tokens.js";
@@ -12,6 +12,6 @@ function plugin(app, opt = {}) {
12
12
  ...(req.headers || {}),
13
13
  sessionId: req.session?.sessionId,
14
14
  }));
15
- app.get("/config", { config: { role: "admin" } }, () => config);
15
+ app.get("/config", { config: { policy: "L0" /*role: "admin"*/ } }, apiConfig);
16
16
  }
17
17
  export default plugin;
@@ -4,6 +4,13 @@ import { Pool } from "pg";
4
4
  declare let Database: any;
5
5
  export interface ExtendedPG extends Pool {
6
6
  readonly?: any;
7
+ connect: any;
8
+ query: any;
9
+ database: string;
10
+ host: string;
11
+ user: string;
12
+ password: string;
13
+ port: number;
7
14
  init?: () => void;
8
15
  connectionAttempt: number;
9
16
  pk?: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,IAAI,QAAQ,EAAE,GAAG,CAAC;AAUlB,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CACjE;AAYD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;QAC7C,MAAM,EAAE,0BAA0B,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,OAAO,QAAQ,CAAC;IACnE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -80,6 +80,7 @@ export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdmi
80
80
  export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js";
81
81
  export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js";
82
82
  export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
83
+ export { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
83
84
  declare const _default: null;
84
85
  export default _default;
85
86
  //# sourceMappingURL=utils.d.ts.map
@@ -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":"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"}
package/dist/utils.js CHANGED
@@ -97,4 +97,5 @@ export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdmi
97
97
  export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js"; // email
98
98
  export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js"; // popup, widget, interface etc.
99
99
  export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
100
+ export { default as s3Client } from "./server/plugins/file/providers/s3/client.js";
100
101
  export default null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fastify-table",
3
- "version": "2.0.105",
3
+ "version": "2.0.107",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "keywords": [
@@ -23,12 +23,12 @@
23
23
  "scripts": {
24
24
  "prepublishOnly": "npm run build",
25
25
  "clean": "tsc -b --clean",
26
- "build": "tsc -b --clean && tsc && copyfiles server/plugins/grpc/utils/*.proto dist && copyfiles server/migrations/*.sql dist && copyfiles server/templates/**/*.html dist && copyfiles server/templates/**/*.hbs dist",
26
+ "build": "tsc -b --clean && tsc && copyfiles server/plugins/grpc/utils/*.proto dist && copyfiles server/migrations/*.sql dist && copyfiles server/templates/**/*.html dist && copyfiles server/templates/**/*.hbs dist && copyfiles script/* dist",
27
27
  "prod": "NODE_ENV=production bun dist/server",
28
28
  "migrate": "MIGRATE=true bun script/migrate",
29
29
  "patch": "npm version patch && git push && npm publish",
30
30
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
31
- "test": "bun test",
31
+ "test": "npx vitest run",
32
32
  "compress": "node compress.js",
33
33
  "dev1": "bun --hot dist/server",
34
34
  "dev": "NODE_ENV=production bun start",