cyberia 3.0.3 → 3.2.5

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 (296) hide show
  1. package/{.env.production → .env.example} +20 -4
  2. package/.github/workflows/engine-cyberia.cd.yml +43 -10
  3. package/.github/workflows/engine-cyberia.ci.yml +48 -26
  4. package/.github/workflows/ghpkg.ci.yml +5 -5
  5. package/.github/workflows/gitlab.ci.yml +1 -1
  6. package/.github/workflows/hardhat.ci.yml +82 -0
  7. package/.github/workflows/npmpkg.ci.yml +60 -14
  8. package/.github/workflows/publish.ci.yml +26 -7
  9. package/.github/workflows/publish.cyberia.ci.yml +5 -5
  10. package/.github/workflows/pwa-microservices-template-page.cd.yml +6 -7
  11. package/.github/workflows/pwa-microservices-template-test.ci.yml +4 -4
  12. package/.github/workflows/release.cd.yml +14 -8
  13. package/.vscode/extensions.json +9 -8
  14. package/.vscode/settings.json +3 -2
  15. package/CHANGELOG.md +643 -1
  16. package/CLI-HELP.md +132 -57
  17. package/Dockerfile +4 -2
  18. package/README.md +347 -22
  19. package/WHITE-PAPER.md +1540 -0
  20. package/bin/build.js +21 -12
  21. package/bin/cyberia.js +2640 -106
  22. package/bin/deploy.js +258 -372
  23. package/bin/file.js +5 -1
  24. package/bin/index.js +2640 -106
  25. package/bin/vs.js +3 -3
  26. package/conf.js +169 -105
  27. package/deployment.yaml +236 -20
  28. package/hardhat/.env.example +31 -0
  29. package/hardhat/README.md +531 -0
  30. package/hardhat/WHITE-PAPER.md +1540 -0
  31. package/hardhat/contracts/ObjectLayerToken.sol +391 -0
  32. package/hardhat/deployments/.gitkeep +0 -0
  33. package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
  34. package/hardhat/hardhat.config.js +136 -0
  35. package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
  36. package/hardhat/networks/besu-object-layer.network.json +138 -0
  37. package/hardhat/package-lock.json +4323 -0
  38. package/hardhat/package.json +36 -0
  39. package/hardhat/scripts/deployObjectLayerToken.js +98 -0
  40. package/hardhat/test/ObjectLayerToken.js +592 -0
  41. package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
  42. package/hardhat/types/ethers-contracts/common.ts +92 -0
  43. package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
  44. package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
  45. package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
  46. package/hardhat/types/ethers-contracts/index.ts +6 -0
  47. package/jsdoc.dd-cyberia.json +68 -0
  48. package/jsdoc.json +65 -49
  49. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +5 -4
  50. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +5 -4
  51. package/manifests/deployment/dd-cyberia-development/deployment.yaml +562 -0
  52. package/manifests/deployment/dd-cyberia-development/proxy.yaml +297 -0
  53. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
  54. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  55. package/manifests/deployment/dd-test-development/deployment.yaml +88 -74
  56. package/manifests/deployment/dd-test-development/proxy.yaml +13 -4
  57. package/manifests/deployment/playwright/deployment.yaml +1 -1
  58. package/manifests/pv-pvc-dd.yaml +1 -1
  59. package/nodemon.json +1 -1
  60. package/package.json +60 -48
  61. package/proxy.yaml +118 -10
  62. package/pv-pvc.yaml +132 -0
  63. package/scripts/k3s-node-setup.sh +1 -1
  64. package/scripts/ports-ls.sh +2 -0
  65. package/scripts/rhel-grpc-setup.sh +56 -0
  66. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +47 -1
  67. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +17 -2
  68. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
  69. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +80 -7
  70. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +93 -0
  71. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
  72. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +29 -0
  73. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +51 -0
  74. package/src/api/cyberia-entity/cyberia-entity.controller.js +74 -0
  75. package/src/api/cyberia-entity/cyberia-entity.model.js +24 -0
  76. package/src/api/cyberia-entity/cyberia-entity.router.js +27 -0
  77. package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
  78. package/src/api/cyberia-instance/cyberia-fallback-world.js +368 -0
  79. package/src/api/cyberia-instance/cyberia-instance.controller.js +92 -0
  80. package/src/api/cyberia-instance/cyberia-instance.model.js +84 -0
  81. package/src/api/cyberia-instance/cyberia-instance.router.js +63 -0
  82. package/src/api/cyberia-instance/cyberia-instance.service.js +191 -0
  83. package/src/api/cyberia-instance/cyberia-portal-connector.js +486 -0
  84. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +74 -0
  85. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +413 -0
  86. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +228 -0
  87. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +27 -0
  88. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +42 -0
  89. package/src/api/cyberia-map/cyberia-map.controller.js +79 -0
  90. package/src/api/cyberia-map/cyberia-map.model.js +30 -0
  91. package/src/api/cyberia-map/cyberia-map.router.js +40 -0
  92. package/src/api/cyberia-map/cyberia-map.service.js +74 -0
  93. package/src/api/document/document.service.js +1 -1
  94. package/src/api/file/file.controller.js +3 -1
  95. package/src/api/file/file.ref.json +18 -0
  96. package/src/api/file/file.service.js +28 -5
  97. package/src/api/ipfs/ipfs.controller.js +4 -25
  98. package/src/api/ipfs/ipfs.model.js +43 -34
  99. package/src/api/ipfs/ipfs.router.js +8 -13
  100. package/src/api/ipfs/ipfs.service.js +56 -104
  101. package/src/api/object-layer/README.md +347 -22
  102. package/src/api/object-layer/object-layer.controller.js +6 -2
  103. package/src/api/object-layer/object-layer.model.js +12 -8
  104. package/src/api/object-layer/object-layer.router.js +698 -42
  105. package/src/api/object-layer/object-layer.service.js +119 -37
  106. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
  107. package/src/api/user/user.router.js +10 -5
  108. package/src/api/user/user.service.js +15 -14
  109. package/src/cli/baremetal.js +6 -10
  110. package/src/cli/cloud-init.js +0 -3
  111. package/src/cli/cluster.js +7 -7
  112. package/src/cli/db.js +723 -857
  113. package/src/cli/deploy.js +215 -105
  114. package/src/cli/env.js +34 -5
  115. package/src/cli/fs.js +5 -4
  116. package/src/cli/image.js +0 -3
  117. package/src/cli/index.js +83 -15
  118. package/src/cli/kubectl.js +211 -0
  119. package/src/cli/monitor.js +5 -6
  120. package/src/cli/release.js +284 -0
  121. package/src/cli/repository.js +708 -62
  122. package/src/cli/run.js +371 -151
  123. package/src/cli/secrets.js +73 -2
  124. package/src/cli/ssh.js +1 -1
  125. package/src/cli/test.js +3 -3
  126. package/src/client/Cryptokoyn.index.js +3 -4
  127. package/src/client/CyberiaPortal.index.js +3 -4
  128. package/src/client/Default.index.js +3 -4
  129. package/src/client/Itemledger.index.js +4 -963
  130. package/src/client/Underpost.index.js +3 -4
  131. package/src/client/components/core/AgGrid.js +20 -5
  132. package/src/client/components/core/Alert.js +2 -2
  133. package/src/client/components/core/AppStore.js +69 -0
  134. package/src/client/components/core/CalendarCore.js +2 -2
  135. package/src/client/components/core/Content.js +22 -3
  136. package/src/client/components/core/Docs.js +30 -6
  137. package/src/client/components/core/DropDown.js +137 -17
  138. package/src/client/components/core/FileExplorer.js +71 -4
  139. package/src/client/components/core/Input.js +1 -1
  140. package/src/client/components/core/Keyboard.js +2 -2
  141. package/src/client/components/core/LogIn.js +2 -2
  142. package/src/client/components/core/LogOut.js +2 -2
  143. package/src/client/components/core/Modal.js +20 -7
  144. package/src/client/components/core/Panel.js +0 -1
  145. package/src/client/components/core/PanelForm.js +19 -19
  146. package/src/client/components/core/RichText.js +1 -2
  147. package/src/client/components/core/SocketIo.js +82 -29
  148. package/src/client/components/core/SocketIoHandler.js +75 -0
  149. package/src/client/components/core/Stream.js +143 -95
  150. package/src/client/components/core/Webhook.js +40 -7
  151. package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
  152. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +3 -3
  153. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +2 -2
  154. package/src/client/components/cryptokoyn/MenuCryptokoyn.js +3 -3
  155. package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +3 -51
  156. package/src/client/components/cyberia/InstanceEngineCyberia.js +700 -0
  157. package/src/client/components/cyberia/MapEngineCyberia.js +1359 -2
  158. package/src/client/components/cyberia/ObjectLayerEngineModal.js +17 -6
  159. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +92 -54
  160. package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
  161. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +217 -30
  162. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
  163. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +3 -4
  164. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +2 -2
  165. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +104 -9
  166. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +5 -0
  167. package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +3 -49
  168. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -0
  169. package/src/client/components/default/AppStoreDefault.js +5 -0
  170. package/src/client/components/default/LogInDefault.js +3 -3
  171. package/src/client/components/default/LogOutDefault.js +2 -2
  172. package/src/client/components/default/MenuDefault.js +5 -5
  173. package/src/client/components/default/SocketIoDefault.js +3 -51
  174. package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
  175. package/src/client/components/itemledger/LogInItemledger.js +3 -3
  176. package/src/client/components/itemledger/LogOutItemledger.js +2 -2
  177. package/src/client/components/itemledger/MenuItemledger.js +3 -3
  178. package/src/client/components/itemledger/SocketIoItemledger.js +3 -51
  179. package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
  180. package/src/client/components/underpost/CssUnderpost.js +59 -0
  181. package/src/client/components/underpost/LogInUnderpost.js +6 -3
  182. package/src/client/components/underpost/LogOutUnderpost.js +4 -2
  183. package/src/client/components/underpost/MenuUnderpost.js +104 -18
  184. package/src/client/components/underpost/RoutesUnderpost.js +2 -0
  185. package/src/client/components/underpost/SocketIoUnderpost.js +3 -51
  186. package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
  187. package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
  188. package/src/client/public/cryptokoyn/microdata.json +85 -0
  189. package/src/client/public/cryptokoyn/site.webmanifest +57 -0
  190. package/src/client/public/cryptokoyn/sitemap +3 -3
  191. package/src/client/public/default/sitemap +3 -3
  192. package/src/client/public/itemledger/browserconfig.xml +2 -2
  193. package/src/client/public/itemledger/manifest.webmanifest +4 -4
  194. package/src/client/public/itemledger/microdata.json +71 -0
  195. package/src/client/public/itemledger/sitemap +3 -3
  196. package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
  197. package/src/client/public/test/sitemap +3 -3
  198. package/src/client/services/core/core.service.js +20 -8
  199. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +105 -0
  200. package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
  201. package/src/client/services/cyberia-entity/cyberia-entity.service.js +105 -0
  202. package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
  203. package/src/client/services/cyberia-instance/cyberia-instance.service.js +122 -0
  204. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +105 -0
  205. package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
  206. package/src/client/services/cyberia-map/cyberia-map.service.js +126 -0
  207. package/src/client/services/instance/instance.management.js +2 -2
  208. package/src/client/services/ipfs/ipfs.service.js +3 -23
  209. package/src/client/services/object-layer/object-layer.management.js +3 -3
  210. package/src/client/services/object-layer/object-layer.service.js +21 -0
  211. package/src/client/services/user/user.management.js +2 -2
  212. package/src/client/ssr/body/404.js +15 -11
  213. package/src/client/ssr/body/500.js +15 -11
  214. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  215. package/src/client/ssr/head/PwaItemledger.js +60 -0
  216. package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
  217. package/src/client/ssr/pages/CyberiaServerMetrics.js +1 -1
  218. package/src/client/ssr/pages/Test.js +11 -10
  219. package/src/client.build.js +0 -3
  220. package/src/client.dev.js +0 -3
  221. package/src/db/DataBaseProvider.js +17 -2
  222. package/src/db/mariadb/MariaDB.js +14 -9
  223. package/src/db/mongo/MongooseDB.js +17 -1
  224. package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +305 -0
  225. package/src/grpc/cyberia/README.md +326 -0
  226. package/src/grpc/cyberia/grpc-server.js +530 -0
  227. package/src/index.js +24 -1
  228. package/src/proxy.js +0 -3
  229. package/src/runtime/express/Dockerfile +4 -0
  230. package/src/runtime/express/Express.js +33 -10
  231. package/src/runtime/lampp/Dockerfile +13 -2
  232. package/src/runtime/lampp/Lampp.js +33 -17
  233. package/src/runtime/wp/Dockerfile +68 -0
  234. package/src/runtime/wp/Wp.js +639 -0
  235. package/src/server/auth.js +36 -15
  236. package/src/server/backup.js +39 -12
  237. package/src/server/besu-genesis-generator.js +1630 -0
  238. package/src/server/client-build-docs.js +133 -17
  239. package/src/server/client-build-live.js +9 -18
  240. package/src/server/client-build.js +229 -101
  241. package/src/server/client-dev-server.js +14 -13
  242. package/src/server/client-formatted.js +109 -57
  243. package/src/server/conf.js +391 -164
  244. package/src/server/cron.js +27 -24
  245. package/src/server/dns.js +29 -12
  246. package/src/server/downloader.js +0 -2
  247. package/src/server/ipfs-client.js +24 -1
  248. package/src/server/logger.js +27 -9
  249. package/src/server/object-layer.js +217 -103
  250. package/src/server/peer.js +8 -2
  251. package/src/server/process.js +1 -50
  252. package/src/server/proxy.js +4 -8
  253. package/src/server/runtime.js +30 -9
  254. package/src/server/semantic-layer-generator-floor.js +359 -0
  255. package/src/server/semantic-layer-generator-skin.js +1294 -0
  256. package/src/server/semantic-layer-generator.js +116 -555
  257. package/src/server/ssr.js +0 -3
  258. package/src/server/start.js +19 -12
  259. package/src/server/tls.js +0 -2
  260. package/src/server.js +0 -4
  261. package/src/ws/IoInterface.js +1 -10
  262. package/src/ws/IoServer.js +14 -33
  263. package/src/ws/core/channels/core.ws.chat.js +65 -20
  264. package/src/ws/core/channels/core.ws.mailer.js +113 -32
  265. package/src/ws/core/channels/core.ws.stream.js +90 -31
  266. package/src/ws/core/core.ws.connection.js +12 -33
  267. package/src/ws/core/core.ws.emit.js +10 -26
  268. package/src/ws/core/core.ws.server.js +25 -58
  269. package/src/ws/default/channels/default.ws.main.js +53 -12
  270. package/src/ws/default/default.ws.connection.js +26 -13
  271. package/src/ws/default/default.ws.server.js +30 -12
  272. package/.env.development +0 -43
  273. package/.env.test +0 -43
  274. package/hardhat/contracts/CryptoKoyn.sol +0 -59
  275. package/hardhat/contracts/ItemLedger.sol +0 -73
  276. package/hardhat/contracts/Lock.sol +0 -34
  277. package/hardhat/hardhat.config.cjs +0 -45
  278. package/hardhat/ignition/modules/Lock.js +0 -18
  279. package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
  280. package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
  281. package/hardhat/scripts/deployItemledger.cjs +0 -25
  282. package/hardhat/test/Lock.js +0 -126
  283. package/hardhat/white-paper.md +0 -581
  284. package/src/client/components/cryptokoyn/CommonCryptokoyn.js +0 -29
  285. package/src/client/components/cryptokoyn/ElementsCryptokoyn.js +0 -38
  286. package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +0 -38
  287. package/src/client/components/default/ElementsDefault.js +0 -38
  288. package/src/client/components/itemledger/CommonItemledger.js +0 -29
  289. package/src/client/components/itemledger/ElementsItemledger.js +0 -38
  290. package/src/client/components/underpost/CommonUnderpost.js +0 -29
  291. package/src/client/components/underpost/ElementsUnderpost.js +0 -38
  292. package/src/ws/core/management/core.ws.chat.js +0 -8
  293. package/src/ws/core/management/core.ws.mailer.js +0 -16
  294. package/src/ws/core/management/core.ws.stream.js +0 -8
  295. package/src/ws/default/management/default.ws.main.js +0 -8
  296. package/white-paper.md +0 -581
