cyberia 3.2.5 → 3.2.9
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/.github/workflows/engine-cyberia.cd.yml +2 -2
- package/.github/workflows/release.cd.yml +1 -2
- package/CHANGELOG.md +351 -1
- package/CLI-HELP.md +40 -13
- package/Dockerfile +0 -4
- package/README.md +242 -497
- package/bin/build.js +19 -5
- package/bin/cyberia.js +1149 -240
- package/bin/deploy.js +570 -1
- package/bin/file.js +6 -0
- package/bin/index.js +1149 -240
- package/bin/vs.js +1 -1
- package/conf.js +67 -89
- package/deployment.yaml +4 -222
- package/hardhat/package-lock.json +32 -32
- package/hardhat/package.json +3 -3
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -222
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/package.json +23 -14
- package/proxy.yaml +10 -118
- package/scripts/k3s-node-setup.sh +2 -2
- package/scripts/nat-iptables.sh +103 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +76 -21
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.service.js +10 -10
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.service.js +8 -8
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +27 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +16 -16
- package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
- package/src/api/cyberia-entity/cyberia-entity.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-fallback-world.js +19 -209
- package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
- package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +22 -57
- package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +216 -55
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +4 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +18 -14
- package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
- package/src/api/cyberia-map/cyberia-map.service.js +10 -10
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.service.js +10 -10
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.service.js +36 -36
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.service.js +10 -10
- package/src/api/ipfs/ipfs.controller.js +12 -12
- package/src/api/ipfs/ipfs.model.js +4 -13
- package/src/api/ipfs/ipfs.service.js +14 -28
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.service.js +12 -12
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.service.js +8 -8
- package/src/api/user/guest.service.js +99 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.service.js +3 -20
- package/src/cli/cluster.js +61 -14
- package/src/cli/db.js +47 -2
- package/src/cli/deploy.js +67 -35
- package/src/cli/fs.js +79 -8
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +26 -1
- package/src/cli/release.js +57 -1
- package/src/cli/repository.js +69 -31
- package/src/cli/run.js +415 -36
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/client/Cryptokoyn.index.js +18 -21
- package/src/client/CyberiaPortal.index.js +19 -23
- package/src/client/Default.index.js +21 -33
- package/src/client/Itemledger.index.js +20 -26
- package/src/client/Underpost.index.js +19 -23
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +35 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +87 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +92 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +462 -178
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +25 -125
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +163 -27
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
- package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +305 -61
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +6 -4
- package/src/client/components/itemledger/LogOutItemledger.js +6 -4
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +6 -4
- package/src/client/components/underpost/LogOutUnderpost.js +6 -4
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/crypto/crypto.service.js +8 -13
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
- package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
- package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +5 -5
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +12 -18
- package/src/client/services/object-layer/object-layer.management.js +12 -12
- package/src/client/services/object-layer/object-layer.service.js +20 -26
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/offline/Maintenance.js +12 -11
- package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
- package/src/client/ssr/pages/Test.js +2 -2
- package/src/client/sw/core.sw.js +212 -0
- package/src/grpc/cyberia/grpc-server.js +179 -67
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +80 -0
- package/src/runtime/cyberia-server/Dockerfile +37 -0
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/client-build-docs.js +45 -46
- package/src/server/client-build.js +334 -60
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +5 -4
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +22 -0
- package/src/server/ipfs-client.js +232 -91
- package/src/server/object-layer.js +1 -6
- package/src/server/process.js +13 -27
- package/src/server/semantic-layer-generator-floor.js +11 -51
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +41 -171
- package/src/server/semantic-layer-generator.js +122 -14
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +17 -3
- package/src/server/valkey.js +141 -235
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -68
- package/jsdoc.json +0 -68
- package/src/api/object-layer/README.md +0 -672
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
- package/src/grpc/cyberia/README.md +0 -326
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
// https://www.ag-grid.com/javascript-data-grid/getting-started/
|
|
2
2
|
// https://www.ag-grid.com/javascript-data-grid/themes/
|
|
3
|
-
|
|
4
3
|
import { ThemeEvents, darkTheme } from './Css.js';
|
|
5
4
|
import { append, htmls, s } from './VanillaJs.js';
|
|
6
5
|
import { getProxyPath } from './Router.js';
|
|
7
6
|
import './Pagination.js';
|
|
8
7
|
import { Modal } from './Modal.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Render: async function (options) {
|
|
8
|
+
class AgGrid {
|
|
9
|
+
static grids = {};
|
|
10
|
+
static theme = `ag-theme-alpine`;
|
|
11
|
+
static async instance(options) {
|
|
14
12
|
let { id, paginationOptions } = options;
|
|
15
13
|
setTimeout(() => {
|
|
16
14
|
// Normalize rowSelection from deprecated string form to object form (AG Grid v32.2.1+)
|
|
@@ -21,7 +19,6 @@ const AgGrid = {
|
|
|
21
19
|
mode: mode === 'multiple' ? 'multiRow' : 'singleRow',
|
|
22
20
|
};
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
// Grid Options: Contains all of the grid configurations
|
|
26
23
|
const gridOptions = {
|
|
27
24
|
// Use legacy CSS theme mode to avoid conflict with Theming API (AG Grid v33+)
|
|
@@ -63,24 +60,20 @@ const AgGrid = {
|
|
|
63
60
|
onSortChanged: options?.onSortChanged,
|
|
64
61
|
// set background colour on every row, this is probably bad, should be using CSS classes
|
|
65
62
|
// rowStyle: { background: 'black' },
|
|
66
|
-
|
|
67
63
|
// set background colour on even rows again, this looks bad, should be using CSS classes
|
|
68
64
|
// getRowStyle: (params) => {
|
|
69
65
|
// if (params.node.rowIndex % 2 === 0) {
|
|
70
66
|
// return { background: 'red' };
|
|
71
67
|
// }
|
|
72
68
|
// },
|
|
73
|
-
|
|
74
69
|
// all rows assigned CSS class 'my-green-class'
|
|
75
70
|
// rowClass: 'my-green-class',
|
|
76
|
-
|
|
77
71
|
// all even rows assigned 'my-shaded-effect'
|
|
78
72
|
// getRowClass: (params) => {
|
|
79
73
|
// if (params.node.rowIndex % 2 === 0) {
|
|
80
74
|
// return 'my-shaded-effect';
|
|
81
75
|
// }
|
|
82
76
|
// },
|
|
83
|
-
|
|
84
77
|
// domLayout: 'autoHeight', || 'normal'
|
|
85
78
|
// Column Definitions: Defines & controls grid columns.
|
|
86
79
|
columnDefs: options?.gridOptions?.rowData?.[0]
|
|
@@ -90,25 +83,23 @@ const AgGrid = {
|
|
|
90
83
|
: [],
|
|
91
84
|
...gridOptionsOverrides,
|
|
92
85
|
};
|
|
93
|
-
|
|
94
86
|
// Your Javascript code to create the grid
|
|
95
87
|
const myGridElement = s(`.${id}`);
|
|
96
|
-
if (
|
|
97
|
-
|
|
88
|
+
if (AgGrid.grids[id]) AgGrid.grids[id].destroy();
|
|
89
|
+
AgGrid.grids[id] = agGrid.createGrid(myGridElement, gridOptions);
|
|
98
90
|
// myGridElement.style.setProperty('width', '100%');
|
|
99
91
|
ThemeEvents[id] = () => {
|
|
100
92
|
if (s(`.${id}`)) {
|
|
101
93
|
// darkTheme has already been updated by Css.js when this event fires
|
|
102
94
|
// If darkTheme is true: remove light class, add dark class
|
|
103
95
|
// If darkTheme is false: remove dark class, add light class
|
|
104
|
-
s(`.${id}`).classList.remove(
|
|
105
|
-
s(`.${id}`).classList.add(darkTheme ?
|
|
96
|
+
s(`.${id}`).classList.remove(AgGrid.theme, AgGrid.theme + '-dark');
|
|
97
|
+
s(`.${id}`).classList.add(darkTheme ? AgGrid.theme + '-dark' : AgGrid.theme);
|
|
106
98
|
} else {
|
|
107
99
|
// console.warn('change theme: grid not found');
|
|
108
100
|
delete ThemeEvents[id];
|
|
109
101
|
}
|
|
110
102
|
};
|
|
111
|
-
|
|
112
103
|
if (!options.style || !options.style.height) {
|
|
113
104
|
if (options.parentModal && Modal.Data[options.parentModal].options.observer) {
|
|
114
105
|
Modal.Data[options.parentModal].onObserverListener[id + '-observer'] = ({ width, height }) => {
|
|
@@ -127,15 +118,15 @@ const AgGrid = {
|
|
|
127
118
|
: '';
|
|
128
119
|
return html`
|
|
129
120
|
<div
|
|
130
|
-
class="${id} ${darkTheme ?
|
|
121
|
+
class="${id} ${darkTheme ? AgGrid.theme + '-dark' : AgGrid.theme}"
|
|
131
122
|
style="${options?.style
|
|
132
123
|
? Object.keys(options.style).map((styleKey) => `${styleKey}: ${options.style[styleKey]}; `)
|
|
133
124
|
: ''}"
|
|
134
125
|
></div>
|
|
135
126
|
${usePagination ? `<ag-pagination id="ag-pagination-${id}" ${limitOptionsAttr}></ag-pagination>` : ''}
|
|
136
127
|
`;
|
|
137
|
-
}
|
|
138
|
-
|
|
128
|
+
}
|
|
129
|
+
static async RenderStyle(
|
|
139
130
|
options = {
|
|
140
131
|
eventThemeId: 'AgGrid',
|
|
141
132
|
style: {
|
|
@@ -147,15 +138,15 @@ const AgGrid = {
|
|
|
147
138
|
},
|
|
148
139
|
) {
|
|
149
140
|
/*
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
141
|
+
--ag-foreground-color: rgb(126, 46, 132);
|
|
142
|
+
--ag-background-color: rgb(249, 245, 227);
|
|
143
|
+
--ag-header-foreground-color: rgb(204, 245, 172);
|
|
144
|
+
--ag-header-background-color: rgb(209, 64, 129);
|
|
145
|
+
--ag-odd-row-background-color: rgb(0, 0, 0, 0.03);
|
|
146
|
+
--ag-header-column-resize-handle-color: rgb(126, 46, 132);
|
|
147
|
+
|
|
148
|
+
--ag-font-size: 17px;
|
|
149
|
+
*/
|
|
159
150
|
if (!s(`.ag-grid-base-style`))
|
|
160
151
|
append(
|
|
161
152
|
'head',
|
|
@@ -167,7 +158,7 @@ const AgGrid = {
|
|
|
167
158
|
/><link
|
|
168
159
|
rel="stylesheet"
|
|
169
160
|
type="text/css"
|
|
170
|
-
href="${getProxyPath()}styles/ag-grid-community/${
|
|
161
|
+
href="${getProxyPath()}styles/ag-grid-community/${AgGrid.theme}.min.css"
|
|
171
162
|
/>`,
|
|
172
163
|
);
|
|
173
164
|
ThemeEvents[options.eventThemeId] = () => {
|
|
@@ -242,7 +233,6 @@ const AgGrid = {
|
|
|
242
233
|
</style>`}`,
|
|
243
234
|
);
|
|
244
235
|
};
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
236
|
+
}
|
|
237
|
+
}
|
|
248
238
|
export { AgGrid };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Translate } from './Translate.js';
|
|
2
|
-
|
|
3
2
|
const maintenance = async () => {
|
|
4
3
|
const icon = html`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 24 24">
|
|
5
4
|
<path
|
|
@@ -14,10 +13,9 @@ const maintenance = async () => {
|
|
|
14
13
|
return html` <div class="abs center" style="top: 45%">
|
|
15
14
|
${icon}
|
|
16
15
|
<br />
|
|
17
|
-
<br />${Translate.
|
|
16
|
+
<br />${Translate.instance('server-maintenance')}
|
|
18
17
|
</div>`;
|
|
19
18
|
};
|
|
20
|
-
|
|
21
19
|
const noInternet = async () => {
|
|
22
20
|
const icon = html`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 20 20">
|
|
23
21
|
<path
|
|
@@ -28,10 +26,9 @@ const noInternet = async () => {
|
|
|
28
26
|
return html` <div class="abs center" style="top: 45%">
|
|
29
27
|
${icon}
|
|
30
28
|
<br />
|
|
31
|
-
<br />${Translate.
|
|
29
|
+
<br />${Translate.instance('no-internet-connection')}
|
|
32
30
|
</div>`;
|
|
33
31
|
};
|
|
34
|
-
|
|
35
32
|
const e404 = async () => {
|
|
36
33
|
const icon = html`
|
|
37
34
|
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 24 24">
|
|
@@ -47,12 +44,11 @@ const e404 = async () => {
|
|
|
47
44
|
<br />
|
|
48
45
|
<span class="bold">404</span>
|
|
49
46
|
<br />
|
|
50
|
-
<br />${Translate.
|
|
47
|
+
<br />${Translate.instance('page-not-found')} <br />
|
|
51
48
|
<br />
|
|
52
|
-
<a target="_top" href="${location.origin}">${Translate.
|
|
49
|
+
<a target="_top" href="${location.origin}">${Translate.instance('back')}</a>
|
|
53
50
|
</div>`;
|
|
54
51
|
};
|
|
55
|
-
|
|
56
52
|
const e500 = async () => {
|
|
57
53
|
const icon = html`<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 20 20">
|
|
58
54
|
<path
|
|
@@ -66,12 +62,15 @@ const e500 = async () => {
|
|
|
66
62
|
<br />
|
|
67
63
|
<span class="bold">500</span>
|
|
68
64
|
<br />
|
|
69
|
-
<br />${Translate.
|
|
65
|
+
<br />${Translate.instance('page-broken')} <br />
|
|
70
66
|
<br />
|
|
71
|
-
<a target="_top" href="${location.origin}">${Translate.
|
|
67
|
+
<a target="_top" href="${location.origin}">${Translate.instance('back')}</a>
|
|
72
68
|
</div>`;
|
|
73
69
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
class Alert {
|
|
71
|
+
static maintenance = maintenance;
|
|
72
|
+
static noInternet = noInternet;
|
|
73
|
+
static e404 = e404;
|
|
74
|
+
static e500 = e500;
|
|
75
|
+
}
|
|
77
76
|
export { Alert };
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @classdesc Per-app singleton state store for WebSocket channel data and authenticated user state.
|
|
11
11
|
*
|
|
12
12
|
* Usage: `AppStoreX.Data.user.main.model.user` — the authenticated user object.
|
|
13
|
-
* `AppStoreX.Data` keys (`chat`, `mailer`, `stream`, etc.) — channel definitions for `SocketIo.
|
|
13
|
+
* `AppStoreX.Data` keys (`chat`, `mailer`, `stream`, etc.) — channel definitions for `SocketIo.instance`.
|
|
14
14
|
* @memberof AppStore
|
|
15
15
|
*/
|
|
16
16
|
class AppStore {
|
|
@@ -14,6 +14,7 @@ import { NotificationManager } from './NotificationManager.js';
|
|
|
14
14
|
import { SearchBox } from './SearchBox.js';
|
|
15
15
|
import { Translate } from './Translate.js';
|
|
16
16
|
import { s } from './VanillaJs.js';
|
|
17
|
+
import { GuestService } from '../../services/user/guest.service.js';
|
|
17
18
|
|
|
18
19
|
const logger = loggerFactory(import.meta, { trace: true });
|
|
19
20
|
|
|
@@ -22,20 +23,6 @@ const logger = loggerFactory(import.meta, { trace: true });
|
|
|
22
23
|
* @memberof AuthClient
|
|
23
24
|
*/
|
|
24
25
|
class Auth {
|
|
25
|
-
/**
|
|
26
|
-
* The current user access token (JWT).
|
|
27
|
-
* @type {string}
|
|
28
|
-
* @method
|
|
29
|
-
*/
|
|
30
|
-
#token = '';
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* The token for anonymous guest sessions.
|
|
34
|
-
* @type {string}
|
|
35
|
-
* @method
|
|
36
|
-
*/
|
|
37
|
-
#guestToken = '';
|
|
38
|
-
|
|
39
26
|
/**
|
|
40
27
|
* Timeout ID for the token refresh schedule.
|
|
41
28
|
* @type {number | undefined}
|
|
@@ -59,7 +46,7 @@ class Auth {
|
|
|
59
46
|
* @returns {string} The set token value.
|
|
60
47
|
*/
|
|
61
48
|
setToken(value = '') {
|
|
62
|
-
return (
|
|
49
|
+
return GuestService.setUserToken(value);
|
|
63
50
|
}
|
|
64
51
|
|
|
65
52
|
/**
|
|
@@ -68,7 +55,7 @@ class Auth {
|
|
|
68
55
|
* @returns {string} An empty string.
|
|
69
56
|
*/
|
|
70
57
|
deleteToken() {
|
|
71
|
-
return (
|
|
58
|
+
return GuestService.clearUserToken();
|
|
72
59
|
}
|
|
73
60
|
|
|
74
61
|
/**
|
|
@@ -77,7 +64,7 @@ class Auth {
|
|
|
77
64
|
* @returns {string} The JWT token.
|
|
78
65
|
*/
|
|
79
66
|
getToken() {
|
|
80
|
-
return
|
|
67
|
+
return GuestService.getUserToken();
|
|
81
68
|
}
|
|
82
69
|
|
|
83
70
|
/**
|
|
@@ -87,7 +74,7 @@ class Auth {
|
|
|
87
74
|
* @returns {string} The set guest token value.
|
|
88
75
|
*/
|
|
89
76
|
setGuestToken(value = '') {
|
|
90
|
-
return (
|
|
77
|
+
return GuestService.setGuestToken(value);
|
|
91
78
|
}
|
|
92
79
|
|
|
93
80
|
/**
|
|
@@ -96,7 +83,7 @@ class Auth {
|
|
|
96
83
|
* @returns {string} An empty string.
|
|
97
84
|
*/
|
|
98
85
|
deleteGuestToken() {
|
|
99
|
-
return (
|
|
86
|
+
return GuestService.clearGuestToken();
|
|
100
87
|
}
|
|
101
88
|
|
|
102
89
|
/**
|
|
@@ -105,7 +92,7 @@ class Auth {
|
|
|
105
92
|
* @returns {string} The guest token.
|
|
106
93
|
*/
|
|
107
94
|
getGuestToken() {
|
|
108
|
-
return
|
|
95
|
+
return GuestService.getGuestToken();
|
|
109
96
|
}
|
|
110
97
|
|
|
111
98
|
/**
|
|
@@ -114,9 +101,7 @@ class Auth {
|
|
|
114
101
|
* @returns {string} The Bearer token string or an empty string.
|
|
115
102
|
*/
|
|
116
103
|
getJWT() {
|
|
117
|
-
|
|
118
|
-
if (this.getGuestToken()) return `Bearer ${this.getGuestToken()}`;
|
|
119
|
-
return '';
|
|
104
|
+
return GuestService.getAuthorizationHeader();
|
|
120
105
|
}
|
|
121
106
|
|
|
122
107
|
/**
|
|
@@ -190,7 +175,7 @@ class Auth {
|
|
|
190
175
|
*/
|
|
191
176
|
async sessionIn(userServicePayload) {
|
|
192
177
|
try {
|
|
193
|
-
let token = userServicePayload?.data?.token ||
|
|
178
|
+
let token = userServicePayload?.data?.token || GuestService.getUserToken();
|
|
194
179
|
|
|
195
180
|
if (token) {
|
|
196
181
|
this.setToken(token);
|
|
@@ -204,7 +189,11 @@ class Auth {
|
|
|
204
189
|
if (status === 'success' && data.token) {
|
|
205
190
|
// A valid user token was found/refreshed
|
|
206
191
|
this.setToken(data.token);
|
|
207
|
-
|
|
192
|
+
GuestService.clearGuestToken();
|
|
193
|
+
await GuestService.setMeta('session', {
|
|
194
|
+
role: data.user?.role,
|
|
195
|
+
userId: data.user?._id,
|
|
196
|
+
});
|
|
208
197
|
// Clear cached profile image to ensure fresh load for new user
|
|
209
198
|
LogIn.Scope.user.main.model.user = {};
|
|
210
199
|
this.renderSessionUI();
|
|
@@ -218,7 +207,7 @@ class Auth {
|
|
|
218
207
|
setTimeout(() => {
|
|
219
208
|
s(`.main-btn-log-in`).click();
|
|
220
209
|
NotificationManager.Push({
|
|
221
|
-
html: Translate.
|
|
210
|
+
html: Translate.instance(`expired-session`),
|
|
222
211
|
status: 'warning',
|
|
223
212
|
});
|
|
224
213
|
});
|
|
@@ -227,17 +216,19 @@ class Auth {
|
|
|
227
216
|
|
|
228
217
|
// Cleanup failed user session attempt
|
|
229
218
|
this.deleteToken();
|
|
230
|
-
localStorage.removeItem('jwt');
|
|
231
219
|
|
|
232
220
|
// Anon guest session attempt
|
|
233
|
-
let guestToken =
|
|
221
|
+
let guestToken = GuestService.getGuestToken();
|
|
234
222
|
if (guestToken) {
|
|
235
223
|
this.setGuestToken(guestToken);
|
|
236
224
|
let { data, status, message } = await UserService.get({ id: 'auth' }); // Verify guest token
|
|
237
225
|
if (status === 'success' && data.token) {
|
|
238
226
|
// Guest token is valid and refreshed
|
|
239
227
|
this.setGuestToken(data.token);
|
|
240
|
-
|
|
228
|
+
await GuestService.setMeta('guest-session', {
|
|
229
|
+
role: data.user?.role,
|
|
230
|
+
userId: data.user?._id,
|
|
231
|
+
});
|
|
241
232
|
// Clear cached profile image for fresh guest session
|
|
242
233
|
LogIn.Scope.user.main.model.user = {};
|
|
243
234
|
await LogIn.Trigger(data);
|
|
@@ -264,10 +255,11 @@ class Auth {
|
|
|
264
255
|
* @returns {Promise<object>} A promise resolving to the newly created guest session data.
|
|
265
256
|
*/
|
|
266
257
|
async sessionOut() {
|
|
267
|
-
// 1. End User Session
|
|
258
|
+
// 1. End User Session — skip the network call when there is no active user session
|
|
259
|
+
// (avoids a wasted DELETE round-trip for guests / new visitors)
|
|
260
|
+
const hasUserSession = !!GuestService.getUserToken();
|
|
268
261
|
try {
|
|
269
|
-
const result = await UserService.delete({ id: 'logout' });
|
|
270
|
-
localStorage.removeItem('jwt');
|
|
262
|
+
const result = hasUserSession ? await UserService.delete({ id: 'logout' }) : null;
|
|
271
263
|
SearchBox.RecentResults.clear();
|
|
272
264
|
this.deleteToken();
|
|
273
265
|
if (this.#refreshTimeout) {
|
|
@@ -277,22 +269,28 @@ class Auth {
|
|
|
277
269
|
this.renderGuestUi();
|
|
278
270
|
// Reset user data in the LogIn state/model
|
|
279
271
|
LogIn.Scope.user.main.model.user = {};
|
|
280
|
-
await LogOut.Trigger(result);
|
|
272
|
+
if (result) await LogOut.Trigger(result);
|
|
281
273
|
} catch (error) {
|
|
282
274
|
logger.error('Error during user logout:', error);
|
|
283
275
|
}
|
|
284
276
|
|
|
285
277
|
// 2. Start Guest Session
|
|
286
278
|
try {
|
|
287
|
-
localStorage.removeItem('jwt.g');
|
|
288
279
|
this.deleteGuestToken();
|
|
289
280
|
const result = await UserService.post({ id: 'guest' }); // Request a new guest token
|
|
290
281
|
|
|
291
282
|
if (result.status === 'success' && result.data.token) {
|
|
292
|
-
localStorage.setItem('jwt.g', result.data.token);
|
|
293
283
|
this.setGuestToken(result.data.token);
|
|
294
|
-
//
|
|
295
|
-
|
|
284
|
+
// Use the POST response data directly — avoids a redundant GET /user/auth
|
|
285
|
+
// round-trip that would otherwise re-verify the token we just received.
|
|
286
|
+
await GuestService.setMeta('guest-session', {
|
|
287
|
+
role: result.data.user?.role,
|
|
288
|
+
userId: result.data.user?._id,
|
|
289
|
+
});
|
|
290
|
+
LogIn.Scope.user.main.model.user = {};
|
|
291
|
+
await LogIn.Trigger(result.data);
|
|
292
|
+
await Account.updateForm(result.data.user);
|
|
293
|
+
return result.data;
|
|
296
294
|
} else {
|
|
297
295
|
logger.error('Failed to get a new guest token.');
|
|
298
296
|
return { user: UserMock.default };
|
|
@@ -2,31 +2,25 @@ import { getId, getIsoDate } from './CommonJs.js';
|
|
|
2
2
|
import { Css, renderCssAttr, Themes } from './Css.js';
|
|
3
3
|
import { Modal } from './Modal.js';
|
|
4
4
|
import { append, prepend, s } from './VanillaJs.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (!options.id) options.id = getId(this.Tokens, 'badge-');
|
|
5
|
+
class Badge {
|
|
6
|
+
static Tokens = {};
|
|
7
|
+
static async instance(options = { id: '', type: 'circle-red', classList: '', text: '', style: '' }) {
|
|
8
|
+
if (!options.id) options.id = getId(Badge.Tokens, 'badge-');
|
|
10
9
|
else options.id = 'badge-' + options.id;
|
|
11
10
|
if (options && options.style && !options.style.color) options.style.color = 'white';
|
|
12
11
|
if (!options.classList) options.classList = '';
|
|
13
|
-
|
|
14
12
|
const { id, type } = options;
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
Badge.Tokens[id] = { ...options };
|
|
17
14
|
switch (type) {
|
|
18
15
|
case 'circle-red':
|
|
19
16
|
options.classList += ' badge-notification-circle-red ';
|
|
20
17
|
break;
|
|
21
|
-
|
|
22
18
|
default:
|
|
23
19
|
break;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
return html`<div class="badge wfm ${options.classList} ${id}" style="${renderCssAttr(options)}">
|
|
27
22
|
<div class="badge-text">${options?.text ? options.text : 'B'}</div>
|
|
28
23
|
</div>`;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
24
|
+
}
|
|
25
|
+
}
|
|
32
26
|
export { Badge };
|
|
@@ -2,10 +2,9 @@ import { getId, s4 } from './CommonJs.js';
|
|
|
2
2
|
import { renderCssAttr } from './Css.js';
|
|
3
3
|
import { ToolTip } from './ToolTip.js';
|
|
4
4
|
import { getAllChildNodes, htmlStrSanitize, s } from './VanillaJs.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Render: async function (
|
|
5
|
+
class BtnIcon {
|
|
6
|
+
static Tokens = {};
|
|
7
|
+
static async instance(
|
|
9
8
|
options = {
|
|
10
9
|
class: '',
|
|
11
10
|
type: '',
|
|
@@ -19,9 +18,9 @@ const BtnIcon = {
|
|
|
19
18
|
useMenuBtn: false,
|
|
20
19
|
},
|
|
21
20
|
) {
|
|
22
|
-
const tokenId = getId(
|
|
21
|
+
const tokenId = getId(BtnIcon.Tokens, 'btn-token-');
|
|
23
22
|
if (options.useMenuBtn) options.class += ' main-menu-btn-selector';
|
|
24
|
-
|
|
23
|
+
BtnIcon.Tokens[tokenId] = { ...options };
|
|
25
24
|
setTimeout(() => {
|
|
26
25
|
if (s(`.a-${tokenId}`)) s(`.a-${tokenId}`).onclick = (e) => e.preventDefault();
|
|
27
26
|
});
|
|
@@ -57,7 +56,7 @@ const BtnIcon = {
|
|
|
57
56
|
if (options.tooltipHtml)
|
|
58
57
|
setTimeout(() => {
|
|
59
58
|
if (s(`.${tokenId}`))
|
|
60
|
-
ToolTip.
|
|
59
|
+
ToolTip.instance({
|
|
61
60
|
container: `.${tokenId}`,
|
|
62
61
|
id: tokenId,
|
|
63
62
|
htmlRender: options.tooltipHtml,
|
|
@@ -66,15 +65,15 @@ const BtnIcon = {
|
|
|
66
65
|
});
|
|
67
66
|
});
|
|
68
67
|
return render;
|
|
69
|
-
}
|
|
68
|
+
}
|
|
70
69
|
// https://developer.mozilla.org/en-US/docs/Games/Techniques/Control_mechanisms/Mobile_touch
|
|
71
|
-
TouchTokens
|
|
72
|
-
|
|
70
|
+
static TouchTokens = {};
|
|
71
|
+
static async RenderTouch(options = { id: '', Events: {} }) {
|
|
73
72
|
const { id } = options;
|
|
74
|
-
|
|
73
|
+
BtnIcon.TouchTokens[id] = { Events: {}, ...options };
|
|
75
74
|
setTimeout(() => {
|
|
76
75
|
const triggerTouchEvents = () => {
|
|
77
|
-
for (const event of Object.keys(
|
|
76
|
+
for (const event of Object.keys(BtnIcon.TouchTokens[id].Events)) BtnIcon.TouchTokens[id].Events[event]();
|
|
78
77
|
};
|
|
79
78
|
if (s(`.${id}`)) {
|
|
80
79
|
s(`.${id}`).addEventListener('touchstart', () => {
|
|
@@ -101,11 +100,10 @@ const BtnIcon = {
|
|
|
101
100
|
style="${renderCssAttr({ style: { width: '100%', height: '100%', top: '0px', left: '0px', border: 'none' } })}"
|
|
102
101
|
>
|
|
103
102
|
</canvas>`;
|
|
104
|
-
}
|
|
105
|
-
findLabel
|
|
103
|
+
}
|
|
104
|
+
static findLabel = (el) =>
|
|
106
105
|
getAllChildNodes(el).find((e) => {
|
|
107
106
|
return e.classList && Array.from(e.classList).find((e) => e.match('BtnIcon-label'));
|
|
108
|
-
})
|
|
109
|
-
}
|
|
110
|
-
|
|
107
|
+
});
|
|
108
|
+
}
|
|
111
109
|
export { BtnIcon };
|