cyberia 3.2.5 → 3.2.12

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 (381) hide show
  1. package/.github/workflows/engine-cyberia.cd.yml +8 -2
  2. package/.github/workflows/npmpkg.ci.yml +1 -0
  3. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  4. package/.github/workflows/release.cd.yml +2 -2
  5. package/.vscode/extensions.json +9 -9
  6. package/.vscode/settings.json +20 -4
  7. package/CHANGELOG.md +563 -1
  8. package/CLI-HELP.md +130 -34
  9. package/Dockerfile +0 -4
  10. package/README.md +194 -607
  11. package/bin/build.js +42 -12
  12. package/bin/build.template.js +187 -0
  13. package/bin/cyberia.js +1367 -281
  14. package/bin/deploy.js +582 -3
  15. package/bin/index.js +1367 -281
  16. package/bump.config.js +26 -0
  17. package/conf.js +195 -111
  18. package/deployment.yaml +6 -222
  19. package/hardhat/package-lock.json +118 -149
  20. package/hardhat/package.json +5 -4
  21. package/jsconfig.json +1 -1
  22. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
  23. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
  24. package/manifests/deployment/dd-cyberia-development/deployment.yaml +6 -222
  25. package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
  26. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  27. package/manifests/deployment/dd-test-development/deployment.yaml +138 -66
  28. package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
  29. package/manifests/kind-config-dev.yaml +8 -0
  30. package/manifests/lxd/lxd-admin-profile.yaml +12 -3
  31. package/manifests/mongodb/pv-pvc.yaml +44 -8
  32. package/manifests/mongodb/statefulset.yaml +55 -68
  33. package/manifests/mongodb-4.4/headless-service.yaml +10 -0
  34. package/manifests/mongodb-4.4/kustomization.yaml +3 -1
  35. package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
  36. package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
  37. package/manifests/mongodb-4.4/statefulset.yaml +79 -0
  38. package/manifests/mongodb-4.4/storage-class.yaml +9 -0
  39. package/manifests/valkey/statefulset.yaml +1 -1
  40. package/manifests/valkey/valkey-nodeport.yaml +17 -0
  41. package/package.json +45 -24
  42. package/proxy.yaml +10 -118
  43. package/scripts/ipxe-setup.sh +52 -49
  44. package/scripts/k3s-node-setup.sh +83 -48
  45. package/scripts/lxd-vm-setup.sh +193 -8
  46. package/scripts/maas-nat-firewalld.sh +145 -0
  47. package/scripts/nat-iptables.sh +103 -18
  48. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
  49. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
  50. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
  51. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +91 -36
  52. package/src/api/core/core.controller.js +10 -10
  53. package/src/api/core/core.router.js +19 -14
  54. package/src/api/core/core.service.js +15 -15
  55. package/src/api/crypto/crypto.controller.js +8 -8
  56. package/src/api/crypto/crypto.router.js +18 -12
  57. package/src/api/crypto/crypto.service.js +11 -11
  58. package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
  59. package/src/api/cyberia-action/cyberia-action.model.js +87 -0
  60. package/src/api/cyberia-action/cyberia-action.router.js +31 -0
  61. package/src/api/cyberia-action/cyberia-action.service.js +42 -0
  62. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
  63. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
  64. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
  65. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
  66. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
  67. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
  68. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
  69. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +22 -22
  70. package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
  71. package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
  72. package/src/api/cyberia-entity/cyberia-entity.service.js +15 -15
  73. package/src/api/cyberia-instance/cyberia-fallback-world.js +83 -198
  74. package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
  75. package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
  76. package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
  77. package/src/api/cyberia-instance/cyberia-instance.service.js +32 -67
  78. package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
  79. package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
  80. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
  81. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +18 -49
  82. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
  83. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +19 -15
  84. package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
  85. package/src/api/cyberia-map/cyberia-map.router.js +35 -30
  86. package/src/api/cyberia-map/cyberia-map.service.js +17 -17
  87. package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
  88. package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
  89. package/src/api/cyberia-quest/cyberia-quest.router.js +31 -0
  90. package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
  91. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
  92. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
  93. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +31 -0
  94. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
  95. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
  96. package/src/api/default/default.controller.js +10 -10
  97. package/src/api/default/default.router.js +22 -18
  98. package/src/api/default/default.service.js +15 -15
  99. package/src/api/document/document.controller.js +12 -12
  100. package/src/api/document/document.model.js +10 -16
  101. package/src/api/document/document.router.js +28 -23
  102. package/src/api/document/document.service.js +100 -23
  103. package/src/api/file/file.controller.js +8 -8
  104. package/src/api/file/file.model.js +10 -10
  105. package/src/api/file/file.router.js +19 -13
  106. package/src/api/file/file.service.js +45 -43
  107. package/src/api/instance/instance.controller.js +10 -10
  108. package/src/api/instance/instance.model.js +4 -10
  109. package/src/api/instance/instance.router.js +29 -24
  110. package/src/api/instance/instance.service.js +16 -16
  111. package/src/api/ipfs/ipfs.controller.js +12 -12
  112. package/src/api/ipfs/ipfs.model.js +4 -13
  113. package/src/api/ipfs/ipfs.router.js +21 -16
  114. package/src/api/ipfs/ipfs.service.js +22 -36
  115. package/src/api/object-layer/object-layer.controller.js +12 -12
  116. package/src/api/object-layer/object-layer.model.js +4 -17
  117. package/src/api/object-layer/object-layer.router.js +512 -507
  118. package/src/api/object-layer/object-layer.service.js +29 -26
  119. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
  120. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
  121. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
  122. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +19 -15
  123. package/src/api/test/test.controller.js +8 -8
  124. package/src/api/test/test.router.js +17 -12
  125. package/src/api/test/test.service.js +8 -8
  126. package/src/api/types.js +24 -0
  127. package/src/api/user/guest.service.js +100 -0
  128. package/src/api/user/user.controller.js +6 -6
  129. package/src/api/user/user.model.js +8 -13
  130. package/src/api/user/user.router.js +297 -288
  131. package/src/api/user/user.service.js +103 -55
  132. package/src/cli/baremetal.js +132 -101
  133. package/src/cli/cluster.js +732 -217
  134. package/src/cli/db.js +106 -62
  135. package/src/cli/deploy.js +260 -149
  136. package/src/cli/fs.js +90 -9
  137. package/src/cli/image.js +43 -1
  138. package/src/cli/index.js +106 -16
  139. package/src/cli/ipfs.js +4 -6
  140. package/src/cli/kubectl.js +4 -1
  141. package/src/cli/lxd.js +1099 -223
  142. package/src/cli/monitor.js +9 -3
  143. package/src/cli/release.js +336 -86
  144. package/src/cli/repository.js +136 -53
  145. package/src/cli/run.js +599 -76
  146. package/src/cli/secrets.js +11 -2
  147. package/src/cli/ssh.js +1 -1
  148. package/src/cli/static.js +43 -115
  149. package/src/cli/test.js +9 -3
  150. package/src/client/Cryptokoyn.index.js +18 -21
  151. package/src/client/CyberiaPortal.index.js +19 -23
  152. package/src/client/Default.index.js +30 -36
  153. package/src/client/Itemledger.index.js +20 -26
  154. package/src/client/Underpost.index.js +19 -23
  155. package/src/client/components/core/404.js +4 -4
  156. package/src/client/components/core/500.js +4 -4
  157. package/src/client/components/core/Account.js +73 -60
  158. package/src/client/components/core/AgGrid.js +23 -33
  159. package/src/client/components/core/Alert.js +12 -13
  160. package/src/client/components/core/AppStore.js +1 -1
  161. package/src/client/components/core/Auth.js +40 -37
  162. package/src/client/components/core/Badge.js +7 -13
  163. package/src/client/components/core/BtnIcon.js +15 -17
  164. package/src/client/components/core/CalendarCore.js +42 -63
  165. package/src/client/components/core/Chat.js +13 -15
  166. package/src/client/components/core/ClientEvents.js +163 -0
  167. package/src/client/components/core/ColorPaletteElement.js +309 -0
  168. package/src/client/components/core/Content.js +17 -14
  169. package/src/client/components/core/Css.js +15 -71
  170. package/src/client/components/core/CssCore.js +12 -16
  171. package/src/client/components/core/D3Chart.js +4 -4
  172. package/src/client/components/core/Docs.js +64 -91
  173. package/src/client/components/core/DropDown.js +69 -91
  174. package/src/client/components/core/EventBus.js +96 -0
  175. package/src/client/components/core/EventsUI.js +14 -17
  176. package/src/client/components/core/FileExplorer.js +96 -228
  177. package/src/client/components/core/FullScreen.js +47 -75
  178. package/src/client/components/core/Input.js +24 -69
  179. package/src/client/components/core/Keyboard.js +25 -18
  180. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  181. package/src/client/components/core/LoadingAnimation.js +25 -31
  182. package/src/client/components/core/LogIn.js +41 -41
  183. package/src/client/components/core/LogOut.js +23 -14
  184. package/src/client/components/core/Modal.js +544 -219
  185. package/src/client/components/core/NotificationManager.js +14 -18
  186. package/src/client/components/core/Panel.js +54 -50
  187. package/src/client/components/core/PanelForm.js +81 -177
  188. package/src/client/components/core/Polyhedron.js +110 -214
  189. package/src/client/components/core/PublicProfile.js +39 -32
  190. package/src/client/components/core/Recover.js +48 -44
  191. package/src/client/components/core/Responsive.js +88 -32
  192. package/src/client/components/core/RichText.js +9 -18
  193. package/src/client/components/core/Router.js +24 -3
  194. package/src/client/components/core/SearchBox.js +37 -37
  195. package/src/client/components/core/SignUp.js +39 -30
  196. package/src/client/components/core/SocketIo.js +31 -2
  197. package/src/client/components/core/SocketIoHandler.js +6 -6
  198. package/src/client/components/core/ToggleSwitch.js +8 -20
  199. package/src/client/components/core/ToolTip.js +5 -17
  200. package/src/client/components/core/Translate.js +56 -59
  201. package/src/client/components/core/Validator.js +26 -16
  202. package/src/client/components/core/Wallet.js +15 -26
  203. package/src/client/components/core/Worker.js +211 -276
  204. package/src/client/components/core/windowGetDimensions.js +7 -7
  205. package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
  206. package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
  207. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
  208. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
  209. package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
  210. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
  211. package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
  212. package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
  213. package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
  214. package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
  215. package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
  216. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
  217. package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
  218. package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
  219. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
  220. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
  221. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
  222. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
  223. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
  224. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
  225. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
  226. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
  227. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
  228. package/src/client/components/default/CssDefault.js +12 -12
  229. package/src/client/components/default/LogInDefault.js +6 -4
  230. package/src/client/components/default/LogOutDefault.js +6 -4
  231. package/src/client/components/default/RouterDefault.js +47 -0
  232. package/src/client/components/default/SettingsDefault.js +4 -4
  233. package/src/client/components/default/SignUpDefault.js +6 -4
  234. package/src/client/components/default/TranslateDefault.js +3 -3
  235. package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
  236. package/src/client/components/itemledger/CssItemledger.js +15 -15
  237. package/src/client/components/itemledger/LogInItemledger.js +6 -4
  238. package/src/client/components/itemledger/LogOutItemledger.js +6 -4
  239. package/src/client/components/itemledger/RouterItemledger.js +38 -0
  240. package/src/client/components/itemledger/SettingsItemledger.js +4 -4
  241. package/src/client/components/itemledger/SignUpItemledger.js +6 -4
  242. package/src/client/components/itemledger/TranslateItemledger.js +3 -3
  243. package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
  244. package/src/client/components/underpost/CssUnderpost.js +14 -14
  245. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
  246. package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
  247. package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
  248. package/src/client/components/underpost/LogInUnderpost.js +6 -4
  249. package/src/client/components/underpost/LogOutUnderpost.js +6 -4
  250. package/src/client/components/underpost/RouterUnderpost.js +45 -0
  251. package/src/client/components/underpost/SettingsUnderpost.js +4 -4
  252. package/src/client/components/underpost/SignUpUnderpost.js +6 -4
  253. package/src/client/components/underpost/TranslateUnderpost.js +4 -4
  254. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
  255. package/src/client/public/cyberia-docs/ARCHITECTURE.md +83 -0
  256. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
  257. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +291 -0
  258. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +278 -0
  259. package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
  260. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
  261. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
  262. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
  263. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
  264. package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
  265. package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
  266. package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
  267. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
  268. package/src/client/services/core/core.service.js +17 -49
  269. package/src/client/services/crypto/crypto.service.js +8 -13
  270. package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
  271. package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
  272. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
  273. package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
  274. package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
  275. package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
  276. package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
  277. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
  278. package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
  279. package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
  280. package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
  281. package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
  282. package/src/client/services/default/default.management.js +159 -267
  283. package/src/client/services/default/default.service.js +10 -16
  284. package/src/client/services/document/document.service.js +14 -19
  285. package/src/client/services/file/file.service.js +8 -13
  286. package/src/client/services/instance/instance.management.js +5 -5
  287. package/src/client/services/instance/instance.service.js +10 -15
  288. package/src/client/services/ipfs/ipfs.service.js +12 -18
  289. package/src/client/services/object-layer/object-layer.management.js +12 -12
  290. package/src/client/services/object-layer/object-layer.service.js +20 -26
  291. package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
  292. package/src/client/services/test/test.service.js +8 -13
  293. package/src/client/services/user/guest.service.js +86 -0
  294. package/src/client/services/user/user.management.js +5 -5
  295. package/src/client/services/user/user.service.js +14 -20
  296. package/src/client/ssr/body/404.js +3 -3
  297. package/src/client/ssr/body/500.js +3 -3
  298. package/src/client/ssr/body/CacheControl.js +5 -2
  299. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  300. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
  301. package/src/client/ssr/head/PwaItemledger.js +197 -60
  302. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  303. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  304. package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
  305. package/src/client/ssr/{offline → views}/Maintenance.js +12 -11
  306. package/src/client/ssr/{offline → views}/NoNetworkConnection.js +3 -3
  307. package/src/client/ssr/{pages → views}/Test.js +2 -2
  308. package/src/client/sw/core.sw.js +274 -0
  309. package/src/db/DataBaseProvider.js +115 -15
  310. package/src/db/mariadb/MariaDB.js +2 -1
  311. package/src/db/mongo/MongoBootstrap.js +657 -0
  312. package/src/db/mongo/MongooseDB.js +129 -21
  313. package/src/grpc/cyberia/grpc-server.js +185 -105
  314. package/src/index.js +1 -1
  315. package/src/runtime/cyberia-client/Dockerfile +101 -0
  316. package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
  317. package/src/runtime/cyberia-server/Dockerfile +62 -0
  318. package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
  319. package/src/runtime/express/Dockerfile +4 -4
  320. package/src/runtime/express/Express.js +2 -2
  321. package/src/runtime/lampp/Dockerfile +8 -7
  322. package/src/runtime/wp/Dockerfile +11 -17
  323. package/src/runtime/wp/Wp.js +8 -5
  324. package/src/server/atlas-sprite-sheet-generator.js +4 -2
  325. package/src/server/auth.js +2 -2
  326. package/src/server/client-build-docs.js +46 -47
  327. package/src/server/client-build.js +371 -132
  328. package/src/server/client-formatted.js +47 -16
  329. package/src/server/conf.js +91 -87
  330. package/src/server/data-query.js +32 -20
  331. package/src/server/dns.js +22 -0
  332. package/src/server/ipfs-client.js +232 -91
  333. package/src/server/object-layer.js +1 -6
  334. package/src/server/process.js +192 -45
  335. package/src/server/proxy.js +9 -2
  336. package/src/server/runtime.js +1 -1
  337. package/src/server/semantic-layer-generator-floor.js +11 -51
  338. package/src/server/semantic-layer-generator-resource.js +259 -0
  339. package/src/server/semantic-layer-generator-skin.js +41 -171
  340. package/src/server/semantic-layer-generator.js +122 -14
  341. package/src/server/shape-generator.js +108 -0
  342. package/src/server/start.js +34 -8
  343. package/src/server/valkey.js +143 -235
  344. package/src/ws/IoInterface.js +16 -16
  345. package/src/ws/core/channels/core.ws.chat.js +11 -11
  346. package/src/ws/core/channels/core.ws.mailer.js +29 -29
  347. package/src/ws/core/channels/core.ws.stream.js +19 -19
  348. package/src/ws/core/core.ws.connection.js +8 -8
  349. package/src/ws/core/core.ws.server.js +6 -5
  350. package/src/ws/default/channels/default.ws.main.js +10 -10
  351. package/src/ws/default/default.ws.connection.js +4 -4
  352. package/src/ws/default/default.ws.server.js +4 -3
  353. package/tsconfig.docs.json +15 -0
  354. package/typedoc.dd-cyberia.json +29 -0
  355. package/typedoc.json +29 -0
  356. package/WHITE-PAPER.md +0 -1540
  357. package/bin/file.js +0 -196
  358. package/bin/vs.js +0 -74
  359. package/bin/zed.js +0 -84
  360. package/hardhat/README.md +0 -531
  361. package/hardhat/WHITE-PAPER.md +0 -1540
  362. package/jsdoc.dd-cyberia.json +0 -68
  363. package/jsdoc.json +0 -68
  364. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -413
  365. package/src/api/object-layer/README.md +0 -672
  366. package/src/client/components/core/ColorPalette.js +0 -5267
  367. package/src/client/components/core/JoyStick.js +0 -80
  368. package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
  369. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -223
  370. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
  371. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
  372. package/src/client/components/default/RoutesDefault.js +0 -49
  373. package/src/client/components/itemledger/RoutesItemledger.js +0 -40
  374. package/src/client/components/underpost/RoutesUnderpost.js +0 -47
  375. package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
  376. package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
  377. package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
  378. package/src/client/sw/default.sw.js +0 -127
  379. package/src/client/sw/template.sw.js +0 -84
  380. package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
  381. package/src/grpc/cyberia/README.md +0 -326
