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
@@ -8,48 +8,704 @@ const logger = loggerFactory(import.meta);
8
8
  const ObjectLayerRouter = (options) => {
9
9
  const router = express.Router();
10
10
  const authMiddleware = options.authMiddleware;
11
- router.post(
12
- `/frame-image/:itemType/:itemId/:directionCode`,
13
- async (req, res) => await ObjectLayerController.post(req, res, options),
14
- );
15
- router.post(`/metadata/:itemType/:itemId`, async (req, res) => await ObjectLayerController.post(req, res, options));
16
-
17
- router.post(`/:id`, authMiddleware, async (req, res) => await ObjectLayerController.post(req, res, options));
18
- router.post(`/`, authMiddleware, async (req, res) => await ObjectLayerController.post(req, res, options));
19
- router.get(
20
- `/generate-webp/:itemType/:itemId/:directionCode`,
21
- async (req, res) => await ObjectLayerController.generateWebp(req, res, options),
22
- );
23
- router.get(`/render/:id`, async (req, res) => await ObjectLayerController.get(req, res, options));
24
- router.get(`/metadata/:id`, async (req, res) => await ObjectLayerController.get(req, res, options));
25
- router.get(`/frame-counts/:id`, async (req, res) => await ObjectLayerController.get(req, res, options));
26
- router.get(`/:id`, async (req, res) => await ObjectLayerController.get(req, res, options));
27
- router.get(`/:id`, async (req, res) => await ObjectLayerController.get(req, res, options));
28
- router.get(`/`, async (req, res) => await ObjectLayerController.get(req, res, options));
29
- router.put(
30
- `/:id/frame-image/:itemType/:itemId/:directionCode`,
31
- authMiddleware,
32
- async (req, res) => await ObjectLayerController.put(req, res, options),
33
- );
34
- router.put(
35
- `/:id/metadata/:itemType/:itemId`,
36
- authMiddleware,
37
- async (req, res) => await ObjectLayerController.put(req, res, options),
38
- );
39
- router.put(`/:id`, authMiddleware, async (req, res) => await ObjectLayerController.put(req, res, options));
40
- router.put(`/`, authMiddleware, async (req, res) => await ObjectLayerController.put(req, res, options));
41
- router.delete(
42
- `/:id`,
43
- authMiddleware,
44
- adminGuard,
45
- async (req, res) => await ObjectLayerController.delete(req, res, options),
46
- );
47
- router.delete(
48
- `/`,
49
- authMiddleware,
50
- adminGuard,
51
- async (req, res) => await ObjectLayerController.delete(req, res, options),
52
- );
11
+ router.post(`/frame-image/:itemType/:itemId/:directionCode`, async (req, res) => {
12
+ /*
13
+ #swagger.auto = false
14
+ #swagger.tags = ['object-layer']
15
+ #swagger.summary = 'Upload frame image'
16
+ #swagger.description = 'This endpoint uploads a frame image for a specific object layer item by type, item ID, and direction code'
17
+ #swagger.path = '/object-layer/frame-image/{itemType}/{itemId}/{directionCode}'
18
+ #swagger.method = 'post'
19
+ #swagger.consumes = ['application/octet-stream']
20
+
21
+ #swagger.parameters['itemType'] = {
22
+ in: 'path',
23
+ description: 'The type of the item (e.g. skin, weapon)',
24
+ required: true,
25
+ type: 'string'
26
+ }
27
+
28
+ #swagger.parameters['itemId'] = {
29
+ in: 'path',
30
+ description: 'The item ID',
31
+ required: true,
32
+ type: 'string'
33
+ }
34
+
35
+ #swagger.parameters['directionCode'] = {
36
+ in: 'path',
37
+ description: 'The direction code for the frame (e.g. up, down, left, right)',
38
+ required: true,
39
+ type: 'string'
40
+ }
41
+
42
+ #swagger.responses[200] = {
43
+ description: 'Frame image uploaded successfully',
44
+ content: {
45
+ 'application/json': {
46
+ schema: {
47
+ $ref: '#/components/schemas/objectLayerResponse'
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ #swagger.responses[400] = {
54
+ description: 'Bad request. Please check the input data',
55
+ content: {
56
+ 'application/json': {
57
+ schema: {
58
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
59
+ }
60
+ }
61
+ }
62
+ }
63
+ */
64
+ return await ObjectLayerController.post(req, res, options);
65
+ });
66
+ router.post(`/metadata/:itemType/:itemId`, async (req, res) => {
67
+ /*
68
+ #swagger.auto = false
69
+ #swagger.tags = ['object-layer']
70
+ #swagger.summary = 'Create object layer metadata'
71
+ #swagger.description = 'This endpoint creates metadata for a specific object layer item by type and item ID'
72
+ #swagger.path = '/object-layer/metadata/{itemType}/{itemId}'
73
+ #swagger.method = 'post'
74
+ #swagger.produces = ['application/json']
75
+ #swagger.consumes = ['application/json']
76
+
77
+ #swagger.parameters['itemType'] = {
78
+ in: 'path',
79
+ description: 'The type of the item',
80
+ required: true,
81
+ type: 'string'
82
+ }
83
+
84
+ #swagger.parameters['itemId'] = {
85
+ in: 'path',
86
+ description: 'The item ID',
87
+ required: true,
88
+ type: 'string'
89
+ }
90
+
91
+ #swagger.responses[200] = {
92
+ description: 'Metadata created successfully',
93
+ content: {
94
+ 'application/json': {
95
+ schema: {
96
+ $ref: '#/components/schemas/objectLayerResponse'
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ #swagger.responses[400] = {
103
+ description: 'Bad request. Please check the input data',
104
+ content: {
105
+ 'application/json': {
106
+ schema: {
107
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
108
+ }
109
+ }
110
+ }
111
+ }
112
+ */
113
+ return await ObjectLayerController.post(req, res, options);
114
+ });
115
+
116
+ router.post(`/:id`, authMiddleware, async (req, res) => {
117
+ /*
118
+ #swagger.auto = false
119
+ #swagger.tags = ['object-layer']
120
+ #swagger.summary = 'Create object layer by ID'
121
+ #swagger.description = 'This endpoint creates a new object layer entry with a specific ID'
122
+ #swagger.path = '/object-layer/{id}'
123
+ #swagger.method = 'post'
124
+ #swagger.produces = ['application/json']
125
+ #swagger.consumes = ['application/json']
126
+ #swagger.security = [{
127
+ 'bearerAuth': []
128
+ }]
129
+
130
+ #swagger.parameters['id'] = {
131
+ in: 'path',
132
+ description: 'Object layer ID',
133
+ required: true,
134
+ type: 'string'
135
+ }
136
+
137
+ #swagger.responses[200] = {
138
+ description: 'Object layer created successfully',
139
+ content: {
140
+ 'application/json': {
141
+ schema: {
142
+ $ref: '#/components/schemas/objectLayerResponse'
143
+ }
144
+ }
145
+ }
146
+ }
147
+
148
+ #swagger.responses[400] = {
149
+ description: 'Bad request. Please check the input data',
150
+ content: {
151
+ 'application/json': {
152
+ schema: {
153
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
154
+ }
155
+ }
156
+ }
157
+ }
158
+ */
159
+ return await ObjectLayerController.post(req, res, options);
160
+ });
161
+ router.post(`/`, authMiddleware, async (req, res) => {
162
+ /*
163
+ #swagger.auto = false
164
+ #swagger.tags = ['object-layer']
165
+ #swagger.summary = 'Create object layer'
166
+ #swagger.description = 'This endpoint creates a new object layer entry'
167
+ #swagger.path = '/object-layer'
168
+ #swagger.method = 'post'
169
+ #swagger.produces = ['application/json']
170
+ #swagger.consumes = ['application/json']
171
+ #swagger.security = [{
172
+ 'bearerAuth': []
173
+ }]
174
+
175
+ #swagger.responses[200] = {
176
+ description: 'Object layer created successfully',
177
+ content: {
178
+ 'application/json': {
179
+ schema: {
180
+ $ref: '#/components/schemas/objectLayerResponse'
181
+ }
182
+ }
183
+ }
184
+ }
185
+
186
+ #swagger.responses[400] = {
187
+ description: 'Bad request. Please check the input data',
188
+ content: {
189
+ 'application/json': {
190
+ schema: {
191
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
192
+ }
193
+ }
194
+ }
195
+ }
196
+ */
197
+ return await ObjectLayerController.post(req, res, options);
198
+ });
199
+ router.get(`/generate-webp/:itemType/:itemId/:directionCode`, async (req, res) => {
200
+ /*
201
+ #swagger.auto = false
202
+ #swagger.tags = ['object-layer']
203
+ #swagger.summary = 'Generate WebP image'
204
+ #swagger.description = 'This endpoint generates a WebP image for a specific object layer item by type, item ID, and direction code'
205
+ #swagger.path = '/object-layer/generate-webp/{itemType}/{itemId}/{directionCode}'
206
+ #swagger.method = 'get'
207
+ #swagger.produces = ['image/webp']
208
+
209
+ #swagger.parameters['itemType'] = {
210
+ in: 'path',
211
+ description: 'The type of the item',
212
+ required: true,
213
+ type: 'string'
214
+ }
215
+
216
+ #swagger.parameters['itemId'] = {
217
+ in: 'path',
218
+ description: 'The item ID',
219
+ required: true,
220
+ type: 'string'
221
+ }
222
+
223
+ #swagger.parameters['directionCode'] = {
224
+ in: 'path',
225
+ description: 'The direction code for the frame',
226
+ required: true,
227
+ type: 'string'
228
+ }
229
+
230
+ #swagger.responses[200] = {
231
+ description: 'WebP image generated successfully',
232
+ content: {
233
+ 'image/webp': {
234
+ schema: {
235
+ type: 'string',
236
+ format: 'binary'
237
+ }
238
+ }
239
+ }
240
+ }
241
+
242
+ #swagger.responses[400] = {
243
+ description: 'Bad request. Please check the input data',
244
+ content: {
245
+ 'application/json': {
246
+ schema: {
247
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
248
+ }
249
+ }
250
+ }
251
+ }
252
+ */
253
+ return await ObjectLayerController.generateWebp(req, res, options);
254
+ });
255
+ router.get(`/render/:id`, async (req, res) => {
256
+ /*
257
+ #swagger.auto = false
258
+ #swagger.tags = ['object-layer']
259
+ #swagger.summary = 'Get object layer render data'
260
+ #swagger.description = 'This endpoint retrieves render data for a specific object layer by ID'
261
+ #swagger.path = '/object-layer/render/{id}'
262
+ #swagger.method = 'get'
263
+ #swagger.produces = ['application/json']
264
+
265
+ #swagger.parameters['id'] = {
266
+ in: 'path',
267
+ description: 'Object layer ID',
268
+ required: true,
269
+ type: 'string'
270
+ }
271
+
272
+ #swagger.responses[200] = {
273
+ description: 'Object layer render data retrieved successfully',
274
+ content: {
275
+ 'application/json': {
276
+ schema: {
277
+ $ref: '#/components/schemas/objectLayerResponse'
278
+ }
279
+ }
280
+ }
281
+ }
282
+
283
+ #swagger.responses[400] = {
284
+ description: 'Bad request. Please check the input data',
285
+ content: {
286
+ 'application/json': {
287
+ schema: {
288
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
289
+ }
290
+ }
291
+ }
292
+ }
293
+ */
294
+ return await ObjectLayerController.get(req, res, options);
295
+ });
296
+ router.get(`/metadata/:id`, async (req, res) => {
297
+ /*
298
+ #swagger.auto = false
299
+ #swagger.tags = ['object-layer']
300
+ #swagger.summary = 'Get object layer metadata'
301
+ #swagger.description = 'This endpoint retrieves metadata for a specific object layer by ID'
302
+ #swagger.path = '/object-layer/metadata/{id}'
303
+ #swagger.method = 'get'
304
+ #swagger.produces = ['application/json']
305
+
306
+ #swagger.parameters['id'] = {
307
+ in: 'path',
308
+ description: 'Object layer ID',
309
+ required: true,
310
+ type: 'string'
311
+ }
312
+
313
+ #swagger.responses[200] = {
314
+ description: 'Object layer metadata retrieved successfully',
315
+ content: {
316
+ 'application/json': {
317
+ schema: {
318
+ $ref: '#/components/schemas/objectLayerResponse'
319
+ }
320
+ }
321
+ }
322
+ }
323
+
324
+ #swagger.responses[400] = {
325
+ description: 'Bad request. Please check the input data',
326
+ content: {
327
+ 'application/json': {
328
+ schema: {
329
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
330
+ }
331
+ }
332
+ }
333
+ }
334
+ */
335
+ return await ObjectLayerController.get(req, res, options);
336
+ });
337
+ router.get(`/search-item-ids`, async (req, res) => {
338
+ /*
339
+ #swagger.auto = false
340
+ #swagger.tags = ['object-layer']
341
+ #swagger.summary = 'Search object layer item IDs'
342
+ #swagger.description = 'Returns partial matches of data.item.id for type-ahead autocomplete'
343
+ #swagger.path = '/object-layer/search-item-ids'
344
+ #swagger.method = 'get'
345
+ #swagger.produces = ['application/json']
346
+
347
+ #swagger.parameters['q'] = {
348
+ in: 'query',
349
+ description: 'Partial item ID to search for',
350
+ required: false,
351
+ type: 'string'
352
+ }
353
+
354
+ #swagger.responses[200] = {
355
+ description: 'Item IDs matching the query',
356
+ content: {
357
+ 'application/json': {
358
+ schema: {
359
+ $ref: '#/components/schemas/objectLayerResponse'
360
+ }
361
+ }
362
+ }
363
+ }
364
+ */
365
+ return await ObjectLayerController.get(req, res, options);
366
+ });
367
+ router.get(`/frame-counts/:id`, async (req, res) => {
368
+ /*
369
+ #swagger.auto = false
370
+ #swagger.tags = ['object-layer']
371
+ #swagger.summary = 'Get frame counts'
372
+ #swagger.description = 'This endpoint retrieves frame counts for a specific object layer by ID'
373
+ #swagger.path = '/object-layer/frame-counts/{id}'
374
+ #swagger.method = 'get'
375
+ #swagger.produces = ['application/json']
376
+
377
+ #swagger.parameters['id'] = {
378
+ in: 'path',
379
+ description: 'Object layer ID',
380
+ required: true,
381
+ type: 'string'
382
+ }
383
+
384
+ #swagger.responses[200] = {
385
+ description: 'Frame counts retrieved successfully',
386
+ content: {
387
+ 'application/json': {
388
+ schema: {
389
+ $ref: '#/components/schemas/objectLayerResponse'
390
+ }
391
+ }
392
+ }
393
+ }
394
+
395
+ #swagger.responses[400] = {
396
+ description: 'Bad request. Please check the input data',
397
+ content: {
398
+ 'application/json': {
399
+ schema: {
400
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
401
+ }
402
+ }
403
+ }
404
+ }
405
+ */
406
+ return await ObjectLayerController.get(req, res, options);
407
+ });
408
+ router.get(`/:id`, async (req, res) => {
409
+ /*
410
+ #swagger.auto = false
411
+ #swagger.tags = ['object-layer']
412
+ #swagger.summary = 'Get object layer by ID'
413
+ #swagger.description = 'This endpoint retrieves a specific object layer by ID'
414
+ #swagger.path = '/object-layer/{id}'
415
+ #swagger.method = 'get'
416
+ #swagger.produces = ['application/json']
417
+
418
+ #swagger.parameters['id'] = {
419
+ in: 'path',
420
+ description: 'Object layer ID',
421
+ required: true,
422
+ type: 'string'
423
+ }
424
+
425
+ #swagger.responses[200] = {
426
+ description: 'Object layer retrieved successfully',
427
+ content: {
428
+ 'application/json': {
429
+ schema: {
430
+ $ref: '#/components/schemas/objectLayerResponse'
431
+ }
432
+ }
433
+ }
434
+ }
435
+
436
+ #swagger.responses[400] = {
437
+ description: 'Bad request. Please check the input data',
438
+ content: {
439
+ 'application/json': {
440
+ schema: {
441
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
442
+ }
443
+ }
444
+ }
445
+ }
446
+ */
447
+ return await ObjectLayerController.get(req, res, options);
448
+ });
449
+ router.get(`/`, async (req, res) => {
450
+ /*
451
+ #swagger.auto = false
452
+ #swagger.tags = ['object-layer']
453
+ #swagger.summary = 'Get all object layers'
454
+ #swagger.description = 'This endpoint retrieves all object layers'
455
+ #swagger.path = '/object-layer'
456
+ #swagger.method = 'get'
457
+ #swagger.produces = ['application/json']
458
+
459
+ #swagger.responses[200] = {
460
+ description: 'Object layers retrieved successfully',
461
+ content: {
462
+ 'application/json': {
463
+ schema: {
464
+ $ref: '#/components/schemas/objectLayerResponse'
465
+ }
466
+ }
467
+ }
468
+ }
469
+
470
+ #swagger.responses[400] = {
471
+ description: 'Bad request. Please check the input data',
472
+ content: {
473
+ 'application/json': {
474
+ schema: {
475
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
476
+ }
477
+ }
478
+ }
479
+ }
480
+ */
481
+ return await ObjectLayerController.get(req, res, options);
482
+ });
483
+ router.put(`/:id/frame-image/:itemType/:itemId/:directionCode`, authMiddleware, async (req, res) => {
484
+ /*
485
+ #swagger.auto = false
486
+ #swagger.tags = ['object-layer']
487
+ #swagger.summary = 'Update frame image'
488
+ #swagger.description = 'This endpoint updates a frame image for a specific object layer item by ID, type, item ID, and direction code'
489
+ #swagger.path = '/object-layer/{id}/frame-image/{itemType}/{itemId}/{directionCode}'
490
+ #swagger.method = 'put'
491
+ #swagger.consumes = ['application/octet-stream']
492
+ #swagger.security = [{
493
+ 'bearerAuth': []
494
+ }]
495
+
496
+ #swagger.parameters['id'] = {
497
+ in: 'path',
498
+ description: 'Object layer ID',
499
+ required: true,
500
+ type: 'string'
501
+ }
502
+
503
+ #swagger.parameters['itemType'] = {
504
+ in: 'path',
505
+ description: 'The type of the item',
506
+ required: true,
507
+ type: 'string'
508
+ }
509
+
510
+ #swagger.parameters['itemId'] = {
511
+ in: 'path',
512
+ description: 'The item ID',
513
+ required: true,
514
+ type: 'string'
515
+ }
516
+
517
+ #swagger.parameters['directionCode'] = {
518
+ in: 'path',
519
+ description: 'The direction code for the frame',
520
+ required: true,
521
+ type: 'string'
522
+ }
523
+
524
+ #swagger.responses[200] = {
525
+ description: 'Frame image updated successfully',
526
+ content: {
527
+ 'application/json': {
528
+ schema: {
529
+ $ref: '#/components/schemas/objectLayerResponse'
530
+ }
531
+ }
532
+ }
533
+ }
534
+
535
+ #swagger.responses[400] = {
536
+ description: 'Bad request. Please check the input data',
537
+ content: {
538
+ 'application/json': {
539
+ schema: {
540
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
541
+ }
542
+ }
543
+ }
544
+ }
545
+ */
546
+ return await ObjectLayerController.put(req, res, options);
547
+ });
548
+ router.put(`/:id/metadata/:itemType/:itemId`, authMiddleware, async (req, res) => {
549
+ /*
550
+ #swagger.auto = false
551
+ #swagger.tags = ['object-layer']
552
+ #swagger.summary = 'Update object layer metadata'
553
+ #swagger.description = 'This endpoint updates metadata for a specific object layer item by ID, type, and item ID'
554
+ #swagger.path = '/object-layer/{id}/metadata/{itemType}/{itemId}'
555
+ #swagger.method = 'put'
556
+ #swagger.produces = ['application/json']
557
+ #swagger.consumes = ['application/json']
558
+ #swagger.security = [{
559
+ 'bearerAuth': []
560
+ }]
561
+
562
+ #swagger.parameters['id'] = {
563
+ in: 'path',
564
+ description: 'Object layer ID',
565
+ required: true,
566
+ type: 'string'
567
+ }
568
+
569
+ #swagger.parameters['itemType'] = {
570
+ in: 'path',
571
+ description: 'The type of the item',
572
+ required: true,
573
+ type: 'string'
574
+ }
575
+
576
+ #swagger.parameters['itemId'] = {
577
+ in: 'path',
578
+ description: 'The item ID',
579
+ required: true,
580
+ type: 'string'
581
+ }
582
+
583
+ #swagger.responses[200] = {
584
+ description: 'Metadata updated successfully',
585
+ content: {
586
+ 'application/json': {
587
+ schema: {
588
+ $ref: '#/components/schemas/objectLayerResponse'
589
+ }
590
+ }
591
+ }
592
+ }
593
+
594
+ #swagger.responses[400] = {
595
+ description: 'Bad request. Please check the input data',
596
+ content: {
597
+ 'application/json': {
598
+ schema: {
599
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
600
+ }
601
+ }
602
+ }
603
+ }
604
+ */
605
+ return await ObjectLayerController.put(req, res, options);
606
+ });
607
+ router.put(`/:id`, authMiddleware, async (req, res) => {
608
+ /*
609
+ #swagger.auto = false
610
+ #swagger.tags = ['object-layer']
611
+ #swagger.summary = 'Update object layer by ID'
612
+ #swagger.description = 'This endpoint updates an object layer entry by ID'
613
+ #swagger.path = '/object-layer/{id}'
614
+ #swagger.method = 'put'
615
+ #swagger.produces = ['application/json']
616
+ #swagger.consumes = ['application/json']
617
+ #swagger.security = [{
618
+ 'bearerAuth': []
619
+ }]
620
+
621
+ #swagger.parameters['id'] = {
622
+ in: 'path',
623
+ description: 'Object layer ID',
624
+ required: true,
625
+ type: 'string'
626
+ }
627
+
628
+ #swagger.responses[200] = {
629
+ description: 'Object layer updated successfully',
630
+ content: {
631
+ 'application/json': {
632
+ schema: {
633
+ $ref: '#/components/schemas/objectLayerResponse'
634
+ }
635
+ }
636
+ }
637
+ }
638
+
639
+ #swagger.responses[400] = {
640
+ description: 'Bad request. Please check the input data',
641
+ content: {
642
+ 'application/json': {
643
+ schema: {
644
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
645
+ }
646
+ }
647
+ }
648
+ }
649
+ */
650
+ return await ObjectLayerController.put(req, res, options);
651
+ });
652
+ router.put(`/`, authMiddleware, async (req, res) => {
653
+ /*
654
+ #swagger.ignore = true
655
+ */
656
+ return await ObjectLayerController.put(req, res, options);
657
+ });
658
+ router.delete(`/:id`, authMiddleware, adminGuard, async (req, res) => {
659
+ /*
660
+ #swagger.auto = false
661
+ #swagger.tags = ['object-layer']
662
+ #swagger.summary = 'Delete object layer by ID'
663
+ #swagger.description = 'This endpoint deletes an object layer entry by ID. Requires admin privileges'
664
+ #swagger.path = '/object-layer/{id}'
665
+ #swagger.method = 'delete'
666
+ #swagger.produces = ['application/json']
667
+ #swagger.consumes = ['application/json']
668
+ #swagger.security = [{
669
+ 'bearerAuth': []
670
+ }]
671
+
672
+ #swagger.parameters['id'] = {
673
+ in: 'path',
674
+ description: 'Object layer ID',
675
+ required: true,
676
+ type: 'string'
677
+ }
678
+
679
+ #swagger.responses[200] = {
680
+ description: 'Object layer deleted successfully',
681
+ content: {
682
+ 'application/json': {
683
+ schema: {
684
+ $ref: '#/components/schemas/objectLayerResponse'
685
+ }
686
+ }
687
+ }
688
+ }
689
+
690
+ #swagger.responses[400] = {
691
+ description: 'Bad request. Please check the input data',
692
+ content: {
693
+ 'application/json': {
694
+ schema: {
695
+ $ref: '#/components/schemas/objectLayerBadRequestResponse'
696
+ }
697
+ }
698
+ }
699
+ }
700
+ */
701
+ return await ObjectLayerController.delete(req, res, options);
702
+ });
703
+ router.delete(`/`, authMiddleware, adminGuard, async (req, res) => {
704
+ /*
705
+ #swagger.ignore = true
706
+ */
707
+ return await ObjectLayerController.delete(req, res, options);
708
+ });
53
709
  return router;
54
710
  };
55
711