@opengis/fastify-table 2.3.5 → 2.4.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 (291) hide show
  1. package/dist/errors.d.ts +38 -0
  2. package/dist/errors.d.ts.map +1 -0
  3. package/dist/errors.js +10 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +30 -9
  6. package/dist/server/plugins/access/funcs/getAdminAccess.d.ts +1 -4
  7. package/dist/server/plugins/access/funcs/getAdminAccess.d.ts.map +1 -1
  8. package/dist/server/plugins/access/funcs/getAdminAccess.js +3 -2
  9. package/dist/server/plugins/auth/funcs/getQuery.d.ts.map +1 -1
  10. package/dist/server/plugins/auth/funcs/getQuery.js +2 -1
  11. package/dist/server/plugins/auth/funcs/loginFile.d.ts +1 -4
  12. package/dist/server/plugins/auth/funcs/loginFile.d.ts.map +1 -1
  13. package/dist/server/plugins/auth/funcs/loginFile.js +10 -5
  14. package/dist/server/plugins/auth/funcs/loginUser.d.ts.map +1 -1
  15. package/dist/server/plugins/auth/funcs/loginUser.js +25 -18
  16. package/dist/server/plugins/auth/index.d.ts.map +1 -1
  17. package/dist/server/plugins/auth/index.js +3 -4
  18. package/dist/server/plugins/crud/funcs/dataInsert.js +1 -1
  19. package/dist/server/plugins/extra/extraData.d.ts.map +1 -1
  20. package/dist/server/plugins/extra/extraData.js +3 -2
  21. package/dist/server/plugins/extra/extraDataGet.d.ts +1 -4
  22. package/dist/server/plugins/extra/extraDataGet.d.ts.map +1 -1
  23. package/dist/server/plugins/extra/extraDataGet.js +4 -6
  24. package/dist/server/plugins/file/uploadMultiPart.js +1 -1
  25. package/dist/server/plugins/grpc/utils/html2doc.d.ts +0 -6
  26. package/dist/server/plugins/grpc/utils/html2doc.d.ts.map +1 -1
  27. package/dist/server/plugins/grpc/utils/html2doc.js +3 -8
  28. package/dist/server/plugins/grpc/utils/html2img.d.ts +0 -6
  29. package/dist/server/plugins/grpc/utils/html2img.d.ts.map +1 -1
  30. package/dist/server/plugins/grpc/utils/html2img.js +3 -8
  31. package/dist/server/plugins/grpc/utils/html2pdf.d.ts +0 -6
  32. package/dist/server/plugins/grpc/utils/html2pdf.d.ts.map +1 -1
  33. package/dist/server/plugins/grpc/utils/html2pdf.js +7 -12
  34. package/dist/server/plugins/grpc/utils/mergePdf.d.ts +0 -7
  35. package/dist/server/plugins/grpc/utils/mergePdf.d.ts.map +1 -1
  36. package/dist/server/plugins/grpc/utils/mergePdf.js +4 -9
  37. package/dist/server/plugins/logger/checkUserAccess.d.ts +1 -4
  38. package/dist/server/plugins/logger/checkUserAccess.d.ts.map +1 -1
  39. package/dist/server/plugins/logger/checkUserAccess.js +4 -6
  40. package/dist/server/plugins/logger/errorMessage.d.ts +1 -1
  41. package/dist/server/plugins/logger/errorMessage.d.ts.map +1 -1
  42. package/dist/server/plugins/logger/errorMessage.js +7 -8
  43. package/dist/server/plugins/logger/errorStatus.d.ts.map +1 -1
  44. package/dist/server/plugins/logger/errorStatus.js +6 -0
  45. package/dist/server/plugins/logger/index.d.ts +2 -2
  46. package/dist/server/plugins/logger/index.d.ts.map +1 -1
  47. package/dist/server/plugins/logger/index.js +16 -18
  48. package/dist/server/plugins/pg/funcs/getMeta.d.ts.map +1 -1
  49. package/dist/server/plugins/pg/funcs/getMeta.js +5 -3
  50. package/dist/server/plugins/policy/funcs/checkJWT.d.ts +0 -9
  51. package/dist/server/plugins/policy/funcs/checkJWT.d.ts.map +1 -1
  52. package/dist/server/plugins/policy/funcs/checkJWT.js +6 -5
  53. package/dist/server/plugins/policy/funcs/checkPermissions.d.ts +1 -4
  54. package/dist/server/plugins/policy/funcs/checkPermissions.d.ts.map +1 -1
  55. package/dist/server/plugins/policy/funcs/checkPermissions.js +2 -1
  56. package/dist/server/plugins/policy/funcs/checkPolicy.d.ts +1 -4
  57. package/dist/server/plugins/policy/funcs/checkPolicy.d.ts.map +1 -1
  58. package/dist/server/plugins/policy/funcs/checkPolicy.js +8 -7
  59. package/dist/server/plugins/policy/index.d.ts.map +1 -1
  60. package/dist/server/plugins/policy/index.js +2 -11
  61. package/dist/server/plugins/table/funcs/getFilterSQL/index.d.ts +1 -15
  62. package/dist/server/plugins/table/funcs/getFilterSQL/index.d.ts.map +1 -1
  63. package/dist/server/plugins/table/funcs/getFilterSQL/index.js +6 -4
  64. package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +0 -22
  65. package/dist/server/plugins/table/funcs/gisIRColumn.d.ts.map +1 -1
  66. package/dist/server/plugins/table/funcs/gisIRColumn.js +5 -3
  67. package/dist/server/plugins/upload/index.d.ts.map +1 -1
  68. package/dist/server/plugins/upload/index.js +7 -0
  69. package/dist/server/plugins/upload/s3.d.ts +7 -1
  70. package/dist/server/plugins/upload/s3.d.ts.map +1 -1
  71. package/dist/server/plugins/upload/s3.js +54 -10
  72. package/dist/server/plugins/upload/s3minio.d.ts +59 -0
  73. package/dist/server/plugins/upload/s3minio.d.ts.map +1 -0
  74. package/dist/server/plugins/upload/s3minio.js +199 -0
  75. package/dist/server/plugins/upload/startUpload.d.ts.map +1 -1
  76. package/dist/server/plugins/upload/startUpload.js +16 -8
  77. package/dist/server/plugins/upload/uploadChunk.d.ts.map +1 -1
  78. package/dist/server/plugins/upload/uploadChunk.js +14 -9
  79. package/dist/server/plugins/usercls/index.js +1 -1
  80. package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
  81. package/dist/server/routes/access/controllers/access.group.js +3 -5
  82. package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
  83. package/dist/server/routes/access/controllers/access.group.post.js +3 -5
  84. package/dist/server/routes/access/controllers/access.interface.d.ts.map +1 -1
  85. package/dist/server/routes/access/controllers/access.interface.js +1 -4
  86. package/dist/server/routes/access/controllers/access.user.d.ts +5 -1
  87. package/dist/server/routes/access/controllers/access.user.d.ts.map +1 -1
  88. package/dist/server/routes/access/controllers/access.user.js +4 -5
  89. package/dist/server/routes/access/controllers/access.user.post.d.ts.map +1 -1
  90. package/dist/server/routes/access/controllers/access.user.post.js +4 -5
  91. package/dist/server/routes/access/index.d.ts.map +1 -1
  92. package/dist/server/routes/access/index.js +10 -6
  93. package/dist/server/routes/auth/controllers/2factor/providers/totp.d.ts.map +1 -1
  94. package/dist/server/routes/auth/controllers/2factor/providers/totp.js +4 -3
  95. package/dist/server/routes/auth/controllers/2factor/qrcode.d.ts.map +1 -1
  96. package/dist/server/routes/auth/controllers/2factor/qrcode.js +6 -10
  97. package/dist/server/routes/auth/controllers/2factor/recovery.d.ts.map +1 -1
  98. package/dist/server/routes/auth/controllers/2factor/recovery.js +14 -23
  99. package/dist/server/routes/auth/controllers/2factor/reset.d.ts.map +1 -1
  100. package/dist/server/routes/auth/controllers/2factor/reset.js +3 -5
  101. package/dist/server/routes/auth/controllers/2factor/verify.d.ts.map +1 -1
  102. package/dist/server/routes/auth/controllers/2factor/verify.js +30 -43
  103. package/dist/server/routes/auth/controllers/core/login.d.ts +1 -4
  104. package/dist/server/routes/auth/controllers/core/login.d.ts.map +1 -1
  105. package/dist/server/routes/auth/controllers/core/passwordRecovery.d.ts.map +1 -1
  106. package/dist/server/routes/auth/controllers/core/passwordRecovery.js +7 -8
  107. package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -4
  108. package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
  109. package/dist/server/routes/auth/controllers/core/registration.js +10 -24
  110. package/dist/server/routes/auth/controllers/core/updateUserInfo.d.ts +1 -2
  111. package/dist/server/routes/auth/controllers/core/updateUserInfo.d.ts.map +1 -1
  112. package/dist/server/routes/auth/controllers/core/updateUserInfo.js +3 -2
  113. package/dist/server/routes/auth/controllers/euSign/authByData.d.ts.map +1 -1
  114. package/dist/server/routes/auth/controllers/euSign/authByData.js +4 -7
  115. package/dist/server/routes/auth/controllers/jwt/authorize.d.ts.map +1 -1
  116. package/dist/server/routes/auth/controllers/jwt/authorize.js +6 -9
  117. package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
  118. package/dist/server/routes/auth/controllers/jwt/token.js +9 -12
  119. package/dist/server/routes/auth/controllers/page/login2faTemplate.d.ts.map +1 -1
  120. package/dist/server/routes/auth/controllers/page/login2faTemplate.js +3 -2
  121. package/dist/server/routes/auth/index.d.ts +1 -2
  122. package/dist/server/routes/auth/index.d.ts.map +1 -1
  123. package/dist/server/routes/auth/index.js +4 -3
  124. package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
  125. package/dist/server/routes/cron/controllers/cronApi.js +3 -4
  126. package/dist/server/routes/cron/index.js +1 -1
  127. package/dist/server/routes/crud/controllers/deleteCrud.d.ts.map +1 -1
  128. package/dist/server/routes/crud/controllers/deleteCrud.js +11 -33
  129. package/dist/server/routes/crud/controllers/insert.d.ts +1 -1
  130. package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
  131. package/dist/server/routes/crud/controllers/insert.js +17 -31
  132. package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
  133. package/dist/server/routes/crud/controllers/table.js +14 -18
  134. package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
  135. package/dist/server/routes/crud/controllers/update.js +16 -28
  136. package/dist/server/routes/crud/index.d.ts.map +1 -1
  137. package/dist/server/routes/crud/index.js +14 -4
  138. package/dist/server/routes/dblist/controllers/setItem.d.ts +0 -6
  139. package/dist/server/routes/dblist/controllers/setItem.d.ts.map +1 -1
  140. package/dist/server/routes/dblist/controllers/setItem.js +3 -2
  141. package/dist/server/routes/dblist/index.d.ts.map +1 -1
  142. package/dist/server/routes/dblist/index.js +5 -3
  143. package/dist/server/routes/file/controllers/delete.d.ts +4 -1
  144. package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
  145. package/dist/server/routes/file/controllers/delete.js +8 -8
  146. package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
  147. package/dist/server/routes/file/controllers/download.js +5 -8
  148. package/dist/server/routes/file/controllers/export.d.ts.map +1 -1
  149. package/dist/server/routes/file/controllers/export.js +8 -8
  150. package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
  151. package/dist/server/routes/file/controllers/files.js +6 -8
  152. package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
  153. package/dist/server/routes/file/controllers/resize.js +4 -12
  154. package/dist/server/routes/file/index.d.ts.map +1 -1
  155. package/dist/server/routes/file/index.js +10 -7
  156. package/dist/server/routes/grpc/controllers/file2geojson.d.ts.map +1 -1
  157. package/dist/server/routes/grpc/controllers/file2geojson.js +7 -7
  158. package/dist/server/routes/grpc/controllers/filePreview.d.ts.map +1 -1
  159. package/dist/server/routes/grpc/controllers/filePreview.js +5 -4
  160. package/dist/server/routes/grpc/index.d.ts.map +1 -1
  161. package/dist/server/routes/grpc/index.js +3 -2
  162. package/dist/server/routes/logger/controllers/logger.file.d.ts +1 -1
  163. package/dist/server/routes/logger/controllers/logger.file.d.ts.map +1 -1
  164. package/dist/server/routes/logger/controllers/logger.file.js +4 -5
  165. package/dist/server/routes/logger/controllers/logger.metrics.d.ts.map +1 -1
  166. package/dist/server/routes/logger/controllers/logger.metrics.js +1 -4
  167. package/dist/server/routes/logger/index.d.ts.map +1 -1
  168. package/dist/server/routes/logger/index.js +4 -2
  169. package/dist/server/routes/menu/controllers/getMenu.d.ts.map +1 -1
  170. package/dist/server/routes/menu/controllers/getMenu.js +2 -1
  171. package/dist/server/routes/menu/index.d.ts.map +1 -1
  172. package/dist/server/routes/menu/index.js +9 -2
  173. package/dist/server/routes/notifications/controllers/addUserNotification.d.ts +1 -2
  174. package/dist/server/routes/notifications/controllers/addUserNotification.d.ts.map +1 -1
  175. package/dist/server/routes/notifications/controllers/addUserNotification.js +5 -6
  176. package/dist/server/routes/notifications/controllers/deleteUserNotification.d.ts +1 -2
  177. package/dist/server/routes/notifications/controllers/deleteUserNotification.d.ts.map +1 -1
  178. package/dist/server/routes/notifications/controllers/deleteUserNotification.js +5 -6
  179. package/dist/server/routes/notifications/controllers/editUserNotification.d.ts +1 -2
  180. package/dist/server/routes/notifications/controllers/editUserNotification.d.ts.map +1 -1
  181. package/dist/server/routes/notifications/controllers/editUserNotification.js +6 -9
  182. package/dist/server/routes/notifications/controllers/readNotifications.d.ts +4 -2
  183. package/dist/server/routes/notifications/controllers/readNotifications.d.ts.map +1 -1
  184. package/dist/server/routes/notifications/controllers/readNotifications.js +4 -3
  185. package/dist/server/routes/notifications/controllers/userNotifications.d.ts +5 -2
  186. package/dist/server/routes/notifications/controllers/userNotifications.d.ts.map +1 -1
  187. package/dist/server/routes/notifications/controllers/userNotifications.js +4 -5
  188. package/dist/server/routes/notifications/index.d.ts +1 -2
  189. package/dist/server/routes/notifications/index.d.ts.map +1 -1
  190. package/dist/server/routes/notifications/index.js +3 -1
  191. package/dist/server/routes/properties/controllers/properties.get.d.ts +5 -2
  192. package/dist/server/routes/properties/controllers/properties.get.d.ts.map +1 -1
  193. package/dist/server/routes/properties/controllers/properties.get.js +6 -5
  194. package/dist/server/routes/properties/controllers/properties.post.d.ts +1 -1
  195. package/dist/server/routes/properties/controllers/properties.post.d.ts.map +1 -1
  196. package/dist/server/routes/properties/controllers/properties.post.js +7 -6
  197. package/dist/server/routes/properties/index.d.ts.map +1 -1
  198. package/dist/server/routes/properties/index.js +4 -7
  199. package/dist/server/routes/table/controllers/card.d.ts +1 -1
  200. package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
  201. package/dist/server/routes/table/controllers/card.js +9 -7
  202. package/dist/server/routes/table/controllers/cardData.d.ts.map +1 -1
  203. package/dist/server/routes/table/controllers/cardData.js +4 -6
  204. package/dist/server/routes/table/controllers/cardTabData.d.ts.map +1 -1
  205. package/dist/server/routes/table/controllers/cardTabData.js +3 -2
  206. package/dist/server/routes/table/controllers/dataInfo.d.ts.map +1 -1
  207. package/dist/server/routes/table/controllers/dataInfo.js +4 -3
  208. package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
  209. package/dist/server/routes/table/controllers/filter.js +3 -2
  210. package/dist/server/routes/table/controllers/form.d.ts +1 -1
  211. package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
  212. package/dist/server/routes/table/controllers/form.js +7 -5
  213. package/dist/server/routes/table/controllers/getFormByTable.d.ts.map +1 -1
  214. package/dist/server/routes/table/controllers/getFormByTable.js +12 -12
  215. package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
  216. package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
  217. package/dist/server/routes/table/controllers/suggest.js +14 -29
  218. package/dist/server/routes/table/controllers/tableInfo.d.ts +1 -2
  219. package/dist/server/routes/table/controllers/tableInfo.d.ts.map +1 -1
  220. package/dist/server/routes/table/controllers/tableInfo.js +9 -8
  221. package/dist/server/routes/table/controllers/tokenInfo.d.ts.map +1 -1
  222. package/dist/server/routes/table/controllers/tokenInfo.js +2 -1
  223. package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
  224. package/dist/server/routes/table/functions/getData.js +19 -25
  225. package/dist/server/routes/table/index.d.ts.map +1 -1
  226. package/dist/server/routes/table/index.js +15 -13
  227. package/dist/server/routes/templates/controllers/getTemplate.d.ts.map +1 -1
  228. package/dist/server/routes/templates/controllers/getTemplate.js +9 -5
  229. package/dist/server/routes/templates/index.d.ts.map +1 -1
  230. package/dist/server/routes/templates/index.js +2 -1
  231. package/dist/server/routes/upload/index.d.ts.map +1 -1
  232. package/dist/server/routes/upload/index.js +31 -20
  233. package/dist/server/routes/usercls/controllers/addUserCls.d.ts.map +1 -1
  234. package/dist/server/routes/usercls/controllers/addUserCls.js +2 -1
  235. package/dist/server/routes/usercls/controllers/deleteUserCls.d.ts.map +1 -1
  236. package/dist/server/routes/usercls/controllers/deleteUserCls.js +2 -1
  237. package/dist/server/routes/usercls/controllers/editUserCls.d.ts.map +1 -1
  238. package/dist/server/routes/usercls/controllers/editUserCls.js +2 -1
  239. package/dist/server/routes/usercls/controllers/getUserCls.d.ts +1 -1
  240. package/dist/server/routes/usercls/controllers/getUserCls.d.ts.map +1 -1
  241. package/dist/server/routes/usercls/controllers/getUserCls.js +4 -3
  242. package/dist/server/routes/usercls/index.d.ts.map +1 -1
  243. package/dist/server/routes/usercls/index.js +12 -5
  244. package/dist/server/routes/util/controllers/api.list.d.ts +19 -0
  245. package/dist/server/routes/util/controllers/api.list.d.ts.map +1 -0
  246. package/dist/server/routes/util/controllers/api.list.js +58 -0
  247. package/dist/server/routes/util/controllers/code.generator.d.ts.map +1 -1
  248. package/dist/server/routes/util/controllers/code.generator.js +7 -6
  249. package/dist/server/routes/util/controllers/user.tokens.d.ts +1 -2
  250. package/dist/server/routes/util/controllers/user.tokens.d.ts.map +1 -1
  251. package/dist/server/routes/util/controllers/user.tokens.js +6 -5
  252. package/dist/server/routes/util/index.d.ts.map +1 -1
  253. package/dist/server/routes/util/index.js +8 -7
  254. package/dist/server/routes/widget/controllers/file.edit.d.ts.map +1 -1
  255. package/dist/server/routes/widget/controllers/file.edit.js +5 -4
  256. package/dist/server/routes/widget/controllers/widget.del.d.ts.map +1 -1
  257. package/dist/server/routes/widget/controllers/widget.del.js +6 -7
  258. package/dist/server/routes/widget/controllers/widget.get.d.ts.map +1 -1
  259. package/dist/server/routes/widget/controllers/widget.get.js +4 -3
  260. package/dist/server/routes/widget/controllers/widget.set.d.ts.map +1 -1
  261. package/dist/server/routes/widget/controllers/widget.set.js +5 -4
  262. package/dist/server/routes/widget/index.d.ts.map +1 -1
  263. package/dist/server/routes/widget/index.js +3 -2
  264. package/package.json +3 -1
  265. package/dist/module/core/cls/constraint_type.json +0 -14
  266. package/dist/module/core/cls/constraint_type_table.json +0 -18
  267. package/dist/server/migrations/oauth.sql.sql +0 -77
  268. package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts +0 -2
  269. package/dist/server/plugins/auth/funcs/getUserPermissions.d.ts.map +0 -1
  270. package/dist/server/plugins/auth/funcs/getUserPermissions.js +0 -24
  271. package/dist/server/plugins/auth/onRequest.d.ts +0 -4
  272. package/dist/server/plugins/auth/onRequest.d.ts.map +0 -1
  273. package/dist/server/plugins/auth/onRequest.js +0 -104
  274. package/dist/server/plugins/migration/index.d.ts +0 -3
  275. package/dist/server/plugins/migration/index.d.ts.map +0 -1
  276. package/dist/server/plugins/migration/index.js +0 -5
  277. package/dist/server/plugins/policy/funcs/checkAuth.d.ts +0 -4
  278. package/dist/server/plugins/policy/funcs/checkAuth.d.ts.map +0 -1
  279. package/dist/server/plugins/policy/funcs/checkAuth.js +0 -104
  280. package/dist/server/routes/access/controllers/access.resources.d.ts +0 -6
  281. package/dist/server/routes/access/controllers/access.resources.d.ts.map +0 -1
  282. package/dist/server/routes/access/controllers/access.resources.js +0 -14
  283. package/dist/server/routes/access/controllers/resources.d.ts +0 -11
  284. package/dist/server/routes/access/controllers/resources.d.ts.map +0 -1
  285. package/dist/server/routes/access/controllers/resources.js +0 -14
  286. package/dist/server/routes/access/functions/resources.d.ts +0 -6
  287. package/dist/server/routes/access/functions/resources.d.ts.map +0 -1
  288. package/dist/server/routes/access/functions/resources.js +0 -11
  289. package/dist/server/types/errors.d.ts +0 -14
  290. package/dist/server/types/errors.d.ts.map +0 -1
  291. package/dist/server/types/errors.js +0 -4
