cyberia 3.1.3 → 3.2.9

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