cyberia 2.8.885
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 +15 -0
- package/.env.development +45 -0
- package/.env.production +50 -0
- package/.env.test +45 -0
- package/.github/workflows/engine-cyberia.cd.yml +31 -0
- package/.github/workflows/engine-cyberia.ci.yml +60 -0
- package/.github/workflows/ghpkg.ci.yml +87 -0
- package/.github/workflows/npmpkg.ci.yml +72 -0
- package/.github/workflows/publish.ci.yml +84 -0
- package/.github/workflows/publish.cyberia.ci.yml +84 -0
- package/.github/workflows/pwa-microservices-template-page.cd.yml +72 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
- package/.github/workflows/release.cd.yml +37 -0
- package/.nycrc +9 -0
- package/.prettierignore +13 -0
- package/.prettierrc +9 -0
- package/.vscode/extensions.json +51 -0
- package/.vscode/settings.json +87 -0
- package/AUTHORS.md +21 -0
- package/CHANGELOG.md +205 -0
- package/Dockerfile +28 -0
- package/LICENSE +21 -0
- package/README.md +85 -0
- package/bin/build.js +209 -0
- package/bin/cron.js +47 -0
- package/bin/cyberia.js +145 -0
- package/bin/db.js +199 -0
- package/bin/deploy.js +1293 -0
- package/bin/file.js +197 -0
- package/bin/hwt.js +49 -0
- package/bin/index.js +145 -0
- package/bin/ssl.js +63 -0
- package/bin/util.js +80 -0
- package/bin/vs.js +74 -0
- package/cli.md +714 -0
- package/conf.js +204 -0
- package/deployment.yaml +138 -0
- package/jsconfig.json +7 -0
- package/jsdoc.json +32 -0
- package/manifests/deployment/adminer/deployment.yaml +32 -0
- package/manifests/deployment/adminer/kustomization.yaml +7 -0
- package/manifests/deployment/adminer/service.yaml +13 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +167 -0
- package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
- package/manifests/deployment/dd-test-development/deployment.yaml +174 -0
- package/manifests/deployment/dd-test-development/proxy.yaml +51 -0
- package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
- package/manifests/deployment/fastapi/backend-service.yml +19 -0
- package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
- package/manifests/deployment/fastapi/frontend-service.yml +15 -0
- package/manifests/deployment/fastapi/initial_data.sh +56 -0
- package/manifests/deployment/kafka/deployment.yaml +69 -0
- package/manifests/deployment/mongo-express/deployment.yaml +60 -0
- package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
- package/manifests/deployment/spark/spark-pi-py.yaml +21 -0
- package/manifests/deployment/tensorflow/tf-gpu-test.yaml +65 -0
- package/manifests/envoy-service-nodeport.yaml +23 -0
- package/manifests/grafana/deployment.yaml +57 -0
- package/manifests/grafana/kustomization.yaml +7 -0
- package/manifests/grafana/pvc.yaml +12 -0
- package/manifests/grafana/service.yaml +14 -0
- package/manifests/kind-config-dev.yaml +12 -0
- package/manifests/kind-config.yaml +12 -0
- package/manifests/kubeadm-calico-config.yaml +119 -0
- package/manifests/kubelet-config.yaml +65 -0
- package/manifests/letsencrypt-prod.yaml +15 -0
- package/manifests/lxd/lxd-admin-profile.yaml +17 -0
- package/manifests/lxd/lxd-preseed.yaml +30 -0
- package/manifests/lxd/underpost-setup.sh +163 -0
- package/manifests/mariadb/config.yaml +10 -0
- package/manifests/mariadb/kustomization.yaml +9 -0
- package/manifests/mariadb/pv.yaml +12 -0
- package/manifests/mariadb/pvc.yaml +10 -0
- package/manifests/mariadb/secret.yaml +8 -0
- package/manifests/mariadb/service.yaml +10 -0
- package/manifests/mariadb/statefulset.yaml +56 -0
- package/manifests/mariadb/storage-class.yaml +10 -0
- package/manifests/mongodb/backup-access.yaml +16 -0
- package/manifests/mongodb/backup-cronjob.yaml +42 -0
- package/manifests/mongodb/backup-pv-pvc.yaml +22 -0
- package/manifests/mongodb/configmap.yaml +26 -0
- package/manifests/mongodb/headless-service.yaml +10 -0
- package/manifests/mongodb/kustomization.yaml +11 -0
- package/manifests/mongodb/pv-pvc.yaml +23 -0
- package/manifests/mongodb/statefulset.yaml +126 -0
- package/manifests/mongodb/storage-class.yaml +9 -0
- package/manifests/mongodb-4.4/kustomization.yaml +7 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +23 -0
- package/manifests/mongodb-4.4/service-deployment.yaml +63 -0
- package/manifests/mysql/kustomization.yaml +7 -0
- package/manifests/mysql/pv-pvc.yaml +27 -0
- package/manifests/mysql/statefulset.yaml +55 -0
- package/manifests/postgresql/configmap.yaml +9 -0
- package/manifests/postgresql/kustomization.yaml +10 -0
- package/manifests/postgresql/pv.yaml +15 -0
- package/manifests/postgresql/pvc.yaml +13 -0
- package/manifests/postgresql/service.yaml +10 -0
- package/manifests/postgresql/statefulset.yaml +37 -0
- package/manifests/prometheus/deployment.yaml +82 -0
- package/manifests/valkey/kustomization.yaml +7 -0
- package/manifests/valkey/service.yaml +11 -0
- package/manifests/valkey/statefulset.yaml +38 -0
- package/nodemon.json +6 -0
- package/package.json +118 -0
- package/proxy.yaml +35 -0
- package/scripts/device-scan.sh +43 -0
- package/scripts/gpu-diag.sh +19 -0
- package/scripts/maas-setup.sh +120 -0
- package/scripts/nat-iptables.sh +26 -0
- package/scripts/nvim.sh +91 -0
- package/scripts/snap-clean.sh +26 -0
- package/scripts/ssh-cluster-info.sh +14 -0
- package/scripts/ssl.sh +164 -0
- package/src/api/blockchain/blockchain.controller.js +51 -0
- package/src/api/blockchain/blockchain.model.js +90 -0
- package/src/api/blockchain/blockchain.router.js +21 -0
- package/src/api/blockchain/blockchain.service.js +24 -0
- package/src/api/core/core.controller.js +69 -0
- package/src/api/core/core.model.js +11 -0
- package/src/api/core/core.router.js +24 -0
- package/src/api/core/core.service.js +35 -0
- package/src/api/crypto/crypto.controller.js +51 -0
- package/src/api/crypto/crypto.model.js +23 -0
- package/src/api/crypto/crypto.router.js +20 -0
- package/src/api/crypto/crypto.service.js +64 -0
- package/src/api/default/default.controller.js +74 -0
- package/src/api/default/default.model.js +20 -0
- package/src/api/default/default.router.js +27 -0
- package/src/api/default/default.service.js +40 -0
- package/src/api/document/document.controller.js +66 -0
- package/src/api/document/document.model.js +51 -0
- package/src/api/document/document.router.js +24 -0
- package/src/api/document/document.service.js +133 -0
- package/src/api/file/file.controller.js +67 -0
- package/src/api/file/file.model.js +19 -0
- package/src/api/file/file.router.js +22 -0
- package/src/api/file/file.service.js +100 -0
- package/src/api/instance/instance.controller.js +69 -0
- package/src/api/instance/instance.model.js +40 -0
- package/src/api/instance/instance.router.js +34 -0
- package/src/api/instance/instance.service.js +70 -0
- package/src/api/ipfs/ipfs.controller.js +51 -0
- package/src/api/ipfs/ipfs.model.js +17 -0
- package/src/api/ipfs/ipfs.router.js +20 -0
- package/src/api/ipfs/ipfs.service.js +25 -0
- package/src/api/object-layer/README.md +85 -0
- package/src/api/object-layer/object-layer.controller.js +69 -0
- package/src/api/object-layer/object-layer.model.js +181 -0
- package/src/api/object-layer/object-layer.router.js +29 -0
- package/src/api/object-layer/object-layer.service.js +49 -0
- package/src/api/test/test.controller.js +59 -0
- package/src/api/test/test.model.js +14 -0
- package/src/api/test/test.router.js +21 -0
- package/src/api/test/test.service.js +35 -0
- package/src/api/user/postman_collection.json +216 -0
- package/src/api/user/user.build.js +16 -0
- package/src/api/user/user.controller.js +35 -0
- package/src/api/user/user.model.js +100 -0
- package/src/api/user/user.router.js +400 -0
- package/src/api/user/user.service.js +500 -0
- package/src/api.js +23 -0
- package/src/cli/baremetal.js +1310 -0
- package/src/cli/cloud-init.js +548 -0
- package/src/cli/cluster.js +834 -0
- package/src/cli/cron.js +95 -0
- package/src/cli/db.js +414 -0
- package/src/cli/deploy.js +661 -0
- package/src/cli/env.js +101 -0
- package/src/cli/fs.js +256 -0
- package/src/cli/image.js +156 -0
- package/src/cli/index.js +436 -0
- package/src/cli/lxd.js +402 -0
- package/src/cli/monitor.js +260 -0
- package/src/cli/repository.js +274 -0
- package/src/cli/run.js +728 -0
- package/src/cli/script.js +85 -0
- package/src/cli/secrets.js +71 -0
- package/src/cli/ssh.js +46 -0
- package/src/cli/test.js +159 -0
- package/src/client/Cyberia.index.js +50 -0
- package/src/client/CyberiaAdmin.index.js +34 -0
- package/src/client/CyberiaPortal.index.js +36 -0
- package/src/client/Default.index.js +84 -0
- package/src/client/components/core/404.js +20 -0
- package/src/client/components/core/500.js +20 -0
- package/src/client/components/core/Account.js +326 -0
- package/src/client/components/core/AgGrid.js +191 -0
- package/src/client/components/core/Alert.js +77 -0
- package/src/client/components/core/Auth.js +342 -0
- package/src/client/components/core/Badge.js +32 -0
- package/src/client/components/core/Blockchain.js +41 -0
- package/src/client/components/core/Blog.js +9 -0
- package/src/client/components/core/BtnIcon.js +111 -0
- package/src/client/components/core/CalendarCore.js +464 -0
- package/src/client/components/core/Chat.js +64 -0
- package/src/client/components/core/ColorPalette.js +5267 -0
- package/src/client/components/core/CommonJs.js +1010 -0
- package/src/client/components/core/Content.js +196 -0
- package/src/client/components/core/Css.js +1099 -0
- package/src/client/components/core/CssCore.js +882 -0
- package/src/client/components/core/D3Chart.js +44 -0
- package/src/client/components/core/Docs.js +376 -0
- package/src/client/components/core/DropDown.js +223 -0
- package/src/client/components/core/EventsUI.js +133 -0
- package/src/client/components/core/FileExplorer.js +707 -0
- package/src/client/components/core/FullScreen.js +36 -0
- package/src/client/components/core/Input.js +383 -0
- package/src/client/components/core/JoyStick.js +80 -0
- package/src/client/components/core/Keyboard.js +73 -0
- package/src/client/components/core/LoadingAnimation.js +159 -0
- package/src/client/components/core/LogIn.js +190 -0
- package/src/client/components/core/LogOut.js +63 -0
- package/src/client/components/core/Logger.js +29 -0
- package/src/client/components/core/Modal.js +2494 -0
- package/src/client/components/core/NotificationManager.js +84 -0
- package/src/client/components/core/ObjectLayerEngine.js +1229 -0
- package/src/client/components/core/ObjectLayerEngineModal.js +443 -0
- package/src/client/components/core/Pagination.js +207 -0
- package/src/client/components/core/Panel.js +772 -0
- package/src/client/components/core/PanelForm.js +627 -0
- package/src/client/components/core/Polyhedron.js +162 -0
- package/src/client/components/core/Recover.js +207 -0
- package/src/client/components/core/Responsive.js +82 -0
- package/src/client/components/core/RichText.js +43 -0
- package/src/client/components/core/Router.js +317 -0
- package/src/client/components/core/Scroll.js +76 -0
- package/src/client/components/core/SignUp.js +125 -0
- package/src/client/components/core/SocketIo.js +74 -0
- package/src/client/components/core/Stream.js +113 -0
- package/src/client/components/core/ToggleSwitch.js +101 -0
- package/src/client/components/core/ToolTip.js +90 -0
- package/src/client/components/core/Translate.js +522 -0
- package/src/client/components/core/Validator.js +115 -0
- package/src/client/components/core/VanillaJs.js +423 -0
- package/src/client/components/core/Wallet.js +106 -0
- package/src/client/components/core/WebComponent.js +44 -0
- package/src/client/components/core/Webhook.js +25 -0
- package/src/client/components/core/Worker.js +371 -0
- package/src/client/components/core/windowGetDimensions.js +269 -0
- package/src/client/components/cyberia/BagCyberia.js +1253 -0
- package/src/client/components/cyberia/BiomeCyberia.js +130 -0
- package/src/client/components/cyberia/CharacterCyberia.js +321 -0
- package/src/client/components/cyberia/CommonCyberia.js +1834 -0
- package/src/client/components/cyberia/CssCyberia.js +816 -0
- package/src/client/components/cyberia/ElementPreviewCyberia.js +183 -0
- package/src/client/components/cyberia/ElementsCyberia.js +146 -0
- package/src/client/components/cyberia/InteractionPanelCyberia.js +1043 -0
- package/src/client/components/cyberia/JoyStickCyberia.js +53 -0
- package/src/client/components/cyberia/LogInCyberia.js +68 -0
- package/src/client/components/cyberia/LogOutCyberia.js +24 -0
- package/src/client/components/cyberia/MainUserCyberia.js +424 -0
- package/src/client/components/cyberia/MapCyberia.js +160 -0
- package/src/client/components/cyberia/MatrixCyberia.js +147 -0
- package/src/client/components/cyberia/MenuCyberia.js +575 -0
- package/src/client/components/cyberia/PixiCyberia.js +1639 -0
- package/src/client/components/cyberia/PointAndClickMovementCyberia.js +146 -0
- package/src/client/components/cyberia/QuestCyberia.js +1420 -0
- package/src/client/components/cyberia/RoutesCyberia.js +47 -0
- package/src/client/components/cyberia/SettingsCyberia.js +16 -0
- package/src/client/components/cyberia/SignUpCyberia.js +14 -0
- package/src/client/components/cyberia/SkillCyberia.js +124 -0
- package/src/client/components/cyberia/SocketIoCyberia.js +211 -0
- package/src/client/components/cyberia/TileCyberia.js +685 -0
- package/src/client/components/cyberia/TranslateCyberia.js +96 -0
- package/src/client/components/cyberia/UniverseCyberia.js +14 -0
- package/src/client/components/cyberia/WebhookCyberia.js +13 -0
- package/src/client/components/cyberia/WikiCyberia.js +144 -0
- package/src/client/components/cyberia/WorldCyberia.js +680 -0
- package/src/client/components/cyberia-admin/BiomeCyberiaAdmin.js +978 -0
- package/src/client/components/cyberia-admin/CommonCyberiaAdmin.js +29 -0
- package/src/client/components/cyberia-admin/CssCyberiaAdmin.js +15 -0
- package/src/client/components/cyberia-admin/ElementsCyberiaAdmin.js +38 -0
- package/src/client/components/cyberia-admin/InstanceEngineCyberiaAdmin.js +180 -0
- package/src/client/components/cyberia-admin/LogInCyberiaAdmin.js +34 -0
- package/src/client/components/cyberia-admin/LogOutCyberiaAdmin.js +24 -0
- package/src/client/components/cyberia-admin/MenuCyberiaAdmin.js +660 -0
- package/src/client/components/cyberia-admin/RoutesCyberiaAdmin.js +57 -0
- package/src/client/components/cyberia-admin/ServerCyberiaAdmin.js +129 -0
- package/src/client/components/cyberia-admin/SettingsCyberiaAdmin.js +16 -0
- package/src/client/components/cyberia-admin/SignUpCyberiaAdmin.js +11 -0
- package/src/client/components/cyberia-admin/SocketIoCyberiaAdmin.js +53 -0
- package/src/client/components/cyberia-admin/TranslateCyberiaAdmin.js +7 -0
- package/src/client/components/cyberia-biome/CityCyberiaBiome.js +209 -0
- package/src/client/components/cyberia-biome/CityInteriorCyberiaBiome.js +253 -0
- package/src/client/components/cyberia-biome/ColorChaosCyberiaBiome.js +26 -0
- package/src/client/components/cyberia-biome/ForestCyberiaBiome.js +191 -0
- package/src/client/components/cyberia-biome/GridBaseCyberiaBiome.js +364 -0
- package/src/client/components/cyberia-biome/SeedCityCyberiaBiome.js +347 -0
- package/src/client/components/cyberia-biome/ShopCyberiaBiome.js +12 -0
- package/src/client/components/cyberia-biome/SpaceCyberiaBiome.js +58 -0
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +29 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +132 -0
- package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +38 -0
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +18 -0
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +12 -0
- package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +487 -0
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +45 -0
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +136 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +11 -0
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +52 -0
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +12 -0
- package/src/client/components/default/CommonDefault.js +29 -0
- package/src/client/components/default/CssDefault.js +27 -0
- package/src/client/components/default/ElementsDefault.js +38 -0
- package/src/client/components/default/LogInDefault.js +14 -0
- package/src/client/components/default/LogOutDefault.js +10 -0
- package/src/client/components/default/MenuDefault.js +743 -0
- package/src/client/components/default/RoutesDefault.js +48 -0
- package/src/client/components/default/SettingsDefault.js +16 -0
- package/src/client/components/default/SignUpDefault.js +9 -0
- package/src/client/components/default/SocketIoDefault.js +54 -0
- package/src/client/components/default/TranslateDefault.js +7 -0
- 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-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152-precomposed.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-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76-precomposed.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/dark.jpg +0 -0
- package/src/client/public/default/assets/background/dark.svg +557 -0
- package/src/client/public/default/assets/background/white.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/default/assets/logo/base-icon.png +0 -0
- package/src/client/public/default/assets/logo/underpost.gif +0 -0
- package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
- package/src/client/public/default/browserconfig.xml +12 -0
- 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 +69 -0
- 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/plantuml/client-conf.svg +1 -0
- package/src/client/public/default/plantuml/client-schema.svg +1 -0
- package/src/client/public/default/plantuml/cron-conf.svg +1 -0
- package/src/client/public/default/plantuml/cron-schema.svg +1 -0
- package/src/client/public/default/plantuml/server-conf.svg +1 -0
- package/src/client/public/default/plantuml/server-schema.svg +1 -0
- package/src/client/public/default/plantuml/ssr-conf.svg +1 -0
- package/src/client/public/default/plantuml/ssr-schema.svg +1 -0
- package/src/client/public/default/safari-pinned-tab.svg +24 -0
- package/src/client/public/default/site.webmanifest +69 -0
- package/src/client/public/default/sitemap +148 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +9 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +148 -0
- package/src/client/public/test/favicon.ico +0 -0
- package/src/client/public/test/sitemap +148 -0
- package/src/client/services/blockchain/blockchain.service.js +73 -0
- package/src/client/services/core/core.service.js +165 -0
- package/src/client/services/crypto/crypto.service.js +73 -0
- package/src/client/services/default/default.management.js +450 -0
- package/src/client/services/default/default.service.js +98 -0
- package/src/client/services/document/document.service.js +97 -0
- package/src/client/services/file/file.service.js +72 -0
- package/src/client/services/instance/instance.management.js +78 -0
- package/src/client/services/instance/instance.service.js +97 -0
- package/src/client/services/ipfs/ipfs.service.js +73 -0
- package/src/client/services/object-layer/object-layer.service.js +93 -0
- package/src/client/services/test/test.service.js +73 -0
- package/src/client/services/user/user.management.js +56 -0
- package/src/client/services/user/user.service.js +108 -0
- package/src/client/ssr/Render.js +237 -0
- package/src/client/ssr/body/404.js +73 -0
- package/src/client/ssr/body/500.js +72 -0
- package/src/client/ssr/body/CacheControl.js +114 -0
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +90 -0
- package/src/client/ssr/body/CyberiaSplashScreenLore.js +424 -0
- package/src/client/ssr/body/DefaultSplashScreen.js +90 -0
- package/src/client/ssr/email/DefaultRecoverEmail.js +21 -0
- package/src/client/ssr/email/DefaultVerifyEmail.js +17 -0
- package/src/client/ssr/head/Css.js +241 -0
- package/src/client/ssr/head/CyberiaAdminScripts.js +6 -0
- package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
- package/src/client/ssr/head/CyberiaScripts.js +6 -0
- package/src/client/ssr/head/DefaultScripts.js +6 -0
- package/src/client/ssr/head/Microdata.js +11 -0
- package/src/client/ssr/head/Production.js +1 -0
- package/src/client/ssr/head/Pwa.js +146 -0
- package/src/client/ssr/head/Seo.js +15 -0
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +21 -0
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +17 -0
- package/src/client/ssr/offline/Maintenance.js +63 -0
- package/src/client/ssr/offline/NoNetworkConnection.js +67 -0
- package/src/client/ssr/pages/404.js +12 -0
- package/src/client/ssr/pages/500.js +12 -0
- package/src/client/ssr/pages/Test.js +198 -0
- package/src/client/ssr/pages/maintenance.js +14 -0
- package/src/client/ssr/pages/offline.js +21 -0
- package/src/client/sw/default.sw.js +108 -0
- package/src/client/sw/template.sw.js +84 -0
- package/src/client.build.js +22 -0
- package/src/client.dev.js +24 -0
- package/src/db/DataBaseProvider.js +98 -0
- package/src/db/mariadb/MariaDB.js +66 -0
- package/src/db/mongo/MongooseDB.js +70 -0
- package/src/index.js +198 -0
- package/src/mailer/EmailRender.js +116 -0
- package/src/mailer/MailerProvider.js +213 -0
- package/src/monitor.js +24 -0
- package/src/proxy.js +22 -0
- package/src/runtime/express/Express.js +256 -0
- package/src/runtime/lampp/Dockerfile +50 -0
- package/src/runtime/lampp/Lampp.js +343 -0
- package/src/server/auth.js +689 -0
- package/src/server/backup.js +96 -0
- package/src/server/client-build-docs.js +205 -0
- package/src/server/client-build-live.js +109 -0
- package/src/server/client-build.js +690 -0
- package/src/server/client-dev-server.js +87 -0
- package/src/server/client-formatted.js +87 -0
- package/src/server/client-icons.js +108 -0
- package/src/server/conf.js +1071 -0
- package/src/server/crypto.js +210 -0
- package/src/server/dns.js +276 -0
- package/src/server/downloader.js +74 -0
- package/src/server/json-schema.js +77 -0
- package/src/server/logger.js +197 -0
- package/src/server/network.js +72 -0
- package/src/server/object-layer.js +294 -0
- package/src/server/peer.js +69 -0
- package/src/server/process.js +171 -0
- package/src/server/proxy.js +110 -0
- package/src/server/runtime.js +170 -0
- package/src/server/ssr.js +127 -0
- package/src/server/start.js +161 -0
- package/src/server/tls.js +251 -0
- package/src/server/valkey.js +293 -0
- package/src/server.js +25 -0
- package/src/ws/IoInterface.js +139 -0
- package/src/ws/IoServer.js +88 -0
- package/src/ws/core/channels/core.ws.chat.js +23 -0
- package/src/ws/core/channels/core.ws.mailer.js +35 -0
- package/src/ws/core/channels/core.ws.stream.js +31 -0
- package/src/ws/core/core.ws.connection.js +62 -0
- package/src/ws/core/core.ws.emit.js +53 -0
- package/src/ws/core/core.ws.server.js +76 -0
- package/src/ws/core/management/core.ws.chat.js +8 -0
- package/src/ws/core/management/core.ws.mailer.js +16 -0
- package/src/ws/core/management/core.ws.stream.js +8 -0
- package/src/ws/cyberia/channels/cyberia.ws.bot.js +56 -0
- package/src/ws/cyberia/channels/cyberia.ws.skill.js +51 -0
- package/src/ws/cyberia/channels/cyberia.ws.user.js +437 -0
- package/src/ws/cyberia/cyberia.ws.connection.js +36 -0
- package/src/ws/cyberia/cyberia.ws.emit.js +14 -0
- package/src/ws/cyberia/cyberia.ws.server.js +67 -0
- package/src/ws/cyberia/management/cyberia.ws.bot.js +669 -0
- package/src/ws/cyberia/management/cyberia.ws.skill.js +441 -0
- package/src/ws/cyberia/management/cyberia.ws.user.js +188 -0
- package/src/ws/default/channels/default.ws.main.js +16 -0
- package/src/ws/default/default.ws.connection.js +22 -0
- package/src/ws/default/default.ws.emit.js +14 -0
- package/src/ws/default/default.ws.server.js +20 -0
- package/src/ws/default/management/default.ws.main.js +8 -0
- package/test/api.test.js +53 -0
- package/test/crypto.test.js +117 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import { InstanceService } from './instance.service.js';
|
|
3
|
+
|
|
4
|
+
const logger = loggerFactory(import.meta);
|
|
5
|
+
|
|
6
|
+
const InstanceController = {
|
|
7
|
+
post: async (req, res, options) => {
|
|
8
|
+
try {
|
|
9
|
+
const result = await InstanceService.post(req, res, options);
|
|
10
|
+
return res.status(200).json({
|
|
11
|
+
status: 'success',
|
|
12
|
+
data: result,
|
|
13
|
+
});
|
|
14
|
+
} catch (error) {
|
|
15
|
+
logger.error(error, error.stack);
|
|
16
|
+
return res.status(400).json({
|
|
17
|
+
status: 'error',
|
|
18
|
+
message: error.message,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
get: async (req, res, options) => {
|
|
23
|
+
try {
|
|
24
|
+
const result = await InstanceService.get(req, res, options);
|
|
25
|
+
return res.status(200).json({
|
|
26
|
+
status: 'success',
|
|
27
|
+
data: result,
|
|
28
|
+
});
|
|
29
|
+
} catch (error) {
|
|
30
|
+
logger.error(error, error.stack);
|
|
31
|
+
return res.status(400).json({
|
|
32
|
+
status: 'error',
|
|
33
|
+
message: error.message,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
put: async (req, res, options) => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await InstanceService.put(req, res, options);
|
|
40
|
+
return res.status(200).json({
|
|
41
|
+
status: 'success',
|
|
42
|
+
data: result,
|
|
43
|
+
});
|
|
44
|
+
} catch (error) {
|
|
45
|
+
logger.error(error, error.stack);
|
|
46
|
+
return res.status(400).json({
|
|
47
|
+
status: 'error',
|
|
48
|
+
message: error.message,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
delete: async (req, res, options) => {
|
|
53
|
+
try {
|
|
54
|
+
const result = await InstanceService.delete(req, res, options);
|
|
55
|
+
return res.status(200).json({
|
|
56
|
+
status: 'success',
|
|
57
|
+
data: result,
|
|
58
|
+
});
|
|
59
|
+
} catch (error) {
|
|
60
|
+
logger.error(error, error.stack);
|
|
61
|
+
return res.status(400).json({
|
|
62
|
+
status: 'error',
|
|
63
|
+
message: error.message,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { InstanceController };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Schema, model, Types } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
// https://mongoosejs.com/docs/2.7.x/docs/schematypes.html
|
|
4
|
+
|
|
5
|
+
const InstanceSchema = new Schema(
|
|
6
|
+
{
|
|
7
|
+
deployId: { type: String },
|
|
8
|
+
host: { type: String },
|
|
9
|
+
path: { type: String },
|
|
10
|
+
port: { type: String },
|
|
11
|
+
client: { type: String },
|
|
12
|
+
runtime: { type: String },
|
|
13
|
+
userId: {
|
|
14
|
+
type: Schema.Types.ObjectId,
|
|
15
|
+
ref: 'User',
|
|
16
|
+
},
|
|
17
|
+
apis: [{ type: String }],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
timestamps: true,
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
const InstanceDto = {
|
|
25
|
+
populate: {
|
|
26
|
+
get: () => {
|
|
27
|
+
return {
|
|
28
|
+
path: 'userId',
|
|
29
|
+
model: 'User',
|
|
30
|
+
select: '_id email',
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const InstanceModel = model('Instance', InstanceSchema);
|
|
37
|
+
|
|
38
|
+
const ProviderSchema = InstanceSchema;
|
|
39
|
+
|
|
40
|
+
export { InstanceSchema, InstanceModel, ProviderSchema, InstanceDto };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { adminGuard } from '../../server/auth.js';
|
|
2
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
3
|
+
import { InstanceController } from './instance.controller.js';
|
|
4
|
+
import express from 'express';
|
|
5
|
+
|
|
6
|
+
const logger = loggerFactory(import.meta);
|
|
7
|
+
|
|
8
|
+
const InstanceRouter = (options) => {
|
|
9
|
+
const router = express.Router();
|
|
10
|
+
const authMiddleware = options.authMiddleware;
|
|
11
|
+
router.post(`/:id`, authMiddleware, adminGuard, async (req, res) => await InstanceController.post(req, res, options));
|
|
12
|
+
router.post(`/`, authMiddleware, adminGuard, async (req, res) => await InstanceController.post(req, res, options));
|
|
13
|
+
router.get(`/:id`, authMiddleware, adminGuard, async (req, res) => await InstanceController.get(req, res, options));
|
|
14
|
+
router.get(`/`, authMiddleware, async (req, res) => await InstanceController.get(req, res, options));
|
|
15
|
+
router.put(`/:id`, authMiddleware, adminGuard, async (req, res) => await InstanceController.put(req, res, options));
|
|
16
|
+
router.put(`/`, authMiddleware, adminGuard, async (req, res) => await InstanceController.put(req, res, options));
|
|
17
|
+
router.delete(
|
|
18
|
+
`/:id`,
|
|
19
|
+
authMiddleware,
|
|
20
|
+
adminGuard,
|
|
21
|
+
async (req, res) => await InstanceController.delete(req, res, options),
|
|
22
|
+
);
|
|
23
|
+
router.delete(
|
|
24
|
+
`/`,
|
|
25
|
+
authMiddleware,
|
|
26
|
+
adminGuard,
|
|
27
|
+
async (req, res) => await InstanceController.delete(req, res, options),
|
|
28
|
+
);
|
|
29
|
+
return router;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const ApiRouter = InstanceRouter;
|
|
33
|
+
|
|
34
|
+
export { ApiRouter, InstanceRouter };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { DataBaseProvider } from '../../db/DataBaseProvider.js';
|
|
2
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
3
|
+
import { InstanceDto } from './instance.model.js';
|
|
4
|
+
|
|
5
|
+
const logger = loggerFactory(import.meta);
|
|
6
|
+
|
|
7
|
+
const InstanceService = {
|
|
8
|
+
post: async (req, res, options) => {
|
|
9
|
+
/** @type {import('./instance.model.js').InstanceModel} */
|
|
10
|
+
const Instance = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.Instance;
|
|
11
|
+
return await new Instance(req.body).save();
|
|
12
|
+
},
|
|
13
|
+
get: async (req, res, options) => {
|
|
14
|
+
/** @type {import('./instance.model.js').InstanceModel} */
|
|
15
|
+
const Instance = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.Instance;
|
|
16
|
+
|
|
17
|
+
/** @type {import('../user/user.model.js').UserModel} */
|
|
18
|
+
const User = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.User;
|
|
19
|
+
|
|
20
|
+
const user = await User.findOne({
|
|
21
|
+
_id: req.auth.user._id,
|
|
22
|
+
});
|
|
23
|
+
switch (req.params.id) {
|
|
24
|
+
case 'count': {
|
|
25
|
+
switch (user.role) {
|
|
26
|
+
case 'admin':
|
|
27
|
+
return { total: await Instance.countDocuments() };
|
|
28
|
+
default:
|
|
29
|
+
return { total: await Instance.countDocuments({ userId: req.auth.user._id }) };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
default:
|
|
33
|
+
const { page = 1, limit = 10, sort = { updatedAt: -1 } } = req.query;
|
|
34
|
+
const skip = (page - 1) * limit;
|
|
35
|
+
|
|
36
|
+
switch (user.role) {
|
|
37
|
+
case 'admin':
|
|
38
|
+
if (req.params.id) return await Instance.findById(req.params.id);
|
|
39
|
+
const [dataAdmin, totalAdmin] = await Promise.all([
|
|
40
|
+
Instance.find({}).sort(sort).limit(limit).skip(skip).populate(InstanceDto.populate.get()),
|
|
41
|
+
Instance.countDocuments({}),
|
|
42
|
+
]);
|
|
43
|
+
return { data: dataAdmin, total: totalAdmin, page, totalPages: Math.ceil(totalAdmin / limit) };
|
|
44
|
+
default:
|
|
45
|
+
const [dataUser, totalUser] = await Promise.all([
|
|
46
|
+
Instance.find({ userId: req.auth.user._id })
|
|
47
|
+
.sort(sort)
|
|
48
|
+
.limit(limit)
|
|
49
|
+
.skip(skip)
|
|
50
|
+
.populate(InstanceDto.populate.get()),
|
|
51
|
+
Instance.countDocuments({ userId: req.auth.user._id }),
|
|
52
|
+
]);
|
|
53
|
+
return { data: dataUser, total: totalUser, page, totalPages: Math.ceil(totalUser / limit) };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
put: async (req, res, options) => {
|
|
58
|
+
/** @type {import('./instance.model.js').InstanceModel} */
|
|
59
|
+
const Instance = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.Instance;
|
|
60
|
+
return await Instance.findByIdAndUpdate(req.params.id, req.body);
|
|
61
|
+
},
|
|
62
|
+
delete: async (req, res, options) => {
|
|
63
|
+
/** @type {import('./instance.model.js').InstanceModel} */
|
|
64
|
+
const Instance = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.Instance;
|
|
65
|
+
if (req.params.id) return await Instance.findByIdAndDelete(req.params.id);
|
|
66
|
+
else return await Instance.deleteMany();
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { InstanceService };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import { IPFSService } from './ipfs.service.js';
|
|
3
|
+
const logger = loggerFactory(import.meta);
|
|
4
|
+
|
|
5
|
+
const IPFSController = {
|
|
6
|
+
post: async (req, res, options) => {
|
|
7
|
+
try {
|
|
8
|
+
return res.status(200).json({
|
|
9
|
+
status: 'success',
|
|
10
|
+
data: await IPFSService.post(req, res, options),
|
|
11
|
+
});
|
|
12
|
+
} catch (error) {
|
|
13
|
+
logger.error(error, error.stack);
|
|
14
|
+
return res.status(400).json({
|
|
15
|
+
status: 'error',
|
|
16
|
+
message: error.message,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
get: async (req, res, options) => {
|
|
21
|
+
try {
|
|
22
|
+
return res.status(200).json({
|
|
23
|
+
status: 'success',
|
|
24
|
+
data: await IPFSService.get(req, res, options),
|
|
25
|
+
});
|
|
26
|
+
} catch (error) {
|
|
27
|
+
logger.error(error, error.stack);
|
|
28
|
+
return res.status(400).json({
|
|
29
|
+
status: 'error',
|
|
30
|
+
message: error.message,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
delete: async (req, res, options) => {
|
|
35
|
+
try {
|
|
36
|
+
const result = await IPFSService.delete(req, res, options);
|
|
37
|
+
return res.status(200).json({
|
|
38
|
+
status: 'success',
|
|
39
|
+
data: result,
|
|
40
|
+
});
|
|
41
|
+
} catch (error) {
|
|
42
|
+
logger.error(error, error.stack);
|
|
43
|
+
return res.status(400).json({
|
|
44
|
+
status: 'error',
|
|
45
|
+
message: error.message,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { IPFSController };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Schema, model } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
// https://mongoosejs.com/docs/2.7.x/docs/schematypes.html
|
|
4
|
+
|
|
5
|
+
const PinSchema = new Schema({
|
|
6
|
+
userId: {
|
|
7
|
+
type: Schema.Types.ObjectId,
|
|
8
|
+
ref: 'User',
|
|
9
|
+
},
|
|
10
|
+
cid: { type: String },
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const PinModel = model('Pin', PinSchema);
|
|
14
|
+
|
|
15
|
+
const ProviderSchema = PinSchema;
|
|
16
|
+
|
|
17
|
+
export { PinSchema, PinModel, ProviderSchema };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import { IPFSController } from './ipfs.controller.js';
|
|
3
|
+
import express from 'express';
|
|
4
|
+
const logger = loggerFactory(import.meta);
|
|
5
|
+
|
|
6
|
+
const IPFSRouter = (options) => {
|
|
7
|
+
const router = express.Router();
|
|
8
|
+
const authMiddleware = options.authMiddleware;
|
|
9
|
+
router.post(`/:id`, async (req, res) => await IPFSController.post(req, res, options));
|
|
10
|
+
router.post(`/`, authMiddleware, async (req, res) => await IPFSController.post(req, res, options));
|
|
11
|
+
router.get(`/:id`, async (req, res) => await IPFSController.get(req, res, options));
|
|
12
|
+
router.get(`/`, async (req, res) => await IPFSController.get(req, res, options));
|
|
13
|
+
router.delete(`/:id`, async (req, res) => await IPFSController.delete(req, res, options));
|
|
14
|
+
router.delete(`/`, async (req, res) => await IPFSController.delete(req, res, options));
|
|
15
|
+
return router;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const ApiRouter = IPFSRouter;
|
|
19
|
+
|
|
20
|
+
export { ApiRouter, IPFSRouter };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import dotenv from 'dotenv';
|
|
3
|
+
|
|
4
|
+
dotenv.config();
|
|
5
|
+
const logger = loggerFactory(import.meta);
|
|
6
|
+
|
|
7
|
+
const IPFSService = {
|
|
8
|
+
post: async (req, res, options) => {
|
|
9
|
+
switch (req.params.id) {
|
|
10
|
+
default:
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
get: async (req, res, options) => {
|
|
14
|
+
switch (req.params.id) {
|
|
15
|
+
default:
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
delete: async (req, res, options) => {
|
|
19
|
+
switch (req.params.id) {
|
|
20
|
+
default:
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { IPFSService };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://www.cyberiaonline.com/assets/splash/apple-touch-icon-precomposed.png" alt="CYBERIA Network Object Layer Engine CLI"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<div align="center">
|
|
6
|
+
|
|
7
|
+
<h1>cyberia</h1>
|
|
8
|
+
|
|
9
|
+
<h2>Network Object Layer Engine CLI</h2>
|
|
10
|
+
|
|
11
|
+
[](https://www.npmjs.com/package/cyberia) [](https://www.npmjs.org/package/cyberia)
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
This Command Line Interface (CLI) is a core tool for the **Cyberia Network Object Layer Engine**, specifically designed for processing, generating, and managing game assets, primarily **Object Layer** elements like skins, floors, and weapons.
|
|
16
|
+
|
|
17
|
+
It handles image asset quantization, generates data matrices and color palettes, and persists the resulting structured data into the game's database.
|
|
18
|
+
|
|
19
|
+
## **🚀 Getting Started**
|
|
20
|
+
|
|
21
|
+
### **Prerequisites**
|
|
22
|
+
|
|
23
|
+
You must have the following installed in your environment:
|
|
24
|
+
|
|
25
|
+
- **Node.js** (v24.10.0 recommended)
|
|
26
|
+
- **npm** or **yarn**
|
|
27
|
+
- **MongoDB** (or access to the configured MongoDB instance)
|
|
28
|
+
|
|
29
|
+
### **Installation**
|
|
30
|
+
|
|
31
|
+
1. **Clone the Repository** (If applicable):
|
|
32
|
+
git clone \[Your Repository URL\]
|
|
33
|
+
cd \[Your Project Directory\]
|
|
34
|
+
|
|
35
|
+
2. **Install Dependencies:**
|
|
36
|
+
npm install
|
|
37
|
+
\# or
|
|
38
|
+
yarn install
|
|
39
|
+
|
|
40
|
+
3. Environment Setup:
|
|
41
|
+
Ensure your required environment variables (e.g., DEFAULT_DEPLOY_ID, DEFAULT_DEPLOY_HOST, DEFAULT_DEPLOY_PATH) are correctly configured, typically in a .env file, to point the CLI to the correct database instance defined in conf.server.json.
|
|
42
|
+
|
|
43
|
+
## **🛠️ Usage**
|
|
44
|
+
|
|
45
|
+
The CLI is executed via Node.js, running the primary script cyberia.js. You can use your project's package.json scripts or run it directly.
|
|
46
|
+
|
|
47
|
+
The main execution pattern is:
|
|
48
|
+
|
|
49
|
+
node cyberia.js \[command\] \[options\]
|
|
50
|
+
|
|
51
|
+
### **Main Commands**
|
|
52
|
+
|
|
53
|
+
#### **1\. Processing and Saving Object Layer Assets**
|
|
54
|
+
|
|
55
|
+
The primary function of this CLI is to process raw PNG/GIF assets, convert them into game-ready tile matrices and color palettes, and store the final data object in the database.
|
|
56
|
+
|
|
57
|
+
| Option | Description |
|
|
58
|
+
| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
59
|
+
| \--process-object-layer | Iterates through all asset directories (/cyberia/assets/{type}/{id}/{direction}/{frame}), runs the frameFactory quantization logic, generates map_color and frame_matrix, and saves the final object to the database (with a SHA-256 hash). |
|
|
60
|
+
|
|
61
|
+
**Example:** To process all defined assets (skins, floors, etc.):
|
|
62
|
+
|
|
63
|
+
node cyberia.js \--process-object-layer
|
|
64
|
+
|
|
65
|
+
#### **2\. Visualizing Processed Frames**
|
|
66
|
+
|
|
67
|
+
This command allows developers to quickly visualize a single processed frame matrix, regenerating a standard PNG image from the tile data. This is useful for debugging the asset processing and quantization logic.
|
|
68
|
+
|
|
69
|
+
| Option | Format | Description |
|
|
70
|
+
| :------------ | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- |
|
|
71
|
+
| \--show-frame | objectLayerId_direction_frameIndex | Takes a processed asset ID, direction, and frame index, reconstructs the PNG, saves it locally, and opens it using firefox. |
|
|
72
|
+
|
|
73
|
+
**Example:** To show the first frame (index 0\) of the skin-001 asset in direction 08:
|
|
74
|
+
|
|
75
|
+
node cyberia.js \--show-frame skin-001_08_0
|
|
76
|
+
|
|
77
|
+
This will create a file named skin-001_08_0.png in the current directory and open it.
|
|
78
|
+
|
|
79
|
+
## **⚙️ Core Logic (from object-layer.js)**
|
|
80
|
+
|
|
81
|
+
The CLI relies on the logic provided by the ObjectLayerEngine class, which handles:
|
|
82
|
+
|
|
83
|
+
- **pngDirectoryIteratorByObjectLayerType**: Walks the file system to find all relevant asset files.
|
|
84
|
+
- **frameFactory**: The core image processing method that converts raw image data (PNG/GIF) into a grid of color indices (frame_matrix) and a global color palette (map_color).
|
|
85
|
+
- **buildImgFromTile**: Reverses the process, taking the stored frame_matrix and map_color to reconstruct and save a visual PNG.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { loggerFactory } from '../../server/logger.js';
|
|
2
|
+
import { ObjectLayerService } from './object-layer.service.js';
|
|
3
|
+
|
|
4
|
+
const logger = loggerFactory(import.meta);
|
|
5
|
+
|
|
6
|
+
const ObjectLayerController = {
|
|
7
|
+
post: async (req, res, options) => {
|
|
8
|
+
try {
|
|
9
|
+
const result = await ObjectLayerService.post(req, res, options);
|
|
10
|
+
return res.status(200).json({
|
|
11
|
+
status: 'success',
|
|
12
|
+
data: result,
|
|
13
|
+
});
|
|
14
|
+
} catch (error) {
|
|
15
|
+
logger.error(error, error.stack);
|
|
16
|
+
return res.status(400).json({
|
|
17
|
+
status: 'error',
|
|
18
|
+
message: error.message,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
get: async (req, res, options) => {
|
|
23
|
+
try {
|
|
24
|
+
const result = await ObjectLayerService.get(req, res, options);
|
|
25
|
+
return res.status(200).json({
|
|
26
|
+
status: 'success',
|
|
27
|
+
data: result,
|
|
28
|
+
});
|
|
29
|
+
} catch (error) {
|
|
30
|
+
logger.error(error, error.stack);
|
|
31
|
+
return res.status(400).json({
|
|
32
|
+
status: 'error',
|
|
33
|
+
message: error.message,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
put: async (req, res, options) => {
|
|
38
|
+
try {
|
|
39
|
+
const result = await ObjectLayerService.put(req, res, options);
|
|
40
|
+
return res.status(200).json({
|
|
41
|
+
status: 'success',
|
|
42
|
+
data: result,
|
|
43
|
+
});
|
|
44
|
+
} catch (error) {
|
|
45
|
+
logger.error(error, error.stack);
|
|
46
|
+
return res.status(400).json({
|
|
47
|
+
status: 'error',
|
|
48
|
+
message: error.message,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
delete: async (req, res, options) => {
|
|
53
|
+
try {
|
|
54
|
+
const result = await ObjectLayerService.delete(req, res, options);
|
|
55
|
+
return res.status(200).json({
|
|
56
|
+
status: 'success',
|
|
57
|
+
data: result,
|
|
58
|
+
});
|
|
59
|
+
} catch (error) {
|
|
60
|
+
logger.error(error, error.stack);
|
|
61
|
+
return res.status(400).json({
|
|
62
|
+
status: 'error',
|
|
63
|
+
message: error.message,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { ObjectLayerController };
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object layer model for managing the generation and deployment of cloud-init configuration files
|
|
3
|
+
* and associated scripts for baremetal provisioning.
|
|
4
|
+
* @module src/api/object-layer/object-layer.model.js
|
|
5
|
+
* @namespace CyberiaObjectLayerModel
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { Schema, model } from 'mongoose';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {Object} Stats
|
|
12
|
+
* @property {number} effect - The effect attribute value
|
|
13
|
+
* @property {number} resistance - The resistance attribute value
|
|
14
|
+
* @property {number} agility - The agility attribute value
|
|
15
|
+
* @property {number} range - The range attribute value
|
|
16
|
+
* @property {number} intelligence - The intelligence attribute value
|
|
17
|
+
* @property {number} utility - The utility attribute value
|
|
18
|
+
* @memberof CyberiaObjectLayerModel
|
|
19
|
+
*/
|
|
20
|
+
const StatsSchema = new Schema(
|
|
21
|
+
{
|
|
22
|
+
effect: { type: Number, required: true, min: 0 },
|
|
23
|
+
resistance: { type: Number, required: true, min: 0 },
|
|
24
|
+
agility: { type: Number, required: true, min: 0 },
|
|
25
|
+
range: { type: Number, required: true, min: 0 },
|
|
26
|
+
intelligence: { type: Number, required: true, min: 0 },
|
|
27
|
+
utility: { type: Number, required: true, min: 0 },
|
|
28
|
+
},
|
|
29
|
+
{ _id: false },
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {Object} RenderFrames
|
|
34
|
+
* @property {number[][][]} up_idle - Up idle animation frames
|
|
35
|
+
* @property {number[][][]} down_idle - Down idle animation frames
|
|
36
|
+
* @property {number[][][]} right_idle - Right idle animation frames
|
|
37
|
+
* @property {number[][][]} left_idle - Left idle animation frames
|
|
38
|
+
* @property {number[][][]} up_right_idle - Up-right idle animation frames
|
|
39
|
+
* @property {number[][][]} down_right_idle - Down-right idle animation frames
|
|
40
|
+
* @property {number[][][]} up_left_idle - Up-left idle animation frames
|
|
41
|
+
* @property {number[][][]} down_left_idle - Down-left idle animation frames
|
|
42
|
+
* @property {number[][][]} default_idle - Default idle animation frames
|
|
43
|
+
* @property {number[][][]} up_walking - Up walking animation frames
|
|
44
|
+
* @property {number[][][]} down_walking - Down walking animation frames
|
|
45
|
+
* @property {number[][][]} right_walking - Right walking animation frames
|
|
46
|
+
* @property {number[][][]} left_walking - Left walking animation frames
|
|
47
|
+
* @property {number[][][]} up_right_walking - Up-right walking animation frames
|
|
48
|
+
* @property {number[][][]} down_right_walking - Down-right walking frames
|
|
49
|
+
* @property {number[][][]} up_left_walking - Up-left walking animation frames
|
|
50
|
+
* @property {number[][][]} down_left_walking - Down-left walking frames
|
|
51
|
+
* @property {number[][][]} none_idle - None state animation frames
|
|
52
|
+
* @memberof CyberiaObjectLayerModel
|
|
53
|
+
*/
|
|
54
|
+
const RenderFramesSchema = new Schema(
|
|
55
|
+
{
|
|
56
|
+
up_idle: { type: [[[Number]]], default: [] },
|
|
57
|
+
down_idle: { type: [[[Number]]], default: [] },
|
|
58
|
+
right_idle: { type: [[[Number]]], default: [] },
|
|
59
|
+
left_idle: { type: [[[Number]]], default: [] },
|
|
60
|
+
up_right_idle: { type: [[[Number]]], default: [] },
|
|
61
|
+
down_right_idle: { type: [[[Number]]], default: [] },
|
|
62
|
+
up_left_idle: { type: [[[Number]]], default: [] },
|
|
63
|
+
down_left_idle: { type: [[[Number]]], default: [] },
|
|
64
|
+
default_idle: { type: [[[Number]]], default: [] },
|
|
65
|
+
up_walking: { type: [[[Number]]], default: [] },
|
|
66
|
+
down_walking: { type: [[[Number]]], default: [] },
|
|
67
|
+
right_walking: { type: [[[Number]]], default: [] },
|
|
68
|
+
left_walking: { type: [[[Number]]], default: [] },
|
|
69
|
+
up_right_walking: { type: [[[Number]]], default: [] },
|
|
70
|
+
down_right_walking: { type: [[[Number]]], default: [] },
|
|
71
|
+
up_left_walking: { type: [[[Number]]], default: [] },
|
|
72
|
+
down_left_walking: { type: [[[Number]]], default: [] },
|
|
73
|
+
none_idle: { type: [[[Number]]], default: [] },
|
|
74
|
+
},
|
|
75
|
+
{ _id: false },
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @typedef {Object} Render
|
|
80
|
+
* @property {RenderFrames} frames - Animation frames for different states
|
|
81
|
+
* @property {number[][]} colors - Color palette for rendering
|
|
82
|
+
* @property {number} frame_duration - Duration of each frame in milliseconds
|
|
83
|
+
* @property {boolean} is_stateless - Whether the render is stateless
|
|
84
|
+
* @memberof CyberiaObjectLayerModel
|
|
85
|
+
*/
|
|
86
|
+
const RenderSchema = new Schema(
|
|
87
|
+
{
|
|
88
|
+
frames: { type: RenderFramesSchema, required: true },
|
|
89
|
+
colors: { type: [[Number]], required: true },
|
|
90
|
+
frame_duration: { type: Number, required: true, min: 0 },
|
|
91
|
+
is_stateless: { type: Boolean, default: false },
|
|
92
|
+
},
|
|
93
|
+
{ _id: false },
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @typedef {Object} Item
|
|
98
|
+
* @property {string} id - Unique identifier for the item
|
|
99
|
+
* @property {string} type - Type of the item
|
|
100
|
+
* @property {string} description - Description of the item
|
|
101
|
+
* @property {boolean} activable - Whether the item can be activated
|
|
102
|
+
* @memberof CyberiaObjectLayerModel
|
|
103
|
+
*/
|
|
104
|
+
const ItemSchema = new Schema(
|
|
105
|
+
{
|
|
106
|
+
id: { type: String, required: true, trim: true },
|
|
107
|
+
type: { type: String, required: true, trim: true },
|
|
108
|
+
description: { type: String, default: '', trim: true },
|
|
109
|
+
activable: { type: Boolean, default: false },
|
|
110
|
+
},
|
|
111
|
+
{ _id: false },
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @typedef {Object} ObjectLayer
|
|
116
|
+
* @property {Object} data - Object layer data
|
|
117
|
+
* @property {Data.Stats} data.stats - Statistical attributes of the object layer
|
|
118
|
+
* @property {Data.Render} data.render - Rendering information and animations
|
|
119
|
+
* @property {Data.Item} data.item - Item information this layer represents
|
|
120
|
+
* @property {string} sha256 - SHA-256 hash of the object layer data
|
|
121
|
+
* @property {Date} createdAt - When the document was created
|
|
122
|
+
* @property {Date} updatedAt - When the document was last updated
|
|
123
|
+
* @memberof CyberiaObjectLayerModel
|
|
124
|
+
*/
|
|
125
|
+
const ObjectLayerSchema = new Schema(
|
|
126
|
+
{
|
|
127
|
+
data: {
|
|
128
|
+
stats: { type: StatsSchema, required: true },
|
|
129
|
+
render: { type: RenderSchema, required: true },
|
|
130
|
+
item: { type: ItemSchema, required: true },
|
|
131
|
+
},
|
|
132
|
+
sha256: {
|
|
133
|
+
type: String,
|
|
134
|
+
required: true,
|
|
135
|
+
unique: true,
|
|
136
|
+
match: [/^[a-f0-9]{64}$/, 'Please provide a valid SHA-256 hash'],
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
timestamps: true,
|
|
141
|
+
toJSON: { virtuals: true },
|
|
142
|
+
toObject: { virtuals: true },
|
|
143
|
+
},
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
// Index for faster querying
|
|
147
|
+
ObjectLayerSchema.index({ 'data.item.id': 1 });
|
|
148
|
+
ObjectLayerSchema.index({ 'data.item.type': 1 });
|
|
149
|
+
ObjectLayerSchema.index({ sha256: 1 }, { unique: true });
|
|
150
|
+
|
|
151
|
+
// Add text index for searchable fields
|
|
152
|
+
ObjectLayerSchema.index(
|
|
153
|
+
{
|
|
154
|
+
'data.item.id': 'text',
|
|
155
|
+
'data.item.type': 'text',
|
|
156
|
+
'data.item.description': 'text',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
weights: {
|
|
160
|
+
'data.item.id': 10,
|
|
161
|
+
'data.item.type': 5,
|
|
162
|
+
'data.item.description': 1,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
// Pre-save hook to ensure data consistency
|
|
168
|
+
ObjectLayerSchema.pre('save', function (next) {
|
|
169
|
+
// Ensure all required fields are present
|
|
170
|
+
if (!this.data.stats || !this.data.render || !this.data.item || !this.sha256) {
|
|
171
|
+
throw new Error('Missing required fields');
|
|
172
|
+
}
|
|
173
|
+
next();
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Create and export the model
|
|
177
|
+
const ObjectLayerModel = model('ObjectLayer', ObjectLayerSchema);
|
|
178
|
+
|
|
179
|
+
const ProviderSchema = ObjectLayerSchema;
|
|
180
|
+
|
|
181
|
+
export { ObjectLayerSchema, ObjectLayerModel, ProviderSchema };
|