cyberia 3.1.3 → 3.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +0 -2
- package/.github/workflows/engine-cyberia.cd.yml +10 -8
- package/.github/workflows/engine-cyberia.ci.yml +12 -29
- package/.github/workflows/ghpkg.ci.yml +4 -4
- package/.github/workflows/npmpkg.ci.yml +28 -11
- package/.github/workflows/publish.ci.yml +21 -2
- package/.github/workflows/pwa-microservices-template-page.cd.yml +4 -5
- package/.github/workflows/pwa-microservices-template-test.ci.yml +3 -3
- package/.github/workflows/release.cd.yml +14 -10
- package/CHANGELOG.md +783 -1
- package/CLI-HELP.md +95 -18
- package/Dockerfile +0 -2
- package/README.md +290 -220
- package/bin/build.js +24 -7
- package/bin/cyberia.js +2838 -252
- package/bin/deploy.js +747 -125
- package/bin/file.js +9 -0
- package/bin/index.js +2838 -252
- package/bin/vs.js +1 -1
- package/conf.js +99 -65
- package/deployment.yaml +18 -164
- package/hardhat/hardhat.config.js +13 -13
- package/hardhat/ignition/modules/ObjectLayerToken.js +1 -1
- package/hardhat/package-lock.json +2559 -5864
- package/hardhat/package.json +14 -23
- package/hardhat/scripts/deployObjectLayerToken.js +1 -1
- package/hardhat/test/ObjectLayerToken.js +4 -2
- package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
- package/hardhat/types/ethers-contracts/common.ts +92 -0
- package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
- package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
- package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
- package/hardhat/types/ethers-contracts/index.ts +6 -0
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +6 -5
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +6 -5
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +18 -164
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +7 -79
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +112 -28
- package/manifests/deployment/dd-test-development/proxy.yaml +46 -1
- package/manifests/deployment/playwright/deployment.yaml +1 -1
- package/nodemon.json +1 -1
- package/package.json +39 -24
- package/proxy.yaml +7 -79
- package/scripts/k3s-node-setup.sh +2 -2
- package/scripts/nat-iptables.sh +103 -18
- package/scripts/rhel-grpc-setup.sh +56 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +58 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +23 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +148 -20
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.service.js +10 -10
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.service.js +8 -8
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +27 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +93 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +29 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +51 -0
- package/src/api/cyberia-entity/cyberia-entity.controller.js +74 -0
- package/src/api/cyberia-entity/cyberia-entity.model.js +24 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +27 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +178 -0
- package/src/api/cyberia-instance/cyberia-instance.controller.js +92 -0
- package/src/api/cyberia-instance/cyberia-instance.model.js +87 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +63 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +156 -0
- package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +74 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +574 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +231 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +27 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
- package/src/api/cyberia-map/cyberia-map.controller.js +79 -0
- package/src/api/cyberia-map/cyberia-map.model.js +30 -0
- package/src/api/cyberia-map/cyberia-map.router.js +40 -0
- package/src/api/cyberia-map/cyberia-map.service.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.service.js +10 -10
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.ref.json +18 -0
- package/src/api/file/file.service.js +36 -36
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.service.js +10 -10
- package/src/api/ipfs/ipfs.controller.js +15 -36
- package/src/api/ipfs/ipfs.model.js +47 -47
- package/src/api/ipfs/ipfs.router.js +8 -13
- package/src/api/ipfs/ipfs.service.js +67 -129
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.router.js +30 -0
- package/src/api/object-layer/object-layer.service.js +126 -43
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.service.js +8 -8
- package/src/api/user/guest.service.js +99 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.service.js +11 -27
- package/src/cli/cluster.js +68 -21
- package/src/cli/db.js +753 -825
- package/src/cli/deploy.js +215 -125
- package/src/cli/env.js +29 -0
- package/src/cli/fs.js +82 -8
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +74 -3
- package/src/cli/kubectl.js +211 -0
- package/src/cli/release.js +340 -0
- package/src/cli/repository.js +475 -74
- package/src/cli/run.js +582 -43
- package/src/cli/secrets.js +73 -0
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/cli/test.js +3 -3
- package/src/client/Cryptokoyn.index.js +18 -22
- package/src/client/CyberiaPortal.index.js +19 -24
- package/src/client/Default.index.js +21 -34
- package/src/client/Itemledger.index.js +20 -27
- package/src/client/Underpost.index.js +19 -24
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +69 -0
- package/src/client/components/core/Auth.js +35 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +43 -64
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +87 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +194 -96
- package/src/client/components/core/EventBus.js +92 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +26 -19
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +43 -43
- package/src/client/components/core/LogOut.js +25 -16
- package/src/client/components/core/Modal.js +462 -179
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -51
- package/src/client/components/core/PanelForm.js +44 -144
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +112 -30
- package/src/client/components/core/SocketIoHandler.js +75 -0
- package/src/client/components/core/Stream.js +143 -95
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Webhook.js +40 -7
- package/src/client/components/core/Worker.js +163 -27
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +59 -59
- package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +9 -7
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +8 -6
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +3 -51
- package/src/client/components/cyberia/InstanceEngineCyberia.js +781 -0
- package/src/client/components/cyberia/MapEngineCyberia.js +1836 -2
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1220 -99
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +252 -316
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +136 -103
- package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +462 -32
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +9 -7
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +8 -6
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +3 -49
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +8 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +91 -91
- package/src/client/components/default/AppStoreDefault.js +5 -0
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +9 -7
- package/src/client/components/default/LogOutDefault.js +8 -6
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/SocketIoDefault.js +3 -51
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +59 -59
- package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +9 -7
- package/src/client/components/itemledger/LogOutItemledger.js +8 -6
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/SocketIoItemledger.js +3 -51
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +92 -92
- package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +9 -7
- package/src/client/components/underpost/LogOutUnderpost.js +8 -6
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/SocketIoUnderpost.js +3 -51
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +35 -55
- package/src/client/services/crypto/crypto.service.js +8 -13
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +116 -0
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
- package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
- package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +6 -6
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +14 -40
- package/src/client/services/object-layer/object-layer.management.js +14 -14
- package/src/client/services/object-layer/object-layer.service.js +39 -24
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +6 -6
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/offline/Maintenance.js +12 -11
- package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
- package/src/client/ssr/pages/CyberiaServerMetrics.js +1 -1
- package/src/client/ssr/pages/Test.js +2 -2
- package/src/client/sw/core.sw.js +212 -0
- package/src/grpc/cyberia/grpc-server.js +642 -0
- package/src/index.js +24 -1
- package/src/runtime/cyberia-client/Dockerfile +80 -0
- package/src/runtime/cyberia-server/Dockerfile +37 -0
- package/src/runtime/express/Dockerfile +5 -1
- package/src/runtime/express/Express.js +18 -1
- package/src/runtime/lampp/Dockerfile +17 -5
- package/src/runtime/lampp/Lampp.js +27 -4
- package/src/runtime/wp/Dockerfile +62 -0
- package/src/runtime/wp/Wp.js +639 -0
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/auth.js +24 -1
- package/src/server/backup.js +37 -9
- package/src/server/client-build-docs.js +52 -46
- package/src/server/client-build.js +356 -82
- package/src/server/client-formatted.js +140 -57
- package/src/server/conf.js +29 -13
- package/src/server/cron.js +25 -23
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +24 -1
- package/src/server/ipfs-client.js +253 -89
- package/src/server/object-layer.js +150 -114
- package/src/server/peer.js +8 -0
- package/src/server/process.js +13 -27
- package/src/server/runtime.js +25 -1
- package/src/server/semantic-layer-generator-floor.js +319 -0
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +1164 -0
- package/src/server/semantic-layer-generator.js +211 -542
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +19 -5
- package/src/server/valkey.js +141 -235
- package/src/ws/IoInterface.js +1 -10
- package/src/ws/IoServer.js +14 -33
- package/src/ws/core/channels/core.ws.chat.js +65 -20
- package/src/ws/core/channels/core.ws.mailer.js +113 -32
- package/src/ws/core/channels/core.ws.stream.js +90 -31
- package/src/ws/core/core.ws.connection.js +12 -33
- package/src/ws/core/core.ws.emit.js +10 -26
- package/src/ws/core/core.ws.server.js +25 -58
- package/src/ws/default/channels/default.ws.main.js +53 -12
- package/src/ws/default/default.ws.connection.js +26 -13
- package/src/ws/default/default.ws.server.js +30 -12
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -59
- package/jsdoc.json +0 -59
- package/src/api/object-layer/README.md +0 -347
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/CommonCryptokoyn.js +0 -29
- package/src/client/components/cryptokoyn/ElementsCryptokoyn.js +0 -38
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +0 -38
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -58
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/ElementsDefault.js +0 -38
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/CommonItemledger.js +0 -29
- package/src/client/components/itemledger/ElementsItemledger.js +0 -38
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/CommonUnderpost.js +0 -29
- package/src/client/components/underpost/ElementsUnderpost.js +0 -38
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/ws/core/management/core.ws.chat.js +0 -8
- package/src/ws/core/management/core.ws.mailer.js +0 -16
- package/src/ws/core/management/core.ws.stream.js +0 -8
- package/src/ws/default/management/default.ws.main.js +0 -8
package/src/server/auth.js
CHANGED
|
@@ -9,7 +9,12 @@ import { loggerFactory } from './logger.js';
|
|
|
9
9
|
import crypto from 'crypto';
|
|
10
10
|
import { promisify } from 'util';
|
|
11
11
|
import { UserDto } from '../api/user/user.model.js';
|
|
12
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
commonAdminGuard,
|
|
14
|
+
commonModeratorGuard,
|
|
15
|
+
commonUserGuard,
|
|
16
|
+
validatePassword,
|
|
17
|
+
} from '../client/components/core/CommonJs.js';
|
|
13
18
|
import helmet from 'helmet';
|
|
14
19
|
import rateLimit from 'express-rate-limit';
|
|
15
20
|
import slowDown from 'express-slow-down';
|
|
@@ -303,6 +308,23 @@ const moderatorGuard = (req, res, next) => {
|
|
|
303
308
|
return res.status(400).json({ status: 'error', message: 'bad request' });
|
|
304
309
|
}
|
|
305
310
|
};
|
|
311
|
+
/**
|
|
312
|
+
* Express middleware to guard routes for authenticated users (any non-guest role).
|
|
313
|
+
* @param {import('express').Request} req The Express request object.
|
|
314
|
+
* @param {import('express').Response} res The Express response object.
|
|
315
|
+
* @param {import('express').NextFunction} next The next middleware function.
|
|
316
|
+
* @memberof Auth
|
|
317
|
+
*/
|
|
318
|
+
const userGuard = (req, res, next) => {
|
|
319
|
+
try {
|
|
320
|
+
if (!req.auth || !commonUserGuard(req.auth.user.role))
|
|
321
|
+
return res.status(403).json({ status: 'error', message: 'Insufficient permission' });
|
|
322
|
+
return next();
|
|
323
|
+
} catch (err) {
|
|
324
|
+
logger.error(err);
|
|
325
|
+
return res.status(400).json({ status: 'error', message: 'bad request' });
|
|
326
|
+
}
|
|
327
|
+
};
|
|
306
328
|
|
|
307
329
|
// ---------- Password validation middleware (server-side) ----------
|
|
308
330
|
/**
|
|
@@ -678,6 +700,7 @@ export {
|
|
|
678
700
|
jwtVerify as verifyJWT,
|
|
679
701
|
adminGuard,
|
|
680
702
|
moderatorGuard,
|
|
703
|
+
userGuard,
|
|
681
704
|
validatePasswordMiddleware,
|
|
682
705
|
getBearerToken,
|
|
683
706
|
createSessionAndUserToken,
|
package/src/server/backup.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
import fs from 'fs-extra';
|
|
8
8
|
import { loggerFactory } from './logger.js';
|
|
9
|
-
import { shellExec } from './process.js';
|
|
10
9
|
import Underpost from '../index.js';
|
|
11
10
|
import { loadCronDeployEnv } from './conf.js';
|
|
12
11
|
|
|
@@ -21,16 +20,24 @@ class BackUp {
|
|
|
21
20
|
/**
|
|
22
21
|
* @method callback
|
|
23
22
|
* @description Initiates a backup operation for the specified deployment list.
|
|
24
|
-
*
|
|
23
|
+
* Orchestrates two backup phases per deployment:
|
|
24
|
+
* 1. Database export (MariaDB / MongoDB dump via `node bin db --export`).
|
|
25
|
+
* 2. Repository backup (git commit+push inside the deployment pod via `node bin db --repo-backup`).
|
|
26
|
+
*
|
|
27
|
+
* Commands are always forwarded to the host node via SSH because the CronJob
|
|
28
|
+
* container itself has no kubectl access. GITHUB_TOKEN and GITHUB_USERNAME
|
|
29
|
+
* are passed as ephemeral inline env vars so they never touch the host filesystem.
|
|
30
|
+
*
|
|
31
|
+
* @param {string} deployList - Comma-separated list of deployment IDs.
|
|
25
32
|
* @param {Object} options - The options for the backup operation.
|
|
26
33
|
* @param {boolean} options.git - Whether to backup data using Git.
|
|
27
34
|
* @param {boolean} [options.k3s] - Use k3s cluster context.
|
|
28
35
|
* @param {boolean} [options.kind] - Use kind cluster context.
|
|
29
36
|
* @param {boolean} [options.kubeadm] - Use kubeadm cluster context.
|
|
30
|
-
* @param {boolean} [options.ssh] - Execute backup commands via SSH on the remote node.
|
|
31
37
|
* @memberof UnderpostBakcUp
|
|
32
38
|
*/
|
|
33
39
|
static callback = async function (deployList, options = { git: false }) {
|
|
40
|
+
const firstDeployId = deployList && deployList !== 'dd' ? deployList.split(',')[0].trim() : '';
|
|
34
41
|
loadCronDeployEnv();
|
|
35
42
|
if ((!deployList || deployList === 'dd') && fs.existsSync(`./engine-private/deploy/dd.router`))
|
|
36
43
|
deployList = fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').trim();
|
|
@@ -43,19 +50,40 @@ class BackUp {
|
|
|
43
50
|
for (const _deployId of deployList.split(',')) {
|
|
44
51
|
const deployId = _deployId.trim();
|
|
45
52
|
if (!deployId) continue;
|
|
53
|
+
const dbCommand = `node bin db ${options.git ? '--git --force-clone ' : ''}--export --primary-pod --preserveUUID${clusterFlag} ${deployId}`;
|
|
54
|
+
const repoCommand = `node bin db --repo-backup${clusterFlag} ${deployId}`;
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
// Pass GITHUB_TOKEN and GITHUB_USERNAME ephemerally through the SSH command
|
|
57
|
+
// so git operations can push backups without relying on host env files.
|
|
58
|
+
const envPrefix = [
|
|
59
|
+
process.env.GITHUB_TOKEN ? `GITHUB_TOKEN=${process.env.GITHUB_TOKEN}` : '',
|
|
60
|
+
process.env.GITHUB_USERNAME ? `GITHUB_USERNAME=${process.env.GITHUB_USERNAME}` : '',
|
|
61
|
+
]
|
|
62
|
+
.filter(Boolean)
|
|
63
|
+
.join(' ');
|
|
64
|
+
const prefixCmd = (cmd) => (envPrefix ? `${envPrefix} ${cmd}` : cmd);
|
|
48
65
|
|
|
49
|
-
|
|
66
|
+
try {
|
|
50
67
|
logger.info('Executing database export via SSH for', deployId);
|
|
51
|
-
await Underpost.ssh.sshRemoteRunner(
|
|
68
|
+
await Underpost.ssh.sshRemoteRunner(prefixCmd(dbCommand), {
|
|
52
69
|
remote: true,
|
|
53
70
|
useSudo: true,
|
|
54
71
|
cd: '/home/dd/engine',
|
|
55
72
|
});
|
|
56
|
-
}
|
|
57
|
-
logger.
|
|
58
|
-
|
|
73
|
+
} catch (err) {
|
|
74
|
+
logger.error(`Error during database export for ${deployId}:`, err);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Repository backup: Cron container → SSH to host → host finds pod → kubectl exec git backup
|
|
78
|
+
try {
|
|
79
|
+
logger.info('Executing repository backup via SSH for', deployId);
|
|
80
|
+
await Underpost.ssh.sshRemoteRunner(prefixCmd(repoCommand), {
|
|
81
|
+
remote: true,
|
|
82
|
+
useSudo: true,
|
|
83
|
+
cd: '/home/dd/engine',
|
|
84
|
+
});
|
|
85
|
+
} catch (err) {
|
|
86
|
+
logger.error(`Error during repository backup for ${deployId}:`, err);
|
|
59
87
|
}
|
|
60
88
|
}
|
|
61
89
|
};
|
|
@@ -324,59 +324,56 @@ const buildApiDocs = async ({
|
|
|
324
324
|
};
|
|
325
325
|
|
|
326
326
|
/**
|
|
327
|
-
* Builds JSDoc
|
|
327
|
+
* Builds API documentation using TypeDoc (generates a modern static site from JSDoc-annotated JS).
|
|
328
|
+
* Config is read from the base typedoc JSON, merged with runtime values, written to a temporary
|
|
329
|
+
* file, and deleted after the build — the base config file is never mutated on disk.
|
|
328
330
|
* @function buildJsDocs
|
|
329
331
|
* @memberof clientBuildDocs
|
|
330
|
-
* @param {Object} options -
|
|
332
|
+
* @param {Object} options - TypeDoc build options
|
|
331
333
|
* @param {string} options.host - The hostname for the documentation
|
|
332
334
|
* @param {string} options.path - The base path for the documentation
|
|
333
335
|
* @param {Object} options.metadata - Metadata for the documentation
|
|
334
|
-
* @param {string} options.publicClientId - Client ID used to resolve the
|
|
336
|
+
* @param {string} options.publicClientId - Client ID used to resolve the references directory
|
|
335
337
|
* @param {Object} options.docs - Documentation config from server conf
|
|
336
|
-
* @param {string} options.docs.jsJsonPath - Path to the
|
|
338
|
+
* @param {string} options.docs.jsJsonPath - Path to the base typedoc JSON config file
|
|
339
|
+
* @param {string} options.docsDestination - Resolved output path for the generated docs
|
|
337
340
|
*/
|
|
338
|
-
const buildJsDocs = async ({ host, path, metadata = {}, publicClientId, docs }) => {
|
|
341
|
+
const buildJsDocs = async ({ host, path, metadata = {}, publicClientId, docs, docsDestination }) => {
|
|
339
342
|
const logger = loggerFactory(import.meta);
|
|
340
343
|
|
|
341
|
-
const
|
|
342
|
-
if (!fs.existsSync(
|
|
343
|
-
logger.warn('
|
|
344
|
+
const typedocConfigPath = docs.jsJsonPath;
|
|
345
|
+
if (!fs.existsSync(typedocConfigPath)) {
|
|
346
|
+
logger.warn('typedoc config not found, skipping', typedocConfigPath);
|
|
344
347
|
return;
|
|
345
348
|
}
|
|
346
|
-
const
|
|
347
|
-
logger.info('using
|
|
349
|
+
const baseConfig = JSON.parse(fs.readFileSync(typedocConfigPath, 'utf8'));
|
|
350
|
+
logger.info('using typedoc config', typedocConfigPath);
|
|
348
351
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
352
|
+
// Build runtime config in memory — never mutate the base config file
|
|
353
|
+
// tsconfig must be absolute so TypeDoc resolves it regardless of where the
|
|
354
|
+
// tmp config file is located on disk.
|
|
355
|
+
const runtimeConfig = {
|
|
356
|
+
...baseConfig,
|
|
357
|
+
tsconfig: fs.realpathSync(baseConfig.tsconfig || './tsconfig.docs.json'),
|
|
358
|
+
out: docsDestination,
|
|
359
|
+
name: metadata?.title || baseConfig.name,
|
|
360
|
+
favicon: `./public/${host}${path === '/' ? '/' : `${path}/`}favicon.ico`,
|
|
361
|
+
};
|
|
354
362
|
|
|
363
|
+
// Include extra reference documents as TypeDoc document pages
|
|
364
|
+
// TypeDoc 0.28+: option is `projectDocuments`, not `documents`
|
|
355
365
|
if (Array.isArray(docs.references) && docs.references.length > 0) {
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
if (fs.existsSync(refPath)) {
|
|
359
|
-
const fileName = refPath.split('/').pop();
|
|
360
|
-
fs.copySync(refPath, `${tutorialsPath}/${fileName}`);
|
|
361
|
-
logger.info('copied reference to tutorials', refPath);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
366
|
+
runtimeConfig.projectDocuments = docs.references.filter((p) => fs.existsSync(p));
|
|
367
|
+
if (runtimeConfig.projectDocuments.length > 0) logger.info('typedoc documents', runtimeConfig.projectDocuments);
|
|
364
368
|
}
|
|
365
369
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
jsDocsConfig.opts.theme_opts.sections.push('Tutorials');
|
|
370
|
-
}
|
|
371
|
-
logger.info('build jsdoc tutorials', tutorialsPath);
|
|
372
|
-
} else {
|
|
373
|
-
delete jsDocsConfig.opts.tutorials;
|
|
374
|
-
}
|
|
370
|
+
const tmpConfigPath = `.typedoc.tmp.json`;
|
|
371
|
+
fs.writeFileSync(tmpConfigPath, JSON.stringify(runtimeConfig, null, 2), 'utf8');
|
|
372
|
+
logger.warn('build typedoc view', docsDestination);
|
|
375
373
|
|
|
376
|
-
|
|
377
|
-
logger.warn('build jsdoc view', jsDocsConfig.opts.destination);
|
|
374
|
+
shellExec(`node_modules/.bin/typedoc --options ${tmpConfigPath}`, { silent: true });
|
|
378
375
|
|
|
379
|
-
|
|
376
|
+
fs.removeSync(tmpConfigPath);
|
|
380
377
|
};
|
|
381
378
|
|
|
382
379
|
/**
|
|
@@ -384,16 +381,13 @@ const buildJsDocs = async ({ host, path, metadata = {}, publicClientId, docs })
|
|
|
384
381
|
* @function buildCoverage
|
|
385
382
|
* @memberof clientBuildDocs
|
|
386
383
|
* @param {Object} options - Coverage build options
|
|
387
|
-
* @param {string} options.host - The hostname for the coverage
|
|
388
|
-
* @param {string} options.path - The base path for the coverage
|
|
389
384
|
* @param {Object} options.docs - Documentation config from server conf
|
|
390
|
-
* @param {string} options.docs.coveragePath - Directory where
|
|
385
|
+
* @param {string} options.docs.coveragePath - Directory where coverage reports are generated
|
|
386
|
+
* @param {string} options.docsDestination - Resolved output path where docs were built
|
|
391
387
|
*/
|
|
392
|
-
const buildCoverage = async ({
|
|
388
|
+
const buildCoverage = async ({ docs, docsDestination }) => {
|
|
393
389
|
const logger = loggerFactory(import.meta);
|
|
394
|
-
const
|
|
395
|
-
const jsDocsConfig = JSON.parse(fs.readFileSync(jsDocSourcePath, 'utf8'));
|
|
396
|
-
const coveragePath = docs.coveragePath;
|
|
390
|
+
const { coveragePath, coverageOutputDir = 'coverage' } = docs;
|
|
397
391
|
|
|
398
392
|
const coverageOutputPath = `${coveragePath}/coverage`;
|
|
399
393
|
if (!fs.existsSync(coverageOutputPath)) {
|
|
@@ -411,9 +405,15 @@ const buildCoverage = async ({ host, path, docs }) => {
|
|
|
411
405
|
}
|
|
412
406
|
|
|
413
407
|
if (fs.existsSync(coverageOutputPath) && fs.readdirSync(coverageOutputPath).length > 0) {
|
|
414
|
-
const coverageBuildPath = `${
|
|
408
|
+
const coverageBuildPath = `${docsDestination}${coverageOutputDir}`;
|
|
415
409
|
fs.mkdirSync(coverageBuildPath, { recursive: true });
|
|
416
|
-
|
|
410
|
+
// Hardhat 3 outputs HTML to coverage/html/; Hardhat 2 / c8 output directly to coverage/
|
|
411
|
+
const coverageHtmlSubdir = `${coverageOutputPath}/html`;
|
|
412
|
+
if (fs.existsSync(coverageHtmlSubdir) && fs.existsSync(`${coverageHtmlSubdir}/index.html`)) {
|
|
413
|
+
fs.copySync(coverageHtmlSubdir, coverageBuildPath);
|
|
414
|
+
} else {
|
|
415
|
+
fs.copySync(coverageOutputPath, coverageBuildPath);
|
|
416
|
+
}
|
|
417
417
|
logger.warn('build coverage', coverageBuildPath);
|
|
418
418
|
} else {
|
|
419
419
|
logger.warn('no coverage output found, skipping', coverageOutputPath);
|
|
@@ -446,8 +446,14 @@ const buildDocs = async ({
|
|
|
446
446
|
packageData,
|
|
447
447
|
docs,
|
|
448
448
|
}) => {
|
|
449
|
-
|
|
450
|
-
|
|
449
|
+
const pathPrefix = path === '/' ? '/' : `${path}/`;
|
|
450
|
+
// TypeDoc output is versioned: served at /docs/engine/{version}/
|
|
451
|
+
const version = (packageData?.version || '').replace(/^v/, '');
|
|
452
|
+
const jsDocsDestination = `./public/${host}${pathPrefix}docs/engine/${version}/`;
|
|
453
|
+
// Coverage output at /docs/coverage/ (or /docs/{coverageOutputDir}/)
|
|
454
|
+
const coverageBaseDestination = `./public/${host}${pathPrefix}docs/`;
|
|
455
|
+
await buildJsDocs({ host, path, metadata, publicClientId, docs, docsDestination: jsDocsDestination });
|
|
456
|
+
await buildCoverage({ docs, docsDestination: coverageBaseDestination });
|
|
451
457
|
await buildApiDocs({
|
|
452
458
|
host,
|
|
453
459
|
path,
|