@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,595 @@
1
+ /**
2
+ * Release orchestrator module for managing version builds and deployments of the Underpost CLI.
3
+ *
4
+ * Provides automated workflows for building new versions (bumping version numbers across
5
+ * all package files, manifests, and configurations) and deploying releases (committing,
6
+ * pushing, and syncing secrets to remote repositories).
7
+ *
8
+ * @module src/cli/release.js
9
+ * @namespace UnderpostRelease
10
+ */
11
+
12
+ import fs from 'fs-extra';
13
+ import path from 'path';
14
+ import dotenv from 'dotenv';
15
+ import { pbcopy, shellCd, shellExec } from '../server/process.js';
16
+ import { Dns } from '../server/dns.js';
17
+ import { loggerFactory } from '../server/logger.js';
18
+ import { timer } from '../client/components/core/CommonJs.js';
19
+ import Underpost from '../index.js';
20
+
21
+ const logger = loggerFactory(import.meta);
22
+
23
+ /**
24
+ * Files that must never be touched by a version bump, even if they happen to contain a
25
+ * literal version string. CHANGELOG is historical; logs/ and node_modules/ are runtime
26
+ * outputs; engine-private/.env.* and secrets must not be rewritten by regex.
27
+ */
28
+ const VERSION_BUMP_SKIP = [
29
+ /(^|\/)CHANGELOG\.md$/i,
30
+ /(^|\/)logs\//,
31
+ /(^|\/)node_modules\//,
32
+ /(^|\/)\.git\//,
33
+ /(^|\/)engine-private\/.*\.env(\..*)?$/,
34
+ ];
35
+
36
+ const isSkipped = (filePath) => VERSION_BUMP_SKIP.some((re) => re.test(filePath));
37
+
38
+ /**
39
+ * Declarative regex-based version bump targets for files bumpp cannot handle natively
40
+ * (image tags, doc strings, README badges, build-args, etc.).
41
+ *
42
+ * Each target is one of:
43
+ * - { file: 'path/to/file', patterns: RegExp | RegExp[] }
44
+ * - { dir: 'dir', match: RegExp, patterns: RegExp | RegExp[], recursive?: boolean }
45
+ *
46
+ * Every pattern MUST have exactly one capture group: the prefix to preserve. The replacement
47
+ * is `$1<newVersion>`. Use a lookahead `(?=...)` to anchor a trailing context (closing quote,
48
+ * backtick, etc.) without consuming it. This keeps the callback signature trivial.
49
+ *
50
+ * The walker iterates targets, applies patterns to each matching file, and reports the
51
+ * number of substitutions per file. Files that match nothing are silently skipped.
52
+ */
53
+ const buildVersionBumpTargets = () => [
54
+ // ── src/index.js — anchored to the static class field, never a bare replaceAll. ──
55
+ {
56
+ file: 'src/index.js',
57
+ patterns: /(static version = ['"]v)\d+\.\d+\.\d+(?=['"])/g,
58
+ },
59
+
60
+ // ── README + CLI-HELP fallbacks. CLI-HELP is regenerated by `deploy cli-docs`, but bump
61
+ // it too so the file is consistent if the regeneration step is skipped. ──
62
+ {
63
+ file: 'README.md',
64
+ patterns: [
65
+ /(socket\.dev\/api\/badge\/npm\/package\/underpost\/)\d+\.\d+\.\d+/g,
66
+ /(socket\.dev\/npm\/package\/underpost\/overview\/)\d+\.\d+\.\d+/g,
67
+ /(ci\/cd cli v)\d+\.\d+\.\d+/gi,
68
+ ],
69
+ },
70
+ {
71
+ file: 'CLI-HELP.md',
72
+ patterns: /(ci\/cd cli v)\d+\.\d+\.\d+/gi,
73
+ optional: true,
74
+ },
75
+
76
+ // ── Cyberia + nexodev docs. ──
77
+ {
78
+ dir: 'src/client/public/cyberia-docs',
79
+ match: /\.md$/,
80
+ patterns: [/(\*\*(?:Current )?[Vv]ersion:\*\* )\d+\.\d+\.\d+/g, /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g],
81
+ recursive: true,
82
+ },
83
+ {
84
+ dir: 'src/client/public/nexodev/docs/references',
85
+ match: /\.md$/,
86
+ patterns: [
87
+ /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g,
88
+ /(UNDERPOST_VERSION=)\d+\.\d+\.\d+/g,
89
+ /(ci\/cd cli v)\d+\.\d+\.\d+/gi,
90
+ // version tag bumps inside markdown narrative, e.g. `v3.2.9`, `v3.2.10`, …
91
+ /(`v)\d+\.\d+\.\d+(?=`)/g,
92
+ ],
93
+ recursive: true,
94
+ },
95
+
96
+ // ── Kubernetes manifests. Covers deployment.yaml + cronjob yamls under dd-cron. ──
97
+ {
98
+ dir: 'manifests/deployment',
99
+ match: /deployment\.yaml$/,
100
+ patterns: [/(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g, /(engine\.version: )\d+\.\d+\.\d+/g],
101
+ recursive: true,
102
+ },
103
+ {
104
+ dir: 'manifests/cronjobs',
105
+ match: /\.yaml$/,
106
+ patterns: /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g,
107
+ recursive: true,
108
+ },
109
+
110
+ // ── GitHub Actions workflows. Single sweep across docker-image.*.ci.yml, engine-*.cd.yml,
111
+ // and the root docker-image.ci.yml — replaces previous three separate loops. ──
112
+ {
113
+ dir: '.github/workflows',
114
+ match: /\.(yml|yaml)$/,
115
+ patterns: [
116
+ /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g,
117
+ /(underpost-engine:v)\d+\.\d+\.\d+/g,
118
+ /(type=raw,value=v)\d+\.\d+\.\d+/g,
119
+ /(UNDERPOST_VERSION=)\d+\.\d+\.\d+/g,
120
+ /(UNDERPOST_VERSION:\s*['"]?)\d+\.\d+\.\d+/g,
121
+ ],
122
+ },
123
+
124
+ // ── Docker-compose image-tag defaults. Root compose + generator + cyberia runtime compose.
125
+ // Tags live in `${VAR:-vX.Y.Z}` / `VAR=vX.Y.Z` shapes bumpp cannot detect. ──
126
+ {
127
+ file: 'docker-compose.yml',
128
+ patterns: /(_TAG:-v)\d+\.\d+\.\d+/g,
129
+ },
130
+ {
131
+ file: 'src/cli/docker-compose.js',
132
+ patterns: /(_TAG=v)\d+\.\d+\.\d+/g,
133
+ },
134
+ {
135
+ file: 'src/runtime/engine-cyberia/docker-compose.yml',
136
+ patterns: /(_TAG:-v)\d+\.\d+\.\d+/g,
137
+ },
138
+ {
139
+ file: 'engine-private/conf/dd-cyberia/docker-compose/cyberia/docker-compose.yml',
140
+ patterns: /(_TAG:-v)\d+\.\d+\.\d+/g,
141
+ },
142
+
143
+ // ── Cyberia CLI dev image tar/name defaults (bin/cyberia.js). ──
144
+ {
145
+ file: 'bin/cyberia.js',
146
+ patterns: [/(-dev_v)\d+\.\d+\.\d+(?=\.tar)/g, /(-dev:v)\d+\.\d+\.\d+/g],
147
+ },
148
+
149
+ // ── Runtime Dockerfiles: `ARG UNDERPOST_VERSION=X.Y.Z` build-arg defaults. ──
150
+ {
151
+ dir: 'src/runtime',
152
+ match: /^Dockerfile(\.\w+)?$/,
153
+ patterns: /(ARG UNDERPOST_VERSION=)\d+\.\d+\.\d+/g,
154
+ recursive: true,
155
+ },
156
+
157
+ // ── Runtime compose.env shipped tag defaults ──
158
+ {
159
+ dir: 'src/runtime',
160
+ match: /^compose\.env$/,
161
+ patterns: /(_TAG=v)\d+\.\d+\.\d+/g,
162
+ recursive: true,
163
+ },
164
+
165
+ // ── Deploy-monitor smoke-test image default (scripts/test-monitor.sh). ──
166
+ {
167
+ file: 'scripts/test-monitor.sh',
168
+ patterns: /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g,
169
+ },
170
+
171
+ // ── engine-private confs (gitignored — bumped only if present). ──
172
+ {
173
+ dir: 'engine-private/conf',
174
+ match: /(?:deployment\.yaml|conf\.instances\.json)$/,
175
+ patterns: [
176
+ /(underpost\/[a-z0-9-]+:v)\d+\.\d+\.\d+/g,
177
+ /(underpost-engine:v)\d+\.\d+\.\d+/g,
178
+ /(engine\.version: )\d+\.\d+\.\d+/g,
179
+ /(v)\d+\.\d+\.\d+/g,
180
+ ],
181
+ recursive: true,
182
+ optional: true,
183
+ },
184
+ ];
185
+
186
+ /**
187
+ * Walks a directory (optionally recursively) and returns paths matching `match`.
188
+ */
189
+ const walkDir = (dir, match, recursive) => {
190
+ if (!fs.existsSync(dir)) return [];
191
+ const out = [];
192
+ const stack = [dir];
193
+ while (stack.length) {
194
+ const cur = stack.pop();
195
+ let entries;
196
+ try {
197
+ entries = fs.readdirSync(cur, { withFileTypes: true });
198
+ } catch {
199
+ continue;
200
+ }
201
+ for (const ent of entries) {
202
+ const full = path.join(cur, ent.name);
203
+ if (ent.isDirectory()) {
204
+ if (recursive) stack.push(full);
205
+ } else if (ent.isFile() && match.test(ent.name) && !isSkipped(full)) {
206
+ out.push(full);
207
+ }
208
+ }
209
+ }
210
+ return out;
211
+ };
212
+
213
+ /**
214
+ * Applies an array of regex patterns to a single file in place. Substitutes only when the
215
+ * matched version literally equals `oldVersion` — narrative references to other versions
216
+ * (e.g. example tags `(v3.2.9, v3.2.10, …)`) are left untouched.
217
+ *
218
+ * Returns the substitution count (0 if nothing matched).
219
+ */
220
+ const bumpFile = (filePath, patterns, oldVersion, newVersion, { dryRun }) => {
221
+ if (isSkipped(filePath)) return 0;
222
+ if (!fs.existsSync(filePath)) return 0;
223
+ const original = fs.readFileSync(filePath, 'utf8');
224
+ const regexes = Array.isArray(patterns) ? patterns : [patterns];
225
+ let updated = original;
226
+ let count = 0;
227
+ for (const re of regexes) {
228
+ updated = updated.replace(re, (m, prefix) => {
229
+ const matchedVersion = m.match(/\d+\.\d+\.\d+/)?.[0];
230
+ if (matchedVersion !== oldVersion) return m;
231
+ count += 1;
232
+ return `${prefix}${newVersion}`;
233
+ });
234
+ }
235
+ if (count > 0 && updated !== original && !dryRun) {
236
+ fs.writeFileSync(filePath, updated, 'utf8');
237
+ }
238
+ return count;
239
+ };
240
+
241
+ /**
242
+ * Bumps every non-canonical file declared in VERSION_BUMP_TARGETS.
243
+ * Returns a per-file report so callers can print a summary.
244
+ *
245
+ * @param {string} oldVersion - The version currently in the files (pre-bump).
246
+ * @param {string} newVersion - The version to write.
247
+ * @param {{dryRun?: boolean}} [opts]
248
+ * @returns {Array<{file: string, count: number}>}
249
+ */
250
+ const bumpAuxiliaryFiles = (oldVersion, newVersion, { dryRun = false } = {}) => {
251
+ const report = [];
252
+ if (oldVersion === newVersion) return report;
253
+ for (const target of buildVersionBumpTargets()) {
254
+ const files = target.file ? [target.file] : walkDir(target.dir, target.match, target.recursive ?? false);
255
+ for (const file of files) {
256
+ if (target.optional && !fs.existsSync(file)) continue;
257
+ const count = bumpFile(file, target.patterns, oldVersion, newVersion, { dryRun });
258
+ if (count > 0) report.push({ file, count });
259
+ }
260
+ }
261
+ return report;
262
+ };
263
+
264
+ /**
265
+ * Prints a per-file change summary table.
266
+ */
267
+ const printBumpReport = (report, { dryRun }) => {
268
+ const header = dryRun ? 'Version bump (dry-run) — would change:' : 'Version bump — files updated:';
269
+ logger.info(header);
270
+ if (!report.length) {
271
+ console.log(' (no files matched)');
272
+ return;
273
+ }
274
+ const maxLen = Math.max(...report.map((r) => r.file.length));
275
+ for (const { file, count } of report) {
276
+ console.log(` ${file.padEnd(maxLen + 2)} ${count} match${count === 1 ? '' : 'es'}`);
277
+ }
278
+ console.log(` Total: ${report.length} file(s), ${report.reduce((s, r) => s + r.count, 0)} substitution(s)`);
279
+ };
280
+
281
+ /**
282
+ * Kills any Node.js dev-server or nodemon processes that may hold file locks
283
+ * (e.g. overwriting package.json). Skips VSCode internals and the current process.
284
+ */
285
+ function killDevServers() {
286
+ for (const port of [4001, 4002, 4003, 3000]) shellExec(`node bin run kill ${port}`);
287
+ }
288
+
289
+ const TEMPLATE_PATH = '../pwa-microservices-template';
290
+
291
+ /**
292
+ * Runs a command in an ISOLATED environment. `release build` loads the engine's
293
+ * `dd-cron/.env.production` (DEPLOY_ID=dd-cron, DB creds, secrets, …) into its own `process.env`,
294
+ * which `shellExec` children would otherwise inherit — and the template's `dotenv.config()` runs
295
+ * without override, so it could never reclaim those keys. `env -i` starts the child with an empty
296
+ * environment; only PATH/HOME-class essentials are re-added so node/npm/git still resolve. The
297
+ * template then reads only its own `.env`, resolving `dd-default` exactly like a fresh clone.
298
+ */
299
+ const ISOLATED_ENV = 'env -i HOME="$HOME" PATH="$PATH" USER="$USER" LOGNAME="$LOGNAME" TERM="$TERM" LANG="$LANG"';
300
+
301
+ /**
302
+ * Builds the pwa-microservices-template from scratch and smoke-tests its default workflow.
303
+ *
304
+ * 1. Cleans the engine, pulls latest, and rebuilds the template via `bin/build.template`.
305
+ * 2. Derives `.env` + `.env.example` from the template `.env.example` (DHCP host IP + file
306
+ * logs), both written from the same `dd-default` content so the default startup workflow
307
+ * bootstraps `engine-private` from scratch out of them. `.env` is rewritten because it is
308
+ * gitignored (git clean never removes it) and may otherwise hold a stale `dd-cron`.
309
+ * 3. Installs deps, then builds + runs the template `dev` server in an ISOLATED env
310
+ * (see `ISOLATED_ENV`) so it resolves `dd-default` like a fresh clone, and asserts the
311
+ * startup log is error-free.
312
+ *
313
+ * @returns {boolean} true when the template started cleanly, false otherwise.
314
+ */
315
+ async function buildAndTestTemplate(opts = {}) {
316
+ killDevServers();
317
+ Underpost.repo.clean({ paths: ['/home/dd/engine', '/home/dd/engine/engine-private '] });
318
+ shellExec(`node bin pull . ${process.env.GITHUB_USERNAME}/engine`);
319
+ fs.removeSync(TEMPLATE_PATH);
320
+ shellExec(`npm run build:template`);
321
+ shellExec(`node bin run shared-dir ${TEMPLATE_PATH}`);
322
+
323
+ const upsertEnvVar = (content, key, value) => {
324
+ const re = new RegExp(`^(${key}=).*`, 'm');
325
+ if (re.test(content)) return content.replace(re, `$1${value}`);
326
+ return `${content.trimEnd()}\n${key}=${value}\n`;
327
+ };
328
+
329
+ const dhcpHostIp = Dns.getLocalIPv4Address();
330
+ logger.info(`DHCP host IP for template test: ${dhcpHostIp}`);
331
+ let envContent = fs.readFileSync(`${TEMPLATE_PATH}/.env.example`, 'utf8');
332
+ if (dhcpHostIp) envContent = envContent.replace(/127\.0\.0\.1/g, dhcpHostIp);
333
+ envContent = upsertEnvVar(envContent, 'ENABLE_FILE_LOGS', 'true');
334
+ if (opts.mongoHost) envContent = upsertEnvVar(envContent, 'DB_HOST', opts.mongoHost);
335
+ if (opts.mongoUser) envContent = upsertEnvVar(envContent, 'DB_USER', opts.mongoUser);
336
+ if (opts.mongoPassword) envContent = upsertEnvVar(envContent, 'DB_PASSWORD', opts.mongoPassword);
337
+ if (opts.valkeyHost) envContent = upsertEnvVar(envContent, 'VALKEY_HOST', opts.valkeyHost);
338
+ // fs.writeFileSync(`${TEMPLATE_PATH}/.env`, envContent, 'utf8');
339
+ fs.writeFileSync(`${TEMPLATE_PATH}/.env.example`, envContent, 'utf8');
340
+ shellExec(`cd ${TEMPLATE_PATH} && npm install`);
341
+ shellExec(`cd ${TEMPLATE_PATH} && node bin env clean`);
342
+ // Build + run in an isolated env so the template resolves dd-default from its own .env and
343
+ // never inherits the engine's dd-cron deploy selection. See ISOLATED_ENV above.
344
+ //
345
+ // ENABLE_FILE_LOGS must be passed inline: src/server.js builds start.js's logger at import
346
+ // time, before Config.build() loads the template .env, so the var has to be present in the
347
+ // process env from the start for logs/start.js/all.log (the success probe below) to be written.
348
+ shellExec(`cd ${TEMPLATE_PATH} && ${ISOLATED_ENV} npm run build`);
349
+ shellExec(`cd ${TEMPLATE_PATH} && ${ISOLATED_ENV} ENABLE_FILE_LOGS=true timeout 5s npm run dev`, { async: true });
350
+ await timer(5500);
351
+
352
+ const templateLogPath = `${TEMPLATE_PATH}/logs/start.js/all.log`;
353
+ const runnerResult = fs.existsSync(templateLogPath) ? fs.readFileSync(templateLogPath, 'utf8') : '';
354
+ logger.info('Test template runner result');
355
+ killDevServers();
356
+ shellCd(`/home/dd/engine`);
357
+ Underpost.repo.clean({ paths: ['/home/dd/engine', '/home/dd/engine/engine-private '] });
358
+ if (!runnerResult || runnerResult.toLowerCase().match('error')) {
359
+ logger.error('Test template runner result failed');
360
+ return false;
361
+ }
362
+ return true;
363
+ }
364
+
365
+ /**
366
+ * @class UnderpostRelease
367
+ * @description Orchestrates version builds and release deployments for the Underpost CLI.
368
+ * This class provides static methods to automate the full release lifecycle:
369
+ * building a new version (testing, bumping versions, rebuilding manifests)
370
+ * and deploying a release (syncing secrets, committing, and pushing to remotes).
371
+ * @memberof UnderpostRelease
372
+ */
373
+ class UnderpostRelease {
374
+ static API = {
375
+ /**
376
+ * Builds a new version of the Underpost engine.
377
+ *
378
+ * Performs the full version build pipeline:
379
+ * 1. Loads production env and pulls latest code; kills dev servers on ports 4001-4003.
380
+ * 2. Builds and smoke-tests the pwa-microservices-template (aborts on error).
381
+ * 3. Canonical version files: delegates to `bumpp` (driven by `bump.config.js`). Bumps
382
+ * package.json, package-lock.json (root + packages['']), and every
383
+ * engine-private/conf/**\/package.json.
384
+ * 4. Auxiliary files: anchored-regex walker over VERSION_BUMP_TARGETS — covers
385
+ * src/index.js, README, cyberia-docs, nexodev docs, manifests (deployment + cronjobs),
386
+ * .github/workflows (image tags, type=raw, UNDERPOST_VERSION build-args), and
387
+ * engine-private confs (deployment.yaml + conf.instances.json). Files in
388
+ * VERSION_BUMP_SKIP (CHANGELOG, logs/, .env.*, node_modules/) are never touched.
389
+ * The walker only rewrites occurrences whose version literally equals the pre-bump
390
+ * version — narrative references like `(v3.2.9, v3.2.10, …)` are preserved.
391
+ * 5. Rebuilds CLI docs, deps, client bundle, deploy manifests, default confs.
392
+ * 6. Syncs cron setup-start scripts and builds the changelog.
393
+ *
394
+ * With `options.dryRun: true`, steps 3–4 print a per-file substitution report and exit
395
+ * without writing files or running steps 5–6.
396
+ *
397
+ * @method build
398
+ * @param {string} [newVersion] - The new version string to set. Defaults to current version if not provided.
399
+ * @param {{dryRun?: boolean, mongoHost?: string, mongoUser?: string, mongoPassword?: string, valkeyHost?: string}} [options] - Commander options.
400
+ * `--dry-run` previews changes without writing files.
401
+ * `--mongo-host` overrides `DB_HOST` in the template `.env.example` smoke test.
402
+ * `--mongo-user` overrides `DB_USER` in the template `.env.example` smoke test.
403
+ * `--mongo-password` overrides `DB_PASSWORD` in the template `.env.example` smoke test.
404
+ * `--valkey-host` overrides `VALKEY_HOST` in the template `.env.example` smoke test.
405
+ * @memberof UnderpostRelease
406
+ */
407
+ async build(newVersion, options = {}) {
408
+ const dryRun = !!options.dryRun;
409
+ dotenv.config({ path: `./engine-private/conf/dd-cron/.env.production`, override: true });
410
+ shellCd(`/home/dd/engine`);
411
+
412
+ // ── Resolve from/to versions up front. Used by every bump step + downstream commands. ──
413
+ const originPackageJson = JSON.parse(fs.readFileSync(`package.json`, 'utf8'));
414
+ const { version } = originPackageJson;
415
+ if (!newVersion) newVersion = version;
416
+ logger.info(`Release build — bumping ${version} → ${newVersion}${dryRun ? ' (dry-run)' : ''}`);
417
+
418
+ if (!dryRun) {
419
+ const templateOk = await buildAndTestTemplate(options);
420
+ if (!templateOk) return;
421
+ }
422
+
423
+ // ── Canonical version files: delegate to bumpp (package.json, package-lock.json,
424
+ // engine-private/conf/**/package.json). bumpp owns lockfile semantics (root version
425
+ // + packages[''].version) so we don't reimplement them. ──
426
+ const { versionBump } = await import('bumpp');
427
+ const bumppResult = await versionBump({
428
+ release: newVersion,
429
+ files: [
430
+ 'package.json',
431
+ 'package-lock.json',
432
+ ...(fs.existsSync('./engine-private/conf') ? ['engine-private/conf/**/package.json'] : []),
433
+ ],
434
+ commit: false,
435
+ tag: false,
436
+ push: false,
437
+ confirm: false,
438
+ recursive: false,
439
+ ignoreScripts: true,
440
+ dry: dryRun,
441
+ });
442
+ logger.info(`bumpp updated ${bumppResult?.files?.length ?? 0} canonical file(s).`);
443
+
444
+ // ── Auxiliary files: anchored-regex walker over VERSION_BUMP_TARGETS. ──
445
+ const report = bumpAuxiliaryFiles(version, newVersion, { dryRun });
446
+ printBumpReport(report, { dryRun });
447
+
448
+ if (dryRun) {
449
+ logger.info('Dry-run complete. No files modified. Re-run without --dry-run to apply.');
450
+ return { from: version, to: newVersion, files: report.map((r) => r.file), dryRun: true };
451
+ }
452
+
453
+ // ── Downstream regenerations and manifest sync (unchanged from previous flow). ──
454
+ shellExec(`node bin/deploy cli-docs ${version} ${newVersion}`);
455
+ shellExec(`node bin/deploy update-dependencies`);
456
+ shellExec(`node bin/build dd`);
457
+ shellExec(`node bin run build-cluster-deployment-manifests`);
458
+ shellExec(`node bin new --default-conf --conf-workflow-id template`);
459
+ shellExec(`sudo rm -rf ./engine-private/conf/dd-default`);
460
+ shellExec(`node bin new --deploy-id dd-default`);
461
+ console.log(fs.existsSync(`./engine-private/conf/dd-default`));
462
+ shellExec(`sudo rm -rf ./engine-private/conf/dd-default`);
463
+ shellExec(`node bin cron --kubeadm --setup-start --git`); // --apply
464
+ shellExec(`node bin cmt --changelog-build`);
465
+ return { from: version, to: newVersion, files: report.map((r) => r.file), dryRun: false };
466
+ },
467
+
468
+ /**
469
+ * Runs the local equivalent of an engine-*.ci.yml GitHub Actions workflow.
470
+ *
471
+ * Mirrors the CI pipeline locally:
472
+ * 1. Loads production environment (for GITHUB_TOKEN / GITHUB_USERNAME).
473
+ * 2. Clones pwa-microservices-template and engine-{suffix} (bare) into the parent dir (/home/dd).
474
+ * 3. Builds dd-{suffix} development from the engine directory.
475
+ * 4. Replaces .git in pwa-microservices-template with the bare-cloned git, then commits and pushes
476
+ * to the underpostnet/engine-{suffix} remote repository.
477
+ *
478
+ * @method ci
479
+ * @param {string} deployId - The deploy-id suffix (e.g., "cyberia", "core", "lampp", "test").
480
+ * Accepts "cyberia", "dd-cyberia", or "engine-cyberia" — the prefix is stripped automatically.
481
+ * @param {string} [message] - Optional commit message. Defaults to the last commit message of pwa-microservices-template.
482
+ * @param {object} [options] - Commander options object (unused, reserved for future flags).
483
+ * @memberof UnderpostRelease
484
+ */
485
+ async ci(deployId, message, options) {
486
+ dotenv.config({ path: `./engine-private/conf/dd-cron/.env.production`, override: true });
487
+ const suffix = deployId.replace(/^(dd-|engine-)/, '');
488
+ const repoName = `engine-${suffix}`;
489
+ const buildTarget = `dd-${suffix}`;
490
+ const githubOrg = process.env.GITHUB_USERNAME || 'underpostnet';
491
+ shellCd('/home/dd');
492
+ shellExec(`sudo rm -rf /home/dd/pwa-microservices-template`);
493
+ shellExec(`node engine/bin clone ${githubOrg}/pwa-microservices-template`);
494
+ // Use the message passed from the caller (engine repo changelog);
495
+ // fall back to the engine repo's last commit if not provided.
496
+ let commitMsg = message;
497
+ if (!commitMsg) {
498
+ shellCd('/home/dd/engine');
499
+ commitMsg = shellExec(`node bin cmt --changelog-msg --changelog-no-hash`, {
500
+ stdout: true,
501
+ silent: true,
502
+ }).trim();
503
+ shellCd('/home/dd');
504
+ }
505
+ commitMsg = (commitMsg || '').trim() || `Update ${repoName} repository`;
506
+ logger.info(`CI push commit message: ${commitMsg}`);
507
+ shellExec(`node engine/bin clone --bare ${githubOrg}/${repoName}`);
508
+ shellCd('/home/dd/engine');
509
+ shellExec(`node bin/build ${buildTarget}`);
510
+ shellCd('/home/dd/pwa-microservices-template');
511
+ shellExec(`rm -rf ./.git`);
512
+ shellExec(`mv ../${repoName}.git ./.git`);
513
+ shellExec(`git config --local core.bare false`);
514
+ shellExec(`git reset`);
515
+ Underpost.repo.initLocalRepo({ path: '/home/dd/pwa-microservices-template' });
516
+ return {
517
+ triggerCmd: `cd /home/dd/pwa-microservices-template && git add . && git commit -m "${commitMsg}" && node ../engine/bin push . ${githubOrg}/${repoName}`,
518
+ };
519
+ },
520
+
521
+ /**
522
+ * Runs the pwa-microservices-template update and push flow locally.
523
+ *
524
+ * Always removes and re-clones pwa-microservices-template, then:
525
+ * 1. Runs build:template (node bin/build.template) to sync engine sources.
526
+ * 2. Installs dependencies and builds the template.
527
+ * 3. Commits and pushes to the pwa-microservices-template remote repository.
528
+ *
529
+ * @method pwa
530
+ * @param {string} [message] - Optional commit message. Defaults to last commit message of pwa-microservices-template.
531
+ * @param {object} [options] - Commander options object (unused, reserved for future flags).
532
+ * @memberof UnderpostRelease
533
+ */
534
+ async pwa(message, options) {
535
+ dotenv.config({ path: `./engine-private/conf/dd-cron/.env.production`, override: true });
536
+ const githubOrg = process.env.GITHUB_USERNAME || 'underpostnet';
537
+ // Use the message passed from the caller (engine repo changelog);
538
+ // fall back to the engine repo's last commit if not provided.
539
+ let commitMsg = message;
540
+ if (!commitMsg) {
541
+ shellCd('/home/dd/engine');
542
+ commitMsg = shellExec(`node bin cmt --changelog-msg --changelog-no-hash`, {
543
+ stdout: true,
544
+ silent: true,
545
+ }).trim();
546
+ }
547
+ commitMsg = (commitMsg || '').trim() || `Update pwa-microservices-template repository`;
548
+ shellCd('/home/dd');
549
+ shellExec(`sudo rm -rf /home/dd/pwa-microservices-template`);
550
+ shellExec(`node engine/bin clone ${githubOrg}/pwa-microservices-template`);
551
+ shellCd('/home/dd/engine');
552
+ shellExec(`npm run build:template`);
553
+ shellExec(`cd ../pwa-microservices-template && npm install && npm run build`);
554
+ shellCd('/home/dd/pwa-microservices-template');
555
+ shellExec(`git add .`);
556
+ // shellExec(`git commit -m "${commitMsg}"`);
557
+ return {
558
+ triggerCmd: `node bin push . ${githubOrg}/engine && cd /home/dd/pwa-microservices-template && git commit -m "${commitMsg}" && node ../engine/bin push . ${githubOrg}/pwa-microservices-template`,
559
+ };
560
+ },
561
+
562
+ /**
563
+ * Deploys a new version release to remote repositories.
564
+ *
565
+ * Performs the release deployment pipeline:
566
+ * 1. Loads production environment from dd-cron.
567
+ * 2. Syncs Underpost secrets from the production env file.
568
+ * 3. Builds the dd configuration.
569
+ * 4. Stages all changes in both engine and engine-private repositories.
570
+ * 5. Commits with a release message including the version tag.
571
+ * 6. Pushes both repositories to their respective GitHub remotes.
572
+ *
573
+ * @method deploy
574
+ * @param {string} [version] - The version string for the release commit message (e.g., "3.1.4").
575
+ * @param {object} [options] - Commander options object (unused, reserved for future flags).
576
+ * @memberof UnderpostRelease
577
+ */
578
+ async deploy(version, options) {
579
+ dotenv.config({ path: `./engine-private/conf/dd-cron/.env.production`, override: true });
580
+ killDevServers();
581
+ shellExec(
582
+ `node bin secret underpost --create-from-file /home/dd/engine/engine-private/conf/dd-cron/.env.production`,
583
+ );
584
+ shellExec(`node bin/build dd --conf`);
585
+ shellExec(`git add . && cd ./engine-private && git add .`);
586
+ shellExec(`node bin cmt . ci package-pwa-microservices-template 'New release v:${version}'`);
587
+ shellExec(`node bin cmt ./engine-private ci package-pwa-microservices-template`);
588
+ shellExec(`node bin push . ${process.env.GITHUB_USERNAME}/engine`);
589
+ shellExec(`cd ./engine-private && node ../bin push . ${process.env.GITHUB_USERNAME}/engine-private`);
590
+ },
591
+ };
592
+ }
593
+
594
+ export { UnderpostRelease };
595
+ export default UnderpostRelease;