@underpostnet/cyberia 3.2.80

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 (821) hide show
  1. package/.dockerignore +14 -0
  2. package/.env.example +144 -0
  3. package/.github/workflows/cyberia-client.cd.yml +40 -0
  4. package/.github/workflows/cyberia-server.cd.yml +40 -0
  5. package/.github/workflows/docker-image.cyberia-client.ci.yml +71 -0
  6. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +70 -0
  7. package/.github/workflows/docker-image.cyberia-server.ci.yml +71 -0
  8. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +71 -0
  9. package/.github/workflows/docker-image.engine-cyberia.ci.yml +53 -0
  10. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +53 -0
  11. package/.github/workflows/engine-cyberia.cd.yml +157 -0
  12. package/.github/workflows/engine-cyberia.ci.yml +125 -0
  13. package/.github/workflows/ghpkg.ci.yml +160 -0
  14. package/.github/workflows/gitlab.ci.yml +20 -0
  15. package/.github/workflows/hardhat.ci.yml +82 -0
  16. package/.github/workflows/npmpkg.ci.yml +126 -0
  17. package/.github/workflows/publish.ci.yml +87 -0
  18. package/.github/workflows/publish.cyberia.ci.yml +79 -0
  19. package/.github/workflows/pwa-microservices-template-page.cd.yml +65 -0
  20. package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
  21. package/.github/workflows/release.cd.yml +46 -0
  22. package/.nycrc +9 -0
  23. package/.prettierignore +12 -0
  24. package/.prettierrc +9 -0
  25. package/.vscode/extensions.json +10 -0
  26. package/.vscode/settings.json +26 -0
  27. package/CHANGELOG.md +2516 -0
  28. package/CLI-HELP.md +1099 -0
  29. package/Dockerfile +161 -0
  30. package/Dockerfile.dev +161 -0
  31. package/Dockerfile.test +165 -0
  32. package/LICENSE +21 -0
  33. package/README.md +259 -0
  34. package/baremetal/commission-workflows.json +211 -0
  35. package/baremetal/packer-workflows.json +24 -0
  36. package/bin/build.js +261 -0
  37. package/bin/build.template.js +33 -0
  38. package/bin/cyberia.js +5627 -0
  39. package/bin/deploy.js +1547 -0
  40. package/bin/index.js +5627 -0
  41. package/bump.config.js +27 -0
  42. package/compose.env +144 -0
  43. package/conf.js +952 -0
  44. package/deployment.yaml +418 -0
  45. package/docker-compose.yml +434 -0
  46. package/examples/static-page/README.md +150 -0
  47. package/examples/static-page/ssr-components/CustomPage.js +554 -0
  48. package/examples/static-page/static-config-example.json +57 -0
  49. package/hardhat/.env.example +31 -0
  50. package/hardhat/contracts/ObjectLayerToken.sol +391 -0
  51. package/hardhat/deployments/.gitkeep +0 -0
  52. package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
  53. package/hardhat/hardhat.config.js +136 -0
  54. package/hardhat/ignition/modules/.gitkeep +0 -0
  55. package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
  56. package/hardhat/networks/besu-object-layer.network.json +138 -0
  57. package/hardhat/package-lock.json +2871 -0
  58. package/hardhat/package.json +43 -0
  59. package/hardhat/scripts/deployObjectLayerToken.js +98 -0
  60. package/hardhat/test/ObjectLayerToken.js +696 -0
  61. package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
  62. package/hardhat/types/ethers-contracts/common.ts +92 -0
  63. package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
  64. package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
  65. package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
  66. package/hardhat/types/ethers-contracts/index.ts +6 -0
  67. package/ipfs/configure-ipfs.sh +13 -0
  68. package/jsconfig.json +9 -0
  69. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +48 -0
  70. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +48 -0
  71. package/manifests/deployment/adminer/deployment.yaml +32 -0
  72. package/manifests/deployment/adminer/kustomization.yaml +7 -0
  73. package/manifests/deployment/adminer/service.yaml +13 -0
  74. package/manifests/deployment/dd-cyberia-development/deployment.yaml +418 -0
  75. package/manifests/deployment/dd-cyberia-development/grpc-service.yaml +17 -0
  76. package/manifests/deployment/dd-cyberia-development/proxy.yaml +189 -0
  77. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +164 -0
  78. package/manifests/deployment/dd-default-development/deployment.yaml +163 -0
  79. package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
  80. package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
  81. package/manifests/deployment/fastapi/backend-service.yml +19 -0
  82. package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
  83. package/manifests/deployment/fastapi/frontend-service.yml +15 -0
  84. package/manifests/deployment/fastapi/initial_data.sh +8 -0
  85. package/manifests/deployment/kafka/deployment.yaml +67 -0
  86. package/manifests/deployment/mongo-express/deployment.yaml +62 -0
  87. package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
  88. package/manifests/deployment/playwright/deployment.yaml +52 -0
  89. package/manifests/deployment/spark/spark-pi-py.yaml +20 -0
  90. package/manifests/deployment/tensorflow/tf-gpu-test.yaml +63 -0
  91. package/manifests/envoy-service-nodeport.yaml +22 -0
  92. package/manifests/grafana/deployment.yaml +64 -0
  93. package/manifests/grafana/kustomization.yaml +7 -0
  94. package/manifests/grafana/pvc.yaml +12 -0
  95. package/manifests/grafana/service.yaml +14 -0
  96. package/manifests/grafana/storage-class.yaml +9 -0
  97. package/manifests/ipfs/configmap.yaml +64 -0
  98. package/manifests/ipfs/headless-service.yaml +35 -0
  99. package/manifests/ipfs/kustomization.yaml +8 -0
  100. package/manifests/ipfs/statefulset.yaml +149 -0
  101. package/manifests/ipfs/storage-class.yaml +9 -0
  102. package/manifests/kind-config-dev.yaml +20 -0
  103. package/manifests/kind-config.yaml +12 -0
  104. package/manifests/kubeadm-calico-config.yaml +14 -0
  105. package/manifests/letsencrypt-prod.yaml +14 -0
  106. package/manifests/lxd/lxd-admin-profile.yaml +26 -0
  107. package/manifests/lxd/lxd-preseed.yaml +30 -0
  108. package/manifests/mariadb/kustomization.yaml +9 -0
  109. package/manifests/mariadb/pv.yaml +12 -0
  110. package/manifests/mariadb/pvc.yaml +10 -0
  111. package/manifests/mariadb/service.yaml +10 -0
  112. package/manifests/mariadb/statefulset.yaml +56 -0
  113. package/manifests/mariadb/storage-class.yaml +10 -0
  114. package/manifests/mongodb/headless-service.yaml +10 -0
  115. package/manifests/mongodb/kustomization.yaml +11 -0
  116. package/manifests/mongodb/pv-pvc.yaml +59 -0
  117. package/manifests/mongodb/statefulset.yaml +113 -0
  118. package/manifests/mongodb/storage-class.yaml +9 -0
  119. package/manifests/mongodb-4.4/headless-service.yaml +10 -0
  120. package/manifests/mongodb-4.4/kustomization.yaml +9 -0
  121. package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
  122. package/manifests/mongodb-4.4/pv-pvc.yaml +19 -0
  123. package/manifests/mongodb-4.4/service-deployment.yaml +61 -0
  124. package/manifests/mongodb-4.4/statefulset.yaml +79 -0
  125. package/manifests/mongodb-4.4/storage-class.yaml +9 -0
  126. package/manifests/mysql/kustomization.yaml +7 -0
  127. package/manifests/mysql/pv-pvc.yaml +27 -0
  128. package/manifests/mysql/statefulset.yaml +55 -0
  129. package/manifests/postgresql/configmap.yaml +9 -0
  130. package/manifests/postgresql/kustomization.yaml +10 -0
  131. package/manifests/postgresql/pv.yaml +15 -0
  132. package/manifests/postgresql/pvc.yaml +13 -0
  133. package/manifests/postgresql/service.yaml +10 -0
  134. package/manifests/postgresql/statefulset.yaml +37 -0
  135. package/manifests/prometheus/deployment.yaml +82 -0
  136. package/manifests/pv-pvc-dd.yaml +34 -0
  137. package/manifests/valkey/kustomization.yaml +7 -0
  138. package/manifests/valkey/service.yaml +10 -0
  139. package/manifests/valkey/statefulset.yaml +37 -0
  140. package/manifests/valkey/valkey-nodeport.yaml +17 -0
  141. package/mongodb/entrypoint.sh +76 -0
  142. package/nginx.conf +128 -0
  143. package/nodemon.json +6 -0
  144. package/package.json +101 -0
  145. package/packer/images/Rocky9Amd64/Makefile +62 -0
  146. package/packer/images/Rocky9Amd64/QUICKSTART.md +113 -0
  147. package/packer/images/Rocky9Amd64/README.md +122 -0
  148. package/packer/images/Rocky9Amd64/http/rocky9.ks.pkrtpl.hcl +114 -0
  149. package/packer/images/Rocky9Amd64/rocky9.pkr.hcl +164 -0
  150. package/packer/images/Rocky9Arm64/Makefile +69 -0
  151. package/packer/images/Rocky9Arm64/README.md +122 -0
  152. package/packer/images/Rocky9Arm64/http/rocky9.ks.pkrtpl.hcl +114 -0
  153. package/packer/images/Rocky9Arm64/rocky9.pkr.hcl +171 -0
  154. package/packer/scripts/fuse-nbd +64 -0
  155. package/packer/scripts/fuse-tar-root +63 -0
  156. package/proxy.yaml +189 -0
  157. package/pv-pvc.yaml +164 -0
  158. package/scripts/device-scan.sh +65 -0
  159. package/scripts/disk-clean.sh +182 -0
  160. package/scripts/disk-devices.sh +13 -0
  161. package/scripts/gen-fqdns.sh +14 -0
  162. package/scripts/gpu-diag.sh +19 -0
  163. package/scripts/ip-info.sh +118 -0
  164. package/scripts/ipxe-setup.sh +200 -0
  165. package/scripts/k3s-node-setup.sh +124 -0
  166. package/scripts/kubeadm-node-setup.sh +317 -0
  167. package/scripts/link-local-underpost-cli.sh +6 -0
  168. package/scripts/lxd-vm-setup.sh +208 -0
  169. package/scripts/maas-nat-firewalld.sh +145 -0
  170. package/scripts/maas-setup.sh +135 -0
  171. package/scripts/maas-upload-boot-resource.sh +183 -0
  172. package/scripts/nat-iptables.sh +111 -0
  173. package/scripts/nvim.sh +91 -0
  174. package/scripts/packer-init-vars-file.sh +40 -0
  175. package/scripts/packer-setup.sh +289 -0
  176. package/scripts/ports-ls.sh +33 -0
  177. package/scripts/quick-tftp.sh +19 -0
  178. package/scripts/rhel-grpc-setup.sh +56 -0
  179. package/scripts/rocky-kickstart.sh +986 -0
  180. package/scripts/rocky-pwa.sh +200 -0
  181. package/scripts/rocky-setup.sh +106 -0
  182. package/scripts/rpmfusion-ffmpeg-setup.sh +32 -0
  183. package/scripts/ssl.sh +170 -0
  184. package/scripts/test-monitor.sh +248 -0
  185. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +30 -0
  186. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +155 -0
  187. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +39 -0
  188. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +382 -0
  189. package/src/api/core/core.controller.js +8 -0
  190. package/src/api/core/core.model.js +11 -0
  191. package/src/api/core/core.router.js +23 -0
  192. package/src/api/core/core.service.js +30 -0
  193. package/src/api/crypto/crypto.controller.js +10 -0
  194. package/src/api/crypto/crypto.model.js +23 -0
  195. package/src/api/crypto/crypto.router.js +23 -0
  196. package/src/api/crypto/crypto.service.js +64 -0
  197. package/src/api/cyberia-action/cyberia-action.controller.js +8 -0
  198. package/src/api/cyberia-action/cyberia-action.model.js +79 -0
  199. package/src/api/cyberia-action/cyberia-action.router.js +21 -0
  200. package/src/api/cyberia-action/cyberia-action.service.js +58 -0
  201. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +27 -0
  202. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +100 -0
  203. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +70 -0
  204. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
  205. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +8 -0
  206. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
  207. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +20 -0
  208. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +57 -0
  209. package/src/api/cyberia-entity/cyberia-entity.controller.js +6 -0
  210. package/src/api/cyberia-entity/cyberia-entity.model.js +25 -0
  211. package/src/api/cyberia-entity/cyberia-entity.router.js +17 -0
  212. package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
  213. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +6 -0
  214. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +67 -0
  215. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -0
  216. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +46 -0
  217. package/src/api/cyberia-instance/cyberia-fallback-world.js +337 -0
  218. package/src/api/cyberia-instance/cyberia-instance-boot.service.js +57 -0
  219. package/src/api/cyberia-instance/cyberia-instance-map.service.js +583 -0
  220. package/src/api/cyberia-instance/cyberia-instance.controller.js +42 -0
  221. package/src/api/cyberia-instance/cyberia-instance.model.js +117 -0
  222. package/src/api/cyberia-instance/cyberia-instance.router.js +75 -0
  223. package/src/api/cyberia-instance/cyberia-instance.service.js +190 -0
  224. package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
  225. package/src/api/cyberia-instance/cyberia-world-generator.js +618 -0
  226. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +6 -0
  227. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +200 -0
  228. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +17 -0
  229. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
  230. package/src/api/cyberia-map/cyberia-map.controller.js +6 -0
  231. package/src/api/cyberia-map/cyberia-map.model.js +33 -0
  232. package/src/api/cyberia-map/cyberia-map.router.js +19 -0
  233. package/src/api/cyberia-map/cyberia-map.service.js +76 -0
  234. package/src/api/cyberia-quest/cyberia-quest.controller.js +9 -0
  235. package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
  236. package/src/api/cyberia-quest/cyberia-quest.router.js +26 -0
  237. package/src/api/cyberia-quest/cyberia-quest.service.js +97 -0
  238. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +6 -0
  239. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
  240. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +21 -0
  241. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
  242. package/src/api/cyberia-saga/cyberia-saga.controller.js +6 -0
  243. package/src/api/cyberia-saga/cyberia-saga.model.js +59 -0
  244. package/src/api/cyberia-saga/cyberia-saga.router.js +17 -0
  245. package/src/api/cyberia-saga/cyberia-saga.service.js +42 -0
  246. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +1076 -0
  247. package/src/api/cyberia-skill/cyberia-skill.controller.js +6 -0
  248. package/src/api/cyberia-skill/cyberia-skill.model.js +50 -0
  249. package/src/api/cyberia-skill/cyberia-skill.router.js +17 -0
  250. package/src/api/cyberia-skill/cyberia-skill.service.js +42 -0
  251. package/src/api/default/default.controller.js +6 -0
  252. package/src/api/default/default.model.js +20 -0
  253. package/src/api/default/default.router.js +21 -0
  254. package/src/api/default/default.service.js +42 -0
  255. package/src/api/document/document.controller.js +9 -0
  256. package/src/api/document/document.model.js +95 -0
  257. package/src/api/document/document.router.js +32 -0
  258. package/src/api/document/document.service.js +633 -0
  259. package/src/api/file/file.controller.js +15 -0
  260. package/src/api/file/file.model.js +127 -0
  261. package/src/api/file/file.ref.json +39 -0
  262. package/src/api/file/file.router.js +36 -0
  263. package/src/api/file/file.service.js +499 -0
  264. package/src/api/instance/instance.controller.js +8 -0
  265. package/src/api/instance/instance.model.js +34 -0
  266. package/src/api/instance/instance.router.js +27 -0
  267. package/src/api/instance/instance.service.js +75 -0
  268. package/src/api/ipfs/ipfs.controller.js +8 -0
  269. package/src/api/ipfs/ipfs.model.js +77 -0
  270. package/src/api/ipfs/ipfs.router.js +26 -0
  271. package/src/api/ipfs/ipfs.service.js +145 -0
  272. package/src/api/object-layer/object-layer.controller.js +18 -0
  273. package/src/api/object-layer/object-layer.model.js +200 -0
  274. package/src/api/object-layer/object-layer.router.js +729 -0
  275. package/src/api/object-layer/object-layer.service.js +894 -0
  276. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +6 -0
  277. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +93 -0
  278. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +17 -0
  279. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +46 -0
  280. package/src/api/test/test.controller.js +14 -0
  281. package/src/api/test/test.model.js +14 -0
  282. package/src/api/test/test.router.js +23 -0
  283. package/src/api/test/test.service.js +35 -0
  284. package/src/api/types.js +24 -0
  285. package/src/api/user/guest.service.js +100 -0
  286. package/src/api/user/postman_collection.json +216 -0
  287. package/src/api/user/user.build.js +16 -0
  288. package/src/api/user/user.controller.js +35 -0
  289. package/src/api/user/user.model.js +142 -0
  290. package/src/api/user/user.router.js +367 -0
  291. package/src/api/user/user.service.js +582 -0
  292. package/src/api.js +23 -0
  293. package/src/cli/baremetal.js +3947 -0
  294. package/src/cli/cloud-init.js +673 -0
  295. package/src/cli/cluster.js +1395 -0
  296. package/src/cli/db.js +1533 -0
  297. package/src/cli/deploy.js +1542 -0
  298. package/src/cli/docker-compose.js +802 -0
  299. package/src/cli/env.js +177 -0
  300. package/src/cli/fs.js +380 -0
  301. package/src/cli/image.js +389 -0
  302. package/src/cli/index.js +1059 -0
  303. package/src/cli/ipfs.js +182 -0
  304. package/src/cli/kickstart.js +271 -0
  305. package/src/cli/kubectl.js +214 -0
  306. package/src/cli/lxd.js +1232 -0
  307. package/src/cli/monitor.js +659 -0
  308. package/src/cli/release.js +595 -0
  309. package/src/cli/repository.js +1969 -0
  310. package/src/cli/run.js +3326 -0
  311. package/src/cli/secrets.js +151 -0
  312. package/src/cli/ssh.js +975 -0
  313. package/src/cli/static.js +653 -0
  314. package/src/cli/system.js +332 -0
  315. package/src/cli/test.js +176 -0
  316. package/src/client/Cryptokoyn.index.js +30 -0
  317. package/src/client/CyberiaPortal.index.js +31 -0
  318. package/src/client/Default.index.js +77 -0
  319. package/src/client/Itemledger.index.js +35 -0
  320. package/src/client/Underpost.index.js +31 -0
  321. package/src/client/components/core/404.js +20 -0
  322. package/src/client/components/core/500.js +20 -0
  323. package/src/client/components/core/Account.js +630 -0
  324. package/src/client/components/core/AgGrid.js +238 -0
  325. package/src/client/components/core/Alert.js +76 -0
  326. package/src/client/components/core/AppStore.js +69 -0
  327. package/src/client/components/core/Auth.js +353 -0
  328. package/src/client/components/core/Badge.js +26 -0
  329. package/src/client/components/core/Blockchain.js +41 -0
  330. package/src/client/components/core/Blog.js +9 -0
  331. package/src/client/components/core/BtnIcon.js +109 -0
  332. package/src/client/components/core/CalendarCore.js +437 -0
  333. package/src/client/components/core/Chat.js +62 -0
  334. package/src/client/components/core/ClientEvents.js +163 -0
  335. package/src/client/components/core/ColorPaletteElement.js +309 -0
  336. package/src/client/components/core/CommonJs.js +1014 -0
  337. package/src/client/components/core/Content.js +349 -0
  338. package/src/client/components/core/Css.js +1134 -0
  339. package/src/client/components/core/CssCore.js +881 -0
  340. package/src/client/components/core/D3Chart.js +44 -0
  341. package/src/client/components/core/Docs.js +478 -0
  342. package/src/client/components/core/DropDown.js +321 -0
  343. package/src/client/components/core/EventBus.js +96 -0
  344. package/src/client/components/core/EventsUI.js +130 -0
  345. package/src/client/components/core/FileExplorer.js +1406 -0
  346. package/src/client/components/core/FullScreen.js +201 -0
  347. package/src/client/components/core/Input.js +537 -0
  348. package/src/client/components/core/Keyboard.js +80 -0
  349. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  350. package/src/client/components/core/LoadingAnimation.js +152 -0
  351. package/src/client/components/core/LogIn.js +212 -0
  352. package/src/client/components/core/LogOut.js +72 -0
  353. package/src/client/components/core/Logger.js +22 -0
  354. package/src/client/components/core/Modal.js +2956 -0
  355. package/src/client/components/core/NotificationManager.js +80 -0
  356. package/src/client/components/core/Pagination.js +252 -0
  357. package/src/client/components/core/Panel.js +1308 -0
  358. package/src/client/components/core/PanelForm.js +915 -0
  359. package/src/client/components/core/Polyhedron.js +947 -0
  360. package/src/client/components/core/PublicProfile.js +895 -0
  361. package/src/client/components/core/Recover.js +211 -0
  362. package/src/client/components/core/Responsive.js +146 -0
  363. package/src/client/components/core/RichText.js +33 -0
  364. package/src/client/components/core/Router.js +523 -0
  365. package/src/client/components/core/Scroll.js +76 -0
  366. package/src/client/components/core/SearchBox.js +1007 -0
  367. package/src/client/components/core/SignUp.js +153 -0
  368. package/src/client/components/core/SocketIo.js +163 -0
  369. package/src/client/components/core/SocketIoHandler.js +75 -0
  370. package/src/client/components/core/Stream.js +161 -0
  371. package/src/client/components/core/ToggleSwitch.js +89 -0
  372. package/src/client/components/core/ToolTip.js +78 -0
  373. package/src/client/components/core/Translate.js +694 -0
  374. package/src/client/components/core/Validator.js +140 -0
  375. package/src/client/components/core/VanillaJs.js +485 -0
  376. package/src/client/components/core/Wallet.js +95 -0
  377. package/src/client/components/core/WebComponent.js +44 -0
  378. package/src/client/components/core/Webhook.js +58 -0
  379. package/src/client/components/core/Worker.js +313 -0
  380. package/src/client/components/core/windowGetDimensions.js +269 -0
  381. package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +352 -0
  382. package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
  383. package/src/client/components/cryptokoyn/CssCryptokoyn.js +212 -0
  384. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +16 -0
  385. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +12 -0
  386. package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
  387. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +16 -0
  388. package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +11 -0
  389. package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +6 -0
  390. package/src/client/components/cyberia/ActionEngineCyberia.js +1867 -0
  391. package/src/client/components/cyberia/EntityEngineCyberia.js +585 -0
  392. package/src/client/components/cyberia/InstanceEngineCyberia.js +1088 -0
  393. package/src/client/components/cyberia/InstanceSelectionView.js +900 -0
  394. package/src/client/components/cyberia/MapEngineCyberia.js +1976 -0
  395. package/src/client/components/cyberia/ObjectLayerEngine.js +1540 -0
  396. package/src/client/components/cyberia/ObjectLayerEngineModal.js +2420 -0
  397. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +1522 -0
  398. package/src/client/components/cyberia/SharedDefaultsCyberia.js +528 -0
  399. package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +772 -0
  400. package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
  401. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +254 -0
  402. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +21 -0
  403. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +16 -0
  404. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +518 -0
  405. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +72 -0
  406. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
  407. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +13 -0
  408. package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +6 -0
  409. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +48 -0
  410. package/src/client/components/default/AppShellDefault.js +765 -0
  411. package/src/client/components/default/AppStoreDefault.js +5 -0
  412. package/src/client/components/default/CommonDefault.js +29 -0
  413. package/src/client/components/default/CssDefault.js +27 -0
  414. package/src/client/components/default/LogInDefault.js +16 -0
  415. package/src/client/components/default/LogOutDefault.js +12 -0
  416. package/src/client/components/default/RouterDefault.js +47 -0
  417. package/src/client/components/default/SettingsDefault.js +16 -0
  418. package/src/client/components/default/SignUpDefault.js +11 -0
  419. package/src/client/components/default/SocketIoDefault.js +6 -0
  420. package/src/client/components/default/TranslateDefault.js +7 -0
  421. package/src/client/components/itemledger/AppShellItemledger.js +353 -0
  422. package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
  423. package/src/client/components/itemledger/CssItemledger.js +212 -0
  424. package/src/client/components/itemledger/LogInItemledger.js +17 -0
  425. package/src/client/components/itemledger/LogOutItemledger.js +12 -0
  426. package/src/client/components/itemledger/RouterItemledger.js +38 -0
  427. package/src/client/components/itemledger/SettingsItemledger.js +16 -0
  428. package/src/client/components/itemledger/SignUpItemledger.js +11 -0
  429. package/src/client/components/itemledger/SocketIoItemledger.js +6 -0
  430. package/src/client/components/itemledger/TranslateItemledger.js +7 -0
  431. package/src/client/components/underpost/AppShellUnderpost.js +691 -0
  432. package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
  433. package/src/client/components/underpost/CssUnderpost.js +281 -0
  434. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
  435. package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
  436. package/src/client/components/underpost/LabGalleryUnderpost.js +79 -0
  437. package/src/client/components/underpost/LogInUnderpost.js +25 -0
  438. package/src/client/components/underpost/LogOutUnderpost.js +17 -0
  439. package/src/client/components/underpost/RouterUnderpost.js +45 -0
  440. package/src/client/components/underpost/SettingsUnderpost.js +16 -0
  441. package/src/client/components/underpost/SignUpUnderpost.js +11 -0
  442. package/src/client/components/underpost/SocketIoUnderpost.js +6 -0
  443. package/src/client/components/underpost/TranslateUnderpost.js +10 -0
  444. package/src/client/public/cryptokoyn/assets/banner/koyn-social.png +0 -0
  445. package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
  446. package/src/client/public/cryptokoyn/assets/logo/cryptokoyn.png +0 -0
  447. package/src/client/public/cryptokoyn/assets/splash/android-chrome-144x144.png +0 -0
  448. package/src/client/public/cryptokoyn/assets/splash/android-chrome-192x192.png +0 -0
  449. package/src/client/public/cryptokoyn/assets/splash/android-chrome-256x256.png +0 -0
  450. package/src/client/public/cryptokoyn/assets/splash/android-chrome-36x36.png +0 -0
  451. package/src/client/public/cryptokoyn/assets/splash/android-chrome-48x48.png +0 -0
  452. package/src/client/public/cryptokoyn/assets/splash/android-chrome-72x72.png +0 -0
  453. package/src/client/public/cryptokoyn/assets/splash/android-chrome-96x96.png +0 -0
  454. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114-precomposed.png +0 -0
  455. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114.png +0 -0
  456. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120-precomposed.png +0 -0
  457. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120.png +0 -0
  458. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144-precomposed.png +0 -0
  459. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144.png +0 -0
  460. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152-precomposed.png +0 -0
  461. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152.png +0 -0
  462. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180-precomposed.png +0 -0
  463. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180.png +0 -0
  464. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57-precomposed.png +0 -0
  465. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57.png +0 -0
  466. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60-precomposed.png +0 -0
  467. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60.png +0 -0
  468. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72-precomposed.png +0 -0
  469. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72.png +0 -0
  470. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76-precomposed.png +0 -0
  471. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76.png +0 -0
  472. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-precomposed.png +0 -0
  473. package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon.png +0 -0
  474. package/src/client/public/cryptokoyn/assets/splash/favicon-16x16.png +0 -0
  475. package/src/client/public/cryptokoyn/assets/splash/favicon-32x32.png +0 -0
  476. package/src/client/public/cryptokoyn/assets/splash/mstile-144x144.png +0 -0
  477. package/src/client/public/cryptokoyn/assets/splash/mstile-150x150.png +0 -0
  478. package/src/client/public/cryptokoyn/assets/splash/mstile-310x150.png +0 -0
  479. package/src/client/public/cryptokoyn/assets/splash/mstile-310x310.png +0 -0
  480. package/src/client/public/cryptokoyn/assets/splash/mstile-70x70.png +0 -0
  481. package/src/client/public/cryptokoyn/assets/splash/safari-pinned-tab.svg +42 -0
  482. package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
  483. package/src/client/public/cryptokoyn/favicon.ico +0 -0
  484. package/src/client/public/cryptokoyn/microdata.json +85 -0
  485. package/src/client/public/cryptokoyn/site.webmanifest +57 -0
  486. package/src/client/public/cryptokoyn/sitemap +148 -0
  487. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +307 -0
  488. package/src/client/public/cyberia-docs/ARCHITECTURE.md +309 -0
  489. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
  490. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +341 -0
  491. package/src/client/public/cyberia-docs/CYBERIA-LORE.md +84 -0
  492. package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +394 -0
  493. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +294 -0
  494. package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
  495. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +242 -0
  496. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
  497. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +309 -0
  498. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +228 -0
  499. package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
  500. package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
  501. package/src/client/public/cyberia-docs/WHITE-PAPER.md +740 -0
  502. package/src/client/public/default/android-chrome-144x144.png +0 -0
  503. package/src/client/public/default/android-chrome-192x192.png +0 -0
  504. package/src/client/public/default/android-chrome-256x256.png +0 -0
  505. package/src/client/public/default/android-chrome-36x36.png +0 -0
  506. package/src/client/public/default/android-chrome-384x384.png +0 -0
  507. package/src/client/public/default/android-chrome-48x48.png +0 -0
  508. package/src/client/public/default/android-chrome-512x512.png +0 -0
  509. package/src/client/public/default/android-chrome-72x72.png +0 -0
  510. package/src/client/public/default/android-chrome-96x96.png +0 -0
  511. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  512. package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
  513. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  514. package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
  515. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  516. package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
  517. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  518. package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
  519. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  520. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  521. package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
  522. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  523. package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
  524. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  525. package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
  526. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  527. package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
  528. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  529. package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
  530. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  531. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  532. package/src/client/public/default/apple-touch-icon.png +0 -0
  533. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  534. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  535. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  536. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  537. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  538. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  539. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  540. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  541. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  542. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  543. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  544. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  545. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  546. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  547. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  548. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  549. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  550. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  551. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  552. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  553. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  554. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  555. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  556. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  557. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  558. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  559. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  560. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  561. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  562. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  563. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  564. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  565. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  566. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  567. package/src/client/public/default/assets/background/dark.jpg +0 -0
  568. package/src/client/public/default/assets/background/dark.svg +557 -0
  569. package/src/client/public/default/assets/background/white.jpg +0 -0
  570. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  571. package/src/client/public/default/assets/background/white0.jpg +0 -0
  572. package/src/client/public/default/assets/logo/base-icon.png +0 -0
  573. package/src/client/public/default/assets/logo/underpost.gif +0 -0
  574. package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
  575. package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
  576. package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
  577. package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
  578. package/src/client/public/default/browserconfig.xml +12 -0
  579. package/src/client/public/default/favicon-16x16.png +0 -0
  580. package/src/client/public/default/favicon-32x32.png +0 -0
  581. package/src/client/public/default/favicon-48x48.png +0 -0
  582. package/src/client/public/default/favicon.ico +0 -0
  583. package/src/client/public/default/manifest.webmanifest +69 -0
  584. package/src/client/public/default/mstile-144x144.png +0 -0
  585. package/src/client/public/default/mstile-150x150.png +0 -0
  586. package/src/client/public/default/mstile-310x150.png +0 -0
  587. package/src/client/public/default/mstile-310x310.png +0 -0
  588. package/src/client/public/default/mstile-70x70.png +0 -0
  589. package/src/client/public/default/safari-pinned-tab.svg +24 -0
  590. package/src/client/public/default/site.webmanifest +69 -0
  591. package/src/client/public/default/sitemap +148 -0
  592. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  593. package/src/client/public/default/yandex-browser-manifest.json +9 -0
  594. package/src/client/public/doc/favicon.ico +0 -0
  595. package/src/client/public/doc/sitemap +148 -0
  596. package/src/client/public/itemledger/android-chrome-144x144.png +0 -0
  597. package/src/client/public/itemledger/android-chrome-192x192.png +0 -0
  598. package/src/client/public/itemledger/android-chrome-256x256.png +0 -0
  599. package/src/client/public/itemledger/android-chrome-36x36.png +0 -0
  600. package/src/client/public/itemledger/android-chrome-384x384.png +0 -0
  601. package/src/client/public/itemledger/android-chrome-48x48.png +0 -0
  602. package/src/client/public/itemledger/android-chrome-512x512.png +0 -0
  603. package/src/client/public/itemledger/android-chrome-72x72.png +0 -0
  604. package/src/client/public/itemledger/android-chrome-96x96.png +0 -0
  605. package/src/client/public/itemledger/apple-touch-icon-1024x1024.png +0 -0
  606. package/src/client/public/itemledger/apple-touch-icon-114x114.png +0 -0
  607. package/src/client/public/itemledger/apple-touch-icon-120x120.png +0 -0
  608. package/src/client/public/itemledger/apple-touch-icon-144x144.png +0 -0
  609. package/src/client/public/itemledger/apple-touch-icon-152x152.png +0 -0
  610. package/src/client/public/itemledger/apple-touch-icon-167x167.png +0 -0
  611. package/src/client/public/itemledger/apple-touch-icon-180x180.png +0 -0
  612. package/src/client/public/itemledger/apple-touch-icon-57x57.png +0 -0
  613. package/src/client/public/itemledger/apple-touch-icon-60x60.png +0 -0
  614. package/src/client/public/itemledger/apple-touch-icon-72x72.png +0 -0
  615. package/src/client/public/itemledger/apple-touch-icon-76x76.png +0 -0
  616. package/src/client/public/itemledger/apple-touch-icon-precomposed.png +0 -0
  617. package/src/client/public/itemledger/apple-touch-icon.png +0 -0
  618. package/src/client/public/itemledger/apple-touch-startup-image-1125x2436.png +0 -0
  619. package/src/client/public/itemledger/apple-touch-startup-image-1136x640.png +0 -0
  620. package/src/client/public/itemledger/apple-touch-startup-image-1170x2532.png +0 -0
  621. package/src/client/public/itemledger/apple-touch-startup-image-1179x2556.png +0 -0
  622. package/src/client/public/itemledger/apple-touch-startup-image-1242x2208.png +0 -0
  623. package/src/client/public/itemledger/apple-touch-startup-image-1242x2688.png +0 -0
  624. package/src/client/public/itemledger/apple-touch-startup-image-1284x2778.png +0 -0
  625. package/src/client/public/itemledger/apple-touch-startup-image-1290x2796.png +0 -0
  626. package/src/client/public/itemledger/apple-touch-startup-image-1334x750.png +0 -0
  627. package/src/client/public/itemledger/apple-touch-startup-image-1488x2266.png +0 -0
  628. package/src/client/public/itemledger/apple-touch-startup-image-1536x2048.png +0 -0
  629. package/src/client/public/itemledger/apple-touch-startup-image-1620x2160.png +0 -0
  630. package/src/client/public/itemledger/apple-touch-startup-image-1640x2160.png +0 -0
  631. package/src/client/public/itemledger/apple-touch-startup-image-1668x2224.png +0 -0
  632. package/src/client/public/itemledger/apple-touch-startup-image-1668x2388.png +0 -0
  633. package/src/client/public/itemledger/apple-touch-startup-image-1792x828.png +0 -0
  634. package/src/client/public/itemledger/apple-touch-startup-image-2048x1536.png +0 -0
  635. package/src/client/public/itemledger/apple-touch-startup-image-2048x2732.png +0 -0
  636. package/src/client/public/itemledger/apple-touch-startup-image-2160x1620.png +0 -0
  637. package/src/client/public/itemledger/apple-touch-startup-image-2160x1640.png +0 -0
  638. package/src/client/public/itemledger/apple-touch-startup-image-2208x1242.png +0 -0
  639. package/src/client/public/itemledger/apple-touch-startup-image-2224x1668.png +0 -0
  640. package/src/client/public/itemledger/apple-touch-startup-image-2266x1488.png +0 -0
  641. package/src/client/public/itemledger/apple-touch-startup-image-2388x1668.png +0 -0
  642. package/src/client/public/itemledger/apple-touch-startup-image-2436x1125.png +0 -0
  643. package/src/client/public/itemledger/apple-touch-startup-image-2532x1170.png +0 -0
  644. package/src/client/public/itemledger/apple-touch-startup-image-2556x1179.png +0 -0
  645. package/src/client/public/itemledger/apple-touch-startup-image-2688x1242.png +0 -0
  646. package/src/client/public/itemledger/apple-touch-startup-image-2732x2048.png +0 -0
  647. package/src/client/public/itemledger/apple-touch-startup-image-2778x1284.png +0 -0
  648. package/src/client/public/itemledger/apple-touch-startup-image-2796x1290.png +0 -0
  649. package/src/client/public/itemledger/apple-touch-startup-image-640x1136.png +0 -0
  650. package/src/client/public/itemledger/apple-touch-startup-image-750x1334.png +0 -0
  651. package/src/client/public/itemledger/apple-touch-startup-image-828x1792.png +0 -0
  652. package/src/client/public/itemledger/assets/logo/base-icon.png +0 -0
  653. package/src/client/public/itemledger/browserconfig.xml +12 -0
  654. package/src/client/public/itemledger/favicon-16x16.png +0 -0
  655. package/src/client/public/itemledger/favicon-32x32.png +0 -0
  656. package/src/client/public/itemledger/favicon-48x48.png +0 -0
  657. package/src/client/public/itemledger/favicon.ico +0 -0
  658. package/src/client/public/itemledger/manifest.webmanifest +69 -0
  659. package/src/client/public/itemledger/microdata.json +71 -0
  660. package/src/client/public/itemledger/mstile-144x144.png +0 -0
  661. package/src/client/public/itemledger/mstile-150x150.png +0 -0
  662. package/src/client/public/itemledger/mstile-310x150.png +0 -0
  663. package/src/client/public/itemledger/mstile-310x310.png +0 -0
  664. package/src/client/public/itemledger/mstile-70x70.png +0 -0
  665. package/src/client/public/itemledger/sitemap +148 -0
  666. package/src/client/public/itemledger/yandex-browser-50x50.png +0 -0
  667. package/src/client/public/itemledger/yandex-browser-manifest.json +9 -0
  668. package/src/client/public/test/favicon.ico +0 -0
  669. package/src/client/public/test/sitemap +148 -0
  670. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +137 -0
  671. package/src/client/services/core/core.service.js +309 -0
  672. package/src/client/services/crypto/crypto.service.js +68 -0
  673. package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
  674. package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
  675. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
  676. package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
  677. package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
  678. package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +99 -0
  679. package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
  680. package/src/client/services/cyberia-instance/cyberia-instance.service.js +137 -0
  681. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
  682. package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
  683. package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
  684. package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
  685. package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
  686. package/src/client/services/cyberia-saga/cyberia-saga.service.js +99 -0
  687. package/src/client/services/cyberia-skill/cyberia-skill.service.js +99 -0
  688. package/src/client/services/default/default.management.js +1015 -0
  689. package/src/client/services/default/default.service.js +99 -0
  690. package/src/client/services/document/document.service.js +134 -0
  691. package/src/client/services/file/file.service.js +94 -0
  692. package/src/client/services/instance/instance.management.js +78 -0
  693. package/src/client/services/instance/instance.service.js +107 -0
  694. package/src/client/services/ipfs/ipfs.service.js +118 -0
  695. package/src/client/services/object-layer/object-layer.management.js +414 -0
  696. package/src/client/services/object-layer/object-layer.service.js +208 -0
  697. package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +99 -0
  698. package/src/client/services/test/test.service.js +68 -0
  699. package/src/client/services/user/guest.service.js +86 -0
  700. package/src/client/services/user/user.management.js +51 -0
  701. package/src/client/services/user/user.service.js +106 -0
  702. package/src/client/ssr/RootDocument.js +237 -0
  703. package/src/client/ssr/body/404.js +77 -0
  704. package/src/client/ssr/body/500.js +76 -0
  705. package/src/client/ssr/body/CacheControl.js +117 -0
  706. package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +97 -0
  707. package/src/client/ssr/body/DefaultSplashScreen.js +97 -0
  708. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  709. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +90 -0
  710. package/src/client/ssr/head/CryptokoynScripts.js +4 -0
  711. package/src/client/ssr/head/Css.js +241 -0
  712. package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
  713. package/src/client/ssr/head/DefaultScripts.js +6 -0
  714. package/src/client/ssr/head/ItemledgerScripts.js +4 -0
  715. package/src/client/ssr/head/Microdata.js +11 -0
  716. package/src/client/ssr/head/Production.js +1 -0
  717. package/src/client/ssr/head/Pwa.js +146 -0
  718. package/src/client/ssr/head/PwaItemledger.js +197 -0
  719. package/src/client/ssr/head/Seo.js +15 -0
  720. package/src/client/ssr/head/UnderpostScripts.js +6 -0
  721. package/src/client/ssr/mailer/DefaultRecoverEmail.js +20 -0
  722. package/src/client/ssr/mailer/DefaultVerifyEmail.js +16 -0
  723. package/src/client/ssr/views/Cyberia404.js +328 -0
  724. package/src/client/ssr/views/CyberiaServerMetrics.js +1070 -0
  725. package/src/client/ssr/views/Maintenance.js +64 -0
  726. package/src/client/ssr/views/NoNetworkConnection.js +68 -0
  727. package/src/client/ssr/views/Test.js +199 -0
  728. package/src/client/sw/core.sw.js +274 -0
  729. package/src/client-builder/client-build-docs.js +493 -0
  730. package/src/client-builder/client-build-live.js +100 -0
  731. package/src/client-builder/client-build.js +1092 -0
  732. package/src/client-builder/client-dev-server.js +88 -0
  733. package/src/client-builder/client-formatted.js +170 -0
  734. package/src/client-builder/client-icons.js +108 -0
  735. package/src/client-builder/ssr.js +124 -0
  736. package/src/client.build.js +17 -0
  737. package/src/client.dev.js +21 -0
  738. package/src/db/DataBaseProvider.js +213 -0
  739. package/src/db/mariadb/MariaDB.js +72 -0
  740. package/src/db/mongo/MongoBootstrap.js +657 -0
  741. package/src/db/mongo/MongooseDB.js +199 -0
  742. package/src/grpc/cyberia/grpc-server.js +162 -0
  743. package/src/index.js +357 -0
  744. package/src/mailer/EmailRender.js +116 -0
  745. package/src/mailer/MailerProvider.js +213 -0
  746. package/src/projects/cyberia/atlas-sprite-sheet-generator.js +413 -0
  747. package/src/projects/cyberia/besu-genesis-generator.js +1630 -0
  748. package/src/projects/cyberia/catalog-cyberia.js +90 -0
  749. package/src/projects/cyberia/gemini-client.js +175 -0
  750. package/src/projects/cyberia/generate-saga.js +2137 -0
  751. package/src/projects/cyberia/hot-reload-trigger.js +163 -0
  752. package/src/projects/cyberia/instance-data.js +719 -0
  753. package/src/projects/cyberia/ipfs-client.js +599 -0
  754. package/src/projects/cyberia/map-preview-generator.js +304 -0
  755. package/src/projects/cyberia/object-layer.js +978 -0
  756. package/src/projects/cyberia/semantic-layer-generator-floor.js +319 -0
  757. package/src/projects/cyberia/semantic-layer-generator-resource.js +259 -0
  758. package/src/projects/cyberia/semantic-layer-generator-skin.js +1164 -0
  759. package/src/projects/cyberia/semantic-layer-generator.js +753 -0
  760. package/src/projects/cyberia/shape-generator.js +1060 -0
  761. package/src/projects/underpost/catalog-underpost.js +60 -0
  762. package/src/proxy.js +19 -0
  763. package/src/runtime/cyberia-client/Dockerfile +49 -0
  764. package/src/runtime/cyberia-client/Dockerfile.dev +75 -0
  765. package/src/runtime/cyberia-server/Dockerfile +43 -0
  766. package/src/runtime/cyberia-server/Dockerfile.dev +56 -0
  767. package/src/runtime/engine-cyberia/Dockerfile +161 -0
  768. package/src/runtime/engine-cyberia/Dockerfile.dev +161 -0
  769. package/src/runtime/engine-cyberia/Dockerfile.test +165 -0
  770. package/src/runtime/engine-cyberia/compose.env +144 -0
  771. package/src/runtime/engine-cyberia/docker-compose.yml +434 -0
  772. package/src/runtime/engine-cyberia/ipfs/configure-ipfs.sh +13 -0
  773. package/src/runtime/engine-cyberia/mongodb/entrypoint.sh +76 -0
  774. package/src/runtime/engine-cyberia/nginx.conf +128 -0
  775. package/src/runtime/express/Dockerfile +45 -0
  776. package/src/runtime/express/Express.js +285 -0
  777. package/src/runtime/lampp/Dockerfile +62 -0
  778. package/src/runtime/lampp/Lampp.js +359 -0
  779. package/src/runtime/nginx/Nginx.js +250 -0
  780. package/src/runtime/wp/Dockerfile +62 -0
  781. package/src/runtime/wp/Wp.js +642 -0
  782. package/src/server/auth.js +713 -0
  783. package/src/server/backup.js +102 -0
  784. package/src/server/catalog.js +72 -0
  785. package/src/server/conf.js +2316 -0
  786. package/src/server/cron.js +476 -0
  787. package/src/server/crypto.js +210 -0
  788. package/src/server/data-query.js +461 -0
  789. package/src/server/dns.js +553 -0
  790. package/src/server/downloader.js +73 -0
  791. package/src/server/logger.js +229 -0
  792. package/src/server/middlewares.js +152 -0
  793. package/src/server/peer.js +75 -0
  794. package/src/server/process.js +299 -0
  795. package/src/server/proxy.js +139 -0
  796. package/src/server/runtime-status.js +252 -0
  797. package/src/server/runtime.js +183 -0
  798. package/src/server/start.js +272 -0
  799. package/src/server/tls.js +254 -0
  800. package/src/server/valkey.js +201 -0
  801. package/src/server.js +25 -0
  802. package/src/ws/IoInterface.js +129 -0
  803. package/src/ws/IoServer.js +68 -0
  804. package/src/ws/core/channels/core.ws.chat.js +68 -0
  805. package/src/ws/core/channels/core.ws.mailer.js +116 -0
  806. package/src/ws/core/channels/core.ws.stream.js +90 -0
  807. package/src/ws/core/core.ws.connection.js +41 -0
  808. package/src/ws/core/core.ws.emit.js +37 -0
  809. package/src/ws/core/core.ws.server.js +44 -0
  810. package/src/ws/default/channels/default.ws.main.js +57 -0
  811. package/src/ws/default/default.ws.connection.js +35 -0
  812. package/src/ws/default/default.ws.emit.js +14 -0
  813. package/src/ws/default/default.ws.server.js +39 -0
  814. package/test/api.test.js +53 -0
  815. package/test/crypto.test.js +117 -0
  816. package/test/cyberia-instance-conf-defaults.test.js +140 -0
  817. package/test/deploy-monitor.test.js +267 -0
  818. package/test/shape-generator.test.js +463 -0
  819. package/tsconfig.docs.json +15 -0
  820. package/typedoc.dd-cyberia.json +31 -0
  821. package/typedoc.json +31 -0
