cyberia 2.8.885

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 (525) hide show
  1. package/.dockerignore +15 -0
  2. package/.env.development +45 -0
  3. package/.env.production +50 -0
  4. package/.env.test +45 -0
  5. package/.github/workflows/engine-cyberia.cd.yml +31 -0
  6. package/.github/workflows/engine-cyberia.ci.yml +60 -0
  7. package/.github/workflows/ghpkg.ci.yml +87 -0
  8. package/.github/workflows/npmpkg.ci.yml +72 -0
  9. package/.github/workflows/publish.ci.yml +84 -0
  10. package/.github/workflows/publish.cyberia.ci.yml +84 -0
  11. package/.github/workflows/pwa-microservices-template-page.cd.yml +72 -0
  12. package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
  13. package/.github/workflows/release.cd.yml +37 -0
  14. package/.nycrc +9 -0
  15. package/.prettierignore +13 -0
  16. package/.prettierrc +9 -0
  17. package/.vscode/extensions.json +51 -0
  18. package/.vscode/settings.json +87 -0
  19. package/AUTHORS.md +21 -0
  20. package/CHANGELOG.md +205 -0
  21. package/Dockerfile +28 -0
  22. package/LICENSE +21 -0
  23. package/README.md +85 -0
  24. package/bin/build.js +209 -0
  25. package/bin/cron.js +47 -0
  26. package/bin/cyberia.js +145 -0
  27. package/bin/db.js +199 -0
  28. package/bin/deploy.js +1293 -0
  29. package/bin/file.js +197 -0
  30. package/bin/hwt.js +49 -0
  31. package/bin/index.js +145 -0
  32. package/bin/ssl.js +63 -0
  33. package/bin/util.js +80 -0
  34. package/bin/vs.js +74 -0
  35. package/cli.md +714 -0
  36. package/conf.js +204 -0
  37. package/deployment.yaml +138 -0
  38. package/jsconfig.json +7 -0
  39. package/jsdoc.json +32 -0
  40. package/manifests/deployment/adminer/deployment.yaml +32 -0
  41. package/manifests/deployment/adminer/kustomization.yaml +7 -0
  42. package/manifests/deployment/adminer/service.yaml +13 -0
  43. package/manifests/deployment/dd-default-development/deployment.yaml +167 -0
  44. package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
  45. package/manifests/deployment/dd-test-development/deployment.yaml +174 -0
  46. package/manifests/deployment/dd-test-development/proxy.yaml +51 -0
  47. package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
  48. package/manifests/deployment/fastapi/backend-service.yml +19 -0
  49. package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
  50. package/manifests/deployment/fastapi/frontend-service.yml +15 -0
  51. package/manifests/deployment/fastapi/initial_data.sh +56 -0
  52. package/manifests/deployment/kafka/deployment.yaml +69 -0
  53. package/manifests/deployment/mongo-express/deployment.yaml +60 -0
  54. package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
  55. package/manifests/deployment/spark/spark-pi-py.yaml +21 -0
  56. package/manifests/deployment/tensorflow/tf-gpu-test.yaml +65 -0
  57. package/manifests/envoy-service-nodeport.yaml +23 -0
  58. package/manifests/grafana/deployment.yaml +57 -0
  59. package/manifests/grafana/kustomization.yaml +7 -0
  60. package/manifests/grafana/pvc.yaml +12 -0
  61. package/manifests/grafana/service.yaml +14 -0
  62. package/manifests/kind-config-dev.yaml +12 -0
  63. package/manifests/kind-config.yaml +12 -0
  64. package/manifests/kubeadm-calico-config.yaml +119 -0
  65. package/manifests/kubelet-config.yaml +65 -0
  66. package/manifests/letsencrypt-prod.yaml +15 -0
  67. package/manifests/lxd/lxd-admin-profile.yaml +17 -0
  68. package/manifests/lxd/lxd-preseed.yaml +30 -0
  69. package/manifests/lxd/underpost-setup.sh +163 -0
  70. package/manifests/mariadb/config.yaml +10 -0
  71. package/manifests/mariadb/kustomization.yaml +9 -0
  72. package/manifests/mariadb/pv.yaml +12 -0
  73. package/manifests/mariadb/pvc.yaml +10 -0
  74. package/manifests/mariadb/secret.yaml +8 -0
  75. package/manifests/mariadb/service.yaml +10 -0
  76. package/manifests/mariadb/statefulset.yaml +56 -0
  77. package/manifests/mariadb/storage-class.yaml +10 -0
  78. package/manifests/mongodb/backup-access.yaml +16 -0
  79. package/manifests/mongodb/backup-cronjob.yaml +42 -0
  80. package/manifests/mongodb/backup-pv-pvc.yaml +22 -0
  81. package/manifests/mongodb/configmap.yaml +26 -0
  82. package/manifests/mongodb/headless-service.yaml +10 -0
  83. package/manifests/mongodb/kustomization.yaml +11 -0
  84. package/manifests/mongodb/pv-pvc.yaml +23 -0
  85. package/manifests/mongodb/statefulset.yaml +126 -0
  86. package/manifests/mongodb/storage-class.yaml +9 -0
  87. package/manifests/mongodb-4.4/kustomization.yaml +7 -0
  88. package/manifests/mongodb-4.4/pv-pvc.yaml +23 -0
  89. package/manifests/mongodb-4.4/service-deployment.yaml +63 -0
  90. package/manifests/mysql/kustomization.yaml +7 -0
  91. package/manifests/mysql/pv-pvc.yaml +27 -0
  92. package/manifests/mysql/statefulset.yaml +55 -0
  93. package/manifests/postgresql/configmap.yaml +9 -0
  94. package/manifests/postgresql/kustomization.yaml +10 -0
  95. package/manifests/postgresql/pv.yaml +15 -0
  96. package/manifests/postgresql/pvc.yaml +13 -0
  97. package/manifests/postgresql/service.yaml +10 -0
  98. package/manifests/postgresql/statefulset.yaml +37 -0
  99. package/manifests/prometheus/deployment.yaml +82 -0
  100. package/manifests/valkey/kustomization.yaml +7 -0
  101. package/manifests/valkey/service.yaml +11 -0
  102. package/manifests/valkey/statefulset.yaml +38 -0
  103. package/nodemon.json +6 -0
  104. package/package.json +118 -0
  105. package/proxy.yaml +35 -0
  106. package/scripts/device-scan.sh +43 -0
  107. package/scripts/gpu-diag.sh +19 -0
  108. package/scripts/maas-setup.sh +120 -0
  109. package/scripts/nat-iptables.sh +26 -0
  110. package/scripts/nvim.sh +91 -0
  111. package/scripts/snap-clean.sh +26 -0
  112. package/scripts/ssh-cluster-info.sh +14 -0
  113. package/scripts/ssl.sh +164 -0
  114. package/src/api/blockchain/blockchain.controller.js +51 -0
  115. package/src/api/blockchain/blockchain.model.js +90 -0
  116. package/src/api/blockchain/blockchain.router.js +21 -0
  117. package/src/api/blockchain/blockchain.service.js +24 -0
  118. package/src/api/core/core.controller.js +69 -0
  119. package/src/api/core/core.model.js +11 -0
  120. package/src/api/core/core.router.js +24 -0
  121. package/src/api/core/core.service.js +35 -0
  122. package/src/api/crypto/crypto.controller.js +51 -0
  123. package/src/api/crypto/crypto.model.js +23 -0
  124. package/src/api/crypto/crypto.router.js +20 -0
  125. package/src/api/crypto/crypto.service.js +64 -0
  126. package/src/api/default/default.controller.js +74 -0
  127. package/src/api/default/default.model.js +20 -0
  128. package/src/api/default/default.router.js +27 -0
  129. package/src/api/default/default.service.js +40 -0
  130. package/src/api/document/document.controller.js +66 -0
  131. package/src/api/document/document.model.js +51 -0
  132. package/src/api/document/document.router.js +24 -0
  133. package/src/api/document/document.service.js +133 -0
  134. package/src/api/file/file.controller.js +67 -0
  135. package/src/api/file/file.model.js +19 -0
  136. package/src/api/file/file.router.js +22 -0
  137. package/src/api/file/file.service.js +100 -0
  138. package/src/api/instance/instance.controller.js +69 -0
  139. package/src/api/instance/instance.model.js +40 -0
  140. package/src/api/instance/instance.router.js +34 -0
  141. package/src/api/instance/instance.service.js +70 -0
  142. package/src/api/ipfs/ipfs.controller.js +51 -0
  143. package/src/api/ipfs/ipfs.model.js +17 -0
  144. package/src/api/ipfs/ipfs.router.js +20 -0
  145. package/src/api/ipfs/ipfs.service.js +25 -0
  146. package/src/api/object-layer/README.md +85 -0
  147. package/src/api/object-layer/object-layer.controller.js +69 -0
  148. package/src/api/object-layer/object-layer.model.js +181 -0
  149. package/src/api/object-layer/object-layer.router.js +29 -0
  150. package/src/api/object-layer/object-layer.service.js +49 -0
  151. package/src/api/test/test.controller.js +59 -0
  152. package/src/api/test/test.model.js +14 -0
  153. package/src/api/test/test.router.js +21 -0
  154. package/src/api/test/test.service.js +35 -0
  155. package/src/api/user/postman_collection.json +216 -0
  156. package/src/api/user/user.build.js +16 -0
  157. package/src/api/user/user.controller.js +35 -0
  158. package/src/api/user/user.model.js +100 -0
  159. package/src/api/user/user.router.js +400 -0
  160. package/src/api/user/user.service.js +500 -0
  161. package/src/api.js +23 -0
  162. package/src/cli/baremetal.js +1310 -0
  163. package/src/cli/cloud-init.js +548 -0
  164. package/src/cli/cluster.js +834 -0
  165. package/src/cli/cron.js +95 -0
  166. package/src/cli/db.js +414 -0
  167. package/src/cli/deploy.js +661 -0
  168. package/src/cli/env.js +101 -0
  169. package/src/cli/fs.js +256 -0
  170. package/src/cli/image.js +156 -0
  171. package/src/cli/index.js +436 -0
  172. package/src/cli/lxd.js +402 -0
  173. package/src/cli/monitor.js +260 -0
  174. package/src/cli/repository.js +274 -0
  175. package/src/cli/run.js +728 -0
  176. package/src/cli/script.js +85 -0
  177. package/src/cli/secrets.js +71 -0
  178. package/src/cli/ssh.js +46 -0
  179. package/src/cli/test.js +159 -0
  180. package/src/client/Cyberia.index.js +50 -0
  181. package/src/client/CyberiaAdmin.index.js +34 -0
  182. package/src/client/CyberiaPortal.index.js +36 -0
  183. package/src/client/Default.index.js +84 -0
  184. package/src/client/components/core/404.js +20 -0
  185. package/src/client/components/core/500.js +20 -0
  186. package/src/client/components/core/Account.js +326 -0
  187. package/src/client/components/core/AgGrid.js +191 -0
  188. package/src/client/components/core/Alert.js +77 -0
  189. package/src/client/components/core/Auth.js +342 -0
  190. package/src/client/components/core/Badge.js +32 -0
  191. package/src/client/components/core/Blockchain.js +41 -0
  192. package/src/client/components/core/Blog.js +9 -0
  193. package/src/client/components/core/BtnIcon.js +111 -0
  194. package/src/client/components/core/CalendarCore.js +464 -0
  195. package/src/client/components/core/Chat.js +64 -0
  196. package/src/client/components/core/ColorPalette.js +5267 -0
  197. package/src/client/components/core/CommonJs.js +1010 -0
  198. package/src/client/components/core/Content.js +196 -0
  199. package/src/client/components/core/Css.js +1099 -0
  200. package/src/client/components/core/CssCore.js +882 -0
  201. package/src/client/components/core/D3Chart.js +44 -0
  202. package/src/client/components/core/Docs.js +376 -0
  203. package/src/client/components/core/DropDown.js +223 -0
  204. package/src/client/components/core/EventsUI.js +133 -0
  205. package/src/client/components/core/FileExplorer.js +707 -0
  206. package/src/client/components/core/FullScreen.js +36 -0
  207. package/src/client/components/core/Input.js +383 -0
  208. package/src/client/components/core/JoyStick.js +80 -0
  209. package/src/client/components/core/Keyboard.js +73 -0
  210. package/src/client/components/core/LoadingAnimation.js +159 -0
  211. package/src/client/components/core/LogIn.js +190 -0
  212. package/src/client/components/core/LogOut.js +63 -0
  213. package/src/client/components/core/Logger.js +29 -0
  214. package/src/client/components/core/Modal.js +2494 -0
  215. package/src/client/components/core/NotificationManager.js +84 -0
  216. package/src/client/components/core/ObjectLayerEngine.js +1229 -0
  217. package/src/client/components/core/ObjectLayerEngineModal.js +443 -0
  218. package/src/client/components/core/Pagination.js +207 -0
  219. package/src/client/components/core/Panel.js +772 -0
  220. package/src/client/components/core/PanelForm.js +627 -0
  221. package/src/client/components/core/Polyhedron.js +162 -0
  222. package/src/client/components/core/Recover.js +207 -0
  223. package/src/client/components/core/Responsive.js +82 -0
  224. package/src/client/components/core/RichText.js +43 -0
  225. package/src/client/components/core/Router.js +317 -0
  226. package/src/client/components/core/Scroll.js +76 -0
  227. package/src/client/components/core/SignUp.js +125 -0
  228. package/src/client/components/core/SocketIo.js +74 -0
  229. package/src/client/components/core/Stream.js +113 -0
  230. package/src/client/components/core/ToggleSwitch.js +101 -0
  231. package/src/client/components/core/ToolTip.js +90 -0
  232. package/src/client/components/core/Translate.js +522 -0
  233. package/src/client/components/core/Validator.js +115 -0
  234. package/src/client/components/core/VanillaJs.js +423 -0
  235. package/src/client/components/core/Wallet.js +106 -0
  236. package/src/client/components/core/WebComponent.js +44 -0
  237. package/src/client/components/core/Webhook.js +25 -0
  238. package/src/client/components/core/Worker.js +371 -0
  239. package/src/client/components/core/windowGetDimensions.js +269 -0
  240. package/src/client/components/cyberia/BagCyberia.js +1253 -0
  241. package/src/client/components/cyberia/BiomeCyberia.js +130 -0
  242. package/src/client/components/cyberia/CharacterCyberia.js +321 -0
  243. package/src/client/components/cyberia/CommonCyberia.js +1834 -0
  244. package/src/client/components/cyberia/CssCyberia.js +816 -0
  245. package/src/client/components/cyberia/ElementPreviewCyberia.js +183 -0
  246. package/src/client/components/cyberia/ElementsCyberia.js +146 -0
  247. package/src/client/components/cyberia/InteractionPanelCyberia.js +1043 -0
  248. package/src/client/components/cyberia/JoyStickCyberia.js +53 -0
  249. package/src/client/components/cyberia/LogInCyberia.js +68 -0
  250. package/src/client/components/cyberia/LogOutCyberia.js +24 -0
  251. package/src/client/components/cyberia/MainUserCyberia.js +424 -0
  252. package/src/client/components/cyberia/MapCyberia.js +160 -0
  253. package/src/client/components/cyberia/MatrixCyberia.js +147 -0
  254. package/src/client/components/cyberia/MenuCyberia.js +575 -0
  255. package/src/client/components/cyberia/PixiCyberia.js +1639 -0
  256. package/src/client/components/cyberia/PointAndClickMovementCyberia.js +146 -0
  257. package/src/client/components/cyberia/QuestCyberia.js +1420 -0
  258. package/src/client/components/cyberia/RoutesCyberia.js +47 -0
  259. package/src/client/components/cyberia/SettingsCyberia.js +16 -0
  260. package/src/client/components/cyberia/SignUpCyberia.js +14 -0
  261. package/src/client/components/cyberia/SkillCyberia.js +124 -0
  262. package/src/client/components/cyberia/SocketIoCyberia.js +211 -0
  263. package/src/client/components/cyberia/TileCyberia.js +685 -0
  264. package/src/client/components/cyberia/TranslateCyberia.js +96 -0
  265. package/src/client/components/cyberia/UniverseCyberia.js +14 -0
  266. package/src/client/components/cyberia/WebhookCyberia.js +13 -0
  267. package/src/client/components/cyberia/WikiCyberia.js +144 -0
  268. package/src/client/components/cyberia/WorldCyberia.js +680 -0
  269. package/src/client/components/cyberia-admin/BiomeCyberiaAdmin.js +978 -0
  270. package/src/client/components/cyberia-admin/CommonCyberiaAdmin.js +29 -0
  271. package/src/client/components/cyberia-admin/CssCyberiaAdmin.js +15 -0
  272. package/src/client/components/cyberia-admin/ElementsCyberiaAdmin.js +38 -0
  273. package/src/client/components/cyberia-admin/InstanceEngineCyberiaAdmin.js +180 -0
  274. package/src/client/components/cyberia-admin/LogInCyberiaAdmin.js +34 -0
  275. package/src/client/components/cyberia-admin/LogOutCyberiaAdmin.js +24 -0
  276. package/src/client/components/cyberia-admin/MenuCyberiaAdmin.js +660 -0
  277. package/src/client/components/cyberia-admin/RoutesCyberiaAdmin.js +57 -0
  278. package/src/client/components/cyberia-admin/ServerCyberiaAdmin.js +129 -0
  279. package/src/client/components/cyberia-admin/SettingsCyberiaAdmin.js +16 -0
  280. package/src/client/components/cyberia-admin/SignUpCyberiaAdmin.js +11 -0
  281. package/src/client/components/cyberia-admin/SocketIoCyberiaAdmin.js +53 -0
  282. package/src/client/components/cyberia-admin/TranslateCyberiaAdmin.js +7 -0
  283. package/src/client/components/cyberia-biome/CityCyberiaBiome.js +209 -0
  284. package/src/client/components/cyberia-biome/CityInteriorCyberiaBiome.js +253 -0
  285. package/src/client/components/cyberia-biome/ColorChaosCyberiaBiome.js +26 -0
  286. package/src/client/components/cyberia-biome/ForestCyberiaBiome.js +191 -0
  287. package/src/client/components/cyberia-biome/GridBaseCyberiaBiome.js +364 -0
  288. package/src/client/components/cyberia-biome/SeedCityCyberiaBiome.js +347 -0
  289. package/src/client/components/cyberia-biome/ShopCyberiaBiome.js +12 -0
  290. package/src/client/components/cyberia-biome/SpaceCyberiaBiome.js +58 -0
  291. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +29 -0
  292. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +132 -0
  293. package/src/client/components/cyberia-portal/ElementsCyberiaPortal.js +38 -0
  294. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +18 -0
  295. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +12 -0
  296. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +487 -0
  297. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +45 -0
  298. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +136 -0
  299. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
  300. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +11 -0
  301. package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +52 -0
  302. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +12 -0
  303. package/src/client/components/default/CommonDefault.js +29 -0
  304. package/src/client/components/default/CssDefault.js +27 -0
  305. package/src/client/components/default/ElementsDefault.js +38 -0
  306. package/src/client/components/default/LogInDefault.js +14 -0
  307. package/src/client/components/default/LogOutDefault.js +10 -0
  308. package/src/client/components/default/MenuDefault.js +743 -0
  309. package/src/client/components/default/RoutesDefault.js +48 -0
  310. package/src/client/components/default/SettingsDefault.js +16 -0
  311. package/src/client/components/default/SignUpDefault.js +9 -0
  312. package/src/client/components/default/SocketIoDefault.js +54 -0
  313. package/src/client/components/default/TranslateDefault.js +7 -0
  314. package/src/client/public/default/android-chrome-144x144.png +0 -0
  315. package/src/client/public/default/android-chrome-192x192.png +0 -0
  316. package/src/client/public/default/android-chrome-256x256.png +0 -0
  317. package/src/client/public/default/android-chrome-36x36.png +0 -0
  318. package/src/client/public/default/android-chrome-384x384.png +0 -0
  319. package/src/client/public/default/android-chrome-48x48.png +0 -0
  320. package/src/client/public/default/android-chrome-512x512.png +0 -0
  321. package/src/client/public/default/android-chrome-72x72.png +0 -0
  322. package/src/client/public/default/android-chrome-96x96.png +0 -0
  323. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  324. package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
  325. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  326. package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
  327. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  328. package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
  329. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  330. package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
  331. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  332. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  333. package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
  334. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  335. package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
  336. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  337. package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
  338. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  339. package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
  340. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  341. package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
  342. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  343. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  344. package/src/client/public/default/apple-touch-icon.png +0 -0
  345. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  346. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  347. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  348. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  349. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  350. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  351. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  352. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  353. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  354. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  355. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  356. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  357. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  358. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  359. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  360. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  361. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  362. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  363. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  364. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  365. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  366. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  367. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  368. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  369. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  370. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  371. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  372. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  373. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  374. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  375. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  376. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  377. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  378. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  379. package/src/client/public/default/assets/background/dark.jpg +0 -0
  380. package/src/client/public/default/assets/background/dark.svg +557 -0
  381. package/src/client/public/default/assets/background/white.jpg +0 -0
  382. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  383. package/src/client/public/default/assets/background/white0.jpg +0 -0
  384. package/src/client/public/default/assets/logo/base-icon.png +0 -0
  385. package/src/client/public/default/assets/logo/underpost.gif +0 -0
  386. package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
  387. package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
  388. package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
  389. package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
  390. package/src/client/public/default/browserconfig.xml +12 -0
  391. package/src/client/public/default/favicon-16x16.png +0 -0
  392. package/src/client/public/default/favicon-32x32.png +0 -0
  393. package/src/client/public/default/favicon-48x48.png +0 -0
  394. package/src/client/public/default/favicon.ico +0 -0
  395. package/src/client/public/default/manifest.webmanifest +69 -0
  396. package/src/client/public/default/mstile-144x144.png +0 -0
  397. package/src/client/public/default/mstile-150x150.png +0 -0
  398. package/src/client/public/default/mstile-310x150.png +0 -0
  399. package/src/client/public/default/mstile-310x310.png +0 -0
  400. package/src/client/public/default/mstile-70x70.png +0 -0
  401. package/src/client/public/default/plantuml/client-conf.svg +1 -0
  402. package/src/client/public/default/plantuml/client-schema.svg +1 -0
  403. package/src/client/public/default/plantuml/cron-conf.svg +1 -0
  404. package/src/client/public/default/plantuml/cron-schema.svg +1 -0
  405. package/src/client/public/default/plantuml/server-conf.svg +1 -0
  406. package/src/client/public/default/plantuml/server-schema.svg +1 -0
  407. package/src/client/public/default/plantuml/ssr-conf.svg +1 -0
  408. package/src/client/public/default/plantuml/ssr-schema.svg +1 -0
  409. package/src/client/public/default/safari-pinned-tab.svg +24 -0
  410. package/src/client/public/default/site.webmanifest +69 -0
  411. package/src/client/public/default/sitemap +148 -0
  412. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  413. package/src/client/public/default/yandex-browser-manifest.json +9 -0
  414. package/src/client/public/doc/favicon.ico +0 -0
  415. package/src/client/public/doc/sitemap +148 -0
  416. package/src/client/public/test/favicon.ico +0 -0
  417. package/src/client/public/test/sitemap +148 -0
  418. package/src/client/services/blockchain/blockchain.service.js +73 -0
  419. package/src/client/services/core/core.service.js +165 -0
  420. package/src/client/services/crypto/crypto.service.js +73 -0
  421. package/src/client/services/default/default.management.js +450 -0
  422. package/src/client/services/default/default.service.js +98 -0
  423. package/src/client/services/document/document.service.js +97 -0
  424. package/src/client/services/file/file.service.js +72 -0
  425. package/src/client/services/instance/instance.management.js +78 -0
  426. package/src/client/services/instance/instance.service.js +97 -0
  427. package/src/client/services/ipfs/ipfs.service.js +73 -0
  428. package/src/client/services/object-layer/object-layer.service.js +93 -0
  429. package/src/client/services/test/test.service.js +73 -0
  430. package/src/client/services/user/user.management.js +56 -0
  431. package/src/client/services/user/user.service.js +108 -0
  432. package/src/client/ssr/Render.js +237 -0
  433. package/src/client/ssr/body/404.js +73 -0
  434. package/src/client/ssr/body/500.js +72 -0
  435. package/src/client/ssr/body/CacheControl.js +114 -0
  436. package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +90 -0
  437. package/src/client/ssr/body/CyberiaSplashScreenLore.js +424 -0
  438. package/src/client/ssr/body/DefaultSplashScreen.js +90 -0
  439. package/src/client/ssr/email/DefaultRecoverEmail.js +21 -0
  440. package/src/client/ssr/email/DefaultVerifyEmail.js +17 -0
  441. package/src/client/ssr/head/Css.js +241 -0
  442. package/src/client/ssr/head/CyberiaAdminScripts.js +6 -0
  443. package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
  444. package/src/client/ssr/head/CyberiaScripts.js +6 -0
  445. package/src/client/ssr/head/DefaultScripts.js +6 -0
  446. package/src/client/ssr/head/Microdata.js +11 -0
  447. package/src/client/ssr/head/Production.js +1 -0
  448. package/src/client/ssr/head/Pwa.js +146 -0
  449. package/src/client/ssr/head/Seo.js +15 -0
  450. package/src/client/ssr/mailer/DefaultRecoverEmail.js +21 -0
  451. package/src/client/ssr/mailer/DefaultVerifyEmail.js +17 -0
  452. package/src/client/ssr/offline/Maintenance.js +63 -0
  453. package/src/client/ssr/offline/NoNetworkConnection.js +67 -0
  454. package/src/client/ssr/pages/404.js +12 -0
  455. package/src/client/ssr/pages/500.js +12 -0
  456. package/src/client/ssr/pages/Test.js +198 -0
  457. package/src/client/ssr/pages/maintenance.js +14 -0
  458. package/src/client/ssr/pages/offline.js +21 -0
  459. package/src/client/sw/default.sw.js +108 -0
  460. package/src/client/sw/template.sw.js +84 -0
  461. package/src/client.build.js +22 -0
  462. package/src/client.dev.js +24 -0
  463. package/src/db/DataBaseProvider.js +98 -0
  464. package/src/db/mariadb/MariaDB.js +66 -0
  465. package/src/db/mongo/MongooseDB.js +70 -0
  466. package/src/index.js +198 -0
  467. package/src/mailer/EmailRender.js +116 -0
  468. package/src/mailer/MailerProvider.js +213 -0
  469. package/src/monitor.js +24 -0
  470. package/src/proxy.js +22 -0
  471. package/src/runtime/express/Express.js +256 -0
  472. package/src/runtime/lampp/Dockerfile +50 -0
  473. package/src/runtime/lampp/Lampp.js +343 -0
  474. package/src/server/auth.js +689 -0
  475. package/src/server/backup.js +96 -0
  476. package/src/server/client-build-docs.js +205 -0
  477. package/src/server/client-build-live.js +109 -0
  478. package/src/server/client-build.js +690 -0
  479. package/src/server/client-dev-server.js +87 -0
  480. package/src/server/client-formatted.js +87 -0
  481. package/src/server/client-icons.js +108 -0
  482. package/src/server/conf.js +1071 -0
  483. package/src/server/crypto.js +210 -0
  484. package/src/server/dns.js +276 -0
  485. package/src/server/downloader.js +74 -0
  486. package/src/server/json-schema.js +77 -0
  487. package/src/server/logger.js +197 -0
  488. package/src/server/network.js +72 -0
  489. package/src/server/object-layer.js +294 -0
  490. package/src/server/peer.js +69 -0
  491. package/src/server/process.js +171 -0
  492. package/src/server/proxy.js +110 -0
  493. package/src/server/runtime.js +170 -0
  494. package/src/server/ssr.js +127 -0
  495. package/src/server/start.js +161 -0
  496. package/src/server/tls.js +251 -0
  497. package/src/server/valkey.js +293 -0
  498. package/src/server.js +25 -0
  499. package/src/ws/IoInterface.js +139 -0
  500. package/src/ws/IoServer.js +88 -0
  501. package/src/ws/core/channels/core.ws.chat.js +23 -0
  502. package/src/ws/core/channels/core.ws.mailer.js +35 -0
  503. package/src/ws/core/channels/core.ws.stream.js +31 -0
  504. package/src/ws/core/core.ws.connection.js +62 -0
  505. package/src/ws/core/core.ws.emit.js +53 -0
  506. package/src/ws/core/core.ws.server.js +76 -0
  507. package/src/ws/core/management/core.ws.chat.js +8 -0
  508. package/src/ws/core/management/core.ws.mailer.js +16 -0
  509. package/src/ws/core/management/core.ws.stream.js +8 -0
  510. package/src/ws/cyberia/channels/cyberia.ws.bot.js +56 -0
  511. package/src/ws/cyberia/channels/cyberia.ws.skill.js +51 -0
  512. package/src/ws/cyberia/channels/cyberia.ws.user.js +437 -0
  513. package/src/ws/cyberia/cyberia.ws.connection.js +36 -0
  514. package/src/ws/cyberia/cyberia.ws.emit.js +14 -0
  515. package/src/ws/cyberia/cyberia.ws.server.js +67 -0
  516. package/src/ws/cyberia/management/cyberia.ws.bot.js +669 -0
  517. package/src/ws/cyberia/management/cyberia.ws.skill.js +441 -0
  518. package/src/ws/cyberia/management/cyberia.ws.user.js +188 -0
  519. package/src/ws/default/channels/default.ws.main.js +16 -0
  520. package/src/ws/default/default.ws.connection.js +22 -0
  521. package/src/ws/default/default.ws.emit.js +14 -0
  522. package/src/ws/default/default.ws.server.js +20 -0
  523. package/src/ws/default/management/default.ws.main.js +8 -0
  524. package/test/api.test.js +53 -0
  525. package/test/crypto.test.js +117 -0