@@ -0,0 +1,71 @@
1
+ [
2
+ {
3
+ "@context": "https://schema.org",
4
+ "@type": "WebApplication",
5
+ "name": "Item Ledger",
6
+ "url": "https://itemledger.com",
7
+ "description": "Canonical registry, metadata resolver, and IPFS indexer for Object Layer items — semi-fungible and non-fungible ERC-1155 tokens in the Cyberia Online ecosystem. Item search, provenance, and marketplace.",
8
+ "applicationCategory": "BlockchainApplication",
9
+ "operatingSystem": "All",
10
+ "browserRequirements": "Requires JavaScript. Requires HTML5.",
11
+ "offers": {
12
+ "@type": "Offer",
13
+ "price": "0",
14
+ "priceCurrency": "USD"
15
+ },
16
+ "author": {
17
+ "@type": "Organization",
18
+ "name": "Underpost",
19
+ "url": "https://github.com/underpostnet"
20
+ },
21
+ "keywords": "itemledger, object layer, NFT, ERC-1155, metadata, IPFS, registry, marketplace",
22
+ "image": "https://itemledger.com/apple-touch-icon.png",
23
+ "inLanguage": "en"
24
+ },
25
+ {
26
+ "@context": "https://schema.org",
27
+ "@type": "Organization",
28
+ "name": "Item Ledger",
29
+ "url": "https://itemledger.com",
30
+ "logo": "https://itemledger.com/android-chrome-512x512.png",
31
+ "description": "Canonical registry and IPFS indexer for Object Layer items in the Cyberia Online ecosystem.",
32
+ "sameAs": [
33
+ "https://github.com/underpostnet"
34
+ ],
35
+ "founder": {
36
+ "@type": "Organization",
37
+ "name": "Underpost",
38
+ "url": "https://github.com/underpostnet"
39
+ }
40
+ },
41
+ {
42
+ "@context": "https://schema.org",
43
+ "@type": "FAQPage",
44
+ "mainEntity": [
45
+ {
46
+ "@type": "Question",
47
+ "name": "What is Item Ledger?",
48
+ "acceptedAnswer": {
49
+ "@type": "Answer",
50
+ "text": "Item Ledger is the canonical registry, metadata resolver, and IPFS indexer for Object Layer items — semi-fungible and non-fungible ERC-1155 tokens in the Cyberia Online ecosystem. It provides item search, provenance tracking, and marketplace functionality."
51
+ }
52
+ },
53
+ {
54
+ "@type": "Question",
55
+ "name": "What token standard does Item Ledger use?",
56
+ "acceptedAnswer": {
57
+ "@type": "Answer",
58
+ "text": "Item Ledger uses the ERC-1155 multi-token standard, supporting both semi-fungible and non-fungible tokens for in-game items, equipment, and collectibles within the Cyberia Online ecosystem."
59
+ }
60
+ },
61
+ {
62
+ "@type": "Question",
63
+ "name": "How does Item Ledger use IPFS?",
64
+ "acceptedAnswer": {
65
+ "@type": "Answer",
66
+ "text": "Item Ledger indexes and resolves item metadata stored on IPFS (InterPlanetary File System), ensuring decentralized, persistent, and verifiable storage for all Object Layer item data and assets."
67
+ }
68
+ }
69
+ ]
70
+ }
71
+ ]
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -3,7 +3,7 @@
3
3
  "api_version": 1,
