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,70 @@
1
+ import mongoose from 'mongoose';
2
+ import { loggerFactory } from '../../server/logger.js';
3
+ import { getCapVariableName } from '../../client/components/core/CommonJs.js';
4
+
5
+ /**
6
+ * Module for connecting to and loading models for a MongoDB database using Mongoose.
7
+ * @module src/db/MongooseDB.js
8
+ * @namespace MongooseDBNamespace
9
+ */
10
+
11
+ const logger = loggerFactory(import.meta);
12
+
13
+ /**
14
+ * @class
15
+ * @alias MongooseDBService
16
+ * @memberof MongooseDBNamespace
17
+ * @classdesc Manages the Mongoose connection lifecycle and dynamic loading of database models
18
+ * based on API configuration.
19
+ */
20
+ class MongooseDBService {
21
+ /**
22
+ * Establishes a Mongoose connection to the specified MongoDB instance.
23
+ *
24
+ * @async
25
+ * @param {string} host - The MongoDB host (e.g., 'mongodb://localhost:27017').
26
+ * @param {string} name - The database name.
27
+ * @returns {Promise<mongoose.Connection>} A promise that resolves to the established Mongoose connection object.
28
+ */
29
+ async connect(host, name) {
30
+ const uri = `${host}/${name}`;
31
+ logger.info('MongooseDB connect', { host, name, uri });
32
+ return await mongoose
33
+ .createConnection(uri, {
34
+ // Options like useNewUrlParser and useUnifiedTopology are often set here.
35
+ })
36
+ .asPromise();
37
+ }
38
+
39
+ /**
40
+ * Dynamically loads Mongoose models for a list of APIs and binds them to the given connection.
41
+ *
42
+ * @async
43
+ * @param {object} [options] - Options for model loading.
44
+ * @param {Array<string>} [options.apis=['test']] - List of API names (folders) to load models from.
45
+ * @param {mongoose.Connection} [options.conn=new mongoose.Connection()] - The active Mongoose connection.
46
+ * @returns {Promise<object>} A promise that resolves to an object map of loaded Mongoose models.
47
+ */
48
+ async loadModels(options = { apis: ['test'], conn: new mongoose.Connection() }) {
49
+ const { conn, apis } = options;
50
+ const models = {};
51
+ for (const api of apis) {
52
+ // Dynamic import of the model file
53
+ const { ProviderSchema } = await import(`../../api/${api}/${api}.model.js`);
54
+ const keyModel = getCapVariableName(api); // Assuming this returns a capitalized model name
55
+ models[keyModel] = conn.model(keyModel, ProviderSchema);
56
+ }
57
+
58
+ return models;
59
+ }
60
+ }
61
+
62
+ /**
63
+ * Singleton instance of the MongooseDBService class for backward compatibility.
64
+ * @alias MongooseDB
65
+ * @memberof MongooseDBNamespace
66
+ * @type {MongooseDBService}
67
+ */
68
+ const MongooseDB = new MongooseDBService();
69
+
70
+ export { MongooseDB, MongooseDBService as MongooseDBClass };
package/src/index.js ADDED
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Underpost index npm package
3
+ * @module src/index.js
4
+ * @namespace Underpost
5
+ */
6
+
7
+ import UnderpostBaremetal from './cli/baremetal.js';
8
+ import UnderpostCloudInit from './cli/cloud-init.js';
9
+ import UnderpostCluster from './cli/cluster.js';
10
+ import UnderpostCron from './cli/cron.js';
11
+ import UnderpostDB from './cli/db.js';
12
+ import UnderpostDeploy from './cli/deploy.js';
13
+ import UnderpostRootEnv from './cli/env.js';
14
+ import UnderpostFileStorage from './cli/fs.js';
15
+ import UnderpostImage from './cli/image.js';
16
+ import UnderpostLxd from './cli/lxd.js';
17
+ import UnderpostMonitor from './cli/monitor.js';
18
+ import UnderpostRepository from './cli/repository.js';
19
+ import UnderpostRun from './cli/run.js';
20
+ import UnderpostScript from './cli/script.js';
21
+ import UnderpostSecret from './cli/secrets.js';
22
+ import UnderpostSSH from './cli/ssh.js';
23
+ import UnderpostTest from './cli/test.js';
24
+ import UnderpostStartUp from './server/start.js';
25
+
26
+ /**
27
+ * Underpost main module methods
28
+ * @class Underpost
29
+ * @memberof Underpost
30
+ */
31
+ class Underpost {
32
+ /**
33
+ * Underpost engine version
34
+ * @static
35
+ * @type {String}
36
+ * @memberof Underpost
37
+ */
38
+ static version = 'v2.8.885';
39
+ /**
40
+ * Repository cli API
41
+ * @static
42
+ * @type {UnderpostRepository.API}
43
+ * @memberof Underpost
44
+ */
45
+ static repo = UnderpostRepository.API;
46
+ /**
47
+ * Root Env cli API
48
+ * @static
49
+ * @type {UnderpostRootEnv.API}
50
+ * @memberof Underpost
51
+ */
52
+ static env = UnderpostRootEnv.API;
53
+ /**
54
+ * Test cli API
55
+ * @static
56
+ * @type {UnderpostTest.API}
57
+ * @memberof Underpost
58
+ */
59
+ static test = UnderpostTest.API;
60
+ /**
61
+ * Underpost Start Up cli API
62
+ * @static
63
+ * @type {UnderpostStartUp.API}
64
+ * @memberof Underpost
65
+ */
66
+ static start = UnderpostStartUp.API;
67
+ /**
68
+ * Cluster cli API
69
+ * @static
70
+ * @type {UnderpostCluster.API}
71
+ * @memberof Underpost
72
+ */
73
+ static cluster = UnderpostCluster.API;
74
+ /**
75
+ * Image cli API
76
+ * @static
77
+ * @type {UnderpostImage.API}
78
+ * @memberof Underpost
79
+ */
80
+ static image = UnderpostImage.API;
81
+ /**
82
+ * Secrets cli API
83
+ * @static
84
+ * @type {UnderpostSecret.API}
85
+ * @memberof Underpost
86
+ */
87
+ static secret = UnderpostSecret.API;
88
+ /**
89
+ * Scripts cli API
90
+ * @static
91
+ * @type {UnderpostScript.API}
92
+ * @memberof Underpost
93
+ */
94
+ static script = UnderpostScript.API;
95
+ /**
96
+ * Database cli API
97
+ * @static
98
+ * @type {UnderpostDB.API}
99
+ * @memberof Underpost
100
+ */
101
+ static db = UnderpostDB.API;
102
+ /**
103
+ * Deployment cli API
104
+ * @static
105
+ * @type {UnderpostDeploy.API}
106
+ * @memberof Underpost
107
+ */
108
+ static deploy = UnderpostDeploy.API;
109
+ /**
110
+ * Cron cli API
111
+ * @static
112
+ * @type {UnderpostCron.API}
113
+ * @memberof Underpost
114
+ */
115
+ static cron = UnderpostCron.API;
116
+ /**
117
+ * File Storage cli API
118
+ * @static
119
+ * @type {UnderpostFileStorage.API}
120
+ * @memberof Underpost
121
+ */
122
+ static fs = UnderpostFileStorage.API;
123
+ /**
124
+ * Monitor cli API
125
+ * @static
126
+ * @type {UnderpostMonitor.API}
127
+ * @memberof Underpost
128
+ */
129
+ static monitor = UnderpostMonitor.API;
130
+ /**
131
+ * SSH cli API
132
+ * @static
133
+ * @type {UnderpostSSH.API}
134
+ * @memberof Underpost
135
+ */
136
+ static ssh = UnderpostSSH.API;
137
+ /**
138
+ * LXD cli API
139
+ * @static
140
+ * @type {UnderpostLxd.API}
141
+ * @memberof Underpost
142
+ */
143
+ static lxd = UnderpostLxd.API;
144
+
145
+ /**
146
+ * Cloud Init cli API
147
+ * @static
148
+ * @type {UnderpostCloudInit.API}
149
+ * @memberof Underpost
150
+ */
151
+ static cloudInit = UnderpostCloudInit.API;
152
+
153
+ /**
154
+ * Run cli API
155
+ * @static
156
+ * @type {UnderpostRun.API}
157
+ * @memberof Underpost
158
+ */
159
+ static run = UnderpostRun.API;
160
+
161
+ /**
162
+ * Baremetal cli API
163
+ * @static
164
+ * @type {UnderpostBaremetal.API}
165
+ * @memberof Underpost
166
+ */
167
+ static baremetal = UnderpostBaremetal.API;
168
+ }
169
+
170
+ const up = Underpost;
171
+
172
+ const underpost = Underpost;
173
+
174
+ export {
175
+ underpost,
176
+ up,
177
+ Underpost,
178
+ UnderpostBaremetal,
179
+ UnderpostCloudInit,
180
+ UnderpostCluster,
181
+ UnderpostCron,
182
+ UnderpostDB,
183
+ UnderpostDeploy,
184
+ UnderpostRootEnv,
185
+ UnderpostFileStorage,
186
+ UnderpostImage,
187
+ UnderpostLxd,
188
+ UnderpostMonitor,
189
+ UnderpostRepository,
190
+ UnderpostRun,
191
+ UnderpostScript,
192
+ UnderpostSecret,
193
+ UnderpostSSH,
194
+ UnderpostTest,
195
+ UnderpostStartUp,
196
+ };
197
+
198
+ export default Underpost;
@@ -0,0 +1,116 @@
1
+ import { ssrFactory } from '../server/ssr.js';
2
+
3
+ /**
4
+ * Module for handling the rendering and styling of HTML emails using SSR components.
5
+ * @module src/mailer/EmailRender.js
6
+ * @namespace EmailRenderNamespace
7
+ */
8
+
9
+ /**
10
+ * @class
11
+ * @alias EmailRenderService
12
+ * @memberof EmailRenderNamespace
13
+ * @classdesc Utility class for managing CSS styles and rendering email templates using
14
+ * Server-Side Rendering (SSR) components.
15
+ */
16
+ class EmailRenderService {
17
+ /**
18
+ * Defines the base CSS styles for different elements within the email template.
19
+ * Keys are CSS selectors (or class names), and values are objects of CSS properties.
20
+ * @type {object.<string, object.<string, string>>}
21
+ * @property {object} body - Styles for the main email body wrapper.
22
+ * @property {object} .container - Styles for the main content container.
23
+ * @property {object} h1 - Styles for primary headings.
24
+ * @property {object} p - Styles for standard paragraphs.
25
+ * @property {object} button - Styles for call-to-action buttons.
26
+ * @property {object} .footer - Styles for the email footer.
27
+ */
28
+ style = {
29
+ body: {
30
+ 'font-family': 'Arial, sans-serif',
31
+ 'background-color': '#f4f4f4',
32
+ margin: 0,
33
+ padding: '20px',
34
+ 'min-height': '300px',
35
+ width: '100%',
36
+ 'max-width': '700px',
37
+ display: 'block',
38
+ },
39
+ '.container': {
40
+ 'max-width': '600px',
41
+ margin: '0 auto',
42
+ 'background-color': '#ffffff',
43
+ padding: '20px',
44
+ 'border-radius': '5px',
45
+ // 'box-shadow': '0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)',
46
+ },
47
+ h1: {
48
+ 'font-size': '24px',
49
+ 'margin-bottom': '20px',
50
+ color: '#333333',
51
+ },
52
+ p: {
53
+ 'font-size': '16px',
54
+ 'line-height': 1.5,
55
+ 'margin-bottom': '20px',
56
+ color: '#666666',
57
+ },
58
+ button: {
59
+ display: 'inline-block',
60
+ padding: '10px 20px',
61
+ 'background-color': '#007bff',
62
+ color: '#ffffff',
63
+ 'text-decoration': 'none',
64
+ 'border-radius': '5px',
65
+ 'font-size': '16px',
66
+ },
67
+ '.footer': {
68
+ 'text-align': 'center',
69
+ padding: '20px',
70
+ 'font-size': '14px',
71
+ color: '#999999',
72
+ },
73
+ };
74
+
75
+ /**
76
+ * Converts a style object defined in the `this.style` property into a CSS style string.
77
+ *
78
+ * @param {string} classObj - The key corresponding to a style object in `this.style`.
79
+ * @returns {string} A string containing inline CSS properties (e.g., ` property: value;`).
80
+ */
81
+ renderStyle(classObj) {
82
+ if (!this.style[classObj]) return '';
83
+ return Object.keys(this.style[classObj])
84
+ .map((classKey) => ` ${classKey}: ${this.style[classObj][classKey]};`)
85
+ .join(``);
86
+ }
87
+
88
+ /**
89
+ * Loads and renders email templates using the SSR factory.
90
+ *
91
+ * @async
92
+ * @param {object} [options] - Options containing the template names.
93
+ * @param {object.<string, string>} [options.templates={}] - Map of template keys to their SSR component file names.
94
+ * @returns {Promise<object.<string, string>>} A promise that resolves to an object map of rendered HTML email strings.
95
+ */
96
+ async getTemplates(options = { templates: {} }) {
97
+ const templates = {};
98
+ for (const templateKey of Object.keys(options.templates)) {
99
+ const ssrEmailComponent = options.templates[templateKey];
100
+ // Note: ssrFactory is assumed to load and return a functional component/function
101
+ const SrrComponent = await ssrFactory(`./src/client/ssr/mailer/${ssrEmailComponent}.js`);
102
+ templates[templateKey] = SrrComponent(this, options);
103
+ }
104
+ return templates;
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Singleton instance of the EmailRenderService class for backward compatibility.
110
+ * @alias EmailRender
111
+ * @memberof EmailRenderNamespace
112
+ * @type {EmailRenderService}
113
+ */
114
+ const EmailRender = new EmailRenderService();
115
+
116
+ export { EmailRender, EmailRenderService as EmailRenderClass };
@@ -0,0 +1,213 @@
1
+ import nodemailer from 'nodemailer';
2
+ import { loggerFactory } from '../server/logger.js';
3
+ import { EmailRender } from './EmailRender.js';
4
+
5
+ /**
6
+ * Module for configuring and sending emails using Nodemailer.
7
+ * @module src/mailer/MailerProvider.js
8
+ * @namespace MailerProviderNamespace
9
+ */
10
+
11
+ const logger = loggerFactory(import.meta);
12
+
13
+ /**
14
+ * @typedef {object} MailerOptions
15
+ * @property {string} id - Unique identifier for the mailer configuration.
16
+ * @property {string} [meta='mailer'] - Meta identifier for logging/context.
17
+ * @property {object} sender - The default sender details.
18
+ * @property {string} sender.email - The default sender email address.
19
+ * @property {string} sender.name - The default sender name.
20
+ * @property {object} transport - Nodemailer transport configuration.
21
+ * @property {string} transport.host - SMTP host.
22
+ * @property {number} [transport.port=587] - SMTP port.
23
+ * @property {boolean} [transport.secure=false] - Use TLS (true for 465, false for other ports).
24
+ * @property {object} transport.auth - Authentication details.
25
+ * @property {string} transport.auth.user - Username.
26
+ * @property {string} transport.auth.pass - Password.
27
+ * @property {string} [host=''] - Application host for context.
28
+ * @property {string} [path=''] - Application path for context.
29
+ * @property {object.<string, string>} templates - Map of template keys to SSR component file names.
30
+ * @memberof MailerProviderNamespace
31
+ */
32
+
33
+ /**
34
+ * @class
35
+ * @alias MailerProviderService
36
+ * @memberof MailerProviderNamespace
37
+ * @classdesc Manages multiple Nodemailer transporter instances and handles loading of
38
+ * email templates and sending emails.
39
+ */
40
+ class MailerProviderService {
41
+ /**
42
+ * Internal storage for mailer instances (transporters, options, templates), keyed by ID.
43
+ * @type {object.<string, object>}
44
+ * @private
45
+ */
46
+ #instance = {};
47
+
48
+ /**
49
+ * Retrieves the internal instance storage for direct access (used for backward compatibility).
50
+ * @returns {object.<string, object>} The internal mailer instance map.
51
+ */
52
+ get instance() {
53
+ return this.#instance;
54
+ }
55
+
56
+ /**
57
+ * Loads and initializes a new mailer provider instance using Nodemailer.
58
+ * The created instance is stored internally and includes the transporter and rendered templates.
59
+ *
60
+ * @async
61
+ * @param {MailerOptions} [options] - Configuration options for the mailer instance.
62
+ * @returns {Promise<object|undefined>} A promise that resolves to the initialized mailer instance
63
+ * object, or `undefined` on error.
64
+ */
65
+ async load(
66
+ options = {
67
+ id: '',
68
+ meta: 'mailer',
69
+ sender: {
70
+ email: '',
71
+ name: '',
72
+ },
73
+ transport: {
74
+ host: '', // smtp host
75
+ port: 587,
76
+ secure: false, // true for 465, false for other ports
77
+ auth: {
78
+ user: '', // generated ethereal user
79
+ pass: '', // generated ethereal password
80
+ },
81
+ },
82
+ host: '',
83
+ path: '',
84
+ templates: {
85
+ userVerifyEmail: 'DefaultVerifyEmail',
86
+ userRecoverEmail: 'DefaultRecoverEmail',
87
+ },
88
+ },
89
+ ) {
90
+ try {
91
+ options.transport.tls = {
92
+ rejectUnauthorized: false, // allows self-signed certs for local/dev
93
+ };
94
+ const { id } = options;
95
+
96
+ const transporter = nodemailer.createTransport(options.transport);
97
+
98
+ this.#instance[id] = {
99
+ ...options,
100
+ transporter,
101
+ templates: await EmailRender.getTemplates(options),
102
+ translateTemplates: {
103
+ confirmEmail: {
104
+ H1: {
105
+ en: 'Confirm Your Email',
106
+ es: 'Confirma tu correo electrónico',
107
+ },
108
+ P1: {
109
+ en: `Email confirmed! Thanks.
110
+ <br />
111
+ <span style="font-size: 12px; color: gray">
112
+ If it is not automatically verified,
113
+ please allow the image to be seen, thank you.
114
+ </span>
115
+ `,
116
+ es: `Correo electrónico confirmado! Gracias.
117
+ <br />
118
+ <span style="font-size: 12px; color: gray">
119
+ Si no se verifica automáticamente, por favor permita que se vea la imagen, gracias.
120
+ </span>
121
+ `,
122
+ },
123
+ },
124
+ recoverEmail: {
125
+ H1: {
126
+ en: 'Recover your account',
127
+ es: 'Recupera tu cuenta',
128
+ },
129
+ P1: {
130
+ en: 'To recover your account, please click the button below:',
131
+ es: 'Para recuperar tu cuenta, haz click en el botón de abajo:',
132
+ },
133
+ BTN_LABEL: {
134
+ en: 'Recover Password',
135
+ es: 'Recuperar Contraseña',
136
+ },
137
+ },
138
+ },
139
+ };
140
+
141
+ return this.#instance[id];
142
+ } catch (error) {
143
+ logger.error(error, error.stack);
144
+ return undefined;
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Sends an email using a previously loaded transporter instance.
150
+ *
151
+ * @async
152
+ * @param {object} [options] - Options for sending the email.
153
+ * @param {string} options.id - The ID of the mailer instance/transporter to use.
154
+ * @param {object} options.sendOptions - Nodemailer mail options.
155
+ * @param {string} [options.sendOptions.from] - Sender address (defaults to loaded instance sender).
156
+ * @param {string} options.sendOptions.to - List of receivers (comma-separated).
157
+ * @param {string} options.sendOptions.subject - Subject line.
158
+ * @param {string} [options.sendOptions.text] - Plain text body.
159
+ * @param {string} [options.sendOptions.html] - HTML body.
160
+ * @returns {Promise<object|undefined>} A promise that resolves to the Nodemailer `info` object, or `undefined` on error.
161
+ */
162
+ async send(
163
+ options = {
164
+ id: '',
165
+ sendOptions: {
166
+ from: '"Fred Foo 👻" <foo@example.com>', // sender address
167
+ to: 'bar@example.com, baz@example.com', // list of receivers
168
+ subject: 'Hello ✔', // Subject line
169
+ text: 'Hello world?', // plain text body
170
+ html: '<b>Hello world?</b>', // html body
171
+ attachments: [
172
+ {
173
+ filename: 'logo.png',
174
+ path: `./logo.png`,
175
+ cid: 'logo', // <img src='cid:logo'>
176
+ },
177
+ ],
178
+ },
179
+ },
180
+ ) {
181
+ try {
182
+ const { id, sendOptions } = options;
183
+ const instance = this.#instance[id];
184
+
185
+ if (!instance) {
186
+ logger.error(`Mailer instance with ID '${id}' not loaded.`);
187
+ return undefined;
188
+ }
189
+
190
+ if (!sendOptions.from) sendOptions.from = `${instance.sender.name} <${instance.sender.email}>`;
191
+
192
+ // send mail with defined transport object
193
+ const info = await instance.transporter.sendMail(sendOptions);
194
+
195
+ // logger.info('Message sent', info);
196
+
197
+ return info;
198
+ } catch (error) {
199
+ logger.error(error, error.stack);
200
+ return undefined;
201
+ }
202
+ }
203
+ }
204
+
205
+ /**
206
+ * Singleton instance of the MailerProviderService class for backward compatibility.
207
+ * @alias MailerProvider
208
+ * @memberof MailerProviderNamespace
209
+ * @type {MailerProviderService}
210
+ */
211
+ const MailerProvider = new MailerProviderService();
212
+
213
+ export { MailerProvider, MailerProviderService as MailerProviderClass };
package/src/monitor.js ADDED
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ // https://nodejs.org/api
4
+ // https://expressjs.com/en/4x/api.html
5
+
6
+ import dotenv from 'dotenv';
7
+ import { loggerFactory } from './server/logger.js';
8
+ import { ProcessController } from './server/process.js';
9
+ import { getUnderpostRootPath } from './server/conf.js';
10
+ import fs from 'fs-extra';
11
+ import UnderpostMonitor from './cli/monitor.js';
12
+
13
+ const underpostRootPath = getUnderpostRootPath();
14
+ fs.existsSync(`${underpostRootPath}/.env`)
15
+ ? dotenv.config({ path: `${underpostRootPath}/.env`, override: true })
16
+ : dotenv.config();
17
+
18
+ const logger = loggerFactory(import.meta);
19
+
20
+ await logger.setUpInfo();
21
+
22
+ UnderpostMonitor.API.callback(process.argv[2], process.argv[3], { type: 'blue-green', sync: true });
23
+
24
+ ProcessController.init(logger);
package/src/proxy.js ADDED
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ // https://nodejs.org/api
4
+ // https://expressjs.com/en/4x/api.html
5
+
6
+ import dotenv from 'dotenv';
7
+ import { loggerFactory } from './server/logger.js';
8
+ import { buildProxy } from './server/proxy.js';
9
+ import { ProcessController } from './server/process.js';
10
+ import { Config } from './server/conf.js';
11
+
12
+ dotenv.config();
13
+
14
+ await Config.build();
15
+
16
+ const logger = loggerFactory(import.meta);
17
+
18
+ await logger.setUpInfo();
19
+
20
+ await buildProxy();
21
+
22
+ ProcessController.init(logger);