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.
Files changed (525) hide show
  1. package/.dockerignore +15 -0
  2. package/.env.development +45 -0
  3. package/.env.production +50 -0
  4. package/.env.test +45 -0
  5. package/.github/workflows/engine-cyberia.cd.yml +31 -0
  6. package/.github/workflows/engine-cyberia.ci.yml +60 -0
  7. package/.github/workflows/ghpkg.ci.yml +87 -0
  8. package/.github/workflows/npmpkg.ci.yml +72 -0
  9. package/.github/workflows/publish.ci.yml +84 -0
  10. package/.github/workflows/publish.cyberia.ci.yml +84 -0
  11. package/.github/workflows/pwa-microservices-template-page.cd.yml +72 -0
  12. package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
  13. package/.github/workflows/release.cd.yml +37 -0
  14. package/.nycrc +9 -0
  15. package/.prettierignore +13 -0
  16. package/.prettierrc +9 -0
  17. package/.vscode/extensions.json +51 -0
  18. package/.vscode/settings.json +87 -0
  19. package/AUTHORS.md +21 -0
  20. package/CHANGELOG.md +205 -0
  21. package/Dockerfile +28 -0
  22. package/LICENSE +21 -0
  23. package/README.md +85 -0
  24. package/bin/build.js +209 -0
  25. package/bin/cron.js +47 -0
  26. package/bin/cyberia.js +145 -0
  27. package/bin/db.js +199 -0
  28. package/bin/deploy.js +1293 -0
  29. package/bin/file.js +197 -0
  30. package/bin/hwt.js +49 -0
  31. package/bin/index.js +145 -0
  32. package/bin/ssl.js +63 -0
  33. package/bin/util.js +80 -0
  34. package/bin/vs.js +74 -0
  35. package/cli.md +714 -0
  36. package/conf.js +204 -0
  37. package/deployment.yaml +138 -0
  38. package/jsconfig.json +7 -0
  39. package/jsdoc.json +32 -0
  40. package/manifests/deployment/adminer/deployment.yaml +32 -0
  41. package/manifests/deployment/adminer/kustomization.yaml +7 -0
  42. package/manifests/deployment/adminer/service.yaml +13 -0
  43. package/manifests/deployment/dd-default-development/deployment.yaml +167 -0
  44. package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
  45. package/manifests/deployment/dd-test-development/deployment.yaml +174 -0
  46. package/manifests/deployment/dd-test-development/proxy.yaml +51 -0
  47. package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
  48. package/manifests/deployment/fastapi/backend-service.yml +19 -0
  49. package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
  50. package/manifests/deployment/fastapi/frontend-service.yml +15 -0
  51. package/manifests/deployment/fastapi/initial_data.sh +56 -0
  52. package/manifests/deployment/kafka/deployment.yaml +69 -0
  53. package/manifests/deployment/mongo-express/deployment.yaml +60 -0
  54. package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
  55. package/manifests/deployment/spark/spark-pi-py.yaml +21 -0
  56. package/manifests/deployment/tensorflow/tf-gpu-test.yaml +65 -0
  57. package/manifests/envoy-service-nodeport.yaml +23 -0
  58. package/manifests/grafana/deployment.yaml +57 -0
  59. package/manifests/grafana/kustomization.yaml +7 -0
  60. package/manifests/grafana/pvc.yaml +12 -0
  61. package/manifests/grafana/service.yaml +14 -0
  62. package/manifests/kind-config-dev.yaml +12 -0
  63. package/manifests/kind-config.yaml +12 -0
  64. package/manifests/kubeadm-calico-config.yaml +119 -0
  65. package/manifests/kubelet-config.yaml +65 -0
  66. package/manifests/letsencrypt-prod.yaml +15 -0
  67. package/manifests/lxd/lxd-admin-profile.yaml +17 -0
  68. package/manifests/lxd/lxd-preseed.yaml +30 -0
  69. package/manifests/lxd/underpost-setup.sh +163 -0
  70. package/manifests/mariadb/config.yaml +10 -0
  71. package/manifests/mariadb/kustomization.yaml +9 -0
  72. package/manifests/mariadb/pv.yaml +12 -0
  73. package/manifests/mariadb/pvc.yaml +10 -0
  74. package/manifests/mariadb/secret.yaml +8 -0
  75. package/manifests/mariadb/service.yaml +10 -0
  76. package/manifests/mariadb/statefulset.yaml +56 -0
  77. package/manifests/mariadb/storage-class.yaml +10 -0
  78. package/manifests/mongodb/backup-access.yaml +16 -0
  79. package/manifests/mongodb/backup-cronjob.yaml +42 -0
  80. package/manifests/mongodb/backup-pv-pvc.yaml +22 -0
  81. package/manifests/mongodb/configmap.yaml +26 -0
  82. package/manifests/mongodb/headless-service.yaml +10 -0
  83. package/manifests/mongodb/kustomization.yaml +11 -0
  84. package/manifests/mongodb/pv-pvc.yaml +23 -0
  85. package/manifests/mongodb/statefulset.yaml +126 -0
  86. package/manifests/mongodb/storage-class.yaml +9 -0
  87. package/manifests/mongodb-4.4/kustomization.yaml +7 -0
  88. package/manifests/mongodb-4.4/pv-pvc.yaml +23 -0
  89. package/manifests/mongodb-4.4/service-deployment.yaml +63 -0
  90. package/manifests/mysql/kustomization.yaml +7 -0
  91. package/manifests/mysql/pv-pvc.yaml +27 -0
  92. package/manifests/mysql/statefulset.yaml +55 -0
  93. package/manifests/postgresql/configmap.yaml +9 -0
  94. package/manifests/postgresql/kustomization.yaml +10 -0
  95. package/manifests/postgresql/pv.yaml +15 -0
  96. package/manifests/postgresql/pvc.yaml +13 -0
  97. package/manifests/postgresql/service.yaml +10 -0
  98. package/manifests/postgresql/statefulset.yaml +37 -0
  99. package/manifests/prometheus/deployment.yaml +82 -0
  100. package/manifests/valkey/kustomization.yaml +7 -0
  101. package/manifests/valkey/service.yaml +11 -0
  102. package/manifests/valkey/statefulset.yaml +38 -0
  103. package/nodemon.json +6 -0
  104. package/package.json +118 -0
  105. package/proxy.yaml +35 -0
  106. package/scripts/device-scan.sh +43 -0
  107. package/scripts/gpu-diag.sh +19 -0
  108. package/scripts/maas-setup.sh +120 -0
  109. package/scripts/nat-iptables.sh +26 -0
  110. package/scripts/nvim.sh +91 -0
  111. package/scripts/snap-clean.sh +26 -0
  112. package/scripts/ssh-cluster-info.sh +14 -0
  113. package/scripts/ssl.sh +164 -0
  114. package/src/api/blockchain/blockchain.controller.js +51 -0
  115. package/src/api/blockchain/blockchain.model.js +90 -0
  116. package/src/api/blockchain/blockchain.router.js +21 -0
  117. package/src/api/blockchain/blockchain.service.js +24 -0
  118. package/src/api/core/core.controller.js +69 -0
  119. package/src/api/core/core.model.js +11 -0
  120. package/src/api/core/core.router.js +24 -0
  121. package/src/api/core/core.service.js +35 -0
  122. package/src/api/crypto/crypto.controller.js +51 -0
  123. package/src/api/crypto/crypto.model.js +23 -0
  124. package/src/api/crypto/crypto.router.js +20 -0
  125. package/src/api/crypto/crypto.service.js +64 -0
  126. package/src/api/default/default.controller.js +74 -0
  127. package/src/api/default/default.model.js +20 -0
  128. package/src/api/default/default.router.js +27 -0
  129. package/src/api/default/default.service.js +40 -0
  130. package/src/api/document/document.controller.js +66 -0
  131. package/src/api/document/document.model.js +51 -0
  132. package/src/api/document/document.router.js +24 -0
  133. package/src/api/document/document.service.js +133 -0
  134. package/src/api/file/file.controller.js +67 -0
  135. package/src/api/file/file.model.js +19 -0
  136. package/src/api/file/file.router.js +22 -0
  137. package/src/api/file/file.service.js +100 -0
  138. package/src/api/instance/instance.controller.js +69 -0
  139. package/src/api/instance/instance.model.js +40 -0
  140. package/src/api/instance/instance.router.js +34 -0
  141. package/src/api/instance/instance.service.js +70 -0
  142. package/src/api/ipfs/ipfs.controller.js +51 -0
  143. package/src/api/ipfs/ipfs.model.js +17 -0
  144. package/src/api/ipfs/ipfs.router.js +20 -0
  145. package/src/api/ipfs/ipfs.service.js +25 -0
  146. package/src/api/object-layer/README.md +85 -0
  147. package/src/api/object-layer/object-layer.controller.js +69 -0
  148. package/src/api/object-layer/object-layer.model.js +181 -0
  149. package/src/api/object-layer/object-layer.router.js +29 -0
  150. package/src/api/object-layer/object-layer.service.js +49 -0
  151. package/src/api/test/test.controller.js +59 -0
  152. package/src/api/test/test.model.js +14 -0
  153. package/src/api/test/test.router.js +21 -0
  154. package/src/api/test/test.service.js +35 -0
  155. package/src/api/user/postman_collection.json +216 -0
  156. package/src/api/user/user.build.js +16 -0
  157. package/src/api/user/user.controller.js +35 -0
  158. package/src/api/user/user.model.js +100 -0
  159. package/src/api/user/user.router.js +400 -0
  160. package/src/api/user/user.service.js +500 -0
  161. package/src/api.js +23 -0
  162. package/src/cli/baremetal.js +1310 -0
  163. package/src/cli/cloud-init.js +548 -0
  164. package/src/cli/cluster.js +834 -0
  165. package/src/cli/cron.js +95 -0
  166. package/src/cli/db.js +414 -0
  167. package/src/cli/deploy.js +661 -0
  168. package/src/cli/env.js +101 -0
  169. package/src/cli/fs.js +256 -0
  170. package/src/cli/image.js +156 -0
  171. package/src/cli/index.js +436 -0
  172. package/src/cli/lxd.js +402 -0
  173. package/src/cli/monitor.js +260 -0
  174. package/src/cli/repository.js +274 -0
  175. package/src/cli/run.js +728 -0
  176. package/src/cli/script.js +85 -0
  177. package/src/cli/secrets.js +71 -0
  178. package/src/cli/ssh.js +46 -0
  179. package/src/cli/test.js +159 -0
  180. package/src/client/Cyberia.index.js +50 -0
  181. package/src/client/CyberiaAdmin.index.js +34 -0
  182. package/src/client/CyberiaPortal.index.js +36 -0
  183. package/src/client/Default.index.js +84 -0
  184. package/src/client/components/core/404.js +20 -0
  185. package/src/client/components/core/500.js +20 -0
  186. package/src/client/components/core/Account.js +326 -0
  187. package/src/client/components/core/AgGrid.js +191 -0
  188. package/src/client/components/core/Alert.js +77 -0
  189. package/src/client/components/core/Auth.js +342 -0
  190. package/src/client/components/core/Badge.js +32 -0
  191. package/src/client/components/core/Blockchain.js +41 -0
  192. package/src/client/components/core/Blog.js +9 -0
  193. package/src/client/components/core/BtnIcon.js +111 -0
  194. package/src/client/components/core/CalendarCore.js +464 -0
  195. package/src/client/components/core/Chat.js +64 -0
  196. package/src/client/components/core/ColorPalette.js +5267 -0
  197. package/src/client/components/core/CommonJs.js +1010 -0
  198. package/src/client/components/core/Content.js +196 -0
  199. package/src/client/components/core/Css.js +1099 -0
  200. package/src/client/components/core/CssCore.js +882 -0
  201. package/src/client/components/core/D3Chart.js +44 -0
  202. package/src/client/components/core/Docs.js +376 -0
  203. package/src/client/components/core/DropDown.js +223 -0
  204. package/src/client/components/core/EventsUI.js +133 -0
  205. package/src/client/components/core/FileExplorer.js +707 -0
  206. package/src/client/components/core/FullScreen.js +36 -0
  207. package/src/client/components/core/Input.js +383 -0
  208. package/src/client/components/core/JoyStick.js +80 -0
  209. package/src/client/components/core/Keyboard.js +73 -0
  210. package/src/client/components/core/LoadingAnimation.js +159 -0
  211. package/src/client/components/core/LogIn.js +190 -0
  212. package/src/client/components/core/LogOut.js +63 -0
  213. package/src/client/components/core/Logger.js +29 -0
  214. package/src/client/components/core/Modal.js +2494 -0
  215. package/src/client/components/core/NotificationManager.js +84 -0
  216. package/src/client/components/core/ObjectLayerEngine.js +1229 -0
  217. package/src/client/components/core/ObjectLayerEngineModal.js +443 -0
  218. package/src/client/components/core/Pagination.js +207 -0
  219. package/src/client/components/core/Panel.js +772 -0
  220. package/src/client/components/core/PanelForm.js +627 -0
  221. package/src/client/components/core/Polyhedron.js +162 -0
  222. package/src/client/components/core/Recover.js +207 -0
  223. package/src/client/components/core/Responsive.js +82 -0
  224. package/src/client/components/core/RichText.js +43 -0
  225. package/src/client/components/core/Router.js +317 -0
  226. package/src/client/components/core/Scroll.js +76 -0
  227. package/src/client/components/core/SignUp.js +125 -0
  228. package/src/client/components/core/SocketIo.js +74 -0
  229. package/src/client/components/core/Stream.js +113 -0
  230. package/src/client/components/core/ToggleSwitch.js +101 -0
  231. package/src/client/components/core/ToolTip.js +90 -0
  232. package/src/client/components/core/Translate.js +522 -0
  233. package/src/client/components/core/Validator.js +115 -0
  234. package/src/client/components/core/VanillaJs.js +423 -0
  235. package/src/client/components/core/Wallet.js +106 -0
  236. package/src/client/components/core/WebComponent.js +44 -0
  237. package/src/client/components/core/Webhook.js +25 -0
  238. package/src/client/components/core/Worker.js +371 -0
  239. package/src/client/components/core/windowGetDimensions.js +269 -0
  240. package/src/client/components/cyberia/BagCyberia.js +1253 -0
  241. package/src/client/components/cyberia/BiomeCyberia.js +130 -0
  242. package/src/client/components/cyberia/CharacterCyberia.js +321 -0
  243. package/src/client/components/cyberia/CommonCyberia.js +1834 -0
  244. package/src/client/components/cyberia/CssCyberia.js +816 -0
  245. package/src/client/components/cyberia/ElementPreviewCyberia.js +183 -0
  246. package/src/client/components/cyberia/ElementsCyberia.js +146 -0
  247. package/src/client/components/cyberia/InteractionPanelCyberia.js +1043 -0
  248. package/src/client/components/cyberia/JoyStickCyberia.js +53 -0
  249. package/src/client/components/cyberia/LogInCyberia.js +68 -0
  250. package/src/client/components/cyberia/LogOutCyberia.js +24 -0
  251. package/src/client/components/cyberia/MainUserCyberia.js +424 -0
  252. package/src/client/components/cyberia/MapCyberia.js +160 -0
  253. package/src/client/components/cyberia/MatrixCyberia.js +147 -0
  254. package/src/client/components/cyberia/MenuCyberia.js +575 -0
  255. package/src/client/components/cyberia/PixiCyberia.js +1639 -0
  256. package/src/client/components/cyberia/PointAndClickMovementCyberia.js +146 -0
  257. package/src/client/components/cyberia/QuestCyberia.js +1420 -0
  258. package/src/client/components/cyberia/RoutesCyberia.js +47 -0
  259. package/src/client/components/cyberia/SettingsCyberia.js +16 -0
  260. package/src/client/components/cyberia/SignUpCyberia.js +14 -0
  261. package/src/client/components/cyberia/SkillCyberia.js +124 -0
  262. package/src/client/components/cyberia/SocketIoCyberia.js +211 -0
  263. package/src/client/components/cyberia/TileCyberia.js +685 -0
  264. package/src/client/components/cyberia/TranslateCyberia.js +96 -0
  265. package/src/client/components/cyberia/UniverseCyberia.js +14 -0
  266. package/src/client/components/cyberia/WebhookCyberia.js +13 -0
  267. package/src/client/components/cyberia/WikiCyberia.js +144 -0
  268. package/src/client/components/cyberia/WorldCyberia.js +680 -0
  269. package/src/client/components/cyberia-admin/BiomeCyberiaAdmin.js +978 -0
  270. package/src/client/components/cyberia-admin/CommonCyberiaAdmin.js +29 -0
  271. package/src/client/components/cyberia-admin/CssCyberiaAdmin.js +15 -0
  272. package/src/client/components/cyberia-admin/ElementsCyberiaAdmin.js +38 -0
  273. package/src/client/components/cyberia-admin/InstanceEngineCyberiaAdmin.js +180 -0
  274. package/src/client/components/cyberia-admin/LogInCyberiaAdmin.js +34 -0
  275. package/src/client/components/cyberia-admin/LogOutCyberiaAdmin.js +24 -0
  276. package/src/client/components/cyberia-admin/MenuCyberiaAdmin.js +660 -0
  277. package/src/client/components/cyberia-admin/RoutesCyberiaAdmin.js +57 -0
  278. package/src/client/components/cyberia-admin/ServerCyberiaAdmin.js +129 -0
  279. package/src/client/components/cyberia-admin/SettingsCyberiaAdmin.js +16 -0
  280. package/src/client/components/cyberia-admin/SignUpCyberiaAdmin.js +11 -0
  281. package/src/client/components/cyberia-admin/SocketIoCyberiaAdmin.js +53 -0
  282. package/src/client/components/cyberia-admin/TranslateCyberiaAdmin.js +7 -0
  283. package/src/client/components/cyberia-biome/CityCyberiaBiome.js +209 -0
  284. package/src/client/components/cyberia-biome/CityInteriorCyberiaBiome.js +253 -0
  285. package/src/client/components/cyberia-biome/ColorChaosCyberiaBiome.js +26 -0
  286. package/src/client/components/cyberia-biome/ForestCyberiaBiome.js +191 -0
  287. package/src/client/components/cyberia-biome/GridBaseCyberiaBiome.js +364 -0
  288. package/src/client/components/cyberia-biome/SeedCityCyberiaBiome.js +347 -0
  289. package/src/client/components/cyberia-biome/ShopCyberiaBiome.js +12 -0
  290. package/src/client/components/cyberia-biome/SpaceCyberiaBiome.js +58 -0
  291. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +29 -0
  292. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +132 -0
  293. package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +38 -0
  294. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +18 -0
  295. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +12 -0
  296. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +487 -0
  297. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +45 -0
  298. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +136 -0
  299. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
  300. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +11 -0
  301. package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +52 -0
  302. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +12 -0
  303. package/src/client/components/default/CommonDefault.js +29 -0
  304. package/src/client/components/default/CssDefault.js +27 -0
  305. package/src/client/components/default/ElementsDefault.js +38 -0
  306. package/src/client/components/default/LogInDefault.js +14 -0
  307. package/src/client/components/default/LogOutDefault.js +10 -0
  308. package/src/client/components/default/MenuDefault.js +743 -0
  309. package/src/client/components/default/RoutesDefault.js +48 -0
  310. package/src/client/components/default/SettingsDefault.js +16 -0
  311. package/src/client/components/default/SignUpDefault.js +9 -0
  312. package/src/client/components/default/SocketIoDefault.js +54 -0
  313. package/src/client/components/default/TranslateDefault.js +7 -0
  314. package/src/client/public/default/android-chrome-144x144.png +0 -0
  315. package/src/client/public/default/android-chrome-192x192.png +0 -0
  316. package/src/client/public/default/android-chrome-256x256.png +0 -0
  317. package/src/client/public/default/android-chrome-36x36.png +0 -0
  318. package/src/client/public/default/android-chrome-384x384.png +0 -0
  319. package/src/client/public/default/android-chrome-48x48.png +0 -0
  320. package/src/client/public/default/android-chrome-512x512.png +0 -0
  321. package/src/client/public/default/android-chrome-72x72.png +0 -0
  322. package/src/client/public/default/android-chrome-96x96.png +0 -0
  323. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  324. package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
  325. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  326. package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
  327. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  328. package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
  329. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  330. package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
  331. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  332. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  333. package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
  334. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  335. package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
  336. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  337. package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
  338. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  339. package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
  340. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  341. package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
  342. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  343. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  344. package/src/client/public/default/apple-touch-icon.png +0 -0
  345. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  346. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  347. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  348. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  349. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  350. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  351. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  352. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  353. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  354. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  355. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  356. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  357. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  358. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  359. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  360. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  361. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  362. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  363. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  364. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  365. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  366. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  367. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  368. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  369. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  370. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  371. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  372. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  373. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  374. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  375. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  376. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  377. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  378. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  379. package/src/client/public/default/assets/background/dark.jpg +0 -0
  380. package/src/client/public/default/assets/background/dark.svg +557 -0
  381. package/src/client/public/default/assets/background/white.jpg +0 -0
  382. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  383. package/src/client/public/default/assets/background/white0.jpg +0 -0
  384. package/src/client/public/default/assets/logo/base-icon.png +0 -0
  385. package/src/client/public/default/assets/logo/underpost.gif +0 -0
  386. package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
  387. package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
  388. package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
  389. package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
  390. package/src/client/public/default/browserconfig.xml +12 -0
  391. package/src/client/public/default/favicon-16x16.png +0 -0
  392. package/src/client/public/default/favicon-32x32.png +0 -0
  393. package/src/client/public/default/favicon-48x48.png +0 -0
  394. package/src/client/public/default/favicon.ico +0 -0
  395. package/src/client/public/default/manifest.webmanifest +69 -0
  396. package/src/client/public/default/mstile-144x144.png +0 -0
  397. package/src/client/public/default/mstile-150x150.png +0 -0
  398. package/src/client/public/default/mstile-310x150.png +0 -0
  399. package/src/client/public/default/mstile-310x310.png +0 -0
  400. package/src/client/public/default/mstile-70x70.png +0 -0
  401. package/src/client/public/default/plantuml/client-conf.svg +1 -0
  402. package/src/client/public/default/plantuml/client-schema.svg +1 -0
  403. package/src/client/public/default/plantuml/cron-conf.svg +1 -0
  404. package/src/client/public/default/plantuml/cron-schema.svg +1 -0
  405. package/src/client/public/default/plantuml/server-conf.svg +1 -0
  406. package/src/client/public/default/plantuml/server-schema.svg +1 -0
  407. package/src/client/public/default/plantuml/ssr-conf.svg +1 -0
  408. package/src/client/public/default/plantuml/ssr-schema.svg +1 -0
  409. package/src/client/public/default/safari-pinned-tab.svg +24 -0
  410. package/src/client/public/default/site.webmanifest +69 -0
  411. package/src/client/public/default/sitemap +148 -0
  412. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  413. package/src/client/public/default/yandex-browser-manifest.json +9 -0
  414. package/src/client/public/doc/favicon.ico +0 -0
  415. package/src/client/public/doc/sitemap +148 -0
  416. package/src/client/public/test/favicon.ico +0 -0
  417. package/src/client/public/test/sitemap +148 -0
  418. package/src/client/services/blockchain/blockchain.service.js +73 -0
  419. package/src/client/services/core/core.service.js +165 -0
  420. package/src/client/services/crypto/crypto.service.js +73 -0
  421. package/src/client/services/default/default.management.js +450 -0
  422. package/src/client/services/default/default.service.js +98 -0
  423. package/src/client/services/document/document.service.js +97 -0
  424. package/src/client/services/file/file.service.js +72 -0
  425. package/src/client/services/instance/instance.management.js +78 -0
  426. package/src/client/services/instance/instance.service.js +97 -0
  427. package/src/client/services/ipfs/ipfs.service.js +73 -0
  428. package/src/client/services/object-layer/object-layer.service.js +93 -0
  429. package/src/client/services/test/test.service.js +73 -0
  430. package/src/client/services/user/user.management.js +56 -0
  431. package/src/client/services/user/user.service.js +108 -0
  432. package/src/client/ssr/Render.js +237 -0
  433. package/src/client/ssr/body/404.js +73 -0
  434. package/src/client/ssr/body/500.js +72 -0
  435. package/src/client/ssr/body/CacheControl.js +114 -0
  436. package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +90 -0
  437. package/src/client/ssr/body/CyberiaSplashScreenLore.js +424 -0
  438. package/src/client/ssr/body/DefaultSplashScreen.js +90 -0
  439. package/src/client/ssr/email/DefaultRecoverEmail.js +21 -0
  440. package/src/client/ssr/email/DefaultVerifyEmail.js +17 -0
  441. package/src/client/ssr/head/Css.js +241 -0
  442. package/src/client/ssr/head/CyberiaAdminScripts.js +6 -0
  443. package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
  444. package/src/client/ssr/head/CyberiaScripts.js +6 -0
  445. package/src/client/ssr/head/DefaultScripts.js +6 -0
  446. package/src/client/ssr/head/Microdata.js +11 -0
  447. package/src/client/ssr/head/Production.js +1 -0
  448. package/src/client/ssr/head/Pwa.js +146 -0
  449. package/src/client/ssr/head/Seo.js +15 -0
  450. package/src/client/ssr/mailer/DefaultRecoverEmail.js +21 -0
  451. package/src/client/ssr/mailer/DefaultVerifyEmail.js +17 -0
  452. package/src/client/ssr/offline/Maintenance.js +63 -0
  453. package/src/client/ssr/offline/NoNetworkConnection.js +67 -0
  454. package/src/client/ssr/pages/404.js +12 -0
  455. package/src/client/ssr/pages/500.js +12 -0
  456. package/src/client/ssr/pages/Test.js +198 -0
  457. package/src/client/ssr/pages/maintenance.js +14 -0
  458. package/src/client/ssr/pages/offline.js +21 -0
  459. package/src/client/sw/default.sw.js +108 -0
  460. package/src/client/sw/template.sw.js +84 -0
  461. package/src/client.build.js +22 -0
  462. package/src/client.dev.js +24 -0
  463. package/src/db/DataBaseProvider.js +98 -0
  464. package/src/db/mariadb/MariaDB.js +66 -0
  465. package/src/db/mongo/MongooseDB.js +70 -0
  466. package/src/index.js +198 -0
  467. package/src/mailer/EmailRender.js +116 -0
  468. package/src/mailer/MailerProvider.js +213 -0
  469. package/src/monitor.js +24 -0
  470. package/src/proxy.js +22 -0
  471. package/src/runtime/express/Express.js +256 -0
  472. package/src/runtime/lampp/Dockerfile +50 -0
  473. package/src/runtime/lampp/Lampp.js +343 -0
  474. package/src/server/auth.js +689 -0
  475. package/src/server/backup.js +96 -0
  476. package/src/server/client-build-docs.js +205 -0
  477. package/src/server/client-build-live.js +109 -0
  478. package/src/server/client-build.js +690 -0
  479. package/src/server/client-dev-server.js +87 -0
  480. package/src/server/client-formatted.js +87 -0
  481. package/src/server/client-icons.js +108 -0
  482. package/src/server/conf.js +1071 -0
  483. package/src/server/crypto.js +210 -0
  484. package/src/server/dns.js +276 -0
  485. package/src/server/downloader.js +74 -0
  486. package/src/server/json-schema.js +77 -0
  487. package/src/server/logger.js +197 -0
  488. package/src/server/network.js +72 -0
  489. package/src/server/object-layer.js +294 -0
  490. package/src/server/peer.js +69 -0
  491. package/src/server/process.js +171 -0
  492. package/src/server/proxy.js +110 -0
  493. package/src/server/runtime.js +170 -0
  494. package/src/server/ssr.js +127 -0
  495. package/src/server/start.js +161 -0
  496. package/src/server/tls.js +251 -0
  497. package/src/server/valkey.js +293 -0
  498. package/src/server.js +25 -0
  499. package/src/ws/IoInterface.js +139 -0
  500. package/src/ws/IoServer.js +88 -0
  501. package/src/ws/core/channels/core.ws.chat.js +23 -0
  502. package/src/ws/core/channels/core.ws.mailer.js +35 -0
  503. package/src/ws/core/channels/core.ws.stream.js +31 -0
  504. package/src/ws/core/core.ws.connection.js +62 -0
  505. package/src/ws/core/core.ws.emit.js +53 -0
  506. package/src/ws/core/core.ws.server.js +76 -0
  507. package/src/ws/core/management/core.ws.chat.js +8 -0
  508. package/src/ws/core/management/core.ws.mailer.js +16 -0
  509. package/src/ws/core/management/core.ws.stream.js +8 -0
  510. package/src/ws/cyberia/channels/cyberia.ws.bot.js +56 -0
  511. package/src/ws/cyberia/channels/cyberia.ws.skill.js +51 -0
  512. package/src/ws/cyberia/channels/cyberia.ws.user.js +437 -0
  513. package/src/ws/cyberia/cyberia.ws.connection.js +36 -0
  514. package/src/ws/cyberia/cyberia.ws.emit.js +14 -0
  515. package/src/ws/cyberia/cyberia.ws.server.js +67 -0
  516. package/src/ws/cyberia/management/cyberia.ws.bot.js +669 -0
  517. package/src/ws/cyberia/management/cyberia.ws.skill.js +441 -0
  518. package/src/ws/cyberia/management/cyberia.ws.user.js +188 -0
  519. package/src/ws/default/channels/default.ws.main.js +16 -0
  520. package/src/ws/default/default.ws.connection.js +22 -0
  521. package/src/ws/default/default.ws.emit.js +14 -0
  522. package/src/ws/default/default.ws.server.js +20 -0
  523. package/src/ws/default/management/default.ws.main.js +8 -0
  524. package/test/api.test.js +53 -0
  525. package/test/crypto.test.js +117 -0