4
4
  "layout": {
5
5
  "logo": "/yandex-browser-50x50.png",
6
- "color": "#fff",
6
+ "color": "#0551C4",
7
7
  "show_title": true
8
8
  }
9
- }
9
+ }
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <xsl:stylesheet version="2.0"
2
+ <xsl:stylesheet version="1.0"
3
3
  xmlns:html="http://www.w3.org/TR/REC-html40"
4
4
  xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
5
5
  xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
@@ -67,7 +67,7 @@
67
67
  <div id="content">
68
68
  <h1>XML Sitemap</h1>
69
69
  <p class="desc"> This is a sitemap generated by <a
70
- href="https://www.nexodev.org">nexodev.org</a>
70
+ href="{{web-url}}">{{web-url}}</a>
71
71
  </p>
72
72
  <xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
73
73
  <table id="sitemap" cellpadding="3">
@@ -145,4 +145,4 @@
145
145
  </html>
146
146
 
147
147
  </xsl:template>
148
- </xsl:stylesheet>
148
+ </xsl:stylesheet>
@@ -17,6 +17,19 @@ const endpoint = 'core';
17
17
 
18
18
  // https://developer.mozilla.org/en-US/docs/Web/API/AbortController
19
19
 
20
+ /**
21
+ * Returns the normalized proxy path from renderPayload (always trailing `/`).
22
+ * Falls back to `null` when no apiBaseProxyPath is set.
23
+ * @memberof CoreServiceClient
24
+ * @return {string|null}
25
+ */
26
+ const getApiBaseProxyPath = () =>
27
+ window.renderPayload?.apiBaseProxyPath
28
+ ? window.renderPayload.apiBaseProxyPath === '/'
29
+ ? window.renderPayload.apiBaseProxyPath
30
+ : `${window.renderPayload.apiBaseProxyPath}/`
31
+ : null;
32
+
20
33
  /**
21
34
  * Gets the base host for API requests.
22
35
  * Uses the apiBaseHost from renderPayload if available, otherwise falls back to location.host.
@@ -35,13 +48,7 @@ const getBaseHost = () => (window.renderPayload?.apiBaseHost ? window.renderPayl
35
48
  */
