@underpostnet/cyberia 3.3.0 → 3.3.76
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/.dockerignore +1 -0
- package/.env.example +17 -5
- package/.github/workflows/coverall.cyberia.ci.yml +39 -14
- package/.github/workflows/cyberia-client.cd.yml +5 -0
- package/.github/workflows/cyberia-server.cd.yml +5 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +8 -3
- package/.github/workflows/docker-image.cyberia-server.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +8 -5
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +15 -1
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +15 -1
- package/.github/workflows/engine-cyberia.cd.yml +3 -0
- package/.github/workflows/engine-cyberia.ci.yml +4 -5
- package/.github/workflows/ghpkg.ci.yml +35 -20
- package/.github/workflows/hardhat.ci.yml +12 -11
- package/.github/workflows/npmpkg.ci.yml +17 -15
- package/.github/workflows/publish.cyberia.ci.yml +44 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +2 -2
- package/.github/workflows/release.cd.yml +1 -0
- package/.prettierignore +1 -0
- package/AGENTS.md +96 -0
- package/CHANGELOG.md +653 -2513
- package/CLI-HELP.md +323 -157
- package/Dockerfile +25 -9
- package/Dockerfile.dev +25 -9
- package/Dockerfile.test +5 -5
- package/README.md +48 -28
- package/bin/build.js +86 -41
- package/bin/build.template.js +8 -3
- package/bin/cyberia.js +1494 -1403
- package/bin/deploy.js +18 -104
- package/bin/index.js +1494 -1403
- package/compose.env +17 -5
- package/conf.js +98 -7
- package/deploy/cyberia-client/deploy.sh +46 -0
- package/deploy/cyberia-client/package.sh +17 -0
- package/deploy/cyberia-client/state.sh +15 -0
- package/deploy/cyberia-server/deploy.sh +46 -0
- package/deploy/cyberia-server/package.sh +17 -0
- package/deploy/cyberia-server/state.sh +15 -0
- package/deploy/dd-cyberia/deploy.sh +9 -29
- package/deploy/dd-cyberia/init.sh +38 -45
- package/deploy/dd-cyberia/package.sh +16 -0
- package/deploy/dd-cyberia/state.sh +14 -0
- package/deploy/dd-cyberia/sync-deploy.sh +133 -147
- package/deploy/lib/config.sh +29 -0
- package/deploy/lib/github-actions-logging.sh +610 -0
- package/deploy/lib/host.sh +194 -0
- package/deploy/lib/state.sh +65 -0
- package/deploy/pwa-microservices-template/deploy.sh +17 -42
- package/deploy/release/deploy.sh +9 -41
- package/deployment.yaml +7 -2
- package/docker-compose.yml +23 -17
- package/examples/static-page/README.md +19 -19
- package/examples/static-page/ssr-components/CustomPage.js +2 -2
- package/hardhat/hardhat.config.js +1 -6
- package/hardhat/package-lock.json +101 -40
- package/hardhat/package.json +2 -2
- package/manifests/alertmanager/deployment.yaml +81 -0
- package/manifests/blackbox-exporter/deployment.yaml +75 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +32 -7
- package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +32 -7
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +7 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/mongo-express/deployment.yaml +46 -27
- package/manifests/deployment/mongo-express/kustomization.yaml +9 -0
- package/manifests/deployment/mongo-express/mongo-express-nodeport.yaml +18 -0
- package/manifests/deployment/mongo-express/service.yaml +16 -0
- package/manifests/deployment/mongo-express-no-auth/disable-mongodb-auth.yaml +16 -0
- package/manifests/deployment/mongo-express-no-auth/kustomization.yaml +16 -0
- package/manifests/grafana/deployment.yaml +26 -7
- package/manifests/grafana/kustomization.yaml +1 -0
- package/manifests/grafana/service.yaml +6 -1
- package/manifests/mariadb/pv.yaml +1 -0
- package/manifests/mongodb/statefulset.yaml +9 -2
- package/manifests/mysql/pv-pvc.yaml +14 -1
- package/manifests/postgresql/pv.yaml +12 -1
- package/manifests/postgresql/pvc.yaml +1 -0
- package/manifests/prometheus/deployment.yaml +18 -22
- package/package.json +87 -12
- package/scripts/event-monitor.sh +56 -0
- package/scripts/k3s-node-setup.sh +27 -14
- package/scripts/kubeadm-node-setup.sh +31 -11
- package/scripts/maas-setup.sh +8 -8
- package/scripts/selinux-normalize.sh +907 -0
- package/scripts/shutdown-machine.sh +843 -0
- package/scripts/test-monitor.sh +5 -5
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +15 -10
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +36 -5
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +7 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +90 -186
- package/src/api/core/core.controller.js +1 -1
- package/src/api/core/core.router.js +2 -2
- package/src/api/core/core.service.js +2 -2
- package/src/api/crypto/crypto.controller.js +1 -1
- package/src/api/crypto/crypto.service.js +1 -1
- package/src/api/cyberia-action/cyberia-action.controller.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +3 -3
- package/src/api/cyberia-action/cyberia-action.service.js +5 -6
- package/src/api/cyberia-audio/cyberia-audio.controller.js +6 -0
- package/src/api/cyberia-audio/cyberia-audio.model.js +61 -0
- package/src/api/cyberia-audio/cyberia-audio.router.js +21 -0
- package/src/api/cyberia-audio/cyberia-audio.service.js +220 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +2 -4
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +10 -19
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +13 -35
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +17 -34
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +2 -2
- package/src/api/cyberia-entity/cyberia-entity.controller.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.model.js +2 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.service.js +3 -3
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +8 -2
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +31 -20
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -2
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +468 -5
- package/src/api/cyberia-instance/cyberia-fallback-capture.js +502 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +29 -40
- package/src/api/cyberia-instance/cyberia-instance-boot.service.js +5 -5
- package/src/api/cyberia-instance/cyberia-instance-items.js +98 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +35 -142
- package/src/api/cyberia-instance/cyberia-instance.controller.js +2 -5
- package/src/api/cyberia-instance/cyberia-instance.model.js +0 -14
- package/src/api/cyberia-instance/cyberia-instance.router.js +5 -18
- package/src/api/cyberia-instance/cyberia-instance.service.js +5 -45
- package/src/api/cyberia-instance/cyberia-world-generator.js +8 -13
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +49 -75
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +76 -3
- package/src/api/cyberia-map/cyberia-map.controller.js +1 -1
- package/src/api/cyberia-map/cyberia-map.router.js +1 -1
- package/src/api/cyberia-map/cyberia-map.service.js +8 -4
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.controller.js +31 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.model.js +56 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.router.js +33 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +189 -0
- package/src/api/cyberia-quest/cyberia-quest.controller.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +4 -4
- package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +2 -2
- package/src/api/cyberia-saga/cyberia-saga.controller.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.router.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.service.js +2 -2
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +403 -214
- package/src/api/cyberia-skill/cyberia-skill.controller.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.model.js +6 -6
- package/src/api/cyberia-skill/cyberia-skill.router.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.service.js +2 -2
- package/src/api/default/default.controller.js +1 -1
- package/src/api/default/default.router.js +1 -1
- package/src/api/default/default.service.js +2 -2
- package/src/api/document/document.controller.js +1 -1
- package/src/api/document/document.router.js +1 -1
- package/src/api/document/document.service.js +2 -2
- package/src/api/file/file.controller.js +1 -1
- package/src/api/file/file.ref.js +153 -0
- package/src/api/file/file.ref.json +11 -2
- package/src/api/file/file.router.js +1 -1
- package/src/api/file/file.service.js +2 -2
- package/src/api/instance/instance.controller.js +1 -1
- package/src/api/instance/instance.router.js +1 -1
- package/src/api/instance/instance.service.js +2 -2
- package/src/api/ipfs/ipfs.controller.js +1 -1
- package/src/api/ipfs/ipfs.router.js +2 -2
- package/src/api/ipfs/ipfs.service.js +2 -2
- package/src/api/object-layer/object-layer.controller.js +1 -1
- package/src/api/object-layer/object-layer.model.js +47 -12
- package/src/api/object-layer/object-layer.router.js +12 -5
- package/src/api/object-layer/object-layer.service.js +116 -123
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +2 -2
- package/src/api/test/test.controller.js +1 -1
- package/src/api/test/test.service.js +1 -1
- package/src/api/user/guest.service.js +3 -3
- package/src/api/user/user.controller.js +1 -1
- package/src/api/user/user.router.js +2 -2
- package/src/api/user/user.service.js +4 -4
- package/src/api.js +5 -9
- package/src/cli/app.js +402 -0
- package/src/cli/baremetal.js +30 -35
- package/src/cli/client.js +306 -0
- package/src/cli/cloud-init.js +3 -3
- package/src/cli/cluster.js +191 -82
- package/src/cli/db.js +120 -68
- package/src/cli/deploy.js +157 -75
- package/src/cli/docker-compose.js +5 -5
- package/src/cli/domains.js +184 -0
- package/src/cli/dotenv-store.js +143 -0
- package/src/cli/event.js +2281 -0
- package/src/cli/fs-selection.js +115 -0
- package/src/cli/fs.js +159 -343
- package/src/cli/host.js +672 -0
- package/src/cli/image.js +4 -6
- package/src/cli/index.js +343 -151
- package/src/cli/ipfs.js +34 -30
- package/src/cli/kickstart.js +1 -1
- package/src/cli/kubectl.js +218 -41
- package/src/cli/lxd.js +3 -3
- package/src/cli/monitor.js +1359 -26
- package/src/cli/package.js +90 -0
- package/src/cli/release.js +16 -12
- package/src/cli/repository.js +586 -363
- package/src/cli/run.js +398 -843
- package/src/cli/secrets.js +2158 -964
- package/src/cli/ssh.js +478 -279
- package/src/cli/state.js +394 -0
- package/src/cli/static.js +2 -2
- package/src/cli/system.js +1 -1
- package/src/cli/test.js +203 -125
- package/src/cli/vultr.js +61 -21
- package/src/cli/wireguard.js +1112 -306
- package/src/client/components/core/CalendarCore.js +53 -96
- package/src/client/components/core/Docs.js +327 -303
- package/src/client/components/core/FileExplorer.js +0 -21
- package/src/client/components/core/Modal.js +56 -1
- package/src/client/components/core/PanelForm.js +4 -4
- package/src/client/components/core/Repository.js +56 -0
- package/src/client/components/core/Translate.js +7 -0
- package/src/client/components/core/{FullScreen.js → ViewModeController.js} +42 -39
- package/src/client/components/core/Wallet.js +0 -11
- package/src/client/components/core/Worker.js +7 -1
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +2 -2
- package/src/client/components/cyberia/ActionEngineCyberia.js +12 -36
- package/src/client/components/cyberia/EntityEngineCyberia.js +492 -121
- package/src/client/components/cyberia/InstanceEngineCyberia.js +129 -160
- package/src/client/components/cyberia/InstanceSelectionView.js +7 -1
- package/src/client/components/cyberia/MapEngineCyberia.js +175 -69
- package/src/client/components/cyberia/ObjectLayerEngine.js +1011 -97
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +81 -155
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +113 -98
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +215 -56
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +2 -35
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +1 -1
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +712 -76
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +2 -2
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +0 -4
- package/src/client/components/default/AppShellDefault.js +1 -1
- package/src/client/components/default/SettingsDefault.js +2 -2
- package/src/client/components/itemledger/SettingsItemledger.js +2 -2
- package/src/client/components/underpost/AppShellUnderpost.js +3 -2
- package/src/client/components/underpost/SettingsUnderpost.js +2 -2
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +15 -15
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +313 -30
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +51 -29
- package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +52 -53
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +16 -11
- package/src/client/public/cyberia-docs/CYBERIA.md +48 -28
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +11 -5
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +23 -6
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/STATS-PROGRESSION.md +217 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +20 -12
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/browserconfig.xml +1 -1
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +5 -5
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +1 -1
- package/src/client/services/cyberia-audio/cyberia-audio.service.js +99 -0
- package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +38 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +5 -4
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +0 -40
- package/src/client/services/cyberia-map/cyberia-map.management.js +5 -4
- package/src/client/services/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +138 -0
- package/src/client/services/object-layer/object-layer.management.js +6 -10
- package/src/client/services/object-layer/object-layer.service.js +3 -1
- package/src/client/ssr/RootDocument.js +1 -1
- package/src/client/ssr/body/404.js +1 -1
- package/src/client/ssr/body/500.js +1 -1
- package/src/client/ssr/body/CacheControl.js +1 -1
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/DefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/SwaggerDarkMode.js +1 -1
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +1 -1
- package/src/client/ssr/head/CryptokoynScripts.js +1 -1
- package/src/client/ssr/head/Css.js +1 -1
- package/src/client/ssr/head/CyberiaPortalScripts.js +1 -1
- package/src/client/ssr/head/DefaultScripts.js +1 -1
- package/src/client/ssr/head/ItemledgerScripts.js +1 -1
- package/src/client/ssr/head/Microdata.js +1 -1
- package/src/client/ssr/head/Production.js +1 -1
- package/src/client/ssr/head/Pwa.js +1 -1
- package/src/client/ssr/head/PwaItemledger.js +1 -1
- package/src/client/ssr/head/Seo.js +1 -1
- package/src/client/ssr/head/UnderpostScripts.js +1 -1
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +1 -1
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +1 -1
- package/src/client/ssr/views/Cyberia404.js +7 -5
- package/src/client/ssr/views/CyberiaServerMetrics.js +1 -1
- package/src/client/ssr/views/Maintenance.js +1 -1
- package/src/client/ssr/views/NoNetworkConnection.js +1 -1
- package/src/client/ssr/views/Test.js +1 -1
- package/src/client/sw/core.sw.js +20 -14
- package/src/client-builder/client-build-docs.js +92 -77
- package/src/client-builder/client-build-live.js +2 -2
- package/src/client-builder/client-build.js +105 -74
- package/src/client-builder/client-bundle.js +347 -0
- package/src/client-builder/client-dev-server.js +3 -3
- package/src/client-builder/client-icons.js +2 -2
- package/src/client-builder/ssr.js +3 -3
- package/src/client.build.js +3 -6
- package/src/client.dev.js +3 -6
- package/src/db/DataBaseProvider.js +186 -3
- package/src/db/mariadb/MariaDB.js +3 -2
- package/src/db/mongo/MongoBootstrap.js +273 -101
- package/src/db/mongo/MongoExpress.js +187 -0
- package/src/db/mongo/MongooseDB.js +7 -8
- package/src/{server/valkey.js → db/valkey/Valkey.js} +5 -4
- package/src/grpc/cyberia/grpc-server.js +6 -8
- package/src/index.js +79 -23
- package/src/mailer/EmailRender.js +2 -2
- package/src/mailer/MailerInterceptor.js +87 -0
- package/src/mailer/MailerProvider.js +50 -6
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +144 -147
- package/src/projects/cyberia/atlas-sprite-sheet-store.js +391 -0
- package/src/projects/cyberia/besu-genesis-generator.js +8 -17
- package/src/projects/cyberia/boot-contract-fixtures.js +32 -0
- package/src/projects/cyberia/catalog-cyberia.js +54 -10
- package/src/projects/cyberia/gemini-client.js +4 -4
- package/src/projects/cyberia/generate-saga.js +5 -12
- package/src/projects/cyberia/hot-reload-trigger.js +18 -29
- package/src/projects/cyberia/instance-backup.js +210 -0
- package/src/projects/cyberia/instance-data.js +178 -258
- package/src/projects/cyberia/ipfs-client.js +4 -4
- package/src/projects/cyberia/map-preview-generator.js +33 -69
- package/src/projects/cyberia/object-layer.js +153 -320
- package/src/projects/cyberia/seed-audio.js +139 -0
- package/src/projects/cyberia/semantic-layer-generator-skin.js +2 -8
- package/src/projects/cyberia/semantic-layer-generator.js +3 -19
- package/src/projects/cyberia/stat-balance.js +81 -0
- package/src/projects/cyberia/stat-commands.js +23 -0
- package/src/projects/cyberia/stat-contract-generator.js +101 -0
- package/src/projects/underpost/catalog-underpost.js +9 -1
- package/src/proxy.js +4 -7
- package/src/runtime/cyberia-client/Dockerfile +17 -8
- package/src/runtime/cyberia-client/Dockerfile.dev +13 -4
- package/src/runtime/cyberia-server/Dockerfile +18 -6
- package/src/runtime/cyberia-server/Dockerfile.dev +16 -3
- package/src/runtime/engine-cyberia/Dockerfile +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.dev +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.test +5 -5
- package/src/runtime/engine-cyberia/compose.env +17 -5
- package/src/runtime/engine-cyberia/docker-compose.yml +23 -17
- package/src/runtime/express/Express.js +32 -27
- package/src/runtime/lampp/Lampp.js +22 -70
- package/src/runtime/nginx/Nginx.js +1 -1
- package/src/runtime/wp/Wp.js +16 -48
- package/src/server/{catalog.js → build/catalog.js} +15 -5
- package/src/server/build/coverage.js +188 -0
- package/src/server/build/execution.js +402 -0
- package/src/server/build/package.js +508 -0
- package/src/server/build/testing.js +578 -0
- package/src/server/{dns.js → network/dns.js} +144 -11
- package/src/server/{forward-proxy.js → network/forward-proxy.js} +10 -18
- package/src/server/{middlewares.js → network/middlewares.js} +11 -5
- package/src/server/network/node-capability.js +98 -0
- package/src/server/{peer.js → network/peer.js} +3 -3
- package/src/server/{proxy.js → network/proxy.js} +7 -13
- package/src/server/network/router.js +356 -0
- package/src/server/{tls.js → network/tls.js} +2 -2
- package/src/server/{underpost-compression.js → network/underpost-compression.js} +1 -1
- package/src/server/{underpost-gateway.js → network/underpost-gateway.js} +7 -7
- package/src/server/{underpost-ingress.js → network/underpost-ingress.js} +2 -2
- package/src/server/{cri.js → ops/cri.js} +2 -2
- package/src/server/{cron.js → ops/cron.js} +349 -74
- package/src/server/ops/event-notification.js +284 -0
- package/src/server/{logger.js → ops/logger.js} +143 -23
- package/src/server/ops/monitoring.js +1724 -0
- package/src/server/{systemd.js → ops/systemd.js} +55 -1
- package/src/server/{conf.js → runtime/conf.js} +516 -423
- package/src/server/runtime/config-scope.js +215 -0
- package/src/server/runtime/environment.js +149 -0
- package/src/server/{process.js → runtime/process.js} +153 -12
- package/src/server/{runtime-status.js → runtime/runtime-status.js} +155 -16
- package/src/server/{runtime.js → runtime/runtime.js} +12 -8
- package/src/server/{start.js → runtime/start.js} +128 -39
- package/src/server/{auth.js → security/auth.js} +7 -8
- package/src/server/security/container-storage.js +382 -0
- package/src/server/{crypto.js → security/crypto.js} +1 -1
- package/src/server/{selinux.js → security/selinux.js} +1 -1
- package/src/server/{backup.js → storage/backup.js} +17 -8
- package/src/server/{data-query.js → storage/data-query.js} +17 -1
- package/src/server/storage/downloader.js +121 -0
- package/src/server/storage/repository.js +68 -0
- package/src/server/storage/zip.js +153 -0
- package/src/server.js +4 -7
- package/src/ws/IoInterface.js +1 -1
- package/src/ws/IoServer.js +1 -1
- package/src/ws/core/core.ws.connection.js +1 -1
- package/src/ws/core/core.ws.emit.js +1 -1
- package/src/ws/core/core.ws.server.js +1 -1
- package/src/ws/default/default.ws.connection.js +1 -1
- package/src/ws/default/default.ws.emit.js +1 -1
- package/src/ws/default/default.ws.server.js +1 -1
- package/test/e2e/event-e2e-public-ingress-down.js +45 -0
- package/test/e2e/event-e2e-wireguard-server-down.js +38 -0
- package/test/e2e/event-e2e-wireguard-spoke-down.js +40 -0
- package/test/{api.test.js → integration/app/api.test.js} +33 -14
- package/test/integration/app/cyberia/atlas-sprite-sheet-store.test.js +402 -0
- package/test/integration/app/cyberia/atlas-sprite-sheet.test.js +86 -0
- package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +64 -0
- package/test/integration/app/cyberia/cyberia-entity-type-default.test.js +842 -0
- package/test/integration/app/cyberia/cyberia-instance-conf-coerce.test.js +53 -0
- package/test/{cyberia-instance-conf-defaults.test.js → integration/app/cyberia/cyberia-instance-conf-defaults.test.js} +17 -23
- package/test/integration/app/cyberia/cyberia-instance-items.test.js +90 -0
- package/test/integration/app/cyberia/cyberia-load.test.js +466 -0
- package/test/integration/app/cyberia/cyberia-map-audio-conf.test.js +256 -0
- package/test/integration/app/cyberia/cyberia-stats.test.js +150 -0
- package/test/integration/app/cyberia/fallback-world-capture.test.js +338 -0
- package/test/integration/app/cyberia/object-layer-item-id.test.js +327 -0
- package/test/integration/app/cyberia/object-layer-item-selection.test.js +56 -0
- package/test/integration/app/cyberia/object-layer-natural-key.test.js +32 -0
- package/test/integration/app/cyberia/seed-audio.test.js +275 -0
- package/test/{shape-generator.test.js → integration/app/cyberia/shape-generator.test.js} +1 -1
- package/test/integration/infra/1-security/config-scope.test.js +305 -0
- package/test/integration/infra/1-security/container-storage.test.js +356 -0
- package/test/integration/infra/1-security/in-pod-cli-surface.test.js +86 -0
- package/test/integration/infra/1-security/secret-onboarding.test.js +930 -0
- package/test/{selinux.test.js → integration/infra/1-security/selinux.test.js} +2 -4
- package/test/{sops-secret-store.test.js → integration/infra/1-security/sops-secret-store.test.js} +415 -61
- package/test/integration/infra/1-security/systemd-service.test.js +70 -0
- package/test/integration/infra/1-security/underpost-config-secret.test.js +367 -0
- package/test/integration/infra/2-network/dns-firewall.test.js +566 -0
- package/test/integration/infra/2-network/node-capability.test.js +182 -0
- package/test/integration/infra/2-network/wireguard-cli.test.js +1187 -0
- package/test/{wireguard-edge.test.js → integration/infra/2-network/wireguard-edge.test.js} +649 -55
- package/test/{cluster-instances.test.js → integration/infra/3-cluster/cluster-instances.test.js} +11 -15
- package/test/{deploy-node-placement.test.js → integration/infra/3-cluster/deploy-node-placement.test.js} +3 -3
- package/test/integration/infra/3-cluster/docker-compose-stack.test.js +313 -0
- package/test/integration/infra/3-cluster/mongo-express-deploy.test.js +156 -0
- package/test/integration/infra/4-ingress/api-cross-origin.test.js +79 -0
- package/test/integration/infra/4-ingress/deploy-routes.test.js +379 -0
- package/test/integration/infra/4-ingress/gateway-static-assets.test.js +453 -0
- package/test/{instance-traffic-plan.test.js → integration/infra/4-ingress/instance-traffic-plan.test.js} +10 -6
- package/test/{underpost-gateway.test.js → integration/infra/4-ingress/underpost-gateway.test.js} +6 -6
- package/test/{underpost-ingress.test.js → integration/infra/4-ingress/underpost-ingress.test.js} +4 -4
- package/test/integration/infra/5-observability/cron-jobs.test.js +652 -0
- package/test/{deploy-monitor.test.js → integration/infra/5-observability/deploy-monitor.test.js} +29 -31
- package/test/integration/infra/5-observability/event-notification.test.js +197 -0
- package/test/integration/infra/5-observability/event-remediation.test.js +502 -0
- package/test/integration/infra/5-observability/event-targets.test.js +1174 -0
- package/test/integration/infra/5-observability/monitoring-stack.test.js +902 -0
- package/test/support/shell-harness.js +73 -0
- package/test/unit/build-template.test.js +97 -0
- package/test/unit/build-workflow-offline.test.js +132 -0
- package/test/unit/catalog.test.js +71 -0
- package/test/unit/client-build-docs.test.js +361 -0
- package/test/unit/client-bundle.test.js +313 -0
- package/test/unit/conf-loading.test.js +303 -0
- package/test/unit/conf-resolution.test.js +996 -0
- package/test/unit/coverage-artifact.test.js +221 -0
- package/test/{crypto.test.js → unit/crypto.test.js} +1 -1
- package/test/unit/cyberia/instance-backup.test.js +183 -0
- package/test/unit/cyberia/instance-object-layer-items.test.js +46 -0
- package/test/unit/cyberia/publish-workflow.test.js +22 -0
- package/test/unit/cyberia/stat-balance.test.js +69 -0
- package/test/unit/deploy-env-resolution.test.js +38 -0
- package/test/unit/deploy-log-table.test.js +518 -0
- package/test/unit/downloader-integrity.test.js +98 -0
- package/test/unit/execution-profiles.test.js +219 -0
- package/test/unit/file-reference-registry.test.js +141 -0
- package/test/unit/fleet-sync-source.test.js +149 -0
- package/test/unit/fs-storage-paths.test.js +596 -0
- package/test/unit/logger-redaction.test.js +141 -0
- package/test/unit/package.test.js +457 -0
- package/test/unit/prepare-host.test.js +382 -0
- package/test/unit/process-environment.test.js +18 -0
- package/test/unit/propagation-message.test.js +78 -0
- package/test/unit/redeploy-plan.test.js +24 -0
- package/test/unit/release-bump.test.js +474 -0
- package/test/unit/ssh-output-redaction.test.js +28 -0
- package/test/unit/start-options.test.js +46 -0
- package/test/unit/test-tiers.test.js +220 -0
- package/test/unit/zip-archive.test.js +142 -0
- package/vitest.config.js +66 -0
- package/.nycrc +0 -9
- package/deploy/lib/logging.sh +0 -96
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +0 -48
- package/manifests/mongodb/pv-pvc.yaml +0 -59
- package/scripts/coverall-test-cyberia.sh +0 -24
- package/scripts/coverall-test.sh +0 -24
- package/scripts/link-local-underpost-cli.sh +0 -6
- package/src/api/cyberia-instance/cyberia-fallback-default-items.js +0 -63
- package/src/api/user/user.build.js +0 -16
- package/src/cli/env.js +0 -177
- package/src/client/components/core/Blockchain.js +0 -41
- package/src/client/components/core/Blog.js +0 -9
- package/src/client/components/core/KeyboardAvoidance.js +0 -145
- package/src/client/components/cyberia/FallbackWorldEngineCyberia.js +0 -368
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +0 -148
- package/src/server/downloader.js +0 -73
- package/src/server/environment.js +0 -98
|
@@ -1231,27 +1231,6 @@ class FileExplorer {
|
|
|
1231
1231
|
{ headerName: '', width: 60, cellRenderer: LoadFolderActionsRenderer },
|
|
1232
1232
|
],
|
|
1233
1233
|
rowSelection: 'single',
|
|
1234
|
-
onSelectionChanged: (event) => {
|
|
1235
|
-
return;
|
|
1236
|
-
const selectedRows = AgGrid.grids[gridFolderId].getSelectedRows();
|
|
1237
|
-
console.log('selectedRows', { event, selectedRows });
|
|
1238
|
-
if (selectedRows[0]) {
|
|
1239
|
-
const newLocation = selectedRows[0].location;
|
|
1240
|
-
if (newLocation === location) return;
|
|
1241
|
-
location = newLocation;
|
|
1242
|
-
setPath(`${window.location.pathname}?location=${location}`);
|
|
1243
|
-
s(`.file-explorer-query-nav`).value = location;
|
|
1244
|
-
const format = FileExplorer.documentDataFormat({ document: documentInstance, location });
|
|
1245
|
-
files = format.files;
|
|
1246
|
-
folders = format.folders;
|
|
1247
|
-
applySearchFilter();
|
|
1248
|
-
currentPage = 0;
|
|
1249
|
-
displayedFiles = getPagedFiles();
|
|
1250
|
-
AgGrid.grids[gridFileId].setGridOption('rowData', displayedFiles);
|
|
1251
|
-
AgGrid.grids[gridFolderId].setGridOption('rowData', folders);
|
|
1252
|
-
updatePaginationUI();
|
|
1253
|
-
}
|
|
1254
|
-
},
|
|
1255
1234
|
},
|
|
1256
1235
|
})}
|
|
1257
1236
|
</div>
|
|
@@ -415,6 +415,17 @@ class Modal {
|
|
|
415
415
|
},
|
|
416
416
|
{ key: `slide-menu-${idModal}` },
|
|
417
417
|
);
|
|
418
|
+
// The fixed hamburger only opens the menu: it shows while the top bar is collapsed
|
|
419
|
+
// and the menu is closed. An open menu (50px or full) carries its own controls and
|
|
420
|
+
// already pushes the views aside, so neither the button nor the title padding apply.
|
|
421
|
+
const syncFixedMenuButton = () => {
|
|
422
|
+
const fixed = s(`.main-btn-menu-top-fixed-container`);
|
|
423
|
+
if (!fixed) return;
|
|
424
|
+
const collapsed = s(`.main-body-btn-ui-close`) && s(`.main-body-btn-ui-close`).classList.contains('hide');
|
|
425
|
+
const active = collapsed && Modal.Data[idModal][options.mode].width === 0;
|
|
426
|
+
fixed.classList[active ? 'remove' : 'add']('hide');
|
|
427
|
+
s('body').classList[active ? 'add' : 'remove']('main-btn-menu-top-fixed-active');
|
|
428
|
+
};
|
|
418
429
|
barConfig.buttons.menu.onClick = () => {
|
|
419
430
|
Modal.Data[idModal][options.mode].width = slideMenuWidth;
|
|
420
431
|
s(`.btn-menu-${idModal}`).classList.add('hide');
|
|
@@ -437,6 +448,7 @@ class Modal {
|
|
|
437
448
|
} else {
|
|
438
449
|
s(`.${idModal}`).style.left = `0px`;
|
|
439
450
|
}
|
|
451
|
+
syncFixedMenuButton();
|
|
440
452
|
Responsive.triggerChanged(`slide-menu-${idModal}`);
|
|
441
453
|
};
|
|
442
454
|
barConfig.buttons.close.onClick = () => {
|
|
@@ -460,11 +472,12 @@ class Modal {
|
|
|
460
472
|
} else {
|
|
461
473
|
s(`.${idModal}`).style.left = `-${originSlideMenuWidth}px`;
|
|
462
474
|
}
|
|
475
|
+
syncFixedMenuButton();
|
|
463
476
|
Responsive.triggerChanged(`slide-menu-${idModal}`);
|
|
464
477
|
};
|
|
465
478
|
transition += `, width 0.3s`;
|
|
466
479
|
|
|
467
|
-
setTimeout(() => {
|
|
480
|
+
setTimeout(async () => {
|
|
468
481
|
setTimeout(btnCloseEvent);
|
|
469
482
|
append(
|
|
470
483
|
'body',
|
|
@@ -517,6 +530,46 @@ class Modal {
|
|
|
517
530
|
Modal.actionBtnCenter();
|
|
518
531
|
};
|
|
519
532
|
|
|
533
|
+
// Fixed top-left hamburger, shown only while the top bar is collapsed
|
|
534
|
+
// (main-body-btn-ui-close hidden). Not needed for 'top-bottom-bar' which
|
|
535
|
+
// keeps its own center action button in the bottom bar.
|
|
536
|
+
if (
|
|
537
|
+
idModal === 'modal-menu' &&
|
|
538
|
+
options.mode !== 'slide-menu-right' &&
|
|
539
|
+
options.barMode !== 'top-bottom-bar'
|
|
540
|
+
) {
|
|
541
|
+
append(
|
|
542
|
+
'body',
|
|
543
|
+
html`
|
|
544
|
+
<div
|
|
545
|
+
class="fix main-btn-menu-top-fixed-container hide"
|
|
546
|
+
style="top: 0px; left: 0px; z-index: 10; height: ${originHeightTopBar}px; width: ${originHeightTopBar}px"
|
|
547
|
+
>
|
|
548
|
+
${await BtnIcon.instance({
|
|
549
|
+
style: `height: 100%`,
|
|
550
|
+
class: `in fll main-btn-menu-top action-bar-box action-btn-center-top-fixed`,
|
|
551
|
+
label: html`<div class="abs center">${barConfig.buttons.menu.label}</div>`,
|
|
552
|
+
})}
|
|
553
|
+
</div>
|
|
554
|
+
<style>
|
|
555
|
+
/* View modals sit at top: 0 while the top bar is collapsed; keep their
|
|
556
|
+
title clear of the fixed hamburger. The padding eases at the same pace
|
|
557
|
+
the views slide so the title moves once, not a jump and a slide back. */
|
|
558
|
+
.title-main-modal {
|
|
559
|
+
transition: padding-left 0.3s;
|
|
560
|
+
}
|
|
561
|
+
body.main-btn-menu-top-fixed-active .title-main-modal {
|
|
562
|
+
padding-left: ${originHeightTopBar}px;
|
|
563
|
+
}
|
|
564
|
+
</style>
|
|
565
|
+
`,
|
|
566
|
+
);
|
|
567
|
+
EventsUI.onClick(`.action-btn-center-top-fixed`, (e) => {
|
|
568
|
+
e.preventDefault();
|
|
569
|
+
Modal.actionBtnCenter();
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
|
|
520
573
|
s(`.main-body-btn-bar-custom`).onclick = () => {
|
|
521
574
|
if (s(`.main-body-btn-ui-close`).classList.contains('hide')) {
|
|
522
575
|
s(`.main-body-btn-ui`).click();
|
|
@@ -548,6 +601,7 @@ class Modal {
|
|
|
548
601
|
options.heightBottomBar = 0;
|
|
549
602
|
s(`.slide-menu-top-bar`).classList.add('hide');
|
|
550
603
|
s(`.bottom-bar`).classList.add('hide');
|
|
604
|
+
syncFixedMenuButton();
|
|
551
605
|
s(`.modal-menu`).style.top = '0px';
|
|
552
606
|
s(`.main-body-btn-container`).style.top = '50px';
|
|
553
607
|
s(`.main-body`).style.top = '0px';
|
|
@@ -563,6 +617,7 @@ class Modal {
|
|
|
563
617
|
s(`.main-body-btn-container`).style.top = `${options.heightTopBar + 50}px`;
|
|
564
618
|
s(`.slide-menu-top-bar`).classList.remove('hide');
|
|
565
619
|
s(`.bottom-bar`).classList.remove('hide');
|
|
620
|
+
syncFixedMenuButton();
|
|
566
621
|
s(`.main-body`).style.top = `${options.heightTopBar}px`;
|
|
567
622
|
s(`.main-body`).style.height = `${windowGetH() - options.heightTopBar}px`;
|
|
568
623
|
for (const event of Object.keys(Modal.Data[idModal].onBarUiOpen))
|
|
@@ -734,7 +734,7 @@ class PanelForm {
|
|
|
734
734
|
panelData.loading = false;
|
|
735
735
|
LoadingAnimation.spinner.stop(`.panel-placeholder-bottom-${idPanel}`);
|
|
736
736
|
};
|
|
737
|
-
const
|
|
737
|
+
const renderSSRPanelData = async () =>
|
|
738
738
|
await panelRender({
|
|
739
739
|
data: range(0, 0).map((i) => ({
|
|
740
740
|
id: i,
|
|
@@ -827,7 +827,7 @@ class PanelForm {
|
|
|
827
827
|
// Always reset skip to 0 when reloading (whether cid exists or not)
|
|
828
828
|
PanelForm.Data[idPanel].skip = 0;
|
|
829
829
|
const containerSelector = `.${options.parentIdModal ? 'html-' + options.parentIdModal : 'main-body'}`;
|
|
830
|
-
htmls(containerSelector, await
|
|
830
|
+
htmls(containerSelector, await renderSSRPanelData());
|
|
831
831
|
await getPanelData();
|
|
832
832
|
htmls(
|
|
833
833
|
containerSelector,
|
|
@@ -906,10 +906,10 @@ class PanelForm {
|
|
|
906
906
|
};
|
|
907
907
|
}
|
|
908
908
|
if (options.parentIdModal) {
|
|
909
|
-
htmls(`.html-${options.parentIdModal}`, await
|
|
909
|
+
htmls(`.html-${options.parentIdModal}`, await renderSSRPanelData());
|
|
910
910
|
return '';
|
|
911
911
|
}
|
|
912
|
-
return await
|
|
912
|
+
return await renderSSRPanelData();
|
|
913
913
|
}
|
|
914
914
|
}
|
|
915
915
|
export { PanelForm };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository identity on the client.
|
|
3
|
+
*
|
|
4
|
+
* The owner is resolved at build time by `src/server/storage/repository.js` and travels
|
|
5
|
+
* in `renderPayload.repository`. Composing every GitHub, Pages and Coveralls URL
|
|
6
|
+
* from it is what keeps a fork's links pointing at the fork instead of upstream.
|
|
7
|
+
*
|
|
8
|
+
* @module src/client/components/core/Repository.js
|
|
9
|
+
* @namespace PwaRepository
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Identity injected by the build.
|
|
14
|
+
* @returns {{owner: string, name: string, template: string, packageSuffix: string}}
|
|
15
|
+
* @memberof PwaRepository
|
|
16
|
+
*/
|
|
17
|
+
const repositoryIdentity = () => window.renderPayload.repository;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Repository holding the prebuilt package and its published demo.
|
|
21
|
+
* @returns {string}
|
|
22
|
+
* @memberof PwaRepository
|
|
23
|
+
*/
|
|
24
|
+
const packageRepository = () => {
|
|
25
|
+
const { template, packageSuffix } = repositoryIdentity();
|
|
26
|
+
return `${template}${packageSuffix}`;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Composes a github.com URL under the resolved owner.
|
|
31
|
+
* @param {...string} segments - Path segments after the owner.
|
|
32
|
+
* @returns {string}
|
|
33
|
+
* @memberof PwaRepository
|
|
34
|
+
*/
|
|
35
|
+
const githubUrl = (...segments) =>
|
|
36
|
+
`https://github.com/${[repositoryIdentity().owner, ...segments].filter(Boolean).join('/')}/`;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Composes a GitHub Pages URL under the resolved owner.
|
|
40
|
+
* @param {string} repository - Repository publishing the page.
|
|
41
|
+
* @returns {string}
|
|
42
|
+
* @memberof PwaRepository
|
|
43
|
+
*/
|
|
44
|
+
const githubPagesUrl = (repository) => `https://${repositoryIdentity().owner}.github.io/${repository}/`;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Coveralls report for the engine repository this build came from.
|
|
48
|
+
* @returns {string}
|
|
49
|
+
* @memberof PwaRepository
|
|
50
|
+
*/
|
|
51
|
+
const coverallsUrl = () => {
|
|
52
|
+
const { owner, name } = repositoryIdentity();
|
|
53
|
+
return `https://coveralls.io/github/${owner}/${name}`;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { coverallsUrl, githubPagesUrl, githubUrl, packageRepository, repositoryIdentity };
|
|
@@ -42,6 +42,13 @@ class Translate {
|
|
|
42
42
|
static hasChangedListener(key) {
|
|
43
43
|
return translateEvents.has(key);
|
|
44
44
|
}
|
|
45
|
+
static text(keyLang, options = { disableTextFormat: false }) {
|
|
46
|
+
const translations = Translate.Data[keyLang];
|
|
47
|
+
if (!translations) return options.disableTextFormat ? keyLang : textFormatted(keyLang);
|
|
48
|
+
const lang = s('html')?.lang || 'en';
|
|
49
|
+
const value = translations[lang] ?? translations.en ?? keyLang;
|
|
50
|
+
return options.disableTextFormat ? value : textFormatted(value);
|
|
51
|
+
}
|
|
45
52
|
static async emitChanged(detail) {
|
|
46
53
|
await translateEvents.emit(TranslateEventType.changed, detail);
|
|
47
54
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utility module for fullscreen mode management with cross-browser and PWA compatibility.
|
|
3
3
|
* Provides robust fullscreen detection, event handling, and UI synchronization.
|
|
4
|
-
* @module src/client/components/core/
|
|
5
|
-
* @namespace
|
|
4
|
+
* @module src/client/components/core/ViewModeController.js
|
|
5
|
+
* @namespace ViewModeControllerClient
|
|
6
6
|
*/
|
|
7
7
|
import { Responsive } from './Responsive.js';
|
|
8
8
|
import { ToggleSwitch } from './ToggleSwitch.js';
|
|
9
9
|
import { Translate } from './Translate.js';
|
|
10
|
-
import {
|
|
10
|
+
import { fullScreenIn, fullScreenOut, s } from './VanillaJs.js';
|
|
11
11
|
/**
|
|
12
12
|
* Manages fullscreen mode state, event handling, and UI synchronization.
|
|
13
13
|
* Supports all major browsers and PWA/Nativefier environments with comprehensive
|
|
14
14
|
* vendor-prefixed API detection.
|
|
15
|
-
* @memberof
|
|
15
|
+
* @memberof ViewModeControllerClient
|
|
16
16
|
*/
|
|
17
|
-
class
|
|
17
|
+
class ViewModeController {
|
|
18
18
|
/**
|
|
19
19
|
* Internal state flag tracking the intended fullscreen mode.
|
|
20
20
|
* @type {boolean}
|
|
@@ -43,7 +43,7 @@ class FullScreen {
|
|
|
43
43
|
* - Mozilla (Firefox)
|
|
44
44
|
* - Microsoft (IE/Edge)
|
|
45
45
|
* @private
|
|
46
|
-
* @memberof
|
|
46
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
47
47
|
* @returns {boolean} True if currently in fullscreen mode, false otherwise.
|
|
48
48
|
*/
|
|
49
49
|
static _isFullScreen() {
|
|
@@ -62,16 +62,16 @@ class FullScreen {
|
|
|
62
62
|
* Prevents race conditions using the _syncInProgress flag.
|
|
63
63
|
* Updates the toggle switch only if there's a mismatch between UI and actual state.
|
|
64
64
|
* @private
|
|
65
|
-
* @memberof
|
|
65
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
66
66
|
* @returns {void}
|
|
67
67
|
*/
|
|
68
68
|
static _syncToggleState() {
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
const actualFullScreen =
|
|
69
|
+
if (ViewModeController._syncInProgress) return;
|
|
70
|
+
ViewModeController._syncInProgress = true;
|
|
71
|
+
const actualFullScreen = ViewModeController._isFullScreen();
|
|
72
72
|
// Only update if there's a mismatch
|
|
73
|
-
if (
|
|
74
|
-
|
|
73
|
+
if (ViewModeController._fullScreenSwitch !== actualFullScreen) {
|
|
74
|
+
ViewModeController._fullScreenSwitch = actualFullScreen;
|
|
75
75
|
// Update toggle switch UI if it exists
|
|
76
76
|
const toggle = s('.fullscreen');
|
|
77
77
|
if (toggle && ToggleSwitch.Tokens[`fullscreen`]) {
|
|
@@ -82,18 +82,18 @@ class FullScreen {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
setTimeout(() => {
|
|
85
|
-
|
|
85
|
+
ViewModeController._syncInProgress = false;
|
|
86
86
|
}, 100);
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
89
|
* Event handler for fullscreen change events.
|
|
90
90
|
* Triggers UI state synchronization when fullscreen mode changes.
|
|
91
91
|
* @private
|
|
92
|
-
* @memberof
|
|
92
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
93
93
|
* @returns {void}
|
|
94
94
|
*/
|
|
95
95
|
static _handleFullScreenChange() {
|
|
96
|
-
|
|
96
|
+
ViewModeController._syncToggleState();
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Attaches all necessary event listeners for fullscreen mode detection.
|
|
@@ -103,20 +103,20 @@ class FullScreen {
|
|
|
103
103
|
* - ESC key detection (fallback for manual fullscreen exit)
|
|
104
104
|
* Only attaches listeners once to prevent duplicates.
|
|
105
105
|
* @private
|
|
106
|
-
* @memberof
|
|
106
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
107
107
|
* @returns {void}
|
|
108
108
|
*/
|
|
109
109
|
static _addEventListeners() {
|
|
110
|
-
if (
|
|
110
|
+
if (ViewModeController._eventListenersAdded) return;
|
|
111
111
|
const events = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];
|
|
112
112
|
events.forEach((eventName) => {
|
|
113
|
-
document.addEventListener(eventName, () =>
|
|
113
|
+
document.addEventListener(eventName, () => ViewModeController._handleFullScreenChange(), false);
|
|
114
114
|
});
|
|
115
115
|
// Additional check for PWA/Nativefier window resize events
|
|
116
116
|
window.addEventListener(
|
|
117
117
|
'resize',
|
|
118
118
|
() => {
|
|
119
|
-
setTimeout(() =>
|
|
119
|
+
setTimeout(() => ViewModeController._syncToggleState(), 150);
|
|
120
120
|
},
|
|
121
121
|
false,
|
|
122
122
|
);
|
|
@@ -125,77 +125,80 @@ class FullScreen {
|
|
|
125
125
|
'keydown',
|
|
126
126
|
(e) => {
|
|
127
127
|
if (e.key === 'Escape' || e.keyCode === 27) {
|
|
128
|
-
setTimeout(() =>
|
|
128
|
+
setTimeout(() => ViewModeController._syncToggleState(), 100);
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
false,
|
|
132
132
|
);
|
|
133
|
-
|
|
133
|
+
ViewModeController._eventListenersAdded = true;
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
136
136
|
* Enters fullscreen mode if not already in fullscreen.
|
|
137
137
|
* Updates internal state and triggers fullscreen API.
|
|
138
138
|
* Verifies the state change after a delay to ensure synchronization.
|
|
139
139
|
* @private
|
|
140
|
-
* @memberof
|
|
140
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
141
141
|
* @returns {void}
|
|
142
142
|
*/
|
|
143
143
|
static _enterFullScreen() {
|
|
144
|
-
if (
|
|
145
|
-
|
|
144
|
+
if (ViewModeController._isFullScreen()) return;
|
|
145
|
+
ViewModeController._fullScreenSwitch = true;
|
|
146
146
|
fullScreenIn();
|
|
147
147
|
// Verify after attempt
|
|
148
|
-
setTimeout(() =>
|
|
148
|
+
setTimeout(() => ViewModeController._syncToggleState(), 300);
|
|
149
149
|
}
|
|
150
150
|
/**
|
|
151
151
|
* Exits fullscreen mode if currently in fullscreen.
|
|
152
152
|
* Updates internal state and triggers fullscreen exit API.
|
|
153
153
|
* Verifies the state change after a delay to ensure synchronization.
|
|
154
154
|
* @private
|
|
155
|
-
* @memberof
|
|
155
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
156
156
|
* @returns {void}
|
|
157
157
|
*/
|
|
158
158
|
static _exitFullScreen() {
|
|
159
|
-
if (!
|
|
160
|
-
|
|
159
|
+
if (!ViewModeController._isFullScreen()) return;
|
|
160
|
+
ViewModeController._fullScreenSwitch = false;
|
|
161
161
|
fullScreenOut();
|
|
162
162
|
// Verify after attempt
|
|
163
|
-
setTimeout(() =>
|
|
163
|
+
setTimeout(() => ViewModeController._syncToggleState(), 300);
|
|
164
164
|
}
|
|
165
165
|
/**
|
|
166
166
|
* Renders the fullscreen toggle setting UI component.
|
|
167
167
|
* Initializes fullscreen state detection, sets up event listeners,
|
|
168
168
|
* and creates a toggle switch for user interaction.
|
|
169
169
|
* Integrates with the Responsive system for dynamic updates.
|
|
170
|
-
* @memberof
|
|
170
|
+
* @memberof ViewModeControllerClient.ViewModeController
|
|
171
171
|
* @returns {Promise<string>} A promise resolving to the HTML string for the fullscreen setting component.
|
|
172
172
|
*/
|
|
173
173
|
static async RenderSetting() {
|
|
174
174
|
// Initialize state from actual fullscreen status
|
|
175
|
-
|
|
175
|
+
ViewModeController._fullScreenSwitch = ViewModeController._isFullScreen();
|
|
176
176
|
// Setup event listeners once
|
|
177
|
-
|
|
177
|
+
ViewModeController._addEventListeners();
|
|
178
178
|
// Update responsive event
|
|
179
|
-
Responsive.onChanged(
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
Responsive.onChanged(
|
|
180
|
+
() => {
|
|
181
|
+
ViewModeController._syncToggleState();
|
|
182
|
+
},
|
|
183
|
+
{ key: 'full-screen-settings' },
|
|
184
|
+
);
|
|
182
185
|
return html`<div class="in section-mp">
|
|
183
186
|
${await ToggleSwitch.instance({
|
|
184
187
|
wrapper: true,
|
|
185
188
|
wrapperLabel: html`<i class="fa-solid fa-expand"></i> ${Translate.instance('fullscreen')}`,
|
|
186
189
|
id: 'fullscreen',
|
|
187
190
|
disabledOnClick: true,
|
|
188
|
-
checked:
|
|
191
|
+
checked: ViewModeController._fullScreenSwitch,
|
|
189
192
|
on: {
|
|
190
193
|
unchecked: () => {
|
|
191
|
-
|
|
194
|
+
ViewModeController._exitFullScreen();
|
|
192
195
|
},
|
|
193
196
|
checked: () => {
|
|
194
|
-
|
|
197
|
+
ViewModeController._enterFullScreen();
|
|
195
198
|
},
|
|
196
199
|
},
|
|
197
200
|
})}
|
|
198
201
|
</div>`;
|
|
199
202
|
}
|
|
200
203
|
}
|
|
201
|
-
export {
|
|
204
|
+
export { ViewModeController };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CryptoService } from '../../services/crypto/crypto.service.js';
|
|
2
|
-
import { UserService } from '../../services/user/user.service.js';
|
|
3
2
|
import { Auth } from './Auth.js';
|
|
4
3
|
import { BtnIcon } from './BtnIcon.js';
|
|
5
4
|
import { getId } from './CommonJs.js';
|
|
@@ -21,16 +20,6 @@ class Wallet {
|
|
|
21
20
|
hash: 'SHA-256',
|
|
22
21
|
};
|
|
23
22
|
const format = 'jwk';
|
|
24
|
-
(async () => {
|
|
25
|
-
return;
|
|
26
|
-
const { data: payload } = await UserService.get({ id: 'public-key-sign-token' });
|
|
27
|
-
const signature = await window.crypto.subtle.sign(
|
|
28
|
-
algorithm,
|
|
29
|
-
keyPair.privateKey,
|
|
30
|
-
new TextEncoder().encode(payload),
|
|
31
|
-
);
|
|
32
|
-
const base64Signature = btoa(String.fromCharCode(...new Uint8Array(signature)));
|
|
33
|
-
})();
|
|
34
23
|
const keyPair = await window.crypto.subtle.generateKey(algorithm, true, ['sign', 'verify']);
|
|
35
24
|
const privateKey = await window.crypto.subtle.exportKey(format, keyPair.privateKey);
|
|
36
25
|
const publicKey = await window.crypto.subtle.exportKey(format, keyPair.publicKey);
|
|
@@ -150,7 +150,13 @@ class PwaWorker {
|
|
|
150
150
|
}
|
|
151
151
|
const run = async () => {
|
|
152
152
|
const registration = await this.getRegistration();
|
|
153
|
-
if (
|
|
153
|
+
if (registration) {
|
|
154
|
+
try {
|
|
155
|
+
await registration.update();
|
|
156
|
+
} catch (error) {
|
|
157
|
+
logger.error('Error updating service worker:', error);
|
|
158
|
+
}
|
|
159
|
+
} else await this.register();
|
|
154
160
|
};
|
|
155
161
|
if (document.readyState === 'complete') run();
|
|
156
162
|
else window.addEventListener('load', run, { once: true });
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Css } from '../core/Css.js';
|
|
2
|
-
import {
|
|
2
|
+
import { ViewModeController } from '../core/ViewModeController.js';
|
|
3
3
|
import { Translate } from '../core/Translate.js';
|
|
4
4
|
import { Worker } from '../core/Worker.js';
|
|
5
5
|
|
|
6
6
|
class SettingsCryptokoyn {
|
|
7
7
|
static async instance() {
|
|
8
|
-
let render = await
|
|
8
|
+
let render = await ViewModeController.RenderSetting();
|
|
9
9
|
render += await Css.RenderSetting();
|
|
10
10
|
render += await Translate.RenderSetting();
|
|
11
11
|
render += await Worker.RenderSetting();
|
|
@@ -13,7 +13,7 @@ import { CyberiaQuestService } from '../../services/cyberia-quest/cyberia-quest.
|
|
|
13
13
|
import { CyberiaActionService } from '../../services/cyberia-action/cyberia-action.service.js';
|
|
14
14
|
import { CyberiaDialogueService } from '../../services/cyberia-dialogue/cyberia-dialogue.service.js';
|
|
15
15
|
import { CyberiaSkillService } from '../../services/cyberia-skill/cyberia-skill.service.js';
|
|
16
|
-
import { QUEST_STEPS_TYPES,
|
|
16
|
+
import { QUEST_STEPS_TYPES, SKILL_LOGIC_IDS } from './SharedDefaultsCyberia.js';
|
|
17
17
|
|
|
18
18
|
const textFilter = (filter) => ({ filterType: 'text', type: 'equals', filter });
|
|
19
19
|
// DropDown invokes optionData.onClick on selection, so every option (including
|
|
@@ -90,8 +90,8 @@ class ActionEngineCyberia {
|
|
|
90
90
|
containerClass: 'inl',
|
|
91
91
|
serviceProvider: async (q) => {
|
|
92
92
|
const result = await ObjectLayerService.searchItemIds({ q });
|
|
93
|
-
if (result.status === 'success' && result.data?.
|
|
94
|
-
return result.data.
|
|
93
|
+
if (result.status === 'success' && result.data?.items) {
|
|
94
|
+
return result.data.items.map(({ id }) => dropdownOption(id));
|
|
95
95
|
}
|
|
96
96
|
return [];
|
|
97
97
|
},
|
|
@@ -139,40 +139,16 @@ class ActionEngineCyberia {
|
|
|
139
139
|
if (ActionEngineCyberia.imageCache[itemId]) return;
|
|
140
140
|
ActionEngineCyberia.imageCache[itemId] = { img: null, loaded: false, error: false };
|
|
141
141
|
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
img
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (onLoad) onLoad();
|
|
148
|
-
};
|
|
149
|
-
img.onerror = () => {
|
|
150
|
-
ActionEngineCyberia.imageCache[itemId].error = true;
|
|
151
|
-
};
|
|
152
|
-
img.src = `${getProxyPath()}assets/${type}/${id}/08/0.png`;
|
|
142
|
+
const img = new Image();
|
|
143
|
+
img.onload = () => {
|
|
144
|
+
ActionEngineCyberia.imageCache[itemId].img = img;
|
|
145
|
+
ActionEngineCyberia.imageCache[itemId].loaded = true;
|
|
146
|
+
if (onLoad) onLoad();
|
|
153
147
|
};
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
ObjectLayerService.get({
|
|
162
|
-
limit: 1,
|
|
163
|
-
filterModel: { 'data.item.id': { filterType: 'text', type: 'equals', filter: itemId } },
|
|
164
|
-
})
|
|
165
|
-
.then((res) => {
|
|
166
|
-
const doc = res?.data?.data?.[0];
|
|
167
|
-
if (!doc || !doc.data?.item?.type || !doc.data?.item?.id) {
|
|
168
|
-
ActionEngineCyberia.imageCache[itemId].error = true;
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
loadImage(doc.data.item.type, doc.data.item.id);
|
|
172
|
-
})
|
|
173
|
-
.catch(() => {
|
|
174
|
-
ActionEngineCyberia.imageCache[itemId].error = true;
|
|
175
|
-
});
|
|
148
|
+
img.onerror = () => {
|
|
149
|
+
ActionEngineCyberia.imageCache[itemId].error = true;
|
|
150
|
+
};
|
|
151
|
+
img.src = `${getProxyPath()}api/atlas-sprite-sheet/idle-preview/${itemId}`;
|
|
176
152
|
}
|
|
177
153
|
|
|
178
154
|
static preloadMapObjectLayers(onLoad) {
|