@@ -0,0 +1,680 @@
1
+ import { CyberiaBiomeService } from '../../services/cyberia-biome/cyberia-biome.service.js';
2
+ import { CyberiaInstanceService } from '../../services/cyberia-instance/cyberia-instance.service.js';
3
+ import { CyberiaWorldService } from '../../services/cyberia-world/cyberia-world.service.js';
4
+ import { FileService } from '../../services/file/file.service.js';
5
+ import { AgGrid } from '../core/AgGrid.js';
6
+ import { BtnIcon } from '../core/BtnIcon.js';
7
+ import { newInstance, random, range } from '../core/CommonJs.js';
8
+ import { borderChar, darkTheme, dynamicCol } from '../core/Css.js';
9
+ import { DropDown } from '../core/DropDown.js';
10
+ import { EventsUI } from '../core/EventsUI.js';
11
+ import { Input } from '../core/Input.js';
12
+ import { LoadingAnimation } from '../core/LoadingAnimation.js';
13
+ import { loggerFactory } from '../core/Logger.js';
14
+ import { NotificationManager } from '../core/NotificationManager.js';
15
+ import { Polyhedron } from '../core/Polyhedron.js';
16
+ import { SocketIo } from '../core/SocketIo.js';
17
+ import { Translate } from '../core/Translate.js';
18
+ import { append, htmls, s } from '../core/VanillaJs.js';
19
+ import { BiomeCyberiaScope, BiomeCyberiaManagement } from './BiomeCyberia.js';
20
+ import { CyberiaParams, WorldCyberiaLimit, WorldCyberiaType } from './CommonCyberia.js';
21
+ import { ElementsCyberia } from './ElementsCyberia.js';
22
+ import { InteractionPanelCyberia } from './InteractionPanelCyberia.js';
23
+ import { MatrixCyberia } from './MatrixCyberia.js';
24
+ import { PixiCyberia } from './PixiCyberia.js';
25
+ import { PointAndClickMovementCyberia } from './PointAndClickMovementCyberia.js';
26
+ import { createJSONEditor } from 'vanilla-jsoneditor';
27
+
28
+ const logger = loggerFactory(import.meta);
29
+
30
+ const getWorldId = (params) => `world-${params.data._id}`;
31
+
32
+ class LoadWorldCyberiaRenderer {
33
+ eGui;
34
+
35
+ async init(params) {
36
+ console.log('LoadWorldCyberiaRenderer created', params);
37
+ const rowId = getWorldId(params);
38
+
39
+ this.eGui = document.createElement('div');
40
+ this.eGui.innerHTML = html`
41
+ ${await BtnIcon.Render({
42
+ class: `in ag-btn-renderer btn-load-world-${rowId}`,
43
+ label: html`<i class="fa-solid fa-bolt"></i><br />
44
+ ${Translate.Render(`load`)}`,
45
+ })}
46
+ ${await BtnIcon.Render({
47
+ class: `in ag-btn-renderer btn-delete-world-${rowId}`,
48
+ label: html`<i class="fa-solid fa-circle-xmark"></i> <br />
49
+ ${Translate.Render(`delete`)}`,
50
+ })}
51
+ `;
52
+
53
+ setTimeout(() => {
54
+ EventsUI.onClick(`.btn-load-world-${rowId}`, async () => {
55
+ WorldCyberia.WorldCyberiaScope = {
56
+ ...WorldCyberia.WorldCyberiaScope,
57
+ ...newInstance(WorldCyberia.worlds.find((w) => w._id === params.data._id)),
58
+ };
59
+ for (const index of range(0, 5)) {
60
+ if (WorldCyberia.WorldCyberiaScope.face[index])
61
+ s(`.dropdown-option-face-${index}-${WorldCyberia.WorldCyberiaScope.face[index]._id}`).click();
62
+ else s(`.dropdown-option-face-${index}-reset`).click();
63
+ if (
64
+ WorldCyberia.WorldCyberiaScope.instance &&
65
+ WorldCyberia.WorldCyberiaScope.instance[index] &&
66
+ s(`.dropdown-option-instance-${index}-${WorldCyberia.WorldCyberiaScope.instance[index]._id}`)
67
+ )
68
+ s(`.dropdown-option-instance-${index}-${WorldCyberia.WorldCyberiaScope.instance[index]._id}`).click();
69
+ else s(`.dropdown-option-instance-${index}-reset`).click();
70
+ }
71
+ s(`.world-name`).value = WorldCyberia.WorldCyberiaScope.name;
72
+ if (s(`.dropdown-option-${WorldCyberia.WorldCyberiaScope.type}`))
73
+ s(`.dropdown-option-${WorldCyberia.WorldCyberiaScope.type}`).click();
74
+ if (params.data.adjacentFace) {
75
+ WorldCyberia.adjacentFaceJsonEditor.content.json = params.data.adjacentFace;
76
+ WorldCyberia.adjacentFaceJsonEditor.newInstance();
77
+ }
78
+ if (params.data.quests) {
79
+ WorldCyberia.questsJsonEditor.content.json = params.data.quests;
80
+ WorldCyberia.questsJsonEditor.newInstance();
81
+ }
82
+ // await WorldCyberia.renderAllFace();
83
+ });
84
+ EventsUI.onClick(`.btn-delete-world-${rowId}`, async () => {
85
+ const worldDeleteResult = await CyberiaWorldService.delete({ id: params.data._id });
86
+ NotificationManager.Push({
87
+ html: worldDeleteResult.status,
88
+ status: worldDeleteResult.status,
89
+ });
90
+
91
+ setTimeout(() => {
92
+ WorldCyberia.worlds = WorldCyberia.worlds.filter((world) => world._id !== params.data._id);
93
+ AgGrid.grids[`ag-grid-world`].setGridOption('rowData', WorldCyberia.getGridData());
94
+ });
95
+ });
96
+ });
97
+ }
98
+
99
+ getGui() {
100
+ return this.eGui;
101
+ }
102
+
103
+ refresh(params) {
104
+ console.log('LoadWorldCyberiaRenderer refreshed', params);
105
+ return true;
106
+ }
107
+ }
108
+
109
+ const WorldCyberiaManagement = {
110
+ Data: {},
111
+ LoadSingleFace: function (selector, src, topLevelSrc) {
112
+ for (const element of s(selector).children) {
113
+ if (!element.classList.contains('adjacent-map-background')) element.style.display = 'none';
114
+ }
115
+ const adjacentMapDisplay = Array.from(s(selector).children).find((e) => e.src === src);
116
+ const adjacentTopMapDisplay = Array.from(s(selector).children).find((e) => e.src === topLevelSrc);
117
+ adjacentMapDisplay
118
+ ? ((adjacentMapDisplay.style.display = 'block'), (adjacentTopMapDisplay.style.display = 'block'))
119
+ : append(
120
+ selector,
121
+ html`<img class="in adjacent-map-limit-img" src="${src}" />
122
+ <img class="abs adjacent-map-limit-to-level-img" src="${topLevelSrc}" />`,
123
+ );
124
+ },
125
+ LoadAdjacentFaces: function (type, id) {
126
+ for (const biomeKey of Object.keys(BiomeCyberiaScope.Data)) {
127
+ for (const limitType of ['top', 'bottom', 'left', 'right']) {
128
+ if (
129
+ BiomeCyberiaScope.Data[biomeKey]._id ===
130
+ this.Data[type][id].model.world.face[
131
+ WorldCyberiaLimit({ type: this.Data[type][id].model.world.type })[
132
+ ElementsCyberia.Data[type][id].model.world.face
133
+ ][limitType][0] - 1
134
+ ]
135
+ ) {
136
+ this.LoadSingleFace(
137
+ `.adjacent-map-limit-${limitType}`,
138
+ BiomeCyberiaScope.Data[biomeKey].imageSrc,
139
+ BiomeCyberiaScope.Data[biomeKey].imageTopLevelColorSrc,
140
+ );
141
+ if (this.Data[type][id].model.world.type === 'height' && (limitType === 'right' || limitType === 'left')) {
142
+ this.LoadSingleFace(
143
+ `.adjacent-map-limit-top-${limitType}`,
144
+ BiomeCyberiaScope.Data[biomeKey].imageSrc,
145
+ BiomeCyberiaScope.Data[biomeKey].imageTopLevelColorSrc,
146
+ );
147
+ this.LoadSingleFace(
148
+ `.adjacent-map-limit-bottom-${limitType}`,
149
+ BiomeCyberiaScope.Data[biomeKey].imageSrc,
150
+ BiomeCyberiaScope.Data[biomeKey].imageTopLevelColorSrc,
151
+ );
152
+ }
153
+ if (this.Data[type][id].model.world.type === 'width' && (limitType === 'top' || limitType === 'bottom')) {
154
+ this.LoadSingleFace(
155
+ `.adjacent-map-limit-${limitType}-right`,
156
+ BiomeCyberiaScope.Data[biomeKey].imageSrc,
157
+ BiomeCyberiaScope.Data[biomeKey].imageTopLevelColorSrc,
158
+ );
159
+ this.LoadSingleFace(
160
+ `.adjacent-map-limit-${limitType}-left`,
161
+ BiomeCyberiaScope.Data[biomeKey].imageSrc,
162
+ BiomeCyberiaScope.Data[biomeKey].imageTopLevelColorSrc,
163
+ );
164
+ }
165
+ }
166
+ }
167
+ }
168
+ },
169
+ ChangeFace: async function (options = { type: 'user', id: 'main', direction: '' }) {
170
+ const { type, id, direction } = options;
171
+
172
+ if (
173
+ ElementsCyberia.LocalDataScope[type][id].path.length > 1 ||
174
+ !this.Data[type] ||
175
+ !this.Data[type][id].model.world
176
+ )
177
+ return;
178
+ if (this.Data[type][id].model.world.type === 'height' && (direction === 'right' || direction === 'left')) return;
179
+ if (this.Data[type][id].model.world.type === 'width' && (direction === 'top' || direction === 'bottom')) return;
180
+
181
+ const initX = ElementsCyberia.Data[type][id].x;
182
+ const initY = ElementsCyberia.Data[type][id].y;
183
+
184
+ if (!ElementsCyberia.LocalDataScope[type][id].isChangeFace)
185
+ setTimeout(async () => {
186
+ if (
187
+ !ElementsCyberia.LocalDataScope[type][id].isChangeFace &&
188
+ initX === ElementsCyberia.Data[type][id].x &&
189
+ initY === ElementsCyberia.Data[type][id].y
190
+ ) {
191
+ const [newFace, initDirection] = WorldCyberiaLimit({ type: this.Data[type][id].model.world.type })[
192
+ ElementsCyberia.Data[type][id].model.world.face
193
+ ][direction];
194
+
195
+ await this.InstanceFace({ type, id, newFace, initDirection });
196
+ }
197
+ }, 750);
198
+ },
199
+ isAdjacentCollision: async function ({ type, id, newFace, initDirection, x, y }) {
200
+ let newBiomeCyberia;
201
+ for (const biomeKey of Object.keys(BiomeCyberiaScope.Data)) {
202
+ if (BiomeCyberiaScope.Data[biomeKey]._id === this.Data[type][id].model.world.face[newFace - 1]) {
203
+ newBiomeCyberia = BiomeCyberiaScope.Data[biomeKey];
204
+ break;
205
+ }
206
+ }
207
+ let newX = x ?? newInstance(ElementsCyberia.Data[type][id].x);
208
+ let newY = y ?? newInstance(ElementsCyberia.Data[type][id].y);
209
+ switch (initDirection) {
210
+ case 'left':
211
+ newX = 0.5;
212
+ break;
213
+ case 'right':
214
+ newX = MatrixCyberia.Data.dim - ElementsCyberia.Data[type][id].dim - 0.5;
215
+ break;
216
+ case 'bottom':
217
+ newY = MatrixCyberia.Data.dim - ElementsCyberia.Data[type][id].dim - 0.5;
218
+ break;
219
+ case 'top':
220
+ newY = 0.5;
221
+ break;
222
+ default:
223
+ break;
224
+ }
225
+ return {
226
+ newX,
227
+ newY,
228
+ newBiomeCyberia,
229
+ collision: BiomeCyberiaManagement.isBiomeCyberiaCollision({ type, id, x: newX, y: newY, biome: newBiomeCyberia }),
230
+ };
231
+ },
232
+ InstanceFace: async function (options = { type: 'user', id: 'main', newFace: 0, initDirection: '' }) {
233
+ console.warn('InstanceFace', options);
234
+ const { type, id, newFace, initDirection } = options;
235
+ const { collision, newBiomeCyberia, newX, newY } = await this.isAdjacentCollision(options);
236
+ if (collision) return;
237
+ console.warn('newBiomeCyberia', newBiomeCyberia);
238
+ console.warn('initDirection', initDirection);
239
+ await InteractionPanelCyberia.PanelRender.removeAllActionPanel();
240
+ ElementsCyberia.Data[type][id].x = newX;
241
+ ElementsCyberia.Data[type][id].y = newY;
242
+ ElementsCyberia.Data[type][id].model.world.face = newFace;
243
+ await BiomeCyberiaManagement.load({
244
+ data: newBiomeCyberia,
245
+ });
246
+ this.LoadAdjacentFaces(type, id);
247
+ InteractionPanelCyberia.PanelRender.map({ face: newFace });
248
+ InteractionPanelCyberia.PanelRender.element({ type, id });
249
+ PointAndClickMovementCyberia.TriggerTargetEvents({ type, id });
250
+ this.EmitNewWorldCyberiaFace({ type, id });
251
+ },
252
+ EmitNewWorldCyberiaFace: (options) => {
253
+ const { type, id } = options;
254
+ if (type === 'user' && id === 'main') ElementsCyberia.LocalDataScope[type][id].isChangeFace = true;
255
+ for (const elementType of Object.keys(ElementsCyberia.Data)) {
256
+ for (const elementId of Object.keys(ElementsCyberia.Data[elementType])) {
257
+ if (elementId !== 'main') {
258
+ PixiCyberia.removeElement({ type: elementType, id: elementId });
259
+ delete ElementsCyberia.Data[elementType][elementId];
260
+ }
261
+ }
262
+ if (['user', 'bot', 'skill'].includes(elementType))
263
+ SocketIo.Emit(elementType, {
264
+ status: 'update-world-face',
265
+ element: { model: { world: ElementsCyberia.Data[type][id].model.world } },
266
+ });
267
+ }
268
+ },
269
+ Load: async function (options = { type: 'user', id: 'main' }) {
270
+ const { type, id } = options;
271
+
272
+ if (!this.Data[type]) this.Data[type] = {};
273
+ if (!this.Data[type][id]) this.Data[type][id] = { model: {} };
274
+
275
+ if (!('world' in this.Data[type][id].model)) {
276
+ const { data } = await CyberiaWorldService.get({ id: ElementsCyberia.Data[type][id].model.world._id });
277
+ LoadingAnimation.barLevel.append();
278
+ if (!CyberiaParams.CYBERIA_WORLD_ID) CyberiaParams.CYBERIA_WORLD_ID = data[0]._id;
279
+ this.Data[type][id].model.world = data[0];
280
+ }
281
+
282
+ // load single world
283
+ let indexFace = 0;
284
+ for (const _id of this.Data[type][id].model.world.face) {
285
+ indexFace++;
286
+ if (ElementsCyberia.Data.user.main.model.world.face === indexFace) {
287
+ await BiomeCyberiaManagement.load({
288
+ data: await BiomeCyberiaManagement.loadData({
289
+ data: { _id },
290
+ }),
291
+ });
292
+ LoadingAnimation.barLevel.append();
293
+ } else
294
+ await BiomeCyberiaManagement.loadData({
295
+ data: { _id },
296
+ });
297
+ }
298
+
299
+ this.LoadAdjacentFaces(type, id);
300
+ InteractionPanelCyberia.PanelRender.map({ face: ElementsCyberia.Data.user.main.model.world.face });
301
+ const adjacentWorldData = WorldCyberiaManagement.Data[type][id].model.world.adjacentFace;
302
+ if (adjacentWorldData && adjacentWorldData.type && adjacentWorldData.type !== 'default') {
303
+ switch (adjacentWorldData.type) {
304
+ case 'color':
305
+ {
306
+ s(`.adjacent-map-background-top`).style.background = adjacentWorldData.value;
307
+ s(`.adjacent-map-background-bottom`).style.background = adjacentWorldData.value;
308
+ s(`.adjacent-map-background-left`).style.background = adjacentWorldData.value;
309
+ s(`.adjacent-map-background-right`).style.background = adjacentWorldData.value;
310
+
311
+ s(`.adjacent-map-background-top-left`).style.background = adjacentWorldData.value;
312
+ s(`.adjacent-map-background-top-right`).style.background = adjacentWorldData.value;
313
+ s(`.adjacent-map-background-bottom-left`).style.background = adjacentWorldData.value;
314
+ s(`.adjacent-map-background-bottom-right`).style.background = adjacentWorldData.value;
315
+ }
316
+ break;
317
+ }
318
+ } else {
319
+ s(`.adjacent-map-background-top-left`).style.background = null;
320
+ s(`.adjacent-map-background-top-right`).style.background = null;
321
+ s(`.adjacent-map-background-bottom-left`).style.background = null;
322
+ s(`.adjacent-map-background-bottom-right`).style.background = null;
323
+ if (this.Data[type][id].model.world.type === 'height') {
324
+ s(`.adjacent-map-background-top`).style.background = `rgba(0,0,0,0.5)`;
325
+ s(`.adjacent-map-background-bottom`).style.background = `rgba(0,0,0,0.5)`;
326
+ s(`.adjacent-map-background-left`).style.background = null;
327
+ s(`.adjacent-map-background-right`).style.background = null;
328
+ } else if (this.Data[type][id].model.world.type === 'width') {
329
+ s(`.adjacent-map-background-top`).style.background = null;
330
+ s(`.adjacent-map-background-bottom`).style.background = null;
331
+ s(`.adjacent-map-background-left`).style.background = `rgba(0,0,0,0.5)`;
332
+ s(`.adjacent-map-background-right`).style.background = `rgba(0,0,0,0.5)`;
333
+ }
334
+ }
335
+ },
336
+ };
337
+
338
+ const WorldCyberia = {
339
+ worlds: [],
340
+ WorldCyberiaScope: {
341
+ face: [],
342
+ },
343
+ getGridData: function () {
344
+ return newInstance(this.worlds).map((w) => {
345
+ range(0, 5).map((i) => {
346
+ if (!(i in w.face)) w.face[i] = null;
347
+ });
348
+ w.face = w.face.map((f, i) => `${i + 1}-${f?.biome ? f.biome : 'void'}`);
349
+ return w;
350
+ });
351
+ },
352
+ Render: async function (options) {
353
+ const resultWorldCyberias = await CyberiaWorldService.get({ id: 'all' });
354
+ NotificationManager.Push({
355
+ html: resultWorldCyberias.status,
356
+ status: resultWorldCyberias.status,
357
+ });
358
+ if (resultWorldCyberias.status === 'success') this.worlds = resultWorldCyberias.data;
359
+
360
+ const resultBiomeCyberia = await CyberiaBiomeService.get({ id: 'all-name' });
361
+ NotificationManager.Push({
362
+ html: resultBiomeCyberia.status,
363
+ status: resultBiomeCyberia.status,
364
+ });
365
+ const resultInstancesCyberia = await CyberiaInstanceService.get({ id: 'lite' });
366
+ NotificationManager.Push({
367
+ html: resultInstancesCyberia.status,
368
+ status: resultInstancesCyberia.status,
369
+ });
370
+ let render = '';
371
+
372
+ for (const index of range(0, 5)) {
373
+ render += html`<div class="inl section-mp">
374
+ ${await DropDown.Render({
375
+ // value: ``,
376
+ id: `face-${index}`,
377
+ label: html`face ${index + 1}`,
378
+ resetOption: true,
379
+ resetOnClick: () => (this.WorldCyberiaScope.face[index] = null),
380
+ data: resultBiomeCyberia.data.map((biome) => {
381
+ return {
382
+ data: biome,
383
+ display: html`${biome.name} <span class="drop-down-option-info">[${biome.biome}]</span>`,
384
+ value: biome._id,
385
+ onClick: async () => {
386
+ this.WorldCyberiaScope.face[index] = biome;
387
+ s(`.btn-generate-world`).click();
388
+ },
389
+ };
390
+ }),
391
+ })}
392
+ </div>
393
+ <div class="inl section-mp">
394
+ ${await DropDown.Render({
395
+ // value: ``,
396
+ id: `instance-${index}`,
397
+ label: html`instance ${index + 1}`,
398
+ resetOption: true,
399
+ // resetOnClick: () => (this.WorldCyberiaScope.face[index] = null),
400
+ data: resultInstancesCyberia.data.map((instance) => {
401
+ return {
402
+ data: instance,
403
+ display: html`${instance.name}`,
404
+ value: instance._id,
405
+ onClick: async () => {
406
+ if (!this.WorldCyberiaScope.instance) this.WorldCyberiaScope.instance = [];
407
+ const { status, data, message } = await CyberiaInstanceService.get({ id: instance._id });
408
+ NotificationManager.Push({
409
+ html: resultInstancesCyberia.status === 'error' ? message : status,
410
+ status: resultInstancesCyberia.status,
411
+ });
412
+ this.WorldCyberiaScope.instance[index] = data;
413
+ },
414
+ };
415
+ }),
416
+ })}
417
+ </div>`;
418
+ }
419
+ setTimeout(() => {
420
+ EventsUI.onClick(`.btn-generate-world`, async () => {
421
+ for (const index of range(0, 5)) {
422
+ if (!DropDown.Tokens[`face-${index}`].value) delete this.WorldCyberiaScope.face[index];
423
+ await this.renderFace(index);
424
+ }
425
+ });
426
+ EventsUI.onClick(`.btn-generate-random-world`, async () => {
427
+ for (const index of range(0, 5)) {
428
+ s(
429
+ `.dropdown-option-face-${index}-${
430
+ resultBiomeCyberia.data[random(0, resultBiomeCyberia.data.length - 1)]._id
431
+ }`,
432
+ ).click();
433
+ // await this.renderFace(index);
434
+ }
435
+ });
436
+ EventsUI.onClick(`.btn-upload-world`, async () => {
437
+ const body = newInstance(this.WorldCyberiaScope);
438
+ body.face = body.face.map((face) => {
439
+ if (face && face._id) return face._id;
440
+ return null;
441
+ });
442
+ body.name = s(`.world-name`).value;
443
+ body.adjacentFace = WorldCyberia.adjacentFaceJsonEditor.content.json.type
444
+ ? WorldCyberia.adjacentFaceJsonEditor.content.json
445
+ : undefined;
446
+ body.quests =
447
+ WorldCyberia.questsJsonEditor.content.json.length > 0
448
+ ? WorldCyberia.questsJsonEditor.content.json
449
+ : undefined;
450
+ delete body._id;
451
+ const { data, status } = await CyberiaWorldService.post({ body });
452
+ NotificationManager.Push({
453
+ html: Translate.Render(`${status}-upload-world`),
454
+ status,
455
+ });
456
+ if (status === 'success') {
457
+ this.worlds.push(data);
458
+ AgGrid.grids[`ag-grid-world`].setGridOption('rowData', this.getGridData());
459
+ }
460
+ });
461
+ EventsUI.onClick(`.btn-reset-world`, async () => {
462
+ for (const index of range(0, 5)) s(`.dropdown-option-face-${index}-reset`).click();
463
+ s(`.btn-generate-world`).click();
464
+ });
465
+ EventsUI.onClick(`.btn-reset-instances`, async () => {
466
+ for (const index of range(0, 5)) s(`.dropdown-option-instance-${index}-reset`).click();
467
+ delete this.WorldCyberiaScope.instance;
468
+ });
469
+ WorldCyberia.adjacentFaceJsonEditor.newInstance();
470
+ WorldCyberia.questsJsonEditor.newInstance();
471
+ });
472
+ return html`
473
+ ${dynamicCol({ containerSelector: options.idModal, id: 'world' })}
474
+ <div class="fl">
475
+ <div class="in fll world-col-a">
476
+ <div class="in section-mp">
477
+ <div class="in sub-title-modal"><i class="fa-solid fa-sliders"></i> ${Translate.Render('config')}</div>
478
+ <div class="in">
479
+ ${render}
480
+ <div class="inl section-mp">
481
+ ${await DropDown.Render({
482
+ value: 'width',
483
+ label: html`${Translate.Render('type')}`,
484
+ data: ['width', 'height'].map((worldType) => {
485
+ const infoType = WorldCyberiaType[worldType].worldFaces;
486
+ return {
487
+ display: html`
488
+ <i class="fa-solid fa-text-${worldType}"></i></i> ${Translate.Render(worldType)}
489
+ <span class="drop-down-option-info">${infoType}</span>`,
490
+ value: worldType,
491
+ data: worldType,
492
+ onClick: () => {
493
+ this.WorldCyberiaScope.type = worldType;
494
+ },
495
+ };
496
+ }),
497
+ })}
498
+ </div>
499
+ ${await BtnIcon.Render({
500
+ class: `inl section-mp btn-custom btn-generate-world hide`,
501
+ label: html`<i class="fa-solid fa-arrows-rotate"></i> ${Translate.Render(`generate`)}`,
502
+ })}
503
+ ${await BtnIcon.Render({
504
+ class: `inl section-mp btn-custom btn-generate-random-world`,
505
+ label: html`<i class="fa-solid fa-dice"></i> ${Translate.Render(`generate`)} random`,
506
+ })}
507
+ ${await BtnIcon.Render({
508
+ class: `inl section-mp btn-custom btn-reset-world`,
509
+ label: html`<i class="fa-solid fa-broom"></i> ${Translate.Render(`clear`)}`,
510
+ })}
511
+ ${await BtnIcon.Render({
512
+ class: `inl section-mp btn-custom btn-reset-instances`,
513
+ label: html`<i class="fa-solid fa-broom"></i> ${Translate.Render(`clear`)} instances`,
514
+ })}
515
+ ${await BtnIcon.Render({
516
+ class: `inl section-mp btn-custom btn-upload-world`,
517
+ label: html`<i class="fa-solid fa-upload"></i> ${Translate.Render(`upload`)}`,
518
+ })}
519
+ ${await Input.Render({
520
+ id: `world-name`,
521
+ label: html`<i class="fa-solid fa-pen-to-square"></i> ${Translate.Render('name')}`,
522
+ containerClass: 'inl section-mp width-mini-box input-container',
523
+ placeholder: true,
524
+ })}
525
+ </div>
526
+ </div>
527
+ </div>
528
+ <div class="in fll world-col-b">
529
+ <div class="in section-mp">
530
+ <div class="in sub-title-modal"><i class="fa-solid fa-cube"></i> ${Translate.Render('world')}</div>
531
+ <div class="in">
532
+ ${await Polyhedron.Render({
533
+ id: 'world',
534
+ idModal: 'world-col-b',
535
+ style: {
536
+ face: {
537
+ background: `rgba(0, 0, 0, 0.5)`,
538
+ // border: `2px solid #620000ff`,
539
+ 'font-size': `30px`,
540
+ },
541
+ },
542
+ })}
543
+ </div>
544
+ </div>
545
+ <div class="in section-mp">
546
+ <div class="in sub-title-modal">{ } Adjacent Face Config</div>
547
+ <div class="in"><div class="jsoneditor-adjacentFace"></div></div>
548
+ </div>
549
+ <div class="in section-mp">
550
+ <div class="in sub-title-modal">{ } Quests Config</div>
551
+ <div class="in"><div class="jsoneditor-quests"></div></div>
552
+ </div>
553
+ </div>
554
+ </div>
555
+ <div class="in section-mp">
556
+ <div class="in sub-title-modal"><i class="far fa-list-alt"></i> ${Translate.Render('worlds')}</div>
557
+ <div class="in">
558
+ ${await AgGrid.Render({
559
+ id: `ag-grid-world`,
560
+ darkTheme,
561
+ gridOptions: {
562
+ rowData: this.getGridData(),
563
+ columnDefs: [
564
+ // { field: '_id', headerName: 'ID' },
565
+ { field: 'face', headerName: 'face' },
566
+ { field: 'name', headerName: 'Name' },
567
+ { field: 'type', headerName: 'type' },
568
+ { headerName: '', cellRenderer: LoadWorldCyberiaRenderer },
569
+ ],
570
+ },
571
+ })}
572
+ </div>
573
+ </div>
574
+ `;
575
+ },
576
+ renderFace: async function (index) {
577
+ if (
578
+ this.WorldCyberiaScope.face[index] &&
579
+ this.WorldCyberiaScope.face[index].fileId &&
580
+ this.WorldCyberiaScope.face[index].topLevelColorFileId
581
+ ) {
582
+ const resultFile = await FileService.get({ id: this.WorldCyberiaScope.face[index].fileId });
583
+
584
+ const imageData = resultFile.data[0];
585
+
586
+ const imageBlob = new Blob([new Uint8Array(imageData.data.data)], { type: imageData.mimetype });
587
+
588
+ const imageFile = new File([imageBlob], imageData.name, { type: imageData.mimetype });
589
+
590
+ const imageSrc = URL.createObjectURL(imageFile);
591
+
592
+ const resultTopLevelColorFile = await FileService.get({
593
+ id: this.WorldCyberiaScope.face[index].topLevelColorFileId,
594
+ });
595
+
596
+ const imageTopLevelColorData = resultTopLevelColorFile.data[0];
597
+
598
+ const imageTopLevelColorBlob = new Blob([new Uint8Array(imageTopLevelColorData.data.data)], {
599
+ type: imageTopLevelColorData.mimetype,
600
+ });
601
+
602
+ const imageTopLevelColorFile = new File([imageTopLevelColorBlob], imageTopLevelColorData.name, {
603
+ type: imageTopLevelColorData.mimetype,
604
+ });
605
+
606
+ const imageTopLevelColorSrc = URL.createObjectURL(imageTopLevelColorFile);
607
+
608
+ htmls(
609
+ `.world-${index}`,
610
+ html`
611
+ <img class="abs face-world-img" src="${imageSrc}" ${index === 2 ? `style="transform: rotate(180deg)"` : ''} />
612
+ <div class="abs center" style="${borderChar(2, 'black')}">${index + 1}</div>
613
+ <img
614
+ class="abs face-world-img"
615
+ src="${imageTopLevelColorSrc}"
616
+ ${index === 2 ? `style="transform: rotate(180deg)"` : ''}
617
+ />
618
+ <div class="abs center" style="${borderChar(2, 'black')}">${index + 1}</div>
619
+ `,
620
+ );
621
+ return;
622
+ }
623
+ this.WorldCyberiaScope.face[index] = null;
624
+ htmls(`.world-${index}`, html`<div class="abs center" style="${borderChar(2, 'black')}">${index + 1}</div>`);
625
+ },
626
+ renderAllFace: async function () {
627
+ for (const index of range(0, 5)) await this.renderFace(index);
628
+ },
629
+ adjacentFaceJsonEditor: {
630
+ content: {
631
+ json: {
632
+ type: null,
633
+ value: '',
634
+ fileId: '',
635
+ },
636
+ },
637
+ instance: null,
638
+ newInstance: () => {
639
+ if (WorldCyberia.adjacentFaceJsonEditor.instance) WorldCyberia.adjacentFaceJsonEditor.instance.destroy();
640
+ WorldCyberia.adjacentFaceJsonEditor.instance = createJSONEditor({
641
+ target: s('.jsoneditor-adjacentFace'),
642
+ props: {
643
+ content: WorldCyberia.adjacentFaceJsonEditor.content,
644
+ onChange: (updatedContent, previousContent, { contentErrors, patchResult }) => {
645
+ // content is an object { json: JSONData } | { text: string }
646
+ console.log('onChange', { updatedContent, previousContent, contentErrors, patchResult });
647
+ WorldCyberia.adjacentFaceJsonEditor.content.json = JSON.parse(updatedContent.text);
648
+ },
649
+ },
650
+ });
651
+ },
652
+ },
653
+ questsJsonEditor: {
654
+ content: {
655
+ json: [
656
+ {
657
+ id: '',
658
+ sagaId: '',
659
+ },
660
+ ],
661
+ },
662
+ instance: null,
663
+ newInstance: () => {
664
+ if (WorldCyberia.questsJsonEditor.instance) WorldCyberia.questsJsonEditor.instance.destroy();
665
+ WorldCyberia.questsJsonEditor.instance = createJSONEditor({
666
+ target: s('.jsoneditor-quests'),
667
+ props: {
668
+ content: WorldCyberia.questsJsonEditor.content,
669
+ onChange: (updatedContent, previousContent, { contentErrors, patchResult }) => {
670
+ // content is an object { json: JSONData } | { text: string }
671
+ console.log('onChange', { updatedContent, previousContent, contentErrors, patchResult });
672
+ WorldCyberia.questsJsonEditor.content.json = JSON.parse(updatedContent.text);
673
+ },
674
+ },
675
+ });
676
+ },
677
+ },
678
+ };
679
+
680
+ export { WorldCyberia, WorldCyberiaManagement, WorldCyberiaLimit, getWorldId };