36
49
  const getApiBasePath = (options) =>
37
50
  `${
38
- options?.proxyPath
39
- ? `/${options.proxyPath}/`
40
- : window.renderPayload?.apiBaseProxyPath
41
- ? window.renderPayload.apiBaseProxyPath == '/'
42
- ? window.renderPayload.apiBaseProxyPath
43
- : `${window.renderPayload.apiBaseProxyPath}/`
44
- : getProxyPath()
51
+ options?.proxyPath ? `/${options.proxyPath}/` : getApiBaseProxyPath() || getProxyPath()
45
52
  }${window.renderPayload?.apiBasePath ? window.renderPayload.apiBasePath : 'api'}/`;
46
53
 
47
54
  /**
@@ -65,7 +72,11 @@ const getApiBaseUrl = (options = { id: '', endpoint: '', proxyPath: '' }) =>
65
72
  * @memberof CoreServiceClient
66
73
  * @return {string} The WebSocket base path.
67
74
  */
68
- const getWsBasePath = () => (getProxyPath() !== '/' ? `${getProxyPath()}socket.io/` : '/socket.io/');
75
+ const getWsBasePath = () => {
76
+ const proxyPath = getApiBaseProxyPath();
77
+ if (proxyPath) return proxyPath !== '/' ? `${proxyPath}socket.io/` : '/socket.io/';
78
+ return getProxyPath() !== '/' ? `${getProxyPath()}socket.io/` : '/socket.io/';
79
+ };
69
80
 