@@ -1,6 +1,8 @@
1
1
  import loggerFile from "./controllers/logger.file.js";
2
2
  import loggerMetrics from "./controllers/logger.metrics.js";
3
3
  // import loggerTest from './controllers/logger.test.api.js';
4
+ const tags = ["core", "logger"];
5
+ const publicParams = { config: { tags, policy: "L0", rateLimit: false } };
4
6
  const loggerSchema = {
5
7
  querystring: {
6
8
  type: "object",
@@ -14,7 +16,7 @@ const loggerSchema = {
14
16
  },
15
17
  };
16
18
  function plugin(app, opt = {}) {
17
- app.get("/logger-file/*", { config: { policy: "L0", rateLimit: false }, schema: loggerSchema }, loggerFile);
18
- app.get("/logger-metrics", { config: { policy: "L0", rateLimit: false }, schema: {} }, loggerMetrics);
19
+ app.get("/logger-file/*", { ...publicParams, schema: loggerSchema }, loggerFile);
20
+ app.get("/logger-metrics", publicParams, loggerMetrics);
19
21
  }
20
22
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"getMenu.d.ts","sourceRoot":"","sources":["../../../../../server/routes/menu/controllers/getMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4CzD,wBAA8B,SAAS,CACrC,EACE,IAAS,EACT,OAAO,EACP,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,EAAE,EAAE,UAAU,CAAC;CAChB,EACD,KAAK,EAAE,YAAY,GAAG,IAAI;;;;;;;;;;;;;;GA8G3B"}
1
+ {"version":3,"file":"getMenu.d.ts","sourceRoot":"","sources":["../../../../../server/routes/menu/controllers/getMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6CzD,wBAA8B,SAAS,CACrC,EACE,IAAS,EACT,OAAO,EACP,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,EAAE,EAAE,UAAU,CAAC;CAChB,EACD,KAAK,EAAE,YAAY,GAAG,IAAI;;;;;;;;;;;;;;GA8G3B"}
@@ -7,6 +7,7 @@ import config from "../../../../config.js";
7
7
  import pgClients from "../../../plugins/pg/pgClients.js";
8
8
  import { applyHook } from "../../../../utils.js";
9
9
  import menuDirs from "../../../plugins/table/funcs/menuDirs.js";
10
+ import { ForbiddenError } from "../../../../errors.js";
10
11
  const menuCache = [];
11
12
  // check module dir
12
13
  const moduleDir = join(process.cwd(), "module");
@@ -32,7 +33,7 @@ async function readMenu() {
32
33
  export default async function adminMenu({ user = {}, session, pg = pgClients.client, }, reply) {
33
34
  const time = Date.now();
34
35
  if (!user.uid && !config.auth?.disable && reply) {
35
- return reply.status(403).send("access restricted");
36
+ throw ForbiddenError("access restricted");
36
37
  }
37
38
  const menus = isProduction && menuCache.length ? menuCache : await readMenu();
38
39
  if (!pg)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/menu/index.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAGpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/menu/index.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAGpD"}
@@ -1,6 +1,13 @@
1
1
  import getMenu from "./controllers/getMenu.js";
2
2
  import interfaces from "./controllers/interfaces.js";
3
+ const tags = ["core", "menu"];
4
+ const publicParams = {
5
+ config: { tags },
6
+ };
7
+ const params = {
8
+ config: { tags, role: "admin" },
9
+ };
3
10
  export default function route(app, opt = {}) {
4
- app.get("/user-menu", getMenu);
5
- app.get("/interfaces", { config: { role: "admin" } }, interfaces);
11
+ app.get("/user-menu", publicParams, getMenu);
12
+ app.get("/interfaces", params, interfaces);
6
13
  }
@@ -1,4 +1,3 @@
1
- import { FastifyReply } from "fastify";
2
1
  import { ExtendedRequest } from "../../../types/core.js";
3
- export default function addUserNotification(req: ExtendedRequest, reply: FastifyReply): Promise<never>;
2
+ export default function addUserNotification(req: ExtendedRequest): Promise<any>;
4
3
  //# sourceMappingURL=addUserNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/addUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,wBAA8B,mBAAmB,CAC/C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,kBAgCpB"}
1
+ {"version":3,"file":"addUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/addUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAMhC,wBAA8B,mBAAmB,CAAC,GAAG,EAAE,eAAe,gBA6BrE"}
@@ -1,16 +1,15 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
2
  import dataInsert from "../../../plugins/crud/funcs/dataInsert.js";
3
- export default async function addUserNotification(req, reply) {
3
+ import { BadRequestError, UnauthorizedError } from "../../../../errors.js";
4
+ export default async function addUserNotification(req) {
4
5
  const { pg = pgClients.client, body, user, } = req;
5
6
  if (!user?.uid) {
6
- return reply.status(401).send({ error: "unauthorized", code: 401 });
7
+ throw UnauthorizedError("unauthorized");
7
8
  }
8
9
  // who (user id) and what of (message) to notify
9
10
  const missingKey = ["addressee_id", "body"].find((key) => !body[key]);
10
11
  if (missingKey) {
11
- return reply
12
- .status(400)
13
- .send({ error: `not enough body params: ${missingKey}`, code: 400 });
12
+ throw BadRequestError(`not enough body params: ${missingKey}`);
14
13
  }
15
14
  const result = await dataInsert({
16
15
  pg,
@@ -18,5 +17,5 @@ export default async function addUserNotification(req, reply) {
18
17
  data: { ...body, author_id: user.uid },
19
18
  uid: user.uid,
20
19
  }).then((el) => el.rows?.[0] || {});
21
- return reply.status(200).send(result);
20
+ return result;
22
21
  }
@@ -1,4 +1,3 @@
1
- import { FastifyReply } from "fastify";
2
1
  import { ExtendedRequest } from "../../../types/core.js";
3
- export default function editUserNotification(req: ExtendedRequest, reply: FastifyReply): Promise<never>;
2
+ export default function editUserNotification(req: ExtendedRequest): Promise<any>;
4
3
  //# sourceMappingURL=deleteUserNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deleteUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/deleteUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,wBAA8B,oBAAoB,CAChD,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,kBAuCpB"}
1
+ {"version":3,"file":"deleteUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/deleteUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAMhC,wBAA8B,oBAAoB,CAAC,GAAG,EAAE,eAAe,gBAoCtE"}
@@ -1,9 +1,10 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
2
  import dataDelete from "../../../plugins/crud/funcs/dataDelete.js";
3
- export default async function editUserNotification(req, reply) {
3
+ import { ForbiddenError, UnauthorizedError } from "../../../../errors.js";
4
+ export default async function editUserNotification(req) {
4
5
  const { pg = pgClients.client, params, user, } = req;
5
6
  if (!user?.uid) {
6
- return reply.status(401).send({ error: "unauthorized", code: 401 });
7
+ throw UnauthorizedError("unauthorized");
7
8
  }
8
9
  const author = pg && pg.pk?.["crm.notifications"]
9
10
  ? await pg
@@ -11,9 +12,7 @@ export default async function editUserNotification(req, reply) {
11
12
  .then((el) => el.rows?.[0]?.author)
12
13
  : null;
13
14
  if (author && author !== user.uid && user?.user_type !== "admin") {
14
- return reply
15
- .status(403)
16
- .send({ error: "not an author of notification", code: 403 });
15
+ throw ForbiddenError("not an author of notification");
17
16
  }
18
17
  const result = await dataDelete({
19
18
  pg,
@@ -21,5 +20,5 @@ export default async function editUserNotification(req, reply) {
21
20
  table: "crm.notifications",
22
21
  uid: user.uid,
23
22
  });
24
- return reply.status(200).send(result);
23
+ return result;
25
24
  }
@@ -1,4 +1,3 @@
1
- import { FastifyReply } from "fastify";
2
1
  import { ExtendedRequest } from "../../../types/core.js";
3
- export default function editUserNotification(req: ExtendedRequest, reply: FastifyReply): Promise<never>;
2
+ export default function editUserNotification(req: ExtendedRequest): Promise<any>;
4
3
  //# sourceMappingURL=editUserNotification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/editUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAKhC,wBAA8B,oBAAoB,CAChD,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,kBAgDpB"}
1
+ {"version":3,"file":"editUserNotification.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/editUserNotification.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAUhC,wBAA8B,oBAAoB,CAAC,GAAG,EAAE,eAAe,gBA2CtE"}
@@ -1,9 +1,10 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
2
  import dataUpdate from "../../../plugins/crud/funcs/dataUpdate.js";
3
- export default async function editUserNotification(req, reply) {
3
+ import { BadRequestError, ForbiddenError, UnauthorizedError, } from "../../../../errors.js";
4
+ export default async function editUserNotification(req) {
4
5
  const { pg = pgClients.client, body, params, user, } = req;
5
6
  if (!user?.uid) {
6
- return reply.status(401).send({ error: "unauthorized", code: 401 });
7
+ throw UnauthorizedError("unauthorized");
7
8
  }
8
9
  const { read, author } = pg && pg.pk?.["crm.notifications"]
9
10
  ? await pg
@@ -11,14 +12,10 @@ export default async function editUserNotification(req, reply) {
11
12
  .then((el) => el.rows?.[0] || {})
12
13
  : {};
13
14
  if (author !== user.uid && user?.user_type !== "admin") {
14
- return reply
15
- .status(403)
16
- .send({ error: "not an author of notification", code: 403 });
15
+ throw ForbiddenError("not an author of notification");
17
16
  }
18
17
  if (read) {
19
- return reply
20
- .status(400)
21
- .send({ error: "notification already read", code: 400 });
18
+ throw BadRequestError("notification already read");
22
19
  }
23
20
  const result = await dataUpdate({
24
21
  pg,
@@ -27,5 +24,5 @@ export default async function editUserNotification(req, reply) {
27
24
  data: body,
28
25
  uid: user.uid,
29
26
  });
30
- return reply.status(200).send(result);
27
+ return result;
31
28
  }
@@ -1,4 +1,6 @@
1
- import { FastifyReply } from "fastify";
2
1
  import { ExtendedRequest } from "../../../types/core.js";
3
- export default function readNotifications(req: ExtendedRequest, reply: FastifyReply): Promise<never>;
2
+ export default function readNotifications(req: ExtendedRequest): Promise<{
3
+ ids: any;
4
+ read: any;
5
+ }>;
4
6
  //# sourceMappingURL=readNotifications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readNotifications.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/readNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAc,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIrE,wBAA8B,iBAAiB,CAC7C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,kBAmCpB"}
1
+ {"version":3,"file":"readNotifications.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/readNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAKrE,wBAA8B,iBAAiB,CAAC,GAAG,EAAE,eAAe;;;GAkCnE"}
@@ -1,8 +1,9 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
- export default async function readNotifications(req, reply) {
2
+ import { UnauthorizedError } from "../../../../errors.js";
3
+ export default async function readNotifications(req) {
3
4
  const { pg = pgClients.client, params, user, } = req;
4
5
  if (!user?.uid) {
5
- return reply.status(401).send({ error: "unauthorized", code: 401 });
6
+ throw UnauthorizedError("unauthorized");
6
7
  }
7
8
  const ids = pg && pg.pk?.["crm.notifications"]
8
9
  ? await pg
@@ -13,5 +14,5 @@ export default async function readNotifications(req, reply) {
13
14
  and ${params.id ? "notification_id=$2" : "1=1"} returning notification_id`, [user.uid, params?.id].filter(Boolean))
14
15
  .then((el) => el.rows?.map((row) => row.notification_id) || [])
15
16
  : [];
16
- return reply.status(200).send({ ids, read: ids.length });
17
+ return { ids, read: ids.length };
17
18
  }
@@ -1,4 +1,7 @@
1
- import { FastifyReply } from "fastify";
2
1
  import { ExtendedRequest } from "../../../types/core.js";
3
- export default function userNotifications(req: ExtendedRequest, reply: FastifyReply): Promise<never>;
2
+ export default function userNotifications(req: ExtendedRequest): Promise<{
3
+ time: number;
4
+ total: any;
5
+ rows: any;
6
+ }>;
4
7
  //# sourceMappingURL=userNotifications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userNotifications.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/userNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAc,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAYrE,wBAA8B,iBAAiB,CAC7C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,YAAY,kBA2CpB"}
1
+ {"version":3,"file":"userNotifications.d.ts","sourceRoot":"","sources":["../../../../../server/routes/notifications/controllers/userNotifications.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAarE,wBAA8B,iBAAiB,CAAC,GAAG,EAAE,eAAe;;;;GAwCnE"}
@@ -1,15 +1,16 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
2
  import getSelectVal from "../../../plugins/table/funcs/metaFormat/getSelectVal.js";
3
+ import { UnauthorizedError } from "../../../../errors.js";
3
4
  const maxLimit = 100;
4
5
  const q = `select notification_id as id, subject, body, created_at,
5
6
  author_id, read, link, entity_id, (select avatar from admin.users where uid=a.author_id limit 1) as avatar
6
7
  from crm.notifications a
7
8
  where addressee_id=$1 order by created_at desc limit $2 offset $3`;
8
- export default async function userNotifications(req, reply) {
9
+ export default async function userNotifications(req) {
9
10
  const { pg = pgClients.client, query, user, } = req;
10
11
  const t1 = Date.now();
11
12
  if (!user?.uid) {
12
- return reply.status(401).send({ error: "unauthorized", code: 401 });
13
+ throw UnauthorizedError("unauthorized");
13
14
  }
14
15
  const limit = Math.min(maxLimit, +(query.limit || 5));
15
16
  const offset = query.page && query.page > 0 ? (query.page - 1) * limit : 0;
@@ -27,7 +28,5 @@ export default async function userNotifications(req, reply) {
27
28
  Object.assign(row, { author: vals?.[row.author_id] });
28
29
  });
29
30
  }
30
- return reply
31
- .status(200)
32
- .send({ time: Date.now() - t1, total: rows.length, rows });
31
+ return { time: Date.now() - t1, total: rows.length, rows };
33
32
  }
@@ -1,3 +1,2 @@
1
- import { FastifyInstance } from "fastify";
2
- export default function route(app: FastifyInstance): void;
1
+ export default function route(app: any): void;
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU1C,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,eAAe,QAgBjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/notifications/index.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,GAAG,QAgBrC"}
@@ -3,7 +3,9 @@ import userNotifications from "./controllers/userNotifications.js"; // check all
3
3
  import addUserNotification from "./controllers/addUserNotification.js"; // add user notification
4
4
  import editUserNotification from "./controllers/editUserNotification.js"; // edit unread user notification
5
5
  import deleteUserNotification from "./controllers/deleteUserNotification.js"; // delete user notification
6
- const params = { config: { policy: "L1" } };
6
+ const params = {
7
+ config: { policy: "L1", tags: ["core", "notifications"] },
8
+ };
7
9
  export default function route(app) {
8
10
  if (!app.hasRoute({ method: "GET", url: "/notification" })) {
9
11
  app.get("/notification", params, userNotifications);
@@ -1,4 +1,3 @@
1
- import type { FastifyReply } from "fastify";
2
1
  import type { ExtendedPG } from "../../../types/core.js";
3
2
  export default function getAppSettings({ pg, query, params, user, }: {
4
3
  pg: ExtendedPG;
@@ -9,5 +8,9 @@ export default function getAppSettings({ pg, query, params, user, }: {
9
8
  entity: string;
10
9
  };
11
10
  user: Record<string, any>;
12
- }, reply: FastifyReply): Promise<never>;
11
+ }): Promise<{
12
+ time: number;
13
+ uid: any;
14
+ settings: any;
15
+ }>;
13
16
  //# sourceMappingURL=properties.get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"properties.get.d.ts","sourceRoot":"","sources":["../../../../../server/routes/properties/controllers/properties.get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,wBAA8B,cAAc,CAC1C,EACE,EAAqB,EACrB,KAAK,EACL,MAAM,EACN,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY,kBA0CpB"}
1
+ {"version":3,"file":"properties.get.d.ts","sourceRoot":"","sources":["../../../../../server/routes/properties/controllers/properties.get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,wBAA8B,cAAc,CAAC,EAC3C,EAAqB,EACrB,KAAK,EACL,MAAM,EACN,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;;;;GAyCA"}
@@ -1,14 +1,15 @@
1
1
  import pgClients from "../../../plugins/pg/pgClients.js";
2
- export default async function getAppSettings({ pg = pgClients.client, query, params, user = {}, }, reply) {
2
+ import { NotFoundError, UnauthorizedError } from "../../../../errors.js";
3
+ export default async function getAppSettings({ pg = pgClients.client, query, params, user = {}, }) {
3
4
  const t1 = Date.now();
4
5
  if (!pg) {
5
- return reply.status(500).send("empty pg");
6
+ throw Error("empty pg");
6
7
  }
7
8
  if (!pg.pk?.["admin.properties"]) {
8
- return reply.status(404).send("properties table not found");
9
+ throw NotFoundError("properties table not found");
9
10
  }
10
11
  if (params?.entity === "user" && !user.uid) {
11
- return reply.status(401).send("unauthorized");
12
+ throw UnauthorizedError("unauthorized");
12
13
  }
13
14
  const { uid } = user;
14
15
  const args = params?.entity === "user" ? [user.uid] : [params?.entity || "app"];
@@ -19,5 +20,5 @@ export default async function getAppSettings({ pg = pgClients.client, query, par
19
20
  ...acc,
20
21
  [key]: property_text || property_json,
21
22
  }), {});
22
- return reply.status(200).send({ time: Date.now() - t1, uid, settings });
23
+ return { time: Date.now() - t1, uid, settings };
23
24
  }
@@ -7,5 +7,5 @@ export default function postAppSettings({ pg, body, user, params, }: {
7
7
  params?: {
8
8
  entity: string;
9
9
  };
10
- }, reply: FastifyReply): Promise<never>;
10
+ }, reply: FastifyReply): Promise<string>;
11
11
  //# sourceMappingURL=properties.post.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"properties.post.d.ts","sourceRoot":"","sources":["../../../../../server/routes/properties/controllers/properties.post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAmBzD,wBAA8B,eAAe,CAC3C,EACE,EAAqB,EACrB,IAAI,EACJ,IAAI,EACJ,MAAM,GACP,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,EACD,KAAK,EAAE,YAAY,kBA0EpB"}
1
+ {"version":3,"file":"properties.post.d.ts","sourceRoot":"","sources":["../../../../../server/routes/properties/controllers/properties.post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAwBzD,wBAA8B,eAAe,CAC3C,EACE,EAAqB,EACrB,IAAI,EACJ,IAAI,EACJ,MAAM,GACP,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,EACD,KAAK,EAAE,YAAY,mBA0EpB"}
@@ -1,4 +1,5 @@
1
1
  import { config, logger, dataInsert, pgClients } from "../../../../utils.js";
2
+ import { BadRequestError, ForbiddenError, NotFoundError, } from "../../../../errors.js";
2
3
  function checkValueType(val) {
3
4
  if (val && typeof val === "object") {
4
5
  return "property_json";
@@ -16,17 +17,17 @@ export default async function postAppSettings({ pg = pgClients.client, body, use
16
17
  if ((!params?.entity || params.entity === "app") &&
17
18
  !user?.user_type?.includes?.("admin") &&
18
19
  !config.local) {
19
- return reply.status(403).send("access restricted");
20
+ throw ForbiddenError("access restricted");
20
21
  }
21
22
  if (!pg) {
22
- return reply.status(500).send("empty pg");
23
+ throw Error("empty pg");
23
24
  }
24
25
  if (!pg?.pk?.["admin.properties"]) {
25
- return reply.status(404).send("table not found");
26
+ throw NotFoundError("table not found");
26
27
  }
27
28
  const { key, val } = body;
28
29
  if ((!key || !val) && !Object.keys(body).length) {
29
- return reply.status(400).send("not enough body params");
30
+ throw BadRequestError("not enough body params");
30
31
  }
31
32
  const keys = Object.keys(body);
32
33
  const entity = params?.entity === "user" ? user.uid : params?.entity || "app";
@@ -50,7 +51,7 @@ export default async function postAppSettings({ pg = pgClients.client, body, use
50
51
  });
51
52
  }));
52
53
  await client.query("commit;");
53
- return reply.status(200).send("ok");
54
+ return "ok";
54
55
  }
55
56
  catch (err) {
56
57
  logger.file("properties/error", {
@@ -60,7 +61,7 @@ export default async function postAppSettings({ pg = pgClients.client, body, use
60
61
  user,
61
62
  entity,
62
63
  });
63
- return reply.status(500).send(err.toString());
64
+ throw err;
64
65
  }
65
66
  finally {
66
67
  client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/properties/index.ts"],"names":[],"mappings":"AAgBA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAWtC;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/properties/index.ts"],"names":[],"mappings":"AAcA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAWtC;AAED,eAAe,MAAM,CAAC"}
@@ -1,19 +1,16 @@
1
1
  import getAppSettings from "./controllers/properties.get.js";
2
2
  import postAppSettings from "./controllers/properties.post.js";
3
+ const tags = ["core", "properties"];
3
4
  const propertiesSchema = {
4
5
  type: "object",
5
6
  properties: {
6
7
  params: {
7
- id: { type: "string", pattern: "^([\\d\\w]+)$" },
8
- key: { type: "string", pattern: "^([\\d\\w._]+)$" },
9
- },
10
- querystring: {
11
- json: { type: "string", pattern: "^([\\d\\w]+)$" },
8
+ entity: { type: "string", pattern: "^([\\d\\w]+)$" },
12
9
  },
13
10
  },
14
11
  };
15
12
  function plugin(app, opt = {}) {
16
- app.get("/settings-app/:entity?", { config: { policy: "L0" }, schema: propertiesSchema }, getAppSettings);
17
- app.post("/settings-app/:entity?", { config: { role: "admin" } }, postAppSettings);
13
+ app.get("/settings-app/:entity?", { config: { tags, policy: "L0" }, schema: propertiesSchema }, getAppSettings);
14
+ app.post("/settings-app/:entity?", { config: { tags, role: "admin" }, schema: propertiesSchema }, postAppSettings);
18
15
  }
19
16
  export default plugin;
@@ -1,2 +1,2 @@
1
- export default function card(req: any, reply: any): Promise<any>;
1
+ export default function card(req: any, reply: any): Promise<{}>;
2
2
  //# sourceMappingURL=card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/card.ts"],"names":[],"mappings":"AAOA,wBAA8B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAoItD"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/card.ts"],"names":[],"mappings":"AAQA,wBAA8B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,eAyItD"}
@@ -4,6 +4,7 @@ import getTemplate from "../../../plugins/table/funcs/getTemplate.js";
4
4
  import getMeta from "../../../plugins/pg/funcs/getMeta.js";
5
5
  import pgClients from "../../../plugins/pg/pgClients.js";
6
6
  import metaFormat from "../../../plugins/table/funcs/metaFormat/index.js";
7
+ import { ForbiddenError, NotFoundError } from "../../../../errors.js";
7
8
  export default async function card(req, reply) {
8
9
  const time = Date.now();
9
10
  const { pg = pgClients.client, user, params = {}, query = {}, method } = req;
@@ -12,11 +13,12 @@ export default async function card(req, reply) {
12
13
  id: params?.id,
13
14
  user,
14
15
  }));
16
+ // hooks should throw custom errors instead, this is temp solution to avoid breaking changes in hooks
15
17
  if (hookData?.message && hookData?.status) {
16
- const response = hookData.status >= 400
17
- ? { error: hookData.message, code: hookData.status }
18
- : hookData.message;
19
- return reply.status(hookData.status).send(response);
18
+ if (hookData.status >= 400) {
19
+ throw new Error(hookData.message);
20
+ }
21
+ return hookData.message;
20
22
  }
21
23
  const { actions = [], scope, my, message: accessMessage, } = (await getAccess({
22
24
  table: hookData?.table || params.table,
@@ -25,16 +27,16 @@ export default async function card(req, reply) {
25
27
  method,
26
28
  })) || {};
27
29
  if (!actions.includes("view") || (scope === "my" && !my)) {
28
- return reply.status(403).send({ error: "access restricted", code: 403 });
30
+ throw ForbiddenError("access restricted");
29
31
  }
30
32
  const loadTable = await getTemplate("table", hookData?.table || params.table);
31
33
  if (!loadTable) {
32
- return reply.status(404).send({ error: "table not found", code: 404 });
34
+ throw NotFoundError("table not found");
33
35
  }
34
36
  const { table, columns, meta, sql, cardSql } = loadTable;
35
37
  const { pk, columns: dbColumns = [] } = await getMeta(table);
36
38
  if (!pk) {
37
- return reply.status(404).send({ error: "table pk not found", code: 404 });
39
+ throw NotFoundError("table pkey not found");
38
40
  }
39
41
  const cols = columns.map((el) => el.name || el).join(",");
40
42
  const sqlTable = sql
@@ -1 +1 @@
1
- {"version":3,"file":"cardData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/cardData.ts"],"names":[],"mappings":"AAuBA,wBAA8B,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA8O7D"}
1
+ {"version":3,"file":"cardData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/cardData.ts"],"names":[],"mappings":"AAwBA,wBAA8B,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA4O7D"}
@@ -9,6 +9,7 @@ import setOpt from "../../../plugins/crud/funcs/setOpt.js";
9
9
  import getTemplate from "../../../plugins/table/funcs/getTemplate.js";
10
10
  import getData from "../functions/getData.js";
11
11
  import conditions from "./utils/conditions.js";
12
+ import { ForbiddenError } from "../../../../errors.js";
12
13
  const components = {
13
14
  "vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
14
15
  "vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
@@ -24,13 +25,10 @@ export default async function getCardData(req, reply) {
24
25
  const template = await getTemplate("card", table);
25
26
  const access = (await getAccess({ table, id, user, method }, pg));
26
27
  if (access?.message) {
27
- return reply.status(403).send({
28
- error: access.message,
29
- code: 403,
30
- });
28
+ throw ForbiddenError(access.message);
31
29
  }
32
30
  if (!access?.actions?.length) {
33
- return reply.status(403).send("access restricted");
31
+ throw ForbiddenError("access restricted");
34
32
  }
35
33
  const tableTemplate = await getTemplate("table", table);
36
34
  const index = template?.find((el) => el[0] === "index.yml")?.[1] || {};
@@ -46,7 +44,7 @@ export default async function getCardData(req, reply) {
46
44
  if (result?.message)
47
45
  return result?.message;
48
46
  if (!result?.rows?.length) {
49
- return reply.status(403).send("access restricted: empty rows");
47
+ throw ForbiddenError("access restricted: empty rows");
50
48
  }
51
49
  const { rows = [] } = result;
52
50
  const panels = (index.table && index.query ? index.panels : result?.panels) || [];
@@ -1 +1 @@
1
- {"version":3,"file":"cardTabData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/cardTabData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,KAAU,EACV,MAAW,EACX,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY;;;;;;;;;;GAiEpB"}
1
+ {"version":3,"file":"cardTabData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/cardTabData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAW5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,KAAU,EACV,MAAW,EACX,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY;;;;;;;;;;GAiEpB"}
@@ -1,11 +1,12 @@
1
1
  import { handlebars, getToken, getTemplate, getMeta, pgClients, } from "../../../../utils.js";
2
2
  import getTableData from "./tableData.js";
3
+ import { BadRequestError, ForbiddenError } from "../../../../errors.js";
3
4
  export default async function cardTabData({ pg = pgClients.client, query = {}, params = {}, user = {}, }, reply) {
4
5
  const { token } = params;
5
6
  const { sql } = query;
6
7
  const { uid } = user;
7
8
  if (!token) {
8
- return reply.status(400).send("not enough params: token");
9
+ throw BadRequestError("not enough params: token");
9
10
  }
10
11
  const time = Date.now();
11
12
  const props = await getToken({
@@ -15,7 +16,7 @@ export default async function cardTabData({ pg = pgClients.client, query = {}, p
15
16
  json: 1,
16
17
  });
17
18
  if (!props || !props?.table) {
18
- return reply.status(403).send("token is invalid");
19
+ throw ForbiddenError("token is invalid");
19
20
  }
20
21
  const tableTemplate = await getTemplate("table", props.table);
21
22
  const { columns = [] } = tableTemplate?.columns || tableTemplate?.colModel
@@ -1 +1 @@
1
- {"version":3,"file":"dataInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/dataInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAYzD,wBAA8B,QAAQ,CACpC,EACE,EAAqB,EACrB,MAAW,EACX,KAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY;;;;;;;GA0EpB"}
1
+ {"version":3,"file":"dataInfo.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/dataInfo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAazD,wBAA8B,QAAQ,CACpC,EACE,EAAqB,EACrB,MAAW,EACX,KAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY;;;;;;;GA0EpB"}
@@ -4,6 +4,7 @@ import pgClients from "../../../plugins/pg/pgClients.js";
4
4
  import metaFormat from "../../../plugins/table/funcs/metaFormat/index.js";
5
5
  import getTemplatePath from "../../../plugins/table/funcs/getTemplatePath.js";
6
6
  import yml2json from "../../../plugins/yml/funcs/yml2json.js";
7
+ import { BadRequestError, NotFoundError } from "../../../../errors.js";
7
8
  const infoList = [];
8
9
  export default async function dataInfo({ pg = pgClients.client, params = {}, query = {}, }, reply) {
9
10
  if (!infoList.length) {
@@ -20,10 +21,10 @@ export default async function dataInfo({ pg = pgClients.client, params = {}, que
20
21
  ? infoList.filter((el) => el.table === table)
21
22
  : infoList;
22
23
  if (!filteredList?.length) {
23
- return reply.status(404).send("empty info templates list");
24
+ throw NotFoundError("empty info templates list");
24
25
  }
25
26
  if (!id) {
26
- return reply.status(400).send("not enough params: id");
27
+ throw BadRequestError("not enough params: id");
27
28
  }
28
29
  const result = await Promise.all(filteredList
29
30
  .filter((el) => el.table && pg.pk?.[el.table])
@@ -49,7 +50,7 @@ export default async function dataInfo({ pg = pgClients.client, params = {}, que
49
50
  return null;
50
51
  }));
51
52
  if (!result[0]?.table) {
52
- return reply.status(404).send(`object not found: ${id}`);
53
+ throw NotFoundError(`object not found: ${id}`);
53
54
  }
54
55
  await metaFormat(result[0], pg);
55
56
  return {