@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,719 @@
1
+ /**
2
+ * Shared Cyberia instance world-load / boot data assembly.
3
+ *
4
+ * Single source of truth for the payloads cyberia-server (Go) needs to boot an
5
+ * instance and hot-reload it: full instance world (instance + maps + object
6
+ * layers + simulation config + actions/quests), single map/object-layer
7
+ * lookups, and the object-layer manifest.
8
+ *
9
+ * Consumed by BOTH transports so they stay byte-for-byte equivalent:
10
+ * - gRPC `CyberiaDataService` (src/grpc/cyberia/grpc-server.js) — primary.
11
+ * - REST `/api/cyberia-instance/boot/*` — fallback when the engine gRPC
12
+ * server is not enabled for the deploy.
13
+ *
14
+ * @module src/projects/cyberia/instance-data.js
15
+ */
16
+
17
+ import crypto from 'crypto';
18
+ import { DataBaseProviderService } from '../../db/DataBaseProvider.js';
19
+ import { loggerFactory } from '../../server/logger.js';
20
+ import {
21
+ CYBERIA_INSTANCE_CONF_DEFAULTS as FALLBACK_CONFIG_DEFAULTS,
22
+ DEFAULT_DEAD_ITEM_ID,
23
+ ENTITY_TYPE_DEFAULTS,
24
+ DefaultCyberiaActions,
25
+ DefaultCyberiaQuests,
26
+ } from '../../api/cyberia-server-defaults/cyberia-server-defaults.js';
27
+ import { DefaultCyberiaItems } from '../../client/components/cyberia/SharedDefaultsCyberia.js';
28
+ import { generateFallbackWorld } from '../../api/cyberia-instance/cyberia-fallback-world.js';
29
+
30
+ const logger = loggerFactory(import.meta);
31
+
32
+ /**
33
+ * Resolves the mongoose model bag for a DB context.
34
+ * @param {{host?: string, path?: string}|string} context - RouterOptions-style
35
+ * context or a resolved `${host}${path}` key (the gRPC dbKey form).
36
+ */
37
+ function getInstanceModels(context) {
38
+ const bucket = DataBaseProviderService.getProvider(context, 'mongoose');
39
+ if (!bucket || !bucket.models) {
40
+ throw new Error(`DataBaseProviderService not loaded for context "${JSON.stringify(context)}"`);
41
+ }
42
+ return bucket.models;
43
+ }
44
+
45
+ function normalizeEntityDefault(entityDefault = {}, canonical = {}) {
46
+ const defaultObjectLayers = entityDefault.defaultObjectLayers ?? canonical.defaultObjectLayers ?? [];
47
+ return {
48
+ entityType: entityDefault.entityType ?? canonical.entityType ?? '',
49
+ liveItemIds: [...(entityDefault.liveItemIds ?? canonical.liveItemIds ?? [])],
50
+ deadItemIds: [...(entityDefault.deadItemIds ?? canonical.deadItemIds ?? [])],
51
+ dropItemIds: [...(entityDefault.dropItemIds ?? canonical.dropItemIds ?? [])],
52
+ defaultObjectLayers: defaultObjectLayers.map((ol) => ({
53
+ itemId: ol.itemId || '',
54
+ active: !!ol.active,
55
+ quantity: ol.quantity || 0,
56
+ })),
57
+ behavior: entityDefault.behavior ?? canonical.behavior ?? '',
58
+ };
59
+ }
60
+
61
+ // Merge instance-level itemIds flagged `defaultPlayerInventory` into the player
62
+ // entityDefault's defaultObjectLayers so cyberia-server seeds them into every new
63
+ // player's inventory (see handlers.go player spawn). Items are added inactive —
64
+ // present in the inventory, not auto-equipped — so they never violate the
65
+ // one-active-per-type equipment rule.
66
+ //
67
+ // Also **removes** items that are flagged `defaultPlayerInventory: false` from
68
+ // the player's defaultObjectLayers. This ensures the instance's explicit intent
69
+ // is honoured even when the conf's entityDefaults (e.g. from a backup/import)
70
+ // baked those items into the player layer list.
71
+ function applyInstanceDefaultPlayerInventory(config, instanceItemIds = []) {
72
+ const entries = instanceItemIds || [];
73
+
74
+ // ── 1. Remove items explicitly flagged as NOT default player inventory ─────
75
+ const removeIds = new Set(
76
+ entries.filter((entry) => entry && entry.defaultPlayerInventory === false && entry.id).map((entry) => entry.id),
77
+ );
78
+ if (removeIds.size > 0) {
79
+ for (const ed of config.entityDefaults || []) {
80
+ if (ed.defaultObjectLayers) {
81
+ ed.defaultObjectLayers = ed.defaultObjectLayers.filter((ol) => !removeIds.has(ol.itemId));
82
+ }
83
+ }
84
+ }
85
+
86
+ // ── 2. Add items flagged as default player inventory ──────────────────────
87
+ const addIds = entries.filter((entry) => entry && entry.defaultPlayerInventory && entry.id).map((entry) => entry.id);
88
+ if (addIds.length === 0) return config;
89
+
90
+ const playerDefault = (config.entityDefaults || []).find((d) => d.entityType === 'player');
91
+ if (!playerDefault) return config;
92
+
93
+ playerDefault.defaultObjectLayers = playerDefault.defaultObjectLayers || [];
94
+ const existing = new Set(playerDefault.defaultObjectLayers.map((ol) => ol.itemId));
95
+ for (const id of addIds) {
96
+ if (existing.has(id)) continue;
97
+ playerDefault.defaultObjectLayers.push({ itemId: id, active: false, quantity: 1 });
98
+ existing.add(id);
99
+ }
100
+ return config;
101
+ }
102
+
103
+ // Map CyberiaSkill collection docs to the proto skillConfig shape. The skill
104
+ // collection is the authoritative own-model source: it carries full skill
105
+ // metadata (summonedEntityItemId, name, description) that the instance-conf
106
+ // skillConfig schema deliberately does not store.
107
+ function skillDocsToConfig(skillDocs = []) {
108
+ return skillDocs
109
+ .filter((d) => d && d.triggerItemId)
110
+ .map((d) => ({
111
+ triggerItemId: d.triggerItemId,
112
+ skills: (d.skills || []).map((sk) => ({
113
+ logicEventId: sk.logicEventId || '',
114
+ name: sk.name || '',
115
+ description: sk.description || '',
116
+ summonedEntityItemId: sk.summonedEntityItemId || '',
117
+ })),
118
+ }));
119
+ }
120
+
121
+ // Load authoritative skill configs from the CyberiaSkill collection. Returns []
122
+ // when the model is not loaded (api not mounted) or the collection is empty, so
123
+ // callers transparently keep the conf / fallback skillConfig.
124
+ async function loadSkillConfigDocs(models) {
125
+ if (!models.CyberiaSkill) return [];
126
+ return await models.CyberiaSkill.find({}).lean();
127
+ }
128
+
129
+ // Map CyberiaEntityTypeDefault collection docs to the proto entityDefaults shape.
130
+ // This collection is the authoritative own-model source for per-entity-type item
131
+ // defaults (live/dead/drop + seed object layers). Resolution is by liveItemIds
132
+ // membership, so every variant (e.g. each resource skin) must travel as its own
133
+ // entry — never collapsed by entityType.
134
+ function entityTypeDefaultDocsToConfig(docs = []) {
135
+ return docs
136
+ .filter((d) => d && d.entityType)
137
+ .map((d) => ({
138
+ entityType: d.entityType,
139
+ liveItemIds: [...(d.liveItemIds || [])],
140
+ deadItemIds: [...(d.deadItemIds || [])],
141
+ dropItemIds: [...(d.dropItemIds || [])],
142
+ defaultObjectLayers: (d.defaultObjectLayers || []).map((ol) => ({
143
+ itemId: ol.itemId,
144
+ active: !!ol.active,
145
+ quantity: ol.quantity || 0,
146
+ })),
147
+ behavior: d.behavior || '',
148
+ }));
149
+ }
150
+
151
+ // Load authoritative entity-type defaults from the CyberiaEntityTypeDefault
152
+ // collection. Returns [] when the model is not mounted or empty, so callers
153
+ // transparently keep the conf / canonical entityDefaults.
154
+ async function loadEntityTypeDefaultDocs(models) {
155
+ if (!models.CyberiaEntityTypeDefault) return [];
156
+ return await models.CyberiaEntityTypeDefault.find({}).lean();
157
+ }
158
+
159
+ // Feed every live/dead/drop and default-object-layer item id from the collection
160
+ // defaults into the atlas id set so the Go server resolves their sprites even
161
+ // when the entity appears in no map (e.g. a new resource skin).
162
+ function addEntityDefaultAtlasIds(entityDefaults, atlasItemIds) {
163
+ for (const d of entityDefaults || []) {
164
+ for (const id of d.liveItemIds || []) if (id) atlasItemIds.add(id);
165
+ for (const id of d.deadItemIds || []) if (id) atlasItemIds.add(id);
166
+ for (const id of d.dropItemIds || []) if (id) atlasItemIds.add(id);
167
+ for (const ol of d.defaultObjectLayers || []) if (ol.itemId) atlasItemIds.add(ol.itemId);
168
+ }
169
+ }
170
+
171
+ // Feed skill trigger items and every concrete summoned-entity id into the atlas
172
+ // id set so the Go server resolves their sprites even when the entity appears in
173
+ // no map. Runtime placeholders ('$active_skin', …) are excluded.
174
+ function addSkillAtlasIds(skillDocs, atlasItemIds) {
175
+ for (const d of skillDocs || []) {
176
+ if (d.triggerItemId) atlasItemIds.add(d.triggerItemId);
177
+ for (const sk of d.skills || []) {
178
+ const id = sk.summonedEntityItemId;
179
+ if (id && !id.startsWith('$')) atlasItemIds.add(id);
180
+ }
181
+ }
182
+ }
183
+
184
+ function mergeEntityDefaults(entityDefaults = []) {
185
+ const merged = entityDefaults.map((entityDefault) => normalizeEntityDefault(entityDefault));
186
+ const coveredTypes = new Set(merged.map((entityDefault) => entityDefault.entityType));
187
+ for (const canonical of ENTITY_TYPE_DEFAULTS) {
188
+ if (!coveredTypes.has(canonical.entityType)) merged.push(normalizeEntityDefault(canonical, canonical));
189
+ }
190
+ return merged;
191
+ }
192
+
193
+ // ── Mongoose doc → wire message converters (proto camelCase shapes) ────────
194
+
195
+ function toObjectLayerMsg(doc) {
196
+ const d = doc.data || {};
197
+ const item = d.item || {};
198
+ const stats = d.stats || {};
199
+ const ledger = d.ledger || {};
200
+ const render = d.render || {};
201
+ return {
202
+ mongoId: String(doc._id),
203
+ stats: {
204
+ effect: stats.effect || 0,
205
+ resistance: stats.resistance || 0,
206
+ agility: stats.agility || 0,
207
+ range: stats.range || 0,
208
+ intelligence: stats.intelligence || 0,
209
+ utility: stats.utility || 0,
210
+ },
211
+ item: {
212
+ id: item.id || '',
213
+ type: item.type || '',
214
+ description: item.description || '',
215
+ activable: !!item.activable,
216
+ },
217
+ ledger: {
218
+ type: ledger.type || 'OFF_CHAIN',
219
+ address: ledger.address || '',
220
+ tokenId: ledger.tokenId || '',
221
+ },
222
+ render: {
223
+ cid: render.cid || '',
224
+ metadataCid: render.metadataCid || '',
225
+ },
226
+ sha256: doc.sha256 || '',
227
+ cid: doc.cid || '',
228
+ };
229
+ }
230
+
231
+ /**
232
+ * Parse a CSS rgba() colour string into {r, g, b, a} integer components.
233
+ * Returns {r:0, g:0, b:0, a:0} (transparent) when the string is absent or malformed.
234
+ */
235
+ function parseRgba(str) {
236
+ if (!str) return { r: 0, g: 0, b: 0, a: 0 };
237
+ const m = str.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);
238
+ if (!m) return { r: 0, g: 0, b: 0, a: 0 };
239
+ // CSS alpha is 0-1 (float); proto uses 0-255 (int).
240
+ const cssAlpha = m[4] !== undefined ? parseFloat(m[4]) : 1;
241
+ return { r: Number(m[1]), g: Number(m[2]), b: Number(m[3]), a: Math.round(cssAlpha * 255) };
242
+ }
243
+
244
+ function toEntityMsg(ent) {
245
+ const rgba = parseRgba(ent.color);
246
+ return {
247
+ entityType: ent.entityType || 'floor',
248
+ initCellX: ent.initCellX || 0,
249
+ initCellY: ent.initCellY || 0,
250
+ dimX: ent.dimX || 1,
251
+ dimY: ent.dimY || 1,
252
+ color: ent.color || '',
253
+ objectLayerItemIds: ent.objectLayerItemIds || [],
254
+ spawnRadius: ent.spawnRadius || 0,
255
+ aggroRange: ent.aggroRange || 0,
256
+ maxLife: ent.maxLife || 0,
257
+ lifeRegen: ent.lifeRegen || 0,
258
+ portalSubtype: ent.portalSubtype || '',
259
+ colorR: rgba.r,
260
+ colorG: rgba.g,
261
+ colorB: rgba.b,
262
+ colorA: rgba.a,
263
+ };
264
+ }
265
+
266
+ function toMapMsg(doc) {
267
+ return {
268
+ mongoId: String(doc._id),
269
+ code: doc.code || '',
270
+ name: doc.name || '',
271
+ gridX: doc.gridX || 16,
272
+ gridY: doc.gridY || 16,
273
+ cellWidth: doc.cellWidth || 32,
274
+ cellHeight: doc.cellHeight || 32,
275
+ entities: (doc.entities || []).map(toEntityMsg),
276
+ };
277
+ }
278
+
279
+ function toInstanceMsg(doc) {
280
+ return {
281
+ mongoId: String(doc._id),
282
+ code: doc.code || '',
283
+ name: doc.name || '',
284
+ description: doc.description || '',
285
+ tags: doc.tags || [],
286
+ mapCodes: doc.cyberiaMapCodes || [],
287
+ portals: (doc.portals || []).map((p) => ({
288
+ sourceMapCode: p.sourceMapCode || '',
289
+ sourceCellX: p.sourceCellX || 0,
290
+ sourceCellY: p.sourceCellY || 0,
291
+ targetMapCode: p.targetMapCode || '',
292
+ targetCellX: p.targetCellX || 0,
293
+ targetCellY: p.targetCellY || 0,
294
+ portalMode: p.portalMode || 'inter-portal',
295
+ })),
296
+ topologyMode: doc.topologyMode || 'hybrid',
297
+ seed: doc.seed || '',
298
+ playerSpawn: {
299
+ sourceMapCode: doc.playerSpawn?.sourceMapCode || '',
300
+ sourceCellX: doc.playerSpawn?.sourceCellX || 0,
301
+ sourceCellY: doc.playerSpawn?.sourceCellY || 0,
302
+ random: !!doc.playerSpawn?.random,
303
+ },
304
+ };
305
+ }
306
+
307
+ // CyberiaAction → CyberiaActionMessage (proto camelCase fields).
308
+ function toActionMsg(a) {
309
+ return {
310
+ code: a.code || '',
311
+ label: a.label || '',
312
+ sourceMapCode: a.sourceMapCode || '',
313
+ sourceCellX: a.sourceCellX || 0,
314
+ sourceCellY: a.sourceCellY || 0,
315
+ dialogCode: a.dialogCode || '',
316
+ questDialogueCodes: (a.questDialogueCodes || []).map((qd) => ({
317
+ questCode: qd.questCode || '',
318
+ dialogCode: qd.dialogCode || '',
319
+ })),
320
+ };
321
+ }
322
+
323
+ // CyberiaQuest → CyberiaQuestMessage.
324
+ function toQuestMsg(q) {
325
+ return {
326
+ code: q.code || '',
327
+ title: q.title || '',
328
+ description: q.description || '',
329
+ unlocksQuestCodes: q.unlocksQuestCodes || [],
330
+ prerequisiteCodes: q.prerequisiteCodes || [],
331
+ sourceMapCode: q.sourceMapCode || '',
332
+ sourceCellX: q.sourceCellX || 0,
333
+ sourceCellY: q.sourceCellY || 0,
334
+ steps: (q.steps || []).map((s) => ({
335
+ id: s.id || '',
336
+ description: s.description || '',
337
+ objectives: (s.objectives || []).map((o) => ({
338
+ type: o.type || '',
339
+ itemId: o.itemId || '',
340
+ quantity: o.quantity || 1,
341
+ })),
342
+ })),
343
+ rewards: (q.rewards || []).map((r) => ({ itemId: r.itemId || '', quantity: r.quantity || 1 })),
344
+ };
345
+ }
346
+
347
+ /**
348
+ * Converts a CyberiaInstanceConf Mongoose document (or plain object) into
349
+ * a complete InstanceConfig message.
350
+ * Any field that is null/undefined in `gc` falls back to FALLBACK_CONFIG_DEFAULTS,
351
+ * so partial DB documents always produce a fully playable config.
352
+ */
353
+ function toInstanceConfig(gc) {
354
+ const fb = FALLBACK_CONFIG_DEFAULTS;
355
+ if (!gc) return buildFallbackConfig();
356
+
357
+ // STRICT BOUNDARY — this function produces the *simulation* config for
358
+ // cyberia-server only. Every presentation concern is excluded:
359
+ //
360
+ // - palette (colors), camera tunings, screen factors, devUi,
361
+ // interpolationMs, status-icon visuals, entityDefaults[].colorKey,
362
+ // cellSize, defaultObj* — all of these reach the client through
363
+ // /api/cyberia-client-hints, never through the boot transports.
364
+ //
365
+ // The Go simulation does not need any of them to advance world state;
366
+ // the C/WASM cyberia-client owns its own render policy. See
367
+ // src/client/components/cyberia/SharedDefaultsCyberia.js.
368
+
369
+ const gcDefaults = gc.entityDefaults && gc.entityDefaults.length > 0 ? gc.entityDefaults : [];
370
+ const entityDefaults = mergeEntityDefaults(gcDefaults);
371
+
372
+ return {
373
+ tickRate: gc.tickRate ?? fb.tickRate,
374
+ snapshotRate: gc.snapshotRate ?? fb.snapshotRate,
375
+ aoiRadius: gc.aoiRadius ?? fb.aoiRadius,
376
+ portalHoldTimeMs: gc.portalHoldTimeMs ?? fb.portalHoldTimeMs,
377
+ portalSpawnRadius: gc.portalSpawnRadius ?? fb.portalSpawnRadius,
378
+ entityBaseSpeed: gc.entityBaseSpeed ?? fb.entityBaseSpeed,
379
+ entityBaseMaxLife: gc.entityBaseMaxLife ?? fb.entityBaseMaxLife,
380
+ entityBaseActionCooldownMs: gc.entityBaseActionCooldownMs ?? fb.entityBaseActionCooldownMs,
381
+ entityBaseMinActionCooldownMs: gc.entityBaseMinActionCooldownMs ?? fb.entityBaseMinActionCooldownMs,
382
+ botAggroRange: gc.botAggroRange ?? fb.botAggroRange,
383
+ defaultPlayerWidth: gc.defaultPlayerWidth ?? fb.defaultPlayerWidth,
384
+ defaultPlayerHeight: gc.defaultPlayerHeight ?? fb.defaultPlayerHeight,
385
+ playerBaseLifeRegenMin: gc.playerBaseLifeRegenMin ?? fb.playerBaseLifeRegenMin,
386
+ playerBaseLifeRegenMax: gc.playerBaseLifeRegenMax ?? fb.playerBaseLifeRegenMax,
387
+ sumStatsLimit: gc.sumStatsLimit ?? fb.sumStatsLimit,
388
+ maxActiveLayers: gc.maxActiveLayers ?? fb.maxActiveLayers,
389
+ initialLifeFraction: gc.initialLifeFraction ?? fb.initialLifeFraction,
390
+ respawnDurationMs: gc.respawnDurationMs ?? fb.respawnDurationMs,
391
+ collisionLifeLoss: gc.collisionLifeLoss ?? fb.collisionLifeLoss,
392
+ // Economy — Fountain & Sink (nested, mirrors EconomyRules proto message).
393
+ economyRules: {
394
+ botSpawnCoins: gc.economyRules?.botSpawnCoins ?? fb.economyRules.botSpawnCoins,
395
+ playerSpawnCoins: gc.economyRules?.playerSpawnCoins ?? fb.economyRules.playerSpawnCoins,
396
+ coinKillPercentVsBot: gc.economyRules?.coinKillPercentVsBot ?? fb.economyRules.coinKillPercentVsBot,
397
+ coinKillPercentVsPlayer: gc.economyRules?.coinKillPercentVsPlayer ?? fb.economyRules.coinKillPercentVsPlayer,
398
+ coinKillMinAmount: gc.economyRules?.coinKillMinAmount ?? fb.economyRules.coinKillMinAmount,
399
+ respawnCostPercent: gc.economyRules?.respawnCostPercent ?? fb.economyRules.respawnCostPercent,
400
+ portalFee: gc.economyRules?.portalFee ?? fb.economyRules.portalFee,
401
+ craftingFeePercent: gc.economyRules?.craftingFeePercent ?? fb.economyRules.craftingFeePercent,
402
+ },
403
+ lifeRegenChance: gc.lifeRegenChance ?? fb.lifeRegenChance,
404
+ maxChance: gc.maxChance ?? fb.maxChance,
405
+ entityDefaults,
406
+ skillConfig: (gc.skillConfig && gc.skillConfig.length > 0 ? gc.skillConfig : fb.skillConfig).map((sc) => ({
407
+ triggerItemId: sc.triggerItemId || '',
408
+ skills: (sc.skills || []).map((sk) => ({
409
+ logicEventId: sk.logicEventId || '',
410
+ name: sk.name || '',
411
+ description: sk.description || '',
412
+ summonedEntityItemId: sk.summonedEntityItemId || '',
413
+ })),
414
+ })),
415
+ skillRules: {
416
+ projectileSpawnChance: gc.skillRules?.projectileSpawnChance ?? fb.skillRules.projectileSpawnChance,
417
+ projectileLifetimeMs: gc.skillRules?.projectileLifetimeMs ?? fb.skillRules.projectileLifetimeMs,
418
+ projectileWidth: gc.skillRules?.projectileWidth ?? fb.skillRules.projectileWidth,
419
+ projectileHeight: gc.skillRules?.projectileHeight ?? fb.skillRules.projectileHeight,
420
+ projectileSpeedMultiplier: gc.skillRules?.projectileSpeedMultiplier ?? fb.skillRules.projectileSpeedMultiplier,
421
+ doppelgangerSpawnChance: gc.skillRules?.doppelgangerSpawnChance ?? fb.skillRules.doppelgangerSpawnChance,
422
+ doppelgangerLifetimeMs: gc.skillRules?.doppelgangerLifetimeMs ?? fb.skillRules.doppelgangerLifetimeMs,
423
+ doppelgangerSpawnRadius: gc.skillRules?.doppelgangerSpawnRadius ?? fb.skillRules.doppelgangerSpawnRadius,
424
+ doppelgangerInitialLifeFraction:
425
+ gc.skillRules?.doppelgangerInitialLifeFraction ?? fb.skillRules.doppelgangerInitialLifeFraction,
426
+ },
427
+ // Equipment rules — governs activation constraints (nested, mirrors EquipmentRules proto message).
428
+ equipmentRules: {
429
+ activeItemTypes: gc.equipmentRules?.activeItemTypes ?? fb.equipmentRules.activeItemTypes,
430
+ onePerType: gc.equipmentRules?.onePerType ?? fb.equipmentRules.onePerType,
431
+ requireSkin: gc.equipmentRules?.requireSkin ?? fb.equipmentRules.requireSkin,
432
+ },
433
+ };
434
+ }
435
+
436
+ /**
437
+ * Builds a minimal InstanceConfig with playable defaults.
438
+ * Derived from CYBERIA_INSTANCE_CONF_DEFAULTS (shared with the Mongoose model).
439
+ * Used when the requested instance does not exist in the database.
440
+ */
441
+ function buildFallbackConfig() {
442
+ return JSON.parse(JSON.stringify(FALLBACK_CONFIG_DEFAULTS));
443
+ }
444
+
445
+ /**
446
+ * Assembles the InstanceConfig for the procedural fallback world from code
447
+ * defaults only — no own-model collection may override it — then applies the
448
+ * fallback instance's default-player-inventory itemIds.
449
+ */
450
+ function buildFallbackInstanceConfig(fallbackConf, instanceItemIds) {
451
+ return applyInstanceDefaultPlayerInventory(toInstanceConfig(fallbackConf), instanceItemIds);
452
+ }
453
+
454
+ // ═══════════════════════════════════════════════════════════════════
455
+ // Transport-agnostic fetchers — one per CyberiaDataService RPC
456
+ // ═══════════════════════════════════════════════════════════════════
457
+
458
+ /** Ping payload (RPC: ping). */
459
+ const pingData = () => ({ serverTimeMs: Date.now() });
460
+
461
+ /** Mongo filter for object-layer batch queries (RPC: getObjectLayerBatch). */
462
+ const objectLayerQueryFilter = (itemTypeFilter) => (itemTypeFilter ? { 'data.item.type': itemTypeFilter } : {});
463
+
464
+ /** All ObjectLayers, optionally filtered by item type (RPC: getObjectLayerBatch). */
465
+ async function fetchObjectLayerBatch(models, itemTypeFilter) {
466
+ const docs = await models.ObjectLayer.find(objectLayerQueryFilter(itemTypeFilter)).lean();
467
+ return docs.map(toObjectLayerMsg);
468
+ }
469
+
470
+ /** Single ObjectLayer by item id, null when absent (RPC: getObjectLayer). */
471
+ async function fetchObjectLayer(models, itemId) {
472
+ const doc = await models.ObjectLayer.findOne({ 'data.item.id': itemId }).lean();
473
+ return doc ? toObjectLayerMsg(doc) : null;
474
+ }
475
+
476
+ /**
477
+ * Single map by code, null when absent (RPC: getMapData). When `instanceCode`
478
+ * is provided, upserts the GlobalMapCodeRegistry entry tracking which instance
479
+ * is serving the map (same side-effect on both transports).
480
+ */
481
+ async function fetchMapData(models, { mapCode, instanceCode } = {}) {
482
+ const doc = await models.CyberiaMap.findOne({ code: mapCode }).lean();
483
+ if (!doc) return null;
484
+
485
+ if (instanceCode) {
486
+ models.GlobalMapCodeRegistry.findOneAndUpdate(
487
+ { mapCode },
488
+ { instanceCode, status: 'active' },
489
+ { upsert: true, returnDocument: 'after', timestamps: true },
490
+ ).catch((err) => logger.warn('fetchMapData registry update failed:', err.message));
491
+ }
492
+
493
+ return { map: toMapMsg(doc) };
494
+ }
495
+
496
+ /** Object-layer id/sha256 manifest (RPC: getObjectLayerManifest). */
497
+ async function fetchObjectLayerManifest(models) {
498
+ const docs = await models.ObjectLayer.find({}, { 'data.item.id': 1, sha256: 1 }).lean();
499
+ return {
500
+ entries: docs.map((d) => ({ itemId: d.data?.item?.id || '', sha256: d.sha256 || '' })),
501
+ };
502
+ }
503
+
504
+ /**
505
+ * Full world-load payload for one instance (RPC: getFullInstance):
506
+ * `{ instance, maps, objectLayers, config, version, actions, quests }`.
507
+ * Falls back to the procedural world when the instance does not exist.
508
+ */
509
+ async function fetchFullInstance(models, requestedInstanceCode) {
510
+ // Normalise empty instanceCode to the canonical fallback name.
511
+ const instanceCode = requestedInstanceCode || 'default';
512
+ const inst = await models.CyberiaInstance.findOne({ code: instanceCode }).populate('conf').lean();
513
+
514
+ // ── Fallback: instance not found → return a multi-map procedural world ──
515
+ if (!inst) {
516
+ logger.info(`Instance "${instanceCode}" not found — returning fallback world.`);
517
+ const world = generateFallbackWorld();
518
+ const fallbackConf = buildFallbackConfig();
519
+
520
+ // Collect all objectLayerItemIds from the generated maps so the
521
+ // Go server can resolve atlases at startup.
522
+ const fallbackItemIds = new Set();
523
+ for (const m of world.maps) {
524
+ for (const e of m.entities || []) {
525
+ for (const id of e.objectLayerItemIds || []) fallbackItemIds.add(id);
526
+ }
527
+ }
528
+ // Also include system OL items from entity defaults.
529
+ for (const d of fallbackConf.entityDefaults || []) {
530
+ for (const id of d.liveItemIds || []) fallbackItemIds.add(id);
531
+ for (const id of d.deadItemIds || []) fallbackItemIds.add(id);
532
+ for (const id of d.dropItemIds || []) fallbackItemIds.add(id);
533
+ for (const ol of d.defaultObjectLayers || []) {
534
+ if (ol.itemId) fallbackItemIds.add(ol.itemId);
535
+ }
536
+ }
537
+ // Include every canonical item so the Go server can resolve the type
538
+ // of anything a player may pick up or equip (quest rewards like
539
+ // hatchet, alt weapons, etc.) — required for the one-per-type
540
+ // equipment rule, which silently no-ops when item type is unknown.
541
+ for (const it of DefaultCyberiaItems || []) {
542
+ if (it?.item?.id) fallbackItemIds.add(it.item.id);
543
+ }
544
+
545
+ // Instance-level itemIds (default-player-inventory) may not appear in
546
+ // any map entity — include them so their atlases resolve.
547
+ for (const entry of world.instance.itemIds || []) {
548
+ if (entry?.id) fallbackItemIds.add(entry.id);
549
+ }
550
+
551
+ // The fallback world is fully self-contained: content config comes
552
+ // exclusively from the canonical code defaults (cyberia-server-defaults
553
+ // + SharedDefaultsCyberia). Own-model collections (CyberiaSkill,
554
+ // CyberiaEntityTypeDefault) are deliberately NOT consulted here so a
555
+ // stale seed can never mask a code-default change. Only ObjectLayer is
556
+ // read — sprite/render assets have no code-side source.
557
+ const fallbackOlDocs = fallbackItemIds.size
558
+ ? await models.ObjectLayer.find({ 'data.item.id': { $in: [...fallbackItemIds] } }).lean()
559
+ : [];
560
+
561
+ const fallbackConfig = buildFallbackInstanceConfig(fallbackConf, world.instance.itemIds);
562
+
563
+ return {
564
+ instance: toInstanceMsg({ ...world.instance, _id: '', seed: instanceCode }),
565
+ maps: world.maps.map((m) => ({
566
+ mongoId: '',
567
+ code: m.code,
568
+ name: m.name,
569
+ gridX: m.gridX,
570
+ gridY: m.gridY,
571
+ cellWidth: m.cellWidth,
572
+ cellHeight: m.cellHeight,
573
+ entities: (m.entities || []).map(toEntityMsg),
574
+ })),
575
+ objectLayers: fallbackOlDocs.map(toObjectLayerMsg),
576
+ config: fallbackConfig,
577
+ version: 'fallback',
578
+ // Mission content for the procedural fallback comes straight from
579
+ // the canonical defaults — no DB, fully self-contained.
580
+ actions: DefaultCyberiaActions.map(toActionMsg),
581
+ quests: DefaultCyberiaQuests.map(toQuestMsg),
582
+ };
583
+ }
584
+
585
+ // ── Instance found — load maps + entity OLs + config default OLs ──────
586
+ // `populate('conf')` returns null when the ObjectId ref is missing or
587
+ // orphaned (e.g. after a --conf import that preserved a stale _id).
588
+ // Fall back to a direct instanceCode lookup so aoiRadius and all other
589
+ // tuning fields are always read from the database, never silently
590
+ // replaced by FALLBACK_CONFIG_DEFAULTS.
591
+ let conf = inst.conf;
592
+ if (!conf) {
593
+ conf = await models.CyberiaInstanceConf.findOne({ instanceCode }).lean();
594
+ if (conf) {
595
+ logger.warn(`fetchFullInstance: conf ref missing on instance "${instanceCode}" — resolved by instanceCode lookup`);
596
+ }
597
+ }
598
+ conf = conf || {};
599
+ const mapCodes = inst.cyberiaMapCodes || [];
600
+ const mapDocs = mapCodes.length ? await models.CyberiaMap.find({ code: { $in: mapCodes } }).lean() : [];
601
+
602
+ // Collect all item IDs referenced by map entities.
603
+ const itemIds = new Set();
604
+ for (const m of mapDocs) {
605
+ for (const e of m.entities || []) {
606
+ for (const id of e.objectLayerItemIds || []) itemIds.add(id);
607
+ }
608
+ }
609
+
610
+ // Instance-level itemIds (e.g. default-player-inventory items) may not
611
+ // appear in any map entity — include them so their atlases resolve.
612
+ // Tolerate legacy flat-string entries alongside the { id, … } shape.
613
+ for (const entry of inst.itemIds || []) {
614
+ const id = typeof entry === 'string' ? entry : entry?.id;
615
+ if (id) itemIds.add(id);
616
+ }
617
+
618
+ // Authoritative per-entity-type defaults come from the
619
+ // CyberiaEntityTypeDefault collection (own model); empty collection leaves
620
+ // the conf/canonical defaults in place.
621
+ const entityDefaultDocs = await loadEntityTypeDefaultDocs(models);
622
+ const entityDefaultsConfig = entityTypeDefaultDocsToConfig(entityDefaultDocs);
623
+
624
+ // Include system OL items from canonical ENTITY_TYPE_DEFAULTS, the DB conf,
625
+ // AND the collection so the Go server always caches every default atlas
626
+ // even when an entity (e.g. a new resource skin) appears in no map.
627
+ for (const d of [...ENTITY_TYPE_DEFAULTS, ...(conf.entityDefaults || [])]) {
628
+ for (const id of d.liveItemIds || []) itemIds.add(id);
629
+ for (const id of d.deadItemIds || []) itemIds.add(id);
630
+ for (const id of d.dropItemIds || []) itemIds.add(id);
631
+ for (const ol of d.defaultObjectLayers || []) {
632
+ if (ol.itemId) itemIds.add(ol.itemId);
633
+ }
634
+ }
635
+ // The Go server falls back to this dead visual when a build declares
636
+ // no deadItemIds — its atlas must resolve even when nothing references it.
637
+ itemIds.add(DEFAULT_DEAD_ITEM_ID);
638
+ addEntityDefaultAtlasIds(entityDefaultsConfig, itemIds);
639
+
640
+ // Authoritative skills come from the CyberiaSkill collection (own model);
641
+ // resolve their atlases before the OL query so summoned entities render.
642
+ const skillDocs = await loadSkillConfigDocs(models);
643
+ addSkillAtlasIds(skillDocs, itemIds);
644
+
645
+ const olDocs = itemIds.size ? await models.ObjectLayer.find({ 'data.item.id': { $in: [...itemIds] } }).lean() : [];
646
+
647
+ // Opaque version string from updatedAt timestamps — the Go server
648
+ // compares this to skip full world rebuilds when nothing changed.
649
+ const versionParts = [String(inst.updatedAt || inst._id)];
650
+ for (const m of mapDocs) versionParts.push(String(m.updatedAt || m._id));
651
+ if (conf.updatedAt) versionParts.push(String(conf.updatedAt));
652
+ // Skill edits live in their own collection — fold them in so a skill
653
+ // change triggers a Go-side world rebuild instead of serving stale skills.
654
+ for (const sk of skillDocs) versionParts.push(String(sk.updatedAt || sk._id));
655
+ // Entity-type-default edits live in their own collection too — fold them
656
+ // in so adding/editing a default (e.g. a new resource) rebuilds the world.
657
+ for (const ed of entityDefaultDocs) versionParts.push(String(ed.updatedAt || ed._id));
658
+ const version = crypto.createHash('sha256').update(versionParts.join('|')).digest('hex');
659
+
660
+ // Mission content for this instance: actions and quests bound to its
661
+ // maps (by sourceMapCode). Delivered with the world so the Go server
662
+ // never opens a separate content channel, and never receives content from
663
+ // other instances' maps.
664
+ const actionDocs =
665
+ mapCodes.length && models.CyberiaAction
666
+ ? await models.CyberiaAction.find({ sourceMapCode: { $in: mapCodes } }).lean()
667
+ : [];
668
+ const questDocs =
669
+ mapCodes.length && models.CyberiaQuest
670
+ ? await models.CyberiaQuest.find({ sourceMapCode: { $in: mapCodes } }).lean()
671
+ : [];
672
+
673
+ const baseConfig = toInstanceConfig(conf);
674
+ // Own-model entity defaults win over the conf's entityDefaults (overlaid on
675
+ // canonical via mergeEntityDefaults), so every collection variant — e.g.
676
+ // each resource skin — reaches the Go runtime keyed by liveItemIds. Applied
677
+ // BEFORE default-player-inventory so the player layer additions survive.
678
+ if (entityDefaultsConfig.length) baseConfig.entityDefaults = mergeEntityDefaults(entityDefaultsConfig);
679
+ const config = applyInstanceDefaultPlayerInventory(baseConfig, inst.itemIds);
680
+ // Own-model skills win over the conf's stripped skillConfig (which lacks
681
+ // summonedEntityItemId); empty collection leaves the conf/fallback as-is.
682
+ if (skillDocs.length) config.skillConfig = skillDocsToConfig(skillDocs);
683
+
684
+ return {
685
+ instance: toInstanceMsg(inst),
686
+ maps: mapDocs.map(toMapMsg),
687
+ objectLayers: olDocs.map(toObjectLayerMsg),
688
+ config,
689
+ version,
690
+ actions: actionDocs.map(toActionMsg),
691
+ quests: questDocs.map(toQuestMsg),
692
+ };
693
+ }
694
+
695
+ export {
696
+ getInstanceModels,
697
+ normalizeEntityDefault,
698
+ applyInstanceDefaultPlayerInventory,
699
+ skillDocsToConfig,
700
+ entityTypeDefaultDocsToConfig,
701
+ mergeEntityDefaults,
702
+ parseRgba,
703
+ toObjectLayerMsg,
704
+ toEntityMsg,
705
+ toMapMsg,
706
+ toInstanceMsg,
707
+ toActionMsg,
708
+ toQuestMsg,
709
+ toInstanceConfig,
710
+ buildFallbackConfig,
711
+ buildFallbackInstanceConfig,
712
+ pingData,
713
+ objectLayerQueryFilter,
714
+ fetchObjectLayerBatch,
715
+ fetchObjectLayer,
716
+ fetchMapData,
717
+ fetchObjectLayerManifest,
718
+ fetchFullInstance,
719
+ };