@@ -0,0 +1,152 @@
1
+ /**
2
+ * @module src/api/cyberia-client-hints/cyberia-client-hints.service.js
3
+ *
4
+ * Read-only service layer for client presentation hints.
5
+ *
6
+ * Resolution order (highest priority first):
7
+ * 1. CyberiaClientHints collection — the dedicated presentation-overrides
8
+ * collection. Always preferred when present.
9
+ * 2. Compatibility read on CyberiaInstanceConf with the same `code` —
10
+ * covers instances seeded before CyberiaClientHints existed.
11
+ * 3. Canonical compile-time defaults from
12
+ * SharedDefaultsCyberia.js. The C client bakes the
13
+ * same defaults at compile time, so this branch returns exactly the
14
+ * values the client already has.
15
+ *
16
+ * Caching: in-memory TTL cache keyed by instance code. Read-only on the
17
+ * hot path; cache writes happen on cache miss + DB hit. CMS writes that
18
+ * mutate the underlying collection should call `clientHintsInvalidate(code)`.
19
+ *
20
+ * Output is a plain JSON-friendly object whose shape matches the C
21
+ * client's compile-time layout.
22
+ */
23
+
24
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
25
+ import { loggerFactory } from '../../server/logger.js';
26
+ import { resolveHostKeyContext } from '../../server/conf.js';
27
+ import {
28
+ buildClientHints,
29
+ CYBERIA_CLIENT_HINTS_DEFAULTS,
30
+ } from '../../client/components/cyberia/SharedDefaultsCyberia.js';
31
+
32
+ const logger = loggerFactory(import.meta);
33
+
34
+ // TTL chosen long enough that bursty client fetches are absorbed, short
35
+ // enough that an editor change shows up within ~30s without manual flush.
36
+ const CACHE_TTL_MS = 30_000;
37
+
38
+ // One per instance code. value: { data, expiresAt }
39
+ const cache = new Map();
40
+
41
+ function now() {
42
+ return Date.now();
43
+ }
44
+
45
+ function cacheGet(code) {
46
+ const entry = cache.get(code);
47
+ if (!entry) return null;
48
+ if (entry.expiresAt < now()) {
49
+ cache.delete(code);
50
+ return null;
51
+ }
52
+ return entry.data;
53
+ }
54
+
55
+ function cacheSet(code, data) {
56
+ cache.set(code, { data, expiresAt: now() + CACHE_TTL_MS });
57
+ }
58
+
59
+ /** Invalidate a cache entry. CMS write paths should call this after
60
+ * mutating either CyberiaClientHints or CyberiaInstanceConf for
61
+ * the given code. */
62
+ export function clientHintsInvalidate(code) {
63
+ if (code) {
64
+ cache.delete(code);
65
+ } else {
66
+ cache.clear();
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Resolve the merged client-hints document for an instance code.
72
+ *
73
+ * @param {string} code
74
+ * @param {Object} options Engine routing context.
75
+ * @param {string} [options.host='default'] DataBaseProviderService host key.
76
+ * @param {string} [options.path='/'] DataBaseProviderService path key.
77
+ * @returns {Promise<{data: object, source: 'cache'|'presentation-hints'|'instance-conf'|'defaults'}>}
78
+ */
79
+ export async function resolveClientHints(code, options = {}) {
80
+ if (code) {
81
+ const cached = cacheGet(code);
82
+ if (cached) {
83
+ return { data: cached, source: 'cache' };
84
+ }
85
+ }
86
+
87
+ const host = options.host || 'default';
88
+ const path = options.path || '/';
89
+ const context = { host, path };
90
+ const id = resolveHostKeyContext(context);
91
+
92
+ let HintsModel = null;
93
+ let ConfModel = null;
94
+ try {
95
+ HintsModel = DataBaseProviderService.getModel('CyberiaClientHints', context);
96
+ } catch {
97
+ // model may not be mounted on this context
98
+ }
99
+ try {
100
+ ConfModel = DataBaseProviderService.getModel('CyberiaInstanceConf', context);
101
+ } catch {
102
+ // model may not be mounted on this context
103
+ }
104
+
105
+ if (!HintsModel && !ConfModel) {
106
+ logger.warn('client-hints: mongoose models not available for', id, '— returning defaults');
107
+ return { data: CYBERIA_CLIENT_HINTS_DEFAULTS, source: 'defaults' };
108
+ }
109
+
110
+ // 1. Preferred — CyberiaClientHints collection (src/api/cyberia-client-hints/cyberia-client-hints.model.js).
111
+ if (HintsModel && code) {
112
+ const hint = await HintsModel.findOne({ code }).lean().catch(() => null);
113
+ if (hint) {
114
+ const merged = buildClientHints(hint);
115
+ cacheSet(code, merged);
116
+ return { data: merged, source: 'presentation-hints' };
117
+ }
118
+ }
119
+
120
+ // 2. Compatibility read — for instances seeded before CyberiaClientHints
121
+ // existed, look up the same code in CyberiaInstanceConf and read its
122
+ // presentation-shaped fields directly.
123
+ if (ConfModel && code) {
124
+ const fromConf =
125
+ (await ConfModel.findOne({ code }).lean().catch(() => null)) ||
126
+ (await ConfModel.findById(code).lean().catch(() => null));
127
+ if (fromConf) {
128
+ const merged = buildClientHints(fromConf);
129
+ cacheSet(code, merged);
130
+ return { data: merged, source: 'instance-conf' };
131
+ }
132
+ }
133
+
134
+ // 3. Any available CyberiaClientHints document — used when the requested
135
+ // code has no record yet but another instance (e.g. the one the Go
136
+ // server is currently running) does. This avoids pure built-in
137
+ // defaults in fresh environments where only a different code is seeded.
138
+ if (HintsModel) {
139
+ const anyHint = await HintsModel.findOne({}).lean().catch(() => null);
140
+ if (anyHint) {
141
+ const merged = buildClientHints(anyHint);
142
+ // Cache under the requested code so subsequent requests are fast,
143
+ // but with a shorter TTL (5 s) so a proper seed wins quickly.
144
+ if (code) cache.set(code, { data: merged, expiresAt: now() + 5_000 });
145
+ return { data: merged, source: 'presentation-hints-fallback' };
146
+ }
147
+ }
148
+
149
+ // 4. Canonical defaults. Not cached — we do not poison the cache with
150
+ // a default that could mask a later DB insert.
151
+ return { data: CYBERIA_CLIENT_HINTS_DEFAULTS, source: 'defaults' };
152
+ }
@@ -3,8 +3,8 @@ import { CyberiaDialogueService } from './cyberia-dialogue.service.js';
3
3
 
4
4
  const logger = loggerFactory(import.meta);
5
5
 
6
- const CyberiaDialogueController = {
7
- post: async (req, res, options) => {
6
+ class CyberiaDialogueController {
7
+ static post = async (req, res, options) => {
8
8
  try {
9
9
  const result = await CyberiaDialogueService.post(req, res, options);
10
10
  return res.status(200).json({
@@ -18,8 +18,8 @@ const CyberiaDialogueController = {
18
18
  message: error.message,
19
19
  });
20
20
  }
21
- },
22
- get: async (req, res, options) => {
21
+ };
22
+ static get = async (req, res, options) => {
23
23
  try {
24
24
  const { page, limit } = req.query;
25
25
  const result = await CyberiaDialogueService.get(
@@ -38,8 +38,8 @@ const CyberiaDialogueController = {
38
38
  message: error.message,
39
39
  });
40
40
  }
41
- },
42
- put: async (req, res, options) => {
41
+ };
42
+ static put = async (req, res, options) => {
43
43
  try {
44
44
  const result = await CyberiaDialogueService.put(req, res, options);
45
45
  return res.status(200).json({
@@ -53,8 +53,8 @@ const CyberiaDialogueController = {
53
53
  message: error.message,
54
54
  });
55
55
  }
56
- },
57
- delete: async (req, res, options) => {
56
+ };
57
+ static delete = async (req, res, options) => {
58
58
  try {
59
59
  const result = await CyberiaDialogueService.delete(req, res, options);
60
60
  return res.status(200).json({
@@ -68,14 +68,14 @@ const CyberiaDialogueController = {
68
68
  message: error.message,
69
69
  });
70
70
  }
71
- },
72
- getByItemId: async (req, res, options) => {
71
+ };
72
+ static getByCode = async (req, res, options) => {
73
73
  try {
74
74
  if (req && req.headers && req.headers.origin) {
75
75
  res.set('Access-Control-Allow-Origin', req.headers.origin);
76
76
  } else res.setHeader('Access-Control-Allow-Origin', '*');
77
77
  res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
78
- const result = await CyberiaDialogueService.getByItemId(req, res, options);
78
+ const result = await CyberiaDialogueService.getByCode(req, res, options);
79
79
  return res.status(200).json({
80
80
  status: 'success',
81
81
  data: result,
@@ -87,7 +87,7 @@ const CyberiaDialogueController = {
87
87
  message: error.message,
88
88
  });
89
89
  }
90
- },
91
- };
90
+ };
91
+ }
92
92
 
93
93
  export { CyberiaDialogueController };
@@ -3,20 +3,20 @@ import { Schema, model, Types } from 'mongoose';
3
3
  // https://mongoosejs.com/docs/2.7.x/docs/schematypes.html
4
4
 
5
5
  /**
6
- * CyberiaDialogue — each document is a single dialogue record tied to an
7
- * item ID from DefaultCyberiaItems. One item may have many dialogue records
8
- * (ordered by `order`). The client displays them sequentially when the
9
- * player interacts with an entity whose active item layers match `itemId`.
6
+ * CyberiaDialogue — each document is one dialogue line that belongs to a
7
+ * named dialogue group (`code`). One code groups many ordered lines.
10
8
  *
11
- * itemId – references an entry in DefaultCyberiaItems (e.g. "lain", "eiri")
12
- * order zero-based index governing the display sequence
13
- * speaker display name shown above the dialogue line
14
- * text – the dialogue line itself
15
- * mood optional emotion hint (neutral / angry / sad / happy / …)
9
+ * Schema fields:
10
+ * code primary grouping key, e.g. "default-lain" or "wason-intro".
11
+ * The C client fetches all lines for a given code in one request.
12
+ * order zero-based display sequence within the code group.
13
+ * speaker display name shown above the dialogue line.
14
+ * text – the dialogue line itself.
15
+ * mood – optional emotion hint (neutral / angry / sad / happy / …).
16
16
  */
17
17
  const CyberiaDialogueSchema = new Schema(
18
18
  {
19
- itemId: { type: String, required: true, index: true },
19
+ code: { type: String, required: true, index: true },
20
20
  order: { type: Number, default: 0 },
21
21
  speaker: { type: String, default: '' },
22
22
  text: { type: String, required: true },
@@ -27,7 +27,7 @@ const CyberiaDialogueSchema = new Schema(
27
27
  },
28
28
  );
29
29
 
30
- CyberiaDialogueSchema.index({ itemId: 1, order: 1 });
30
+ CyberiaDialogueSchema.index({ code: 1, order: 1 });
31
31
 
32
32
  const CyberiaDialogueModel = model('CyberiaDialogue', CyberiaDialogueSchema);
33
33
 
@@ -4,26 +4,31 @@ import express from 'express';
4
4
 
5
5
  const logger = loggerFactory(import.meta);
6
6
 
7
- const CyberiaDialogueRouter = (options) => {
8
- const router = express.Router();
9
- const authMiddleware = options.authMiddleware;
10
- router.post(`/:id`, async (req, res) => await CyberiaDialogueController.post(req, res, options));
11
- router.post(`/`, async (req, res) => await CyberiaDialogueController.post(req, res, options));
12
- // Direct lookup by itemId — C client fetches dialogue by item key (same pattern as atlas /metadata/:itemKey)
13
- router.get(`/item/:itemId`, async (req, res) => await CyberiaDialogueController.getByItemId(req, res, options));
14
- router.get(
15
- `/:id`,
16
- // authMiddleware,
17
- async (req, res) => await CyberiaDialogueController.get(req, res, options),
18
- );
19
- router.get(`/`, async (req, res) => await CyberiaDialogueController.get(req, res, options));
20
- router.put(`/:id`, async (req, res) => await CyberiaDialogueController.put(req, res, options));
21
- router.put(`/`, async (req, res) => await CyberiaDialogueController.put(req, res, options));
22
- router.delete(`/:id`, async (req, res) => await CyberiaDialogueController.delete(req, res, options));
23
- router.delete(`/`, async (req, res) => await CyberiaDialogueController.delete(req, res, options));
24
- return router;
25
- };
7
+ class CyberiaDialogueRouter {
8
+ /**
9
+ * @param {import('../types.js').RouterOptions} options
10
+ * @returns {import('express').Router}
11
+ */
12
+ static router(options) {
13
+ const router = express.Router();
14
+ router.post(`/:id`, async (req, res) => await CyberiaDialogueController.post(req, res, options));
15
+ router.post(`/`, async (req, res) => await CyberiaDialogueController.post(req, res, options));
16
+ // Direct lookup by code — C client fetches dialogue by code (e.g. "default-lain")
17
+ router.get(`/code/:code`, async (req, res) => await CyberiaDialogueController.getByCode(req, res, options));
18
+ router.get(
19
+ `/:id`,
20
+ // options.authMiddleware,
21
+ async (req, res) => await CyberiaDialogueController.get(req, res, options),
22
+ );
23
+ router.get(`/`, async (req, res) => await CyberiaDialogueController.get(req, res, options));
24
+ router.put(`/:id`, async (req, res) => await CyberiaDialogueController.put(req, res, options));
25
+ router.put(`/`, async (req, res) => await CyberiaDialogueController.put(req, res, options));
26
+ router.delete(`/:id`, async (req, res) => await CyberiaDialogueController.delete(req, res, options));
27
+ router.delete(`/`, async (req, res) => await CyberiaDialogueController.delete(req, res, options));
28
+ return router;
29
+ }
30
+ }
26
31
 
27
- const ApiRouter = CyberiaDialogueRouter;
32
+ const ApiRouter = (options) => CyberiaDialogueRouter.router(options);
28
33
 
29
34
  export { ApiRouter, CyberiaDialogueRouter };
@@ -1,18 +1,18 @@
1
- import { DataBaseProvider } from '../../db/DataBaseProvider.js';
1
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
2
2
  import { loggerFactory } from '../../server/logger.js';
3
3
  import { DataQuery } from '../../server/data-query.js';
4
4
 
5
5
  const logger = loggerFactory(import.meta);
6
6
 
7
- const CyberiaDialogueService = {
8
- post: async (req, res, options) => {
7
+ class CyberiaDialogueService {
8
+ static post = async (req, res, options) => {
9
9
  /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
10
- const CyberiaDialogue = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaDialogue;
10
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
11
11
  return await new CyberiaDialogue(req.body).save();
12
- },
13
- get: async (req, res, options) => {
12
+ };
13
+ static get = async (req, res, options) => {
14
14
  /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
15
- const CyberiaDialogue = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaDialogue;
15
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
16
16
  if (req.params.id) return await CyberiaDialogue.findById(req.params.id);
17
17
 
18
18
  // Parse query parameters using DataQuery helper
@@ -25,27 +25,27 @@ const CyberiaDialogueService = {
25
25
 
26
26
  const totalPages = Math.ceil(total / limit);
27
27
  return { data, total, page, totalPages };
28
- },
29
- put: async (req, res, options) => {
28
+ };
29
+ static put = async (req, res, options) => {
30
30
  /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
31
- const CyberiaDialogue = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaDialogue;
31
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
32
32
  return await CyberiaDialogue.findByIdAndUpdate(req.params.id, req.body);
33
- },
34
- delete: async (req, res, options) => {
33
+ };
34
+ static delete = async (req, res, options) => {
35
35
  /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
36
- const CyberiaDialogue = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaDialogue;
36
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
37
37
  if (req.params.id) return await CyberiaDialogue.findByIdAndDelete(req.params.id);
38
38
  else return await CyberiaDialogue.deleteMany();
39
- },
40
- getByItemId: async (req, res, options) => {
39
+ };
40
+ static getByCode = async (req, res, options) => {
41
41
  /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
42
- const CyberiaDialogue = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaDialogue;
43
- const { itemId } = req.params;
44
- if (!itemId) throw new Error('itemId parameter is required');
45
- const data = await CyberiaDialogue.find({ itemId }).sort({ order: 1 }).lean();
46
- if (!data.length) throw new Error(`No dialogue found for itemId: ${itemId}`);
42
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
43
+ const { code } = req.params;
44
+ if (!code) throw new Error('code parameter is required');
45
+ const data = await CyberiaDialogue.find({ code }).sort({ order: 1 }).lean();
46
+ if (!data.length) throw new Error(`No dialogue found for code: ${code}`);
47
47
  return data;
48
- },
49
- };
48
+ };
49
+ }
50
50
 
51
51
  export { CyberiaDialogueService };
@@ -3,8 +3,8 @@ import { CyberiaEntityService } from './cyberia-entity.service.js';
3
3
 
4
4
  const logger = loggerFactory(import.meta);
5
5
 
6
- const CyberiaEntityController = {
7
- post: async (req, res, options) => {
6
+ class CyberiaEntityController {
7
+ static post = async (req, res, options) => {
8
8
  try {
9
9
  const result = await CyberiaEntityService.post(req, res, options);
10
10
  return res.status(200).json({
@@ -18,8 +18,8 @@ const CyberiaEntityController = {
18
18
  message: error.message,
19
19
  });
20
20
  }
21
- },
22
- get: async (req, res, options) => {
21
+ };
22
+ static get = async (req, res, options) => {
23
23
  try {
24
24
  const { page, limit } = req.query;
25
25
  const result = await CyberiaEntityService.get(
@@ -38,8 +38,8 @@ const CyberiaEntityController = {
38
38
  message: error.message,
39
39
  });
40
40
  }
41
- },
42
- put: async (req, res, options) => {
41
+ };
42
+ static put = async (req, res, options) => {
43
43
  try {
44
44
  const result = await CyberiaEntityService.put(req, res, options);
45
45
  return res.status(200).json({
@@ -53,8 +53,8 @@ const CyberiaEntityController = {
53
53
  message: error.message,
54
54
  });
55
55
  }
56
- },
57
- delete: async (req, res, options) => {
56
+ };
57
+ static delete = async (req, res, options) => {
58
58
  try {
59
59
  const result = await CyberiaEntityService.delete(req, res, options);
60
60
  return res.status(200).json({
@@ -68,7 +68,7 @@ const CyberiaEntityController = {
68
68
  message: error.message,
69
69
  });
70
70
  }
71
- },
72
- };
71
+ };
72
+ }
73
73
 
74
74
  export { CyberiaEntityController };
@@ -4,24 +4,28 @@ import express from 'express';
4
4
 
5
5
  const logger = loggerFactory(import.meta);
6
6
 
7
- const CyberiaEntityRouter = (options) => {
8
- const router = express.Router();
9
- const authMiddleware = options.authMiddleware;
10
- router.post(`/:id`, async (req, res) => await CyberiaEntityController.post(req, res, options));
11
- router.post(`/`, async (req, res) => await CyberiaEntityController.post(req, res, options));
12
- router.get(
13
- `/:id`,
14
- // authMiddleware,
15
- async (req, res) => await CyberiaEntityController.get(req, res, options),
16
- );
17
- router.get(`/`, async (req, res) => await CyberiaEntityController.get(req, res, options));
18
- router.put(`/:id`, async (req, res) => await CyberiaEntityController.put(req, res, options));
19
- router.put(`/`, async (req, res) => await CyberiaEntityController.put(req, res, options));
20
- router.delete(`/:id`, async (req, res) => await CyberiaEntityController.delete(req, res, options));
21
- router.delete(`/`, async (req, res) => await CyberiaEntityController.delete(req, res, options));
22
- return router;
23
- };
7
+ class CyberiaEntityRouter {
8
+ /**
9
+ * @param {import('../types.js').RouterOptions} options
10
+ * @returns {import('express').Router}
11
+ */
12
+ static router(options) {
13
+ const router = express.Router();
14
+ router.post(`/:id`, async (req, res) => await CyberiaEntityController.post(req, res, options));
15
+ router.post(`/`, async (req, res) => await CyberiaEntityController.post(req, res, options));
16
+ router.get(`/:id`,
17
+ // options.authMiddleware,
18
+ async (req, res) => await CyberiaEntityController.get(req, res, options),
19
+ );
20
+ router.get(`/`, async (req, res) => await CyberiaEntityController.get(req, res, options));
21
+ router.put(`/:id`, async (req, res) => await CyberiaEntityController.put(req, res, options));
22
+ router.put(`/`, async (req, res) => await CyberiaEntityController.put(req, res, options));
23
+ router.delete(`/:id`, async (req, res) => await CyberiaEntityController.delete(req, res, options));
24
+ router.delete(`/`, async (req, res) => await CyberiaEntityController.delete(req, res, options));
25
+ return router;
26
+ }
27
+ }
24
28
 
25
- const ApiRouter = CyberiaEntityRouter;
29
+ const ApiRouter = (options) => CyberiaEntityRouter.router(options);
26
30
 
27
31
  export { ApiRouter, CyberiaEntityRouter };
@@ -1,18 +1,18 @@
1
- import { DataBaseProvider } from '../../db/DataBaseProvider.js';
1
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
2
2
  import { loggerFactory } from '../../server/logger.js';
3
3
  import { DataQuery } from '../../server/data-query.js';
4
4
 
5
5
  const logger = loggerFactory(import.meta);
6
6
 
7
- const CyberiaEntityService = {
8
- post: async (req, res, options) => {
7
+ class CyberiaEntityService {
8
+ static post = async (req, res, options) => {
9
9
  /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
10
- const CyberiaEntity = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaEntity;
10
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
11
11
  return await new CyberiaEntity(req.body).save();
12
- },
13
- get: async (req, res, options) => {
12
+ };
13
+ static get = async (req, res, options) => {
14
14
  /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
15
- const CyberiaEntity = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaEntity;
15
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
16
16
  if (req.params.id) return await CyberiaEntity.findById(req.params.id);
17
17
 
18
18
  // Parse query parameters using DataQuery helper
@@ -25,18 +25,18 @@ const CyberiaEntityService = {
25
25
 
26
26
  const totalPages = Math.ceil(total / limit);
27
27
  return { data, total, page, totalPages };
28
- },
29
- put: async (req, res, options) => {
28
+ };
29
+ static put = async (req, res, options) => {
30
30
  /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
31
- const CyberiaEntity = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaEntity;
31
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
32
32
  return await CyberiaEntity.findByIdAndUpdate(req.params.id, req.body);
33
- },
34
- delete: async (req, res, options) => {
33
+ };
34
+ static delete = async (req, res, options) => {
35
35
  /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
36
- const CyberiaEntity = DataBaseProvider.instance[`${options.host}${options.path}`].mongoose.models.CyberiaEntity;
36
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
37
37
  if (req.params.id) return await CyberiaEntity.findByIdAndDelete(req.params.id);
38
38
  else return await CyberiaEntity.deleteMany();
39
- },
40
- };
39
+ };
40
+ }
41
41
 
42
42
  export { CyberiaEntityService };