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
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Shared factory for app-specific WebSocket event handlers.
3
+ * Eliminates duplication across per-app SocketIo*.js modules by providing
4
+ * common channel event handling (chat, email-confirmed, etc.).
5
+ *
6
+ * @module client/core/SocketIoHandler
7
+ * @namespace SocketIoHandlerProvider
8
+ */
9
+ import { Account } from './Account.js';
10
+ import { Chat } from './Chat.js';
11
+ import { s4 } from './CommonJs.js';
12
+ import { loggerFactory } from './Logger.js';
13
+ import { SocketIo } from './SocketIo.js';
14
+ import { s } from './VanillaJs.js';
15
+
16
+ const logger = loggerFactory(import.meta);
17
+
18
+ /**
19
+ * @class SocketIoHandlerProvider
20
+ * @classdesc Provides a static factory method to create app-specific SocketIo event handlers
21
+ * from an {@link AppStore} instance. Handles common channel events (chat, email-confirmed)
22
+ * and wires connect/disconnect lifecycle.
23
+ * @memberof SocketIoHandlerProvider
24
+ */
25
+ class SocketIoHandlerProvider {
26
+ /**
27
+ * Creates a standard SocketIo event initialization object for an app module.
28
+ *
29
+ * @static
30
+ * @param {import('./AppStore.js').AppStore} appStore - The app-specific AppStore instance.
31
+ * @returns {{ instance: function(): Promise<void> }} An object with an `instance` method for SocketIo event registration.
32
+ */
33
+ static create(appStore) {
34
+ return {
35
+ instance() {
36
+ return new Promise((resolve) => {
37
+ for (const type of Object.keys(appStore.Data)) {
38
+ SocketIo.onChannel(type, async ({ args }) => {
39
+ args = JSON.parse(args[0]);
40
+ switch (type) {
41
+ case 'chat':
42
+ {
43
+ const idModal = 'modal-chat';
44
+ if (s(`.${idModal}-chat-box`)) Chat.appendChatBox({ idModal, ...args });
45
+ }
46
+ break;
47
+
48
+ default:
49
+ break;
50
+ }
51
+ const { status } = args;
52
+
53
+ switch (status) {
54
+ case 'email-confirmed': {
55
+ const newUser = { ...appStore.Data.user.main.model.user, emailConfirmed: true };
56
+ Account.renderVerifyEmailStatus(newUser);
57
+ Account.triggerUpdateEvent({ user: newUser });
58
+ break;
59
+ }
60
+
61
+ default:
62
+ break;
63
+ }
64
+ }, { key: s4() });
65
+ }
66
+ SocketIo.onConnect(async ({ id }) => {}, { key: s4() });
67
+ SocketIo.onDisconnect(async ({ reason }) => {}, { key: s4() });
68
+ return resolve();
69
+ });
70
+ },
71
+ };
72
+ }
73
+ }
74
+
75
+ export { SocketIoHandlerProvider };
@@ -1,113 +1,161 @@
1
+ /**
2
+ * Client-side WebRTC stream manager backed by PeerJS.
3
+ * Handles peer creation, media capture, and room-based A/V streaming.
4
+ *
5
+ * @module client/core/Stream
6
+ * @see https://peerjs.com/docs/
7
+ */
8
+
1
9
  import { loggerFactory } from './Logger.js';
2
10
  import { getProxyPath } from './Router.js';
3
11
 
4
- // https://peerjs.com/docs/
5
-
6
12
  const logger = loggerFactory(import.meta);
7
13
 