@@ -0,0 +1,436 @@
1
+ import dotenv from 'dotenv';
2
+ import { Command } from 'commander';
3
+ import Underpost, { UnderpostRootEnv } from '../index.js';
4
+ import { getNpmRootPath, getUnderpostRootPath, loadConf } from '../server/conf.js';
5
+ import fs from 'fs-extra';
6
+ import { commitData } from '../client/components/core/CommonJs.js';
7
+ import UnderpostLxd from './lxd.js';
8
+ import UnderpostBaremetal from './baremetal.js';
9
+ import UnderpostRun from './run.js';
10
+
11
+ // Load environment variables from .env file
12
+ const underpostRootPath = getUnderpostRootPath();
13
+ fs.existsSync(`${underpostRootPath}/.env`)
14
+ ? dotenv.config({ path: `${underpostRootPath}/.env`, override: true })
15
+ : dotenv.config();
16
+
17
+ const program = new Command();
18
+
19
+ // Set up the main program information
20
+ program.name('underpost').description(`underpost ci/cd cli ${Underpost.version}`).version(Underpost.version);
21
+
22
+ // 'new' command: Create a new project
23
+ program
24
+ .command('new')
25
+ .argument('<app-name>', 'The name or deploy-id of the application to create.')
26
+ .option('--deploy-id', 'Crete deploy ID conf env files')
27
+ .option('--cluster', 'Create deploy ID cluster files and sync to current cluster')
28
+ .option('--dev', 'Sets the development cli context')
29
+ .option('--sub-conf <sub-conf>', 'Create sub conf env files')
30
+ .description('Initializes a new Underpost project, service, or configuration.')
31
+ .action(Underpost.repo.new);
32
+
33
+ // 'start' command: Start application servers, build pipelines, or services
34
+ program
35
+ .command('start')
36
+ .argument('<deploy-id>', 'The unique identifier for the deployment configuration.')
37
+ .argument(
38
+ '[env]',
39
+ 'Optional: The environment to start (e.g., "development", "production"). Defaults to "development".',
40
+ )
41
+ .option('--run', 'Starts application servers and monitors their health.')
42
+ .option('--build', 'Triggers the client-side application build process.')
43
+ .action(Underpost.start.callback)
44
+ .description('Initiates application servers, build pipelines, or other defined services based on the deployment ID.');
45
+
46
+ // 'clone' command: Clone a GitHub repository
47
+ program
48
+ .command('clone')
49
+ .argument(`<uri>`, 'The URI of the GitHub repository (e.g., "username/repository").')
50
+ .option('--bare', 'Performs a bare clone, downloading only the .git files.')
51
+ .option('-g8', 'Uses the g8 repository extension for cloning.')
52
+ .description('Clones a specified GitHub repository into the current directory.')
53
+ .action(Underpost.repo.clone);
54
+
55
+ // 'pull' command: Pull updates from a GitHub repository
56
+ program
57
+ .command('pull')
58
+ .argument('<path>', 'The absolute or relative directory path where the repository is located.')
59
+ .argument(`<uri>`, 'The URI of the GitHub repository (e.g., "username/repository").')
60
+ .description('Pulls the latest changes from a specified GitHub repository.')
61
+ .option('-g8', 'Uses the g8 repository extension for pulling.')
62
+ .action(Underpost.repo.pull);
63
+
64
+ // 'cmt' command: Commit changes to a GitHub repository
65
+ program
66
+ .command('cmt')
67
+ .argument('<path>', 'The absolute or relative directory path of the repository.')
68
+ .argument(`<commit-type>`, `The type of commit to perform. Options: ${Object.keys(commitData).join(', ')}.`)
69
+ .argument(`[module-tag]`, 'Optional: Sets a specific module tag for the commit.')
70
+ .argument(`[message]`, 'Optional: Provides an additional custom message for the commit.')
71
+ .option('--empty', 'Allows committing with empty files.')
72
+ .option('--copy', 'Copies the generated commit message to the clipboard.')
73
+ .option('--info', 'Displays information about available commit types.')
74
+ .description('Manages commits to a GitHub repository, supporting various commit types and options.')
75
+ .action(Underpost.repo.commit);
76
+
77
+ // 'push' command: Push changes to a GitHub repository
78
+ program
79
+ .command('push')
80
+ .argument('<path>', 'The absolute or relative directory path of the repository.')
81
+ .argument(`<uri>`, 'The URI of the GitHub repository (e.g., "username/repository").')
82
+ .option('-f', 'Forces the push, overwriting the remote repository history.')
83
+ .option('-g8', 'Uses the g8 repository extension for pushing.')
84
+ .description('Pushes committed changes from a local repository to a remote GitHub repository.')
85
+ .action(Underpost.repo.push);
86
+
87
+ // 'env' command: Manage environment variables
88
+ program
89
+ .command('env')
90
+ .argument(
91
+ '[deploy-id]',
92
+ `The deployment configuration ID. Use 'clean' to restore default environment settings. User 'root' to load root env. User 'current' to get plain current deploy Id.`,
93
+ )
94
+ .argument('[env]', 'Optional: The environment to set (e.g., "production", "development"). Defaults to "production".')
95
+ .argument('[subConf]', 'Optional: The sub configuration to set.')
96
+ .description('Sets environment variables and configurations related to a specific deployment ID.')
97
+ .action((deployId, env, subConf) => {
98
+ if (fs.existsSync(`./engine-private/conf/${deployId}/.env.${env}`))
99
+ dotenv.config({ path: `./engine-private/conf/${deployId}/.env.${env}`, override: true });
100
+ else if (deployId === 'root') {
101
+ deployId = UnderpostRootEnv.API.get('DEPLOY_ID');
102
+ } else dotenv.config({ path: `./.env`, override: true });
103
+
104
+ loadConf(deployId, subConf);
105
+ });
106
+
107
+ // 'config' command: Manage Underpost configurations
108
+ program
109
+ .command('config')
110
+ .argument('operator', `The configuration operation to perform. Options: ${Object.keys(Underpost.env).join(', ')}.`)
111
+ .argument('[key]', 'Optional: The specific configuration key to manage.')
112
+ .argument('[value]', 'Optional: The value to set for the configuration key.')
113
+ .option('--plain', 'Prints the configuration value in plain text.')
114
+ .description(`Manages Underpost configurations using various operators.`)
115
+ .action((...args) => Underpost.env[args[0]](args[1], args[2], args[3]));
116
+
117
+ // 'root' command: Get npm root path
118
+ program
119
+ .command('root')
120
+ .description('Displays the root path of the npm installation.')
121
+ .action(() => console.log(getNpmRootPath()));
122
+
123
+ // 'cluster' command: Manage Kubernetes clusters
124
+ program
125
+ .command('cluster')
126
+ .argument('[pod-name]', 'Optional: Filters information by a specific pod name.')
127
+ .option('--reset', `Deletes all clusters and prunes all related data and caches.`)
128
+ .option('--mariadb', 'Initializes the cluster with a MariaDB statefulset.')
129
+ .option('--mysql', 'Initializes the cluster with a MySQL statefulset.')
130
+ .option('--mongodb', 'Initializes the cluster with a MongoDB statefulset.')
131
+ .option('--mongo-db-host <host>', 'Set custom mongo db host')
132
+ .option('--postgresql', 'Initializes the cluster with a PostgreSQL statefulset.')
133
+ .option('--mongodb4', 'Initializes the cluster with a MongoDB 4.4 service.')
134
+ .option('--valkey', 'Initializes the cluster with a Valkey service.')
135
+ .option('--contour', 'Initializes the cluster with Project Contour base HTTPProxy and Envoy.')
136
+ .option('--cert-manager', "Initializes the cluster with a Let's Encrypt production ClusterIssuer.")
137
+ .option('--dedicated-gpu', 'Initializes the cluster with dedicated GPU base resources and environment settings.')
138
+ .option('--info', 'Retrieves information about all deployed Kubernetes objects.')
139
+ .option('--full', 'Initializes the cluster with all available statefulsets and services.')
140
+ .option('--ns-use <ns-name>', 'Switches the current Kubernetes context to the specified namespace.')
141
+ .option('--kubeadm', 'Initializes the cluster using kubeadm for control plane management.')
142
+ .option('--grafana', 'Initializes the cluster with a Grafana deployment.')
143
+ .option(
144
+ '--prom [hosts]',
145
+ 'Initializes the cluster with a Prometheus Operator deployment and monitor scrap for specified hosts.',
146
+ )
147
+ .option('--dev', 'Initializes a development-specific cluster configuration.')
148
+ .option('--list-pods', 'Displays detailed information about all pods.')
149
+ .option('--info-capacity', 'Displays the current total machine capacity information.')
150
+ .option('--info-capacity-pod', 'Displays the current machine capacity information per pod.')
151
+ .option('--pull-image', 'Sets an optional associated image to pull during initialization.')
152
+ .option('--init-host', 'Installs necessary Kubernetes node CLI tools (e.g., kind, kubeadm, docker, podman, helm).')
153
+ .option('--uninstall-host', 'Uninstalls all host components installed by init-host.')
154
+ .option('--config', 'Sets the base Kubernetes node configuration.')
155
+ .option('--worker', 'Sets the context for a worker node.')
156
+ .option('--chown', 'Sets the appropriate ownership for Kubernetes kubeconfig files.')
157
+ .option('--k3s', 'Initializes the cluster using K3s (Lightweight Kubernetes).')
158
+ .action(Underpost.cluster.init)
159
+ .description('Manages Kubernetes clusters, defaulting to Kind cluster initialization.');
160
+
161
+ // 'deploy' command: Manage deployments
162
+ program
163
+ .command('deploy')
164
+ .argument('[deploy-list]', 'A comma-separated list of deployment IDs (e.g., "default-a,default-b").')
165
+ .argument(
166
+ '[env]',
167
+ 'Optional: The environment for deployment (e.g., "development", "production"). Defaults to "development".',
168
+ )
169
+ .option('--remove', 'Deletes specified deployments and their associated services.')
170
+ .option('--sync', 'Synchronizes deployment environment variables, ports, and replica counts.')
171
+ .option('--info-router', 'Displays the current router structure and configuration.')
172
+ .option('--expose', 'Exposes services matching the provided deployment ID list.')
173
+ .option('--info-util', 'Displays useful `kubectl` utility management commands.')
174
+ .option('--cert', 'Resets TLS/SSL certificate secrets for deployments.')
175
+ .option('--cert-hosts <hosts>', 'Resets TLS/SSL certificate secrets for specified hosts.')
176
+ .option('--node <node>', 'Sets optional node for deployment operations.')
177
+ .option(
178
+ '--build-manifest',
179
+ 'Builds Kubernetes YAML manifests, including deployments, services, proxies, and secrets.',
180
+ )
181
+ .option('--replicas <replicas>', 'Sets a custom number of replicas for deployments.')
182
+ .option('--image <image>', 'Sets a custom image for deployments.')
183
+ .option('--versions <deployment-versions>', 'A comma-separated list of custom deployment versions.')
184
+ .option('--traffic <traffic-versions>', 'A comma-separated list of custom deployment traffic weights.')
185
+ .option('--disable-update-deployment', 'Disables updates to deployments.')
186
+ .option('--info-traffic', 'Retrieves traffic configuration from current resource deployments.')
187
+ .option('--kubeadm', 'Enables the kubeadm context for deployment operations.')
188
+ .option('--etc-hosts', 'Enables the etc-hosts context for deployment operations.')
189
+ .option('--restore-hosts', 'Restores default `/etc/hosts` entries.')
190
+ .description('Manages application deployments, defaulting to deploying development pods.')
191
+ .action(Underpost.deploy.callback);
192
+
193
+ // 'secret' command: Manage secrets
194
+ program
195
+ .command('secret')
196
+ .argument('<platform>', `The secret management platform. Options: ${Object.keys(Underpost.secret).join(', ')}.`)
197
+ .option('--init', 'Initializes the secrets platform environment.')
198
+ .option('--create-from-file <path-env-file>', 'Creates secrets from a specified environment file.')
199
+ .option('--list', 'Lists all available secrets for the platform.')
200
+ .description(`Manages secrets for various platforms.`)
201
+ .action((...args) => {
202
+ if (args[1].createFromFile) return Underpost.secret[args[0]].createFromEnvFile(args[1].createFromFile);
203
+ if (args[1].list) return Underpost.secret[args[0]].list();
204
+ if (args[1].init) return Underpost.secret[args[0]].init();
205
+ });
206
+
207
+ // 'dockerfile-image-build' command: Build Docker images from Dockerfiles
208
+ program
209
+ .command('dockerfile-image-build')
210
+ .option('--path [path]', 'The path to the Dockerfile directory.')
211
+ .option('--image-name [image-name]', 'Sets a custom name for the Docker image.')
212
+ .option('--image-path [image-path]', 'Sets the output path for the tar image archive.')
213
+ .option('--dockerfile-name [dockerfile-name]', 'Sets a custom name for the Dockerfile.')
214
+ .option('--podman-save', 'Exports the built image as a tar file using Podman.')
215
+ .option('--kind-load', 'Imports the tar image into a Kind cluster.')
216
+ .option('--kubeadm-load', 'Imports the tar image into a Kubeadm cluster.')
217
+ .option('--secrets', 'Includes Dockerfile environment secrets during the build.')
218
+ .option('--secrets-path [secrets-path]', 'Specifies a custom path for Dockerfile environment secrets.')
219
+ .option('--reset', 'Performs a build without using the cache.')
220
+ .option('--k3s-load', 'Loads the image into a K3s cluster.')
221
+ .description(
222
+ 'Builds a Docker image from a specified Dockerfile with various options for naming, saving, and loading.',
223
+ )
224
+ .action(Underpost.image.dockerfile.build);
225
+
226
+ // 'dockerfile-pull-base-images' command: Pull base Dockerfile images
227
+ program
228
+ .command('dockerfile-pull-base-images')
229
+ .option('--path [path]', 'The path to the Dockerfile directory.')
230
+ .option('--kind-load', 'Imports the pulled image into a Kind cluster.')
231
+ .option('--kubeadm-load', 'Imports the pulled image into a Kubeadm cluster.')
232
+ .option('--version', 'Sets a custom version for the base images.')
233
+ .option('--k3s-load', 'Loads the image into a K3s cluster.')
234
+ .description('Pulls required Underpost Dockerfile base images and optionally loads them into clusters.')
235
+ .action(Underpost.image.dockerfile.pullBaseImages);
236
+
237
+ // 'install' command: Fast import npm dependencies
238
+ program
239
+ .command('install')
240
+ .description('Quickly imports Underpost npm dependencies by copying them.')
241
+ .action(() => {
242
+ fs.copySync(`${underpostRootPath}/node_modules`, './node_modules');
243
+ });
244
+
245
+ // 'db' command: Manage databases
246
+ program
247
+ .command('db')
248
+ .argument('<deploy-list>', 'A comma-separated list of deployment IDs (e.g., "default-a,default-b").')
249
+ .option('--import', 'Imports container backups from specified repositories.')
250
+ .option('--export', 'Exports container backups to specified repositories.')
251
+ .option('--pod-name <pod-name>', 'Optional: Specifies the pod context for database operations.')
252
+ .option('--collections <collections>', 'A comma-separated list of database collections to operate on.')
253
+ .option('--out-path <out-path>', 'Specifies a custom output path for backups.')
254
+ .option('--drop', 'Drops the specified databases or collections.')
255
+ .option('--preserveUUID', 'Preserves UUIDs during database operations.')
256
+ .option('--git', 'Uploads database backups to GitHub.')
257
+ .option('--hosts <hosts>', 'A comma-separated list of database hosts.')
258
+ .option('--paths <paths>', 'A comma-separated list of paths for database files.')
259
+ .option('--ns <ns-name>', 'Optional: Specifies the namespace context for database operations.')
260
+ .description('Manages database operations, including import, export, and collection management.')
261
+ .action(Underpost.db.callback);
262
+
263
+ program
264
+ .command('metadata')
265
+ .argument('[deploy-id]', 'The deployment ID to manage metadata.')
266
+ .argument('[host]', 'The host to manage metadata.')
267
+ .argument('[path]', 'The path to manage metadata.')
268
+ .option('--import', 'Imports from local storage.')
269
+ .option('--export', 'Exports to local storage.')
270
+ .option('--crons', 'Apply to cron data collection')
271
+ .option('--instances', 'Apply to instance data collection')
272
+ .option('--generate', 'Generate cluster metadata')
273
+ .option('--itc', 'Apply under container execution context')
274
+ .description('Manages cluster metadata operations, including import and export.')
275
+ .action(Underpost.db.clusterMetadataBackupCallback);
276
+
277
+ // 'script' command: Execute scripts
278
+ program
279
+ .command('script')
280
+ .argument('operator', `The script operation to perform. Options: ${Object.keys(Underpost.script).join(', ')}.`)
281
+ .argument('<script-name>', 'The name of the script to execute.')
282
+ .argument('[script-value]', 'Optional: A literal command or a path to a script file.')
283
+ .option('--itc', 'Executes the script within the container execution context.')
284
+ .option('--itc-path', 'Specifies container path options for script execution.')
285
+ .option('--ns <ns-name>', 'Optional: Specifies the namespace context for script execution.')
286
+ .option('--pod-name <pod-name>', 'Optional: Specifies the pod name for script execution.')
287
+ .description(
288
+ 'Supports a variety of built-in Underpost global scripts, their preset lifecycle events, and arbitrary custom scripts.',
289
+ )
290
+ .action((...args) => Underpost.script[args[0]](args[1], args[2], args[3]));
291
+
292
+ // 'cron' command: Manage cron jobs
293
+ program
294
+ .command('cron')
295
+ .argument('[deploy-list]', 'A comma-separated list of deployment IDs (e.g., "default-a,default-b").')
296
+ .argument(
297
+ '[job-list]',
298
+ `A comma-separated list of job IDs. Options: ${Object.keys(Underpost.cron).join(
299
+ ', ',
300
+ )}. Defaults to all available jobs.`,
301
+ )
302
+ .option('--itc', 'Executes cron jobs within the container execution context.')
303
+ .option('--init', 'Initializes cron jobs for the default deployment ID.')
304
+ .option('--git', 'Uploads cron job configurations to GitHub.')
305
+ .description('Manages cron jobs, including initialization, execution, and configuration updates.')
306
+ .action(Underpost.cron.callback);
307
+
308
+ // 'fs' command: File storage management
309
+ program
310
+ .command('fs')
311
+ .argument('[path]', 'The absolute or relative directory path for file operations.')
312
+ .option('--rm', 'Removes the specified file.')
313
+ .option('--git', 'Displays current Git changes related to file storage.')
314
+ .option('--recursive', 'Uploads files recursively from the specified path.')
315
+ .option('--deploy-id <deploy-id>', 'Specifies the deployment configuration ID for file operations.')
316
+ .option('--pull', 'Downloads the specified file.')
317
+ .option('--force', 'Forces the action, overriding any warnings or conflicts.')
318
+ .option('--storage-file-path <storage-file-path>', 'Specifies a custom file storage path.')
319
+ .description('Manages file storage, defaulting to file upload operations.')
320
+ .action(Underpost.fs.callback);
321
+
322
+ // 'test' command: Manage tests
323
+ program
324
+ .command('test')
325
+ .argument('[deploy-list]', 'A comma-separated list of deployment IDs (e.g., "default-a,default-b").')
326
+ .description('Manages and runs tests, defaulting to the current Underpost default test suite.')
327
+ .option('--itc', 'Executes tests within the container execution context.')
328
+ .option('--sh', 'Copies the container entrypoint shell command to the clipboard.')
329
+ .option('--logs', 'Displays container logs for test debugging.')
330
+ .option('--pod-name <pod-name>', 'Optional: Specifies the pod name for test execution.')
331
+ .option('--pod-status <pod-status>', 'Optional: Filters tests by pod status.')
332
+ .option('--kind-type <kind-type>', 'Optional: Specifies the Kind cluster type for tests.')
333
+ .action(Underpost.test.callback);
334
+
335
+ // 'monitor' command: Monitor health server
336
+ program
337
+ .command('monitor')
338
+ .argument('<deploy-id>', 'The deployment configuration ID to monitor.')
339
+ .argument(
340
+ '[env]',
341
+ 'Optional: The environment to monitor (e.g., "development", "production"). Defaults to "development".',
342
+ )
343
+ .option('--ms-interval <ms-interval>', 'Sets a custom millisecond interval for monitoring checks.')
344
+ .option('--now', 'Executes the monitor script immediately.')
345
+ .option('--single', 'Disables recurrence, running the monitor script only once.')
346
+ .option('--replicas <replicas>', 'Sets a custom number of replicas for monitoring.')
347
+ .option('--type <type>', 'Sets a custom monitor type.')
348
+ .option('--sync', 'Synchronizes with current proxy deployments and traffic configurations.')
349
+ .description('Manages health server monitoring for specified deployments.')
350
+ .action(Underpost.monitor.callback);
351
+
352
+ // 'ssh' command: SSH management
353
+ program
354
+ .command('ssh')
355
+ .option('--generate', 'Generates new ssh credential and stores it in current private keys file storage.')
356
+ .description('Import and start ssh server and client based on current default deployment ID.')
357
+ .action(Underpost.ssh.callback);
358
+
359
+ // 'run' command: Run a script
360
+ program
361
+ .command('run')
362
+ .argument('<runner-id>', `The runner ID to run. Options: ${Object.keys(UnderpostRun.RUNNERS).join(', ')}.`)
363
+ .argument('[path]', 'The absolute or relative directory path where the script is located.')
364
+ .option('--command <command-array>', 'Array of commands to run.')
365
+ .option('--args <args-array>', 'Array of arguments to pass to the command.')
366
+ .option('--dev', 'Sets the development context environment for the script.')
367
+ .option('--build', 'Set builder context runner')
368
+ .option('--replicas <replicas>', 'Sets a custom number of replicas for deployment.')
369
+ .option('--pod-name <pod-name>', 'Optional: Specifies the pod name for test execution.')
370
+ .option('--volume-host-path <volume-host-path>', 'Optional: Specifies the volume host path for test execution.')
371
+ .option('--volume-mount-path <volume-mount-path>', 'Optional: Specifies the volume mount path for test execution.')
372
+ .option('--volume-type <volume-type>', 'Optional: Specifies the volume type for test execution.')
373
+ .option('--image-name <image-name>', 'Optional: Specifies the image name for test execution.')
374
+ .option('--container-name <container-name>', 'Optional: Specifies the container name for test execution.')
375
+ .option('--namespace <namespace>', 'Optional: Specifies the namespace for test execution.')
376
+ .option('--kubeadm', 'Flag to indicate Kubeadm cluster type context')
377
+ .option('--k3s', 'Flag to indicate K3s cluster type context')
378
+ .description('Runs a script from the specified path.')
379
+ .action(UnderpostRun.API.callback);
380
+
381
+ // 'lxd' command: LXD management
382
+ program
383
+ .command('lxd')
384
+ .option('--init', 'Initializes LXD on the current machine.')
385
+ .option('--reset', 'Resets LXD on the current machine, deleting all configurations.')
386
+ .option('--install', 'Installs LXD on the current machine.')
387
+ .option('--dev', 'Sets the development context environment for LXD.')
388
+ .option('--create-virtual-network', 'Creates an LXD virtual network bridge.')
389
+ .option('--create-admin-profile', 'Creates an admin profile for LXD management.')
390
+ .option('--control', 'Sets the context for a control node VM.')
391
+ .option('--worker', 'Sets the context for a worker node VM.')
392
+ .option('--create-vm <vm-id>', 'Creates default virtual machines with the specified ID.')
393
+ .option('--init-vm <vm-id>', 'Retrieves the Underpost initialization script for the specified VM.')
394
+ .option('--info-vm <vm-id>', 'Retrieves all information about the specified VM.')
395
+ .option('--test <vm-id>', 'Tests the health, status, and network connectivity for a VM.')
396
+ .option('--root-size <gb-size>', 'Sets the root partition size (in GB) for the VM.')
397
+ .option('--k3s', 'Flag to indicate that the VM initialization is for a K3s cluster type.')
398
+ .option(
399
+ '--join-node <nodes>',
400
+ 'A comma-separated list of worker and control nodes to join (e.g., "k8s-worker-1,k8s-control").',
401
+ )
402
+ .option(
403
+ '--expose <vm-name-ports>',
404
+ 'Exposes specified ports on a VM (e.g., "k8s-control:80,443"). Multiple VM-port pairs can be comma-separated.',
405
+ )
406
+ .option(
407
+ '--delete-expose <vm-name-ports>',
408
+ 'Removes exposed ports on a VM (e.g., "k8s-control:80,443"). Multiple VM-port pairs can be comma-separated.',
409
+ )
410
+ .option('--auto-expose-k8s-ports <vm-id>', 'Automatically exposes common Kubernetes ports for the specified VM.')
411
+ .description('Manages LXD containers and virtual machines.')
412
+ .action(UnderpostLxd.API.callback);
413
+
414
+ // 'baremetal' command: Baremetal server management
415
+ program
416
+ .command('baremetal [workflow-id] [hostname] [ip-address]')
417
+ .option('--control-server-install', 'Installs the baremetal control server.')
418
+ .option('--control-server-uninstall', 'Uninstalls the baremetal control server.')
419
+ .option('--control-server-db-install', 'Installs up the database for the baremetal control server.')
420
+ .option('--control-server-db-uninstall', 'Uninstalls the database for the baremetal control server.')
421
+ .option('--commission', 'Init workflow for commissioning a physical machine.')
422
+ .option('--nfs-build', 'Builds an NFS root filesystem for a workflow id config architecture using QEMU emulation.')
423
+ .option('--nfs-mount', 'Mounts the NFS root filesystem for a workflow id config architecture.')
424
+ .option('--nfs-unmount', 'Unmounts the NFS root filesystem for a workflow id config architecture.')
425
+ .option('--nfs-sh', 'Copies QEMU emulation root entrypoint shell command to the clipboard.')
426
+ .option('--cloud-init-update', 'Updates cloud init for a workflow id config architecture.')
427
+ .option('--cloud-init-reset', 'Resets cloud init for a workflow id config architecture.')
428
+ .option('--logs <log-id>', 'Displays logs for log id: dhcp, cloud, machine, cloud-config.')
429
+ .option('--dev', 'Sets the development context environment for baremetal operations.')
430
+ .option('--ls', 'Lists available boot resources and machines.')
431
+ .description(
432
+ 'Manages baremetal server operations, including installation, database setup, commissioning, and user management.',
433
+ )
434
+ .action(UnderpostBaremetal.API.callback);
435
+
436
+ export { program };