@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
@@ -12,13 +12,23 @@ const tableSchema = {
12
12
  },
13
13
  };
14
14
  const policy = "L0";
15
+ const tags = ["core", "crud"];
15
16
  function plugin(app, opt = {}) {
16
- app.put("/table/:table/:id?", { config: { policy, description: "Edit table data" }, schema: tableSchema }, update);
17
+ app.put("/table/:table/:id?", {
18
+ config: { tags, policy, description: "Edit table data" },
19
+ schema: tableSchema,
20
+ }, update);
17
21
  app.delete("/table/:table/:id?", {
18
- config: { policy, description: "Delete table data" },
22
+ config: { tags, policy, description: "Delete table data" },
19
23
  schema: tableSchema,
20
24
  }, deleteCrud);
21
- app.post("/table/:table/:id?", { config: { policy, description: "Add table data" }, schema: tableSchema }, insert);
22
- app.get("/table/:table/:id?", { config: { policy, description: "Get table data" }, schema: tableSchema }, table);
25
+ app.post("/table/:table/:id?", {
26
+ config: { tags, policy, description: "Add table data" },
27
+ schema: tableSchema,
28
+ }, insert);
29
+ app.get("/table/:table/:id?", {
30
+ config: { tags, policy, description: "Get table data" },
31
+ schema: tableSchema,
32
+ }, table);
23
33
  }
24
34
  export default plugin;
@@ -1,10 +1,4 @@
1
1
  export default function setItem(req: any): Promise<{
2
- error: string;
3
- status: number;
4
- current?: undefined;
5
- } | {
6
2
  current: any;
7
- error?: undefined;
8
- status?: undefined;
9
3
  }>;
10
4
  //# sourceMappingURL=setItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setItem.d.ts","sourceRoot":"","sources":["../../../../../server/routes/dblist/controllers/setItem.ts"],"names":[],"mappings":"AAIA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG;;;;;;;;GAuB7C"}
1
+ {"version":3,"file":"setItem.d.ts","sourceRoot":"","sources":["../../../../../server/routes/dblist/controllers/setItem.ts"],"names":[],"mappings":"AAKA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG;;GAuB7C"}
@@ -1,14 +1,15 @@
1
+ import { BadRequestError } from "../../../../errors.js";
1
2
  import { config, dblist, getRedis } from "../../../../utils.js";
2
3
  const rclient = getRedis();
