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,99 @@
1
+ import { Auth } from '../../components/core/Auth.js';
2
+ import { loggerFactory } from '../../components/core/Logger.js';
3
+ import { getApiBaseUrl, headersFactory, payloadFactory, buildQueryUrl } from '../core/core.service.js';
4
+ const logger = loggerFactory(import.meta);
5
+ logger.info('Load service');
6
+ const endpoint = 'cyberia-entity';
7
+ class CyberiaEntityService {
8
+ static post = (options = { id: '', body: {} }) =>
9
+ new Promise((resolve, reject) =>
10
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
11
+ method: 'POST',
12
+ headers: headersFactory(),
13
+ credentials: 'include',
14
+ body: payloadFactory(options.body),
15
+ })
16
+ .then(async (res) => {
17
+ return await res.json();
18
+ })
19
+ .then((res) => {
20
+ logger.info(res);
21
+ return resolve(res);
22
+ })
23
+ .catch((error) => {
24
+ logger.error(error);
25
+ return reject(error);
26
+ }),
27
+ );
28
+ static put = (options = { id: '', body: {} }) =>
29
+ new Promise((resolve, reject) =>
30
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
31
+ method: 'PUT',
32
+ headers: headersFactory(),
33
+ credentials: 'include',
34
+ body: payloadFactory(options.body),
35
+ })
36
+ .then(async (res) => {
37
+ return await res.json();
38
+ })
39
+ .then((res) => {
40
+ logger.info(res);
41
+ return resolve(res);
42
+ })
43
+ .catch((error) => {
44
+ logger.error(error);
45
+ return reject(error);
46
+ }),
47
+ );
48
+ static get = (options = {}) => {
49
+ const { id, page, limit, filterModel, sortModel, sort, asc, order } = options;
50
+ const url = buildQueryUrl(getApiBaseUrl({ id, endpoint }), {
51
+ page,
52
+ limit,
53
+ filterModel,
54
+ sortModel,
55
+ sort,
56
+ asc,
57
+ order,
58
+ });
59
+ return new Promise((resolve, reject) =>
60
+ fetch(url.toString(), {
61
+ method: 'GET',
62
+ headers: headersFactory(),
63
+ credentials: 'include',
64
+ })
65
+ .then(async (res) => {
66
+ return await res.json();
67
+ })
68
+ .then((res) => {
69
+ logger.info(res);
70
+ return resolve(res);
71
+ })
72
+ .catch((error) => {
73
+ logger.error(error);
74
+ return reject(error);
75
+ }),
76
+ );
77
+ };
78
+ static delete = (options = { id: '', body: {} }) =>
79
+ new Promise((resolve, reject) =>
80
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
81
+ method: 'DELETE',
82
+ headers: headersFactory(),
83
+ credentials: 'include',
84
+ body: payloadFactory(options.body),
85
+ })
86
+ .then(async (res) => {
87
+ return await res.json();
88
+ })
89
+ .then((res) => {
90
+ logger.info(res);
91
+ return resolve(res);
92
+ })
93
+ .catch((error) => {
94
+ logger.error(error);
95
+ return reject(error);
96
+ }),
97
+ );
98
+ }
99
+ export { CyberiaEntityService };
@@ -0,0 +1,194 @@
1
+ import { BtnIcon } from '../../components/core/BtnIcon.js';
2
+ import { getId, commonUserGuard, commonAdminGuard } from '../../components/core/CommonJs.js';
3
+ import { EventsUI } from '../../components/core/EventsUI.js';
4
+ import { NotificationManager } from '../../components/core/NotificationManager.js';
5
+ import { s } from '../../components/core/VanillaJs.js';
6
+ import { DefaultManagement } from '../default/default.management.js';
7
+ import { CyberiaInstanceService } from './cyberia-instance.service.js';
8
+ import { getApiBaseUrl } from '../core/core.service.js';
9
+
10
+ class CyberiaInstanceManagement {
11
+ static instance = async (options = {}) => {
12
+ const { idModal: rawIdModal, customEvent, readyRowDataEvent, loadInstanceCallback, appStore } = options;
13
+ const idModal = rawIdModal || 'modal-cyberia-instance-management';
14
+ const role = appStore?.Data?.user?.main?.model?.user?.role || 'guest';
15
+
16
+ class LoadInstanceActionGridRenderer {
17
+ eGui;
18
+ tokens;
19
+
20
+ async init(params) {
21
+ this.eGui = document.createElement('div');
22
+ this.tokens = {};
23
+
24
+ const cellRenderId = getId(this.tokens, 'load-instance-');
25
+ this.tokens[cellRenderId] = {};
26
+
27
+ this.eGui.innerHTML = html`${await BtnIcon.instance({
28
+ label: html`<div class="abs center">
29
+ <i class="fa-solid fa-upload"></i>
30
+ </div>`,
31
+ class: `in fll section-mp management-table-btn-mini management-table-btn-load-instance-${idModal}-${cellRenderId} ${
32
+ !params.data._id ? 'hide' : ''
33
+ }`,
34
+ })}`;
35
+
36
+ setTimeout(() => {
37
+ EventsUI.onClick(
38
+ `.management-table-btn-load-instance-${idModal}-${cellRenderId}`,
39
+ async () => {
40
+ if (!params.data._id) return;
41
+ const result = await CyberiaInstanceService.get({ id: params.data._id });
42
+ if (result.status === 'success' && result.data) {
43
+ if (loadInstanceCallback) await loadInstanceCallback(result.data);
44
+ NotificationManager.Push({
45
+ html: `Instance "${result.data.name || result.data.code || params.data._id}" loaded`,
46
+ status: 'success',
47
+ });
48
+ } else {
49
+ NotificationManager.Push({
50
+ html: result.message || 'Failed to load instance',
51
+ status: 'error',
52
+ });
53
+ }
54
+ },
55
+ { context: 'modal' },
56
+ );
57
+ });
58
+ }
59
+
60
+ getGui() {
61
+ return this.eGui;
62
+ }
63
+
64
+ refresh(params) {
65
+ return true;
66
+ }
67
+ }
68
+
69
+ class ThumbnailPreviewGridRenderer {
70
+ eGui;
71
+
72
+ async init(params) {
73
+ this.eGui = document.createElement('div');
74
+ const { data } = params;
75
+
76
+ if (!data || !data.thumbnail) {
77
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
78
+ return;
79
+ }
80
+
81
+ const thumbnailId = typeof data.thumbnail === 'object' ? data.thumbnail._id : data.thumbnail;
82
+ if (!thumbnailId) {
83
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
84
+ return;
85
+ }
86
+
87
+ const imageSrc = getApiBaseUrl({ id: thumbnailId, endpoint: 'file/blob' });
88
+
89
+ this.eGui.innerHTML = html`
90
+ <div style="position: relative; width: 60px; height: 60px;">
91
+ <img
92
+ src="${imageSrc}"
93
+ style="width: 60px; height: 60px; object-fit: cover; display: block; border: 1px solid #555;"
94
+ onload="this.style.display='block'; this.nextElementSibling.style.display='none';"
95
+ onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"
96
+ />
97
+ <div
98
+ style="position: absolute; top: 0; left: 0; width: 60px; height: 60px; display: none; align-items: center; justify-content: center;"
99
+ >
100
+ <i class="fas fa-image" style="font-size: 24px; color: #999;"></i>
101
+ </div>
102
+ </div>
103
+ `;
104
+ }
105
+
106
+ getGui() {
107
+ return this.eGui;
108
+ }
109
+
110
+ refresh(params) {
111
+ return true;
112
+ }
113
+ }
114
+
115
+ const renderResult = await DefaultManagement.instance({
116
+ idModal,
117
+ serviceId: 'cyberia-instance-management',
118
+ entity: 'cyberia-instance',
119
+ permissions: {
120
+ add: false,
121
+ remove: commonUserGuard(role),
122
+ reload: true,
123
+ },
124
+ usePagination: true,
125
+ columnDefs: [
126
+ { field: 'code', headerName: 'Code' },
127
+ { field: 'name', headerName: 'Name' },
128
+ { field: 'description', headerName: 'Description' },
129
+ { field: 'cyberiaMapCodes', headerName: 'Map Codes' },
130
+ { field: 'tags', headerName: 'Tags' },
131
+ { field: 'status', headerName: 'Status' },
132
+ {
133
+ field: 'creator',
134
+ headerName: 'Creator',
135
+ valueGetter: (params) => {
136
+ if (!params.data || !params.data.creator) return '—';
137
+ return typeof params.data.creator === 'object' ? params.data.creator.username || '—' : params.data.creator;
138
+ },
139
+ editable: false,
140
+ },
141
+ {
142
+ field: 'thumbnail',
143
+ headerName: 'Thumbnail',
144
+ width: 80,
145
+ cellRenderer: ThumbnailPreviewGridRenderer,
146
+ editable: false,
147
+ sortable: false,
148
+ filter: false,
149
+ },
150
+ {
151
+ field: 'createdAt',
152
+ headerName: 'createdAt',
153
+ cellDataType: 'date',
154
+ editable: false,
155
+ },
156
+ {
157
+ field: 'updatedAt',
158
+ headerName: 'updatedAt',
159
+ cellDataType: 'date',
160
+ editable: false,
161
+ },
162
+ {
163
+ field: 'load-action',
164
+ headerName: '',
165
+ width: 100,
166
+ cellRenderer: LoadInstanceActionGridRenderer,
167
+ editable: false,
168
+ },
169
+ ],
170
+ defaultColKeyFocus: 'code',
171
+ ServiceProvider: CyberiaInstanceService,
172
+ customEvent,
173
+ });
174
+
175
+ // Clear all button: admin only
176
+ if (!commonAdminGuard(role)) {
177
+ const cleanBtn = s(`.management-table-btn-clean-${idModal}`);
178
+ if (cleanBtn) cleanBtn.classList.add('hide');
179
+ }
180
+
181
+ if (readyRowDataEvent) {
182
+ if (!DefaultManagement.Tokens[idModal].readyRowDataEvent)
183
+ DefaultManagement.Tokens[idModal].readyRowDataEvent = {};
184
+
185
+ for (const key of Object.keys(readyRowDataEvent)) {
186
+ DefaultManagement.Tokens[idModal].readyRowDataEvent[key] = readyRowDataEvent[key];
187
+ }
188
+ }
189
+
190
+ return renderResult;
191
+ };
192
+ }
193
+
194
+ export { CyberiaInstanceManagement };
@@ -0,0 +1,116 @@
1
+ import { Auth } from '../../components/core/Auth.js';
2
+ import { loggerFactory } from '../../components/core/Logger.js';
3
+ import { getApiBaseUrl, headersFactory, payloadFactory, buildQueryUrl } from '../core/core.service.js';
4
+ const logger = loggerFactory(import.meta);
5
+ logger.info('Load service');
6
+ const endpoint = 'cyberia-instance';
7
+ class CyberiaInstanceService {
8
+ static post = (options = { id: '', body: {} }) =>
9
+ new Promise((resolve, reject) =>
10
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
11
+ method: 'POST',
12
+ headers: headersFactory(),
13
+ credentials: 'include',
14
+ body: payloadFactory(options.body),
15
+ })
16
+ .then(async (res) => {
17
+ return await res.json();
18
+ })
19
+ .then((res) => {
20
+ logger.info(res);
21
+ return resolve(res);
22
+ })
23
+ .catch((error) => {
24
+ logger.error(error);
25
+ return reject(error);
26
+ }),
27
+ );
28
+ static put = (options = { id: '', body: {} }) =>
29
+ new Promise((resolve, reject) =>
30
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
31
+ method: 'PUT',
32
+ headers: headersFactory(),
33
+ credentials: 'include',
34
+ body: payloadFactory(options.body),
35
+ })
36
+ .then(async (res) => {
37
+ return await res.json();
38
+ })
39
+ .then((res) => {
40
+ logger.info(res);
41
+ return resolve(res);
42
+ })
43
+ .catch((error) => {
44
+ logger.error(error);
45
+ return reject(error);
46
+ }),
47
+ );
48
+ static get = (options = {}) => {
49
+ const { id, page, limit, filterModel, sortModel, sort, asc, order } = options;
50
+ const url = buildQueryUrl(getApiBaseUrl({ id, endpoint }), {
51
+ page,
52
+ limit,
53
+ filterModel,
54
+ sortModel,
55
+ sort,
56
+ asc,
57
+ order,
58
+ });
59
+ return new Promise((resolve, reject) =>
60
+ fetch(url.toString(), {
61
+ method: 'GET',
62
+ headers: headersFactory(),
63
+ credentials: 'include',
64
+ })
65
+ .then(async (res) => {
66
+ return await res.json();
67
+ })
68
+ .then((res) => {
69
+ logger.info(res);
70
+ return resolve(res);
71
+ })
72
+ .catch((error) => {
73
+ logger.error(error);
74
+ return reject(error);
75
+ }),
76
+ );
77
+ };
78
+ static portalConnect = (options = { id: '' }) =>
79
+ new Promise((resolve, reject) =>
80
+ fetch(getApiBaseUrl({ id: `${options.id}/portal-connect`, endpoint }), {
81
+ method: 'GET',
82
+ headers: headersFactory(),
83
+ credentials: 'include',
84
+ })
85
+ .then(async (res) => res.json())
86
+ .then((res) => {
87
+ logger.info(res);
88
+ return resolve(res);
89
+ })
90
+ .catch((error) => {
91
+ logger.error(error);
92
+ return reject(error);
93
+ }),
94
+ );
95
+ static delete = (options = { id: '', body: {} }) =>
96
+ new Promise((resolve, reject) =>
97
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
98
+ method: 'DELETE',
99
+ headers: headersFactory(),
100
+ credentials: 'include',
101
+ body: payloadFactory(options.body),
102
+ })
103
+ .then(async (res) => {
104
+ return await res.json();
105
+ })
106
+ .then((res) => {
107
+ logger.info(res);
108
+ return resolve(res);
109
+ })
110
+ .catch((error) => {
111
+ logger.error(error);
112
+ return reject(error);
113
+ }),
114
+ );
115
+ }
116
+ export { CyberiaInstanceService };
@@ -0,0 +1,99 @@
1
+ import { Auth } from '../../components/core/Auth.js';
2
+ import { loggerFactory } from '../../components/core/Logger.js';
3
+ import { getApiBaseUrl, headersFactory, payloadFactory, buildQueryUrl } from '../core/core.service.js';
4
+ const logger = loggerFactory(import.meta);
5
+ logger.info('Load service');
6
+ const endpoint = 'cyberia-instance-conf';
7
+ class CyberiaInstanceConfService {
8
+ static post = (options = { id: '', body: {} }) =>
9
+ new Promise((resolve, reject) =>
10
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
11
+ method: 'POST',
12
+ headers: headersFactory(),
13
+ credentials: 'include',
14
+ body: payloadFactory(options.body),
15
+ })
16
+ .then(async (res) => {
17
+ return await res.json();
18
+ })
19
+ .then((res) => {
20
+ logger.info(res);
21
+ return resolve(res);
22
+ })
23
+ .catch((error) => {
24
+ logger.error(error);
25
+ return reject(error);
26
+ }),
27
+ );
28
+ static put = (options = { id: '', body: {} }) =>
29
+ new Promise((resolve, reject) =>
30
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
31
+ method: 'PUT',
32
+ headers: headersFactory(),
33
+ credentials: 'include',
34
+ body: payloadFactory(options.body),
35
+ })
36
+ .then(async (res) => {
37
+ return await res.json();
38
+ })
39
+ .then((res) => {
40
+ logger.info(res);
41
+ return resolve(res);
42
+ })
43
+ .catch((error) => {
44
+ logger.error(error);
45
+ return reject(error);
46
+ }),
47
+ );
48
+ static get = (options = {}) => {
49
+ const { id, page, limit, filterModel, sortModel, sort, asc, order } = options;
50
+ const url = buildQueryUrl(getApiBaseUrl({ id, endpoint }), {
51
+ page,
52
+ limit,
53
+ filterModel,
54
+ sortModel,
55
+ sort,
56
+ asc,
57
+ order,
58
+ });
59
+ return new Promise((resolve, reject) =>
60
+ fetch(url.toString(), {
61
+ method: 'GET',
62
+ headers: headersFactory(),
63
+ credentials: 'include',
64
+ })
65
+ .then(async (res) => {
66
+ return await res.json();
67
+ })
68
+ .then((res) => {
69
+ logger.info(res);
70
+ return resolve(res);
71
+ })
72
+ .catch((error) => {
73
+ logger.error(error);
74
+ return reject(error);
75
+ }),
76
+ );
77
+ };
78
+ static delete = (options = { id: '', body: {} }) =>
79
+ new Promise((resolve, reject) =>
80
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
81
+ method: 'DELETE',
82
+ headers: headersFactory(),
83
+ credentials: 'include',
84
+ body: payloadFactory(options.body),
85
+ })
86
+ .then(async (res) => {
87
+ return await res.json();
88
+ })
89
+ .then((res) => {
90
+ logger.info(res);
91
+ return resolve(res);
92
+ })
93
+ .catch((error) => {
94
+ logger.error(error);
95
+ return reject(error);
96
+ }),
97
+ );
98
+ }
99
+ export { CyberiaInstanceConfService };
@@ -0,0 +1,193 @@
1
+ import { BtnIcon } from '../../components/core/BtnIcon.js';
2
+ import { getId, commonUserGuard, commonAdminGuard } from '../../components/core/CommonJs.js';
3
+ import { EventsUI } from '../../components/core/EventsUI.js';
4
+ import { NotificationManager } from '../../components/core/NotificationManager.js';
5
+ import { s } from '../../components/core/VanillaJs.js';
6
+ import { DefaultManagement } from '../default/default.management.js';
7
+ import { CyberiaMapService } from './cyberia-map.service.js';
8
+ import { getApiBaseUrl } from '../core/core.service.js';
9
+
10
+ class CyberiaMapManagement {
11
+ static instance = async (options = {}) => {
12
+ const { idModal: rawIdModal, customEvent, readyRowDataEvent, loadMapCallback, appStore } = options;
13
+ const idModal = rawIdModal || 'modal-cyberia-map-management';
14
+ const role = appStore?.Data?.user?.main?.model?.user?.role || 'guest';
15
+
16
+ class LoadMapActionGridRenderer {
17
+ eGui;
18
+ tokens;
19
+
20
+ async init(params) {
21
+ this.eGui = document.createElement('div');
22
+ this.tokens = {};
23
+
24
+ const cellRenderId = getId(this.tokens, 'load-map-');
25
+ this.tokens[cellRenderId] = {};
26
+
27
+ this.eGui.innerHTML = html`${await BtnIcon.instance({
28
+ label: html`<div class="abs center">
29
+ <i class="fa-solid fa-upload"></i>
30
+ </div>`,
31
+ class: `in fll section-mp management-table-btn-mini management-table-btn-load-map-${idModal}-${cellRenderId} ${
32
+ !params.data._id ? 'hide' : ''
33
+ }`,
34
+ })}`;
35
+
36
+ setTimeout(() => {
37
+ EventsUI.onClick(
38
+ `.management-table-btn-load-map-${idModal}-${cellRenderId}`,
39
+ async () => {
40
+ if (!params.data._id) return;
41
+ const result = await CyberiaMapService.get({ id: params.data._id });
42
+ if (result.status === 'success' && result.data) {
43
+ if (loadMapCallback) await loadMapCallback(result.data);
44
+ NotificationManager.Push({
45
+ html: `Map "${result.data.name || result.data.code || params.data._id}" loaded`,
46
+ status: 'success',
47
+ });
48
+ } else {
49
+ NotificationManager.Push({
50
+ html: result.message || 'Failed to load map',
51
+ status: 'error',
52
+ });
53
+ }
54
+ },
55
+ { context: 'modal' },
56
+ );
57
+ });
58
+ }
59
+
60
+ getGui() {
61
+ return this.eGui;
62
+ }
63
+
64
+ refresh(params) {
65
+ return true;
66
+ }
67
+ }
68
+
69
+ class ThumbnailPreviewGridRenderer {
70
+ eGui;
71
+
72
+ async init(params) {
73
+ this.eGui = document.createElement('div');
74
+ const { data } = params;
75
+
76
+ if (!data || !data.thumbnail) {
77
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
78
+ return;
79
+ }
80
+
81
+ const thumbnailId = typeof data.thumbnail === 'object' ? data.thumbnail._id : data.thumbnail;
82
+ if (!thumbnailId) {
83
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
84
+ return;
85
+ }
86
+
87
+ const imageSrc = getApiBaseUrl({ id: thumbnailId, endpoint: 'file/blob' });
88
+
89
+ this.eGui.innerHTML = html`
90
+ <div style="position: relative; width: 60px; height: 60px;">
91
+ <img
92
+ src="${imageSrc}"
93
+ style="width: 60px; height: 60px; object-fit: cover; display: block; border: 1px solid #555;"
94
+ onload="this.style.display='block'; this.nextElementSibling.style.display='none';"
95
+ onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"
96
+ />
97
+ <div
98
+ style="position: absolute; top: 0; left: 0; width: 60px; height: 60px; display: none; align-items: center; justify-content: center;"
99
+ >
100
+ <i class="fas fa-image" style="font-size: 24px; color: #999;"></i>
101
+ </div>
102
+ </div>
103
+ `;
104
+ }
105
+
106
+ getGui() {
107
+ return this.eGui;
108
+ }
109
+
110
+ refresh(params) {
111
+ return true;
112
+ }
113
+ }
114
+
115
+ const renderResult = await DefaultManagement.instance({
116
+ idModal,
117
+ serviceId: 'cyberia-map-management',
118
+ entity: 'cyberia-map',
119
+ permissions: {
120
+ add: false,
121
+ remove: commonUserGuard(role),
122
+ reload: true,
123
+ },
124
+ usePagination: true,
125
+ columnDefs: [
126
+ { field: 'code', headerName: 'Code' },
127
+ { field: 'name', headerName: 'Name' },
128
+ { field: 'description', headerName: 'Description' },
129
+ { field: 'tags', headerName: 'Tags' },
130
+ { field: 'status', headerName: 'Status' },
131
+ {
132
+ field: 'creator',
133
+ headerName: 'Creator',
134
+ valueGetter: (params) => {
135
+ if (!params.data || !params.data.creator) return '—';
136
+ return typeof params.data.creator === 'object' ? params.data.creator.username || '—' : params.data.creator;
137
+ },
138
+ editable: false,
139
+ },
140
+ {
141
+ field: 'thumbnail',
142
+ headerName: 'Thumbnail',
143
+ width: 80,
144
+ cellRenderer: ThumbnailPreviewGridRenderer,
145
+ editable: false,
146
+ sortable: false,
147
+ filter: false,
148
+ },
149
+ {
150
+ field: 'createdAt',
151
+ headerName: 'createdAt',
152
+ cellDataType: 'date',
153
+ editable: false,
154
+ },
155
+ {
156
+ field: 'updatedAt',
157
+ headerName: 'updatedAt',
158
+ cellDataType: 'date',
159
+ editable: false,
160
+ },
161
+ {
162
+ field: 'load-action',
163
+ headerName: '',
164
+ width: 100,
165
+ cellRenderer: LoadMapActionGridRenderer,
166
+ editable: false,
167
+ },
168
+ ],
169
+ defaultColKeyFocus: 'code',
170
+ ServiceProvider: CyberiaMapService,
171
+ customEvent,
172
+ });
173
+
174
+ // Clear all button: admin only
175
+ if (!commonAdminGuard(role)) {
176
+ const cleanBtn = s(`.management-table-btn-clean-${idModal}`);
177
+ if (cleanBtn) cleanBtn.classList.add('hide');
178
+ }
179
+
180
+ if (readyRowDataEvent) {
181
+ if (!DefaultManagement.Tokens[idModal].readyRowDataEvent)
182
+ DefaultManagement.Tokens[idModal].readyRowDataEvent = {};
183
+
184
+ for (const key of Object.keys(readyRowDataEvent)) {
185
+ DefaultManagement.Tokens[idModal].readyRowDataEvent[key] = readyRowDataEvent[key];
186
+ }
187
+ }
188
+
189
+ return renderResult;
190
+ };
191
+ }
192
+
193
+ export { CyberiaMapManagement };