@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.
- package/dist/config.js +33 -0
- package/dist/dblist.js +5 -0
- package/dist/index.js +170 -0
- package/dist/redactionList.js +6 -0
- package/dist/server/helpers/core/badge.js +16 -0
- package/dist/server/helpers/core/buttonFilePreview.js +12 -0
- package/dist/server/helpers/core/buttonHelper.js +20 -0
- package/{server → dist/server}/helpers/core/token.js +16 -18
- package/dist/server/helpers/format/formatAuto.js +14 -0
- package/dist/server/helpers/format/formatDate.js +231 -0
- package/{server → dist/server}/helpers/format/formatDigit.js +21 -21
- package/dist/server/helpers/format/formatNum.js +331 -0
- package/{server → dist/server}/helpers/format/formatNumber.js +50 -55
- package/dist/server/helpers/format/formatRelative.js +180 -0
- package/{server → dist/server}/helpers/format/formatUnit.js +41 -40
- package/{server → dist/server}/helpers/format/num_format.js +40 -44
- package/{server → dist/server}/helpers/format/set.js +26 -27
- package/{server → dist/server}/helpers/funcs/_math.js +49 -50
- package/{server → dist/server}/helpers/funcs/contentList.js +52 -57
- package/{server → dist/server}/helpers/funcs/empty.js +21 -21
- package/dist/server/helpers/funcs/ifCond.js +109 -0
- package/dist/server/helpers/funcs/ifCondAnd.js +109 -0
- package/dist/server/helpers/funcs/ifCondOr.js +110 -0
- package/{server → dist/server}/helpers/funcs/inc.js +19 -20
- package/{server → dist/server}/helpers/funcs/json.js +3 -3
- package/dist/server/helpers/funcs/qrcode.js +65 -0
- package/{server → dist/server}/helpers/funcs/round.js +27 -29
- package/dist/server/helpers/funcs/select.js +39 -0
- package/dist/server/helpers/index.js +125 -0
- package/dist/server/helpers/list/buttonHelper.js +20 -0
- package/{server → dist/server}/helpers/list/descriptionList.js +39 -45
- package/dist/server/helpers/list/tableList.js +104 -0
- package/{server → dist/server}/helpers/list/utils/button.js +3 -3
- package/{server → dist/server}/helpers/list/utils/buttonDel.js +8 -9
- package/{server → dist/server}/helpers/list/utils/buttonEdit.js +8 -9
- package/{server → dist/server}/helpers/string/coalesce.js +33 -39
- package/{server → dist/server}/helpers/string/concat.js +25 -28
- package/{server → dist/server}/helpers/string/split.js +19 -20
- package/{server → dist/server}/helpers/string/str_replace.js +57 -62
- package/{server → dist/server}/helpers/string/substr.js +28 -32
- package/{server → dist/server}/helpers/string/translit.js +20 -23
- package/dist/server/helpers/string/utils/alphabet.js +76 -0
- package/{server → dist/server}/helpers/utils/button.js +3 -3
- package/{server → dist/server}/helpers/utils/buttonAdd.js +4 -4
- package/{server → dist/server}/helpers/utils/buttonDel.js +11 -15
- package/{server → dist/server}/helpers/utils/buttonDownload.js +3 -3
- package/dist/server/helpers/utils/buttonEdit.js +14 -0
- package/{server → dist/server}/helpers/utils/buttonPreview.js +3 -3
- package/{server → dist/server}/helpers/utils/mdToHTML.js +16 -17
- package/{server → dist/server}/helpers/utils/paddingNumber.js +5 -5
- package/dist/server/plugins/access/funcs/getAdminAccess.js +11 -0
- package/dist/server/plugins/cron/cronList.js +2 -0
- package/dist/server/plugins/cron/funcs/addCron.js +41 -0
- package/{server → dist/server}/plugins/cron/funcs/interval2ms.js +36 -40
- package/dist/server/plugins/cron/funcs/runCron.js +20 -0
- package/{server → dist/server}/plugins/cron/funcs/verifyUnique.js +19 -23
- package/dist/server/plugins/cron/index.js +75 -0
- package/dist/server/plugins/crud/funcs/dataDelete.js +87 -0
- package/dist/server/plugins/crud/funcs/dataInsert.js +134 -0
- package/dist/server/plugins/crud/funcs/dataUpdate.js +198 -0
- package/dist/server/plugins/crud/funcs/getAccess.js +82 -0
- package/dist/server/plugins/crud/funcs/getOpt.js +13 -0
- package/dist/server/plugins/crud/funcs/getToken.js +24 -0
- package/dist/server/plugins/crud/funcs/isFileExists.js +11 -0
- package/dist/server/plugins/crud/funcs/setOpt.js +19 -0
- package/dist/server/plugins/crud/funcs/setToken.js +41 -0
- package/dist/server/plugins/crud/funcs/utils/getFolder.js +13 -0
- package/dist/server/plugins/crud/funcs/utils/getInsertQuery.js +54 -0
- package/dist/server/plugins/crud/funcs/utils/logChanges.js +144 -0
- package/{server → dist/server}/plugins/crud/funcs/validateData.js +91 -83
- package/dist/server/plugins/extra/extraData.js +81 -0
- package/dist/server/plugins/extra/extraDataGet.js +52 -0
- package/dist/server/plugins/file/downloadFile.js +15 -0
- package/{server → dist/server}/plugins/file/getExport.js +18 -38
- package/dist/server/plugins/file/isFileExists.js +13 -0
- package/dist/server/plugins/file/providers/fs.js +86 -0
- package/dist/server/plugins/file/providers/index.js +28 -0
- package/dist/server/plugins/file/providers/mime/index.js +7 -0
- package/dist/server/plugins/file/providers/mime/mimes.js +1179 -0
- package/dist/server/plugins/file/providers/s3/client.js +26 -0
- package/dist/server/plugins/file/providers/s3/funcs/downloadFile.js +42 -0
- package/dist/server/plugins/file/providers/s3/funcs/fileExists.js +24 -0
- package/dist/server/plugins/file/providers/s3/funcs/uploadFile.js +35 -0
- package/dist/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +18 -0
- package/{server → dist/server}/plugins/file/providers/s3/index.js +11 -12
- package/dist/server/plugins/file/providers/utils/getDataSize.js +19 -0
- package/dist/server/plugins/file/providers/utils/getValidData.js +30 -0
- package/dist/server/plugins/file/providers/utils/handlers/dataTypes.js +7 -0
- package/dist/server/plugins/file/providers/utils/handlers/index.js +50 -0
- package/dist/server/plugins/file/providers/utils/handlers/sizeHandlers.js +9 -0
- package/dist/server/plugins/file/providers/utils/streamToBuffer.js +7 -0
- package/{server → dist/server}/plugins/file/providers/utils/typeguards/isArray.js +2 -3
- package/{server → dist/server}/plugins/file/providers/utils/typeguards/isBuffer.js +2 -3
- package/dist/server/plugins/file/providers/utils/typeguards/isPath.js +3 -0
- package/dist/server/plugins/file/providers/utils/typeguards/isReadableStream.js +7 -0
- package/{server → dist/server}/plugins/file/providers/utils/typeguards/isText.js +2 -3
- package/dist/server/plugins/file/uploadFile.js +14 -0
- package/dist/server/plugins/file/uploadMultiPart.js +101 -0
- package/dist/server/plugins/file/utils/allowedExtensions.js +60 -0
- package/{server → dist/server}/plugins/file/utils/getFileType.js +12 -10
- package/dist/server/plugins/file/utils/getPath.js +30 -0
- package/dist/server/plugins/file/utils/isFileExists.js +15 -0
- package/dist/server/plugins/grpc/file2json.js +50 -0
- package/dist/server/plugins/grpc/grpc.js +103 -0
- package/dist/server/plugins/grpc/office2pdf.js +78 -0
- package/dist/server/plugins/grpc/utils/csv2xls.js +6 -0
- package/dist/server/plugins/grpc/utils/excel2Json.js +10 -0
- package/dist/server/plugins/grpc/utils/html2doc.js +17 -0
- package/dist/server/plugins/grpc/utils/html2img.js +17 -0
- package/dist/server/plugins/grpc/utils/html2pdf.js +19 -0
- package/{server → dist/server}/plugins/grpc/utils/htmlTemplate.js +3 -4
- package/dist/server/plugins/grpc/utils/json2xls.js +11 -0
- package/dist/server/plugins/grpc/utils/mergePdf.js +18 -0
- package/dist/server/plugins/hook/funcs/addHook.js +7 -0
- package/dist/server/plugins/hook/funcs/applyHook.js +25 -0
- package/dist/server/plugins/hook/funcs/applyHookSync.js +7 -0
- package/dist/server/plugins/hook/hookList.js +2 -0
- package/{server → dist/server}/plugins/hook/index.js +7 -8
- package/dist/server/plugins/logger/createFileStream.js +79 -0
- package/dist/server/plugins/logger/errorMessage.js +24 -0
- package/dist/server/plugins/logger/errorStatus.js +17 -0
- package/dist/server/plugins/logger/getHooks.js +17 -0
- package/dist/server/plugins/logger/getLogger.js +52 -0
- package/dist/server/plugins/logger/index.js +37 -0
- package/dist/server/plugins/logger/labels.js +10 -0
- package/dist/server/plugins/logger/serializers.js +22 -0
- package/{server → dist/server}/plugins/logger/timestampWithTimeZone.js +5 -5
- package/dist/server/plugins/md/funcs/formatMdoc.js +45 -0
- package/{server → dist/server}/plugins/md/funcs/mdToHTML.js +16 -17
- package/dist/server/plugins/metric/index.js +6 -0
- package/dist/server/plugins/metric/loggerSystem.js +127 -0
- package/dist/server/plugins/metric/systemMetricsFifthly.js +20 -0
- package/dist/server/plugins/migration/exec.migrations.js +59 -0
- package/dist/server/plugins/migration/exec.sql.js +61 -0
- package/{server → dist/server}/plugins/migration/index.js +5 -7
- package/dist/server/plugins/pg/funcs/autoIndex.js +102 -0
- package/{server → dist/server}/plugins/pg/funcs/getDBParams.js +16 -15
- package/dist/server/plugins/pg/funcs/getMeta.js +48 -0
- package/dist/server/plugins/pg/funcs/getPG.js +39 -0
- package/dist/server/plugins/pg/funcs/getPGAsync.js +45 -0
- package/dist/server/plugins/pg/funcs/init.js +157 -0
- package/dist/server/plugins/pg/index.js +47 -0
- package/dist/server/plugins/pg/pgClients.js +20 -0
- package/dist/server/plugins/policy/funcs/checkPolicy.js +173 -0
- package/dist/server/plugins/policy/funcs/checkXSS.js +44 -0
- package/dist/server/plugins/policy/index.js +11 -0
- package/dist/server/plugins/policy/sqlInjection.js +33 -0
- package/dist/server/plugins/policy/xssInjection.js +72 -0
- package/{server → dist/server}/plugins/redis/client.js +6 -8
- package/dist/server/plugins/redis/funcs/getRedis.js +23 -0
- package/{server → dist/server}/plugins/redis/funcs/redisClients.js +2 -3
- package/dist/server/plugins/redis/index.js +8 -0
- package/dist/server/plugins/sqlite/funcs/getSqlite.js +27 -0
- package/dist/server/plugins/sqlite/funcs/init.js +45 -0
- package/dist/server/plugins/sqlite/index.js +8 -0
- package/dist/server/plugins/sqlite/sqliteClients.js +24 -0
- package/dist/server/plugins/table/funcs/addMenu.js +12 -0
- package/dist/server/plugins/table/funcs/addTemplateDir.js +16 -0
- package/dist/server/plugins/table/funcs/customTokens.js +2 -0
- package/dist/server/plugins/table/funcs/getData.js +25 -0
- package/dist/server/plugins/table/funcs/getFilter.js +18 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/index.js +201 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +131 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +11 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +84 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +11 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +161 -0
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +40 -0
- package/dist/server/plugins/table/funcs/getSelect.js +37 -0
- package/dist/server/plugins/table/funcs/getSelectMeta.js +77 -0
- package/dist/server/plugins/table/funcs/getTemplate.js +86 -0
- package/dist/server/plugins/table/funcs/getTemplatePath.js +60 -0
- package/dist/server/plugins/table/funcs/getTemplateSync.js +84 -0
- package/dist/server/plugins/table/funcs/getTemplates.js +15 -0
- package/dist/server/plugins/table/funcs/gisIRColumn.js +81 -0
- package/dist/server/plugins/table/funcs/loadTemplate.js +2 -0
- package/dist/server/plugins/table/funcs/loadTemplatePath.js +2 -0
- package/dist/server/plugins/table/funcs/menuDirs.js +2 -0
- package/dist/server/plugins/table/funcs/metaFormat/getSelectVal.js +75 -0
- package/dist/server/plugins/table/funcs/metaFormat/index.js +64 -0
- package/dist/server/plugins/table/funcs/userTemplateDir.js +2 -0
- package/dist/server/plugins/table/funcs/userTokens.js +2 -0
- package/dist/server/plugins/util/funcs/eventStream.js +28 -0
- package/{server → dist/server}/plugins/util/funcs/flattenObject.js +14 -12
- package/{server → dist/server}/plugins/util/funcs/unflattenObject.js +48 -46
- package/{server → dist/server}/plugins/yml/funcs/json2yml.js +3 -5
- package/{server → dist/server}/plugins/yml/funcs/yml2json.js +11 -14
- package/{server → dist/server}/routes/access/controllers/access.group.js +17 -23
- package/{server → dist/server}/routes/access/controllers/access.group.post.js +46 -53
- package/dist/server/routes/access/controllers/access.interface.js +36 -0
- package/{server/routes/access/index.mjs → dist/server/routes/access/index.js} +10 -12
- package/{server/routes/access/schema.mjs → dist/server/routes/access/schema.js} +65 -68
- package/dist/server/routes/cron/controllers/cronApi.js +16 -0
- package/dist/server/routes/cron/index.js +15 -0
- package/dist/server/routes/crud/controllers/deleteCrud.js +90 -0
- package/dist/server/routes/crud/controllers/insert.js +110 -0
- package/dist/server/routes/crud/controllers/table.js +144 -0
- package/dist/server/routes/crud/controllers/update.js +113 -0
- package/dist/server/routes/crud/index.js +22 -0
- package/dist/server/routes/dblist/controllers/readItems.js +25 -0
- package/dist/server/routes/dblist/controllers/setItem.js +20 -0
- package/dist/server/routes/dblist/index.js +17 -0
- package/dist/server/routes/dblist/utils/formatData.js +8 -0
- package/dist/server/routes/file/controllers/delete.js +99 -0
- package/dist/server/routes/file/controllers/download.js +56 -0
- package/dist/server/routes/file/controllers/export.js +294 -0
- package/dist/server/routes/file/controllers/files.js +57 -0
- package/dist/server/routes/file/controllers/resize.js +86 -0
- package/dist/server/routes/file/controllers/resizeAll.js +140 -0
- package/dist/server/routes/file/controllers/upload.js +56 -0
- package/dist/server/routes/file/controllers/uploadImage.js +45 -0
- package/dist/server/routes/file/controllers/utils/formatResult.js +13 -0
- package/dist/server/routes/file/controllers/utils/jsonToCsv.js +40 -0
- package/dist/server/routes/file/controllers/utils/jsonToXls.js +37 -0
- package/dist/server/routes/file/index.js +22 -0
- package/dist/server/routes/file/schema.js +14 -0
- package/dist/server/routes/grpc/controllers/file2geojson.js +54 -0
- package/dist/server/routes/grpc/controllers/filePreview.js +87 -0
- package/dist/server/routes/grpc/index.js +9 -0
- package/dist/server/routes/logger/controllers/logger.file.js +81 -0
- package/dist/server/routes/logger/controllers/logger.test.api.js +42 -0
- package/dist/server/routes/logger/controllers/utils/checkUserAccess.js +22 -0
- package/dist/server/routes/logger/controllers/utils/getRootDir.js +25 -0
- package/dist/server/routes/logger/index.js +18 -0
- package/dist/server/routes/menu/controllers/getMenu.js +98 -0
- package/dist/server/routes/menu/controllers/interfaces.js +18 -0
- package/dist/server/routes/menu/index.js +7 -0
- package/dist/server/routes/properties/controllers/properties.get.js +23 -0
- package/dist/server/routes/properties/controllers/properties.post.js +68 -0
- package/dist/server/routes/properties/index.js +21 -0
- package/dist/server/routes/table/controllers/card.js +79 -0
- package/dist/server/routes/table/controllers/cardData.js +161 -0
- package/dist/server/routes/table/controllers/cardTabData.js +49 -0
- package/dist/server/routes/table/controllers/dataInfo.js +57 -0
- package/dist/server/routes/table/controllers/filter.js +181 -0
- package/dist/server/routes/table/controllers/form.js +41 -0
- package/{server → dist/server}/routes/table/controllers/getFormByTable.js +105 -125
- package/dist/server/routes/table/controllers/search.js +80 -0
- package/dist/server/routes/table/controllers/suggest.js +242 -0
- package/dist/server/routes/table/controllers/tableData.js +88 -0
- package/dist/server/routes/table/controllers/tableInfo.js +112 -0
- package/dist/server/routes/table/controllers/tokenInfo.js +10 -0
- package/dist/server/routes/table/controllers/utils/conditions.js +30 -0
- package/dist/server/routes/table/controllers/utils/formatSchema.js +35 -0
- package/dist/server/routes/table/controllers/utils/locales.js +2 -0
- package/dist/server/routes/table/functions/getData.js +584 -0
- package/dist/server/routes/table/index.js +44 -0
- package/dist/server/routes/table/schema.js +117 -0
- package/dist/server/routes/templates/controllers/getTemplate.js +65 -0
- package/dist/server/routes/templates/index.js +7 -0
- package/{server → dist/server}/routes/templates/schema.js +11 -12
- package/dist/server/routes/util/controllers/code.generator.js +75 -0
- package/dist/server/routes/util/controllers/next.id.js +4 -0
- package/dist/server/routes/util/controllers/status.monitor.js +6 -0
- package/dist/server/routes/util/controllers/user.tokens.js +32 -0
- package/dist/server/routes/util/index.js +13 -0
- package/dist/server/routes/widget/controllers/file.edit.js +48 -0
- package/dist/server/routes/widget/controllers/widget.del.js +84 -0
- package/dist/server/routes/widget/controllers/widget.get.js +164 -0
- package/dist/server/routes/widget/controllers/widget.set.js +117 -0
- package/dist/server/routes/widget/hook/onWidgetSet.js +10 -0
- package/dist/server/routes/widget/index.js +42 -0
- package/dist/server/types/core.js +12 -0
- package/dist/utils.js +93 -0
- package/package.json +24 -17
- package/config.js +0 -37
- package/dblist.js +0 -5
- package/index.js +0 -193
- package/redactionList.js +0 -7
- package/server/helpers/core/badge.js +0 -14
- package/server/helpers/core/buttonFilePreview.js +0 -12
- package/server/helpers/core/buttonHelper.js +0 -22
- package/server/helpers/format/formatAuto.js +0 -13
- package/server/helpers/format/formatDate.js +0 -258
- package/server/helpers/format/formatNum.js +0 -365
- package/server/helpers/format/formatRelative.js +0 -106
- package/server/helpers/funcs/ifCond.js +0 -109
- package/server/helpers/funcs/ifCondAnd.js +0 -114
- package/server/helpers/funcs/ifCondOr.js +0 -115
- package/server/helpers/funcs/qrcode.js +0 -68
- package/server/helpers/funcs/select.js +0 -46
- package/server/helpers/index.js +0 -137
- package/server/helpers/list/buttonHelper.js +0 -22
- package/server/helpers/list/tableList.js +0 -87
- package/server/helpers/string/utils/alphabet.js +0 -76
- package/server/helpers/utils/buttonEdit.js +0 -17
- package/server/migrations/0.sql +0 -84
- package/server/migrations/cls.sql +0 -40
- package/server/migrations/context.sql +0 -135
- package/server/migrations/crm.sql +0 -155
- package/server/migrations/log.sql +0 -87
- package/server/migrations/properties.sql +0 -115
- package/server/migrations/roles.sql +0 -191
- package/server/migrations/template.sql +0 -44
- package/server/migrations/users.sql +0 -176
- package/server/plugins/access/funcs/getAdminAccess.js +0 -14
- package/server/plugins/access/index.mjs +0 -6
- package/server/plugins/cron/cronList.js +0 -1
- package/server/plugins/cron/funcs/addCron.js +0 -52
- package/server/plugins/cron/funcs/runCron.js +0 -24
- package/server/plugins/cron/index.js +0 -77
- package/server/plugins/crud/funcs/dataDelete.js +0 -86
- package/server/plugins/crud/funcs/dataInsert.js +0 -131
- package/server/plugins/crud/funcs/dataUpdate.js +0 -179
- package/server/plugins/crud/funcs/getAccess.js +0 -94
- package/server/plugins/crud/funcs/getOpt.js +0 -14
- package/server/plugins/crud/funcs/getToken.js +0 -33
- package/server/plugins/crud/funcs/isFileExists.js +0 -13
- package/server/plugins/crud/funcs/setOpt.js +0 -21
- package/server/plugins/crud/funcs/setToken.js +0 -43
- package/server/plugins/crud/funcs/utils/getFolder.js +0 -11
- package/server/plugins/crud/funcs/utils/getInsertQuery.js +0 -44
- package/server/plugins/crud/funcs/utils/logChanges.js +0 -121
- package/server/plugins/crud/index.js +0 -23
- package/server/plugins/extra/extraData.js +0 -79
- package/server/plugins/extra/extraDataGet.js +0 -56
- package/server/plugins/file/downloadFile.js +0 -18
- package/server/plugins/file/isFileExists.js +0 -17
- package/server/plugins/file/providers/fs.js +0 -100
- package/server/plugins/file/providers/index.d.ts +0 -49
- package/server/plugins/file/providers/index.js +0 -36
- package/server/plugins/file/providers/mime/index.js +0 -12
- package/server/plugins/file/providers/mime/mimes.js +0 -1180
- package/server/plugins/file/providers/s3/client.js +0 -41
- package/server/plugins/file/providers/s3/funcs/downloadFile.js +0 -50
- package/server/plugins/file/providers/s3/funcs/fileExists.js +0 -32
- package/server/plugins/file/providers/s3/funcs/uploadFile.js +0 -46
- package/server/plugins/file/providers/s3/funcs/utils/getS3FilePath.js +0 -23
- package/server/plugins/file/providers/utils/getDataSize.js +0 -20
- package/server/plugins/file/providers/utils/getValidData.js +0 -32
- package/server/plugins/file/providers/utils/handlers/dataTypes.js +0 -8
- package/server/plugins/file/providers/utils/handlers/index.js +0 -53
- package/server/plugins/file/providers/utils/handlers/sizeHandlers.js +0 -11
- package/server/plugins/file/providers/utils/streamToBuffer.js +0 -8
- package/server/plugins/file/providers/utils/typeguards/isPath.js +0 -5
- package/server/plugins/file/providers/utils/typeguards/isReadableStream.js +0 -8
- package/server/plugins/file/uploadFile.js +0 -19
- package/server/plugins/file/uploadMultiPart.js +0 -131
- package/server/plugins/file/utils/allowedExtensions.js +0 -25
- package/server/plugins/file/utils/getPath.js +0 -25
- package/server/plugins/file/utils/isFileExists.js +0 -16
- package/server/plugins/grpc/file2json.js +0 -54
- package/server/plugins/grpc/grpc.js +0 -125
- package/server/plugins/grpc/office2pdf.js +0 -91
- package/server/plugins/grpc/utils/csv2xls.js +0 -8
- package/server/plugins/grpc/utils/excel2Json.js +0 -8
- package/server/plugins/grpc/utils/html2doc.js +0 -19
- package/server/plugins/grpc/utils/html2img.js +0 -18
- package/server/plugins/grpc/utils/html2pdf.js +0 -23
- package/server/plugins/grpc/utils/json2xls.js +0 -13
- package/server/plugins/grpc/utils/mergePdf.js +0 -20
- package/server/plugins/hook/funcs/addHook.js +0 -8
- package/server/plugins/hook/funcs/applyHook.js +0 -25
- package/server/plugins/hook/funcs/applyHookSync.js +0 -9
- package/server/plugins/hook/hookList.js +0 -1
- package/server/plugins/logger/createFileStream.js +0 -88
- package/server/plugins/logger/errorMessage.js +0 -25
- package/server/plugins/logger/errorStatus.js +0 -19
- package/server/plugins/logger/getHooks.js +0 -21
- package/server/plugins/logger/getLogger.js +0 -58
- package/server/plugins/logger/index.js +0 -33
- package/server/plugins/logger/labels.js +0 -11
- package/server/plugins/logger/serializers.js +0 -25
- package/server/plugins/md/funcs/formatMdoc.js +0 -40
- package/server/plugins/metric/index.js +0 -8
- package/server/plugins/metric/loggerSystem.js +0 -131
- package/server/plugins/metric/systemMetricsFifthly.js +0 -24
- package/server/plugins/migration/exec.migrations.js +0 -63
- package/server/plugins/migration/exec.sql.js +0 -67
- package/server/plugins/pg/funcs/autoIndex.js +0 -103
- package/server/plugins/pg/funcs/getMeta.js +0 -49
- package/server/plugins/pg/funcs/getPG.js +0 -42
- package/server/plugins/pg/funcs/getPGAsync.js +0 -62
- package/server/plugins/pg/funcs/init.js +0 -117
- package/server/plugins/pg/index.js +0 -54
- package/server/plugins/pg/pgClients.js +0 -22
- package/server/plugins/policy/funcs/checkPolicy.js +0 -127
- package/server/plugins/policy/funcs/checkXSS.js +0 -37
- package/server/plugins/policy/index.js +0 -11
- package/server/plugins/policy/sqlInjection.js +0 -34
- package/server/plugins/policy/xssInjection.js +0 -73
- package/server/plugins/redis/funcs/getRedis.js +0 -25
- package/server/plugins/redis/index.js +0 -17
- package/server/plugins/sqlite/funcs/getSqlite.js +0 -39
- package/server/plugins/sqlite/funcs/init.js +0 -53
- package/server/plugins/sqlite/index.js +0 -11
- package/server/plugins/sqlite/sqliteClients.js +0 -26
- package/server/plugins/table/funcs/addMenu.js +0 -16
- package/server/plugins/table/funcs/addTemplateDir.js +0 -19
- package/server/plugins/table/funcs/customTokens.js +0 -1
- package/server/plugins/table/funcs/getData.js +0 -14
- package/server/plugins/table/funcs/getFilter.js +0 -14
- package/server/plugins/table/funcs/getFilterSQL/index.js +0 -163
- package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +0 -136
- package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +0 -13
- package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +0 -75
- package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +0 -12
- package/server/plugins/table/funcs/getFilterSQL/util/getRangeQuery.js +0 -156
- package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +0 -34
- package/server/plugins/table/funcs/getSelect.js +0 -31
- package/server/plugins/table/funcs/getSelectMeta.js +0 -74
- package/server/plugins/table/funcs/getTemplate.js +0 -88
- package/server/plugins/table/funcs/getTemplatePath.js +0 -60
- package/server/plugins/table/funcs/getTemplateSync.js +0 -87
- package/server/plugins/table/funcs/getTemplates.js +0 -19
- package/server/plugins/table/funcs/gisIRColumn.js +0 -82
- package/server/plugins/table/funcs/loadTemplate.js +0 -1
- package/server/plugins/table/funcs/loadTemplatePath.js +0 -1
- package/server/plugins/table/funcs/menuDirs.js +0 -1
- package/server/plugins/table/funcs/metaFormat/getSelectVal.js +0 -61
- package/server/plugins/table/funcs/metaFormat/index.js +0 -49
- package/server/plugins/table/funcs/userTemplateDir.js +0 -1
- package/server/plugins/table/funcs/userTokens.js +0 -1
- package/server/plugins/table/index.js +0 -13
- package/server/plugins/util/funcs/eventStream.js +0 -29
- package/server/plugins/util/index.js +0 -7
- package/server/routes/access/controllers/access.interface.js +0 -37
- package/server/routes/cron/controllers/cronApi.js +0 -22
- package/server/routes/cron/index.js +0 -19
- package/server/routes/crud/controllers/deleteCrud.js +0 -84
- package/server/routes/crud/controllers/insert.js +0 -103
- package/server/routes/crud/controllers/table.js +0 -116
- package/server/routes/crud/controllers/update.js +0 -108
- package/server/routes/crud/index.js +0 -26
- package/server/routes/dblist/controllers/readItems.js +0 -28
- package/server/routes/dblist/controllers/setItem.js +0 -25
- package/server/routes/dblist/index.mjs +0 -19
- package/server/routes/dblist/utils/formatData.js +0 -7
- package/server/routes/file/controllers/delete.js +0 -108
- package/server/routes/file/controllers/download.js +0 -66
- package/server/routes/file/controllers/export.js +0 -290
- package/server/routes/file/controllers/files.js +0 -72
- package/server/routes/file/controllers/resize.js +0 -96
- package/server/routes/file/controllers/resizeAll.js +0 -165
- package/server/routes/file/controllers/upload.js +0 -55
- package/server/routes/file/controllers/uploadImage.js +0 -47
- package/server/routes/file/controllers/utils/formatResult.js +0 -17
- package/server/routes/file/controllers/utils/jsonToCsv.js +0 -36
- package/server/routes/file/controllers/utils/jsonToXls.js +0 -42
- package/server/routes/file/index.mjs +0 -26
- package/server/routes/file/schema.js +0 -16
- package/server/routes/grpc/controllers/file2geojson.js +0 -60
- package/server/routes/grpc/controllers/filePreview.js +0 -89
- package/server/routes/grpc/index.mjs +0 -12
- package/server/routes/logger/controllers/logger.file.js +0 -97
- package/server/routes/logger/controllers/logger.test.api.js +0 -48
- package/server/routes/logger/controllers/utils/checkUserAccess.js +0 -24
- package/server/routes/logger/controllers/utils/getRootDir.js +0 -27
- package/server/routes/logger/index.js +0 -22
- package/server/routes/menu/controllers/getMenu.js +0 -98
- package/server/routes/menu/controllers/interfaces.js +0 -21
- package/server/routes/menu/index.mjs +0 -8
- package/server/routes/menu/schema.js +0 -0
- package/server/routes/properties/controllers/properties.get.js +0 -33
- package/server/routes/properties/controllers/properties.post.js +0 -76
- package/server/routes/properties/index.js +0 -25
- package/server/routes/table/controllers/card.js +0 -77
- package/server/routes/table/controllers/cardData.js +0 -155
- package/server/routes/table/controllers/cardTabData.js +0 -57
- package/server/routes/table/controllers/dataInfo.js +0 -56
- package/server/routes/table/controllers/filter.js +0 -154
- package/server/routes/table/controllers/form.js +0 -42
- package/server/routes/table/controllers/search.js +0 -74
- package/server/routes/table/controllers/suggest.js +0 -246
- package/server/routes/table/controllers/tableData.js +0 -62
- package/server/routes/table/controllers/tableInfo.js +0 -110
- package/server/routes/table/controllers/tokenInfo.js +0 -12
- package/server/routes/table/controllers/utils/conditions.js +0 -21
- package/server/routes/table/controllers/utils/formatSchema.js +0 -23
- package/server/routes/table/controllers/utils/locales.js +0 -1
- package/server/routes/table/functions/getData.js +0 -436
- package/server/routes/table/index.js +0 -57
- package/server/routes/table/schema.js +0 -127
- package/server/routes/templates/controllers/getTemplate.js +0 -51
- package/server/routes/templates/index.mjs +0 -10
- package/server/routes/util/controllers/code.generator.js +0 -94
- package/server/routes/util/controllers/next.id.js +0 -4
- package/server/routes/util/controllers/status.monitor.js +0 -8
- package/server/routes/util/controllers/user.tokens.js +0 -45
- package/server/routes/util/index.js +0 -14
- package/server/routes/widget/controllers/file.edit.js +0 -55
- package/server/routes/widget/controllers/widget.del.js +0 -99
- package/server/routes/widget/controllers/widget.get.js +0 -156
- package/server/routes/widget/controllers/widget.set.js +0 -108
- package/server/routes/widget/hook/onWidgetSet.js +0 -13
- package/server/routes/widget/index.mjs +0 -38
- package/utils.js +0 -112
- /package/{server → dist/server}/plugins/grpc/utils/convertp.proto +0 -0
- /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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
if (d === true)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
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
|
+
}
|