@@ -0,0 +1,21 @@
1
+ import express from 'express';
2
+ import { registerCrudRoutes } from '../../server/middlewares.js';
3
+ import { CyberiaActionController } from './cyberia-action.controller.js';
4
+
5
+ class CyberiaActionRouter {
6
+ /**
7
+ * @param {import('../types.js').RouterOptions} options
8
+ * @returns {import('express').Router}
9
+ */
10
+ static router(options) {
11
+ const router = express.Router();
12
+ // Direct lookup by code — the client fetches an NPC's action metadata
13
+ // (label, dialogue map) by the action code the Go server sends over AOI.
14
+ router.get(`/code/:code`, async (req, res) => await CyberiaActionController.getByCode(req, res, options));
15
+ return registerCrudRoutes(router, CyberiaActionController, options);
16
+ }
17
+ }
18
+
19
+ const ApiRouter = (options) => CyberiaActionRouter.router(options);
20
+
21
+ export { ApiRouter, CyberiaActionRouter };
@@ -0,0 +1,58 @@
1
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
2
+ import { loggerFactory } from '../../server/logger.js';
3
+ import { DataQuery } from '../../server/data-query.js';
4
+ import { DefaultCyberiaActions } from '../cyberia-server-defaults/cyberia-server-defaults.js';
5
+
6
+ const logger = loggerFactory(import.meta);
7
+
8
+ class CyberiaActionService {
9
+ static post = async (req, res, options) => {
10
+ /** @type {import('./cyberia-action.model.js').CyberiaActionModel} */
11
+ const CyberiaAction = DataBaseProviderService.getModel('CyberiaAction', options);
12
+ return await new CyberiaAction(req.body).save();
13
+ };
14
+ static get = async (req, res, options) => {
15
+ /** @type {import('./cyberia-action.model.js').CyberiaActionModel} */
16
+ const CyberiaAction = DataBaseProviderService.getModel('CyberiaAction', options);
17
+ if (req.params.id) return await CyberiaAction.findById(req.params.id);
18
+
19
+ // Parse query parameters using DataQuery helper
20
+ const { query, sort, skip, limit, page } = DataQuery.parse(req.query);
21
+
22
+ const [data, total] = await Promise.all([
23
+ CyberiaAction.find(query).sort(sort).limit(limit).skip(skip),
24
+ CyberiaAction.countDocuments(query),
25
+ ]);
26
+
27
+ const totalPages = Math.ceil(total / limit);
28
+ return { data, total, page, totalPages };
29
+ };
30
+ static getByCode = async (req, res, options) => {
31
+ /** @type {import('./cyberia-action.model.js').CyberiaActionModel} */
32
+ const CyberiaAction = DataBaseProviderService.getModel('CyberiaAction', options);
33
+ const { code } = req.params;
34
+ if (!code) throw new Error('code parameter is required');
35
+ const data = await CyberiaAction.findOne({ code }).lean();
36
+ if (data) return data;
37
+ // Fallback world delivers actions to the Go server from the canonical
38
+ // defaults without persisting them; serve those so the client can fetch the
39
+ // action's label + dialogue map by code. Quest OFFERS are NOT resolved here —
40
+ // the client locates offered quests via the cyberia-quest API by cell.
41
+ const fallback = DefaultCyberiaActions.find((a) => a.code === code);
42
+ if (fallback) return fallback;
43
+ throw new Error(`No action found for code: ${code}`);
44
+ };
45
+ static put = async (req, res, options) => {
46
+ /** @type {import('./cyberia-action.model.js').CyberiaActionModel} */
47
+ const CyberiaAction = DataBaseProviderService.getModel('CyberiaAction', options);
48
+ return await CyberiaAction.findByIdAndUpdate(req.params.id, req.body);
49
+ };
50
+ static delete = async (req, res, options) => {
51
+ /** @type {import('./cyberia-action.model.js').CyberiaActionModel} */
52
+ const CyberiaAction = DataBaseProviderService.getModel('CyberiaAction', options);
53
+ if (req.params.id) return await CyberiaAction.findByIdAndDelete(req.params.id);
54
+ else return await CyberiaAction.deleteMany();
55
+ };
56
+ }
57
+
58
+ export { CyberiaActionService };
@@ -0,0 +1,27 @@
1
+ import { controllerHandler, sendSuccess } from '../../server/middlewares.js';
2
+ import { CYBERIA_CLIENT_HINTS_DEFAULTS } from '../../client/components/cyberia/SharedDefaultsCyberia.js';
3
+ import { resolveClientHints } from './cyberia-client-hints.service.js';
4
+
5
+ class CyberiaClientHintsController {
6
+ static getByCode = controllerHandler(
7
+ async (req, res, options) => {
8
+ const { data, source } = await resolveClientHints(req.params.code, {
9
+ host: options.host || 'default',
10
+ path: options.path || '/',
11
+ });
12
+ // Surface the resolution source as a non-authoritative header so
13
+ // operators can see whether the runtime fetched from the new
14
+ // collection, the compatibility read on instance-conf, the cache, or defaults.
15
+ res.setHeader('X-Cyberia-Hints-Source', source);
16
+ return sendSuccess(res, data);
17
+ },
18
+ { errorStatus: 500 },
19
+ );
20
+
21
+ static getDefaults = controllerHandler(async (req, res, options) => {
22
+ res.setHeader('X-Cyberia-Hints-Source', 'defaults');
23
+ return sendSuccess(res, CYBERIA_CLIENT_HINTS_DEFAULTS);
24
+ });
25
+ }
26
+
27
+ export { CyberiaClientHintsController };
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Mongoose model for `CyberiaClientHints`.
3
+ *
4
+ * Dedicated collection for per-instance presentation overrides.
5
+ *
6
+ * Ownership:
7
+ * - Read by: cyberia-client (via /api/cyberia-client-hints/:code), CMS UIs.
8
+ * - Written by: CMS / editor flows. The Cyberia simulation server
9
+ * never reads or writes this collection.
10
+ * - Cacheable: yes — the service layer keeps an in-memory TTL cache.
11
+ *
12
+ * Schema scope: purely visual fields. Anything that influences simulation
13
+ * belongs in `CyberiaInstanceConf`.
14
+ *
15
+ * @module src/api/cyberia-client-hints/cyberia-client-hints.model.js
16
+ */
17
+
18
+ import { Schema, model } from 'mongoose';
19
+
20
+ const ColorRgbaSchema = new Schema(
21
+ {
22
+ r: { type: Number, default: 0 },
23
+ g: { type: Number, default: 0 },
24
+ b: { type: Number, default: 0 },
25
+ a: { type: Number, default: 255 },
26
+ },
27
+ { _id: false },
28
+ );
29
+
30
+ const PaletteEntrySchema = new Schema(
31
+ {
32
+ key: { type: String, required: true },
33
+ r: { type: Number, default: 0 },
34
+ g: { type: Number, default: 0 },
35
+ b: { type: Number, default: 0 },
36
+ a: { type: Number, default: 255 },
37
+ },
38
+ { _id: false },
39
+ );
40
+
41
+ const StatusIconHintSchema = new Schema(
42
+ {
43
+ id: { type: Number, required: true },
44
+ iconId: { type: String, default: '' },
45
+ bounce: { type: Boolean, default: false },
46
+ borderColor: { type: ColorRgbaSchema, default: () => ({ r: 100, g: 100, b: 100, a: 200 }) },
47
+ },
48
+ { _id: false },
49
+ );
50
+
51
+ const EntityColorKeySchema = new Schema(
52
+ {
53
+ entityType: { type: String, required: true },
54
+ colorKey: { type: String, required: true },
55
+ },
56
+ { _id: false },
57
+ );
58
+
59
+ const CyberiaClientHintsSchema = new Schema(
60
+ {
61
+ // Instance code this hint set is scoped to. Matches CyberiaInstance.code
62
+ // and CyberiaInstanceConf.instanceCode. Indexed and unique to make the
63
+ // service-layer cache a 1-to-1 keyed lookup.
64
+ code: { type: String, required: true, unique: true, index: true },
65
+
66
+ // Optional palette overrides. Keys not present here fall back to the
67
+ // client's compile-time defaults.
68
+ palette: { type: [PaletteEntrySchema], default: [] },
69
+
70
+ // Optional per-entity-type color-key overrides.
71
+ entityColorKeys: { type: [EntityColorKeySchema], default: [] },
72
+
73
+ // Optional status-icon visual overrides (id → iconId + borderColor).
74
+ statusIcons: { type: [StatusIconHintSchema], default: [] },
75
+
76
+ // Camera, viewport, and cell-sizing tunings — null/undefined means
77
+ // "use the SharedDefaultsCyberia.RENDER_DEFAULTS value".
78
+ cellSize: { type: Number, default: null },
79
+ defaultObjWidth: { type: Number, default: null },
80
+ defaultObjHeight: { type: Number, default: null },
81
+ cameraSmoothing: { type: Number, default: null },
82
+ cameraZoom: { type: Number, default: null },
83
+ defaultWidthScreenFactor: { type: Number, default: null },
84
+ defaultHeightScreenFactor: { type: Number, default: null },
85
+ interpolationMs: { type: Number, default: null },
86
+ devUi: { type: Boolean, default: null },
87
+
88
+ // Main UI font: TTF file name under engine assets/fonts/ (null = built-in
89
+ // raylib font) and a uniform text-size multiplier.
90
+ fontFamily: { type: String, default: null },
91
+ fontFactorSize: { type: Number, default: null },
92
+ },
93
+ { timestamps: true },
94
+ );
95
+
96
+ const CyberiaClientHintsModel = model('CyberiaClientHints', CyberiaClientHintsSchema);
97
+
98
+ const ProviderSchema = CyberiaClientHintsSchema;
99
+
100
+ export { CyberiaClientHintsSchema, CyberiaClientHintsModel, ProviderSchema };
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @module src/api/cyberia-client-hints
3
+ *
4
+ * Client presentation hints — read-only REST endpoint.
5
+ *
6
+ * Purpose
7
+ * -------
8
+ * The cyberia-server (Go authoritative simulation) and the WS init payload
9
+ * carry *only* simulation contracts. Client-render policy (palette, camera
10
+ * defaults, status-icon visuals, interpolation window, dev-overlay flag)
11
+ * lives off the simulation path entirely.
12
+ *
13
+ * This endpoint exposes optional per-instance overrides of those values.
14
+ * The client is required to function with no calls to this endpoint at
15
+ * all (it ships built-in defaults that match the canonical engine
16
+ * defaults 1-to-1 — see cyberia-client/src/domain/presentation_defaults.h).
17
+ *
18
+ * Endpoint
19
+ * --------
20
+ * GET /api/cyberia-client-hints/:instanceCode
21
+ * -> 200 { palette, entityColorKeys, statusIcons, cameraSmoothing,
22
+ * cameraZoom, defaultWidthScreenFactor,
23
+ * defaultHeightScreenFactor, interpolationMs, devUi }
24
+ * -> 404 if no instance with that code exists in the database — the
25
+ * client falls back to its built-in defaults on 404 (this is
26
+ * the normal path for stateless servers / fresh deployments).
27
+ *
28
+ * GET /api/cyberia-client-hints/
29
+ * -> 200 canonical defaults — same shape as above, no DB read.
30
+ *
31
+ * What it intentionally does NOT do
32
+ * ---------------------------------
33
+ * - It does not touch gameplay state (no entity, map, economy, skill,
34
+ * equipment, or stat fields).
35
+ * - It is not consumed by cyberia-server; the Go process never calls
36
+ * this endpoint.
37
+ * - It is not authenticated. Presentation hints are not secret.
38
+ */
39
+
40
+ import express from 'express';
41
+ import { crossOriginMiddleware } from '../../server/middlewares.js';
42
+ import { CyberiaClientHintsController } from './cyberia-client-hints.controller.js';
43
+
44
+ class CyberiaClientHintsRouter {
45
+ /**
46
+ * @param {import('../types.js').RouterOptions} options
47
+ * @returns {import('express').Router}
48
+ */
49
+ static router(options) {
50
+ const router = express.Router();
51
+ router.use(crossOriginMiddleware);
52
+
53
+ // GET /:code -> resolved hints.
54
+ // Resolution order is documented in cyberia-client-hints.service.js:
55
+ // 1. In-memory TTL cache.
56
+ // 2. CyberiaClientHints collection (preferred).
57
+ // 3. Legacy presentation fields on CyberiaInstanceConf (back-compat).
58
+ // 4. Canonical client defaults (never cached so a later DB insert wins).
59
+ router.get('/:code', async (req, res) => await CyberiaClientHintsController.getByCode(req, res, options));
60
+
61
+ // GET / -> canonical defaults. No DB read. Documentation/diagnostic.
62
+ router.get('/', async (req, res) => await CyberiaClientHintsController.getDefaults(req, res, options));
63
+
64
+ return router;
65
+ }
66
+ }
67
+
68
+ const ApiRouter = (options) => CyberiaClientHintsRouter.router(options);
69
+
70
+ export { ApiRouter, CyberiaClientHintsRouter };
@@ -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
+ }
@@ -0,0 +1,8 @@
1
+ import { buildCrudController, serviceHandler } from '../../server/middlewares.js';
2
+ import { CyberiaDialogueService } from './cyberia-dialogue.service.js';
3
+
4
+ const CyberiaDialogueController = buildCrudController(CyberiaDialogueService, {
5
+ getByCode: serviceHandler(CyberiaDialogueService.getByCode, { crossOrigin: true, errorStatus: 404 }),
6
+ });
7
+
8
+ export { CyberiaDialogueController };
@@ -0,0 +1,36 @@
1
+ import { Schema, model, Types } from 'mongoose';
2
+
3
+ // https://mongoosejs.com/docs/2.7.x/docs/schematypes.html
4
+
5
+ /**
6
+ * CyberiaDialogue — each document is one dialogue line that belongs to a
7
+ * named dialogue group (`code`). One code groups many ordered lines.
8
+ *
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
+ */
17
+ const CyberiaDialogueSchema = new Schema(
18
+ {
19
+ code: { type: String, required: true, index: true },
20
+ order: { type: Number, default: 0 },
21
+ speaker: { type: String, default: '' },
22
+ text: { type: String, required: true },
23
+ mood: { type: String, default: 'neutral' },
24
+ },
25
+ {
26
+ timestamps: true,
27
+ },
28
+ );
29
+
30
+ CyberiaDialogueSchema.index({ code: 1, order: 1 });
31
+
32
+ const CyberiaDialogueModel = model('CyberiaDialogue', CyberiaDialogueSchema);
33
+
34
+ const ProviderSchema = CyberiaDialogueSchema;
35
+
36
+ export { CyberiaDialogueSchema, CyberiaDialogueModel, ProviderSchema };
@@ -0,0 +1,20 @@
1
+ import express from 'express';
2
+ import { registerCrudRoutes } from '../../server/middlewares.js';
3
+ import { CyberiaDialogueController } from './cyberia-dialogue.controller.js';
4
+
5
+ class CyberiaDialogueRouter {
6
+ /**
7
+ * @param {import('../types.js').RouterOptions} options
8
+ * @returns {import('express').Router}
9
+ */
10
+ static router(options) {
11
+ const router = express.Router();
12
+ // Direct lookup by code — C client fetches dialogue by code (e.g. "default-lain")
13
+ router.get(`/code/:code`, async (req, res) => await CyberiaDialogueController.getByCode(req, res, options));
14
+ return registerCrudRoutes(router, CyberiaDialogueController, options);
15
+ }
16
+ }
17
+
18
+ const ApiRouter = (options) => CyberiaDialogueRouter.router(options);
19
+
20
+ export { ApiRouter, CyberiaDialogueRouter };
@@ -0,0 +1,57 @@
1
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
2
+ import { loggerFactory } from '../../server/logger.js';
3
+ import { DataQuery } from '../../server/data-query.js';
4
+ import { DefaultCyberiaDialogues } from '../cyberia-server-defaults/cyberia-server-defaults.js';
5
+
6
+ const logger = loggerFactory(import.meta);
7
+
8
+ class CyberiaDialogueService {
9
+ static post = async (req, res, options) => {
10
+ /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
11
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
12
+ return await new CyberiaDialogue(req.body).save();
13
+ };
14
+ static get = async (req, res, options) => {
15
+ /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
16
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
17
+ if (req.params.id) return await CyberiaDialogue.findById(req.params.id);
18
+
19
+ // Parse query parameters using DataQuery helper
20
+ const { query, sort, skip, limit, page } = DataQuery.parse(req.query);
21
+
22
+ const [data, total] = await Promise.all([
23
+ CyberiaDialogue.find(query).sort(sort).limit(limit).skip(skip),
24
+ CyberiaDialogue.countDocuments(query),
25
+ ]);
26
+
27
+ const totalPages = Math.ceil(total / limit);
28
+ return { data, total, page, totalPages };
29
+ };
30
+ static put = async (req, res, options) => {
31
+ /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
32
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
33
+ return await CyberiaDialogue.findByIdAndUpdate(req.params.id, req.body);
34
+ };
35
+ static delete = async (req, res, options) => {
36
+ /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
37
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
38
+ if (req.params.id) return await CyberiaDialogue.findByIdAndDelete(req.params.id);
39
+ else return await CyberiaDialogue.deleteMany();
40
+ };
41
+ static getByCode = async (req, res, options) => {
42
+ /** @type {import('./cyberia-dialogue.model.js').CyberiaDialogueModel} */
43
+ const CyberiaDialogue = DataBaseProviderService.getModel("CyberiaDialogue", options);
44
+ const { code } = req.params;
45
+ if (!code) throw new Error('code parameter is required');
46
+ const data = await CyberiaDialogue.find({ code }).sort({ order: 1 }).lean();
47
+ if (data.length) return data;
48
+ // Fallback world greetings/quest dialogue come from the canonical defaults
49
+ // without persisting them; serve those so action NPCs always have lines
50
+ // (and thus the dlg_complete grant handshake fires).
51
+ const fallback = DefaultCyberiaDialogues.filter((d) => d.code === code).sort((a, b) => a.order - b.order);
52
+ if (fallback.length) return fallback;
53
+ throw new Error(`No dialogue found for code: ${code}`);
54
+ };
55
+ }
56
+
57
+ export { CyberiaDialogueService };
@@ -0,0 +1,6 @@
1
+ import { buildCrudController } from '../../server/middlewares.js';
2
+ import { CyberiaEntityService } from './cyberia-entity.service.js';
3
+
4
+ const CyberiaEntityController = buildCrudController(CyberiaEntityService);
5
+
6
+ export { CyberiaEntityController };
@@ -0,0 +1,25 @@
1
+ import { Schema, model, Types } from 'mongoose';
2
+
3
+ // https://mongoosejs.com/docs/2.7.x/docs/schematypes.html
4
+
5
+ const CyberiaEntitySchema = new Schema({
6
+ entityType: { type: String, default: 'floor' },
7
+ initCellX: { type: Number, default: 0 },
8
+ initCellY: { type: Number, default: 0 },
9
+ dimX: { type: Number, default: 1 },
10
+ dimY: { type: Number, default: 1 },
11
+ color: { type: String, default: 'rgba(255, 0, 0, 1)' },
12
+ objectLayerItemIds: { type: [String], default: [] },
13
+ portalSubtype: { type: String, default: '' },
14
+ // Bot-specific fields (ignored for non-bot entities)
15
+ spawnRadius: { type: Number, default: 0 },
16
+ aggroRange: { type: Number, default: 0 },
17
+ maxLife: { type: Number, default: 0 },
18
+ lifeRegen: { type: Number, default: 0 },
19
+ });
20
+
21
+ const CyberiaEntityModel = model('CyberiaEntity', CyberiaEntitySchema);
22
+
23
+ const ProviderSchema = CyberiaEntitySchema;
24
+
25
+ export { CyberiaEntitySchema, CyberiaEntityModel, ProviderSchema };
@@ -0,0 +1,17 @@
1
+ import express from 'express';
2
+ import { registerCrudRoutes } from '../../server/middlewares.js';
3
+ import { CyberiaEntityController } from './cyberia-entity.controller.js';
4
+
5
+ class CyberiaEntityRouter {
6
+ /**
7
+ * @param {import('../types.js').RouterOptions} options
8
+ * @returns {import('express').Router}
9
+ */
10
+ static router(options) {
11
+ return registerCrudRoutes(express.Router(), CyberiaEntityController, options);
12
+ }
13
+ }
14
+
15
+ const ApiRouter = (options) => CyberiaEntityRouter.router(options);
16
+
17
+ export { ApiRouter, CyberiaEntityRouter };
@@ -0,0 +1,42 @@
1
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
2
+ import { loggerFactory } from '../../server/logger.js';
3
+ import { DataQuery } from '../../server/data-query.js';
4
+
5
+ const logger = loggerFactory(import.meta);
6
+
7
+ class CyberiaEntityService {
8
+ static post = async (req, res, options) => {
9
+ /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
10
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
11
+ return await new CyberiaEntity(req.body).save();
12
+ };
13
+ static get = async (req, res, options) => {
14
+ /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
15
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
16
+ if (req.params.id) return await CyberiaEntity.findById(req.params.id);
17
+
18
+ // Parse query parameters using DataQuery helper
19
+ const { query, sort, skip, limit, page } = DataQuery.parse(req.query);
20
+
21
+ const [data, total] = await Promise.all([
22
+ CyberiaEntity.find(query).sort(sort).limit(limit).skip(skip),
23
+ CyberiaEntity.countDocuments(query),
24
+ ]);
25
+
26
+ const totalPages = Math.ceil(total / limit);
27
+ return { data, total, page, totalPages };
28
+ };
29
+ static put = async (req, res, options) => {
30
+ /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
31
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
32
+ return await CyberiaEntity.findByIdAndUpdate(req.params.id, req.body);
33
+ };
34
+ static delete = async (req, res, options) => {
35
+ /** @type {import('./cyberia-entity.model.js').CyberiaEntityModel} */
36
+ const CyberiaEntity = DataBaseProviderService.getModel("CyberiaEntity", options);
37
+ if (req.params.id) return await CyberiaEntity.findByIdAndDelete(req.params.id);
38
+ else return await CyberiaEntity.deleteMany();
39
+ };
40
+ }
41
+
42
+ export { CyberiaEntityService };
@@ -0,0 +1,6 @@
1
+ import { buildCrudController } from '../../server/middlewares.js';
2
+ import { CyberiaEntityTypeDefaultService } from './cyberia-entity-type-default.service.js';
3
+
4
+ const CyberiaEntityTypeDefaultController = buildCrudController(CyberiaEntityTypeDefaultService);
5
+
6
+ export { CyberiaEntityTypeDefaultController };