@opengis/fastify-table 1.4.88 → 1.5.0

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 (489) hide show
  1. package/dist/config.js +33 -0
  2. package/dist/dblist.js +5 -0
  3. package/dist/index.js +170 -0
  4. package/dist/redactionList.js +6 -0
  5. package/dist/server/helpers/core/badge.js +16 -0
  6. package/dist/server/helpers/core/buttonFilePreview.js +12 -0
  7. package/dist/server/helpers/core/buttonHelper.js +20 -0
  8. package/{server → dist/server}/helpers/core/token.js +16 -18
  9. package/dist/server/helpers/format/formatAuto.js +14 -0
  10. package/dist/server/helpers/format/formatDate.js +231 -0
  11. package/{server → dist/server}/helpers/format/formatDigit.js +21 -21
  12. package/dist/server/helpers/format/formatNum.js +331 -0
  13. package/{server → dist/server}/helpers/format/formatNumber.js +50 -55
  14. package/dist/server/helpers/format/formatRelative.js +180 -0
  15. package/{server → dist/server}/helpers/format/formatUnit.js +41 -40
  16. package/{server → dist/server}/helpers/format/num_format.js +40 -44
  17. package/{server → dist/server}/helpers/format/set.js +26 -27
  18. package/{server → dist/server}/helpers/funcs/_math.js +49 -50
  19. package/{server → dist/server}/helpers/funcs/contentList.js +52 -57
  20. package/{server → dist/server}/helpers/funcs/empty.js +21 -21
  21. package/dist/server/helpers/funcs/ifCond.js +109 -0
  22. package/dist/server/helpers/funcs/ifCondAnd.js +109 -0
  23. package/dist/server/helpers/funcs/ifCondOr.js +110 -0
  24. package/{server → dist/server}/helpers/funcs/inc.js +19 -20
  25. package/{server → dist/server}/helpers/funcs/json.js +3 -3
  26. package/dist/server/helpers/funcs/qrcode.js +65 -0
  27. package/{server → dist/server}/helpers/funcs/round.js +27 -29
  28. package/dist/server/helpers/funcs/select.js +39 -0
  29. package/dist/server/helpers/index.js +125 -0
  30. package/dist/server/helpers/list/buttonHelper.js +20 -0
  31. package/{server → dist/server}/helpers/list/descriptionList.js +39 -45
  32. package/dist/server/helpers/list/tableList.js +104 -0
  33. package/{server → dist/server}/helpers/list/utils/button.js +3 -3
  34. package/{server → dist/server}/helpers/list/utils/buttonDel.js +8 -9
  35. package/{server → dist/server}/helpers/list/utils/buttonEdit.js +8 -9
  36. package/{server → dist/server}/helpers/string/coalesce.js +33 -39
  37. package/{server → dist/server}/helpers/string/concat.js +25 -28
  38. package/{server → dist/server}/helpers/string/split.js +19 -20
  39. package/{server → dist/server}/helpers/string/str_replace.js +57 -62
  40. package/{server → dist/server}/helpers/string/substr.js +28 -32
  41. package/{server → dist/server}/helpers/string/translit.js +20 -23
  42. package/dist/server/helpers/string/utils/alphabet.js +76 -0
  43. package/{server → dist/server}/helpers/utils/button.js +3 -3
  44. package/{server → dist/server}/helpers/utils/buttonAdd.js +4 -4
  45. package/{server → dist/server}/helpers/utils/buttonDel.js +11 -15
  46. package/{server → dist/server}/helpers/utils/buttonDownload.js +3 -3
  47. package/dist/server/helpers/utils/buttonEdit.js +14 -0
  48. package/{server → dist/server}/helpers/utils/buttonPreview.js +3 -3
  49. package/{server → dist/server}/helpers/utils/mdToHTML.js +16 -17
  50. package/{server → dist/server}/helpers/utils/paddingNumber.js +5 -5
  51. package/dist/server/plugins/access/funcs/getAdminAccess.js +11 -0
  52. package/dist/server/plugins/cron/cronList.js +2 -0
  53. package/dist/server/plugins/cron/funcs/addCron.js +41 -0
  54. package/{server → dist/server}/plugins/cron/funcs/interval2ms.js +36 -40
  55. package/dist/server/plugins/cron/funcs/runCron.js +20 -0
  56. package/{server → dist/server}/plugins/cron/funcs/verifyUnique.js +19 -23
  57. package/dist/server/plugins/cron/index.js +75 -0
  58. package/dist/server/plugins/crud/funcs/dataDelete.js +87 -0
  59. package/dist/server/plugins/crud/funcs/dataInsert.js +134 -0
  60. package/dist/server/plugins/crud/funcs/dataUpdate.js +198 -0
  61. package/dist/server/plugins/crud/funcs/getAccess.js +82 -0
  62. package/dist/server/plugins/crud/funcs/getOpt.js +13 -0
  63. package/dist/server/plugins/crud/funcs/getToken.js +24 -0
  64. package/dist/server/plugins/crud/funcs/isFileExists.js +11 -0
  65. package/dist/server/plugins/crud/funcs/setOpt.js +19 -0
  66. package/dist/server/plugins/crud/funcs/setToken.js +41 -0
  67. package/dist/server/plugins/crud/funcs/utils/getFolder.js +13 -0
  68. package/dist/server/plugins/crud/funcs/utils/getInsertQuery.js +54 -0
  69. package/dist/server/plugins/crud/funcs/utils/logChanges.js +144 -0
  70. package/{server → dist/server}/plugins/crud/funcs/validateData.js +91 -83
  71. package/dist/server/plugins/extra/extraData.js +81 -0
  72. package/dist/server/plugins/extra/extraDataGet.js +52 -0
  73. package/dist/server/plugins/file/downloadFile.js +15 -0
  74. package/{server → dist/server}/plugins/file/getExport.js +18 -38
  75. package/dist/server/plugins/file/isFileExists.js +13 -0
  76. package/dist/server/plugins/file/providers/fs.js +86 -0
  77. package/dist/server/plugins/file/providers/index.js +28 -0
  78. package/dist/server/plugins/file/providers/mime/index.js +7 -0
  79. package/dist/server/plugins/file/providers/mime/mimes.js +1179 -0
  80. package/dist/server/plugins/file/providers/s3/client.js +26 -0
  81. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +42 -0
  82. package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +24 -0
  83. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +35 -0
  84. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +18 -0
  85. package/{server → dist/server}/plugins/file/providers/s3/index.js +11 -12
  86. package/dist/server/plugins/file/providers/utils/getDataSize.js +19 -0
  87. package/dist/server/plugins/file/providers/utils/getValidData.js +30 -0
  88. package/dist/server/plugins/file/providers/utils/handlers/dataTypes.js +7 -0
  89. package/dist/server/plugins/file/providers/utils/handlers/index.js +50 -0
  90. package/dist/server/plugins/file/providers/utils/handlers/sizeHandlers.js +9 -0
  91. package/dist/server/plugins/file/providers/utils/streamToBuffer.js +7 -0
  92. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isArray.js +2 -3
  93. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isBuffer.js +2 -3
  94. package/dist/server/plugins/file/providers/utils/typeguards/isPath.js +3 -0
  95. package/dist/server/plugins/file/providers/utils/typeguards/isReadableStream.js +7 -0
  96. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isText.js +2 -3
  97. package/dist/server/plugins/file/uploadFile.js +14 -0
  98. package/dist/server/plugins/file/uploadMultiPart.js +101 -0
  99. package/dist/server/plugins/file/utils/allowedExtensions.js +60 -0
  100. package/{server → dist/server}/plugins/file/utils/getFileType.js +12 -10
  101. package/dist/server/plugins/file/utils/getPath.js +30 -0
  102. package/dist/server/plugins/file/utils/isFileExists.js +15 -0
  103. package/dist/server/plugins/grpc/file2json.js +50 -0
  104. package/dist/server/plugins/grpc/grpc.js +103 -0
  105. package/dist/server/plugins/grpc/office2pdf.js +78 -0
  106. package/dist/server/plugins/grpc/utils/csv2xls.js +6 -0
  107. package/dist/server/plugins/grpc/utils/excel2Json.js +10 -0
  108. package/dist/server/plugins/grpc/utils/html2doc.js +17 -0
  109. package/dist/server/plugins/grpc/utils/html2img.js +17 -0
  110. package/dist/server/plugins/grpc/utils/html2pdf.js +19 -0
  111. package/{server → dist/server}/plugins/grpc/utils/htmlTemplate.js +3 -4
  112. package/dist/server/plugins/grpc/utils/json2xls.js +11 -0
  113. package/dist/server/plugins/grpc/utils/mergePdf.js +18 -0
  114. package/dist/server/plugins/hook/funcs/addHook.js +7 -0
  115. package/dist/server/plugins/hook/funcs/applyHook.js +25 -0
  116. package/dist/server/plugins/hook/funcs/applyHookSync.js +7 -0
  117. package/dist/server/plugins/hook/hookList.js +2 -0
  118. package/{server → dist/server}/plugins/hook/index.js +7 -8
  119. package/dist/server/plugins/logger/createFileStream.js +79 -0
  120. package/dist/server/plugins/logger/errorMessage.js +24 -0
  121. package/dist/server/plugins/logger/errorStatus.js +17 -0
  122. package/dist/server/plugins/logger/getHooks.js +17 -0
  123. package/dist/server/plugins/logger/getLogger.js +52 -0
  124. package/dist/server/plugins/logger/index.js +37 -0
  125. package/dist/server/plugins/logger/labels.js +10 -0
  126. package/dist/server/plugins/logger/serializers.js +22 -0
  127. package/{server → dist/server}/plugins/logger/timestampWithTimeZone.js +5 -5
  128. package/dist/server/plugins/md/funcs/formatMdoc.js +45 -0
  129. package/{server → dist/server}/plugins/md/funcs/mdToHTML.js +16 -17
  130. package/dist/server/plugins/metric/index.js +6 -0
  131. package/dist/server/plugins/metric/loggerSystem.js +127 -0
  132. package/dist/server/plugins/metric/systemMetricsFifthly.js +20 -0
  133. package/dist/server/plugins/migration/exec.migrations.js +59 -0
  134. package/dist/server/plugins/migration/exec.sql.js +61 -0
  135. package/{server → dist/server}/plugins/migration/index.js +5 -7
  136. package/dist/server/plugins/pg/funcs/autoIndex.js +102 -0
  137. package/{server → dist/server}/plugins/pg/funcs/getDBParams.js +16 -15
  138. package/dist/server/plugins/pg/funcs/getMeta.js +48 -0
  139. package/dist/server/plugins/pg/funcs/getPG.js +39 -0
  140. package/dist/server/plugins/pg/funcs/getPGAsync.js +45 -0
  141. package/dist/server/plugins/pg/funcs/init.js +157 -0
  142. package/dist/server/plugins/pg/index.js +47 -0
  143. package/dist/server/plugins/pg/pgClients.js +20 -0
  144. package/dist/server/plugins/policy/funcs/checkPolicy.js +173 -0
  145. package/dist/server/plugins/policy/funcs/checkXSS.js +44 -0
  146. package/dist/server/plugins/policy/index.js +11 -0
  147. package/dist/server/plugins/policy/sqlInjection.js +33 -0
  148. package/dist/server/plugins/policy/xssInjection.js +72 -0
  149. package/{server → dist/server}/plugins/redis/client.js +6 -8
  150. package/dist/server/plugins/redis/funcs/getRedis.js +23 -0
  151. package/{server → dist/server}/plugins/redis/funcs/redisClients.js +2 -3
  152. package/dist/server/plugins/redis/index.js +8 -0
  153. package/dist/server/plugins/sqlite/funcs/getSqlite.js +27 -0
  154. package/dist/server/plugins/sqlite/funcs/init.js +45 -0
  155. package/dist/server/plugins/sqlite/index.js +8 -0
  156. package/dist/server/plugins/sqlite/sqliteClients.js +24 -0
  157. package/dist/server/plugins/table/funcs/addMenu.js +12 -0
  158. package/dist/server/plugins/table/funcs/addTemplateDir.js +16 -0
  159. package/dist/server/plugins/table/funcs/customTokens.js +2 -0
  160. package/dist/server/plugins/table/funcs/getData.js +25 -0
  161. package/dist/server/plugins/table/funcs/getFilter.js +18 -0
  162. package/dist/server/plugins/table/funcs/getFilterSQL/index.js +201 -0
  163. package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +131 -0
  164. package/dist/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +11 -0
  165. package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +84 -0
  166. package/dist/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +11 -0
  167. package/dist/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +161 -0
  168. package/dist/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +40 -0
  169. package/dist/server/plugins/table/funcs/getSelect.js +37 -0
  170. package/dist/server/plugins/table/funcs/getSelectMeta.js +77 -0
  171. package/dist/server/plugins/table/funcs/getTemplate.js +86 -0
  172. package/dist/server/plugins/table/funcs/getTemplatePath.js +60 -0
  173. package/dist/server/plugins/table/funcs/getTemplateSync.js +84 -0
  174. package/dist/server/plugins/table/funcs/getTemplates.js +15 -0
  175. package/dist/server/plugins/table/funcs/gisIRColumn.js +81 -0
  176. package/dist/server/plugins/table/funcs/loadTemplate.js +2 -0
  177. package/dist/server/plugins/table/funcs/loadTemplatePath.js +2 -0
  178. package/dist/server/plugins/table/funcs/menuDirs.js +2 -0
  179. package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.js +75 -0
  180. package/dist/server/plugins/table/funcs/metaFormat/index.js +64 -0
  181. package/dist/server/plugins/table/funcs/userTemplateDir.js +2 -0
  182. package/dist/server/plugins/table/funcs/userTokens.js +2 -0
  183. package/dist/server/plugins/util/funcs/eventStream.js +28 -0
  184. package/{server → dist/server}/plugins/util/funcs/flattenObject.js +14 -12
  185. package/{server → dist/server}/plugins/util/funcs/unflattenObject.js +48 -46
  186. package/{server → dist/server}/plugins/yml/funcs/json2yml.js +3 -5
  187. package/{server → dist/server}/plugins/yml/funcs/yml2json.js +11 -14
  188. package/{server → dist/server}/routes/access/controllers/access.group.js +17 -23
  189. package/{server → dist/server}/routes/access/controllers/access.group.post.js +46 -53
  190. package/dist/server/routes/access/controllers/access.interface.js +36 -0
  191. package/{server/routes/access/index.mjs → dist/server/routes/access/index.js} +10 -12
  192. package/{server/routes/access/schema.mjs → dist/server/routes/access/schema.js} +65 -68
  193. package/dist/server/routes/cron/controllers/cronApi.js +16 -0
  194. package/dist/server/routes/cron/index.js +15 -0
  195. package/dist/server/routes/crud/controllers/deleteCrud.js +90 -0
  196. package/dist/server/routes/crud/controllers/insert.js +110 -0
  197. package/dist/server/routes/crud/controllers/table.js +144 -0
  198. package/dist/server/routes/crud/controllers/update.js +113 -0
  199. package/dist/server/routes/crud/index.js +22 -0
  200. package/dist/server/routes/dblist/controllers/readItems.js +25 -0
  201. package/dist/server/routes/dblist/controllers/setItem.js +20 -0
  202. package/dist/server/routes/dblist/index.js +17 -0
  203. package/dist/server/routes/dblist/utils/formatData.js +8 -0
  204. package/dist/server/routes/file/controllers/delete.js +99 -0
  205. package/dist/server/routes/file/controllers/download.js +56 -0
  206. package/dist/server/routes/file/controllers/export.js +294 -0
  207. package/dist/server/routes/file/controllers/files.js +57 -0
  208. package/dist/server/routes/file/controllers/resize.js +86 -0
  209. package/dist/server/routes/file/controllers/resizeAll.js +140 -0
  210. package/dist/server/routes/file/controllers/upload.js +56 -0
  211. package/dist/server/routes/file/controllers/uploadImage.js +45 -0
  212. package/dist/server/routes/file/controllers/utils/formatResult.js +13 -0
  213. package/dist/server/routes/file/controllers/utils/jsonToCsv.js +40 -0
  214. package/dist/server/routes/file/controllers/utils/jsonToXls.js +37 -0
  215. package/dist/server/routes/file/index.js +22 -0
  216. package/dist/server/routes/file/schema.js +14 -0
  217. package/dist/server/routes/grpc/controllers/file2geojson.js +54 -0
  218. package/dist/server/routes/grpc/controllers/filePreview.js +87 -0
  219. package/dist/server/routes/grpc/index.js +9 -0
  220. package/dist/server/routes/logger/controllers/logger.file.js +81 -0
  221. package/dist/server/routes/logger/controllers/logger.test.api.js +42 -0
  222. package/dist/server/routes/logger/controllers/utils/checkUserAccess.js +22 -0
  223. package/dist/server/routes/logger/controllers/utils/getRootDir.js +25 -0
  224. package/dist/server/routes/logger/index.js +18 -0
  225. package/dist/server/routes/menu/controllers/getMenu.js +98 -0
  226. package/dist/server/routes/menu/controllers/interfaces.js +18 -0
  227. package/dist/server/routes/menu/index.js +7 -0
  228. package/dist/server/routes/properties/controllers/properties.get.js +23 -0
  229. package/dist/server/routes/properties/controllers/properties.post.js +68 -0
  230. package/dist/server/routes/properties/index.js +21 -0
  231. package/dist/server/routes/table/controllers/card.js +79 -0
  232. package/dist/server/routes/table/controllers/cardData.js +161 -0
  233. package/dist/server/routes/table/controllers/cardTabData.js +49 -0
  234. package/dist/server/routes/table/controllers/dataInfo.js +57 -0
  235. package/dist/server/routes/table/controllers/filter.js +181 -0
  236. package/dist/server/routes/table/controllers/form.js +41 -0
  237. package/{server → dist/server}/routes/table/controllers/getFormByTable.js +105 -125
  238. package/dist/server/routes/table/controllers/search.js +80 -0
  239. package/dist/server/routes/table/controllers/suggest.js +242 -0
  240. package/dist/server/routes/table/controllers/tableData.js +88 -0
  241. package/dist/server/routes/table/controllers/tableInfo.js +112 -0
  242. package/dist/server/routes/table/controllers/tokenInfo.js +10 -0
  243. package/dist/server/routes/table/controllers/utils/conditions.js +30 -0
  244. package/dist/server/routes/table/controllers/utils/formatSchema.js +35 -0
  245. package/dist/server/routes/table/controllers/utils/locales.js +2 -0
  246. package/dist/server/routes/table/functions/getData.js +584 -0
  247. package/dist/server/routes/table/index.js +44 -0
  248. package/dist/server/routes/table/schema.js +117 -0
  249. package/dist/server/routes/templates/controllers/getTemplate.js +65 -0
  250. package/dist/server/routes/templates/index.js +7 -0
  251. package/{server → dist/server}/routes/templates/schema.js +11 -12
  252. package/dist/server/routes/util/controllers/code.generator.js +75 -0
  253. package/dist/server/routes/util/controllers/next.id.js +4 -0
  254. package/dist/server/routes/util/controllers/status.monitor.js +6 -0
  255. package/dist/server/routes/util/controllers/user.tokens.js +32 -0
  256. package/dist/server/routes/util/index.js +13 -0
  257. package/dist/server/routes/widget/controllers/file.edit.js +48 -0
  258. package/dist/server/routes/widget/controllers/widget.del.js +84 -0
  259. package/dist/server/routes/widget/controllers/widget.get.js +164 -0
  260. package/dist/server/routes/widget/controllers/widget.set.js +117 -0
  261. package/dist/server/routes/widget/hook/onWidgetSet.js +10 -0
  262. package/dist/server/routes/widget/index.js +42 -0
  263. package/dist/server/types/core.js +12 -0
  264. package/dist/utils.js +93 -0
  265. package/package.json +24 -17
  266. package/config.js +0 -37
  267. package/dblist.js +0 -5
  268. package/index.js +0 -193
  269. package/redactionList.js +0 -7
  270. package/server/helpers/core/badge.js +0 -14
  271. package/server/helpers/core/buttonFilePreview.js +0 -12
  272. package/server/helpers/core/buttonHelper.js +0 -22
  273. package/server/helpers/format/formatAuto.js +0 -13
  274. package/server/helpers/format/formatDate.js +0 -258
  275. package/server/helpers/format/formatNum.js +0 -365
  276. package/server/helpers/format/formatRelative.js +0 -106
  277. package/server/helpers/funcs/ifCond.js +0 -109
  278. package/server/helpers/funcs/ifCondAnd.js +0 -114
  279. package/server/helpers/funcs/ifCondOr.js +0 -115
  280. package/server/helpers/funcs/qrcode.js +0 -68
  281. package/server/helpers/funcs/select.js +0 -46
  282. package/server/helpers/index.js +0 -137
  283. package/server/helpers/list/buttonHelper.js +0 -22
  284. package/server/helpers/list/tableList.js +0 -87
  285. package/server/helpers/string/utils/alphabet.js +0 -76
  286. package/server/helpers/utils/buttonEdit.js +0 -17
  287. package/server/migrations/0.sql +0 -84
  288. package/server/migrations/cls.sql +0 -40
  289. package/server/migrations/context.sql +0 -135
  290. package/server/migrations/crm.sql +0 -155
  291. package/server/migrations/log.sql +0 -87
  292. package/server/migrations/properties.sql +0 -115
  293. package/server/migrations/roles.sql +0 -191
  294. package/server/migrations/template.sql +0 -44
  295. package/server/migrations/users.sql +0 -176
  296. package/server/plugins/access/funcs/getAdminAccess.js +0 -14
  297. package/server/plugins/access/index.mjs +0 -6
  298. package/server/plugins/cron/cronList.js +0 -1
  299. package/server/plugins/cron/funcs/addCron.js +0 -52
  300. package/server/plugins/cron/funcs/runCron.js +0 -24
  301. package/server/plugins/cron/index.js +0 -77
  302. package/server/plugins/crud/funcs/dataDelete.js +0 -86
  303. package/server/plugins/crud/funcs/dataInsert.js +0 -131
  304. package/server/plugins/crud/funcs/dataUpdate.js +0 -179
  305. package/server/plugins/crud/funcs/getAccess.js +0 -94
  306. package/server/plugins/crud/funcs/getOpt.js +0 -14
  307. package/server/plugins/crud/funcs/getToken.js +0 -33
  308. package/server/plugins/crud/funcs/isFileExists.js +0 -13
  309. package/server/plugins/crud/funcs/setOpt.js +0 -21
  310. package/server/plugins/crud/funcs/setToken.js +0 -43
  311. package/server/plugins/crud/funcs/utils/getFolder.js +0 -11
  312. package/server/plugins/crud/funcs/utils/getInsertQuery.js +0 -44
  313. package/server/plugins/crud/funcs/utils/logChanges.js +0 -121
  314. package/server/plugins/crud/index.js +0 -23
  315. package/server/plugins/extra/extraData.js +0 -79
  316. package/server/plugins/extra/extraDataGet.js +0 -56
  317. package/server/plugins/file/downloadFile.js +0 -18
  318. package/server/plugins/file/isFileExists.js +0 -17
  319. package/server/plugins/file/providers/fs.js +0 -100
  320. package/server/plugins/file/providers/index.d.ts +0 -49
  321. package/server/plugins/file/providers/index.js +0 -36
  322. package/server/plugins/file/providers/mime/index.js +0 -12
  323. package/server/plugins/file/providers/mime/mimes.js +0 -1180
  324. package/server/plugins/file/providers/s3/client.js +0 -41
  325. package/server/plugins/file/providers/s3/funcs/downloadFile.js +0 -50
  326. package/server/plugins/file/providers/s3/funcs/fileExists.js +0 -32
  327. package/server/plugins/file/providers/s3/funcs/uploadFile.js +0 -46
  328. package/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +0 -23
  329. package/server/plugins/file/providers/utils/getDataSize.js +0 -20
  330. package/server/plugins/file/providers/utils/getValidData.js +0 -32
  331. package/server/plugins/file/providers/utils/handlers/dataTypes.js +0 -8
  332. package/server/plugins/file/providers/utils/handlers/index.js +0 -53
  333. package/server/plugins/file/providers/utils/handlers/sizeHandlers.js +0 -11
  334. package/server/plugins/file/providers/utils/streamToBuffer.js +0 -8
  335. package/server/plugins/file/providers/utils/typeguards/isPath.js +0 -5
  336. package/server/plugins/file/providers/utils/typeguards/isReadableStream.js +0 -8
  337. package/server/plugins/file/uploadFile.js +0 -19
  338. package/server/plugins/file/uploadMultiPart.js +0 -131
  339. package/server/plugins/file/utils/allowedExtensions.js +0 -25
  340. package/server/plugins/file/utils/getPath.js +0 -25
  341. package/server/plugins/file/utils/isFileExists.js +0 -16
  342. package/server/plugins/grpc/file2json.js +0 -54
  343. package/server/plugins/grpc/grpc.js +0 -125
  344. package/server/plugins/grpc/office2pdf.js +0 -91
  345. package/server/plugins/grpc/utils/csv2xls.js +0 -8
  346. package/server/plugins/grpc/utils/excel2Json.js +0 -8
  347. package/server/plugins/grpc/utils/html2doc.js +0 -19
  348. package/server/plugins/grpc/utils/html2img.js +0 -18
  349. package/server/plugins/grpc/utils/html2pdf.js +0 -23
  350. package/server/plugins/grpc/utils/json2xls.js +0 -13
  351. package/server/plugins/grpc/utils/mergePdf.js +0 -20
  352. package/server/plugins/hook/funcs/addHook.js +0 -8
  353. package/server/plugins/hook/funcs/applyHook.js +0 -25
  354. package/server/plugins/hook/funcs/applyHookSync.js +0 -9
  355. package/server/plugins/hook/hookList.js +0 -1
  356. package/server/plugins/logger/createFileStream.js +0 -88
  357. package/server/plugins/logger/errorMessage.js +0 -25
  358. package/server/plugins/logger/errorStatus.js +0 -19
  359. package/server/plugins/logger/getHooks.js +0 -21
  360. package/server/plugins/logger/getLogger.js +0 -58
  361. package/server/plugins/logger/index.js +0 -33
  362. package/server/plugins/logger/labels.js +0 -11
  363. package/server/plugins/logger/serializers.js +0 -25
  364. package/server/plugins/md/funcs/formatMdoc.js +0 -40
  365. package/server/plugins/metric/index.js +0 -8
  366. package/server/plugins/metric/loggerSystem.js +0 -131
  367. package/server/plugins/metric/systemMetricsFifthly.js +0 -24
  368. package/server/plugins/migration/exec.migrations.js +0 -63
  369. package/server/plugins/migration/exec.sql.js +0 -67
  370. package/server/plugins/pg/funcs/autoIndex.js +0 -103
  371. package/server/plugins/pg/funcs/getMeta.js +0 -49
  372. package/server/plugins/pg/funcs/getPG.js +0 -42
  373. package/server/plugins/pg/funcs/getPGAsync.js +0 -62
  374. package/server/plugins/pg/funcs/init.js +0 -117
  375. package/server/plugins/pg/index.js +0 -54
  376. package/server/plugins/pg/pgClients.js +0 -22
  377. package/server/plugins/policy/funcs/checkPolicy.js +0 -127
  378. package/server/plugins/policy/funcs/checkXSS.js +0 -37
  379. package/server/plugins/policy/index.js +0 -11
  380. package/server/plugins/policy/sqlInjection.js +0 -34
  381. package/server/plugins/policy/xssInjection.js +0 -73
  382. package/server/plugins/redis/funcs/getRedis.js +0 -25
  383. package/server/plugins/redis/index.js +0 -17
  384. package/server/plugins/sqlite/funcs/getSqlite.js +0 -39
  385. package/server/plugins/sqlite/funcs/init.js +0 -53
  386. package/server/plugins/sqlite/index.js +0 -11
  387. package/server/plugins/sqlite/sqliteClients.js +0 -26
  388. package/server/plugins/table/funcs/addMenu.js +0 -16
  389. package/server/plugins/table/funcs/addTemplateDir.js +0 -19
  390. package/server/plugins/table/funcs/customTokens.js +0 -1
  391. package/server/plugins/table/funcs/getData.js +0 -14
  392. package/server/plugins/table/funcs/getFilter.js +0 -14
  393. package/server/plugins/table/funcs/getFilterSQL/index.js +0 -163
  394. package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +0 -136
  395. package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +0 -13
  396. package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +0 -75
  397. package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +0 -12
  398. package/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +0 -156
  399. package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +0 -34
  400. package/server/plugins/table/funcs/getSelect.js +0 -31
  401. package/server/plugins/table/funcs/getSelectMeta.js +0 -74
  402. package/server/plugins/table/funcs/getTemplate.js +0 -88
  403. package/server/plugins/table/funcs/getTemplatePath.js +0 -60
  404. package/server/plugins/table/funcs/getTemplateSync.js +0 -87
  405. package/server/plugins/table/funcs/getTemplates.js +0 -19
  406. package/server/plugins/table/funcs/gisIRColumn.js +0 -82
  407. package/server/plugins/table/funcs/loadTemplate.js +0 -1
  408. package/server/plugins/table/funcs/loadTemplatePath.js +0 -1
  409. package/server/plugins/table/funcs/menuDirs.js +0 -1
  410. package/server/plugins/table/funcs/metaFormat/getSelectVal.js +0 -61
  411. package/server/plugins/table/funcs/metaFormat/index.js +0 -49
  412. package/server/plugins/table/funcs/userTemplateDir.js +0 -1
  413. package/server/plugins/table/funcs/userTokens.js +0 -1
  414. package/server/plugins/table/index.js +0 -13
  415. package/server/plugins/util/funcs/eventStream.js +0 -29
  416. package/server/plugins/util/index.js +0 -7
  417. package/server/routes/access/controllers/access.interface.js +0 -37
  418. package/server/routes/cron/controllers/cronApi.js +0 -22
  419. package/server/routes/cron/index.js +0 -19
  420. package/server/routes/crud/controllers/deleteCrud.js +0 -84
  421. package/server/routes/crud/controllers/insert.js +0 -103
  422. package/server/routes/crud/controllers/table.js +0 -116
  423. package/server/routes/crud/controllers/update.js +0 -108
  424. package/server/routes/crud/index.js +0 -26
  425. package/server/routes/dblist/controllers/readItems.js +0 -28
  426. package/server/routes/dblist/controllers/setItem.js +0 -25
  427. package/server/routes/dblist/index.mjs +0 -19
  428. package/server/routes/dblist/utils/formatData.js +0 -7
  429. package/server/routes/file/controllers/delete.js +0 -108
  430. package/server/routes/file/controllers/download.js +0 -66
  431. package/server/routes/file/controllers/export.js +0 -290
  432. package/server/routes/file/controllers/files.js +0 -72
  433. package/server/routes/file/controllers/resize.js +0 -96
  434. package/server/routes/file/controllers/resizeAll.js +0 -165
  435. package/server/routes/file/controllers/upload.js +0 -55
  436. package/server/routes/file/controllers/uploadImage.js +0 -47
  437. package/server/routes/file/controllers/utils/formatResult.js +0 -17
  438. package/server/routes/file/controllers/utils/jsonToCsv.js +0 -36
  439. package/server/routes/file/controllers/utils/jsonToXls.js +0 -42
  440. package/server/routes/file/index.mjs +0 -26
  441. package/server/routes/file/schema.js +0 -16
  442. package/server/routes/grpc/controllers/file2geojson.js +0 -60
  443. package/server/routes/grpc/controllers/filePreview.js +0 -89
  444. package/server/routes/grpc/index.mjs +0 -12
  445. package/server/routes/logger/controllers/logger.file.js +0 -97
  446. package/server/routes/logger/controllers/logger.test.api.js +0 -48
  447. package/server/routes/logger/controllers/utils/checkUserAccess.js +0 -24
  448. package/server/routes/logger/controllers/utils/getRootDir.js +0 -27
  449. package/server/routes/logger/index.js +0 -22
  450. package/server/routes/menu/controllers/getMenu.js +0 -98
  451. package/server/routes/menu/controllers/interfaces.js +0 -21
  452. package/server/routes/menu/index.mjs +0 -8
  453. package/server/routes/menu/schema.js +0 -0
  454. package/server/routes/properties/controllers/properties.get.js +0 -33
  455. package/server/routes/properties/controllers/properties.post.js +0 -76
  456. package/server/routes/properties/index.js +0 -25
  457. package/server/routes/table/controllers/card.js +0 -77
  458. package/server/routes/table/controllers/cardData.js +0 -155
  459. package/server/routes/table/controllers/cardTabData.js +0 -57
  460. package/server/routes/table/controllers/dataInfo.js +0 -56
  461. package/server/routes/table/controllers/filter.js +0 -154
  462. package/server/routes/table/controllers/form.js +0 -42
  463. package/server/routes/table/controllers/search.js +0 -74
  464. package/server/routes/table/controllers/suggest.js +0 -246
  465. package/server/routes/table/controllers/tableData.js +0 -62
  466. package/server/routes/table/controllers/tableInfo.js +0 -110
  467. package/server/routes/table/controllers/tokenInfo.js +0 -12
  468. package/server/routes/table/controllers/utils/conditions.js +0 -21
  469. package/server/routes/table/controllers/utils/formatSchema.js +0 -23
  470. package/server/routes/table/controllers/utils/locales.js +0 -1
  471. package/server/routes/table/functions/getData.js +0 -436
  472. package/server/routes/table/index.js +0 -57
  473. package/server/routes/table/schema.js +0 -127
  474. package/server/routes/templates/controllers/getTemplate.js +0 -51
  475. package/server/routes/templates/index.mjs +0 -10
  476. package/server/routes/util/controllers/code.generator.js +0 -94
  477. package/server/routes/util/controllers/next.id.js +0 -4
  478. package/server/routes/util/controllers/status.monitor.js +0 -8
  479. package/server/routes/util/controllers/user.tokens.js +0 -45
  480. package/server/routes/util/index.js +0 -14
  481. package/server/routes/widget/controllers/file.edit.js +0 -55
  482. package/server/routes/widget/controllers/widget.del.js +0 -99
  483. package/server/routes/widget/controllers/widget.get.js +0 -156
  484. package/server/routes/widget/controllers/widget.set.js +0 -108
  485. package/server/routes/widget/hook/onWidgetSet.js +0 -13
  486. package/server/routes/widget/index.mjs +0 -38
  487. package/utils.js +0 -112
  488. /package/{server → dist/server}/plugins/grpc/utils/convertp.proto +0 -0
  489. /package/{server → dist/server}/plugins/grpc/utils/office2pdf.proto +0 -0
