@opengis/fastify-table 1.4.87 → 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 -137
  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
@@ -0,0 +1,75 @@
1
+ import getSelect from "../getSelect.js";
2
+ import pgClients from "../../../pg/pgClients.js";
3
+ import rclient from "../../../redis/client.js";
4
+ import config from "../../../../../config.js";
5
+ const selectIds = {};
6
+ export default async function getSelectVal({ pg = pgClients.client, name, values: valuesOrigin, ar = false, }) {
7
+ if (!valuesOrigin?.length)
8
+ return null;
9
+ const values = valuesOrigin
10
+ .filter((el) => (typeof el === "boolean" ? true : el))
11
+ .map((el) => el.toString());
12
+ const cls = await getSelect(name, pg);
13
+ // === array ===
14
+ if (cls?.arr && Array.isArray(cls?.arr)) {
15
+ const resultArr = cls.arr.filter((el) => values.includes(el.id.toString()));
16
+ if (ar)
17
+ return resultArr;
18
+ return resultArr.reduce((p, el) => ({
19
+ ...p,
20
+ [el.id.toString()]: el.color ? el : el.text,
21
+ }), {});
22
+ }
23
+ // === sql ===
24
+ if (!cls?.sql)
25
+ return null;
26
+ // select id column name
27
+ if (!selectIds[name]) {
28
+ selectIds[name] = await pg
29
+ .queryCache(`select * from (${cls.sql})q limit 0`)
30
+ .then((el) => el.fields?.[0]?.name)
31
+ .catch((err) => console.error("getSelectVal error: 1", name, cls.sql, err.toString()));
32
+ }
33
+ const id = selectIds[name];
34
+ // cache
35
+ const key = `select:${name}`;
36
+ const cache = values?.length && config.redis
37
+ ? (await rclient.hmget(key, values)).reduce((p, el, i) => ({
38
+ ...p,
39
+ [values[i]]: el,
40
+ }), {})
41
+ : {};
42
+ const filteredValues = values.filter((el) => !cache[el]);
43
+ // query select
44
+ const q = `with c(id,text) as (select * from (${cls.sql})q where ${id} = any('{${filteredValues
45
+ .join(",")
46
+ .replace(/"/g, '\\"')
47
+ .replace(/'/g, "''")}}')) select * from c`;
48
+ const data = filteredValues.length
49
+ ? await pg
50
+ .query(q)
51
+ .then((el) => el.rows)
52
+ .catch((err) => console.error("getSelectVal error: 2", name, q, err.toString()))
53
+ : [];
54
+ const clsObj = {
55
+ ...cache,
56
+ ...data.reduce((p, el) => ({
57
+ ...p,
58
+ [el.id.toString()]: el.color ? el : el.text,
59
+ }), {}),
60
+ };
61
+ if (data?.length && config.redis) {
62
+ rclient.hmset(key, clsObj);
63
+ }
64
+ if (ar) {
65
+ return Object.keys(clsObj).reduce((acc, el) => {
66
+ acc.push({
67
+ id: el,
68
+ text: typeof clsObj[el] === "string" ? clsObj[el] : clsObj[el]?.text,
69
+ color: clsObj[el]?.color,
70
+ });
71
+ return acc;
72
+ }, []);
73
+ }
74
+ return clsObj;
75
+ }
@@ -0,0 +1,64 @@
1
+ import { handlebarsSync } from "../../../../helpers/index.js";
2
+ import getTemplate from "../getTemplate.js";
3
+ import getSelectVal from "./getSelectVal.js";
4
+ import pgClients from "../../../pg/pgClients.js";
5
+ export default async function metaFormat({ rows: original, table, cls = {}, htmls = {}, sufix = true, reassign = true, }, pg = pgClients.client) {
6
+ const loadTable = table ? await getTemplate("table", table) : {};
7
+ const selectCols = Object.keys(cls || {})
8
+ .map((key) => ({ name: key, data: cls[key] }))
9
+ .concat(loadTable?.columns?.filter((e) => e.data) || []);
10
+ const metaCls = Object.keys(loadTable?.meta?.cls || {}).map((el) => ({
11
+ name: el,
12
+ data: loadTable?.meta?.cls[el],
13
+ }));
14
+ const htmlCols = Object.keys(htmls || {})
15
+ .map((key) => ({ name: key, html: htmls[key] }))
16
+ .concat(loadTable?.columns?.filter?.((e) => e.name && e.html && e.format && ["html", "slot"].includes(e.format)) || []);
17
+ if (!original?.length ||
18
+ (!selectCols?.length && !metaCls?.length && !htmlCols?.length))
19
+ return original;
20
+ const rows = reassign ? original : JSON.parse(JSON.stringify(original));
21
+ // html && slot (vue component) format
22
+ htmlCols.forEach((attr) => {
23
+ rows.filter(Boolean).forEach((row) => {
24
+ const html = handlebarsSync.compile(attr.html)(row);
25
+ Object.assign(row, {
26
+ [attr.name]: html
27
+ ?.replaceAll?.(/<[^>]*>/g, "")
28
+ ?.replace?.(/\n/g, "")
29
+ ?.trim?.(),
30
+ });
31
+ });
32
+ });
33
+ // cls & select format
34
+ await Promise.all(selectCols.concat(metaCls)?.map(async (attr) => {
35
+ const values = [
36
+ ...new Set(rows?.map((el) => el[attr.name]).flat()),
37
+ ].filter((el) => (typeof el === "boolean" ? true : el));
38
+ if (!values.length)
39
+ return null;
40
+ const clsValues = await getSelectVal({ pg, name: attr.data, values });
41
+ if (!clsValues)
42
+ return null;
43
+ rows.forEach((el) => {
44
+ const val = el[attr.name]?.map?.((c) => c ? clsValues[c.toString()] || clsValues[c] || c : null) ||
45
+ clsValues[el[attr.name]?.toString()] ||
46
+ clsValues[el[attr.name]] ||
47
+ el[attr.name];
48
+ if (!val)
49
+ return;
50
+ if (!sufix) {
51
+ Object.assign(el, { [attr.name]: val.text || val });
52
+ }
53
+ else {
54
+ Object.assign(el, {
55
+ [val?.color ? `${attr.name}_data` : `${attr.name}_text`]: val.color
56
+ ? val
57
+ : val.text || val,
58
+ });
59
+ }
60
+ });
61
+ return null;
62
+ }));
63
+ return rows;
64
+ }
@@ -0,0 +1,2 @@
1
+ const userTemplateDir = [];
2
+ export default userTemplateDir;
@@ -0,0 +1,2 @@
1
+ const userTokens = {};
2
+ export default userTokens;
@@ -0,0 +1,28 @@
1
+ /* eslint-disable no-console */
2
+ /* eslint-disable no-param-reassign */
3
+ export default function eventStream(res) {
4
+ if (!res)
5
+ return console.log;
6
+ const time = Date.now();
7
+ // eslint-disable-next-line no-underscore-dangle
8
+ if (!res?._headerSent && !res.sent) {
9
+ res.raw.writeHead(200, {
10
+ 'Content-Type': 'text/event-stream; charset=utf-8',
11
+ 'Cache-Control': 'no-cache',
12
+ Connection: 'keep-alive',
13
+ 'X-Accel-Buffering': 'no',
14
+ });
15
+ res.hijack();
16
+ }
17
+ let prev = time;
18
+ function send(mes, finish) {
19
+ const t1 = Date.now();
20
+ res.raw.write(`data: ${finish ? 'finish' : ''} ${typeof mes === 'object' ? JSON.stringify(mes) : mes} ${t1 - prev}/${t1 - time}ms\n\n`);
21
+ prev = t1;
22
+ if (finish) {
23
+ res.raw.write('data: finish');
24
+ res.raw.end('');
25
+ }
26
+ }
27
+ return send;
28
+ }
@@ -1,12 +1,14 @@
1
- export default function flattenObject(obj, keys, parent = '') {
2
- return Object.keys(obj || {}).reduce((acc, key) => {
3
- const newKey = parent ? `${parent}.${key}` : key;
4
- if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
5
- Object.assign(acc, flattenObject(obj[key], keys, newKey));
6
- }
7
- else if (keys ? keys.includes(newKey) : true) {
8
- acc[newKey] = obj[key];
9
- }
10
- return acc;
11
- }, {});
12
- }
1
+ export default function flattenObject(obj, keys, parent = "") {
2
+ return Object.keys(obj || {}).reduce((acc, key) => {
3
+ const newKey = parent ? `${parent}.${key}` : key;
4
+ if (typeof obj[key] === "object" &&
5
+ obj[key] !== null &&
6
+ !Array.isArray(obj[key])) {
7
+ Object.assign(acc, flattenObject(obj[key], keys, newKey));
8
+ }
9
+ else if (keys ? keys.includes(newKey) : true) {
10
+ acc[newKey] = obj[key];
11
+ }
12
+ return acc;
13
+ }, {});
14
+ }
@@ -1,46 +1,48 @@
1
- /* eslint-disable no-console */
2
- /* eslint-disable no-restricted-globals */
3
- /* eslint-disable no-param-reassign */
4
- // import config from '../../../../config.js';
5
-
6
- export default function unflattenObject(flatObj) {
7
- const res = Object.keys(flatObj || {}).reduce((acc, key) => {
8
- const keys = key.split('.');
9
- keys.reduce((nestedObj, part, index) => {
10
- if (index === keys.length - 1) {
11
- // json array
12
- if (typeof flatObj[key] === 'string' && flatObj[key].startsWith('[') && flatObj[key] !== ('[object Object]')) {
13
- // console.log('unflatten aray', key);
14
- try {
15
- nestedObj[part] = JSON.parse(flatObj[key] || '{}');
16
- }
17
- catch (err) {
18
- console.warn(`Error parsing JSON for key ${key}:`, err.toString());
19
- nestedObj[part] = flatObj[key]; // fallback to original value if parsing fails
20
- }
21
- }
22
- else if (['true', 'false'].includes(flatObj[key]) || (!isNaN(flatObj[key])) && false) {
23
- // console.log('unflatten number', key);
24
- try {
25
- nestedObj[part] = JSON.parse(flatObj[key] || '{}');
26
- }
27
- catch (err) {
28
- console.warn(`Error parsing JSON for key ${key}:`, err.toString());
29
- nestedObj[part] = flatObj[key]; // fallback to original value if parsing fails
30
- }
31
- }
32
- else {
33
- // console.log('unflatten else', key);
34
- nestedObj[part] = flatObj[key];
35
- }
36
- }
37
- else {
38
- nestedObj[part] = nestedObj[part] || {};
39
- }
40
- return nestedObj[part];
41
- }, acc);
42
- return acc;
43
- }, {});
44
- console.log('unflattened');
45
- return res;
46
- }
1
+ /* eslint-disable no-console */
2
+ /* eslint-disable no-restricted-globals */
3
+ /* eslint-disable no-param-reassign */
4
+ // import config from '../../../../config.js';
5
+ export default function unflattenObject(flatObj) {
6
+ const res = Object.keys(flatObj || {}).reduce((acc, key) => {
7
+ const keys = key.split(".");
8
+ keys.reduce((nestedObj, part, index) => {
9
+ if (index === keys.length - 1) {
10
+ // json array
11
+ if (typeof flatObj[key] === "string" &&
12
+ flatObj[key].startsWith("[") &&
13
+ flatObj[key] !== "[object Object]") {
14
+ // console.log('unflatten aray', key);
15
+ try {
16
+ nestedObj[part] = JSON.parse(flatObj[key] || "{}");
17
+ }
18
+ catch (err) {
19
+ console.warn(`Error parsing JSON for key ${key}:`, err.toString());
20
+ nestedObj[part] = flatObj[key]; // fallback to original value if parsing fails
21
+ }
22
+ }
23
+ else if (["true", "false"].includes(flatObj[key]) ||
24
+ (!isNaN(flatObj[key]) && false)) {
25
+ // console.log('unflatten number', key);
26
+ try {
27
+ nestedObj[part] = JSON.parse(flatObj[key] || "{}");
28
+ }
29
+ catch (err) {
30
+ console.warn(`Error parsing JSON for key ${key}:`, err.toString());
31
+ nestedObj[part] = flatObj[key]; // fallback to original value if parsing fails
32
+ }
33
+ }
34
+ else {
35
+ // console.log('unflatten else', key);
36
+ nestedObj[part] = flatObj[key];
37
+ }
38
+ }
39
+ else {
40
+ nestedObj[part] = nestedObj[part] || {};
41
+ }
42
+ return nestedObj[part];
43
+ }, acc);
44
+ return acc;
45
+ }, {});
46
+ console.log("unflattened");
47
+ return res;
48
+ }
@@ -1,5 +1,3 @@
1
- import { dump } from 'js-yaml';
2
-
3
- const json2yml = (json) => dump(json || {});
4
-
5
- export default json2yml;
1
+ import { dump } from "js-yaml";
2
+ const json2yml = (json) => dump(json || {});
3
+ export default json2yml;
@@ -1,14 +1,11 @@
1
- import { load } from 'js-yaml';
2
-
3
- function loadSafe(yml) {
4
- try {
5
- return load(yml);
6
- }
7
- catch (err) {
8
- return { error: err.toString() };
9
- }
10
- }
11
-
12
- const yml2json = (yml) => loadSafe(yml);
13
-
14
- export default yml2json;
1
+ import { load } from "js-yaml";
2
+ function loadSafe(yml) {
3
+ try {
4
+ return load(yml);
5
+ }
6
+ catch (err) {
7
+ return { error: err.toString() };
8
+ }
9
+ }
10
+ const yml2json = (yml) => loadSafe(yml);
11
+ export default yml2json;
@@ -1,28 +1,22 @@
1
- import { pgClients, getAdminAccess } from '../../../../utils.js';
2
-
3
- export default async function accessGroup({
4
- pg = pgClients.client, params = {}, user = {}, unittest,
5
- }, reply) {
6
- if (!params?.id) {
7
- return reply.status(400).send('not enough params: id');
8
- }
9
-
10
- // restrict access - admin only
11
- const check = await getAdminAccess({
12
- id: params.id, user,
13
- });
14
- if (check?.message && check?.status && !unittest) {
15
- return reply.status(check?.status).send(check?.message);
16
- }
17
-
1
+ import { pgClients, getAdminAccess } from "../../../../utils.js";
2
+ export default async function accessGroup({ pg = pgClients.client, params, user = {}, unittest, }, reply) {
3
+ if (!params?.id) {
4
+ return reply.status(400).send("not enough params: id");
5
+ }
6
+ // restrict access - admin only
7
+ const check = await getAdminAccess({
8
+ id: params.id,
9
+ user,
10
+ });
11
+ if (check?.message && check?.status && !unittest) {
12
+ return reply.status(check?.status).send(check?.message);
13
+ }
18
14
  const { rows: routes = [] } = await pg.query(`select a.route_id as path, b.actions from admin.routes a
19
15
  left join admin.role_access b on a.route_id=b.route_id
20
- where b.role_id=$1`, [params.id]);
21
-
16
+ where b.role_id=$1`, [params.id]);
22
17
  const { rows: users = [] } = await pg.query(`select user_uid as id, user_name as name, access_granted,
23
18
  b.cdate as user_created, b.last_activity_date as last_activity from admin.user_roles a
24
19
  left join admin.users b on a.user_uid=b.uid
25
- where a.role_id=$1`, [params.id]);
26
-
27
- return { routes, users };
28
- }
20
+ where a.role_id=$1`, [params.id]);
21
+ return { routes, users };
22
+ }
@@ -1,57 +1,50 @@
1
- import { pgClients, getAdminAccess } from '../../../../utils.js';
2
- import accessGroup from './access.group.js';
3
-
4
- export default async function accessGroupPost({
5
- pg = pgClients.client, params = {}, user = {}, body = {}, unittest,
6
- }, reply) {
7
- const { id } = params;
8
- if (!user?.uid) {
9
- return reply.status(401).send('unauthorized');
10
- }
11
-
12
- // restrict access - admin only
13
- const check = await getAdminAccess({ id, user });
14
- if (check?.message && check?.status && !unittest) {
15
- return reply.status(check?.status).send(check?.message);
16
- }
17
-
18
- const { users = [], routes = [] } = body;
19
-
20
- if (!routes?.length) {
21
- // return { message: 'not enough params: users / routes', status: 400 };
22
- await pg.query('delete from admin.role_access where role_id=$1', [id]);
23
-
24
- if (!users?.length) {
25
- return reply.status(200).send({ id, routes });
26
- }
27
- }
28
-
29
- if (routes?.length) {
30
- const { routesDB = [] } = await pg.query('select array_agg(route_id) as "routesDB" from admin.routes where enabled')
31
- .then((res1) => res1.rows?.[0] || {});
32
- await pg.query('delete from admin.role_access where role_id=$1;', [id]);
33
-
34
- const q = 'insert into admin.role_access(role_id,route_id,actions) values ($1,$2,$3)';
35
- await Promise.all(routes.filter(el => routesDB.includes(el.path) && el.actions).map(el => pg.query(q, [id, el.path, el.actions])));
36
-
1
+ import { pgClients, getAdminAccess } from "../../../../utils.js";
2
+ import accessGroup from "./access.group.js";
3
+ export default async function accessGroupPost({ pg = pgClients.client, params, user = {}, body = {}, unittest, }, reply) {
4
+ const { id } = params;
5
+ if (!user?.uid) {
6
+ return reply.status(401).send("unauthorized");
7
+ }
8
+ // restrict access - admin only
9
+ const check = await getAdminAccess({ id, user });
10
+ if (check?.message && check?.status && !unittest) {
11
+ return reply.status(check?.status).send(check?.message);
12
+ }
13
+ const { users = [], routes = [] } = body;
14
+ if (!routes?.length) {
15
+ // return { message: 'not enough params: users / routes', status: 400 };
16
+ await pg.query("delete from admin.role_access where role_id=$1", [id]);
17
+ if (!users?.length) {
18
+ return reply.status(200).send({ id, routes });
19
+ }
20
+ }
21
+ if (routes?.length) {
22
+ const { routesDB = [] } = await pg
23
+ .query('select array_agg(route_id) as "routesDB" from admin.routes where enabled')
24
+ .then((res1) => res1.rows?.[0] || {});
25
+ await pg.query("delete from admin.role_access where role_id=$1;", [id]);
26
+ const q = "insert into admin.role_access(role_id,route_id,actions) values ($1,$2,$3)";
27
+ await Promise.all(routes
28
+ .filter((el) => routesDB.includes(el.path) && el.actions)
29
+ .map((el) => pg.query(q, [id, el.path, el.actions])));
37
30
  const { rows } = await pg.query(`select a.route_id as path, b.actions as actions from admin.routes a
38
31
  left join admin.role_access b on a.route_id=b.route_id
39
- where b.role_id=$1`, [id]);
40
-
41
- if (!users?.length) {
42
- return reply.status(200).send({ id, routes: rows });
43
- }
44
- }
45
-
32
+ where b.role_id=$1`, [id]);
33
+ if (!users?.length) {
34
+ return reply.status(200).send({ id, routes: rows });
35
+ }
36
+ }
46
37
  const q = `delete from admin.user_roles where role_id='${id.replace(/'/g, "''")}';
47
38
  insert into admin.user_roles(role_id,user_uid,access_granted)
48
- values ${users.filter((el) => el?.id).map((el) => `('${id.replace(/'/g, "''")}','${el.id.replace(/'/g, "''")}','${user?.uid?.replace(/'/g, "''")}')`)}`;
49
-
50
- await pg.query(q);
51
-
52
- const res = await accessGroup({
53
- pg, params, user, unittest,
54
- }, reply);
55
-
56
- return res;
57
- }
39
+ values ${users
40
+ .filter((el) => el?.id)
41
+ .map((el) => `('${id.replace(/'/g, "''")}','${el.id.replace(/'/g, "''")}','${user?.uid?.replace(/'/g, "''")}')`)}`;
42
+ await pg.query(q);
43
+ const res = await accessGroup({
44
+ pg,
45
+ params,
46
+ user,
47
+ unittest,
48
+ }, reply);
49
+ return res;
50
+ }
@@ -0,0 +1,36 @@
1
+ // import { type ExtendedRequest } from "../../../types/core.js";
2
+ import { pgClients, metaFormat, getAdminAccess } from "../../../../utils.js";
3
+ const q = `select a.route_id as id, coalesce(b.user_uid, d.user_uid) as user_uid, coalesce(d.actions, b.actions, array['view']) as actions, b.scope, c.role_id
4
+ from admin.routes a
5
+ left join admin.role_access b on
6
+ a.route_id=b.route_id
7
+ left join admin.roles c on
8
+ b.role_id=c.role_id
9
+ and c.enabled
10
+ left join admin.user_roles d on
11
+ c.role_id=d.role_id
12
+ and ( case when
13
+ d.expiration is not null
14
+ then d.expiration > CURRENT_DATE
15
+ else 1=1
16
+ end )
17
+ where $1 in (a.route_id, a.alias, a.table_name) and coalesce(b.user_uid, d.user_uid) is not null`;
18
+ export default async function accessInterface(req, reply) {
19
+ const { pg = pgClients.client, params = {}, user = {}, unittest } = req;
20
+ // restrict access - admin only
21
+ const check = await getAdminAccess({
22
+ id: params.name,
23
+ user,
24
+ });
25
+ if (check?.message && check?.status && !unittest) {
26
+ return reply.status(check?.status).send(check?.message);
27
+ }
28
+ const { rows = [] } = await pg.query(q, [params.name]);
29
+ const cls = {
30
+ user_uid: "core.user_uid",
31
+ actions: "core.actions",
32
+ role_id: "core.roles",
33
+ };
34
+ await metaFormat({ rows, cls, sufix: false });
35
+ return { rows };
36
+ }
@@ -1,12 +1,10 @@
1
- import accessGroup from './controllers/access.group.js';
2
- import accessGroupPost from './controllers/access.group.post.js';
3
- import accessInterface from './controllers/access.interface.js';
4
-
5
- import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema } from './schema.mjs';
6
-
7
- export default async function route(fastify, config) {
8
- const { prefix = '/api' } = config;
9
- fastify.get(`${prefix}/access-group/:id`, { schema: accessGroupSchema }, accessGroup);
10
- fastify.post(`${prefix}/access-group/:id`, { schema: accessGroupPostSchema }, accessGroupPost);
11
- fastify.get(`${prefix}/access-interface/:name`, { schema: accessInterfaceSchema }, accessInterface);
12
- }
1
+ import accessGroup from "./controllers/access.group.js";
2
+ import accessGroupPost from "./controllers/access.group.post.js";
3
+ import accessInterface from "./controllers/access.interface.js";
4
+ import { accessGroupPostSchema, accessGroupSchema, accessInterfaceSchema, } from "./schema.js";
5
+ export default async function route(fastify, config = {}) {
6
+ const { prefix = "/api" } = config;
7
+ fastify.get(`${prefix}/access-group/:id`, { schema: accessGroupSchema }, accessGroup);
8
+ fastify.post(`${prefix}/access-group/:id`, { schema: accessGroupPostSchema }, accessGroupPost);
9
+ fastify.get(`${prefix}/access-interface/:name`, { schema: accessInterfaceSchema }, accessInterface);
10
+ }