70
81
  /**
71
82
  * Constructs the full WebSocket base URL for connections.
@@ -321,6 +332,7 @@ export {
321
332
  payloadFactory,
322
333
  buildQueryUrl,
323
334
  getBaseHost,
335
+ getApiBaseProxyPath,
324
336
  getApiBasePath,
325
337
  getApiBaseUrl,
326
338
  getWsBasePath,
@@ -0,0 +1,105 @@
1
+ import { Auth } from '../../components/core/Auth.js';
2
+ import { loggerFactory } from '../../components/core/Logger.js';
3
+ import { getApiBaseUrl, headersFactory, payloadFactory, buildQueryUrl } from '../core/core.service.js';
4
+
5
+ const logger = loggerFactory(import.meta);
6
+
7
+ logger.info('Load service');
8
+
9
+ const endpoint = 'cyberia-dialogue';
10
+
11
+ const CyberiaDialogueService = {
12
+ post: (options = { id: '', body: {} }) =>
13
+ new Promise((resolve, reject) =>
14
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
15
+ method: 'POST',
16
+ headers: headersFactory(),
17
+ credentials: 'include',
18
+ body: payloadFactory(options.body),
19
+ })
20
+ .then(async (res) => {
21
+ return await res.json();
22
+ })
23
+ .then((res) => {
24
+ logger.info(res);
25
+ return resolve(res);
26
+ })
27
+ .catch((error) => {
28
+ logger.error(error);
29
+ return reject(error);
30
+ }),
31
+ ),
32
+ put: (options = { id: '', body: {} }) =>
33
+ new Promise((resolve, reject) =>
34
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
35
+ method: 'PUT',
36
+ headers: headersFactory(),
37
+ credentials: 'include',
38
+ body: payloadFactory(options.body),
39
+ })
40
+ .then(async (res) => {
41
+ return await res.json();
42
+ })
43
+ .then((res) => {
44
+ logger.info(res);
45
+ return resolve(res);
46
+ })
47
+ .catch((error) => {
48
+ logger.error(error);
49
+ return reject(error);
50
+ }),
51
+ ),
52
+ get: (options = {}) => {
53
+ const { id, page, limit, filterModel, sortModel, sort, asc, order } = options;
54
+ const url = buildQueryUrl(getApiBaseUrl({ id, endpoint }), {
55
+ page,
56
+ limit,
57
+ filterModel,
58
+ sortModel,
59
+ sort,
60
+ asc,
61
+ order,
62
+ });
63
+
64
+ return new Promise((resolve, reject) =>
65
+ fetch(url.toString(), {
66
+ method: 'GET',
67
+ headers: headersFactory(),
68
+ credentials: 'include',
69
+ })
70
+ .then(async (res) => {
71
+ return await res.json();
72
+ })
73
+ .then((res) => {
74
+ logger.info(res);
75
+ return resolve(res);
76
+ })
77
+ .catch((error) => {
78
+ logger.error(error);
79
+ return reject(error);
80
+ }),
81
+ );
82
+ },
83
+ delete: (options = { id: '', body: {} }) =>
84
+ new Promise((resolve, reject) =>
85
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
86
+ method: 'DELETE',
87
+ headers: headersFactory(),
88
+ credentials: 'include',
89
+ body: payloadFactory(options.body),
90
+ })
91
+ .then(async (res) => {
92
+ return await res.json();
93
+ })
94
+ .then((res) => {
95
+ logger.info(res);
96
+ return resolve(res);
97
+ })
98
+ .catch((error) => {
99
+ logger.error(error);
100
+ return reject(error);
101
+ }),
102
+ ),
103
+ };
104
+
105
+ export { CyberiaDialogueService };
@@ -0,0 +1,57 @@
1
+ import { DefaultManagement } from '../default/default.management.js';
2
+ import { CyberiaEntityService } from './cyberia-entity.service.js';
3
+
4
+ const CyberiaEntityManagement = {
5
+ RenderTable: async (options = {}) => {
6
+ const { idModal: rawIdModal, customEvent, readyRowDataEvent } = options;
7
+ const idModal = rawIdModal || 'modal-cyberia-entity-management';
8
+
9
+ const renderResult = await DefaultManagement.RenderTable({
10
+ idModal,
11
+ serviceId: 'cyberia-entity-management',
12
+ entity: 'cyberia-entity',
13
+ permissions: {
14
+ add: false,
15
+ remove: true,
16
+ reload: true,
17
+ },
18
+ usePagination: true,
19
+ columnDefs: [
20
+ { field: 'entityType', headerName: 'Entity Type' },
21
+ { field: 'initCellX', headerName: 'initCellX' },
22
+ { field: 'initCellY', headerName: 'initCellY' },
23
+ { field: 'dimX', headerName: 'dimX' },
24
+ { field: 'dimY', headerName: 'dimY' },
25
+ { field: 'color', headerName: 'Color' },
26
+ {
27
+ field: 'createdAt',
28
+ headerName: 'createdAt',
29
+ cellDataType: 'date',
30
+ editable: false,
31
+ },
32
+ {
33
+ field: 'updatedAt',
34
+ headerName: 'updatedAt',
35
+ cellDataType: 'date',
36
+ editable: false,
37
+ },
38
+ ],
39
+ defaultColKeyFocus: 'entityType',
40
+ ServiceProvider: CyberiaEntityService,
41
+ customEvent,
42
+ });
43
+
44
+ if (readyRowDataEvent) {
45
+ if (!DefaultManagement.Tokens[idModal].readyRowDataEvent)
46
+ DefaultManagement.Tokens[idModal].readyRowDataEvent = {};
47
+
48
+ for (const key of Object.keys(readyRowDataEvent)) {
49
+ DefaultManagement.Tokens[idModal].readyRowDataEvent[key] = readyRowDataEvent[key];
50
+ }
51
+ }
52
+
53
+ return renderResult;
54
+ },
55
+ };
56
+
57
+ export { CyberiaEntityManagement };
@@ -0,0 +1,105 @@
1
+ import { Auth } from '../../components/core/Auth.js';
2
+ import { loggerFactory } from '../../components/core/Logger.js';
3
+ import { getApiBaseUrl, headersFactory, payloadFactory, buildQueryUrl } from '../core/core.service.js';
4
+
5
+ const logger = loggerFactory(import.meta);
6
+
7
+ logger.info('Load service');
8
+
9
+ const endpoint = 'cyberia-entity';
10
+
11
+ const CyberiaEntityService = {
12
+ post: (options = { id: '', body: {} }) =>
13
+ new Promise((resolve, reject) =>
14
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
15
+ method: 'POST',
16
+ headers: headersFactory(),
17
+ credentials: 'include',
18
+ body: payloadFactory(options.body),
19
+ })
20
+ .then(async (res) => {
21
+ return await res.json();
22
+ })
23
+ .then((res) => {
24
+ logger.info(res);
25
+ return resolve(res);
26
+ })
27
+ .catch((error) => {
28
+ logger.error(error);
29
+ return reject(error);
30
+ }),
31
+ ),
32
+ put: (options = { id: '', body: {} }) =>
33
+ new Promise((resolve, reject) =>
34
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
35
+ method: 'PUT',
36
+ headers: headersFactory(),
37
+ credentials: 'include',
38
+ body: payloadFactory(options.body),
39
+ })
40
+ .then(async (res) => {
41
+ return await res.json();
42
+ })
43
+ .then((res) => {
44
+ logger.info(res);
45
+ return resolve(res);
46
+ })
47
+ .catch((error) => {
48
+ logger.error(error);
49
+ return reject(error);
50
+ }),
51
+ ),
52
+ get: (options = {}) => {
53
+ const { id, page, limit, filterModel, sortModel, sort, asc, order } = options;
54
+ const url = buildQueryUrl(getApiBaseUrl({ id, endpoint }), {
55
+ page,
56
+ limit,
57
+ filterModel,
58
+ sortModel,
59
+ sort,
60
+ asc,
61
+ order,
62
+ });
63
+
64
+ return new Promise((resolve, reject) =>
65
+ fetch(url.toString(), {
66
+ method: 'GET',
67
+ headers: headersFactory(),
68
+ credentials: 'include',
69
+ })
70
+ .then(async (res) => {
71
+ return await res.json();
72
+ })
73
+ .then((res) => {
74
+ logger.info(res);
75
+ return resolve(res);
76
+ })
77
+ .catch((error) => {
78
+ logger.error(error);
79
+ return reject(error);
80
+ }),
81
+ );
82
+ },
83
+ delete: (options = { id: '', body: {} }) =>
84
+ new Promise((resolve, reject) =>
85
+ fetch(getApiBaseUrl({ id: options.id, endpoint }), {
86
+ method: 'DELETE',
87
+ headers: headersFactory(),
88
+ credentials: 'include',
89
+ body: payloadFactory(options.body),
90
+ })
91
+ .then(async (res) => {
92
+ return await res.json();
93
+ })
94
+ .then((res) => {
95
+ logger.info(res);
96
+ return resolve(res);
97
+ })
98
+ .catch((error) => {
99
+ logger.error(error);
100
+ return reject(error);
101
+ }),
102
+ ),
103
+ };
104
+
105
+ export { CyberiaEntityService };
@@ -0,0 +1,194 @@
1
+ import { BtnIcon } from '../../components/core/BtnIcon.js';
2
+ import { getId, commonUserGuard, commonAdminGuard } from '../../components/core/CommonJs.js';
3
+ import { EventsUI } from '../../components/core/EventsUI.js';
4
+ import { NotificationManager } from '../../components/core/NotificationManager.js';
5
+ import { s } from '../../components/core/VanillaJs.js';
6
+ import { DefaultManagement } from '../default/default.management.js';
7
+ import { CyberiaInstanceService } from './cyberia-instance.service.js';
8
+ import { getApiBaseUrl } from '../core/core.service.js';
9
+
10
+ const CyberiaInstanceManagement = {
11
+ RenderTable: async (options = {}) => {
12
+ const { idModal: rawIdModal, customEvent, readyRowDataEvent, loadInstanceCallback, appStore } = options;
13
+ const idModal = rawIdModal || 'modal-cyberia-instance-management';
14
+ const role = appStore?.Data?.user?.main?.model?.user?.role || 'guest';
15
+
16
+ class LoadInstanceActionGridRenderer {
17
+ eGui;
18
+ tokens;
19
+
20
+ async init(params) {
21
+ this.eGui = document.createElement('div');
22
+ this.tokens = {};
23
+
24
+ const cellRenderId = getId(this.tokens, 'load-instance-');
25
+ this.tokens[cellRenderId] = {};
26
+
27
+ this.eGui.innerHTML = html`${await BtnIcon.Render({
28
+ label: html`<div class="abs center">
29
+ <i class="fa-solid fa-upload"></i>
30
+ </div>`,
31
+ class: `in fll section-mp management-table-btn-mini management-table-btn-load-instance-${idModal}-${cellRenderId} ${
32
+ !params.data._id ? 'hide' : ''
33
+ }`,
34
+ })}`;
35
+
36
+ setTimeout(() => {
37
+ EventsUI.onClick(
38
+ `.management-table-btn-load-instance-${idModal}-${cellRenderId}`,
39
+ async () => {
40
+ if (!params.data._id) return;
41
+ const result = await CyberiaInstanceService.get({ id: params.data._id });
42
+ if (result.status === 'success' && result.data) {
43
+ if (loadInstanceCallback) await loadInstanceCallback(result.data);
44
+ NotificationManager.Push({
45
+ html: `Instance "${result.data.name || result.data.code || params.data._id}" loaded`,
46
+ status: 'success',
47
+ });
48
+ } else {
49
+ NotificationManager.Push({
50
+ html: result.message || 'Failed to load instance',
51
+ status: 'error',
52
+ });
53
+ }
54
+ },
55
+ { context: 'modal' },
56
+ );
57
+ });
58
+ }
59
+
60
+ getGui() {
61
+ return this.eGui;
62
+ }
63
+
64
+ refresh(params) {
65
+ return true;
66
+ }
67
+ }
68
+
69
+ class ThumbnailPreviewGridRenderer {
70
+ eGui;
71
+
72
+ async init(params) {
73
+ this.eGui = document.createElement('div');
74
+ const { data } = params;
75
+
76
+ if (!data || !data.thumbnail) {
77
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
78
+ return;
79
+ }
80
+
81
+ const thumbnailId = typeof data.thumbnail === 'object' ? data.thumbnail._id : data.thumbnail;
82
+ if (!thumbnailId) {
83
+ this.eGui.innerHTML = html`<span style="color: #666; font-style: italic;">—</span>`;
84
+ return;
85
+ }
86
+
87
+ const imageSrc = getApiBaseUrl({ id: thumbnailId, endpoint: 'file/blob' });
88
+
89
+ this.eGui.innerHTML = html`
90
+ <div style="position: relative; width: 60px; height: 60px;">
91
+ <img
92
+ src="${imageSrc}"
93
+ style="width: 60px; height: 60px; object-fit: cover; display: block; border: 1px solid #555;"
94
+ onload="this.style.display='block'; this.nextElementSibling.style.display='none';"
95
+ onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"
96
+ />
97
+ <div
98
+ style="position: absolute; top: 0; left: 0; width: 60px; height: 60px; display: none; align-items: center; justify-content: center;"
99
+ >
100
+ <i class="fas fa-image" style="font-size: 24px; color: #999;"></i>
101
+ </div>
102
+ </div>
103
+ `;
104
+ }
105
+
106
+ getGui() {
107
+ return this.eGui;
108
+ }
109
+
110
+ refresh(params) {
111
+ return true;
112
+ }
113
+ }
114
+
115
+ const renderResult = await DefaultManagement.RenderTable({
116
+ idModal,
117
+ serviceId: 'cyberia-instance-management',
118
+ entity: 'cyberia-instance',
119
+ permissions: {
120
+ add: false,
121
+ remove: commonUserGuard(role),
122
+ reload: true,
123
+ },
124
+ usePagination: true,
125
+ columnDefs: [
126
+ { field: 'code', headerName: 'Code' },
127
+ { field: 'name', headerName: 'Name' },
128
+ { field: 'description', headerName: 'Description' },
129
+ { field: 'cyberiaMapCodes', headerName: 'Map Codes' },
130
+ { field: 'tags', headerName: 'Tags' },
131
+ { field: 'status', headerName: 'Status' },
132
+ {
133
+ field: 'creator',
134
+ headerName: 'Creator',
135
+ valueGetter: (params) => {
136
+ if (!params.data || !params.data.creator) return '—';
137
+ return typeof params.data.creator === 'object' ? params.data.creator.username || '—' : params.data.creator;
138
+ },
139
+ editable: false,
140
+ },
141
+ {
142
+ field: 'thumbnail',
143
+ headerName: 'Thumbnail',
144
+ width: 80,
145
+ cellRenderer: ThumbnailPreviewGridRenderer,
146
+ editable: false,
147
+ sortable: false,
148
+ filter: false,
149
+ },
150
+ {
151
+ field: 'createdAt',
152
+ headerName: 'createdAt',
153
+ cellDataType: 'date',
154
+ editable: false,
155
+ },
156
+ {
157
+ field: 'updatedAt',
158
+ headerName: 'updatedAt',
159
+ cellDataType: 'date',
160
+ editable: false,
161
+ },
162
+ {
163
+ field: 'load-action',
164
+ headerName: '',
165
+ width: 100,
166
+ cellRenderer: LoadInstanceActionGridRenderer,
167
+ editable: false,
168
+ },
169
+ ],
170
+ defaultColKeyFocus: 'code',
171
+ ServiceProvider: CyberiaInstanceService,
172
+ customEvent,
173
+ });
174
+
175
+ // Clear all button: admin only
176
+ if (!commonAdminGuard(role)) {
177
+ const cleanBtn = s(`.management-table-btn-clean-${idModal}`);
178
+ if (cleanBtn) cleanBtn.classList.add('hide');
179
+ }
180
+
181
+ if (readyRowDataEvent) {
182
+ if (!DefaultManagement.Tokens[idModal].readyRowDataEvent)
183
+ DefaultManagement.Tokens[idModal].readyRowDataEvent = {};
184
+
185
+ for (const key of Object.keys(readyRowDataEvent)) {
186
+ DefaultManagement.Tokens[idModal].readyRowDataEvent[key] = readyRowDataEvent[key];
187
+ }
188
+ }
189
+
190
+ return renderResult;
191
+ },
192
+ };
193
+
194
+ export { CyberiaInstanceManagement };