8
- const Stream = {
9
- Data: {},
10
- createPeerServer: function ({ id }) {
11
- const peerOptions = {
12
- host: location.hostname, // '/'
14
+ /**
15
+ * @class Stream
16
+ * @classdesc Static manager for PeerJS connections and MediaStream lifecycle.
17
+ * Supports multiple concurrent peer sessions keyed by an arbitrary `id`.
18
+ */
19
+ class Stream {
20
+ /** @type {Object.<string, { peer: Peer, options: Object }>} Active peer sessions keyed by session id. */
21
+ static #sessions = {};
22
+
23
+ /**
24
+ * Builds PeerJS connection options from current page location.
25
+ * @returns {{ host: string, port: number, path: string, secure: boolean }}
26
+ */
27
+ static #buildPeerOptions() {
28
+ return {
29
+ host: location.hostname,
13
30
  port: location.protocol === 'https:' ? 443 : location.port ? parseInt(location.port) + 1 : 80,
14
31
  path: `${getProxyPath()}peer`,
15
32
  secure: location.protocol === 'https:',
16
33
  };
17
- logger.info('peerOptions', peerOptions);
18
- this.Data[id] = {
19
- peer: {
20
- peerOptions,
21
- server: new Peer(undefined, peerOptions),
22
- },
23
- };
24
- return this.Data[id].peer;
25
- },
26
- connectToNewUser: function (
27
- mediaType,
28
- id,
29
- userId,
30
- stream,
31
- onConnectStream = (mediaElement) => null,
32
- onDisconnectStream = (mediaElement) => null,
33
- ) {
34
- // This runs when someone joins our room
35
- const call = this.Data[id].peer.server.call(userId, stream); // Call the user who just joined
36
- const mediaElement = this.createMediaElement(mediaType);
34
+ }
37
35
 
38
- call.on('stream', (userMediaStream) => {
39
- onConnectStream(this.renderElementStream(mediaElement, userMediaStream));
40
- });
41
- // If they leave, remove their video
42
- call.on('close', () => {
43
- onDisconnectStream(mediaElement);
44
- });
45
- return { call, mediaElement };
46
- },
47
- handlePeerDisconnect({ id }) {
48
- // manually close the peer connections
49
- for (let conns in this.Data[id].peer.server.connections) {
50
- this.Data[id].peer.server.connections[conns].forEach((conn, index, array) => {
51
- console.log(`closing ${conn.connectionId} peerConnection (${index + 1}/${array.length})`, conn.peerConnection);
52
- if (conn.peerConnection && conn.peerConnection.close) conn.peerConnection.close();
36
+ /**
37
+ * Creates a PeerJS client for the given session id.
38
+ * @param {string} id - Unique session identifier.
39
+ * @returns {{ peer: Peer, options: Object }} The Peer instance and its options.
40
+ */
41
+ static createPeer(id) {
42
+ this.destroyPeer(id);
43
+ const options = this.#buildPeerOptions();
44
+ logger.info('peerOptions', options);
45
+ const peer = new Peer(undefined, options);
46
+ this.#sessions[id] = { peer, options };
47
+ return this.#sessions[id];
48
+ }
49
+
50
+ /**
51
+ * Returns an existing session or `undefined`.
52
+ * @param {string} id
53
+ * @returns {{ peer: Peer, options: Object }|undefined}
54
+ */
55
+ static getSession(id) {
56
+ return this.#sessions[id];
57
+ }
53
58
 
54
- // close it using peerjs methods
55
- if (conn.close) conn.close();
56
- });
59
+ /**
60
+ * Destroys a peer session — closes all connections and the peer itself.
61
+ * @param {string} id - Session identifier.
62
+ */
63
+ static destroyPeer(id) {
64
+ const session = this.#sessions[id];
65
+ if (!session) return;
66
+ const { peer } = session;
67
+ if (peer) {
68
+ for (const key in peer.connections) {
69
+ for (const conn of peer.connections[key]) {
70
+ if (conn.peerConnection?.close) conn.peerConnection.close();
71
+ if (conn.close) conn.close();
72
+ }
73
+ }
74
+ if (!peer.destroyed) peer.destroy();
57
75
  }
58
- },
59
- renderElementStream: function (mediaElement, stream) {
60
- mediaElement.srcObject = stream;
61
- mediaElement.addEventListener('loadedmetadata', () => {
62
- // Play the video as it loads
63
- mediaElement.play();
64
- });
65
- return mediaElement;
66
- // use example:
67
- // videoGrid.append(mediaElement); // Append video element to videoGrid
68
- },
69
- // Access the user's video and audio
70
- getMediaStream: function (
71
- options = {
72
- video: true,
73
- audio: true,
74
- },
75
- ) {
76
- return new Promise((resolve) => {
77
- navigator.mediaDevices
78
- .getUserMedia(options)
79
- .then((stream) => resolve(stream))
80
- .catch((error) => {
81
- logger.error(error);
82
- resolve(undefined);
83
- });
84
- });
85
- },
86
- removeMediaStream: function (stream) {
87
- // later you can do below
88
- // stop both video and audio
89
- stream.getTracks().forEach((track) => {
90
- track.stop();
76
+ delete this.#sessions[id];
77
+ }
78
+
79
+ /**
80
+ * Calls a remote peer and streams local media to them.
81
+ * @param {string} id - Session identifier.
82
+ * @param {string} remotePeerId - The remote peer's ID.
83
+ * @param {MediaStream} localStream - Local media stream to send.
84
+ * @param {Object} [callbacks]
85
+ * @param {function(HTMLMediaElement): void} [callbacks.onStream] - Called when remote stream arrives.
86
+ * @param {function(HTMLMediaElement): void} [callbacks.onClose] - Called when the call closes.
87
+ * @returns {{ call: import('peerjs').MediaConnection, element: HTMLVideoElement }}
88
+ */
89
+ static callPeer(id, remotePeerId, localStream, { onStream, onClose } = {}) {
90
+ const session = this.#sessions[id];
91
+ if (!session) throw new Error(`No peer session "${id}"`);
92
+ const call = session.peer.call(remotePeerId, localStream);
93
+ const element = this.createVideoElement();
94
+ call.on('stream', (remoteStream) => {
95
+ this.attachStream(element, remoteStream);
96
+ onStream?.(element);
91
97
  });
92
- // stop only audio
93
- // stream.getAudioTracks()[0].stop();
94
- // stop only video
95
- // stream.getVideoTracks()[0].stop();
96
- },
97
- createMediaElement: function (mediaType) {
98
- let mediaElement;
99
- switch (mediaType) {
100
- case 'audio-video':
101
- mediaElement = document.createElement('video'); // Create a new audio/video tag to show our audio/video
102
- // mediaElement.muted = true; // Mute ourselves on our end so there is no feedback loop
98
+ call.on('close', () => onClose?.(element));
99
+ return { call, element };
100
+ }
101
+
102
+ // ── Media helpers ────────────────────────────────────────────────
103
103
 
104
- break;
104
+ /**
105
+ * Requests user media (camera / microphone) with graceful fallback.
106
+ * Falls back to video-only if audio is unavailable (NotReadableError).
107
+ * @param {{ video?: boolean|MediaTrackConstraints, audio?: boolean|MediaTrackConstraints }} [constraints]
108
+ * @returns {Promise<MediaStream|undefined>}
109
+ */
110
+ static async getMediaStream(constraints = { video: true, audio: true }) {
111
+ const fallbacks = [
112
+ constraints,
113
+ constraints.audio ? { video: constraints.video, audio: false } : null,
114
+ constraints.video ? { video: false, audio: constraints.audio } : null,
115
+ ].filter(Boolean);
105
116
 
106
- default:
107
- break;
117
+ for (const c of fallbacks) {
118
+ try {
119
+ return await navigator.mediaDevices.getUserMedia(c);
120
+ } catch (err) {
121
+ logger.warn(`getUserMedia failed (${err.name}): ${err.message}`, c);
122
+ }
108
123
  }
109
- return mediaElement;
110
- },
111
- };
124
+ logger.error('All media capture attempts failed');
125
+ return undefined;
126
+ }
127
+
128
+ /**
129
+ * Stops all tracks of a MediaStream.
130
+ * @param {MediaStream} stream
131
+ */
132
+ static stopStream(stream) {
133
+ if (!stream) return;
134
+ stream.getTracks().forEach((track) => track.stop());
135
+ }
136
+
137
+ /**
138
+ * Creates a `<video>` element pre-configured for inline autoplay.
139
+ * @returns {HTMLVideoElement}
140
+ */
141
+ static createVideoElement() {
142
+ const video = document.createElement('video');
143
+ video.playsInline = true;
144
+ video.autoplay = true;
145
+ return video;
146
+ }
147
+
148
+ /**
149
+ * Attaches a MediaStream to a media element and starts playback.
150
+ * @param {HTMLMediaElement} element
151
+ * @param {MediaStream} stream
152
+ * @returns {HTMLMediaElement}
153
+ */
154
+ static attachStream(element, stream) {
155
+ element.srcObject = stream;
156
+ element.addEventListener('loadedmetadata', () => element.play());
157
+ return element;
158
+ }
159
+ }
112
160
 
113
161
  export { Stream };
@@ -1,28 +1,22 @@
1
1
  import { getId } from './CommonJs.js';
2
2
  import { loggerFactory } from './Logger.js';
3
3
  import { htmls, s } from './VanillaJs.js';
4
-
5
4
  const logger = loggerFactory(import.meta);
6
-
7
- const ToggleSwitch = {
8
- Tokens: {},
9
- Render: async function (options) {
10
- const id = options?.id ? options.id : getId(this.Tokens, 'toggle-switch-');
11
- this.Tokens[id] = {};
12
-
5
+ class ToggleSwitch {
6
+ static Tokens = {};
7
+ static async instance(options) {
8
+ const id = options?.id ? options.id : getId(ToggleSwitch.Tokens, 'toggle-switch-');
9
+ ToggleSwitch.Tokens[id] = {};
13
10
  const widthContent = 60;
14
11
  const widthCircle = 20;
15
-
16
12
  setTimeout(() => {
17
13
  switch (options.displayMode) {
18
14
  case 'checkbox':
19
15
  break;
20
-
21
16
  default:
22
17
  s(`.${id}-circle`).style.left = `0px`;
23
18
  break;
24
19
  }
25
-
26
20
  const onToggle = () => {
27
21
  switch (options.displayMode) {
28
22
  case 'checkbox':
@@ -49,22 +43,17 @@ const ToggleSwitch = {
49
43
  s(`.${id}-checkbox`).checked = false;
50
44
  options?.on?.unchecked ? options.on.unchecked() : null;
51
45
  };
52
-
53
46
  const onClickEvent = () => {
54
47
  s(`.${id}-checkbox`).checked ? offToggle() : onToggle();
55
48
  logger.info(id, s(`.${id}-checkbox`).checked);
56
49
  };
57
-
58
- this.Tokens[id].click = onClickEvent;
59
-
50
+ ToggleSwitch.Tokens[id].click = onClickEvent;
60
51
  if (!options.disabledOnClick) s(`.${id}`).onclick = onClickEvent;
61
-
62
52
  setTimeout(() => {
63
53
  options?.checked ? onToggle() : null;
64
54
  logger.info(id, s(`.${id}-checkbox`).checked);
65
55
  });
66
56
  });
67
-
68
57
  if (options.type === 'checkbox') {
69
58
  }
70
59
  const htmlRender = html`
@@ -95,7 +84,6 @@ const ToggleSwitch = {
95
84
  `;
96
85
  }
97
86
  return htmlRender;
98
- },
99
- };
100
-
87
+ }
88
+ }
101
89
  export { ToggleSwitch };
@@ -1,14 +1,12 @@
1
1
  import { renderCssAttr } from './Css.js';
2
2
  import { append, s } from './VanillaJs.js';
3
3
  import { Modal } from './Modal.js';
4
-
5
- const ToolTip = {
6
- Tokens: {},
7
- Render: async function (
4
+ class ToolTip {
5
+ static Tokens = {};
6
+ static async instance(
8
7
  options = { container: '', htmlRender: '', id: '', classList: '', useVisibilityHover: false, useMenuBtn: false },
9
8
  ) {
10
9
  const { container, htmlRender, id, useVisibilityHover } = options;
11
-
12
10
  if (useVisibilityHover) {
13
11
  const tooltipId = 'tooltip-' + id;
14
12
  append(
@@ -27,10 +25,8 @@ const ToolTip = {
27
25
  );
28
26
  return;
29
27
  }
30
-
31
28
  const containerEl = s(container);
32
29
  if (!containerEl) return;
33
-
34
30
  const tooltipId = `tooltip-${id}`;
35
31
  const tooltip = html`
36
32
  <div
@@ -49,9 +45,7 @@ const ToolTip = {
49
45
  </div>
50
46
  `;
51
47
  append('body', tooltip);
52
-
53
48
  const tooltipEl = s(`.${tooltipId}`);
54
-
55
49
  containerEl.addEventListener('mouseenter', () => {
56
50
  if (
57
51
  options.useMenuBtn &&
@@ -60,13 +54,10 @@ const ToolTip = {
60
54
  ).classList.contains('hide')
61
55
  )
62
56
  return;
63
-
64
57
  const containerRect = containerEl.getBoundingClientRect();
65
58
  const tooltipRect = tooltipEl.getBoundingClientRect();
66
-
67
59
  let top = containerRect.bottom + window.scrollY + 5;
68
60
  let left = containerRect.left + window.scrollX + containerRect.width / 2 - tooltipRect.width / 2;
69
-
70
61
  // Adjust if it goes off-screen
71
62
  if (left < 0) left = 5;
72
63
  if (left + tooltipRect.width > window.innerWidth) {
@@ -75,16 +66,13 @@ const ToolTip = {
75
66
  if (top + tooltipRect.height > window.innerHeight) {
76
67
  top = containerRect.top + window.scrollY - tooltipRect.height - 5;
77
68
  }
78
-
79
69
  tooltipEl.style.top = `${top}px`;
80
70
  tooltipEl.style.left = `${left}px`;
81
71
  tooltipEl.style.opacity = '1';
82
72
  });
83
-
84
73
  containerEl.addEventListener('mouseleave', () => {
85
74
  tooltipEl.style.opacity = '0';
86
75
  });
87
- },
88
- };
89
-
76
+ }
77
+ }
90
78
  export { ToolTip };