@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
package/scripts/coverall-test.sh
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -u -o pipefail
|
|
3
|
-
|
|
4
|
-
EXCLUDES=(
|
|
5
|
-
--exclude="test/cyberia-instance-conf-defaults.test.js"
|
|
6
|
-
--exclude="test/cyberia-load.test.js"
|
|
7
|
-
--exclude="test/object-layer-item-id.test.js"
|
|
8
|
-
--exclude="test/api.test.js"
|
|
9
|
-
--exclude="test/crypto.test.js"
|
|
10
|
-
--exclude="test/shape-generator.test.js"
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
TESTS=(
|
|
14
|
-
test/cluster-instances.test.js
|
|
15
|
-
test/deploy-monitor.test.js
|
|
16
|
-
test/deploy-node-placement.test.js
|
|
17
|
-
test/instance-traffic-plan.test.js
|
|
18
|
-
test/sops-secret-store.test.js
|
|
19
|
-
test/underpost-gateway.test.js
|
|
20
|
-
test/underpost-ingress.test.js
|
|
21
|
-
test/wireguard-edge.test.js
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
c8 "${EXCLUDES[@]}" mocha "${TESTS[@]}"
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fallback-world default items — process-local override store.
|
|
3
|
-
*
|
|
4
|
-
* The procedural fallback world is never persisted, so its default item set
|
|
5
|
-
* has no collection to live in. This module holds the set the FallbackWorldEngine
|
|
6
|
-
* view composed, in memory, for the lifetime of the engine process:
|
|
7
|
-
*
|
|
8
|
-
* - written by POST /api/cyberia-instance/fallback-world/hot-reload
|
|
9
|
-
* - read by fetchFullInstance()'s fallback branch (instance-data.js) and
|
|
10
|
-
* GET /api/cyberia-instance/fallback-world[/default-items]
|
|
11
|
-
*
|
|
12
|
-
* Deliberately NOT persisted: an engine restart drops back to the code defaults,
|
|
13
|
-
* so a stale editor session can never become the permanent shape of the world.
|
|
14
|
-
* This keeps the fallback path's "code defaults are authoritative" invariant —
|
|
15
|
-
* the only thing an operator can layer on top is this explicit, volatile list.
|
|
16
|
-
*
|
|
17
|
-
* @module src/api/cyberia-instance/cyberia-fallback-default-items.js
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/** @typedef {{ id: string, defaultPlayerInventory: boolean }} FallbackDefaultItem */
|
|
21
|
-
|
|
22
|
-
/** @type {FallbackDefaultItem[]} */
|
|
23
|
-
let defaultItems = [];
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Coerce a caller-supplied list into the canonical `{ id, defaultPlayerInventory }`
|
|
27
|
-
* shape. Accepts the legacy `string[]` form and drops blank/duplicate ids so the
|
|
28
|
-
* world generator never sees a malformed entry.
|
|
29
|
-
*
|
|
30
|
-
* @param {Array<string|FallbackDefaultItem>} entries
|
|
31
|
-
* @returns {FallbackDefaultItem[]}
|
|
32
|
-
*/
|
|
33
|
-
function normalizeFallbackDefaultItems(entries) {
|
|
34
|
-
if (!Array.isArray(entries)) return [];
|
|
35
|
-
const seen = new Set();
|
|
36
|
-
const normalized = [];
|
|
37
|
-
for (const entry of entries) {
|
|
38
|
-
const raw = typeof entry === 'string' ? { id: entry } : entry;
|
|
39
|
-
const id = typeof raw?.id === 'string' ? raw.id.trim() : '';
|
|
40
|
-
if (!id || seen.has(id)) continue;
|
|
41
|
-
seen.add(id);
|
|
42
|
-
normalized.push({ id, defaultPlayerInventory: !!raw.defaultPlayerInventory });
|
|
43
|
-
}
|
|
44
|
-
return normalized;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Current override set. Returns a copy so callers cannot mutate the store.
|
|
49
|
-
* @returns {FallbackDefaultItem[]}
|
|
50
|
-
*/
|
|
51
|
-
const getFallbackDefaultItems = () => defaultItems.map((entry) => ({ ...entry }));
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Replace the override set. An empty list clears it, restoring pure code defaults.
|
|
55
|
-
* @param {Array<string|FallbackDefaultItem>} entries
|
|
56
|
-
* @returns {FallbackDefaultItem[]} The stored set.
|
|
57
|
-
*/
|
|
58
|
-
function setFallbackDefaultItems(entries) {
|
|
59
|
-
defaultItems = normalizeFallbackDefaultItems(entries);
|
|
60
|
-
return getFallbackDefaultItems();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export { getFallbackDefaultItems, setFallbackDefaultItems, normalizeFallbackDefaultItems };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import { faBase64Png, getBufferPngText } from '../../server/client-icons.js';
|
|
3
|
-
|
|
4
|
-
process.exit(0);
|
|
5
|
-
|
|
6
|
-
fs.writeFileSync(
|
|
7
|
-
'./tmp/api-user-invalid-token.png',
|
|
8
|
-
await getBufferPngText({ text: 'Invalid token', textColor: '#ff0000' }),
|
|
9
|
-
'utf8',
|
|
10
|
-
);
|
|
11
|
-
fs.writeFileSync(
|
|
12
|
-
'./tmp/api-user-recover.png',
|
|
13
|
-
Buffer.from(faBase64Png('rotate-left', 50, 50, '#ffffff'), 'base64'),
|
|
14
|
-
'utf8',
|
|
15
|
-
);
|
|
16
|
-
fs.writeFileSync('./tmp/api-user-check.png', Buffer.from(faBase64Png('check', 50, 50), 'base64'), 'utf8');
|
package/src/cli/env.js
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Environment module for managing the environment variables of the underpost root
|
|
3
|
-
* @module src/cli/env.js
|
|
4
|
-
* @namespace UnderpostEnv
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { getNpmRootPath, writeEnv } from '../server/environment.js';
|
|
8
|
-
import fs from 'fs-extra';
|
|
9
|
-
import { loggerFactory } from '../server/logger.js';
|
|
10
|
-
import dotenv from 'dotenv';
|
|
11
|
-
import { pbcopy } from '../server/process.js';
|
|
12
|
-
|
|
13
|
-
const logger = loggerFactory(import.meta);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Guards an env file path against stale directory artifacts.
|
|
17
|
-
* Removes the path if it exists as a directory (e.g. `.env/` created by a previous EISDIR bug).
|
|
18
|
-
* @param {string} envPath - The path to the environment file.
|
|
19
|
-
* @memberof UnderpostEnv
|
|
20
|
-
*/
|
|
21
|
-
const guardEnvPath = (envPath) => {
|
|
22
|
-
if (fs.existsSync(envPath) && !fs.statSync(envPath).isFile()) {
|
|
23
|
-
logger.warn(`Removing stale directory at env path: ${envPath}`);
|
|
24
|
-
fs.removeSync(envPath);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @class UnderpostRootEnv
|
|
30
|
-
* @description Manages the environment variables of the underpost root.
|
|
31
|
-
* @memberof UnderpostEnv
|
|
32
|
-
*/
|
|
33
|
-
class UnderpostRootEnv {
|
|
34
|
-
static API = {
|
|
35
|
-
/**
|
|
36
|
-
* @method set
|
|
37
|
-
* @description Sets an environment variable in the underpost root environment.
|
|
38
|
-
* @param {string} key - The key of the environment variable to set.
|
|
39
|
-
* @param {string} value - The value of the environment variable to set.
|
|
40
|
-
* @param {object} options - Options for setting the environment variable.
|
|
41
|
-
* @param {string} [options.deployId=''] - Deployment ID associated with the environment variable.
|
|
42
|
-
* @param {boolean} [options.build=false] - If true, sets the environment variable using custom --deploy-id or all dd.router deploy ids configured.
|
|
43
|
-
* @memberof UnderpostEnv
|
|
44
|
-
*/
|
|
45
|
-
set(key, value, options = { deployId: '', build: false }) {
|
|
46
|
-
const _set = (envPath, key, value) => {
|
|
47
|
-
guardEnvPath(envPath);
|
|
48
|
-
let env = {};
|
|
49
|
-
if (fs.existsSync(envPath)) env = dotenv.parse(fs.readFileSync(envPath, 'utf8'));
|
|
50
|
-
env[key] = value;
|
|
51
|
-
writeEnv(envPath, env);
|
|
52
|
-
};
|
|
53
|
-
if (options.build) {
|
|
54
|
-
const deployIdList = options.deployId
|
|
55
|
-
? [options.deployId]
|
|
56
|
-
: fs.existsSync(`./engine-private/deploy/dd.router`)
|
|
57
|
-
? fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').split(',')
|
|
58
|
-
: [DEFAULT_DEPLOY_ID];
|
|
59
|
-
for (const deployId of deployIdList)
|
|
60
|
-
for (const envFile of ['test', 'development', 'production'])
|
|
61
|
-
_set(`./engine-private/conf/${deployId}/.env.${envFile}`, key, value);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const exeRootPath = `${getNpmRootPath()}/underpost`;
|
|
65
|
-
fs.ensureDirSync(exeRootPath);
|
|
66
|
-
const envPath = `${exeRootPath}/.env`;
|
|
67
|
-
_set(envPath, key, value);
|
|
68
|
-
},
|
|
69
|
-
/**
|
|
70
|
-
* @method delete
|
|
71
|
-
* @description Deletes an environment variable from the underpost root environment.
|
|
72
|
-
* @param {string} key - The key of the environment variable to delete.
|
|
73
|
-
* @memberof UnderpostEnv
|
|
74
|
-
*/
|
|
75
|
-
delete(key) {
|
|
76
|
-
const exeRootPath = `${getNpmRootPath()}/underpost`;
|
|
77
|
-
const envPath = `${exeRootPath}/.env`;
|
|
78
|
-
guardEnvPath(envPath);
|
|
79
|
-
let env = {};
|
|
80
|
-
if (fs.existsSync(envPath)) env = dotenv.parse(fs.readFileSync(envPath, 'utf8'));
|
|
81
|
-
delete env[key];
|
|
82
|
-
writeEnv(envPath, env);
|
|
83
|
-
},
|
|
84
|
-
/**
|
|
85
|
-
* @method get
|
|
86
|
-
* @description Gets an environment variable from the underpost root environment.
|
|
87
|
-
* @param {string} key - The key of the environment variable to get.
|
|
88
|
-
* @param {string} value - The value of the environment variable to get.
|
|
89
|
-
* @param {object} options - Options for getting the environment variable.
|
|
90
|
-
* @param {boolean} [options.plain=false] - If true, returns the environment variable value as a string.
|
|
91
|
-
* @param {boolean} [options.disableLog=false] - If true, disables logging of the environment variable value.
|
|
92
|
-
* @param {boolean} [options.copy=false] - If true, copies the environment variable value to the clipboard.
|
|
93
|
-
* @memberof UnderpostEnv
|
|
94
|
-
*/
|
|
95
|
-
get(key, value, options = { plain: false, disableLog: false, copy: false }) {
|
|
96
|
-
const exeRootPath = `${getNpmRootPath()}/underpost`;
|
|
97
|
-
const envPath = `${exeRootPath}/.env`;
|
|
98
|
-
if (!fs.existsSync(envPath) || !fs.statSync(envPath).isFile()) return undefined;
|
|
99
|
-
const env = dotenv.parse(fs.readFileSync(envPath, 'utf8'));
|
|
100
|
-
if (!options.disableLog)
|
|
101
|
-
options?.plain === true ? console.log(env[key]) : logger.info(`${key}(${typeof env[key]})`, env[key]);
|
|
102
|
-
if (options.copy === true) pbcopy(env[key]);
|
|
103
|
-
return env[key];
|
|
104
|
-
},
|
|
105
|
-
/**
|
|
106
|
-
* @method list
|
|
107
|
-
* @description Lists all environment variables in the underpost root environment.
|
|
108
|
-
* @param {string} key - Not used for list operation.
|
|
109
|
-
* @param {string} value - Not used for list operation.
|
|
110
|
-
* @param {object} options - Options for listing environment variables.
|
|
111
|
-
* @param {string} [options.filter] - Filter keyword to match against keys or values.
|
|
112
|
-
* @memberof UnderpostEnv
|
|
113
|
-
*/
|
|
114
|
-
list(key, value, options = {}) {
|
|
115
|
-
const exeRootPath = `${getNpmRootPath()}/underpost`;
|
|
116
|
-
const envPath = `${exeRootPath}/.env`;
|
|
117
|
-
guardEnvPath(envPath);
|
|
118
|
-
if (!fs.existsSync(envPath)) {
|
|
119
|
-
logger.warn(`Empty environment variables`);
|
|
120
|
-
return {};
|
|
121
|
-
}
|
|
122
|
-
let env = dotenv.parse(fs.readFileSync(envPath, 'utf8'));
|
|
123
|
-
|
|
124
|
-
// Apply filter if provided
|
|
125
|
-
if (options.filter) {
|
|
126
|
-
const filterKeyword = options.filter.toLowerCase();
|
|
127
|
-
const filtered = {};
|
|
128
|
-
for (const [envKey, envValue] of Object.entries(env)) {
|
|
129
|
-
const keyMatch = envKey.toLowerCase().includes(filterKeyword);
|
|
130
|
-
const valueMatch = String(envValue).toLowerCase().includes(filterKeyword);
|
|
131
|
-
if (keyMatch || valueMatch) {
|
|
132
|
-
filtered[envKey] = envValue;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
env = filtered;
|
|
136
|
-
logger.info(`underpost root (filtered by: ${options.filter})`, env);
|
|
137
|
-
} else {
|
|
138
|
-
logger.info('underpost root', env);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return env;
|
|
142
|
-
},
|
|
143
|
-
/**
|
|
144
|
-
* @method clean
|
|
145
|
-
* @description Cleans the underpost root environment by removing the environment file.
|
|
146
|
-
* @param {object} options - Options for cleaning the environment.
|
|
147
|
-
* @param {Array<string>} [options.keepKeys=[]] - List of keys to keep in the environment file. If provided, only these keys will be retained.
|
|
148
|
-
* @memberof UnderpostEnv
|
|
149
|
-
*/
|
|
150
|
-
clean(options = { keepKeys: [] }) {
|
|
151
|
-
const { keepKeys } = options;
|
|
152
|
-
const exeRootPath = `${getNpmRootPath()}/underpost`;
|
|
153
|
-
const envPath = `${exeRootPath}/.env`;
|
|
154
|
-
if (keepKeys && keepKeys.length > 0 && fs.existsSync(envPath)) {
|
|
155
|
-
const env = dotenv.parse(fs.readFileSync(envPath, 'utf8'));
|
|
156
|
-
const filteredEnv = Object.fromEntries(Object.entries(env).filter(([key]) => keepKeys.includes(key)));
|
|
157
|
-
writeEnv(envPath, filteredEnv);
|
|
158
|
-
} else {
|
|
159
|
-
fs.removeSync(envPath);
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
/**
|
|
163
|
-
* @method isInsideContainer
|
|
164
|
-
* @description Detects whether the current process is running inside a container.
|
|
165
|
-
* Checks for Kubernetes service injection or Docker's .dockerenv marker.
|
|
166
|
-
* @returns {boolean} True if running inside a container.
|
|
167
|
-
* @memberof UnderpostEnv
|
|
168
|
-
*/
|
|
169
|
-
isInsideContainer() {
|
|
170
|
-
return !!process.env.KUBERNETES_SERVICE_HOST || fs.existsSync('/.dockerenv');
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export default UnderpostRootEnv;
|
|
176
|
-
|
|
177
|
-
export { guardEnvPath };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { BlockChainService } from '../../services/blockchain/blockchain.service.js';
|
|
2
|
-
import { BtnIcon } from './BtnIcon.js';
|
|
3
|
-
import { dynamicCol } from './Css.js';
|
|
4
|
-
import { EventsUI } from './EventsUI.js';
|
|
5
|
-
import { Input } from './Input.js';
|
|
6
|
-
import { Translate } from './Translate.js';
|
|
7
|
-
|
|
8
|
-
const BlockChainManagement = {
|
|
9
|
-
Render: async function (options) {
|
|
10
|
-
setTimeout(() => {
|
|
11
|
-
EventsUI.onClick(`.btn-upload-blockchain`, async () => {
|
|
12
|
-
// const { result, status } = new BlockChainService.post();
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
return html` ${dynamicCol({ containerSelector: options.idModal, id: 'blockchain' })}
|
|
16
|
-
<div class="fl">
|
|
17
|
-
<div class="in fll blockchain-col-a">
|
|
18
|
-
<div class="in section-mp">
|
|
19
|
-
<div class="in sub-title-modal"><i class="fa-solid fa-sliders"></i> ${Translate.Render('config')}</div>
|
|
20
|
-
<div class="in">
|
|
21
|
-
${await Input.Render({
|
|
22
|
-
id: `blockchain-seed`,
|
|
23
|
-
label: html`<i class="fa-solid fa-pen-to-square"></i> ${Translate.Render('blockchain-seed')}`,
|
|
24
|
-
containerClass: 'section-mp width-mini-box input-container',
|
|
25
|
-
placeholder: true,
|
|
26
|
-
})}
|
|
27
|
-
${await BtnIcon.Render({
|
|
28
|
-
class: `inl section-mp btn-custom btn-upload-blockchain`,
|
|
29
|
-
label: html`<i class="fas fa-plus"></i> ${Translate.Render(`create`)}`,
|
|
30
|
-
})}
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
<div class="in fll blockchain-col-b">
|
|
35
|
-
<div class="in section-mp"></div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>`;
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export { BlockChainManagement };
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mobile virtual keyboard avoidance utility.
|
|
3
|
-
*
|
|
4
|
-
* On mobile browsers, when the software keyboard appears it reduces
|
|
5
|
-
* `window.visualViewport.height`. Without compensation, the keyboard
|
|
6
|
-
* can cover modals and form inputs so the user cannot see what they type.
|
|
7
|
-
*
|
|
8
|
-
* This module attaches to `window.visualViewport` resize/scroll events and
|
|
9
|
-
* translates a target element upward by the amount of space the keyboard has
|
|
10
|
-
* consumed. A debounce is applied so that rapid `resize` events (common on
|
|
11
|
-
* Android) do not cause visual jitter.
|
|
12
|
-
*
|
|
13
|
-
* Usage:
|
|
14
|
-
* ```js
|
|
15
|
-
* import { initKeyboardAvoidance } from './KeyboardAvoidance.js';
|
|
16
|
-
*
|
|
17
|
-
* // Attach when a modal opens:
|
|
18
|
-
* const cleanup = initKeyboardAvoidance(document.querySelector('.my-modal'));
|
|
19
|
-
*
|
|
20
|
-
* // Detach when the modal closes:
|
|
21
|
-
* cleanup();
|
|
22
|
-
* ```
|
|
23
|
-
*
|
|
24
|
-
* @module src/client/components/core/KeyboardAvoidance.js
|
|
25
|
-
* @namespace KeyboardAvoidanceModule
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Minimum keyboard height in pixels below which we consider the keyboard
|
|
30
|
-
* to be hidden. Values smaller than this are treated as OS chrome
|
|
31
|
-
* (address bar resize, etc.) and ignored.
|
|
32
|
-
*
|
|
33
|
-
* @constant {number}
|
|
34
|
-
* @memberof KeyboardAvoidanceModule
|
|
35
|
-
*/
|
|
36
|
-
const MIN_KEYBOARD_HEIGHT_PX = 50;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Debounce delay in milliseconds applied to the `resize` handler.
|
|
40
|
-
* Prevents excessive style recalculations when the keyboard animates in.
|
|
41
|
-
*
|
|
42
|
-
* @constant {number}
|
|
43
|
-
* @memberof KeyboardAvoidanceModule
|
|
44
|
-
*/
|
|
45
|
-
const DEBOUNCE_MS = 32;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Attaches `visualViewport` listeners to translate `targetEl` when the
|
|
49
|
-
* mobile software keyboard appears.
|
|
50
|
-
*
|
|
51
|
-
* The function is a no-op in environments that do not support the
|
|
52
|
-
* `visualViewport` API (desktop browsers, some older mobile browsers).
|
|
53
|
-
*
|
|
54
|
-
* @param {HTMLElement} targetEl - The element to translate (typically a
|
|
55
|
-
* modal container or form wrapper).
|
|
56
|
-
* @param {object} [options]
|
|
57
|
-
* @param {number} [options.debounceMs=32] - Debounce delay in ms.
|
|
58
|
-
* @param {number} [options.minKeyboardPx=50] - Minimum offset to treat
|
|
59
|
-
* as a real keyboard appearance.
|
|
60
|
-
* @param {string} [options.transitionStyle='transform 0.15s ease-out'] -
|
|
61
|
-
* CSS transition applied to `targetEl` during keyboard animations.
|
|
62
|
-
* @returns {function(): void} Cleanup function — call when the element is
|
|
63
|
-
* unmounted or the modal closes to remove the event listeners.
|
|
64
|
-
*
|
|
65
|
-
* @memberof KeyboardAvoidanceModule
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* // Inside a modal's open() method:
|
|
69
|
-
* this._kbCleanup = initKeyboardAvoidance(this._el);
|
|
70
|
-
*
|
|
71
|
-
* // Inside the modal's close() method:
|
|
72
|
-
* if (this._kbCleanup) { this._kbCleanup(); this._kbCleanup = null; }
|
|
73
|
-
*/
|
|
74
|
-
export function initKeyboardAvoidance(
|
|
75
|
-
targetEl,
|
|
76
|
-
{
|
|
77
|
-
debounceMs = DEBOUNCE_MS,
|
|
78
|
-
minKeyboardPx = MIN_KEYBOARD_HEIGHT_PX,
|
|
79
|
-
transitionStyle = 'transform 0.15s ease-out',
|
|
80
|
-
} = {},
|
|
81
|
-
) {
|
|
82
|
-
// Feature-detect visualViewport. When unavailable, return a no-op cleanup.
|
|
83
|
-
if (!window.visualViewport || !targetEl) return () => {};
|
|
84
|
-
|
|
85
|
-
// Apply transition so movement feels natural.
|
|
86
|
-
const previousTransition = targetEl.style.transition;
|
|
87
|
-
targetEl.style.transition = transitionStyle;
|
|
88
|
-
|
|
89
|
-
let debounceTimer = null;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Computes the vertical offset caused by the software keyboard and
|
|
93
|
-
* applies a CSS translateY correction to `targetEl`.
|
|
94
|
-
*
|
|
95
|
-
* @returns {void}
|
|
96
|
-
* @memberof KeyboardAvoidanceModule
|
|
97
|
-
*/
|
|
98
|
-
const update = () => {
|
|
99
|
-
const offset = window.innerHeight - window.visualViewport.height - window.visualViewport.offsetTop;
|
|
100
|
-
|
|
101
|
-
if (offset > minKeyboardPx) {
|
|
102
|
-
// Keyboard is visible — push the element up.
|
|
103
|
-
targetEl.style.transform = `translateY(-${Math.round(offset)}px)`;
|
|
104
|
-
} else {
|
|
105
|
-
// Keyboard is hidden — restore original position.
|
|
106
|
-
targetEl.style.transform = '';
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Debounced wrapper for `update`.
|
|
112
|
-
* @returns {void}
|
|
113
|
-
*/
|
|
114
|
-
const onViewportChange = () => {
|
|
115
|
-
if (debounceTimer !== null) clearTimeout(debounceTimer);
|
|
116
|
-
debounceTimer = setTimeout(update, debounceMs);
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
window.visualViewport.addEventListener('resize', onViewportChange);
|
|
120
|
-
window.visualViewport.addEventListener('scroll', onViewportChange);
|
|
121
|
-
|
|
122
|
-
// Run once immediately to handle the case where the keyboard was already
|
|
123
|
-
// open when this function was called.
|
|
124
|
-
update();
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Cleanup function. Removes all listeners and restores the element's
|
|
128
|
-
* original styles.
|
|
129
|
-
*
|
|
130
|
-
* @returns {void}
|
|
131
|
-
*/
|
|
132
|
-
return () => {
|
|
133
|
-
if (debounceTimer !== null) {
|
|
134
|
-
clearTimeout(debounceTimer);
|
|
135
|
-
debounceTimer = null;
|
|
136
|
-
}
|
|
137
|
-
window.visualViewport.removeEventListener('resize', onViewportChange);
|
|
138
|
-
window.visualViewport.removeEventListener('scroll', onViewportChange);
|
|
139
|
-
// Restore previous styles.
|
|
140
|
-
targetEl.style.transform = '';
|
|
141
|
-
targetEl.style.transition = previousTransition;
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export default initKeyboardAvoidance;
|