@opengis/fastify-table 1.4.88 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/dist/config.js +33 -0
  2. package/dist/dblist.js +5 -0
  3. package/dist/index.js +170 -0
  4. package/dist/redactionList.js +6 -0
  5. package/dist/server/helpers/core/badge.js +16 -0
  6. package/dist/server/helpers/core/buttonFilePreview.js +12 -0
  7. package/dist/server/helpers/core/buttonHelper.js +20 -0
  8. package/{server → dist/server}/helpers/core/token.js +16 -18
  9. package/dist/server/helpers/format/formatAuto.js +14 -0
  10. package/dist/server/helpers/format/formatDate.js +231 -0
  11. package/{server → dist/server}/helpers/format/formatDigit.js +21 -21
  12. package/dist/server/helpers/format/formatNum.js +331 -0
  13. package/{server → dist/server}/helpers/format/formatNumber.js +50 -55
  14. package/dist/server/helpers/format/formatRelative.js +180 -0
  15. package/{server → dist/server}/helpers/format/formatUnit.js +41 -40
  16. package/{server → dist/server}/helpers/format/num_format.js +40 -44
  17. package/{server → dist/server}/helpers/format/set.js +26 -27
  18. package/{server → dist/server}/helpers/funcs/_math.js +49 -50
  19. package/{server → dist/server}/helpers/funcs/contentList.js +52 -57
  20. package/{server → dist/server}/helpers/funcs/empty.js +21 -21
  21. package/dist/server/helpers/funcs/ifCond.js +109 -0
  22. package/dist/server/helpers/funcs/ifCondAnd.js +109 -0
  23. package/dist/server/helpers/funcs/ifCondOr.js +110 -0
  24. package/{server → dist/server}/helpers/funcs/inc.js +19 -20
  25. package/{server → dist/server}/helpers/funcs/json.js +3 -3
  26. package/dist/server/helpers/funcs/qrcode.js +65 -0
  27. package/{server → dist/server}/helpers/funcs/round.js +27 -29
  28. package/dist/server/helpers/funcs/select.js +39 -0
  29. package/dist/server/helpers/index.js +125 -0
  30. package/dist/server/helpers/list/buttonHelper.js +20 -0
  31. package/{server → dist/server}/helpers/list/descriptionList.js +39 -45
  32. package/dist/server/helpers/list/tableList.js +104 -0
  33. package/{server → dist/server}/helpers/list/utils/button.js +3 -3
  34. package/{server → dist/server}/helpers/list/utils/buttonDel.js +8 -9
  35. package/{server → dist/server}/helpers/list/utils/buttonEdit.js +8 -9
  36. package/{server → dist/server}/helpers/string/coalesce.js +33 -39
  37. package/{server → dist/server}/helpers/string/concat.js +25 -28
  38. package/{server → dist/server}/helpers/string/split.js +19 -20
  39. package/{server → dist/server}/helpers/string/str_replace.js +57 -62
  40. package/{server → dist/server}/helpers/string/substr.js +28 -32
  41. package/{server → dist/server}/helpers/string/translit.js +20 -23
  42. package/dist/server/helpers/string/utils/alphabet.js +76 -0
  43. package/{server → dist/server}/helpers/utils/button.js +3 -3
  44. package/{server → dist/server}/helpers/utils/buttonAdd.js +4 -4
  45. package/{server → dist/server}/helpers/utils/buttonDel.js +11 -15
  46. package/{server → dist/server}/helpers/utils/buttonDownload.js +3 -3
  47. package/dist/server/helpers/utils/buttonEdit.js +14 -0
  48. package/{server → dist/server}/helpers/utils/buttonPreview.js +3 -3
  49. package/{server → dist/server}/helpers/utils/mdToHTML.js +16 -17
  50. package/{server → dist/server}/helpers/utils/paddingNumber.js +5 -5
  51. package/dist/server/plugins/access/funcs/getAdminAccess.js +11 -0
  52. package/dist/server/plugins/cron/cronList.js +2 -0
  53. package/dist/server/plugins/cron/funcs/addCron.js +41 -0
  54. package/{server → dist/server}/plugins/cron/funcs/interval2ms.js +36 -40
  55. package/dist/server/plugins/cron/funcs/runCron.js +20 -0
  56. package/{server → dist/server}/plugins/cron/funcs/verifyUnique.js +19 -23
  57. package/dist/server/plugins/cron/index.js +75 -0
  58. package/dist/server/plugins/crud/funcs/dataDelete.js +87 -0
  59. package/dist/server/plugins/crud/funcs/dataInsert.js +134 -0
  60. package/dist/server/plugins/crud/funcs/dataUpdate.js +198 -0
  61. package/dist/server/plugins/crud/funcs/getAccess.js +82 -0
  62. package/dist/server/plugins/crud/funcs/getOpt.js +13 -0
  63. package/dist/server/plugins/crud/funcs/getToken.js +24 -0
  64. package/dist/server/plugins/crud/funcs/isFileExists.js +11 -0
  65. package/dist/server/plugins/crud/funcs/setOpt.js +19 -0
  66. package/dist/server/plugins/crud/funcs/setToken.js +41 -0
  67. package/dist/server/plugins/crud/funcs/utils/getFolder.js +13 -0
  68. package/dist/server/plugins/crud/funcs/utils/getInsertQuery.js +54 -0
  69. package/dist/server/plugins/crud/funcs/utils/logChanges.js +144 -0
  70. package/{server → dist/server}/plugins/crud/funcs/validateData.js +91 -83
  71. package/dist/server/plugins/extra/extraData.js +81 -0
  72. package/dist/server/plugins/extra/extraDataGet.js +52 -0
  73. package/dist/server/plugins/file/downloadFile.js +15 -0
  74. package/{server → dist/server}/plugins/file/getExport.js +18 -38
  75. package/dist/server/plugins/file/isFileExists.js +13 -0
  76. package/dist/server/plugins/file/providers/fs.js +86 -0
  77. package/dist/server/plugins/file/providers/index.js +28 -0
  78. package/dist/server/plugins/file/providers/mime/index.js +7 -0
  79. package/dist/server/plugins/file/providers/mime/mimes.js +1179 -0
  80. package/dist/server/plugins/file/providers/s3/client.js +26 -0
  81. package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +42 -0
  82. package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +24 -0
  83. package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +35 -0
  84. package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +18 -0
  85. package/{server → dist/server}/plugins/file/providers/s3/index.js +11 -12
  86. package/dist/server/plugins/file/providers/utils/getDataSize.js +19 -0
  87. package/dist/server/plugins/file/providers/utils/getValidData.js +30 -0
  88. package/dist/server/plugins/file/providers/utils/handlers/dataTypes.js +7 -0
  89. package/dist/server/plugins/file/providers/utils/handlers/index.js +50 -0
  90. package/dist/server/plugins/file/providers/utils/handlers/sizeHandlers.js +9 -0
  91. package/dist/server/plugins/file/providers/utils/streamToBuffer.js +7 -0
  92. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isArray.js +2 -3
  93. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isBuffer.js +2 -3
  94. package/dist/server/plugins/file/providers/utils/typeguards/isPath.js +3 -0
  95. package/dist/server/plugins/file/providers/utils/typeguards/isReadableStream.js +7 -0
  96. package/{server → dist/server}/plugins/file/providers/utils/typeguards/isText.js +2 -3
  97. package/dist/server/plugins/file/uploadFile.js +14 -0
  98. package/dist/server/plugins/file/uploadMultiPart.js +101 -0
  99. package/dist/server/plugins/file/utils/allowedExtensions.js +60 -0
  100. package/{server → dist/server}/plugins/file/utils/getFileType.js +12 -10
  101. package/dist/server/plugins/file/utils/getPath.js +30 -0
  102. package/dist/server/plugins/file/utils/isFileExists.js +15 -0
  103. package/dist/server/plugins/grpc/file2json.js +50 -0
  104. package/dist/server/plugins/grpc/grpc.js +103 -0
  105. package/dist/server/plugins/grpc/office2pdf.js +78 -0
  106. package/dist/server/plugins/grpc/utils/csv2xls.js +6 -0
  107. package/dist/server/plugins/grpc/utils/excel2Json.js +10 -0
  108. package/dist/server/plugins/grpc/utils/html2doc.js +17 -0
  109. package/dist/server/plugins/grpc/utils/html2img.js +17 -0
  110. package/dist/server/plugins/grpc/utils/html2pdf.js +19 -0
  111. package/{server → dist/server}/plugins/grpc/utils/htmlTemplate.js +3 -4
  112. package/dist/server/plugins/grpc/utils/json2xls.js +11 -0
  113. package/dist/server/plugins/grpc/utils/mergePdf.js +18 -0
  114. package/dist/server/plugins/hook/funcs/addHook.js +7 -0
  115. package/dist/server/plugins/hook/funcs/applyHook.js +25 -0
  116. package/dist/server/plugins/hook/funcs/applyHookSync.js +7 -0
  117. package/dist/server/plugins/hook/hookList.js +2 -0
  118. package/{server → dist/server}/plugins/hook/index.js +7 -8
  119. package/dist/server/plugins/logger/createFileStream.js +79 -0
  120. package/dist/server/plugins/logger/errorMessage.js +24 -0
  121. package/dist/server/plugins/logger/errorStatus.js +17 -0
  122. package/dist/server/plugins/logger/getHooks.js +17 -0
  123. package/dist/server/plugins/logger/getLogger.js +52 -0
  124. package/dist/server/plugins/logger/index.js +37 -0
  125. package/dist/server/plugins/logger/labels.js +10 -0
  126. package/dist/server/plugins/logger/serializers.js +22 -0
  127. package/{server → dist/server}/plugins/logger/timestampWithTimeZone.js +5 -5
  128. package/dist/server/plugins/md/funcs/formatMdoc.js +45 -0
  129. package/{server → dist/server}/plugins/md/funcs/mdToHTML.js +16 -17
  130. package/dist/server/plugins/metric/index.js +6 -0
  131. package/dist/server/plugins/metric/loggerSystem.js +127 -0
  132. package/dist/server/plugins/metric/systemMetricsFifthly.js +20 -0
  133. package/dist/server/plugins/migration/exec.migrations.js +59 -0
  134. package/dist/server/plugins/migration/exec.sql.js +61 -0
  135. package/{server → dist/server}/plugins/migration/index.js +5 -7
  136. package/dist/server/plugins/pg/funcs/autoIndex.js +102 -0
  137. package/{server → dist/server}/plugins/pg/funcs/getDBParams.js +16 -15
  138. package/dist/server/plugins/pg/funcs/getMeta.js +48 -0
  139. package/dist/server/plugins/pg/funcs/getPG.js +39 -0
  140. package/dist/server/plugins/pg/funcs/getPGAsync.js +45 -0
  141. package/dist/server/plugins/pg/funcs/init.js +157 -0
  142. package/dist/server/plugins/pg/index.js +47 -0
  143. package/dist/server/plugins/pg/pgClients.js +20 -0
  144. package/dist/server/plugins/policy/funcs/checkPolicy.js +173 -0
  145. package/dist/server/plugins/policy/funcs/checkXSS.js +44 -0
  146. package/dist/server/plugins/policy/index.js +11 -0
  147. package/dist/server/plugins/policy/sqlInjection.js +33 -0
  148. package/dist/server/plugins/policy/xssInjection.js +72 -0
  149. package/{server → dist/server}/plugins/redis/client.js +6 -8
  150. package/dist/server/plugins/redis/funcs/getRedis.js +23 -0
  151. package/{server → dist/server}/plugins/redis/funcs/redisClients.js +2 -3
  152. package/dist/server/plugins/redis/index.js +8 -0
  153. package/dist/server/plugins/sqlite/funcs/getSqlite.js +27 -0
  154. package/dist/server/plugins/sqlite/funcs/init.js +45 -0
  155. package/dist/server/plugins/sqlite/index.js +8 -0
  156. package/dist/server/plugins/sqlite/sqliteClients.js +24 -0
  157. package/dist/server/plugins/table/funcs/addMenu.js +12 -0
  158. package/dist/server/plugins/table/funcs/addTemplateDir.js +16 -0
  159. package/dist/server/plugins/table/funcs/customTokens.js +2 -0
  160. package/dist/server/plugins/table/funcs/getData.js +25 -0
  161. package/dist/server/plugins/table/funcs/getFilter.js +18 -0
  162. package/dist/server/plugins/table/funcs/getFilterSQL/index.js +201 -0
  163. package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +131 -0
  164. package/dist/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +11 -0
  165. package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +84 -0
  166. package/dist/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +11 -0
  167. package/dist/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +161 -0
  168. package/dist/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +40 -0
  169. package/dist/server/plugins/table/funcs/getSelect.js +37 -0
  170. package/dist/server/plugins/table/funcs/getSelectMeta.js +77 -0
  171. package/dist/server/plugins/table/funcs/getTemplate.js +86 -0
  172. package/dist/server/plugins/table/funcs/getTemplatePath.js +60 -0
  173. package/dist/server/plugins/table/funcs/getTemplateSync.js +84 -0
  174. package/dist/server/plugins/table/funcs/getTemplates.js +15 -0
  175. package/dist/server/plugins/table/funcs/gisIRColumn.js +81 -0
  176. package/dist/server/plugins/table/funcs/loadTemplate.js +2 -0
  177. package/dist/server/plugins/table/funcs/loadTemplatePath.js +2 -0
  178. package/dist/server/plugins/table/funcs/menuDirs.js +2 -0
  179. package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.js +75 -0
  180. package/dist/server/plugins/table/funcs/metaFormat/index.js +64 -0
  181. package/dist/server/plugins/table/funcs/userTemplateDir.js +2 -0
  182. package/dist/server/plugins/table/funcs/userTokens.js +2 -0
  183. package/dist/server/plugins/util/funcs/eventStream.js +28 -0
  184. package/{server → dist/server}/plugins/util/funcs/flattenObject.js +14 -12
  185. package/{server → dist/server}/plugins/util/funcs/unflattenObject.js +48 -46
  186. package/{server → dist/server}/plugins/yml/funcs/json2yml.js +3 -5
  187. package/{server → dist/server}/plugins/yml/funcs/yml2json.js +11 -14
  188. package/{server → dist/server}/routes/access/controllers/access.group.js +17 -23
  189. package/{server → dist/server}/routes/access/controllers/access.group.post.js +46 -53
  190. package/dist/server/routes/access/controllers/access.interface.js +36 -0
  191. package/{server/routes/access/index.mjs → dist/server/routes/access/index.js} +10 -12
  192. package/{server/routes/access/schema.mjs → dist/server/routes/access/schema.js} +65 -68
  193. package/dist/server/routes/cron/controllers/cronApi.js +16 -0
  194. package/dist/server/routes/cron/index.js +15 -0
  195. package/dist/server/routes/crud/controllers/deleteCrud.js +90 -0
  196. package/dist/server/routes/crud/controllers/insert.js +110 -0
  197. package/dist/server/routes/crud/controllers/table.js +144 -0
  198. package/dist/server/routes/crud/controllers/update.js +113 -0
  199. package/dist/server/routes/crud/index.js +22 -0
  200. package/dist/server/routes/dblist/controllers/readItems.js +25 -0
  201. package/dist/server/routes/dblist/controllers/setItem.js +20 -0
  202. package/dist/server/routes/dblist/index.js +17 -0
  203. package/dist/server/routes/dblist/utils/formatData.js +8 -0
  204. package/dist/server/routes/file/controllers/delete.js +99 -0
  205. package/dist/server/routes/file/controllers/download.js +56 -0
  206. package/dist/server/routes/file/controllers/export.js +294 -0
  207. package/dist/server/routes/file/controllers/files.js +57 -0
  208. package/dist/server/routes/file/controllers/resize.js +86 -0
  209. package/dist/server/routes/file/controllers/resizeAll.js +140 -0
  210. package/dist/server/routes/file/controllers/upload.js +56 -0
  211. package/dist/server/routes/file/controllers/uploadImage.js +45 -0
  212. package/dist/server/routes/file/controllers/utils/formatResult.js +13 -0
  213. package/dist/server/routes/file/controllers/utils/jsonToCsv.js +40 -0
  214. package/dist/server/routes/file/controllers/utils/jsonToXls.js +37 -0
  215. package/dist/server/routes/file/index.js +22 -0
  216. package/dist/server/routes/file/schema.js +14 -0
  217. package/dist/server/routes/grpc/controllers/file2geojson.js +54 -0
  218. package/dist/server/routes/grpc/controllers/filePreview.js +87 -0
  219. package/dist/server/routes/grpc/index.js +9 -0
  220. package/dist/server/routes/logger/controllers/logger.file.js +81 -0
  221. package/dist/server/routes/logger/controllers/logger.test.api.js +42 -0
  222. package/dist/server/routes/logger/controllers/utils/checkUserAccess.js +22 -0
  223. package/dist/server/routes/logger/controllers/utils/getRootDir.js +25 -0
  224. package/dist/server/routes/logger/index.js +18 -0
  225. package/dist/server/routes/menu/controllers/getMenu.js +98 -0
  226. package/dist/server/routes/menu/controllers/interfaces.js +18 -0
  227. package/dist/server/routes/menu/index.js +7 -0
  228. package/dist/server/routes/properties/controllers/properties.get.js +23 -0
  229. package/dist/server/routes/properties/controllers/properties.post.js +68 -0
  230. package/dist/server/routes/properties/index.js +21 -0
  231. package/dist/server/routes/table/controllers/card.js +79 -0
  232. package/dist/server/routes/table/controllers/cardData.js +161 -0
  233. package/dist/server/routes/table/controllers/cardTabData.js +49 -0
  234. package/dist/server/routes/table/controllers/dataInfo.js +57 -0
  235. package/dist/server/routes/table/controllers/filter.js +181 -0
  236. package/dist/server/routes/table/controllers/form.js +41 -0
  237. package/{server → dist/server}/routes/table/controllers/getFormByTable.js +105 -125
  238. package/dist/server/routes/table/controllers/search.js +80 -0
  239. package/dist/server/routes/table/controllers/suggest.js +242 -0
  240. package/dist/server/routes/table/controllers/tableData.js +88 -0
  241. package/dist/server/routes/table/controllers/tableInfo.js +112 -0
  242. package/dist/server/routes/table/controllers/tokenInfo.js +10 -0
  243. package/dist/server/routes/table/controllers/utils/conditions.js +30 -0
  244. package/dist/server/routes/table/controllers/utils/formatSchema.js +35 -0
  245. package/dist/server/routes/table/controllers/utils/locales.js +2 -0
  246. package/dist/server/routes/table/functions/getData.js +584 -0
  247. package/dist/server/routes/table/index.js +44 -0
  248. package/dist/server/routes/table/schema.js +117 -0
  249. package/dist/server/routes/templates/controllers/getTemplate.js +65 -0
  250. package/dist/server/routes/templates/index.js +7 -0
  251. package/{server → dist/server}/routes/templates/schema.js +11 -12
  252. package/dist/server/routes/util/controllers/code.generator.js +75 -0
  253. package/dist/server/routes/util/controllers/next.id.js +4 -0
  254. package/dist/server/routes/util/controllers/status.monitor.js +6 -0
  255. package/dist/server/routes/util/controllers/user.tokens.js +32 -0
  256. package/dist/server/routes/util/index.js +13 -0
  257. package/dist/server/routes/widget/controllers/file.edit.js +48 -0
  258. package/dist/server/routes/widget/controllers/widget.del.js +84 -0
  259. package/dist/server/routes/widget/controllers/widget.get.js +164 -0
  260. package/dist/server/routes/widget/controllers/widget.set.js +117 -0
  261. package/dist/server/routes/widget/hook/onWidgetSet.js +10 -0
  262. package/dist/server/routes/widget/index.js +42 -0
  263. package/dist/server/types/core.js +12 -0
  264. package/dist/utils.js +93 -0
  265. package/package.json +24 -17
  266. package/config.js +0 -37
  267. package/dblist.js +0 -5
  268. package/index.js +0 -193
  269. package/redactionList.js +0 -7
  270. package/server/helpers/core/badge.js +0 -14
  271. package/server/helpers/core/buttonFilePreview.js +0 -12
  272. package/server/helpers/core/buttonHelper.js +0 -22
  273. package/server/helpers/format/formatAuto.js +0 -13
  274. package/server/helpers/format/formatDate.js +0 -258
  275. package/server/helpers/format/formatNum.js +0 -365
  276. package/server/helpers/format/formatRelative.js +0 -106
  277. package/server/helpers/funcs/ifCond.js +0 -109
  278. package/server/helpers/funcs/ifCondAnd.js +0 -114
  279. package/server/helpers/funcs/ifCondOr.js +0 -115
  280. package/server/helpers/funcs/qrcode.js +0 -68
  281. package/server/helpers/funcs/select.js +0 -46
  282. package/server/helpers/index.js +0 -137
  283. package/server/helpers/list/buttonHelper.js +0 -22
  284. package/server/helpers/list/tableList.js +0 -87
  285. package/server/helpers/string/utils/alphabet.js +0 -76
  286. package/server/helpers/utils/buttonEdit.js +0 -17
  287. package/server/migrations/0.sql +0 -84
  288. package/server/migrations/cls.sql +0 -40
  289. package/server/migrations/context.sql +0 -135
  290. package/server/migrations/crm.sql +0 -155
  291. package/server/migrations/log.sql +0 -87
  292. package/server/migrations/properties.sql +0 -115
  293. package/server/migrations/roles.sql +0 -191
  294. package/server/migrations/template.sql +0 -44
  295. package/server/migrations/users.sql +0 -176
  296. package/server/plugins/access/funcs/getAdminAccess.js +0 -14
  297. package/server/plugins/access/index.mjs +0 -6
  298. package/server/plugins/cron/cronList.js +0 -1
  299. package/server/plugins/cron/funcs/addCron.js +0 -52
  300. package/server/plugins/cron/funcs/runCron.js +0 -24
  301. package/server/plugins/cron/index.js +0 -77
  302. package/server/plugins/crud/funcs/dataDelete.js +0 -86
  303. package/server/plugins/crud/funcs/dataInsert.js +0 -131
  304. package/server/plugins/crud/funcs/dataUpdate.js +0 -179
  305. package/server/plugins/crud/funcs/getAccess.js +0 -94
  306. package/server/plugins/crud/funcs/getOpt.js +0 -14
  307. package/server/plugins/crud/funcs/getToken.js +0 -33
  308. package/server/plugins/crud/funcs/isFileExists.js +0 -13
  309. package/server/plugins/crud/funcs/setOpt.js +0 -21
  310. package/server/plugins/crud/funcs/setToken.js +0 -43
  311. package/server/plugins/crud/funcs/utils/getFolder.js +0 -11
  312. package/server/plugins/crud/funcs/utils/getInsertQuery.js +0 -44
  313. package/server/plugins/crud/funcs/utils/logChanges.js +0 -121
  314. package/server/plugins/crud/index.js +0 -23
  315. package/server/plugins/extra/extraData.js +0 -79
  316. package/server/plugins/extra/extraDataGet.js +0 -56
  317. package/server/plugins/file/downloadFile.js +0 -18
  318. package/server/plugins/file/isFileExists.js +0 -17
  319. package/server/plugins/file/providers/fs.js +0 -100
  320. package/server/plugins/file/providers/index.d.ts +0 -49
  321. package/server/plugins/file/providers/index.js +0 -36
  322. package/server/plugins/file/providers/mime/index.js +0 -12
  323. package/server/plugins/file/providers/mime/mimes.js +0 -1180
  324. package/server/plugins/file/providers/s3/client.js +0 -41
  325. package/server/plugins/file/providers/s3/funcs/downloadFile.js +0 -50
  326. package/server/plugins/file/providers/s3/funcs/fileExists.js +0 -32
  327. package/server/plugins/file/providers/s3/funcs/uploadFile.js +0 -46
  328. package/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +0 -23
  329. package/server/plugins/file/providers/utils/getDataSize.js +0 -20
  330. package/server/plugins/file/providers/utils/getValidData.js +0 -32
  331. package/server/plugins/file/providers/utils/handlers/dataTypes.js +0 -8
  332. package/server/plugins/file/providers/utils/handlers/index.js +0 -53
  333. package/server/plugins/file/providers/utils/handlers/sizeHandlers.js +0 -11
  334. package/server/plugins/file/providers/utils/streamToBuffer.js +0 -8
  335. package/server/plugins/file/providers/utils/typeguards/isPath.js +0 -5
  336. package/server/plugins/file/providers/utils/typeguards/isReadableStream.js +0 -8
  337. package/server/plugins/file/uploadFile.js +0 -19
  338. package/server/plugins/file/uploadMultiPart.js +0 -131
  339. package/server/plugins/file/utils/allowedExtensions.js +0 -25
  340. package/server/plugins/file/utils/getPath.js +0 -25
  341. package/server/plugins/file/utils/isFileExists.js +0 -16
  342. package/server/plugins/grpc/file2json.js +0 -54
  343. package/server/plugins/grpc/grpc.js +0 -125
  344. package/server/plugins/grpc/office2pdf.js +0 -91
  345. package/server/plugins/grpc/utils/csv2xls.js +0 -8
  346. package/server/plugins/grpc/utils/excel2Json.js +0 -8
  347. package/server/plugins/grpc/utils/html2doc.js +0 -19
  348. package/server/plugins/grpc/utils/html2img.js +0 -18
  349. package/server/plugins/grpc/utils/html2pdf.js +0 -23
  350. package/server/plugins/grpc/utils/json2xls.js +0 -13
  351. package/server/plugins/grpc/utils/mergePdf.js +0 -20
  352. package/server/plugins/hook/funcs/addHook.js +0 -8
  353. package/server/plugins/hook/funcs/applyHook.js +0 -25
  354. package/server/plugins/hook/funcs/applyHookSync.js +0 -9
  355. package/server/plugins/hook/hookList.js +0 -1
  356. package/server/plugins/logger/createFileStream.js +0 -88
  357. package/server/plugins/logger/errorMessage.js +0 -25
  358. package/server/plugins/logger/errorStatus.js +0 -19
  359. package/server/plugins/logger/getHooks.js +0 -21
  360. package/server/plugins/logger/getLogger.js +0 -58
  361. package/server/plugins/logger/index.js +0 -33
  362. package/server/plugins/logger/labels.js +0 -11
  363. package/server/plugins/logger/serializers.js +0 -25
  364. package/server/plugins/md/funcs/formatMdoc.js +0 -40
  365. package/server/plugins/metric/index.js +0 -8
  366. package/server/plugins/metric/loggerSystem.js +0 -131
  367. package/server/plugins/metric/systemMetricsFifthly.js +0 -24
  368. package/server/plugins/migration/exec.migrations.js +0 -63
  369. package/server/plugins/migration/exec.sql.js +0 -67
  370. package/server/plugins/pg/funcs/autoIndex.js +0 -103
  371. package/server/plugins/pg/funcs/getMeta.js +0 -49
  372. package/server/plugins/pg/funcs/getPG.js +0 -42
  373. package/server/plugins/pg/funcs/getPGAsync.js +0 -62
  374. package/server/plugins/pg/funcs/init.js +0 -117
  375. package/server/plugins/pg/index.js +0 -54
  376. package/server/plugins/pg/pgClients.js +0 -22
  377. package/server/plugins/policy/funcs/checkPolicy.js +0 -127
  378. package/server/plugins/policy/funcs/checkXSS.js +0 -37
  379. package/server/plugins/policy/index.js +0 -11
  380. package/server/plugins/policy/sqlInjection.js +0 -34
  381. package/server/plugins/policy/xssInjection.js +0 -73
  382. package/server/plugins/redis/funcs/getRedis.js +0 -25
  383. package/server/plugins/redis/index.js +0 -17
  384. package/server/plugins/sqlite/funcs/getSqlite.js +0 -39
  385. package/server/plugins/sqlite/funcs/init.js +0 -53
  386. package/server/plugins/sqlite/index.js +0 -11
  387. package/server/plugins/sqlite/sqliteClients.js +0 -26
  388. package/server/plugins/table/funcs/addMenu.js +0 -16
  389. package/server/plugins/table/funcs/addTemplateDir.js +0 -19
  390. package/server/plugins/table/funcs/customTokens.js +0 -1
  391. package/server/plugins/table/funcs/getData.js +0 -14
  392. package/server/plugins/table/funcs/getFilter.js +0 -14
  393. package/server/plugins/table/funcs/getFilterSQL/index.js +0 -163
  394. package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +0 -136
  395. package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +0 -13
  396. package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +0 -75
  397. package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +0 -12
  398. package/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +0 -156
  399. package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +0 -34
  400. package/server/plugins/table/funcs/getSelect.js +0 -31
  401. package/server/plugins/table/funcs/getSelectMeta.js +0 -74
  402. package/server/plugins/table/funcs/getTemplate.js +0 -88
  403. package/server/plugins/table/funcs/getTemplatePath.js +0 -60
  404. package/server/plugins/table/funcs/getTemplateSync.js +0 -87
  405. package/server/plugins/table/funcs/getTemplates.js +0 -19
  406. package/server/plugins/table/funcs/gisIRColumn.js +0 -82
  407. package/server/plugins/table/funcs/loadTemplate.js +0 -1
  408. package/server/plugins/table/funcs/loadTemplatePath.js +0 -1
  409. package/server/plugins/table/funcs/menuDirs.js +0 -1
  410. package/server/plugins/table/funcs/metaFormat/getSelectVal.js +0 -61
  411. package/server/plugins/table/funcs/metaFormat/index.js +0 -49
  412. package/server/plugins/table/funcs/userTemplateDir.js +0 -1
  413. package/server/plugins/table/funcs/userTokens.js +0 -1
  414. package/server/plugins/table/index.js +0 -13
  415. package/server/plugins/util/funcs/eventStream.js +0 -29
  416. package/server/plugins/util/index.js +0 -7
  417. package/server/routes/access/controllers/access.interface.js +0 -37
  418. package/server/routes/cron/controllers/cronApi.js +0 -22
  419. package/server/routes/cron/index.js +0 -19
  420. package/server/routes/crud/controllers/deleteCrud.js +0 -84
  421. package/server/routes/crud/controllers/insert.js +0 -103
  422. package/server/routes/crud/controllers/table.js +0 -116
  423. package/server/routes/crud/controllers/update.js +0 -108
  424. package/server/routes/crud/index.js +0 -26
  425. package/server/routes/dblist/controllers/readItems.js +0 -28
  426. package/server/routes/dblist/controllers/setItem.js +0 -25
  427. package/server/routes/dblist/index.mjs +0 -19
  428. package/server/routes/dblist/utils/formatData.js +0 -7
  429. package/server/routes/file/controllers/delete.js +0 -108
  430. package/server/routes/file/controllers/download.js +0 -66
  431. package/server/routes/file/controllers/export.js +0 -290
  432. package/server/routes/file/controllers/files.js +0 -72
  433. package/server/routes/file/controllers/resize.js +0 -96
  434. package/server/routes/file/controllers/resizeAll.js +0 -165
  435. package/server/routes/file/controllers/upload.js +0 -55
  436. package/server/routes/file/controllers/uploadImage.js +0 -47
  437. package/server/routes/file/controllers/utils/formatResult.js +0 -17
  438. package/server/routes/file/controllers/utils/jsonToCsv.js +0 -36
  439. package/server/routes/file/controllers/utils/jsonToXls.js +0 -42
  440. package/server/routes/file/index.mjs +0 -26
  441. package/server/routes/file/schema.js +0 -16
  442. package/server/routes/grpc/controllers/file2geojson.js +0 -60
  443. package/server/routes/grpc/controllers/filePreview.js +0 -89
  444. package/server/routes/grpc/index.mjs +0 -12
  445. package/server/routes/logger/controllers/logger.file.js +0 -97
  446. package/server/routes/logger/controllers/logger.test.api.js +0 -48
  447. package/server/routes/logger/controllers/utils/checkUserAccess.js +0 -24
  448. package/server/routes/logger/controllers/utils/getRootDir.js +0 -27
  449. package/server/routes/logger/index.js +0 -22
  450. package/server/routes/menu/controllers/getMenu.js +0 -98
  451. package/server/routes/menu/controllers/interfaces.js +0 -21
  452. package/server/routes/menu/index.mjs +0 -8
  453. package/server/routes/menu/schema.js +0 -0
  454. package/server/routes/properties/controllers/properties.get.js +0 -33
  455. package/server/routes/properties/controllers/properties.post.js +0 -76
  456. package/server/routes/properties/index.js +0 -25
  457. package/server/routes/table/controllers/card.js +0 -77
  458. package/server/routes/table/controllers/cardData.js +0 -155
  459. package/server/routes/table/controllers/cardTabData.js +0 -57
  460. package/server/routes/table/controllers/dataInfo.js +0 -56
  461. package/server/routes/table/controllers/filter.js +0 -154
  462. package/server/routes/table/controllers/form.js +0 -42
  463. package/server/routes/table/controllers/search.js +0 -74
  464. package/server/routes/table/controllers/suggest.js +0 -246
  465. package/server/routes/table/controllers/tableData.js +0 -62
  466. package/server/routes/table/controllers/tableInfo.js +0 -110
  467. package/server/routes/table/controllers/tokenInfo.js +0 -12
  468. package/server/routes/table/controllers/utils/conditions.js +0 -21
  469. package/server/routes/table/controllers/utils/formatSchema.js +0 -23
  470. package/server/routes/table/controllers/utils/locales.js +0 -1
  471. package/server/routes/table/functions/getData.js +0 -436
  472. package/server/routes/table/index.js +0 -57
  473. package/server/routes/table/schema.js +0 -127
  474. package/server/routes/templates/controllers/getTemplate.js +0 -51
  475. package/server/routes/templates/index.mjs +0 -10
  476. package/server/routes/util/controllers/code.generator.js +0 -94
  477. package/server/routes/util/controllers/next.id.js +0 -4
  478. package/server/routes/util/controllers/status.monitor.js +0 -8
  479. package/server/routes/util/controllers/user.tokens.js +0 -45
  480. package/server/routes/util/index.js +0 -14
  481. package/server/routes/widget/controllers/file.edit.js +0 -55
  482. package/server/routes/widget/controllers/widget.del.js +0 -99
  483. package/server/routes/widget/controllers/widget.get.js +0 -156
  484. package/server/routes/widget/controllers/widget.set.js +0 -108
  485. package/server/routes/widget/hook/onWidgetSet.js +0 -13
  486. package/server/routes/widget/index.mjs +0 -38
  487. package/utils.js +0 -112
  488. /package/{server → dist/server}/plugins/grpc/utils/convertp.proto +0 -0
  489. /package/{server → dist/server}/plugins/grpc/utils/office2pdf.proto +0 -0
