@opengis/admin 0.1.76 → 0.1.78
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/README.md +29 -29
- package/config.js +4 -4
- package/dist/{IconChevronDown-BMnTiJIv.js → IconChevronDown-DWLdkAUG.js} +1 -1
- package/dist/{add-page-BxK4iJe4.js → add-page-GDPnGgQK.js} +1 -1
- package/dist/{admin-interface-D9vWpTqM.js → admin-interface-DOqhM3SD.js} +4 -4
- package/dist/{admin-view-DPtlpZue.js → admin-view-xnJ3u3oI.js} +3 -3
- package/dist/admin.js +1 -1
- package/dist/admin.umd.cjs +41 -25
- package/dist/assets/logo.svg +41 -41
- package/dist/{card-page-KnsaeAPW.js → card-page-DhYFr0FI.js} +52 -50
- package/dist/{card-view-BAC53pSQ.js → card-view-CuKF08UR.js} +1 -1
- package/dist/{edit-page-D2KM1hue.js → edit-page-J0eDzIuJ.js} +1 -1
- package/dist/{import-file-C3Slz6rJ.js → import-file-REG5YZVe.js} +4905 -4713
- package/dist/style.css +1 -1
- package/module/settings/card/admin.roles.table/access.hbs +27 -27
- package/module/settings/card/admin.roles.table/general_info.hbs +16 -16
- package/module/settings/card/admin.roles.table/index.yml +14 -14
- package/module/settings/card/admin.roles.table/users.hbs +27 -27
- package/module/settings/card/admin.routes.table/general_info.hbs +40 -40
- package/module/settings/card/admin.routes.table/index.yml +8 -8
- package/module/settings/card/admin.routes.table/users.hbs +33 -33
- package/module/settings/card/admin.users.table/general_info.hbs +25 -25
- package/module/settings/card/admin.users.table/index.yml +12 -12
- package/module/settings/card/admin.users.table/logs.hbs +30 -30
- package/module/settings/card/admin.users.table/user_roles.hbs +24 -24
- package/module/settings/cls/core.actions.json +13 -13
- package/module/settings/cls/core.scope.json +13 -13
- package/module/settings/cls/properties.site_status.json +13 -13
- package/module/settings/cls/properties.widget_status.json +13 -13
- package/module/settings/cls/users.user_type.json +13 -13
- package/module/settings/form/admin.access.form.json +36 -36
- package/module/settings/form/admin.custom_column.form.json +71 -71
- package/module/settings/form/admin.properties.form.json +15 -15
- package/module/settings/form/admin.roles.form.json +19 -19
- package/module/settings/form/admin.routes.form.json +25 -25
- package/module/settings/form/admin.user_properties.form.json +15 -15
- package/module/settings/form/admin.user_roles.form.json +21 -21
- package/module/settings/form/admin.users.form.json +153 -153
- package/module/settings/form/user.user_roles.form.json +13 -13
- package/module/settings/interface/admin.properties.json +4 -4
- package/module/settings/interface/admin.roles.json +4 -4
- package/module/settings/interface/admin.routes.json +4 -4
- package/module/settings/interface/admin.users.json +4 -4
- package/module/settings/menu.json +50 -50
- package/module/settings/select/core.roles.json +2 -2
- package/module/settings/select/core.routes.sql +1 -1
- package/module/settings/select/core.user_mentioned.sql +1 -1
- package/module/settings/select/core.user_uid.sql +1 -1
- package/module/settings/table/admin.access.table.json +83 -83
- package/module/settings/table/admin.custom_column.table.json +99 -99
- package/module/settings/table/admin.properties.table.json +39 -39
- package/module/settings/table/admin.roles.table.json +64 -64
- package/module/settings/table/admin.routes.table.json +68 -68
- package/module/settings/table/admin.user_properties.table.json +34 -34
- package/module/settings/table/admin.user_roles.table.json +72 -72
- package/module/settings/table/admin.users.table.json +121 -121
- package/package.json +82 -82
- package/plugin.js +27 -27
- package/server/helpers/controllers/badge.js +11 -11
- package/server/helpers/controllers/hb.js +2 -2
- package/server/helpers/controllers/map.js +2 -2
- package/server/helpers/controllers/mls.js +2 -2
- package/server/helpers/controllers/vue.js +2 -2
- package/server/helpers/index.mjs +15 -15
- package/server/plugins/adminHook.js +93 -93
- package/server/plugins/cron.js +10 -10
- package/server/plugins/docs.js +28 -28
- package/server/plugins/hook.js +214 -214
- package/server/plugins/vite.js +71 -71
- package/server/routes/calendar/controllers/calendar.data.js +88 -88
- package/server/routes/calendar/index.mjs +7 -7
- package/server/routes/calendar/schema.js +21 -21
- package/server/routes/data/controllers/cardData.js +61 -57
- package/server/routes/data/controllers/cardTabData.js +49 -49
- package/server/routes/data/controllers/funcs/getFilterSQL/index.js +92 -92
- package/server/routes/data/controllers/funcs/getFilterSQL/util/formatValue.js +170 -170
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getFilterQuery.js +64 -64
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getTableSql.js +34 -34
- package/server/routes/data/controllers/tableData.js +11 -11
- package/server/routes/data/controllers/tableDataId.js +27 -27
- package/server/routes/data/controllers/tableFilter.js +63 -63
- package/server/routes/data/controllers/utils/assignTokens.js +30 -30
- package/server/routes/data/controllers/utils/getColumns.js +8 -8
- package/server/routes/data/index.mjs +15 -15
- package/server/routes/data/schema.js +54 -54
- package/server/routes/menu/controllers/getMenu.js +67 -67
- package/server/routes/menu/index.mjs +5 -5
- package/server/routes/notifications/controllers/readNotifications.js +27 -27
- package/server/routes/notifications/controllers/testEmail.js +35 -35
- package/server/routes/notifications/controllers/userNotifications.js +57 -57
- package/server/routes/notifications/funcs/addNotification.js +21 -21
- package/server/routes/notifications/funcs/sendNotification.js +105 -105
- package/server/routes/notifications/hook/onWidgetSet.js +57 -57
- package/server/routes/notifications/index.mjs +27 -27
- package/server/routes/notifications/schema.js +16 -16
- package/server/routes/properties/controllers/admin.properties.get.js +29 -29
- package/server/routes/properties/controllers/user.properties.get.js +34 -34
- package/server/routes/properties/controllers/user.properties.post.js +30 -30
- package/server/routes/properties/funcs/getSettings.js +56 -56
- package/server/routes/properties/funcs/setSettings.js +44 -44
- package/server/routes/properties/funcs/utils/dataInsert.js +26 -26
- package/server/routes/properties/index.mjs +14 -14
- package/server/routes/properties/schema.js +10 -10
- package/server/routes/root.mjs +3 -3
- package/server/routes/templates/controllers/getTemplate.js +22 -22
- package/server/routes/templates/index.mjs +14 -14
- package/server/routes/templates/scheme.js +8 -8
- package/server/routes/user/controllers/user.cls.id.js +14 -14
- package/server/routes/user/controllers/user.cls.js +71 -71
- package/server/routes/user/controllers/user.cls.post.js +52 -52
- package/server/routes/user/controllers/user.info.js +17 -17
- package/server/routes/user/schema.js +14 -14
- package/server/routes/widget/controllers/utils/historyFormat.js +75 -75
- package/server/routes/widget/controllers/utils/obj2db.js +13 -13
- package/server/routes/widget/controllers/widget.del.js +41 -41
- package/server/routes/widget/controllers/widget.get.js +96 -96
- package/server/routes/widget/controllers/widget.set.js +76 -76
- package/server/routes/widget/index.mjs +39 -39
- package/server/templates/cls/itree.recrzone_category.json +73 -73
- package/server/templates/cls/test.json +9 -9
- package/server/templates/form/admin.user_cls.data.form.json +49 -49
- package/server/templates/form/admin.user_group_rel.form.json +21 -21
- package/server/templates/form/cp_building.form.json +32 -32
- package/server/templates/form/form-user-pass.json +10 -10
- package/server/templates/form/form-user_group.json +39 -39
- package/server/templates/form/form-users.json +156 -156
- package/server/templates/form/user_group_access.form.json +22 -22
- package/server/templates/select/account_id.json +2 -2
- package/server/templates/table/gis.dataset.table.json +43 -43
- package/server/templates/table/management.user_group.table.json +112 -112
- package/server/templates/table/management.users.table.json +126 -126
- package/utils.js +26 -26
package/package.json
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@opengis/admin",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "This project Softpro Admin",
|
|
5
|
-
"main": "dist/admin.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"directories": {
|
|
8
|
-
"test": "test"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"dist/*",
|
|
12
|
-
"module/*",
|
|
13
|
-
"server/*",
|
|
14
|
-
"plugin.js",
|
|
15
|
-
"utils.js",
|
|
16
|
-
"config.js"
|
|
17
|
-
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"test": "node --test test/**/*.test.js",
|
|
20
|
-
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
21
|
-
"build": "vite build",
|
|
22
|
-
"build-app": "cross-env APP=true vite build",
|
|
23
|
-
"admin": "cross-env NODE_ENV=admin npm run start",
|
|
24
|
-
"prod": "cross-env NODE_ENV=production npm run start",
|
|
25
|
-
"start": "node --watch-path=server server vite ",
|
|
26
|
-
"docs:dev": "vitepress dev docs",
|
|
27
|
-
"docs:build": "vitepress build docs",
|
|
28
|
-
"docs:preview": "vitepress preview docs"
|
|
29
|
-
},
|
|
30
|
-
"keywords": [],
|
|
31
|
-
"author": "Softpro",
|
|
32
|
-
"license": "ISC",
|
|
33
|
-
"dependencies": {
|
|
34
|
-
"@fancyapps/ui": "^5.0.36",
|
|
35
|
-
"@opengis/admin": "^0.1.69",
|
|
36
|
-
"@opengis/fastify-auth": "^1.0.44",
|
|
37
|
-
"@opengis/fastify-file": "^1.0.27",
|
|
38
|
-
"@opengis/fastify-table": "^1.1.
|
|
39
|
-
"@opengis/v3-core": "^0.2.36",
|
|
40
|
-
"@opengis/v3-filter": "^0.0.39",
|
|
41
|
-
"@tiptap/core": "^2.8.0",
|
|
42
|
-
"@tiptap/extension-color": "^2.8.0",
|
|
43
|
-
"@tiptap/extension-mention": "^2.8.0",
|
|
44
|
-
"@tiptap/extension-placeholder": "^2.8.0",
|
|
45
|
-
"@tiptap/extension-text": "^2.8.0",
|
|
46
|
-
"@tiptap/extension-text-style": "^2.8.0",
|
|
47
|
-
"@tiptap/extension-underline": "^2.8.0",
|
|
48
|
-
"@tiptap/pm": "^2.8.0",
|
|
49
|
-
"@tiptap/starter-kit": "^2.8.0",
|
|
50
|
-
"@tiptap/suggestion": "^2.8.0",
|
|
51
|
-
"@tiptap/vue-3": "^2.8.0",
|
|
52
|
-
"@turf/turf": "^7.1.0",
|
|
53
|
-
"@vitejs/plugin-vue": "^5.0.4",
|
|
54
|
-
"close-with-grace": "^1.3.0",
|
|
55
|
-
"cross-env": "^7.0.3",
|
|
56
|
-
"fastify": "^4.26.1",
|
|
57
|
-
"fastify-plugin": "^4.0.0",
|
|
58
|
-
"maplibre-gl": "^4.7.0",
|
|
59
|
-
"moment": "^2.30.1",
|
|
60
|
-
"vite": "^5.1.4",
|
|
61
|
-
"vue": "^3.4.21",
|
|
62
|
-
"vue-router": "^4.3.0"
|
|
63
|
-
},
|
|
64
|
-
"devDependencies": {
|
|
65
|
-
"@panzoom/panzoom": "^4.5.1",
|
|
66
|
-
"@vue/eslint-config-typescript": "^12.0.0",
|
|
67
|
-
"autoprefixer": "^10.4.20",
|
|
68
|
-
"eslint": "^8.49.0",
|
|
69
|
-
"eslint-config-airbnb": "^19.0.4",
|
|
70
|
-
"eslint-plugin-import": "^2.25.3",
|
|
71
|
-
"eslint-plugin-vue": "^9.17.0",
|
|
72
|
-
"markdown-it-abbr": "^2.0.0",
|
|
73
|
-
"mermaid": "^10.9.0",
|
|
74
|
-
"postcss": "^8.4.47",
|
|
75
|
-
"sass-embedded": "^1.79.1",
|
|
76
|
-
"tailwindcss": "^3.4.13",
|
|
77
|
-
"vitepress": "^1.1.3",
|
|
78
|
-
"vitepress-plugin-mermaid": "^2.0.16",
|
|
79
|
-
"vitepress-plugin-tabs": "^0.5.0",
|
|
80
|
-
"vitepress-sidebar": "^1.22.0"
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@opengis/admin",
|
|
3
|
+
"version": "0.1.78",
|
|
4
|
+
"description": "This project Softpro Admin",
|
|
5
|
+
"main": "dist/admin.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"directories": {
|
|
8
|
+
"test": "test"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/*",
|
|
12
|
+
"module/*",
|
|
13
|
+
"server/*",
|
|
14
|
+
"plugin.js",
|
|
15
|
+
"utils.js",
|
|
16
|
+
"config.js"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"test": "node --test test/**/*.test.js",
|
|
20
|
+
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
21
|
+
"build": "vite build",
|
|
22
|
+
"build-app": "cross-env APP=true vite build",
|
|
23
|
+
"admin": "cross-env NODE_ENV=admin npm run start",
|
|
24
|
+
"prod": "cross-env NODE_ENV=production npm run start",
|
|
25
|
+
"start": "node --watch-path=server server vite ",
|
|
26
|
+
"docs:dev": "vitepress dev docs",
|
|
27
|
+
"docs:build": "vitepress build docs",
|
|
28
|
+
"docs:preview": "vitepress preview docs"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [],
|
|
31
|
+
"author": "Softpro",
|
|
32
|
+
"license": "ISC",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@fancyapps/ui": "^5.0.36",
|
|
35
|
+
"@opengis/admin": "^0.1.69",
|
|
36
|
+
"@opengis/fastify-auth": "^1.0.44",
|
|
37
|
+
"@opengis/fastify-file": "^1.0.27",
|
|
38
|
+
"@opengis/fastify-table": "^1.1.59",
|
|
39
|
+
"@opengis/v3-core": "^0.2.36",
|
|
40
|
+
"@opengis/v3-filter": "^0.0.39",
|
|
41
|
+
"@tiptap/core": "^2.8.0",
|
|
42
|
+
"@tiptap/extension-color": "^2.8.0",
|
|
43
|
+
"@tiptap/extension-mention": "^2.8.0",
|
|
44
|
+
"@tiptap/extension-placeholder": "^2.8.0",
|
|
45
|
+
"@tiptap/extension-text": "^2.8.0",
|
|
46
|
+
"@tiptap/extension-text-style": "^2.8.0",
|
|
47
|
+
"@tiptap/extension-underline": "^2.8.0",
|
|
48
|
+
"@tiptap/pm": "^2.8.0",
|
|
49
|
+
"@tiptap/starter-kit": "^2.8.0",
|
|
50
|
+
"@tiptap/suggestion": "^2.8.0",
|
|
51
|
+
"@tiptap/vue-3": "^2.8.0",
|
|
52
|
+
"@turf/turf": "^7.1.0",
|
|
53
|
+
"@vitejs/plugin-vue": "^5.0.4",
|
|
54
|
+
"close-with-grace": "^1.3.0",
|
|
55
|
+
"cross-env": "^7.0.3",
|
|
56
|
+
"fastify": "^4.26.1",
|
|
57
|
+
"fastify-plugin": "^4.0.0",
|
|
58
|
+
"maplibre-gl": "^4.7.0",
|
|
59
|
+
"moment": "^2.30.1",
|
|
60
|
+
"vite": "^5.1.4",
|
|
61
|
+
"vue": "^3.4.21",
|
|
62
|
+
"vue-router": "^4.3.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@panzoom/panzoom": "^4.5.1",
|
|
66
|
+
"@vue/eslint-config-typescript": "^12.0.0",
|
|
67
|
+
"autoprefixer": "^10.4.20",
|
|
68
|
+
"eslint": "^8.49.0",
|
|
69
|
+
"eslint-config-airbnb": "^19.0.4",
|
|
70
|
+
"eslint-plugin-import": "^2.25.3",
|
|
71
|
+
"eslint-plugin-vue": "^9.17.0",
|
|
72
|
+
"markdown-it-abbr": "^2.0.0",
|
|
73
|
+
"mermaid": "^10.9.0",
|
|
74
|
+
"postcss": "^8.4.47",
|
|
75
|
+
"sass-embedded": "^1.79.1",
|
|
76
|
+
"tailwindcss": "^3.4.13",
|
|
77
|
+
"vitepress": "^1.1.3",
|
|
78
|
+
"vitepress-plugin-mermaid": "^2.0.16",
|
|
79
|
+
"vitepress-plugin-tabs": "^0.5.0",
|
|
80
|
+
"vitepress-sidebar": "^1.22.0"
|
|
81
|
+
}
|
|
82
|
+
}
|
package/plugin.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import fp from 'fastify-plugin';
|
|
2
|
-
|
|
3
|
-
import config from './config.js';
|
|
4
|
-
|
|
5
|
-
config.prefix = config.prefix || '/api';
|
|
6
|
-
|
|
7
|
-
async function plugin(fastify, opts = config) {
|
|
8
|
-
// const prefix = config.prefix || '/api';
|
|
9
|
-
|
|
10
|
-
fastify.register(import('./server/helpers/index.mjs'), opts);
|
|
11
|
-
// fastify.register(import('@opengis/fastify-auth'), config);
|
|
12
|
-
|
|
13
|
-
fastify.register(import('./server/plugins/cron.js'), opts); // cron / scheduler
|
|
14
|
-
fastify.register(import('./server/plugins/hook.js'), opts); // data / template hooks
|
|
15
|
-
|
|
16
|
-
// API
|
|
17
|
-
fastify.register(import('./server/routes/properties/index.mjs'), opts);
|
|
18
|
-
fastify.register(import('./server/routes/calendar/index.mjs'), opts);
|
|
19
|
-
fastify.register(import('./server/routes/notifications/index.mjs'), opts);
|
|
20
|
-
fastify.register(import('./server/routes/templates/index.mjs'), opts);
|
|
21
|
-
fastify.register(import('./server/routes/menu/index.mjs'), opts);
|
|
22
|
-
fastify.register(import('./server/routes/data/index.mjs'), opts);
|
|
23
|
-
|
|
24
|
-
fastify.register(import('./server/routes/user/index.mjs'), opts);
|
|
25
|
-
fastify.register(import('./server/routes/widget/index.mjs'), opts);
|
|
26
|
-
|
|
27
|
-
}
|
|
1
|
+
import fp from 'fastify-plugin';
|
|
2
|
+
|
|
3
|
+
import config from './config.js';
|
|
4
|
+
|
|
5
|
+
config.prefix = config.prefix || '/api';
|
|
6
|
+
|
|
7
|
+
async function plugin(fastify, opts = config) {
|
|
8
|
+
// const prefix = config.prefix || '/api';
|
|
9
|
+
|
|
10
|
+
fastify.register(import('./server/helpers/index.mjs'), opts);
|
|
11
|
+
// fastify.register(import('@opengis/fastify-auth'), config);
|
|
12
|
+
|
|
13
|
+
fastify.register(import('./server/plugins/cron.js'), opts); // cron / scheduler
|
|
14
|
+
fastify.register(import('./server/plugins/hook.js'), opts); // data / template hooks
|
|
15
|
+
|
|
16
|
+
// API
|
|
17
|
+
fastify.register(import('./server/routes/properties/index.mjs'), opts);
|
|
18
|
+
fastify.register(import('./server/routes/calendar/index.mjs'), opts);
|
|
19
|
+
fastify.register(import('./server/routes/notifications/index.mjs'), opts);
|
|
20
|
+
fastify.register(import('./server/routes/templates/index.mjs'), opts);
|
|
21
|
+
fastify.register(import('./server/routes/menu/index.mjs'), opts);
|
|
22
|
+
fastify.register(import('./server/routes/data/index.mjs'), opts);
|
|
23
|
+
|
|
24
|
+
fastify.register(import('./server/routes/user/index.mjs'), opts);
|
|
25
|
+
fastify.register(import('./server/routes/widget/index.mjs'), opts);
|
|
26
|
+
|
|
27
|
+
}
|
|
28
28
|
export default fp(plugin)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export default async function badge(data, options = {}) {
|
|
2
|
-
if (!data) return '-';
|
|
3
|
-
//const cls = await getSelect(options.data, { val: data, full: 1 });
|
|
4
|
-
|
|
5
|
-
return data;
|
|
6
|
-
/*const html = cls?.map((el) => {
|
|
7
|
-
const color = bscolor[el.color] || el.color || '#aaa';
|
|
8
|
-
return `<span class="el-tag el-tag--mini" style="color:${color || '#aaa'};border-color:${color || '#aaa'};background:unset;">
|
|
9
|
-
${funcs.locale(el.id, { lang: root.lang, prefix: opt.data, type: 'cls' }) || el.text}</span>`;
|
|
10
|
-
}).join(', ');
|
|
11
|
-
return html;*/
|
|
1
|
+
export default async function badge(data, options = {}) {
|
|
2
|
+
if (!data) return '-';
|
|
3
|
+
//const cls = await getSelect(options.data, { val: data, full: 1 });
|
|
4
|
+
|
|
5
|
+
return data;
|
|
6
|
+
/*const html = cls?.map((el) => {
|
|
7
|
+
const color = bscolor[el.color] || el.color || '#aaa';
|
|
8
|
+
return `<span class="el-tag el-tag--mini" style="color:${color || '#aaa'};border-color:${color || '#aaa'};background:unset;">
|
|
9
|
+
${funcs.locale(el.id, { lang: root.lang, prefix: opt.data, type: 'cls' }) || el.text}</span>`;
|
|
10
|
+
}).join(', ');
|
|
11
|
+
return html;*/
|
|
12
12
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default async function _hb() {
|
|
2
|
-
return '';
|
|
1
|
+
export default async function _hb() {
|
|
2
|
+
return '';
|
|
3
3
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default async function map() {
|
|
2
|
-
return '';
|
|
1
|
+
export default async function map() {
|
|
2
|
+
return '';
|
|
3
3
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default async function _mls(data, options={}) {
|
|
2
|
-
return data.hash?.ua || options?.hash?.ua || '';
|
|
1
|
+
export default async function _mls(data, options={}) {
|
|
2
|
+
return data.hash?.ua || options?.hash?.ua || '';
|
|
3
3
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export default async function _vue() {
|
|
2
|
-
return '';
|
|
1
|
+
export default async function _vue() {
|
|
2
|
+
return '';
|
|
3
3
|
}
|
package/server/helpers/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import _hb from "./controllers/hb.js";
|
|
2
|
-
import _vue from "./controllers/vue.js";
|
|
3
|
-
import map from "./controllers/map.js";
|
|
4
|
-
import _mls from "./controllers/mls.js";
|
|
5
|
-
import badge from "./controllers/badge.js";
|
|
6
|
-
|
|
7
|
-
import { handlebars } from "@opengis/fastify-table/utils.js";
|
|
8
|
-
|
|
9
|
-
export default async function route(fastify) {
|
|
10
|
-
handlebars.registerHelper('_hb', _hb);
|
|
11
|
-
handlebars.registerHelper('_vue', _vue);
|
|
12
|
-
handlebars.registerHelper('map', map);
|
|
13
|
-
handlebars.registerHelper('mls', _mls);
|
|
14
|
-
handlebars.registerHelper('badge', badge);
|
|
15
|
-
}
|
|
1
|
+
import _hb from "./controllers/hb.js";
|
|
2
|
+
import _vue from "./controllers/vue.js";
|
|
3
|
+
import map from "./controllers/map.js";
|
|
4
|
+
import _mls from "./controllers/mls.js";
|
|
5
|
+
import badge from "./controllers/badge.js";
|
|
6
|
+
|
|
7
|
+
import { handlebars } from "@opengis/fastify-table/utils.js";
|
|
8
|
+
|
|
9
|
+
export default async function route(fastify) {
|
|
10
|
+
handlebars.registerHelper('_hb', _hb);
|
|
11
|
+
handlebars.registerHelper('_vue', _vue);
|
|
12
|
+
handlebars.registerHelper('map', map);
|
|
13
|
+
handlebars.registerHelper('mls', _mls);
|
|
14
|
+
handlebars.registerHelper('badge', badge);
|
|
15
|
+
}
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import fp from 'fastify-plugin';
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
|
|
5
|
-
import { getTemplatePath, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
|
|
6
|
-
|
|
7
|
-
import getMenu from '../routes/menu/controllers/getMenu.js';
|
|
8
|
-
|
|
9
|
-
import config from '../../config.js';
|
|
10
|
-
|
|
11
|
-
// to export the decorators to the outer scope
|
|
12
|
-
|
|
13
|
-
async function plugin(fastify) {
|
|
14
|
-
fastify.decorate('config', config);
|
|
15
|
-
|
|
16
|
-
// pre Request
|
|
17
|
-
fastify.addHook('onRequest', async (req) => {
|
|
18
|
-
req.funcs = fastify;
|
|
19
|
-
const { user } = req.session?.passport || {};
|
|
20
|
-
req.user = user;
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// preSerialization
|
|
24
|
-
fastify.addHook('preSerialization', async (req, reply, payload) => {
|
|
25
|
-
if (req.url.includes('/suggest/') && !req.query.json) {
|
|
26
|
-
return payload?.data;
|
|
27
|
-
}
|
|
28
|
-
if (payload?.redirect) {
|
|
29
|
-
return reply.redirect(payload.redirect);
|
|
30
|
-
}
|
|
31
|
-
if (reply.sent) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (['200', '400', '500', '403', '404'].includes(payload?.status)) {
|
|
36
|
-
reply.status(payload.status);
|
|
37
|
-
}
|
|
38
|
-
/* if (payload.headers) {
|
|
39
|
-
reply.headers(payload.headers);
|
|
40
|
-
} */
|
|
41
|
-
if (payload?.buffer) {
|
|
42
|
-
return payload.buffer;
|
|
43
|
-
}
|
|
44
|
-
if (payload?.file) {
|
|
45
|
-
// const buffer = await readFile(payload.file);
|
|
46
|
-
// return reply.send(buffer);
|
|
47
|
-
const stream = fs.createReadStream(payload.file);
|
|
48
|
-
return stream;
|
|
49
|
-
// return reply.send(stream);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (payload?.message) {
|
|
53
|
-
return payload.message;
|
|
54
|
-
}
|
|
55
|
-
return payload;
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// preValidation
|
|
59
|
-
fastify.addHook('preValidation', async (req) => {
|
|
60
|
-
const parseRawBody = ['POST', 'PUT'].includes(req.method) && req.body && typeof req.body === 'string'
|
|
61
|
-
&& req.body.trim(/\r\n/g).startsWith('{')
|
|
62
|
-
&& req.body.trim(/\r\n/g).endsWith('}');
|
|
63
|
-
if (parseRawBody) {
|
|
64
|
-
try {
|
|
65
|
-
req.body = JSON.parse(req.body || '{}');
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
// throw new Error('invalid body');
|
|
69
|
-
// return { error: 'invalid body', status: 400 };
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
// allow upload file
|
|
75
|
-
const kIsMultipart = Symbol.for('[FastifyMultipart.isMultipart]');
|
|
76
|
-
fastify.addContentTypeParser('multipart', (request, _, done) => {
|
|
77
|
-
request[kIsMultipart] = true;
|
|
78
|
-
done(null);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
// parse Body
|
|
82
|
-
function contentParser(req, body, done) {
|
|
83
|
-
const parseBody = decodeURIComponent(body.toString()).split('&').reduce((acc, el) => {
|
|
84
|
-
const [key, val] = el.split('=');
|
|
85
|
-
return { ...acc, [key]: val };
|
|
86
|
-
}, {});
|
|
87
|
-
done(null, parseBody);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
fastify.addContentTypeParser('application/x-www-form-urlencoded', { parseAs: 'buffer' }, contentParser);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export default fp(plugin);
|
|
1
|
+
import fp from 'fastify-plugin';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
import { getTemplatePath, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
|
|
6
|
+
|
|
7
|
+
import getMenu from '../routes/menu/controllers/getMenu.js';
|
|
8
|
+
|
|
9
|
+
import config from '../../config.js';
|
|
10
|
+
|
|
11
|
+
// to export the decorators to the outer scope
|
|
12
|
+
|
|
13
|
+
async function plugin(fastify) {
|
|
14
|
+
fastify.decorate('config', config);
|
|
15
|
+
|
|
16
|
+
// pre Request
|
|
17
|
+
fastify.addHook('onRequest', async (req) => {
|
|
18
|
+
req.funcs = fastify;
|
|
19
|
+
const { user } = req.session?.passport || {};
|
|
20
|
+
req.user = user;
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// preSerialization
|
|
24
|
+
fastify.addHook('preSerialization', async (req, reply, payload) => {
|
|
25
|
+
if (req.url.includes('/suggest/') && !req.query.json) {
|
|
26
|
+
return payload?.data;
|
|
27
|
+
}
|
|
28
|
+
if (payload?.redirect) {
|
|
29
|
+
return reply.redirect(payload.redirect);
|
|
30
|
+
}
|
|
31
|
+
if (reply.sent) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (['200', '400', '500', '403', '404'].includes(payload?.status)) {
|
|
36
|
+
reply.status(payload.status);
|
|
37
|
+
}
|
|
38
|
+
/* if (payload.headers) {
|
|
39
|
+
reply.headers(payload.headers);
|
|
40
|
+
} */
|
|
41
|
+
if (payload?.buffer) {
|
|
42
|
+
return payload.buffer;
|
|
43
|
+
}
|
|
44
|
+
if (payload?.file) {
|
|
45
|
+
// const buffer = await readFile(payload.file);
|
|
46
|
+
// return reply.send(buffer);
|
|
47
|
+
const stream = fs.createReadStream(payload.file);
|
|
48
|
+
return stream;
|
|
49
|
+
// return reply.send(stream);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (payload?.message) {
|
|
53
|
+
return payload.message;
|
|
54
|
+
}
|
|
55
|
+
return payload;
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// preValidation
|
|
59
|
+
fastify.addHook('preValidation', async (req) => {
|
|
60
|
+
const parseRawBody = ['POST', 'PUT'].includes(req.method) && req.body && typeof req.body === 'string'
|
|
61
|
+
&& req.body.trim(/\r\n/g).startsWith('{')
|
|
62
|
+
&& req.body.trim(/\r\n/g).endsWith('}');
|
|
63
|
+
if (parseRawBody) {
|
|
64
|
+
try {
|
|
65
|
+
req.body = JSON.parse(req.body || '{}');
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
// throw new Error('invalid body');
|
|
69
|
+
// return { error: 'invalid body', status: 400 };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// allow upload file
|
|
75
|
+
const kIsMultipart = Symbol.for('[FastifyMultipart.isMultipart]');
|
|
76
|
+
fastify.addContentTypeParser('multipart', (request, _, done) => {
|
|
77
|
+
request[kIsMultipart] = true;
|
|
78
|
+
done(null);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// parse Body
|
|
82
|
+
function contentParser(req, body, done) {
|
|
83
|
+
const parseBody = decodeURIComponent(body.toString()).split('&').reduce((acc, el) => {
|
|
84
|
+
const [key, val] = el.split('=');
|
|
85
|
+
return { ...acc, [key]: val };
|
|
86
|
+
}, {});
|
|
87
|
+
done(null, parseBody);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
fastify.addContentTypeParser('application/x-www-form-urlencoded', { parseAs: 'buffer' }, contentParser);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default fp(plugin);
|
package/server/plugins/cron.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
//import { addCron } from '@opengis/fastify-table/utils.js';
|
|
2
|
-
|
|
3
|
-
async function deleteOldNotifications({ pg }) {
|
|
4
|
-
const { rowCount } = pg?.pk?.['crm.notifications'] ? await pg.query('delete from crm.notifications where CURRENT_DATE - \'14 days\'::interval > cdate') : {};
|
|
5
|
-
return { rowCount };
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function cron(fastify) {
|
|
9
|
-
// addCron(deleteOldNotifications, 60 * 60 * 24, fastify);
|
|
10
|
-
// addCron(deleteOldNotifications, 60 * 1, fastify); // debug
|
|
1
|
+
//import { addCron } from '@opengis/fastify-table/utils.js';
|
|
2
|
+
|
|
3
|
+
async function deleteOldNotifications({ pg }) {
|
|
4
|
+
const { rowCount } = pg?.pk?.['crm.notifications'] ? await pg.query('delete from crm.notifications where CURRENT_DATE - \'14 days\'::interval > cdate') : {};
|
|
5
|
+
return { rowCount };
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default async function cron(fastify) {
|
|
9
|
+
// addCron(deleteOldNotifications, 60 * 60 * 24, fastify);
|
|
10
|
+
// addCron(deleteOldNotifications, 60 * 1, fastify); // debug
|
|
11
11
|
}
|
package/server/plugins/docs.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
import path, { dirname } from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import fs from 'fs';
|
|
6
|
-
|
|
7
|
-
const dir = dirname(fileURLToPath(import.meta.url));
|
|
8
|
-
const root = `${dir}/../../`;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
async function plugin(fastify, opts) {
|
|
12
|
-
fastify.get('/docs*', async (req, reply) => {
|
|
13
|
-
if (!fs.existsSync(path.join(root, 'docs/.vitepress/dist/'))) {
|
|
14
|
-
return reply.status(404).send('docs not exists');
|
|
15
|
-
}
|
|
16
|
-
const { params } = req;
|
|
17
|
-
const url = params['*']
|
|
18
|
-
const filePath = url && url[url.length - 1] !== '/' ? path.join(root, 'docs/.vitepress/dist/', url) : path.join(root, 'docs/.vitepress/dist/', url, 'index.html')
|
|
19
|
-
const ext = path.extname(filePath);
|
|
20
|
-
const mime = {
|
|
21
|
-
'.js': 'text/javascript', '.css': 'text/css', '.woff2': 'application/font-woff', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpg'
|
|
22
|
-
}[ext];
|
|
23
|
-
const stream = fs.createReadStream(filePath);
|
|
24
|
-
return mime ? reply.type(mime).send(stream) : stream;
|
|
25
|
-
|
|
26
|
-
})
|
|
27
|
-
}
|
|
28
|
-
export default plugin;
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
import path, { dirname } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import fs from 'fs';
|
|
6
|
+
|
|
7
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const root = `${dir}/../../`;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
async function plugin(fastify, opts) {
|
|
12
|
+
fastify.get('/docs*', async (req, reply) => {
|
|
13
|
+
if (!fs.existsSync(path.join(root, 'docs/.vitepress/dist/'))) {
|
|
14
|
+
return reply.status(404).send('docs not exists');
|
|
15
|
+
}
|
|
16
|
+
const { params } = req;
|
|
17
|
+
const url = params['*']
|
|
18
|
+
const filePath = url && url[url.length - 1] !== '/' ? path.join(root, 'docs/.vitepress/dist/', url) : path.join(root, 'docs/.vitepress/dist/', url, 'index.html')
|
|
19
|
+
const ext = path.extname(filePath);
|
|
20
|
+
const mime = {
|
|
21
|
+
'.js': 'text/javascript', '.css': 'text/css', '.woff2': 'application/font-woff', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpg'
|
|
22
|
+
}[ext];
|
|
23
|
+
const stream = fs.createReadStream(filePath);
|
|
24
|
+
return mime ? reply.type(mime).send(stream) : stream;
|
|
25
|
+
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
export default plugin;
|