3
4
  export default async function setItem(req) {
4
5
  const { params = {} } = req;
5
6
  const { id } = params;
6
7
  if (!id) {
7
- return { error: "not enough params", status: 400 };
8
+ throw BadRequestError("not enough params: id");
8
9
  }
9
10
  const current = dblist.find((el) => [el.id, el.key].includes(id));
10
11
  if (!current?.database) {
11
- return { error: "invalid param id", status: 400 };
12
+ throw BadRequestError("invalid param id");
12
13
  }
13
14
  const uid = req.session?.passport?.user?.uid || // login db
14
15
  req.session?.passport?.user?.username || // login passwd
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/dblist/index.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,QAiBtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/dblist/index.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,QAiBtC"}
@@ -1,12 +1,14 @@
1
1
  import readItemList from "./controllers/readItems.js";
2
2
  import setItem from "./controllers/setItem.js";
3
- const policy = ["site"];
3
+ const params = {
4
+ config: { policy: "L0", tags: ["core", "dblist"] },
5
+ };
4
6
  export default function plugin(app) {
5
7
  if (!app.hasRoute({ method: "GET", url: "/db-list" })) {
6
8
  app.route({
7
9
  method: "GET",
8
10
  url: "/db-list",
9
- config: { policy },
11
+ ...params,
10
12
  handler: readItemList,
11
13
  });
12
14
  }
@@ -14,7 +16,7 @@ export default function plugin(app) {
14
16
  app.route({
15
17
  method: "GET",
16
18
  url: "/db-list/:id",
17
- config: { policy },
19
+ ...params,
18
20
  handler: setItem,
19
21
  });
20
22
  }
@@ -16,5 +16,8 @@
16
16
  * @returns {Object} headers Заголовки HTTP
17
17
  * @returns {String} message Повідомлення про успішне виконання або об'єкт з параметрами
18
18
  */
19
- export default function deleteFileAPI(req: any, reply: any): Promise<any>;
19
+ export default function deleteFileAPI(req: any): Promise<{
20
+ id: any;
21
+ filepath: any;
22
+ }>;
20
23
  //# sourceMappingURL=delete.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/delete.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAA8B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAoF/D"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/delete.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAA8B,aAAa,CAAC,GAAG,EAAE,GAAG;;;GAmFnD"}
@@ -1,4 +1,5 @@
1
- import { config, dataUpdate, logger, pgClients } from "../../../../utils.js";
1
+ import { NotFoundError } from "../../../../errors.js";
2
+ import { dataUpdate, logger, pgClients } from "../../../../utils.js";
2
3
  /**
3
4
  * Апі використовується для видалення файлів за допомогою fs або s3
4
5
  *
@@ -17,11 +18,11 @@ import { config, dataUpdate, logger, pgClients } from "../../../../utils.js";
17
18
  * @returns {Object} headers Заголовки HTTP
18
19
  * @returns {String} message Повідомлення про успішне виконання або об'єкт з параметрами
19
20
  */
20
- export default async function deleteFileAPI(req, reply) {
21
+ export default async function deleteFileAPI(req) {
21
22
  const { pg = pgClients.client, params = {}, user = {} } = req;
22
23
  const { uid, user_rnokpp: rnokpp } = user;
23
24
  if (!params["*"]) {
24
- return reply.status(404).send({ error: "File not found", code: 404 });
25
+ throw NotFoundError("file not found");
25
26
  }
26
27
  const filename = params["*"].startsWith("/") || /^[0-9]+$/.test(params["*"])
27
28
  ? params["*"]
@@ -35,7 +36,7 @@ export default async function deleteFileAPI(req, reply) {
35
36
  uid,
36
37
  rnokpp,
37
38
  });
38
- return reply.status(404).send({ error: "File not found", code: 404 });
39
+ throw NotFoundError("file not found");
39
40
  }
40
41
  if (filename.includes("..")) {
41
42
  logger.file("file", {
@@ -46,7 +47,7 @@ export default async function deleteFileAPI(req, reply) {
46
47
  uid,
47
48
  rnokpp,
48
49
  });
49
- return reply.status(404).send({ error: "File not found", code: 404 });
50
+ throw NotFoundError("file not found");
50
51
  }
51
52
  try {
52
53
  const result = await pg
@@ -68,7 +69,7 @@ export default async function deleteFileAPI(req, reply) {
68
69
  uid,
69
70
  rnokpp,
70
71
  });
71
- return reply.status(404).send({ error: "File not found", code: 404 });
72
+ throw NotFoundError("file not found");
72
73
  }
73
74
  const message = { id: res.file_id, filepath: res.file_path };
74
75
  logger.file("file/delete", {
@@ -86,7 +87,6 @@ export default async function deleteFileAPI(req, reply) {
86
87
  uid,
87
88
  rnokpp,
88
89
  });
89
- const error = config.local ? err.toString() : "Помилка видалення файлу";
90
- return reply.status(500).send({ error, code: 500 });
90
+ throw err;
91
91
  }
92
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/download.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgB5C;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAA8B,QAAQ,CACpC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EACrB,KAAK,EAAE,YAAY,gBAgDpB"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/download.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAqB5C;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAA8B,QAAQ,CACpC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EACrB,KAAK,EAAE,YAAY,gBA4CpB"}
@@ -3,6 +3,7 @@ import providers from "../../../plugins/file/providers/index.js";
3
3
  import getMimeType from "../../../plugins/file/providers/mime/index.js";
4
4
  import logger from "../../../plugins/logger/getLogger.js";
5
5
  import applyHook from "../../../plugins/hook/applyHook.js";
6
+ import { BadRequestError, ForbiddenError, NotFoundError, } from "../../../../errors.js";
6
7
  const { downloadFile } = providers();
7
8
  /* const allowedPublicDirs = [
8
9
  'upload', 'page', 'site', 'maps', 'tmp', 'uploads', 'site_slider', 'module', 'product', 'image', 'geo_works_file',
@@ -26,18 +27,16 @@ const { downloadFile } = providers();
26
27
  */
27
28
  export default async function download({ params, user }, reply) {
28
29
  if (!params?.["*"]) {
29
- return reply.status(400).send({ error: "not enough params", code: 400 });
30
+ throw BadRequestError("not enough params");
30
31
  }
31
32
  const filename = params["*"].startsWith("/")
32
33
  ? params["*"].slice(1)
33
34
  : params["*"];
34
35
  if (!filename) {
35
- return reply
36
- .status(400)
37
- .send({ error: "required param 'filename'", code: 400 });
36
+ throw BadRequestError("required param 'filename'");
38
37
  }
39
38
  if (filename.includes?.("../")) {
40
- return reply.status(403).send({ error: "wrong params", code: 403 });
39
+ throw ForbiddenError("invalid characters detected");
41
40
  }
42
41
  const filepath = filename.startsWith("files/")
43
42
  ? filename
@@ -51,9 +50,7 @@ export default async function download({ params, user }, reply) {
51
50
  return hookData;
52
51
  const fileStream = await downloadFile(filepath);
53
52
  if (!fileStream) {
54
- return reply
55
- .status(404)
56
- .send({ error: `Файл не знайдено - ${filename}`, code: 404 });
53
+ throw NotFoundError(`Файл не знайдено - ${filename}`);
57
54
  }
58
55
  const headers = {
59
56
  "Content-Disposition": `attachment; filename=${path.basename(filename)}`,
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgCzD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,OAAO,EACP,IAAI,EACJ,OAAO,EAAE,QAAQ,EACjB,GAAG,EACH,KAAU,EACV,IAAkB,EAClB,QAAQ,EACR,UAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,KAAK,EAAE,YAAY,gBAkZpB"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiCzD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,OAAO,EACP,IAAI,EACJ,OAAO,EAAE,QAAQ,EACjB,GAAG,EACH,KAAU,EACV,IAAkB,EAClB,QAAQ,EACR,UAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,EACD,KAAK,EAAE,YAAY,gBAiZpB"}
@@ -21,6 +21,7 @@ import jsonToCsv from "./utils/jsonToCsv.js";
21
21
  import formatResult from "./utils/formatResult.js";
22
22
  import jsonlToJsonFile from "./utils/jsonlToJsonFile.js";
23
23
  import pubsub from "./utils/pubsub.js";
24
+ import { BadRequestError, NotFoundError } from "../../../../errors.js";
24
25
  const startStreamWithTotal = 10000;
25
26
  const rootDir = getFolder(config, "local");
26
27
  /**
@@ -47,10 +48,10 @@ const rootDir = getFolder(config, "local");
47
48
  export default async function exportTable({ pg = pgClients.client, headers, user, columns: columns1, cls, query = {}, host = "127.0.0.1", tableSql, sourceName, }, reply) {
48
49
  const { id, cols, search, format = "json", table, filter = "empty", nocache, formatAnswer = "file", sql, stream, } = query;
49
50
  if (!table && !tableSql) {
50
- return reply.status(400).send("not enough params: table");
51
+ throw BadRequestError("not enough params: table");
51
52
  }
52
53
  if (!["csv", "xlsx", "json", "geojson"].includes(format)) {
53
- return reply.status(400).send("param format is invalid");
54
+ throw BadRequestError("invalid params: format");
54
55
  }
55
56
  const slice = query.slice ? Math.min(+query.slice || 16, 1000) : null;
56
57
  const date = new Date();
@@ -89,12 +90,10 @@ export default async function exportTable({ pg = pgClients.client, headers, user
89
90
  const meta = await getMeta({ pg, table: loadTable?.table || table });
90
91
  const viewSql = await getTemplate("view", loadTable?.table || table);
91
92
  if (!meta?.pk && !meta?.view && !tableSql && !viewSql) {
92
- return reply.status(404).send("table not found");
93
+ throw NotFoundError("table not found");
93
94
  }
94
95
  if (format === "geojson" && !meta?.geom) {
95
- return reply
96
- .status(400)
97
- .send("Ця форма не містить полів геометрії. Виберіть тип, який не потребує геометрії для вивантаження");
96
+ throw BadRequestError("Ця форма не містить полів геометрії. Виберіть тип, який не потребує геометрії для вивантаження");
98
97
  }
99
98
  const options = {
100
99
  pg,
@@ -266,7 +265,7 @@ export default async function exportTable({ pg = pgClients.client, headers, user
266
265
  if (res.error) {
267
266
  send("finish");
268
267
  sendOriginal(res.error, 1);
269
- return reply.status(500).send(res.error);
268
+ throw new Error(res.error);
270
269
  }
271
270
  logger.file("export/table", {
272
271
  table,
@@ -317,7 +316,8 @@ export default async function exportTable({ pg = pgClients.client, headers, user
317
316
  });
318
317
  }
319
318
  if (resp.error) {
320
- return reply.status(resp.status || 500).send(resp.error);
319
+ send(resp.error, 1);
320
+ throw new Error(resp.error);
321
321
  }
322
322
  send("finish");
323
323
  sendOriginal("Файл успішно сформовано. Натистіть кнопку ще раз для завантаження даних", 1);
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkB5C;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAA8B,OAAO,CACnC,EACE,MAAM,EACN,KAAK,EACL,IAAI,GACL,EAAE;IACD,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,EACD,KAAK,EAAE,YAAY,gBA+DpB"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAmB5C;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAA8B,OAAO,CACnC,EACE,MAAM,EACN,KAAK,EACL,IAAI,GACL,EAAE;IACD,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,EACD,KAAK,EAAE,YAAY,gBA4DpB"}
@@ -6,6 +6,7 @@ import config from "../../../../config.js";
6
6
  import logger from "../../../plugins/logger/getLogger.js";
7
7
  import applyHook from "../../../plugins/hook/applyHook.js";
8
8
  import providers from "../../../plugins/file/providers/index.js";
9
+ import { BadRequestError, ForbiddenError } from "../../../../errors.js";
9
10
  const grayGif = Buffer.from("R0lGODdhAwADAIEAAICAgAAAAAAAAAAAACwAAAAAAwADAAAIBwABCBw4MCAAOw==", "base64");
10
11
  /**
11
12
  * Апі використовується для отримання різних файлів і можливістю змінювати їх
@@ -27,19 +28,17 @@ const grayGif = Buffer.from("R0lGODdhAwADAIEAAICAgAAAAAAAAAAAACwAAAAAAwADAAAIBwA
27
28
  */
28
29
  export default async function getFile({ params, query, user, }, reply) {
29
30
  if (!params?.["*"]) {
30
- return reply.status(400).send({ error: "not enough params", code: 400 });
31
+ throw BadRequestError("not enough params");
31
32
  }
32
33
  if (params["*"].includes("../")) {
33
- return reply.status(403).send({ error: "wrong params", code: 403 });
34
+ throw ForbiddenError("invalid characters detected");
34
35
  }
35
36
  const relpath = (params["*"].startsWith("/") ? params["*"].slice(1) : params["*"]).replace(/^files\//g, "") + (params["*"].endsWith("/") ? "index.html" : "");
36
37
  if (!relpath) {
37
- return reply
38
- .status(400)
39
- .send({ error: "required param 'filename'", code: 400 });
38
+ throw BadRequestError("required param 'filename'");
40
39
  }
41
40
  if (relpath.includes("../")) {
42
- return reply.status(403).send({ error: "wrong params", code: 403 });
41
+ throw ForbiddenError("invalid characters detected");
43
42
  }
44
43
  const hookData = await applyHook("preFile", { user, relpath, reply });
45
44
  if (hookData)
@@ -55,11 +54,10 @@ export default async function getFile({ params, query, user, }, reply) {
55
54
  : undefined;
56
55
  const { fileExists } = providers({ provider: "fs" });
57
56
  const existsFS = await fileExists(filepath);
58
- return reply.status(200).send({ provider: fp.name, existsS3, existsFS });
57
+ return { provider: fp.name, existsS3, existsFS };
59
58
  }
60
59
  const fileStream = await downloadFile(filepath).catch();
61
60
  if (!fileStream) {
62
- // return reply.status(404).send({ error: "Файл не знайдено", code: 404 });
63
61
  return reply.headers({ "Content-Type": "image/gif" }).send(grayGif);
64
62
  }
65
63
  const headers = {
@@ -1 +1 @@
1
- {"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/resize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyC5C;;GAEG;AAEH,wBAA8B,MAAM,CAClC,EACE,KAAK,GACN,EAAE;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH,EACD,KAAK,EAAE,YAAY,kBAoJpB"}
1
+ {"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../../../server/routes/file/controllers/resize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA0C5C;;GAEG;AAEH,wBAA8B,MAAM,CAClC,EACE,KAAK,GACN,EAAE;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH,EACD,KAAK,EAAE,YAAY,kBA2IpB"}
@@ -8,6 +8,7 @@ isFileExists, getFolder, } from "../../../../utils.js";
8
8
  import grpc from "../../../plugins/grpc/grpc.js";
9
9
  import getMimeType from "../../../plugins/file/providers/mime/index.js";
10
10
  import { mkdir } from "node:fs/promises";
11
+ import { BadRequestError } from "../../../../errors.js";
11
12
  const defaultWidth = 400;
12
13
  const defaultHeight = 240;
13
14
  const maxWidth = 2000;
@@ -30,16 +31,12 @@ export default async function resize({ query, }, reply) {
30
31
  return reply.headers({ "Content-Type": "image/gif" }).send(transparentGif);
31
32
  }
32
33
  if (!filepath) {
33
- return reply
34
- .status(400)
35
- .send({ error: "not enough query params: filepath", code: 400 });
34
+ throw BadRequestError("not enough query params: filepath");
36
35
  }
37
36
  const basename = path.basename(filepath);
38
37
  const mimeType = getMimeType(filepath);
39
38
  if (!mimeType) {
40
- return reply
41
- .status(400)
42
- .send({ error: "invalid query params: filepath", code: 400 });
39
+ throw BadRequestError("invalid query params: filepath");
43
40
  }
44
41
  const resizePath1 = size
45
42
  ? filepath.replace(basename, `${size}_resized_${basename}`)
@@ -70,9 +67,6 @@ export default async function resize({ query, }, reply) {
70
67
  // get File Data
71
68
  const fileData = await downloadFile(filepath, { buffer: true });
72
69
  if (!fileData?.length) {
73
- // return reply
74
- // .status(404)
75
- // .send({ error: `Файл не знайдено - ${filepath}`, code: 400 });
76
70
  return reply.headers({ "Content-Type": "image/gif" }).send(transparentGif);
77
71
  }
78
72
  const resizeQuality = Math.min(+(quality || 75), 100);
@@ -82,9 +76,7 @@ export default async function resize({ query, }, reply) {
82
76
  .concat(w || "", h || "")
83
77
  .filter((el) => el && +el > maxWidth);
84
78
  if (check.length) {
85
- return reply
86
- .status(400)
87
- .send({ error: "resize image size too big", code: 400 });
79
+ throw BadRequestError("resize image size too big");
88
80
  }
89
81
  const resizeWidth = (h && !w ? +h * ratio : null) ||
90
82
  (size?.toLowerCase?.()?.split?.("x")?.[1] &&
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/file/index.ts"],"names":[],"mappings":"AAaA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QA8BtC;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/file/index.ts"],"names":[],"mappings":"AAgBA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QA+BtC;AAED,eAAe,MAAM,CAAC"}
@@ -8,11 +8,14 @@ import exportTable from "./controllers/export.js";
8
8
  import uploadImage from "./controllers/uploadImage.js";
9
9
  import deleteFileAPI from "./controllers/delete.js";
10
10
  import { resizeSchema } from "./schema.js";
11
+ const tags = ["core", "file"];
12
+ const publicParams = { config: { tags, policy: "L0" } };
11
13
  function plugin(app, opt = {}) {
12
- app.get("/files/*", { config: { policy: "L0" } }, files);
14
+ app.get("/files/*", { config: { tags, policy: "L0" } }, files);
13
15
  if (!app.hasRoute({ method: "GET", url: "/file/resize" })) {
14
16
  app.get("/file/resize", {
15
17
  config: {
18
+ tags,
16
19
  policy: "L0",
17
20
  rateLimit: config.rateLimit
18
21
  ? {
@@ -24,11 +27,11 @@ function plugin(app, opt = {}) {
24
27
  schema: resizeSchema,
25
28
  }, resize);
26
29
  }
27
- app.get("/api/resize-all", { config: { policy: ["admin", "site"] }, schema: resizeSchema }, resizeAll);
28
- app.post("/file/upload/*", { config: { policy: "L0" } }, upload);
29
- app.post("/file/upload-image/*", { config: { policy: "L0" } }, uploadImage);
30
- app.get("/file/download/*", { config: { policy: "L0" } }, download);
31
- app.get("/file/delete/*", { config: { policy: "L0" } }, deleteFileAPI);
32
- app.get(`/api/export`, { config: { policy: "L0" } }, exportTable);
30
+ app.get("/api/resize-all", { config: { tags, role: "admin" }, schema: resizeSchema }, resizeAll);
31
+ app.post("/file/upload/*", publicParams, upload);
32
+ app.post("/file/upload-image/*", publicParams, uploadImage);
33
+ app.get("/file/download/*", publicParams, download);
34
+ app.get("/file/delete/*", publicParams, deleteFileAPI);
35
+ app.get(`/api/export`, publicParams, exportTable);
33
36
  }
34
37
  export default plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"file2geojson.d.ts","sourceRoot":"","sources":["../../../../../server/routes/grpc/controllers/file2geojson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,wBAA8B,YAAY,CACxC,EACE,EAAqB,EACrB,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY,gBAgEpB"}
1
+ {"version":3,"file":"file2geojson.d.ts","sourceRoot":"","sources":["../../../../../server/routes/grpc/controllers/file2geojson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS5C,wBAA8B,YAAY,CACxC,EACE,EAAqB,EACrB,IAAS,GACV,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,EACD,KAAK,EAAE,YAAY,gBA+DpB"}
@@ -1,24 +1,24 @@
1
1
  import path from "node:path";
2
2
  import { config, logger, pgClients } from "../../../../utils.js";
3
3
  import file2json from "../../../plugins/grpc/file2json.js";
4
+ import { BadRequestError } from "../../../../errors.js";
4
5
  export default async function file2geojson({ pg = pgClients.client, body = {}, }, reply) {
5
6
  const { file, srid, debug } = body;
6
7
  if (!file || !srid) {
7
- return reply.status(400).send("params file and srid are required");
8
+ throw BadRequestError("not enough body params: file or srid");
8
9
  }
9
10
  const ext = path.extname(file);
10
11
  if (![".zip", ".gdb", ".gpkg", ".geojson"].includes(ext)) {
11
- return reply.status(400).send("Невірний формат файлів");
12
+ throw BadRequestError("Невірний формат файлів");
12
13
  }
13
14
  const filepath = path.join(config.folder || "", file);
14
15
  try {
15
16
  const JsonData = await file2json({ filepath, debug });
16
17
  if (debug)
17
18
  return JsonData;
18
- // if (JsonData?.features?.length > 1) return { error: 'too many features', status: 400 };
19
19
  if (!JsonData?.features?.length &&
20
20
  JsonData?.type?.toLowerCase() !== "feature") {
21
- return reply.status(400).send("invalid file content");
21
+ throw BadRequestError("invalid file content");
22
22
  }
23
23
  const JsonArr = JsonData?.features
24
24
  ? JsonData
@@ -37,11 +37,11 @@ export default async function file2geojson({ pg = pgClients.client, body = {}, }
37
37
  )q
38
38
  )q
39
39
  )q`, [JSON.stringify(JsonArr).replace(/'/g, "''"), srid]);
40
- return reply.status(200).send([{ features: [rows.slice(0, 1)] }]);
40
+ return [{ features: [rows.slice(0, 1)] }];
41
41
  }
42
42
  catch (err) {
43
43
  if (err?.detail?.includes("Infinity")) {
44
- return { error: "invalid geometry. Check input SRID", status: 400 };
44
+ throw BadRequestError("invalid geometry. Check input SRID");
45
45
  }
46
46
  logger.file("grpc/file2json", {
47
47
  error: err.toString(),
@@ -49,6 +49,6 @@ export default async function file2geojson({ pg = pgClients.client, body = {}, }
49
49
  file,
50
50
  srid,
51
51
  });
52
- return reply.status(500).send(err.toString());
52
+ throw err;
53
53
  }
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filePreview.d.ts","sourceRoot":"","sources":["../../../../../server/routes/grpc/controllers/filePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4BzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,KAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH,EACD,KAAK,EAAE,YAAY,kBAwFpB"}
1
+ {"version":3,"file":"filePreview.d.ts","sourceRoot":"","sources":["../../../../../server/routes/grpc/controllers/filePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiCzD,wBAA8B,WAAW,CACvC,EACE,EAAqB,EACrB,KAAU,GACX,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;CACH,EACD,KAAK,EAAE,YAAY,kBAwFpB"}
@@ -1,6 +1,7 @@
1
1
  import path from "node:path";
2
2
  import officeWrapper from "../../../plugins/grpc/office2pdf.js";
3
3
  import { downloadFile, isFileExists, uploadFile, logger, pgClients, } from "../../../../utils.js";
4
+ import { BadRequestError, NotFoundError, UnsupportedMediaTypeError, } from "../../../../errors.js";
4
5
  const { officeToPdf } = officeWrapper();
5
6
  const mimeTypes = {
6
7
  png: "image/png",
@@ -16,7 +17,7 @@ const mimeTypes = {
16
17
  export default async function filePreview({ pg = pgClients.client, query = {}, }, reply) {
17
18
  const { id, nocache } = query;
18
19
  if (!id) {
19
- return reply.status(400).send("not enough params: id");
20
+ throw BadRequestError("not enough params: id");
20
21
  }
21
22
  const filePath = await pg
22
23
  .query("select file_path from crm.files where file_id = $1", [
@@ -28,7 +29,7 @@ export default async function filePreview({ pg = pgClients.client, query = {}, }
28
29
  error: "File with provided id does not found",
29
30
  id,
30
31
  });
31
- return reply.status(404).send("File not found");
32
+ throw NotFoundError("File not found");
32
33
  }
33
34
  const { base, ext } = path.parse(filePath);
34
35
  const fileExt = ext.substring(1).toLowerCase();
@@ -51,7 +52,7 @@ export default async function filePreview({ pg = pgClients.client, query = {}, }
51
52
  id,
52
53
  filePath,
53
54
  });
54
- return reply.status(404).send("File not found");
55
+ throw NotFoundError("File not found");
55
56
  }
56
57
  if (!mimeTypes[fileExt] &&
57
58
  !["doc", "docx", "ppt", "pptx", "xls", "xlsx", "csv"].includes(fileExt)) {
@@ -60,7 +61,7 @@ export default async function filePreview({ pg = pgClients.client, query = {}, }
60
61
  id,
61
62
  filePath,
62
63
  });
63
- return reply.status(415).send("Unsupported file type");
64
+ throw UnsupportedMediaTypeError("Unsupported file type");
64
65
  }
65
66
  if (!["doc", "docx", "ppt", "pptx", "xls", "xlsx", "csv"].includes(fileExt)) {
66
67
  return reply
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/grpc/index.ts"],"names":[],"mappings":"AAGA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,QAGnC;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/grpc/index.ts"],"names":[],"mappings":"AAKA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,QAGnC;AAED,eAAe,MAAM,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import file2geojson from "./controllers/file2geojson.js";
2
2
  import filePreview from "./controllers/filePreview.js";
3
+ const publicParams = { config: { policy: "L0", tags: ["core", "grpc"] } };
3
4
  function plugin(app, opts) {
4
- app.post("/file2geojson", { config: { policy: ["public"] } }, file2geojson);
5
- app.get("/file-preview", { config: { policy: ["public"] } }, filePreview);
5
+ app.post("/file2geojson", publicParams, file2geojson);
6
+ app.get("/file-preview", publicParams, filePreview);
6
7
  }
7
8
  export default plugin;
@@ -4,5 +4,5 @@
4
4
  * @summary API для перегляду логів
5
5
  *
6
6
  */
7
- export default function loggerFile(req: any, reply: any): Promise<any>;
7
+ export default function loggerFile(req: any, reply: any): Promise<string | string[] | NonSharedBuffer>;
8
8
  //# sourceMappingURL=logger.file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.file.d.ts","sourceRoot":"","sources":["../../../../../server/routes/logger/controllers/logger.file.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AAEH,wBAA8B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA4F5D"}
1
+ {"version":3,"file":"logger.file.d.ts","sourceRoot":"","sources":["../../../../../server/routes/logger/controllers/logger.file.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AAEH,wBAA8B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gDAyF5D"}
@@ -4,6 +4,7 @@ import { createReadStream, existsSync } from "node:fs";
4
4
  import readline from "node:readline";
5
5
  import checkUserAccess from "../../../plugins/logger/checkUserAccess.js";
6
6
  import getRootDir from "../../../plugins/logger/getRootDir.js";
7
+ import { BadRequestError, NotFoundError } from "../../../../errors.js";
7
8
  const limit = 200000;
8
9
  const rootDir = getRootDir();
9
10
  /**
@@ -14,13 +15,11 @@ const rootDir = getRootDir();
14
15
  */
15
16
  export default async function loggerFile(req, reply) {
16
17
  const { params = {}, user = {}, query = {}, originalUrl } = req;
17
- const access = checkUserAccess({ user, token: query.token });
18
- if (access?.status !== 200)
19
- return reply.status(access.status).send(access.message);
18
+ checkUserAccess({ user, token: query.token });
20
19
  // absolute / relative path
21
20
  const filepath = path.join(rootDir, params["*"] || "");
22
21
  if (!existsSync(filepath)) {
23
- return reply.status(404).send("file not exists");
22
+ throw NotFoundError("file not found");
24
23
  }
25
24
  const stat = await lstat(filepath);
26
25
  const isFile = stat.isFile();
@@ -30,7 +29,7 @@ export default async function loggerFile(req, reply) {
30
29
  }
31
30
  if (query.full && isFile) {
32
31
  if (stat.size > 20 * 1000 * 1000) {
33
- return reply.status(400).send({ error: "file size > 20MB", code: 400 });
32
+ throw BadRequestError("file size > 20MB");
34
33
  }
35
34
  const buffer = await readFile(filepath);
36
35
  return buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.metrics.d.ts","sourceRoot":"","sources":["../../../../../server/routes/logger/controllers/logger.metrics.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,wBAA8B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAkB/D"}
1
+ {"version":3,"file":"logger.metrics.d.ts","sourceRoot":"","sources":["../../../../../server/routes/logger/controllers/logger.metrics.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,wBAA8B,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAc/D"}
@@ -8,10 +8,7 @@ import loggerSystem from "../../../plugins/metric/loggerSystem.js";
8
8
  */
9
9
  export default async function loggerMetrics(req, reply) {
10
10
  const { pg, user = {}, query = {} } = req;
11
- const access = checkUserAccess({ user, token: query.token });
12
- if (access?.status !== 200) {
13
- return reply.status(access.status).send(access.message);
14
- }
11
+ checkUserAccess({ user, token: query.token });
15
12
  const system = await loggerSystem();
16
13
  const dbName = pg?.options?.database;
17
14
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/logger/index.ts"],"names":[],"mappings":"AAkBA,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/logger/index.ts"],"names":[],"mappings":"AAoBA,iBAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,QAOtC;AAED,eAAe,MAAM,CAAC"}