@@ -1,179 +0,0 @@
1
- import getPG from '../../pg/funcs/getPG.js';
2
- import getMeta from '../../pg/funcs/getMeta.js';
3
- import getRedis from '../../redis/funcs/getRedis.js';
4
- import pgClients from '../../pg/pgClients.js';
5
- import getTemplate from '../../table/funcs/getTemplate.js';
6
- import config from '../../../../config.js';
7
-
8
- import extraData from '../../extra/extraData.js';
9
- import logChanges from './utils/logChanges.js';
10
- import logger from '../../logger/getLogger.js';
11
- import getInsertQuery from './utils/getInsertQuery.js';
12
-
13
- const rclient = getRedis();
14
- const srids = {};
15
-
16
- function assignValue(key, i, srid = 4326, columnType = 'text') {
17
- if (key === 'geom' && columnType === 'geometry') {
18
- return `"${key}"=st_setsrid(st_geomfromgeojson($${i + 2}::json),4326)`;
19
- }
20
- if (key?.includes('geom') && columnType === 'geometry') {
21
- return `"${key}"=st_setsrid(st_geomfromgeojson($${i + 2}::json),${srid})`;
22
- }
23
- return `"${key}"=$${i + 2}`;
24
- }
25
-
26
- export default async function dataUpdate({
27
- table, tokenData, referer, id, data, pg: pg1, uid,
28
- }) {
29
- if (!data || !table || !id) return null;
30
-
31
- const pg = pg1 || getPG({ name: 'client' });
32
- if (!pg) return null;
33
-
34
- // pg client single transaction support
35
- if (!pg?.pk && config.pg) {
36
- pg.options = pgClients.client?.options;
37
- pg.tlist = pgClients.client?.tlist;
38
- pg.pgType = pgClients.client?.pgType;
39
- pg.relkinds = pgClients.client?.relkinds;
40
- pg.pk = pgClients.client?.pk;
41
- }
42
-
43
- const { columns, pk } = await getMeta({ pg, table });
44
-
45
- if (!columns) return null;
46
-
47
- const names = columns.map((el) => el.name);
48
- const types = columns.reduce((acc, { name, dataTypeID }) => ({ ...acc, [name]: pg.pgType?.[dataTypeID] }), {});
49
-
50
- const filterData = Object.keys(data)
51
- .filter((el) => (/* typeof data[el] === 'boolean' ? true : data[el] && */ names?.includes(el) && !['editor_date', 'editor_id', 'updated_by', 'updated_at'].includes(el)));
52
-
53
- const systemColumns = [['editor_date', 'now()'], ['updated_at', 'now()'], uid ? ['editor_id', `'${uid.replace(/'/g, "''")}'`] : null, uid ? ['updated_by', `'${uid.replace(/'/g, "''")}'`] : null].filter((el) => el && names.includes(el[0])).map((el) => `${el[0]} = ${el[1]}`).join(',');
54
-
55
- const filterValue = filterData.map((el) => {
56
- const { dataTypeID = 25 } = columns.find((col) => col?.name === el) || {};
57
- if (pg.pgType[dataTypeID]?.endsWith('[]') && ['string', 'number'].includes(typeof data[el])) {
58
- Object.assign(data, { [el]: data[el].split(',') });
59
- }
60
- return [el, data[el]];
61
- }).map((el) => (typeof el[1] === 'object' && types[el[0]]?.includes?.('json') && el[1] ? JSON.stringify(el[1]) : el[1]));
62
-
63
- // update geometry with srid
64
- if (!srids[table] && pg.tlist?.includes('public.geometry_columns')) {
65
- const { srids1 } = await pg.query(`select json_object_agg(_table,rel) as srids1 from (
66
- select f_table_schema||'.'||f_table_name as _table,
67
- json_object_agg(f_geometry_column, case when srid = 0 then 4326 else srid end) as rel
68
- from public.geometry_columns group by f_table_schema||'.'||f_table_name
69
- )q`).then((res1) => res1.rows?.[0] || {});
70
- Object.assign(srids, srids1);
71
- }
72
-
73
- const updateQuery = `UPDATE ${table} SET ${systemColumns ? `${systemColumns}${filterData?.length ? ',' : ''}` : ''}
74
- ${filterData?.map((key, i) => assignValue(key, i, srids[table]?.[key] || 4326, pg.pgType?.[columns.find(col => col.name === key)?.dataTypeID || '']))?.join(',')}
75
- WHERE ${pk}::text = $1::text returning *`;
76
- // console.log(updateQuery, filterValue);
77
-
78
- // for transactions
79
- const isClient = typeof pg.query === 'function' && typeof pg.release === 'function';
80
- const client = isClient ? pg : await pg.connect();
81
-
82
- if (isClient || !client.pk) {
83
- client.options = pg.options;
84
- client.tlist = pg.tlist;
85
- client.pgType = pg.pgType;
86
- client.relkinds = pg.relkinds;
87
- client.pk = pg.pk;
88
- }
89
-
90
- try {
91
- if (!isClient) {
92
- await client.query('begin;');
93
- }
94
- const res = await client.query(updateQuery, [id, ...filterValue])
95
- .catch(err => {
96
- logger.file('crud/update', {
97
- error: err.toString(),
98
- stack: err.stack,
99
- table,
100
- id,
101
- referer,
102
- uid,
103
- data,
104
- q: updateQuery,
105
- });
106
- throw err;
107
- })
108
- .then(el => el?.rows?.[0]) || {};
109
-
110
- await extraData({
111
- table,
112
- form: tokenData?.form,
113
- id,
114
- data,
115
- uid,
116
- row: res,
117
- }, client);
118
-
119
- // foreign key dataTable (table + parent_id)
120
- const formData = tokenData?.form ? (await getTemplate('form', tokenData.form) || {}) : {};
121
- const schema = formData?.schema || formData;
122
-
123
- const parentKeys = Object.keys(schema || {})?.filter((key) => Array.isArray(data[key]) && schema?.[key]?.table && schema?.[key]?.parent_id /* && body[key].length */);
124
- if (parentKeys?.length) {
125
- await Promise.all(parentKeys?.map(async (key) => {
126
- const objId = data[schema[key].parent_id] || data?.id || res?.[schema[key]?.parent_id] || res?.[pg.pk?.[table] || ''];
127
- // delete old extra data
128
- await client.query(`delete from ${schema[key].table} where ${schema[key].parent_id}=$1`, [objId]); // rewrite?
129
- // insert new extra data
130
- if (Array.isArray(data[key]) && data[key]?.length) {
131
- const parentKey = schema[key].parent_id;
132
- const extraRows = await Promise.all(data[key]?.map?.(async (row) => {
133
- Object.assign(row, { [parentKey]: objId });
134
- const parentRes = await getInsertQuery({
135
- pg: client, table: schema[key].table, data: row, uid,
136
- });
137
- if (!parentRes?.insertQuery || !parentRes?.args?.length) return null;
138
-
139
- const { rows = [] } = await client.query(parentRes.insertQuery, parentRes.args);
140
- return rows[0];
141
- }));
142
- Object.assign(res, { [key]: extraRows.filter(Boolean) });
143
- }
144
- }));
145
- }
146
-
147
- await logChanges({
148
- pg,
149
- table,
150
- tokenData,
151
- referer,
152
- data,
153
- id,
154
- uid,
155
- type: 'UPDATE',
156
- });
157
-
158
- if (config.redis) { rclient.incr(`pg:${table}:crud`); }
159
-
160
- if (!isClient) {
161
- await client.query('commit;');
162
- }
163
- return res || {};
164
- }
165
- catch (err) {
166
- logger.file('crud/update', {
167
- error: err.toString(), stack: err.stack, table, id, referer, uid, form: tokenData?.form,
168
- });
169
- if (!isClient) {
170
- await client.query('rollback;');
171
- }
172
- throw err;
173
- }
174
- finally {
175
- if (!isClient) {
176
- client.release();
177
- }
178
- }
179
- }
@@ -1,94 +0,0 @@
1
- import pgClients from '../../pg/pgClients.js';
2
- import getTemplate from '../../table/funcs/getTemplate.js';
3
- import applyHook from '../../hook/funcs/applyHook.js';
4
-
5
- const allActions = ['view', 'edit', 'add', 'del'];
6
-
7
- const q = `select a.route_id as id, d.actions as user_roles, d.actions as role_actions, coalesce(b.actions, array['view']) as interface_actions, b.scope, c.role_id
8
- from admin.routes a
9
- left join admin.role_access b on
10
- a.route_id=b.route_id
11
- left join admin.roles c on
12
- b.role_id=c.role_id
13
- and c.enabled
14
- left join admin.user_roles d on
15
- c.role_id=d.role_id
16
- and ( case when
17
- d.expiration is not null
18
- then d.expiration > CURRENT_DATE
19
- else 1=1
20
- end )
21
- where $1 in (a.route_id, a.alias, a.table_name) and $2 in (b.user_uid, d.user_uid)`;
22
-
23
- /**
24
- * @param {Array} user_roles.actions Actions - user actions <> group actions
25
- * @param {Array} role_access.actions Actions - user actions = group actions
26
- * @param {String} body.actions Actions from table template
27
- * @param {String} table Table name / Interface alias
28
- * @param {Object} user User object
29
- * @param {String} user.uid User ID
30
- * @param {String} user.user_type User type
31
- * @returns { scope: String, roles: String[], actions: String[], query: String }
32
- */
33
-
34
- export default async function getAccess({ table, form, user = {} }, pg = pgClients.client) {
35
- if (!table) return null;
36
-
37
- const hookData = await applyHook('getAccess', { table, user, pg });
38
- if (hookData) return hookData;
39
-
40
- const { uid, user_type: userType = 'regular' } = user;
41
-
42
- if (userType === 'superadmin') {
43
- return { actions: allActions, query: '1=1' };
44
- }
45
-
46
- const body = await getTemplate('table', table);
47
- const tableActions = !body && form
48
- ? allActions // if db table and form => full access (token)
49
- : ['view'].concat(body?.actions || body?.action_default || []);
50
-
51
- if (userType === 'admin') {
52
- if (!(body?.actions || body?.action_default) && (body?.form || form)) {
53
- return { actions: allActions, query: '1=1' };
54
- }
55
- return { actions: tableActions, query: '1=1' };
56
- }
57
-
58
- if (body?.public || body?.access === 'public') {
59
- return { actions: tableActions, query: '1=1' };
60
- }
61
-
62
- if (body?.access === 'user' && uid) {
63
- return { actions: tableActions, query: '1=1' };
64
- }
65
-
66
- if (!uid) {
67
- return { actions: [], query: '1=1' };
68
- }
69
-
70
- const userAccess = pg?.pk?.['admin.routes']
71
- && pg.pk?.['admin.role_access']
72
- && pg.pk?.['admin.roles']
73
- && pg.pk?.['admin.user_roles']
74
- ? await pg.query(q, [table, uid])
75
- .then(el => ({
76
- ...el.rows[0] || {},
77
- roles: el.rows?.map?.(row => row.role_id) || [],
78
- actions: el.rows?.map?.(row => row.actions).flat() || [],
79
- interface_actions: el.rows?.map?.(row => row.interface_actions).flat() || [],
80
- }))
81
- : {};
82
-
83
- const query = userAccess?.scope === 'my' ? `uid='${uid}'` : '1=1';
84
- const actions = userAccess?.interface_actions
85
- ?.filter(el => (userAccess?.role_actions?.length ? userAccess?.role_actions.includes(el) : true))
86
- ?.filter(el => tableActions.includes(el))
87
- ?.filter?.((el, idx, arr) => arr.indexOf(el) === idx);
88
- return {
89
- scope: userAccess?.scope,
90
- roles: userAccess?.roles,
91
- actions,
92
- query,
93
- };
94
- }
@@ -1,14 +0,0 @@
1
- import config from '../../../../config.js';
2
- import getRedis from '../../redis/funcs/getRedis.js';
3
-
4
- const rclient = getRedis({ db: 0 });
5
-
6
- export default async function getOpt(token, uid = 0) {
7
- if (!config.redis) return null;
8
-
9
- const key = `opt:${uid}:${token}`;
10
- // console.log(key);
11
- const data = await rclient.get(key);
12
- if (!data) return null;
13
- return JSON.parse(data);
14
- }
@@ -1,33 +0,0 @@
1
- import config from '../../../../config.js';
2
-
3
- import getRedis from '../../redis/funcs/getRedis.js';
4
-
5
- // import { config, getRedis } from '../../../../utils.js';
6
-
7
- function sprintf(str, ...args) {
8
- return str.replace(/%s/g, () => args.shift());
9
- }
10
-
11
- const keys = {
12
- r: '%s:token:view:%s',
13
- a: '%s:token:add:%s',
14
- w: '%s:token:edit:%s',
15
- e: '%s:token:exec:%s',
16
- };
17
-
18
- const rclient = getRedis({ db: 0 });
19
-
20
- async function getToken({
21
- uid, token, json,
22
- }) {
23
- if (!config.redis) return null;
24
- const mode = 'w';
25
- // if (mode === 'r') return token;
26
-
27
- const key = sprintf(keys[mode], config?.pg?.database, uid?.toString());
28
- const id = await rclient.hget(key, token);
29
- // console.log(key, token);
30
- return json && id?.[0] === '{' ? JSON.parse(id) : id;
31
- }
32
-
33
- export default getToken;
@@ -1,13 +0,0 @@
1
- import { access } from 'fs/promises';
2
-
3
- const isFileExists = async (filepath) => {
4
- try {
5
- await access(filepath);
6
- return true;
7
- }
8
- catch (err) {
9
- return false;
10
- }
11
- };
12
-
13
- export default isFileExists;
@@ -1,21 +0,0 @@
1
- import { createHash, randomUUID } from 'crypto';
2
-
3
- import config from '../../../../config.js';
4
- import getRedis from '../../redis/funcs/getRedis.js';
5
-
6
- const random = randomUUID();
7
- const rclient = getRedis({ db: 0 });
8
-
9
- function md5(string) {
10
- return createHash('md5').update(string).digest('hex');
11
- }
12
-
13
- export default function setOpt(params, uid = 0) {
14
- if (!config.redis) return null;
15
- const token = Buffer.from(md5(typeof params === 'object' ? JSON.stringify(params) : params) + random, 'hex').toString('base64').replace(/[+-=]+/g, '');
16
- // const token = md5(params);
17
- const key = `opt:${uid}:${token}`;
18
-
19
- rclient.set(key, JSON.stringify(params), 'EX', 60 * 60);
20
- return token;
21
- }
@@ -1,43 +0,0 @@
1
- import { createHash, randomUUID } from 'crypto';
2
-
3
- import config from '../../../../config.js';
4
-
5
- import getRedis from '../../redis/funcs/getRedis.js';
6
-
7
- const rclient = getRedis({ db: 0 });
8
-
9
- // import { config, getRedis } from '../../../../utils.js';
10
-
11
- const generateCodes = (ids, userToken) => {
12
- const token = userToken || randomUUID();
13
- const notNullIds = ids.filter((el) => el);
14
- const obj = {};
15
- const codes = notNullIds.reduce((acc, id) => {
16
- const newToken = createHash('sha1').update(token + id).digest('base64url').replace(/-/g, '');
17
- acc[newToken] = id; obj[id] = newToken;
18
- return acc;
19
- }, {});
20
- return { codes, obj };
21
- };
22
-
23
- function setToken({
24
- ids: idsOrigin, uid, array,
25
- }) {
26
- if (!config.redis) return null;
27
- if (!uid) return { user: 'empty' };
28
- if (!Object.keys(idsOrigin).length) return { ids: 'empty' };
29
-
30
- const ids = idsOrigin.map((el) => (typeof el === 'object' ? JSON.stringify(el) : el));
31
-
32
- // TODO generate salt
33
- const { codes, obj } = generateCodes(ids, uid);
34
-
35
- if (!Object.keys(codes).length) return { ids: 'empty' };
36
-
37
- rclient.hmset(`${config.pg.database}:token:edit:${uid}`, Object.entries(codes).flat());
38
- // console.log(`${config.pg.database}:token:edit:${uid}`, idsOrigin, Object.values(obj));
39
- // TODO дополнительно писать в hset token -> uid
40
- return array ? Object.values(obj) : obj;
41
- }
42
-
43
- export default setToken;
@@ -1,11 +0,0 @@
1
- import path from 'node:path';
2
-
3
- import config from '../../../../../config.js';
4
-
5
- export default function getFolder(req, type = 'server') {
6
- if (!['server', 'local'].includes(type)) throw new Error('params type is invalid');
7
- const types = { local: req.root || config.root, server: req.mapServerRoot || config.mapServerRoot };
8
- const dbname = req.pg?.options?.database || req.pg?.database || config.pg?.database; // request / config params / default config params
9
- const filepath = path.posix.join(types[type] || `/data/local/${dbname || ''}`, req.folder || config.folder || '');
10
- return filepath;
11
- }
@@ -1,44 +0,0 @@
1
- import getMeta from '../../../pg/funcs/getMeta.js';
2
-
3
- export default async function getInsertQuery({
4
- pg, table, data, id, uid,
5
- }) {
6
- if (!pg?.pk || !data) {
7
- return null;
8
- }
9
-
10
- const { columns } = await getMeta({ pg, table });
11
-
12
- if (!columns) {
13
- return null;
14
- }
15
-
16
- const names = columns.map((el) => el.name);
17
-
18
- Object.assign(data, {
19
- ...(id && pg.pk?.[table] ? { [pg.pk?.[table]]: id } : {}),
20
- ...(table !== 'admin.users' ? { uid } : {}),
21
- editor_id: uid,
22
- created_by: uid,
23
- updated_by: uid,
24
- // editor_id: uid,
25
- });
26
-
27
- const systemColumns = ['cdate', 'editor_date', 'created_at', 'updated_at'].filter((el) => names.includes(el)).map((el) => [el, 'now()']);
28
- const systemColumnNames = systemColumns.map(el => el[0]);
29
-
30
- const filterData = Object.keys(data)
31
- .filter((el) => !systemColumnNames.includes(el) && (typeof data[el] === 'boolean' ? true : data[el]) && names.includes(el)).map((el) => [el, data[el]]);
32
-
33
- const insertQuery = `insert into ${table}
34
-
35
- ( ${filterData?.map((key) => `"${key[0]}"`).concat(systemColumnNames).join(',')})
36
-
37
- values (${filterData?.map((key, i) => (key[0] === 'geom' ? `st_setsrid(st_geomfromgeojson($${i + 1}::json),4326)` : `$${i + 1}`)).concat(systemColumns.map((el) => el[1])).join(',')})
38
-
39
- returning *`;
40
-
41
- const args = [...filterData.map((el) => (typeof el[1] === 'object' && (!Array.isArray(el[1]) || typeof el[1]?.[0] === 'object') ? JSON.stringify(el[1]) : el[1]))];
42
-
43
- return { insertQuery, args };
44
- }
@@ -1,121 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
-
3
- import getTemplate from '../../../table/funcs/getTemplate.js';
4
- import metaFormat from '../../../table/funcs/metaFormat/index.js';
5
-
6
- const defaultTitles = {
7
- editor_date: 'Дата оновлення',
8
- editor_id: 'Редактор',
9
- сdate: 'Дата створення',
10
- uid: 'Автор',
11
- body: 'Зміст',
12
- entity_id: 'ID Сутності',
13
- entity_type: 'Таблиця сутності',
14
- file_path: 'Шлях до файлу',
15
- uploaded_name: 'Назва файлу',
16
- size: 'Розмір файлу',
17
- ext: 'Розширення файлу',
18
- };
19
-
20
- function getValue(val, tableName) {
21
- if (!val) return null;
22
- if (['crm.files'].includes(tableName)) {
23
- return typeof val === 'object'
24
- ? JSON.stringify(val)
25
- : val;
26
- }
27
- return typeof val === 'object'
28
- ? JSON.stringify(val)?.substring?.(0, 30)
29
- : val?.toString?.()?.substring?.(0, 30);
30
- }
31
-
32
- // extract titles and cls from form schema
33
- // alt: extract table template from referer -> form
34
- export default async function logChanges({
35
- pg, table: table1, tokenData, /* referer, */ id, data, uid = 1, type,
36
- }) {
37
- const table = table1.replace(/"/g, '');
38
- if (!id) {
39
- console.error('param id is required');
40
- return null;
41
- }
42
- if (!table || !pg.pk?.[table]) {
43
- console.error('table not found');
44
- return null;
45
- }
46
- if (!pg.pk?.['log.table_changes'] || !pg.pk?.['log.table_changes_data']) {
47
- console.error('log table not found');
48
- return null;
49
- }
50
- if (!type) {
51
- console.error('invalid type');
52
- return null;
53
- }
54
-
55
- try {
56
- const { change_id: changeId } = await pg.query(`insert into log.table_changes(change_date,change_type,change_user_id,entity_type,entity_id)
57
- values(CURRENT_DATE, $1, $2, $3, $4) returning change_id`, [type, uid, table, id]).then((res) => res.rows?.[0] || {});
58
-
59
- const q = `select json_object_agg(entity_key, value_hash) from (
60
- select
61
- entity_key,
62
- value_hash,
63
- ( rank() over (partition by entity_key order by cdate desc) = 1 ) as is_latest
64
- from log.table_changes_data
65
-
66
- where change_id in (
67
- select
68
- change_id
69
- from log.table_changes
70
- where entity_id=$1
71
- and entity_type=$2
72
- )
73
-
74
- )q where is_latest`;
75
- // console.log(q, type, id);
76
-
77
- const old = type !== 'INSERT' ? await pg.query(q, [id, table]).then(el => el.rows?.[0]?.json_object_agg || {}) : {};
78
-
79
- const body = await getTemplate('form', tokenData?.form);
80
- const schema = body?.schema || body || {};
81
- const titles = Object.keys(schema)
82
- .reduce((acc, curr) => Object.assign(acc, { [curr]: schema[curr].title || schema[curr].ua }), {});
83
- const cls = Object.keys(schema)
84
- .filter(el => schema[el]?.data)
85
- .reduce((acc, curr) => Object.assign(acc, { [curr]: schema[curr].data }), {});
86
-
87
- const data1 = data ? await metaFormat({
88
- rows: [data], cls, sufix: false, reassign: false,
89
- }, pg) : null;
90
-
91
- const newObj = Object.fromEntries(Object.entries(data1?.[0] || {}).map(el => ([[titles[el[0]] || defaultTitles[el[0]] || el[0]], el[1]])));
92
- const changesData = Object.keys(newObj || {}).map(el => ({
93
- change_id: changeId,
94
- entity_key: el,
95
- value_old: getValue(old?.[el], table),
96
- value_new: type === 'DELETE' ? null : getValue(newObj?.[el], table),
97
- value_hash: newObj?.[el] ? createHash('md5').update(JSON.stringify(newObj?.[el])).digest('hex') : null,
98
- uid,
99
- })).filter(el => (old?.[el.entity_key] !== el.value_hash));
100
-
101
- const res = await Promise.all(changesData.map(async (el) => {
102
- const insertQuery = `insert into log.table_changes_data (${Object.entries(el)?.map((key) => `"${key[0]}"`).join(',')})
103
- values (${Object.entries(el)?.map((key, i) => `$${i + 1}`).join(',')}) returning *`;
104
-
105
- const { rows = [] } = await pg.query(insertQuery, [...Object.entries(el).map((el1) => (el1[1] && typeof el1[1] === 'object' && (!Array.isArray(el1[1]) || typeof el1[1]?.[0] === 'object') ? JSON.stringify(el1[1]) : el1[1]))]) || {};
106
- return rows[0];
107
- }));
108
-
109
- const newData = type === 'DELETE' ? {} : (Array.isArray(res) ? res : [res]).reduce((acc, curr) => Object.assign(acc, { [curr.entity_key]: curr.value_new }), {});
110
- // console.log('logChanges OK', type);
111
- return {
112
- change_id: changeId, entity_type: table, entity_id: id, uid, change_type: type, old, new: newData,
113
- };
114
- }
115
- catch (err) {
116
- console.error('logChanges error', type, table, id, data, err.toString());
117
- return {
118
- error: err.toString(), entity_type: table, entity_id: id, uid, change_type: type,
119
- };
120
- }
121
- }
@@ -1,23 +0,0 @@
1
- // import getOpt from './funcs/getOpt.js';
2
- // import setOpt from './funcs/setOpt.js';
3
-
4
- // import isFileExists from './funcs/isFileExists.js';
5
-
6
- // import dataUpdate from './funcs/dataUpdate.js';
7
- // import dataInsert from './funcs/dataInsert.js';
8
-
9
- // import getAccessFunc from './funcs/getAccess.js';
10
-
11
- async function plugin() {
12
- // fastify.decorate('setOpt', setOpt);
13
- // fastify.decorate('getOpt', getOpt);
14
-
15
- // fastify.decorate('dataUpdate', dataUpdate);
16
- // fastify.decorate('dataInsert', dataInsert);
17
-
18
- // fastify.decorate('getAccess', getAccessFunc);
19
-
20
- // fastify.decorate('isFileExists', isFileExists);
21
- }
22
-
23
- export default plugin;
@@ -1,79 +0,0 @@
1
- import config from '../../../config.js';
2
- import getTemplate from '../table/funcs/getTemplate.js';
3
- import getMeta from '../pg/funcs/getMeta.js';
4
- import pgClients from '../pg/pgClients.js';
5
- import getInsertQuery from '../crud/funcs/utils/getInsertQuery.js';
6
-
7
- const defaultTable = 'crm.extra_data';
8
-
9
- function format(key, value, schema) {
10
- if (!key || !schema?.[key]) return value;
11
- if (schema?.[key]?.type && ['Number', 'Switcher'].includes(schema?.[key]?.type)) {
12
- return typeof value === 'string' ? JSON.parse(value) : value;
13
- }
14
- return value;
15
- }
16
-
17
- export default async function extraData({
18
- table, form, id, data, uid, row = {},
19
- }, pg = pgClients.client) {
20
- if (!id || !table) {
21
- return null;
22
- }
23
-
24
- const loadTemplate = await getTemplate('form', form);
25
- if (!loadTemplate?.extra) return null;
26
-
27
- const extraTable = config.extraData?.[table]
28
- || config.extraData?.[table.split('.').shift()]
29
- || config.extraData?.default
30
- || config.extraData
31
- || defaultTable;
32
-
33
- const { pk: mainPK, columns: mainColumns = [] } = await getMeta({ pg, table });
34
-
35
- if (!mainPK) {
36
- return { error: `table pk not found: ${table}`, status: 404 };
37
- }
38
-
39
- if (!pg.pk?.[extraTable]) {
40
- return { error: `extra table pk not found: ${extraTable}`, status: 404 };
41
- }
42
-
43
- Object.assign(data || {}, { object_id: id });
44
-
45
- const deleteRes = await pg.query(`delete from ${extraTable} where object_id=$1 and property_key = any($2::text[]) returning *`, [id, Object.keys(loadTemplate?.schema || {})]);
46
-
47
- if (!data) {
48
- const result = deleteRes?.rows?.reduce?.((acc, curr) => Object.assign(acc, { [curr.property_key]: format(curr.property_key, curr.value_text || curr.value_array, loadTemplate?.schema) }), {}) || {};
49
- Object.assign(row, result);
50
- return result;
51
- }
52
-
53
- const rows = Object.keys(data || {})
54
- .filter(key => Object.keys(loadTemplate?.schema || {}).includes(key))
55
- .filter(key => !mainColumns.map(el => el.name).concat('id', 'token').includes(key))
56
- .filter(key => (Array.isArray(data[key]) ? data[key].length : true))
57
- .filter(key => !(loadTemplate?.schema?.[key]?.table && loadTemplate?.schema?.[key]?.parent_id))
58
- .map(key => ({
59
- object_id: id,
60
- property_key: key,
61
- property_entity: table,
62
- value_text: Array.isArray(data[key]) ? null : data[key],
63
- value_array: Array.isArray(data[key]) ? data[key] : null,
64
- }));
65
-
66
- const res = await Promise.all(rows.map(async (dataRow) => {
67
- const { insertQuery, args = [] } = await getInsertQuery({
68
- pg, table: extraTable, data: dataRow, uid,
69
- });
70
- if (!insertQuery || !args?.length) return {};
71
- return pg.query(insertQuery, args).then(el => el.rows?.[0] || {});
72
- }));
73
-
74
- Object.assign(row, {
75
- ...res.reduce((acc, curr) => Object.assign(acc, { [curr.property_key]: format(curr.property_key, curr.value_text || curr.value_array, loadTemplate?.schema) }), {}),
76
- id: res?.[0]?.object_id,
77
- });
78
- return row;
79
- }