@@ -0,0 +1,109 @@
1
+ /* eslint-disable prefer-rest-params */
2
+ function intersect(a, b) {
3
+ let aN = [];
4
+ let bN = [];
5
+ if (Array.isArray(a)) {
6
+ aN = a;
7
+ }
8
+ else if (typeof a === 'string') {
9
+ aN = a.split(',');
10
+ }
11
+ if (Array.isArray(b)) {
12
+ bN = b;
13
+ }
14
+ else if (typeof b === 'string') {
15
+ bN = b.split(',');
16
+ }
17
+ return aN.filter(e => bN.includes(e));
18
+ }
19
+ /**
20
+ * Створення шаблона або його частини внаслідок виконання одразу декількох перевірок, кожна з яких повинна повернути true.
21
+ * Якщо хоча б одна умова не виконується, код у межах хелпера також не виконується.
22
+ *
23
+ * @summary Створення шаблона за перевіркою виконання декількох умов.
24
+ * @priority 4
25
+ * @type helper
26
+ * @tag condition
27
+ * @alias ifCondAnd
28
+ * @example
29
+ * {{#ifCondAnd 1 '==' 1 2 'in' '2,3' 2 'in' '1,2' }}1{{^}}2{{/ifCondAnd}}
30
+ * @descr Виконання перевірки порівняння параметрів та їх входження до певного масиву (множини)
31
+ * @example
32
+ */
33
+ export default function ifCondAnd() {
34
+ const args = Array.from(arguments);
35
+ const options = args.pop();
36
+ const conditions = [];
37
+ for (let i = 0; i < args.length; i += 3) {
38
+ const v1 = args[i];
39
+ const operator = args[i + 1];
40
+ let v2 = args[i + 2];
41
+ switch (operator) {
42
+ case '==':
43
+ // eslint-disable-next-line eqeqeq
44
+ conditions.push(v1 == v2);
45
+ break;
46
+ case '!=':
47
+ // eslint-disable-next-line eqeqeq
48
+ conditions.push(v1 != v2);
49
+ break;
50
+ case '===':
51
+ conditions.push(v1 === v2);
52
+ break;
53
+ case '!==':
54
+ conditions.push(v1 !== v2);
55
+ break;
56
+ case '&&':
57
+ conditions.push(v1 && v2);
58
+ break;
59
+ case '||':
60
+ conditions.push(v1 || v2);
61
+ break;
62
+ case '<':
63
+ conditions.push(v1 < v2);
64
+ break;
65
+ case '<=':
66
+ conditions.push(v1 <= v2);
67
+ break;
68
+ case '>':
69
+ conditions.push(v1 > v2);
70
+ break;
71
+ case '>=':
72
+ conditions.push(v1 >= v2);
73
+ break;
74
+ case '&':
75
+ conditions.push(intersect(v1, v2).length > 0);
76
+ break;
77
+ case '!~':
78
+ conditions.push((v1 || '').indexOf(v2) === -1);
79
+ break;
80
+ case '~':
81
+ conditions.push((v1 || '').indexOf(v2) !== -1);
82
+ break;
83
+ case 'period':
84
+ conditions.push(new Date(v1) < new Date() && new Date(v2) > new Date());
85
+ break;
86
+ case 'in': {
87
+ if (typeof v2 === 'string')
88
+ v2 = v2.split(',').map(item => item.trim());
89
+ if (Array.isArray(v1)) {
90
+ conditions.push(v1.some((value) => v2.includes(value.toString())));
91
+ }
92
+ else {
93
+ conditions.push(v2.includes(v1.toString()));
94
+ }
95
+ break;
96
+ }
97
+ case 'not in': {
98
+ if (typeof v2 === 'string')
99
+ v2 = v2.split(',').map(item => item.trim());
100
+ conditions.push(!v2.includes(v1.toString()));
101
+ break;
102
+ }
103
+ default:
104
+ conditions.push(false);
105
+ break;
106
+ }
107
+ }
108
+ return conditions.every(Boolean) ? options.fn(this) : options.inverse(this);
109
+ }
@@ -0,0 +1,110 @@
1
+ /* eslint-disable prefer-rest-params */
2
+ function intersect(a, b) {
3
+ let aN = [];
4
+ let bN = [];
5
+ if (Array.isArray(a)) {
6
+ aN = a;
7
+ }
8
+ else if (typeof a === 'string') {
9
+ aN = a.split(',');
10
+ }
11
+ if (Array.isArray(b)) {
12
+ bN = b;
13
+ }
14
+ else if (typeof b === 'string') {
15
+ bN = b.split(',');
16
+ }
17
+ return aN.filter(e => bN.includes(e));
18
+ }
19
+ /**
20
+ * Створення шаблона або його частини внаслідок виконання одразу декількох перевірок, хоча б одна з яких повинна повернути true
21
+ *
22
+ * @summary Створення шаблона за перевіркою "АБО". Повинна виконатись хоча б одна умова.
23
+ * @priority 4
24
+ * @type helper
25
+ * @tag condition
26
+ * @alias ifCondOr
27
+ * @example
28
+ * {{#ifCondOr 1 '==' 1 2 'in' '2,3' 2 'in' '1,2' }}Хоча б одна умова виконана{{^}}Жодна умова не була виконана{{/ifCondOr}}
29
+ * @descr Виконання перевірки порівняння параметрів та їх входження до певного масиву (множини)
30
+ * @example
31
+ * @param {Array} args Параметри для значень і умов
32
+ * @returns {String} Returns HTML
33
+ */
34
+ export default function ifCondOr() {
35
+ const args = Array.from(arguments);
36
+ const options = args.pop();
37
+ const conditions = [];
38
+ for (let i = 0; i < args.length; i += 3) {
39
+ const v1 = args[i];
40
+ const operator = args[i + 1];
41
+ let v2 = args[i + 2];
42
+ switch (operator) {
43
+ case '==':
44
+ // eslint-disable-next-line eqeqeq
45
+ conditions.push(v1 == v2);
46
+ break;
47
+ case '!=':
48
+ // eslint-disable-next-line eqeqeq
49
+ conditions.push(v1 != v2);
50
+ break;
51
+ case '===':
52
+ conditions.push(v1 === v2);
53
+ break;
54
+ case '!==':
55
+ conditions.push(v1 !== v2);
56
+ break;
57
+ case '&&':
58
+ conditions.push(v1 && v2);
59
+ break;
60
+ case '||':
61
+ conditions.push(v1 || v2);
62
+ break;
63
+ case '<':
64
+ conditions.push(v1 < v2);
65
+ break;
66
+ case '<=':
67
+ conditions.push(v1 <= v2);
68
+ break;
69
+ case '>':
70
+ conditions.push(v1 > v2);
71
+ break;
72
+ case '>=':
73
+ conditions.push(v1 >= v2);
74
+ break;
75
+ case '&':
76
+ conditions.push(intersect(v1, v2).length > 0);
77
+ break;
78
+ case '!~':
79
+ conditions.push((v1 || '').indexOf(v2) === -1);
80
+ break;
81
+ case '~':
82
+ conditions.push((v1 || '').indexOf(v2) !== -1);
83
+ break;
84
+ case 'period':
85
+ conditions.push(new Date(v1) < new Date() && new Date(v2) > new Date());
86
+ break;
87
+ case 'in': {
88
+ if (typeof v2 === 'string')
89
+ v2 = v2.split(',').map(item => item.trim());
90
+ if (Array.isArray(v1)) {
91
+ conditions.push(v1.some((value) => v2.includes(value.toString())));
92
+ }
93
+ else {
94
+ conditions.push(v2.includes(v1.toString()));
95
+ }
96
+ break;
97
+ }
98
+ case 'not in': {
99
+ if (typeof v2 === 'string')
100
+ v2 = v2.split(',').map(item => item.trim());
101
+ conditions.push(!v2.includes(v1.toString()));
102
+ break;
103
+ }
104
+ default:
105
+ conditions.push(false);
106
+ break;
107
+ }
108
+ }
109
+ return conditions.some(Boolean) ? options.fn(this) : options.inverse(this);
110
+ }
@@ -1,20 +1,19 @@
1
- /**
2
- * Складення двох значень з масива
3
- *
4
- * @summary Складення двох значень з масива. Є можливість використання у якості порядокового номеру
5
- * @priority 3
6
- * @type helper
7
- * @alias inc
8
- * @tag math
9
- * @example
10
- * {{{inc (coalesce @index 0)}}}
11
- * @descr При використанні в межах циклу, дозволяє відображати віртуальний індекс
12
- * @param {Array} args Масив чисел для складання
13
- * @returns {String} Returns HTML
14
- */
15
- export default function inc(...args) {
16
- const firstValue = args[0] || 0;
17
- const secondValue = typeof args[1] === 'number' ? args[1] : 1;
18
-
19
- return firstValue + secondValue;
20
- }
1
+ /**
2
+ * Складення двох значень з масива
3
+ *
4
+ * @summary Складення двох значень з масива. Є можливість використання у якості порядокового номеру
5
+ * @priority 3
6
+ * @type helper
7
+ * @alias inc
8
+ * @tag math
9
+ * @example
10
+ * {{{inc (coalesce @index 0)}}}
11
+ * @descr При використанні в межах циклу, дозволяє відображати віртуальний індекс
12
+ * @param {Array} args Масив чисел для складання
13
+ * @returns {String} Returns HTML
14
+ */
15
+ export default function inc(...args) {
16
+ const firstValue = args[0] || 0;
17
+ const secondValue = typeof args[1] === 'number' ? args[1] : 1;
18
+ return firstValue + secondValue;
19
+ }
@@ -1,3 +1,3 @@
1
- export default function jsonStringify(data) {
2
- return JSON.stringify(data, null, 2);
3
- }
1
+ export default function jsonStringify(data) {
2
+ return JSON.stringify(data, null, 2);
3
+ }
@@ -0,0 +1,65 @@
1
+ import { toDataURL, toString } from "qrcode";
2
+ function isAllowedType(type) {
3
+ return Boolean({
4
+ png: 1,
5
+ svg: 1,
6
+ // eps: 1, // not supported?
7
+ // pdf: 1, // not supported?
8
+ }[type]);
9
+ }
10
+ function isAllowedErrorCorrectionLevel(ecLevel) {
11
+ return Boolean({
12
+ L: 1,
13
+ M: 1,
14
+ Q: 1,
15
+ H: 1,
16
+ }[ecLevel]);
17
+ }
18
+ export default async function qrcodeGenerator({ hash, }) {
19
+ const text = String(hash?.text || "");
20
+ const type = String(hash?.type || "png").toLowerCase();
21
+ const ecLevel = String(hash?.ec_level || "M").toUpperCase();
22
+ const margin = Math.abs(hash?.margin || (type === "png" ? 4 : 1));
23
+ let size;
24
+ if (type === "png") {
25
+ size = Math.abs(hash?.size) || 5;
26
+ }
27
+ else if (type === "svg") {
28
+ size = Math.abs(hash?.size) || undefined;
29
+ }
30
+ if (!text) {
31
+ return "Qr text is required.";
32
+ }
33
+ if (!isAllowedType(type)) {
34
+ return `Type "${type}" is not allowed.`;
35
+ }
36
+ if (!isAllowedErrorCorrectionLevel(ecLevel)) {
37
+ return `Error correction level "${ecLevel}" is not allowed.`;
38
+ }
39
+ try {
40
+ if (type === "svg") {
41
+ // для SVG нужен toString
42
+ return await toString(text, {
43
+ type: "svg",
44
+ errorCorrectionLevel: ecLevel,
45
+ margin,
46
+ width: size,
47
+ });
48
+ }
49
+ // для PNG/JPEG/WebP — toDataURL
50
+ const mime = type === "png"
51
+ ? "image/png"
52
+ : type === "jpg" || type === "jpeg"
53
+ ? "image/jpeg"
54
+ : "image/webp";
55
+ return await toDataURL(text, {
56
+ errorCorrectionLevel: ecLevel,
57
+ type: mime,
58
+ margin,
59
+ width: size,
60
+ });
61
+ }
62
+ catch (err) {
63
+ return err.toString();
64
+ }
65
+ }
@@ -1,29 +1,27 @@
1
- /* eslint-disable no-restricted-globals */
2
- /**
3
- * Округлення числа до певної точності
4
- *
5
- * @summary Округлення числа до певної точності. Є можливість округлення до низу.
6
- * @priority 3
7
- * @type helper
8
- * @alias round
9
- * @tag format
10
- * @example
11
- * {{round 3.14159265359 dec="6"}}
12
- * @descr Округлення числа із змінної x до 6 знаків після роздільника
13
- * @param {Number} dec Підрахування числа після роздільника
14
- * @param {Any} floor False - округлення до низу
15
- * @param {Number} data Передане число
16
- * @returns {String} Returns HTML
17
- */
18
- export default function round(data, options) {
19
- const floatData = parseFloat(data);
20
- if (isNaN(floatData)) return '';
21
-
22
- const dec = options.hash.dec ? parseInt(options.hash.dec, 10) : 0;
23
-
24
- if (options.hash.floor) {
25
- return Math.floor(floatData).toFixed(dec);
26
- }
27
-
28
- return floatData.toFixed(dec);
29
- }
1
+ /* eslint-disable no-restricted-globals */
2
+ /**
3
+ * Округлення числа до певної точності
4
+ *
5
+ * @summary Округлення числа до певної точності. Є можливість округлення до низу.
6
+ * @priority 3
7
+ * @type helper
8
+ * @alias round
9
+ * @tag format
10
+ * @example
11
+ * {{round 3.14159265359 dec="6"}}
12
+ * @descr Округлення числа із змінної x до 6 знаків після роздільника
13
+ * @param {Number} dec Підрахування числа після роздільника
14
+ * @param {Any} floor False - округлення до низу
15
+ * @param {Number} data Передане число
16
+ * @returns {String} Returns HTML
17
+ */
18
+ export default function round(data, options) {
19
+ const floatData = parseFloat(data);
20
+ if (isNaN(floatData))
21
+ return '';
22
+ const dec = options.hash.dec ? parseInt(options.hash.dec, 10) : 0;
23
+ if (options.hash.floor) {
24
+ return Math.floor(floatData).toFixed(dec);
25
+ }
26
+ return floatData.toFixed(dec);
27
+ }
@@ -0,0 +1,39 @@
1
+ import getPG from "../../plugins/pg/funcs/getPG.js";
2
+ import getSelect from "../../plugins/table/funcs/getSelect.js";
3
+ const pg = getPG();
4
+ // todo: remove dupe from npm/admin?
5
+ export default async function select(ids, options) {
6
+ if (!ids || (Array.isArray(ids) && ids.length === 0) || ids === "") {
7
+ return "";
8
+ }
9
+ const data = options.hash?.data;
10
+ if (!data && data !== false && data !== 0)
11
+ return "";
12
+ try {
13
+ const idsArray = Array.isArray(ids) ? ids : [ids];
14
+ const classifier = await getSelect(data);
15
+ if (!classifier)
16
+ return `Не знайдено класифікатор ${data}`;
17
+ const arr = classifier.arr || [];
18
+ if (classifier.sql && typeof classifier.sql === "string") {
19
+ const metaQuery = `SELECT * FROM (${classifier.sql})q LIMIT 0`;
20
+ const meta = await pg.query(metaQuery);
21
+ const idColumn = meta.fields[0].name;
22
+ const textColumn = meta.fields[1].name;
23
+ const q = `SELECT "${idColumn}" AS id, "${textColumn}" AS text FROM (${classifier.sql}) q WHERE "${idColumn}"::text = ANY($1::text[])`;
24
+ const values = [idsArray.map((id) => String(id))];
25
+ const { rows } = await pg.query(q, values);
26
+ Object.assign(arr, rows);
27
+ }
28
+ if (!arr.length)
29
+ return idsArray;
30
+ const results = idsArray.map((id) => {
31
+ const result = arr.find((el) => String(el.id) === String(id));
32
+ return result ? result.text : "";
33
+ });
34
+ return results.filter(Boolean).join(", ");
35
+ }
36
+ catch (err) {
37
+ return `Сталася помилка.<!-- err: ${err.toString()} -->`;
38
+ }
39
+ }
@@ -0,0 +1,125 @@
1
+ /* eslint-disable prefer-rest-params */
2
+ import handlebarsSync from "handlebars";
3
+ // import promisedHandlebars from "promised-handlebars";
4
+ const promisedHandlebars = require("promised-handlebars");
5
+ import logger from "../plugins/logger/getLogger.js";
6
+ const handlebars = promisedHandlebars(handlebarsSync);
7
+ // funcs
8
+ import _math from "./funcs/_math.js";
9
+ import ifCond from "./funcs/ifCond.js";
10
+ import ifCondAnd from "./funcs/ifCondAnd.js";
11
+ import ifCondOr from "./funcs/ifCondOr.js";
12
+ import qrcode from "./funcs/qrcode.js";
13
+ import select from "./funcs/select.js";
14
+ import json from "./funcs/json.js";
15
+ import empty from "./funcs/empty.js";
16
+ import round from "./funcs/round.js";
17
+ import contentList from "./funcs/contentList.js";
18
+ import inc from "./funcs/inc.js";
19
+ // format
20
+ import formatAuto from "./format/formatAuto.js";
21
+ import formatDate from "./format/formatDate.js";
22
+ import formatDigit from "./format/formatDigit.js";
23
+ import formatNum from "./format/formatNum.js";
24
+ import formatNumber from "./format/formatNumber.js";
25
+ import formatRelative from "./format/formatRelative.js";
26
+ import formatUnit from "./format/formatUnit.js";
27
+ import numFormat from "./format/num_format.js";
28
+ import set from "./format/set.js";
29
+ // string
30
+ import strReplace from "./string/str_replace.js";
31
+ import coalesce from "./string/coalesce.js";
32
+ import concat from "./string/concat.js";
33
+ import split from "./string/split.js";
34
+ import translit from "./string/translit.js";
35
+ import substr from "./string/substr.js";
36
+ // from npm/admin
37
+ import token from "./core/token.js";
38
+ import descriptionList from "./list/descriptionList.js";
39
+ import tableList from "./list/tableList.js";
40
+ import buttonHelper from "./core/buttonHelper.js";
41
+ import buttonFilePreview from "./core/buttonFilePreview.js";
42
+ import badge from "./core/badge.js";
43
+ import mdToHTML from "./utils/mdToHTML.js";
44
+ import paddingNumber from "./utils/paddingNumber.js";
45
+ function getKeysRecursive(obj, prefix = "") {
46
+ if (!obj || typeof obj !== "object" || obj?.constructor?.name !== "Object")
47
+ return [];
48
+ const obj1 = Array.isArray(obj) ? obj[0] : obj;
49
+ return Object.keys(obj1 || {}).reduce((acc, curr) => {
50
+ const fullKey = prefix ? `${prefix}.${curr}` : curr;
51
+ acc.push(curr);
52
+ if (obj1[curr] &&
53
+ typeof obj1[curr] === "object" &&
54
+ curr !== "coordinates") {
55
+ acc.push(...getKeysRecursive(obj1[curr], fullKey));
56
+ }
57
+ return acc;
58
+ }, []);
59
+ }
60
+ // avoid unhandled exception if helper not registered
61
+ handlebars.registerHelper("helperMissing", function hm() {
62
+ const options = arguments[arguments.length - 1];
63
+ const args = Array.prototype.slice.call(arguments, 0, arguments.length - 1);
64
+ const keys = getKeysRecursive(options.data?.root);
65
+ if (args.length || !keys.includes(options.name)) {
66
+ logger.file("handlebars/error", {
67
+ message: `Missing helper "${options.name}" at "${JSON.stringify(args).substring(0, 10)}"`,
68
+ });
69
+ return args;
70
+ }
71
+ return args;
72
+ });
73
+ // format
74
+ handlebars.registerHelper("formatAuto", formatAuto);
75
+ handlebars.registerHelper("formatDate", formatDate);
76
+ handlebars.registerHelper("formatDigit", formatDigit);
77
+ handlebars.registerHelper("formatNum", formatNum);
78
+ handlebars.registerHelper("formatNumber", formatNumber);
79
+ handlebars.registerHelper("formatRelative", formatRelative);
80
+ handlebars.registerHelper("formatUnit", formatUnit);
81
+ handlebars.registerHelper("num_format", numFormat);
82
+ handlebars.registerHelper("set", set);
83
+ // string
84
+ handlebars.registerHelper("str_replace", strReplace);
85
+ handlebars.registerHelper("coalesce", coalesce);
86
+ handlebars.registerHelper("concat", concat);
87
+ handlebars.registerHelper("split", split);
88
+ handlebars.registerHelper("translit", translit);
89
+ handlebars.registerHelper("substr", substr);
90
+ handlebars.registerHelper("mls", (value) => value);
91
+ // funcs
92
+ handlebars.registerHelper("json", json);
93
+ handlebars.registerHelper("_math", _math);
94
+ handlebars.registerHelper("ifCond", ifCond);
95
+ handlebars.registerHelper("ifCondAnd", ifCondAnd);
96
+ handlebars.registerHelper("ifCondOr", ifCondOr);
97
+ handlebars.registerHelper("select", select);
98
+ handlebars.registerHelper("empty", empty);
99
+ handlebars.registerHelper("round", round);
100
+ handlebars.registerHelper("contentList", contentList);
101
+ handlebars.registerHelper("inc", inc);
102
+ handlebars.registerHelper("qrcode", qrcode);
103
+ // Підтримка старого коду
104
+ handlebars.registerHelper("qrcode-generator-base64", qrcode);
105
+ // from npm/admin
106
+ handlebars.registerHelper("token", token);
107
+ handlebars.registerHelper("mdToHTML", mdToHTML);
108
+ handlebars.registerHelper("descriptionList", descriptionList);
109
+ handlebars.registerHelper("tableList", tableList);
110
+ handlebars.registerHelper("button", buttonHelper);
111
+ handlebars.registerHelper("buttonFilePreview", buttonFilePreview);
112
+ handlebarsSync.registerHelper("buttonFilePreview", buttonFilePreview);
113
+ handlebars.registerHelper("select", select);
114
+ handlebars.registerHelper("badge", badge);
115
+ handlebars.registerHelper("contentList", contentList);
116
+ handlebarsSync.registerHelper("ifCond", ifCond);
117
+ handlebarsSync.registerHelper("button", buttonHelper);
118
+ handlebars.registerHelper("ifCond", ifCond);
119
+ handlebars.registerHelper("empty", () => { });
120
+ handlebarsSync.registerHelper("empty", () => { });
121
+ handlebars.registerHelper("coalesce", coalesce);
122
+ handlebarsSync.registerHelper("coalesce", coalesce);
123
+ handlebarsSync.registerHelper("paddingNumber", paddingNumber);
124
+ handlebars.registerHelper("paddingNumber", paddingNumber);
125
+ export { handlebars, handlebarsSync };
@@ -0,0 +1,20 @@
1
+ import buttonAdd from "../utils/buttonAdd.js";
2
+ import buttonDel from "../utils/buttonDel.js";
3
+ import buttonEdit from "../utils/buttonEdit.js";
4
+ import button from "../utils/button.js";
5
+ export default function buttonHelper(data, opt) {
6
+ const { hash } = opt;
7
+ // console.log(params)
8
+ if (!hash.token)
9
+ return "token empty";
10
+ if (hash.add) {
11
+ return buttonAdd(hash.token, hash.title);
12
+ }
13
+ if (hash.del) {
14
+ return buttonDel(hash.token, hash.title);
15
+ }
16
+ if (hash.edit) {
17
+ return buttonEdit(hash.token, hash.title);
18
+ }
19
+ return button(hash.token, hash.title);
20
+ }
@@ -1,49 +1,43 @@
1
- import { handlebars } from '../index.js';
2
-
3
- async function format(d, key, data) {
4
- if (!key?.includes) return '';
5
- if (d === true) return 'Так';
6
- if (d === false) return 'Ні';
7
-
8
- if (key.includes('{{')) {
9
- return await handlebars.compile(key)(data);
10
- }
11
-
12
- // metaFormat array of objects with id, text, color etc.
13
- if (Array.isArray(d) && d?.[0]?.text) {
14
- return d.map(({ text }) => text).join(', ');
15
- }
16
-
17
- return d;
18
- }
19
- export default async function descriptionList(data, opt) {
20
- const { hash } = opt;
21
-
22
- // no datad.
23
- if (hash.nodata && !data) {
24
- const noDataText = typeof hash.nodata === 'string' ? hash.nodata : '<div class="bg-gray-200 text-center p-6 rounded-xl"><h3 class="text-lg font-semibold">Інформація відсутня</h3></div>';
25
- return noDataText;
26
- }
27
- if (!hash.columns) return 'columns empty';
28
- const keys = hash.columns.split(hash.divider || ',').map(el => (hash.comma ? el.trim().replace(new RegExp(hash.comma || '#', 'g'), ',') : el.trim()));
29
-
30
- const result = [];
31
-
32
- for (let i = 0; i < keys.length; i += 2) {
33
- const name = keys[i];
34
- const nameHBS = name.includes('{{') ? await handlebars.compile(name)({ ...data, hash }) : false;
35
-
36
- if (!nameHBS && name.includes('{{')) continue;
37
-
38
- const key = keys[i + 1];
39
-
40
- const d1 = await format(data[key], key, data) || '-';
41
-
1
+ import { handlebars } from '../index.js';
2
+ async function format(d, key, data) {
3
+ if (!key?.includes)
4
+ return '';
5
+ if (d === true)
6
+ return 'Так';
7
+ if (d === false)
8
+ return 'Ні';
9
+ if (key.includes('{{')) {
10
+ return await handlebars.compile(key)(data);
11
+ }
12
+ // metaFormat array of objects with id, text, color etc.
13
+ if (Array.isArray(d) && d?.[0]?.text) {
14
+ return d.map(({ text }) => text).join(', ');
15
+ }
16
+ return d;
17
+ }
18
+ export default async function descriptionList(data, opt) {
19
+ const { hash } = opt;
20
+ // no datad.
21
+ if (hash.nodata && !data) {
22
+ const noDataText = typeof hash.nodata === 'string' ? hash.nodata : '<div class="bg-gray-200 text-center p-6 rounded-xl"><h3 class="text-lg font-semibold">Інформація відсутня</h3></div>';
23
+ return noDataText;
24
+ }
25
+ if (!hash.columns)
26
+ return 'columns empty';
27
+ const keys = hash.columns.split(hash.divider || ',').map((el) => hash.comma ? el.trim().replace(new RegExp(hash.comma || '#', 'g'), ',') : el.trim());
28
+ const result = [];
29
+ for (let i = 0; i < keys.length; i += 2) {
30
+ const name = keys[i];
31
+ const nameHBS = name.includes('{{') ? await handlebars.compile(name)({ ...data, hash }) : false;
32
+ if (!nameHBS && name.includes('{{'))
33
+ continue;
34
+ const key = keys[i + 1];
35
+ const d1 = (await format(data[key], key, data)) || '-';
42
36
  result.push(`<div class="grid grid-cols-1 gap-1 py-3 sm:grid-cols-3 sm:gap-4 even:bg-gray-50 text-[12px]">
43
37
  <dt class="text-gray-900">${nameHBS || name}</dt>
44
38
  <dd class="text-gray-700 sm:col-span-2">${d1}</dd>
45
39
  </div>
46
- `);
47
- }
48
- return `<dl class=" divide-y divide-gray-100 py-[5px] w-full">${result.join('')}</dl>`;
49
- }
40
+ `);
41
+ }
42
+ return `<dl class=" divide-y divide-gray-100 py-[5px] w-full">${result.join('')}</dl>`;
43
+ }