@opengis/fastify-table 1.4.87 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/dist/config.js +33 -0
  2. package/dist/dblist.js +5 -0
  3. package/dist/index.js +170 -0
  4. package/dist/redactionList.js +6 -0
  5. package/dist/server/helpers/core/badge.js +16 -0
  6. package/dist/server/helpers/core/buttonFilePreview.js +12 -0
  7. package/dist/server/helpers/core/buttonHelper.js +20 -0
  8. package/{server → dist/server}/helpers/core/token.js +16 -18
  9. package/dist/server/helpers/format/formatAuto.js +14 -0
  10. package/dist/server/helpers/format/formatDate.js +231 -0
  11. package/{server → dist/server}/helpers/format/formatDigit.js +21 -21
  12. package/dist/server/helpers/format/formatNum.js +331 -0
  13. package/{server → dist/server}/helpers/format/formatNumber.js +50 -55
  14. package/dist/server/helpers/format/formatRelative.js +180 -0
  15. package/{server → dist/server}/helpers/format/formatUnit.js +41 -40
  16. package/{server → dist/server}/helpers/format/num_format.js +40 -44
  17. package/{server → dist/server}/helpers/format/set.js +26 -27
  18. package/{server → dist/server}/helpers/funcs/_math.js +49 -50
  19. package/{server → dist/server}/helpers/funcs/contentList.js +52 -57
  20. package/{server → dist/server}/helpers/funcs/empty.js +21 -21
  21. package/dist/server/helpers/funcs/ifCond.js +109 -0
  22. package/dist/server/helpers/funcs/ifCondAnd.js +109 -0
  23. package/dist/server/helpers/funcs/ifCondOr.js +110 -0
  24. package/{server → dist/server}/helpers/funcs/inc.js +19 -20
  25. package/{server → dist/server}/helpers/funcs/json.js +3 -3
  26. package/dist/server/helpers/funcs/qrcode.js +65 -0
  27. package/{server → dist/server}/helpers/funcs/round.js +27 -29
  28. package/dist/server/helpers/funcs/select.js +39 -0
  29. package/dist/server/helpers/index.js +125 -0
  30. package/dist/server/helpers/list/buttonHelper.js +20 -0
  31. package/{server → dist/server}/helpers/list/descriptionList.js +39 -45
  32. package/dist/server/helpers/list/tableList.js +104 -0
  33. package/{server → dist/server}/helpers/list/utils/button.js +3 -3
  34. package/{server → dist/server}/helpers/list/utils/buttonDel.js +8 -9
  35. package/{server → dist/server}/helpers/list/utils/buttonEdit.js +8 -9
  36. package/{server → dist/server}/helpers/string/coalesce.js +33 -39
  37. package/{server → dist/server}/helpers/string/concat.js +25 -28
  38. package/{server → dist/server}/helpers/string/split.js +19 -20
  39. package/{server → dist/server}/helpers/string/str_replace.js +57 -62
  40. package/{server → dist/server}/helpers/string/substr.js +28 -32
  41. package/{server → dist/server}/helpers/string/translit.js +20 -23
  42. package/dist/server/helpers/string/utils/alphabet.js +76 -0
  43. package/{server → dist/server}/helpers/utils/button.js +3 -3
  44. package/{server → dist/server}/helpers/utils/buttonAdd.js +4 -4
  45. package/{server → dist/server}/helpers/utils/buttonDel.js +11 -15
  46. package/{server → dist/server}/helpers/utils/buttonDownload.js +3 -3
  47. package/dist/server/helpers/utils/buttonEdit.js +14 -0
  48. package/{server → dist/server}/helpers/utils/buttonPreview.js +3 -3
  49. package/{server → dist/server}/helpers/utils/mdToHTML.js +16 -17
  50. package/{server → dist/server}/helpers/utils/paddingNumber.js +5 -5
  51. package/dist/server/plugins/access/funcs/getAdminAccess.js +11 -0
  52. package/dist/server/plugins/cron/cronList.js +2 -0
  53. package/dist/server/plugins/cron/funcs/addCron.js +41 -0
  54. package/{server → dist/server}/plugins/cron/funcs/interval2ms.js +36 -40
  55. package/dist/server/plugins/cron/funcs/runCron.js +20 -0
  56. package/{server → dist/server}/plugins/cron/funcs/verifyUnique.js +19 -23
  57. package/dist/server/plugins/cron/index.js +75 -0
  58. package/dist/server/plugins/crud/funcs/dataDelete.js +87 -0
  59. package/dist/server/plugins/crud/funcs/dataInsert.js +134 -0
  60. package/dist/server/plugins/crud/funcs/dataUpdate.js +198 -0
  61. package/dist/server/plugins/crud/funcs/getAccess.js +82 -0
  62. package/dist/server/plugins/crud/funcs/getOpt.js +13 -0
  63. package/dist/server/plugins/crud/funcs/getToken.js +24 -0
  64. package/dist/server/plugins/crud/funcs/isFileExists.js +11 -0
  65. package/dist/server/plugins/crud/funcs/setOpt.js +19 -0
  66. package/dist/server/plugins/crud/funcs/setToken.js +41 -0
  67. package/dist/server/plugins/crud/funcs/utils/getFolder.js +13 -0
  68. package/dist/server/plugins/crud/funcs/utils/getInsertQuery.js +54 -0
  69. package/dist/server/plugins/crud/funcs/utils/logChanges.js +144 -0
  70. package/{server → dist/server}/plugins/crud/funcs/validateData.js +91 -83
  71. package/dist/server/plugins/extra/extraData.js +81 -0
  72. package/dist/server/plugins/extra/extraDataGet.js +52 -0
  73. package/dist/server/plugins/file/downloadFile.js +15 -0
  74. package/{server → dist/server}/plugins/file/getExport.js +18 -38
  75. package/dist/server/plugins/file/isFileExists.js +13 -0
  76. package/dist/server/plugins/file/providers/fs.js +86 -0
  77. package/dist/server/plugins/file/providers/index.js +28 -0
  78. package/dist/server/plugins/file/providers/mime/index.js +7 -0
  79. package/dist/server/plugins/file/providers/mime/mimes.js +1179 -0
  80. package/dist/server/plugins/file/providers/s3/client.js +26 -0
  81. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +42 -0
  82. package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +24 -0
  83. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +35 -0
  84. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +18 -0
  85. package/{server → dist/server}/plugins/file/providers/s3/index.js +11 -12
  86. package/dist/server/plugins/file/providers/utils/getDataSize.js +19 -0
  87. package/dist/server/plugins/file/providers/utils/getValidData.js +30 -0
  88. package/dist/server/plugins/file/providers/utils/handlers/dataTypes.js +7 -0
  89. package/dist/server/plugins/file/providers/utils/handlers/index.js +50 -0
  90. package/dist/server/plugins/file/providers/utils/handlers/sizeHandlers.js +9 -0
  91. package/dist/server/plugins/file/providers/utils/streamToBuffer.js +7 -0
  92. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isArray.js +2 -3
  93. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isBuffer.js +2 -3
  94. package/dist/server/plugins/file/providers/utils/typeguards/isPath.js +3 -0
  95. package/dist/server/plugins/file/providers/utils/typeguards/isReadableStream.js +7 -0
  96. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isText.js +2 -3
  97. package/dist/server/plugins/file/uploadFile.js +14 -0
  98. package/dist/server/plugins/file/uploadMultiPart.js +101 -0
  99. package/dist/server/plugins/file/utils/allowedExtensions.js +60 -0
  100. package/{server → dist/server}/plugins/file/utils/getFileType.js +12 -10
  101. package/dist/server/plugins/file/utils/getPath.js +30 -0
  102. package/dist/server/plugins/file/utils/isFileExists.js +15 -0
  103. package/dist/server/plugins/grpc/file2json.js +50 -0
  104. package/dist/server/plugins/grpc/grpc.js +103 -0
  105. package/dist/server/plugins/grpc/office2pdf.js +78 -0
  106. package/dist/server/plugins/grpc/utils/csv2xls.js +6 -0
  107. package/dist/server/plugins/grpc/utils/excel2Json.js +10 -0
  108. package/dist/server/plugins/grpc/utils/html2doc.js +17 -0
  109. package/dist/server/plugins/grpc/utils/html2img.js +17 -0
  110. package/dist/server/plugins/grpc/utils/html2pdf.js +19 -0
  111. package/{server → dist/server}/plugins/grpc/utils/htmlTemplate.js +3 -4
  112. package/dist/server/plugins/grpc/utils/json2xls.js +11 -0
  113. package/dist/server/plugins/grpc/utils/mergePdf.js +18 -0
  114. package/dist/server/plugins/hook/funcs/addHook.js +7 -0
  115. package/dist/server/plugins/hook/funcs/applyHook.js +25 -0
  116. package/dist/server/plugins/hook/funcs/applyHookSync.js +7 -0
  117. package/dist/server/plugins/hook/hookList.js +2 -0
  118. package/{server → dist/server}/plugins/hook/index.js +7 -8
  119. package/dist/server/plugins/logger/createFileStream.js +79 -0
  120. package/dist/server/plugins/logger/errorMessage.js +24 -0
  121. package/dist/server/plugins/logger/errorStatus.js +17 -0
  122. package/dist/server/plugins/logger/getHooks.js +17 -0
  123. package/dist/server/plugins/logger/getLogger.js +52 -0
  124. package/dist/server/plugins/logger/index.js +37 -0
  125. package/dist/server/plugins/logger/labels.js +10 -0
  126. package/dist/server/plugins/logger/serializers.js +22 -0
  127. package/{server → dist/server}/plugins/logger/timestampWithTimeZone.js +5 -5
  128. package/dist/server/plugins/md/funcs/formatMdoc.js +45 -0
  129. package/{server → dist/server}/plugins/md/funcs/mdToHTML.js +16 -17
  130. package/dist/server/plugins/metric/index.js +6 -0
  131. package/dist/server/plugins/metric/loggerSystem.js +127 -0
  132. package/dist/server/plugins/metric/systemMetricsFifthly.js +20 -0
  133. package/dist/server/plugins/migration/exec.migrations.js +59 -0
  134. package/dist/server/plugins/migration/exec.sql.js +61 -0
  135. package/{server → dist/server}/plugins/migration/index.js +5 -7
  136. package/dist/server/plugins/pg/funcs/autoIndex.js +102 -0
  137. package/{server → dist/server}/plugins/pg/funcs/getDBParams.js +16 -15
  138. package/dist/server/plugins/pg/funcs/getMeta.js +48 -0
  139. package/dist/server/plugins/pg/funcs/getPG.js +39 -0
  140. package/dist/server/plugins/pg/funcs/getPGAsync.js +45 -0
  141. package/dist/server/plugins/pg/funcs/init.js +157 -0
  142. package/dist/server/plugins/pg/index.js +47 -0
  143. package/dist/server/plugins/pg/pgClients.js +20 -0
  144. package/dist/server/plugins/policy/funcs/checkPolicy.js +173 -0
  145. package/dist/server/plugins/policy/funcs/checkXSS.js +44 -0
  146. package/dist/server/plugins/policy/index.js +11 -0
  147. package/dist/server/plugins/policy/sqlInjection.js +33 -0
  148. package/dist/server/plugins/policy/xssInjection.js +72 -0
  149. package/{server → dist/server}/plugins/redis/client.js +6 -8
  150. package/dist/server/plugins/redis/funcs/getRedis.js +23 -0
  151. package/{server → dist/server}/plugins/redis/funcs/redisClients.js +2 -3
  152. package/dist/server/plugins/redis/index.js +8 -0
  153. package/dist/server/plugins/sqlite/funcs/getSqlite.js +27 -0
  154. package/dist/server/plugins/sqlite/funcs/init.js +45 -0
  155. package/dist/server/plugins/sqlite/index.js +8 -0
  156. package/dist/server/plugins/sqlite/sqliteClients.js +24 -0
  157. package/dist/server/plugins/table/funcs/addMenu.js +12 -0
  158. package/dist/server/plugins/table/funcs/addTemplateDir.js +16 -0
  159. package/dist/server/plugins/table/funcs/customTokens.js +2 -0
  160. package/dist/server/plugins/table/funcs/getData.js +25 -0
  161. package/dist/server/plugins/table/funcs/getFilter.js +18 -0
  162. package/dist/server/plugins/table/funcs/getFilterSQL/index.js +201 -0
  163. package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +131 -0
  164. package/dist/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +11 -0
  165. package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +84 -0
  166. package/dist/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +11 -0
  167. package/dist/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +161 -0
  168. package/dist/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +40 -0
  169. package/dist/server/plugins/table/funcs/getSelect.js +37 -0
  170. package/dist/server/plugins/table/funcs/getSelectMeta.js +77 -0
  171. package/dist/server/plugins/table/funcs/getTemplate.js +86 -0
  172. package/dist/server/plugins/table/funcs/getTemplatePath.js +60 -0
  173. package/dist/server/plugins/table/funcs/getTemplateSync.js +84 -0
  174. package/dist/server/plugins/table/funcs/getTemplates.js +15 -0
  175. package/dist/server/plugins/table/funcs/gisIRColumn.js +81 -0
  176. package/dist/server/plugins/table/funcs/loadTemplate.js +2 -0
  177. package/dist/server/plugins/table/funcs/loadTemplatePath.js +2 -0
  178. package/dist/server/plugins/table/funcs/menuDirs.js +2 -0
  179. package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.js +75 -0
  180. package/dist/server/plugins/table/funcs/metaFormat/index.js +64 -0
  181. package/dist/server/plugins/table/funcs/userTemplateDir.js +2 -0
  182. package/dist/server/plugins/table/funcs/userTokens.js +2 -0
  183. package/dist/server/plugins/util/funcs/eventStream.js +28 -0
  184. package/{server → dist/server}/plugins/util/funcs/flattenObject.js +14 -12
  185. package/{server → dist/server}/plugins/util/funcs/unflattenObject.js +48 -46
  186. package/{server → dist/server}/plugins/yml/funcs/json2yml.js +3 -5
  187. package/{server → dist/server}/plugins/yml/funcs/yml2json.js +11 -14
  188. package/{server → dist/server}/routes/access/controllers/access.group.js +17 -23
  189. package/{server → dist/server}/routes/access/controllers/access.group.post.js +46 -53
  190. package/dist/server/routes/access/controllers/access.interface.js +36 -0
  191. package/{server/routes/access/index.mjs → dist/server/routes/access/index.js} +10 -12
  192. package/{server/routes/access/schema.mjs → dist/server/routes/access/schema.js} +65 -68
  193. package/dist/server/routes/cron/controllers/cronApi.js +16 -0
  194. package/dist/server/routes/cron/index.js +15 -0
  195. package/dist/server/routes/crud/controllers/deleteCrud.js +90 -0
  196. package/dist/server/routes/crud/controllers/insert.js +110 -0
  197. package/dist/server/routes/crud/controllers/table.js +144 -0
  198. package/dist/server/routes/crud/controllers/update.js +113 -0
  199. package/dist/server/routes/crud/index.js +22 -0
  200. package/dist/server/routes/dblist/controllers/readItems.js +25 -0
  201. package/dist/server/routes/dblist/controllers/setItem.js +20 -0
  202. package/dist/server/routes/dblist/index.js +17 -0
  203. package/dist/server/routes/dblist/utils/formatData.js +8 -0
  204. package/dist/server/routes/file/controllers/delete.js +99 -0
  205. package/dist/server/routes/file/controllers/download.js +56 -0
  206. package/dist/server/routes/file/controllers/export.js +294 -0
  207. package/dist/server/routes/file/controllers/files.js +57 -0
  208. package/dist/server/routes/file/controllers/resize.js +86 -0
  209. package/dist/server/routes/file/controllers/resizeAll.js +140 -0
  210. package/dist/server/routes/file/controllers/upload.js +56 -0
  211. package/dist/server/routes/file/controllers/uploadImage.js +45 -0
  212. package/dist/server/routes/file/controllers/utils/formatResult.js +13 -0
  213. package/dist/server/routes/file/controllers/utils/jsonToCsv.js +40 -0
  214. package/dist/server/routes/file/controllers/utils/jsonToXls.js +37 -0
  215. package/dist/server/routes/file/index.js +22 -0
  216. package/dist/server/routes/file/schema.js +14 -0
  217. package/dist/server/routes/grpc/controllers/file2geojson.js +54 -0
  218. package/dist/server/routes/grpc/controllers/filePreview.js +87 -0
  219. package/dist/server/routes/grpc/index.js +9 -0
  220. package/dist/server/routes/logger/controllers/logger.file.js +81 -0
  221. package/dist/server/routes/logger/controllers/logger.test.api.js +42 -0
  222. package/dist/server/routes/logger/controllers/utils/checkUserAccess.js +22 -0
  223. package/dist/server/routes/logger/controllers/utils/getRootDir.js +25 -0
  224. package/dist/server/routes/logger/index.js +18 -0
  225. package/dist/server/routes/menu/controllers/getMenu.js +98 -0
  226. package/dist/server/routes/menu/controllers/interfaces.js +18 -0
  227. package/dist/server/routes/menu/index.js +7 -0
  228. package/dist/server/routes/properties/controllers/properties.get.js +23 -0
  229. package/dist/server/routes/properties/controllers/properties.post.js +68 -0
  230. package/dist/server/routes/properties/index.js +21 -0
  231. package/dist/server/routes/table/controllers/card.js +79 -0
  232. package/dist/server/routes/table/controllers/cardData.js +161 -0
  233. package/dist/server/routes/table/controllers/cardTabData.js +49 -0
  234. package/dist/server/routes/table/controllers/dataInfo.js +57 -0
  235. package/dist/server/routes/table/controllers/filter.js +181 -0
  236. package/dist/server/routes/table/controllers/form.js +41 -0
  237. package/{server → dist/server}/routes/table/controllers/getFormByTable.js +105 -125
  238. package/dist/server/routes/table/controllers/search.js +80 -0
  239. package/dist/server/routes/table/controllers/suggest.js +242 -0
  240. package/dist/server/routes/table/controllers/tableData.js +88 -0
  241. package/dist/server/routes/table/controllers/tableInfo.js +112 -0
  242. package/dist/server/routes/table/controllers/tokenInfo.js +10 -0
  243. package/dist/server/routes/table/controllers/utils/conditions.js +30 -0
  244. package/dist/server/routes/table/controllers/utils/formatSchema.js +35 -0
  245. package/dist/server/routes/table/controllers/utils/locales.js +2 -0
  246. package/dist/server/routes/table/functions/getData.js +584 -0
  247. package/dist/server/routes/table/index.js +44 -0
  248. package/dist/server/routes/table/schema.js +117 -0
  249. package/dist/server/routes/templates/controllers/getTemplate.js +65 -0
  250. package/dist/server/routes/templates/index.js +7 -0
  251. package/{server → dist/server}/routes/templates/schema.js +11 -12
  252. package/dist/server/routes/util/controllers/code.generator.js +75 -0
  253. package/dist/server/routes/util/controllers/next.id.js +4 -0
  254. package/dist/server/routes/util/controllers/status.monitor.js +6 -0
  255. package/dist/server/routes/util/controllers/user.tokens.js +32 -0
  256. package/dist/server/routes/util/index.js +13 -0
  257. package/dist/server/routes/widget/controllers/file.edit.js +48 -0
  258. package/dist/server/routes/widget/controllers/widget.del.js +84 -0
  259. package/dist/server/routes/widget/controllers/widget.get.js +164 -0
  260. package/dist/server/routes/widget/controllers/widget.set.js +117 -0
  261. package/dist/server/routes/widget/hook/onWidgetSet.js +10 -0
  262. package/dist/server/routes/widget/index.js +42 -0
  263. package/dist/server/types/core.js +12 -0
  264. package/dist/utils.js +93 -0
  265. package/package.json +24 -17
  266. package/config.js +0 -37
  267. package/dblist.js +0 -5
  268. package/index.js +0 -193
  269. package/redactionList.js +0 -7
  270. package/server/helpers/core/badge.js +0 -14
  271. package/server/helpers/core/buttonFilePreview.js +0 -12
  272. package/server/helpers/core/buttonHelper.js +0 -22
  273. package/server/helpers/format/formatAuto.js +0 -13
  274. package/server/helpers/format/formatDate.js +0 -258
  275. package/server/helpers/format/formatNum.js +0 -365
  276. package/server/helpers/format/formatRelative.js +0 -106
  277. package/server/helpers/funcs/ifCond.js +0 -109
  278. package/server/helpers/funcs/ifCondAnd.js +0 -114
  279. package/server/helpers/funcs/ifCondOr.js +0 -115
  280. package/server/helpers/funcs/qrcode.js +0 -68
  281. package/server/helpers/funcs/select.js +0 -46
  282. package/server/helpers/index.js +0 -137
  283. package/server/helpers/list/buttonHelper.js +0 -22
  284. package/server/helpers/list/tableList.js +0 -87
  285. package/server/helpers/string/utils/alphabet.js +0 -76
  286. package/server/helpers/utils/buttonEdit.js +0 -17
  287. package/server/migrations/0.sql +0 -84
  288. package/server/migrations/cls.sql +0 -40
  289. package/server/migrations/context.sql +0 -135
  290. package/server/migrations/crm.sql +0 -155
  291. package/server/migrations/log.sql +0 -87
  292. package/server/migrations/properties.sql +0 -115
  293. package/server/migrations/roles.sql +0 -191
  294. package/server/migrations/template.sql +0 -44
  295. package/server/migrations/users.sql +0 -176
  296. package/server/plugins/access/funcs/getAdminAccess.js +0 -14
  297. package/server/plugins/access/index.mjs +0 -6
  298. package/server/plugins/cron/cronList.js +0 -1
  299. package/server/plugins/cron/funcs/addCron.js +0 -52
  300. package/server/plugins/cron/funcs/runCron.js +0 -24
  301. package/server/plugins/cron/index.js +0 -77
  302. package/server/plugins/crud/funcs/dataDelete.js +0 -86
  303. package/server/plugins/crud/funcs/dataInsert.js +0 -131
  304. package/server/plugins/crud/funcs/dataUpdate.js +0 -179
  305. package/server/plugins/crud/funcs/getAccess.js +0 -94
  306. package/server/plugins/crud/funcs/getOpt.js +0 -14
  307. package/server/plugins/crud/funcs/getToken.js +0 -33
  308. package/server/plugins/crud/funcs/isFileExists.js +0 -13
  309. package/server/plugins/crud/funcs/setOpt.js +0 -21
  310. package/server/plugins/crud/funcs/setToken.js +0 -43
  311. package/server/plugins/crud/funcs/utils/getFolder.js +0 -11
  312. package/server/plugins/crud/funcs/utils/getInsertQuery.js +0 -44
  313. package/server/plugins/crud/funcs/utils/logChanges.js +0 -121
  314. package/server/plugins/crud/index.js +0 -23
  315. package/server/plugins/extra/extraData.js +0 -79
  316. package/server/plugins/extra/extraDataGet.js +0 -56
  317. package/server/plugins/file/downloadFile.js +0 -18
  318. package/server/plugins/file/isFileExists.js +0 -17
  319. package/server/plugins/file/providers/fs.js +0 -100
  320. package/server/plugins/file/providers/index.d.ts +0 -49
  321. package/server/plugins/file/providers/index.js +0 -36
  322. package/server/plugins/file/providers/mime/index.js +0 -12
  323. package/server/plugins/file/providers/mime/mimes.js +0 -1180
  324. package/server/plugins/file/providers/s3/client.js +0 -41
  325. package/server/plugins/file/providers/s3/funcs/downloadFile.js +0 -50
  326. package/server/plugins/file/providers/s3/funcs/fileExists.js +0 -32
  327. package/server/plugins/file/providers/s3/funcs/uploadFile.js +0 -46
  328. package/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +0 -23
  329. package/server/plugins/file/providers/utils/getDataSize.js +0 -20
  330. package/server/plugins/file/providers/utils/getValidData.js +0 -32
  331. package/server/plugins/file/providers/utils/handlers/dataTypes.js +0 -8
  332. package/server/plugins/file/providers/utils/handlers/index.js +0 -53
  333. package/server/plugins/file/providers/utils/handlers/sizeHandlers.js +0 -11
  334. package/server/plugins/file/providers/utils/streamToBuffer.js +0 -8
  335. package/server/plugins/file/providers/utils/typeguards/isPath.js +0 -5
  336. package/server/plugins/file/providers/utils/typeguards/isReadableStream.js +0 -8
  337. package/server/plugins/file/uploadFile.js +0 -19
  338. package/server/plugins/file/uploadMultiPart.js +0 -131
  339. package/server/plugins/file/utils/allowedExtensions.js +0 -25
  340. package/server/plugins/file/utils/getPath.js +0 -25
  341. package/server/plugins/file/utils/isFileExists.js +0 -16
  342. package/server/plugins/grpc/file2json.js +0 -54
  343. package/server/plugins/grpc/grpc.js +0 -125
  344. package/server/plugins/grpc/office2pdf.js +0 -91
  345. package/server/plugins/grpc/utils/csv2xls.js +0 -8
  346. package/server/plugins/grpc/utils/excel2Json.js +0 -8
  347. package/server/plugins/grpc/utils/html2doc.js +0 -19
  348. package/server/plugins/grpc/utils/html2img.js +0 -18
  349. package/server/plugins/grpc/utils/html2pdf.js +0 -23
  350. package/server/plugins/grpc/utils/json2xls.js +0 -13
  351. package/server/plugins/grpc/utils/mergePdf.js +0 -20
  352. package/server/plugins/hook/funcs/addHook.js +0 -8
  353. package/server/plugins/hook/funcs/applyHook.js +0 -25
  354. package/server/plugins/hook/funcs/applyHookSync.js +0 -9
  355. package/server/plugins/hook/hookList.js +0 -1
  356. package/server/plugins/logger/createFileStream.js +0 -88
  357. package/server/plugins/logger/errorMessage.js +0 -25
  358. package/server/plugins/logger/errorStatus.js +0 -19
  359. package/server/plugins/logger/getHooks.js +0 -21
  360. package/server/plugins/logger/getLogger.js +0 -58
  361. package/server/plugins/logger/index.js +0 -33
  362. package/server/plugins/logger/labels.js +0 -11
  363. package/server/plugins/logger/serializers.js +0 -25
  364. package/server/plugins/md/funcs/formatMdoc.js +0 -40
  365. package/server/plugins/metric/index.js +0 -8
  366. package/server/plugins/metric/loggerSystem.js +0 -131
  367. package/server/plugins/metric/systemMetricsFifthly.js +0 -24
  368. package/server/plugins/migration/exec.migrations.js +0 -63
  369. package/server/plugins/migration/exec.sql.js +0 -67
  370. package/server/plugins/pg/funcs/autoIndex.js +0 -103
  371. package/server/plugins/pg/funcs/getMeta.js +0 -49
  372. package/server/plugins/pg/funcs/getPG.js +0 -42
  373. package/server/plugins/pg/funcs/getPGAsync.js +0 -62
  374. package/server/plugins/pg/funcs/init.js +0 -117
  375. package/server/plugins/pg/index.js +0 -54
  376. package/server/plugins/pg/pgClients.js +0 -22
  377. package/server/plugins/policy/funcs/checkPolicy.js +0 -127
  378. package/server/plugins/policy/funcs/checkXSS.js +0 -37
  379. package/server/plugins/policy/index.js +0 -11
  380. package/server/plugins/policy/sqlInjection.js +0 -34
  381. package/server/plugins/policy/xssInjection.js +0 -73
  382. package/server/plugins/redis/funcs/getRedis.js +0 -25
  383. package/server/plugins/redis/index.js +0 -17
  384. package/server/plugins/sqlite/funcs/getSqlite.js +0 -39
  385. package/server/plugins/sqlite/funcs/init.js +0 -53
  386. package/server/plugins/sqlite/index.js +0 -11
  387. package/server/plugins/sqlite/sqliteClients.js +0 -26
  388. package/server/plugins/table/funcs/addMenu.js +0 -16
  389. package/server/plugins/table/funcs/addTemplateDir.js +0 -19
  390. package/server/plugins/table/funcs/customTokens.js +0 -1
  391. package/server/plugins/table/funcs/getData.js +0 -14
  392. package/server/plugins/table/funcs/getFilter.js +0 -14
  393. package/server/plugins/table/funcs/getFilterSQL/index.js +0 -163
  394. package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +0 -136
  395. package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +0 -13
  396. package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +0 -75
  397. package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +0 -12
  398. package/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +0 -156
  399. package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +0 -34
  400. package/server/plugins/table/funcs/getSelect.js +0 -31
  401. package/server/plugins/table/funcs/getSelectMeta.js +0 -74
  402. package/server/plugins/table/funcs/getTemplate.js +0 -88
  403. package/server/plugins/table/funcs/getTemplatePath.js +0 -60
  404. package/server/plugins/table/funcs/getTemplateSync.js +0 -87
  405. package/server/plugins/table/funcs/getTemplates.js +0 -19
  406. package/server/plugins/table/funcs/gisIRColumn.js +0 -82
  407. package/server/plugins/table/funcs/loadTemplate.js +0 -1
  408. package/server/plugins/table/funcs/loadTemplatePath.js +0 -1
  409. package/server/plugins/table/funcs/menuDirs.js +0 -1
  410. package/server/plugins/table/funcs/metaFormat/getSelectVal.js +0 -61
  411. package/server/plugins/table/funcs/metaFormat/index.js +0 -49
  412. package/server/plugins/table/funcs/userTemplateDir.js +0 -1
  413. package/server/plugins/table/funcs/userTokens.js +0 -1
  414. package/server/plugins/table/index.js +0 -13
  415. package/server/plugins/util/funcs/eventStream.js +0 -29
  416. package/server/plugins/util/index.js +0 -7
  417. package/server/routes/access/controllers/access.interface.js +0 -37
  418. package/server/routes/cron/controllers/cronApi.js +0 -22
  419. package/server/routes/cron/index.js +0 -19
  420. package/server/routes/crud/controllers/deleteCrud.js +0 -84
  421. package/server/routes/crud/controllers/insert.js +0 -103
  422. package/server/routes/crud/controllers/table.js +0 -116
  423. package/server/routes/crud/controllers/update.js +0 -108
  424. package/server/routes/crud/index.js +0 -26
  425. package/server/routes/dblist/controllers/readItems.js +0 -28
  426. package/server/routes/dblist/controllers/setItem.js +0 -25
  427. package/server/routes/dblist/index.mjs +0 -19
  428. package/server/routes/dblist/utils/formatData.js +0 -7
  429. package/server/routes/file/controllers/delete.js +0 -108
  430. package/server/routes/file/controllers/download.js +0 -66
  431. package/server/routes/file/controllers/export.js +0 -290
  432. package/server/routes/file/controllers/files.js +0 -72
  433. package/server/routes/file/controllers/resize.js +0 -96
  434. package/server/routes/file/controllers/resizeAll.js +0 -165
  435. package/server/routes/file/controllers/upload.js +0 -55
  436. package/server/routes/file/controllers/uploadImage.js +0 -47
  437. package/server/routes/file/controllers/utils/formatResult.js +0 -17
  438. package/server/routes/file/controllers/utils/jsonToCsv.js +0 -36
  439. package/server/routes/file/controllers/utils/jsonToXls.js +0 -42
  440. package/server/routes/file/index.mjs +0 -26
  441. package/server/routes/file/schema.js +0 -16
  442. package/server/routes/grpc/controllers/file2geojson.js +0 -60
  443. package/server/routes/grpc/controllers/filePreview.js +0 -89
  444. package/server/routes/grpc/index.mjs +0 -12
  445. package/server/routes/logger/controllers/logger.file.js +0 -97
  446. package/server/routes/logger/controllers/logger.test.api.js +0 -48
  447. package/server/routes/logger/controllers/utils/checkUserAccess.js +0 -24
  448. package/server/routes/logger/controllers/utils/getRootDir.js +0 -27
  449. package/server/routes/logger/index.js +0 -22
  450. package/server/routes/menu/controllers/getMenu.js +0 -98
  451. package/server/routes/menu/controllers/interfaces.js +0 -21
  452. package/server/routes/menu/index.mjs +0 -8
  453. package/server/routes/menu/schema.js +0 -0
  454. package/server/routes/properties/controllers/properties.get.js +0 -33
  455. package/server/routes/properties/controllers/properties.post.js +0 -76
  456. package/server/routes/properties/index.js +0 -25
  457. package/server/routes/table/controllers/card.js +0 -77
  458. package/server/routes/table/controllers/cardData.js +0 -155
  459. package/server/routes/table/controllers/cardTabData.js +0 -57
  460. package/server/routes/table/controllers/dataInfo.js +0 -56
  461. package/server/routes/table/controllers/filter.js +0 -154
  462. package/server/routes/table/controllers/form.js +0 -42
  463. package/server/routes/table/controllers/search.js +0 -74
  464. package/server/routes/table/controllers/suggest.js +0 -246
  465. package/server/routes/table/controllers/tableData.js +0 -62
  466. package/server/routes/table/controllers/tableInfo.js +0 -110
  467. package/server/routes/table/controllers/tokenInfo.js +0 -12
  468. package/server/routes/table/controllers/utils/conditions.js +0 -21
  469. package/server/routes/table/controllers/utils/formatSchema.js +0 -23
  470. package/server/routes/table/controllers/utils/locales.js +0 -1
  471. package/server/routes/table/functions/getData.js +0 -436
  472. package/server/routes/table/index.js +0 -57
  473. package/server/routes/table/schema.js +0 -127
  474. package/server/routes/templates/controllers/getTemplate.js +0 -51
  475. package/server/routes/templates/index.mjs +0 -10
  476. package/server/routes/util/controllers/code.generator.js +0 -94
  477. package/server/routes/util/controllers/next.id.js +0 -4
  478. package/server/routes/util/controllers/status.monitor.js +0 -8
  479. package/server/routes/util/controllers/user.tokens.js +0 -45
  480. package/server/routes/util/index.js +0 -14
  481. package/server/routes/widget/controllers/file.edit.js +0 -55
  482. package/server/routes/widget/controllers/widget.del.js +0 -99
  483. package/server/routes/widget/controllers/widget.get.js +0 -137
  484. package/server/routes/widget/controllers/widget.set.js +0 -108
  485. package/server/routes/widget/hook/onWidgetSet.js +0 -13
  486. package/server/routes/widget/index.mjs +0 -38
  487. package/utils.js +0 -112
  488. /package/{server → dist/server}/plugins/grpc/utils/convertp.proto +0 -0
  489. /package/{server → dist/server}/plugins/grpc/utils/office2pdf.proto +0 -0
@@ -1,117 +0,0 @@
1
- /* eslint-disable no-console */
2
- import { createHash } from 'node:crypto';
3
-
4
- import config from '../../../../config.js';
5
- import getRedis from '../../redis/funcs/getRedis.js';
6
- import logger from '../../logger/getLogger.js';
7
-
8
- const rclient = getRedis({ db: 0 });
9
-
10
- async function init(client) {
11
- if (!client?.options?.database) {
12
- return;
13
- }
14
- const textQuery = `select
15
- (select json_object_agg(conrelid::regclass ,(SELECT attname FROM pg_attribute WHERE attrelid = c.conrelid and attnum = c.conkey[1]))
16
- from pg_constraint c where contype='p' and connamespace::regnamespace::text not in ('sde')) as pk,
17
- (SELECT json_object_agg(t.oid::text,pg_catalog.format_type(t.oid, NULL)) FROM pg_catalog.pg_type t) as "pgType"`;
18
- const { pgType, pk } = await client.query(textQuery).then((d) => d.rows[0]);
19
-
20
- const tlist = await client.query(`select array_agg((select nspname from pg_namespace where oid=relnamespace)||'.'||relname) tlist
21
- from pg_class where relkind in ('r','v')`).then((d) => d.rows[0].tlist);
22
-
23
- const { rows = [] } = await client.query(`select (select nspname from pg_namespace where oid=relnamespace)||'.'||relname as tname, relkind
24
- from pg_class where relkind in ('r','v')`);
25
- const relkinds = rows.reduce((acc, curr) => Object.assign(acc, { [curr.tname]: curr.relkind }), {});
26
-
27
- async function query(q, args = [], isstream = false) {
28
- try {
29
- if (isstream) {
30
- await client.query('set statement_timeout to 100000000');
31
- }
32
- const data = await client.query(q, args);
33
- await client.query('set statement_timeout to 0');
34
- return data;
35
- }
36
- catch (err) {
37
- await client.query('set statement_timeout to 0');
38
- if (err.message === 'canceling statement due to statement timeout') {
39
- logger.file('timeout/query', { q, stack: err.stack });
40
- return { rows: [], timeout: true };
41
- }
42
- throw new Error(err);
43
- }
44
- }
45
-
46
- async function querySafe(q, param = {}) {
47
- const args = Array.isArray(param) ? param : (param.args || []);
48
- const data = await query(q, args, true);
49
- return data;
50
- }
51
-
52
- async function one(q, param = {}) {
53
- const data = await query(q, Array.isArray(param) ? param : param.args || []);
54
- const result = ((Array.isArray(data) ? data.pop() : data)?.rows || [])[0] || {};
55
- return result;
56
- }
57
-
58
- async function queryNotice(q, args = [], cb = () => { }) {
59
- const clientCb = await client.connect();
60
- clientCb.on('notice', (e) => {
61
- cb(e.message);
62
- });
63
- let result;
64
- try {
65
- result = await clientCb.query(q, args);
66
- clientCb.end();
67
- }
68
- catch (err) {
69
- clientCb.end();
70
- cb(err.toString(), 1);
71
- throw err;
72
- }
73
- return result;
74
- }
75
-
76
- async function queryCache(q, param = {}) {
77
- const { table, args = [], time = 15 } = param;
78
- const seconds = typeof time !== 'number' || time < 0 ? 0 : time * 60;
79
-
80
- if (seconds === 0 || config.disableCache) {
81
- const data = await query(q, args || []);
82
- return data;
83
- }
84
-
85
- // CRUD table state
86
- const keyCacheTable = `pg:${table}:crud`;
87
- const crudInc = table && config.redis ? (await rclient.get(keyCacheTable) || 0) : 0;
88
-
89
- //
90
- const hash = createHash('sha1').update([q, JSON.stringify(args)].join()).digest('base64');
91
- const keyCache = `pg:${hash}:${crudInc}`;
92
-
93
- const cacheData = config.redis ? await rclient.get(keyCache) : null;
94
-
95
- if (cacheData && !config.local) {
96
- // console.log('from cache', table, query);
97
- return JSON.parse(cacheData);
98
- }
99
-
100
- const data = await query(q, args || []);
101
-
102
- if (seconds > 0 && config.redis) {
103
- rclient.set(keyCache, JSON.stringify(data), 'EX', seconds);
104
- }
105
-
106
- // console.log('no cache', table, crudInc, query);
107
- return data;
108
- }
109
-
110
- Object.assign(client, {
111
- one, pgType, pk, tlist, relkinds, queryCache, queryNotice, querySafe,
112
- });
113
- console.log('db connected', client.options?.database);
114
- }
115
-
116
- // export default client;
117
- export default init;
@@ -1,54 +0,0 @@
1
- import pgClients from './pgClients.js';
2
- import getPGAsync from './funcs/getPGAsync.js';
3
-
4
- import logger from '../logger/getLogger.js';
5
-
6
- function close() {
7
- Object.keys(pgClients).forEach((el) => {
8
- pgClients[el].end();
9
- });
10
- }
11
-
12
- async function getHeadersPG(req, config) {
13
- if (!req.headers?.token) return null;
14
- const validToken = (req.ip === '193.239.152.181'
15
- || req.ip === '127.0.0.1'
16
- || req.ip.startsWith('192.168.')
17
- || config.debug
18
- )
19
- && req.headers?.token
20
- && config.auth?.tokens?.includes?.(req.headers.token);
21
-
22
- if (validToken && req.headers?.db) {
23
- const pg = pgClients[req.headers.db]
24
- || await getPGAsync(req.headers.db);
25
- return pg;
26
- }
27
- return null;
28
- }
29
-
30
- async function plugin(fastify, config) {
31
- const client = await getPGAsync({ ...config.pg || {}, name: 'client' });
32
-
33
- fastify.addHook('onRequest', async (req) => {
34
- const headersPG = await getHeadersPG(req, config);
35
- req.pg = headersPG || req.pg || client || pgClients.client;
36
- if (headersPG) {
37
- req.user = { uid: req.headers?.uid };
38
- req.folder = config.folder;
39
- req.root = config.root;
40
- }
41
- });
42
-
43
- fastify.addHook('onError', async (req, reply, err) => {
44
- if (err.message === 'canceling statement due to statement timeout') {
45
- logger.file('timeout/request', {
46
- method: req.method, url: req.url, referer: req.headers?.referer, stack: err.stack,
47
- });
48
- }
49
- });
50
-
51
- fastify.addHook('onClose', close);
52
- }
53
-
54
- export default plugin;
@@ -1,22 +0,0 @@
1
- import pg from 'pg';
2
-
3
- import config from '../../../config.js';
4
- import init from './funcs/init.js';
5
-
6
- const pgClients = {};
7
- if (config.pg) {
8
- const client = new pg.Pool({
9
- host: config.pg?.host || '127.0.0.1',
10
- port: config.pg?.port || 5432,
11
- database: config.pg?.database || 'postgres',
12
- user: config.pg?.user || 'postgres',
13
- password: config.pg?.password || 'postgres',
14
- statement_timeout: config.pg?.statement_timeout || 10000,
15
- });
16
- client.init = async () => {
17
- await init(client);
18
- };
19
- client.init();
20
- pgClients.client = client;
21
- }
22
- export default pgClients;
@@ -1,127 +0,0 @@
1
- import { config, logger } from '../../../../utils.js';
2
- import block from '../sqlInjection.js';
3
-
4
- const { skipCheckPolicyRoutes = [] } = config;
5
-
6
- const skipCheckPolicy = (path) => skipCheckPolicyRoutes.find(el => path.includes(el));
7
- /**
8
- * Middleware func
9
- *
10
- * @type function
11
- * @alias checkPolicy
12
- * @summary Функція дозволяє налаштувати доступ до сайту або API для адмін. та публічної частини веб-ресурсу
13
- * @param {String} path - назва апі
14
- * @returns {object|null} Returns object
15
- */
16
-
17
- export default function checkPolicy(req, reply) {
18
- const {
19
- originalUrl: path, hostname, query, params, headers, method, session, routeOptions, unittest,
20
- } = req;
21
-
22
- if (config.local || unittest || config.env === 'test') { return null; }
23
-
24
- const body = JSON.stringify(req?.body || {}).substring(30);
25
-
26
- const isAdmin = process.env.NODE_ENV === 'admin' || hostname.split(':').shift() === config.adminDomain || config.admin || hostname.startsWith('admin');
27
- const user = req.user || session?.passport?.user;
28
-
29
- const isUser = config?.debug || !!user;
30
-
31
- const isServer = process.argv[2];
32
- const { policy = [] } = routeOptions?.config || {};
33
-
34
- /*= == 0.Check superadmin access === */
35
- if (policy.includes('admin') && user?.user_type !== 'admin' && !config.auth?.disable) {
36
- logger.file('policy/access', {
37
- path, method, params, query, body, message: 'access restricted: not admin', uid: user?.uid,
38
- });
39
- return reply.status(403).send('access restricted: 0');
40
- }
41
-
42
- /*= == 1.File injection === */
43
- if (JSON.stringify(params || {})?.includes('../') || JSON.stringify(query || {})?.includes('../') || path?.includes('../')) {
44
- logger.file('injection/file', {
45
- path, method, params, query, body, message: 'access restricted: 1', uid: user?.uid,
46
- });
47
- return reply.status(403).send('access restricted: 1');
48
- }
49
-
50
- /* === 1.1 File === */
51
- const allowExtPublic = ['.png', '.jpg', '.svg'];
52
- const ext = path.toLowerCase().substr(-4);
53
- if (path.includes('files/') && allowExtPublic.includes(ext)) return null;
54
-
55
- /* === 2.SQL Injection policy: no-sql === */
56
- if (!policy.includes('no-sql')) {
57
- // skip polyline param - data filter (geometry bounds)
58
- const stopWords = block.filter((el) => path.replace(query.polyline, '').includes(el));
59
- if (stopWords?.length) {
60
- logger.file('injection/sql', {
61
- path, method, params, query, body, stopWords, message: 'access restricted: 2', uid: user?.uid,
62
- });
63
- return reply.status(403).send('access restricted: 2');
64
- }
65
- }
66
- /* policy: skip if not API */
67
- const isApi = ['/files/', '/api/', '/api-user/', '/logger', '/file/'].filter((el) => path.includes(el)).length;
68
- if (!isApi) {
69
- return null;
70
- }
71
-
72
- const validToken = (req.ip === '193.239.152.181' || req.ip === '127.0.0.1' || req.ip?.startsWith?.('192.168.') || config.debug)
73
- && req.headers?.token
74
- && config.auth?.tokens?.includes?.(headers.token);
75
-
76
- if (validToken && !req?.user?.uid) {
77
- req.user = { uid: req.headers?.uid, user_type: (req.ip === '193.239.152.181' || config.debug) ? 'admin' : 'regular' };
78
- }
79
-
80
- /* === policy: public === */
81
- if (policy.includes('public') || skipCheckPolicy(path) || !config.pg || config.auth?.disable || config.local || config.debug) {
82
- return null;
83
- }
84
-
85
- /* === 0. policy: unauthorized access from admin URL === */
86
- if (!validToken && !user?.uid && isAdmin && !policy.includes('public')) {
87
- logger.file('policy/unauthorized', {
88
- path, method, params, query, body, token: headers?.token, userId: headers?.uid, ip: req.ip, headers, message: 'unauthorized',
89
- });
90
- return reply.status(401).send('unauthorized');
91
- }
92
-
93
- /* === 3. policy: user === */
94
- if (!validToken && !user && policy.includes('user') && !skipCheckPolicy(path)) {
95
- logger.file('policy/user', {
96
- path, method, params, query, body, message: 'access restricted: 3',
97
- });
98
- return reply.status(403).send('access restricted: 3');
99
- }
100
-
101
- /* === 4. policy: referer === */
102
- if (!validToken && !headers?.referer?.includes?.(hostname) && policy.includes('referer')) {
103
- logger.file('policy/referer', {
104
- path, method, params, query, body, message: 'access restricted: 4', uid: user?.uid,
105
- });
106
- return reply.status(403).send('access restricted: 4');
107
- }
108
-
109
- /* === 5. policy: site auth === */
110
- if (!validToken && !policy.includes('site') && !isAdmin) {
111
- logger.file('policy/site', {
112
- path, method, params, query, body, message: 'access restricted: 5', uid: user?.uid,
113
- });
114
- return reply.status(403).send('access restricted: 5');
115
- }
116
-
117
- /* === 6. base policy: block non-public api w/ out authorization === */
118
- if (!validToken && isAdmin && !isUser && isServer) {
119
- logger.file('policy/api', {
120
- path, method, params, query, body, message: 'access restricted: 6', uid: user?.uid,
121
- });
122
- return reply.status(403).send('access restricted: 6');
123
- }
124
-
125
- // console.log(headers);
126
- return null;
127
- }
@@ -1,37 +0,0 @@
1
- import config from '../../../../config.js';
2
- import xssInjection from '../xssInjection.js';
3
-
4
- function checkXSS({ body, schema = {} }) {
5
- const data = typeof body === 'string' ? body : JSON.stringify(body);
6
- const stopWords = xssInjection.filter((el) => data?.toLowerCase?.()?.includes?.(el));
7
-
8
- // check sql injection
9
- const stopSpecialSymbols = data.match(/\p{S}OR\p{S}|\p{P}OR\p{P}| OR |\+OR\+/gi);
10
- if (stopSpecialSymbols?.length) stopSpecialSymbols?.forEach((el) => stopWords.push(el));
11
-
12
- // escape arrows on non-rich text editor inputs
13
- const skipScreening = config.skipScreening || ['Summernote', 'Tiny', 'Ace', 'Texteditor'];
14
- Object.keys(body)
15
- .filter((key) => ['<', '>'].find((el) => body[key]?.includes?.(el))
16
- && !skipScreening.includes(schema?.[key]?.type))
17
- ?.forEach((key) => {
18
- Object.assign(body, { [key]: body[key].replace(/</g, '&lt;').replace(/>/g, '&gt;') });
19
- });
20
-
21
- if (!stopWords.length) return { body };
22
-
23
- const disabledCheckFields = Object.keys(schema || {})?.filter((el) => schema?.[el]?.xssCheck === false); // exclude specific columns
24
-
25
- const field = Object.keys(body)
26
- ?.find((key) => body[key]?.toLowerCase
27
- && !disabledCheckFields.includes(key)
28
- && (skipScreening.includes(schema?.[key]?.type) ? stopWords.find(el => !['href=', 'src='].includes(el)) : true)
29
- && body[key].toLowerCase().includes(stopWords[0]));
30
- if (field) {
31
- console.error(stopWords[0], field, body[field]);
32
- return { error: `rule: ${stopWords[0]} | attr: ${field} | val: ${body[field]}`, body };
33
- }
34
- return { body };
35
- }
36
-
37
- export default checkXSS;
@@ -1,11 +0,0 @@
1
- import checkPolicy from './funcs/checkPolicy.js';
2
-
3
- async function plugin(fastify) {
4
- fastify.addHook('preParsing', async (request, reply) => {
5
- const resp = checkPolicy(request, reply);
6
- if (resp) { return resp; }
7
- return null;
8
- });
9
- }
10
-
11
- export default plugin;
@@ -1,34 +0,0 @@
1
- /* eslint-disable no-script-url */
2
- const sqlInjection = [
3
- '()',
4
- '^',
5
- '*',
6
- 'like ',
7
- '@variable',
8
- '@@variable',
9
- 'group by ',
10
- 'union ',
11
- 'select ',
12
- 'having ',
13
- 'as injectx',
14
- 'where ',
15
- 'rlike ',
16
- 'if(',
17
- 'sleep(',
18
- 'waitfor delay',
19
- 'benchmark(',
20
- 'pg_sleep(',
21
- "'\\\"",
22
- 'randomblob(',
23
- 'order by ',
24
- 'union all ',
25
- '+or',
26
- 'or ',
27
- 'and ',
28
- "'' ",
29
- '""" ',
30
- '<script',
31
- 'javascript:',
32
- ];
33
-
34
- export default sqlInjection;
@@ -1,73 +0,0 @@
1
- /* eslint-disable no-script-url */
2
- const xssInjection = [
3
- 'onkeypress=',
4
- 'onkeyup=',
5
- 'ondblclick=',
6
- 'onerror=',
7
- 'onmouseover=',
8
- '<meta',
9
- '<script',
10
- 'vascript:',
11
- 'onkeydown=',
12
- 'onmousedown=',
13
- 'onmouseenter=',
14
- 'onmouseleave=',
15
- 'onmousemove=',
16
- 'onmouseout=',
17
- 'onmouseup=',
18
- 'onmousewheel=',
19
- 'onpaste=',
20
- 'onscroll=',
21
- 'onwheel=',
22
- 'javascript:',
23
- '\\x',
24
- 'eval(',
25
- 'onmouseover=',
26
- 'action=',
27
- 'xlink:',
28
- 'allowscriptaccess',
29
- 'href=',
30
- 'behavior:',
31
- 'onreadystatechange=',
32
- 'onstart=',
33
- 'offline=',
34
- 'onabort=',
35
- 'onafterprint=',
36
- 'onbeforeonload=',
37
- 'onbeforeprint=',
38
- 'onblur=',
39
- 'oncanplay=',
40
- 'oncanplaythrough=',
41
- 'onchange=',
42
- 'onclick=',
43
- 'oncontextmenu=',
44
- 'ondblclick=',
45
- 'ondrag=',
46
- 'ondragend=',
47
- 'ondragenter=',
48
- 'ondragleave=',
49
- 'ondragover=',
50
- 'ondragstart=',
51
- 'ondrop=',
52
- 'ondurationchange=',
53
- 'onemptied=',
54
- 'onended=',
55
- 'onerror=',
56
- 'onfocus=',
57
- 'onformchange=',
58
- 'onforminput=',
59
- 'onhaschange=',
60
- 'oninput=',
61
- 'oninvalid=',
62
- 'onkeydown=',
63
- 'onkeypress=',
64
- 'onkeyup=',
65
- 'onload=',
66
- 'onloadeddata=',
67
- 'onloadedmetadata=',
68
- 'onloadstart=',
69
- 'alert(',
70
- 'script:',
71
- ];
72
-
73
- export default xssInjection;
@@ -1,25 +0,0 @@
1
- /* eslint-disable no-console */
2
- import Redis from 'ioredis';
3
-
4
- import config from '../../../../config.js';
5
- import redisClients from './redisClients.js';
6
-
7
- function getRedis({ db } = { db: 0 }) {
8
- if (!config.redis) return null;
9
- if (redisClients[db]) return redisClients[db];
10
-
11
- const redisConfig = {
12
- db,
13
- keyPrefix: `${config.db}:`,
14
- host: config.redis?.host || '127.0.0.1',
15
- port: config.redis?.port || 6379, // Redis port
16
- family: 4, // 4 (IPv4) or 6 (IPv6)
17
- closeClient: true,
18
- };
19
-
20
- redisClients[db] = new Redis(redisConfig);
21
- console.log('redis connected', db);
22
- return redisClients[db];
23
- }
24
-
25
- export default getRedis;
@@ -1,17 +0,0 @@
1
- // import redis from './client.js';
2
- import redisClients from './funcs/redisClients.js';
3
-
4
- function close() {
5
- // redis.quit();
6
- Object.keys(redisClients).forEach((key) => redisClients[key].quit());
7
- }
8
-
9
- async function plugin(fastify) {
10
- // const client = getRedis({ db: 0 });
11
- // client.getJSON = client.get;
12
- // fastify.decorate('rclient', client);
13
- // fastify.decorate('getRedis', getRedis);
14
- fastify.addHook('onClose', close);
15
- }
16
-
17
- export default plugin;
@@ -1,39 +0,0 @@
1
- import path from 'node:path';
2
-
3
- const { name: execName } = path.parse(process.argv0);
4
-
5
- // import Database from 'better-sqlite3'; // error with bun
6
- const { default: Database } = execName === 'bun'
7
- ? { default: (await import('bun:sqlite')).Database }
8
- : await import('better-sqlite3');
9
-
10
- import config from '../../../../config.js';
11
- import sqliteClients from '../sqliteClients.js';
12
- import init from './init.js';
13
-
14
- function getSqliteAsync({
15
- name,
16
- readonly = false,
17
- fileMustExist = false,
18
- statement_timeout: timeout = 10000,
19
- } = {}) {
20
- if (!config.sqlite) return null;
21
-
22
- if (sqliteClients.client?.tlist) {
23
- return sqliteClients.client;
24
- }
25
-
26
- const dbConfig = {
27
- readonly,
28
- fileMustExist,
29
- timeout,
30
- verbose: config.trace ? console.log : undefined,
31
- };
32
-
33
- sqliteClients.client = new Database(name || ':memory:', execName === 'bun' ? undefined : dbConfig);
34
- init(sqliteClients.client);
35
-
36
- return sqliteClients.client;
37
- }
38
-
39
- export default getSqliteAsync;
@@ -1,53 +0,0 @@
1
- /* eslint-disable no-console */
2
-
3
- function init(client) {
4
- if (!client) { return; }
5
-
6
- const rows = client.prepare(`WITH tables AS (
7
- SELECT name AS table_name
8
- FROM sqlite_master
9
- WHERE type = 'table' AND name NOT LIKE 'sqlite_%'
10
- ),
11
- pk_columns AS (
12
- SELECT
13
- m.name AS table_name,
14
- ti.name AS column_name,
15
- ti.pk
16
- FROM sqlite_master m
17
- JOIN pragma_table_info(m.name) AS ti
18
- WHERE ti.pk = 1
19
- )
20
- SELECT table_name, column_name
21
- FROM pk_columns
22
- WHERE table_name IN (
23
- SELECT table_name
24
- FROM pk_columns
25
- GROUP BY table_name
26
- HAVING COUNT(*) = 1
27
- )
28
- ORDER BY table_name;`).all();
29
-
30
- const pk = Object.fromEntries(
31
- rows.map(row => [row.table_name, row.column_name]),
32
- );
33
-
34
- const tlist = client.prepare('SELECT name FROM sqlite_master WHERE type=\'table\' AND name NOT LIKE \'sqlite_%\';').all().reduce((acc, curr) => {
35
- acc.push(curr.name);
36
- return acc;
37
- }, []);
38
-
39
- async function query(q, args = []) {
40
- const data = client.prepare(q.replace(/\$\d+/g, '?')).all(...args);
41
- return Promise.resolve({ rows: data, rowCount: data.length });
42
- }
43
-
44
- Object.assign(client, {
45
- query,
46
- pk,
47
- tlist,
48
- });
49
-
50
- console.log('sqlite db connected', client.name || ':memory:');
51
- }
52
-
53
- export default init;
@@ -1,11 +0,0 @@
1
- import fp from 'fastify-plugin';
2
-
3
- import sqliteClients from './sqliteClients.js';
4
-
5
- async function dbPlugin(app) {
6
- app.addHook('onClose', async () => {
7
- Object.keys(sqliteClients).forEach(key => sqliteClients[key].close());
8
- });
9
- }
10
-
11
- export default fp(dbPlugin);
@@ -1,26 +0,0 @@
1
- import path from 'node:path';
2
-
3
- const { name: execName } = path.parse(process.argv0);
4
-
5
- // import Database from 'better-sqlite3';
6
- const { default: Database } = execName === 'bun'
7
- ? { default: (await import('bun:sqlite')).Database }
8
- : await import('better-sqlite3');
9
-
10
- import config from '../../../config.js';
11
- import init from './funcs/init.js';
12
-
13
- const sqliteClients = {};
14
-
15
- if (config.sqlite) {
16
- const client = new Database(config.sqlite?.name || ':memory:', execName === 'bun' ? undefined : {
17
- readonly: config.sqlite?.readonly || false,
18
- fileMustExist: config.sqlite?.fileMustExist || false,
19
- timeout: config.sqlite?.statement_timeout || 10000,
20
- verbose: config.trace ? console.log : undefined,
21
- });
22
- client.init = () => init(client);
23
- client.init();
24
- sqliteClients.client = client;
25
- }
26
- export default sqliteClients;
@@ -1,16 +0,0 @@
1
- import { basename } from 'node:path';
2
- import { existsSync } from 'node:fs';
3
-
4
- import menuDirs from './menuDirs.js';
5
-
6
- export default function addMenu(filepath) {
7
- if (basename(filepath) !== 'menu.json') {
8
- throw new Error('addMenu: filepath must be a menu.json file');
9
- }
10
-
11
- if (filepath && !menuDirs.includes(filepath) && existsSync(filepath)) {
12
- menuDirs.push(filepath);
13
- }
14
-
15
- return menuDirs;
16
- }