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,1010 @@
1
+ /**
2
+ * Common JavaScript functions
3
+ * @module src/client/components/core/CommonJs.js
4
+ * @namespace CommonJS
5
+ */
6
+
7
+ /**
8
+ * The function `s4` generates a random hexadecimal string with a length of 4 characters.
9
+ * @memberof CommonJS
10
+ */
11
+ const s4 = () => (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
12
+
13
+ /**
14
+ * The `range` function generates an array of numbers within a specified range, handling both ascending
15
+ * and descending ranges.
16
+ * @param start - The `start` parameter in the `range` function represents the starting value of the
17
+ * range you want to generate.
18
+ * @param end - The `end` parameter in the `range` function represents the ending value of the range
19
+ * that you want to generate.
20
+ * @returns The `range` function returns an array containing a range of numbers starting from the
21
+ * `start` value up to the `end` value (inclusive). If `end` is less than `start`, it will recursively
22
+ * call the `range` function with the arguments swapped and then reverse the resulting array.
23
+ * @memberof CommonJS
24
+ */
25
+ const range = (start, end) => {
26
+ return end < start
27
+ ? range(end, start).reverse()
28
+ : Array.apply(0, Array(end - start + 1)).map((element, index) => index + start);
29
+ };
30
+
31
+ /**
32
+ * The `getId` function generates a unique identifier based on an array of objects or keys.
33
+ * @param arr - The `arr` parameter in the `getId` function is an array of objects or an object. If it
34
+ * is an object, the function converts it into an array of objects where each object has a key
35
+ * specified by the `keyId` parameter.
36
+ * @param suffix - The `suffix` parameter in the `getId` function is a string that can be added to
37
+ * the generated ID. It is optional and by default is an empty string. You can provide a suffix to be
38
+ * appended to the generated ID if needed.
39
+ * @param keyId - The `keyId` parameter in the `getId` function is used to specify the key in the
40
+ * array elements that contains the unique identifier (ID) for each element. By default, the function
41
+ * assumes that the ID is stored in a property named `'id'`, but you can customize this by providing
42
+ * @returns The `getId` function returns a unique identifier `_id` based on the input array `arr`,
43
+ * optional `suffix`, and `keyId`.
44
+ * @memberof CommonJS
45
+ */
46
+ const getId = (arr, suffix = '', keyId = 'id') => {
47
+ if (!Array.isArray(arr) && typeof arr === 'object')
48
+ arr = Object.keys(arr).map((id) => {
49
+ const idElement = {};
50
+ idElement[keyId] = id;
51
+ return idElement;
52
+ });
53
+ let _id;
54
+ while (arr.find((element) => element[keyId] === _id) || !_id)
55
+ _id = suffix + (s4() + s4() + s4() + s4() + s4()).slice(1);
56
+ return _id;
57
+ };
58
+
59
+ /**
60
+ * The function `random` generates a random integer within a specified range.
61
+ * @param min - The `min` parameter represents the minimum value of the range from which you want to
62
+ * generate a random number.
63
+ * @param max - The `max` parameter in the `random` function represents the maximum value that you want
64
+ * to generate a random number up to.
65
+ * @memberof CommonJS
66
+ */
67
+ const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min); // The maximum is inclusive and the minimum is inclusive
68
+
69
+ const randomHexColor = () => '#' + ((Math.random() * 0xffffff) << 0).toString(16).padStart(6, '0');
70
+
71
+ const getRawCsvFromArray = (array) =>
72
+ array[0]
73
+ ? Object.keys(array[0]).join(';') +
74
+ '\r\n' +
75
+ array
76
+ .map((x) => {
77
+ return (
78
+ Object.keys(x)
79
+ .map((attr) => x[attr])
80
+ .join(';') + '\r\n'
81
+ );
82
+ })
83
+ .join('')
84
+ : '';
85
+
86
+ const newInstance = (obj) => {
87
+ // structuredClone() 2022 ES6 feature
88
+ try {
89
+ return JSON.parse(JSON.stringify(obj));
90
+ } catch (error) {
91
+ return { error: error.message };
92
+ }
93
+ };
94
+
95
+ const cap = (str) =>
96
+ str
97
+ .toLowerCase()
98
+ .split(' ')
99
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
100
+ .join(' ');
101
+
102
+ const capFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1);
103
+
104
+ const uniqueArray = (arr) => arr.filter((item, pos) => arr.indexOf(item) == pos);
105
+
106
+ const orderArrayFromAttrInt = (arr, attr, type) =>
107
+ // type -> true asc
108
+ // type -> false desc
109
+ type === 'asc' ? arr.sort((a, b) => a[attr] - b[attr]) : arr.sort((a, b) => b[attr] - a[attr]);
110
+
111
+ const getRandomPoint = (suffix, pointsArray) => {
112
+ const point = pointsArray[random(0, pointsArray.length - 1)];
113
+ const returnPoint = {};
114
+ returnPoint['x' + suffix] = point[0];
115
+ returnPoint['y' + suffix] = point[1];
116
+ return returnPoint;
117
+ };
118
+
119
+ const getYouTubeID = (url) => {
120
+ const p =
121
+ /^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
122
+ if (url.match(p)) return url.match(p)[1];
123
+ return false;
124
+ };
125
+
126
+ const timer = (ms) => new Promise((res) => setTimeout(res, ms));
127
+
128
+ const reOrderIntArray = (array) => {
129
+ /* shuffle */
130
+ let currentIndex = array.length,
131
+ randomIndex;
132
+
133
+ // While there remain elements to shuffle.
134
+ while (currentIndex != 0) {
135
+ // Pick a remaining element.
136
+ randomIndex = Math.floor(Math.random() * currentIndex);
137
+ currentIndex--;
138
+
139
+ // And swap it with the current element.
140
+ [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]];
141
+ }
142
+
143
+ return array;
144
+ };
145
+
146
+ const orderAbc = (arr, attr) =>
147
+ arr.sort((a, b) => {
148
+ if (attr) {
149
+ if (a[attr] < b[attr]) {
150
+ return -1;
151
+ }
152
+ if (a[attr] > b[attr]) {
153
+ return 1;
154
+ }
155
+ } else {
156
+ if (a < b) {
157
+ return -1;
158
+ }
159
+ if (a > b) {
160
+ return 1;
161
+ }
162
+ }
163
+ return 0;
164
+ });
165
+
166
+ const JSONmatrix = (matrix) => {
167
+ if (Array.isArray(matrix))
168
+ return `[\r\n${matrix
169
+ .map((x, i) => ` ` + JSON.stringify(x) + (i === matrix.length - 1 ? '' : ',') + '\r\n')
170
+ .join('')}]`;
171
+ else
172
+ return `[\r\n${Object.keys(matrix)
173
+ .map((x, i) => ` ` + JSON.stringify(Object.values(matrix[x])) + (i === matrix.length - 1 ? '' : ',') + '\r\n')
174
+ .join('')}]`;
175
+ };
176
+
177
+ const getDistance = (x1, y1, x2, y2) => {
178
+ const disX = Math.abs(x2 - x1);
179
+ const disY = Math.abs(y2 - y1);
180
+ return Math.sqrt(disX * disX + disY * disY);
181
+ };
182
+
183
+ const setPad = (num, padValue, targetLength, endPad, separator) => {
184
+ separator = separator ? separator : '.';
185
+ let str = String(num).split(separator);
186
+ let removeSeparator = false;
187
+ if (!str[1]) {
188
+ str[1] = '';
189
+ if (!endPad) removeSeparator = true;
190
+ }
191
+ while (endPad ? str[1].length < targetLength : str[0].length < targetLength)
192
+ endPad ? (str[1] = str[1] + padValue) : (str[0] = padValue + str[0]);
193
+ return removeSeparator ? str.join(separator).replace(separator, '') : str.join(separator);
194
+ };
195
+
196
+ /**
197
+ * Decimal setting of a number.
198
+ *
199
+ * @param {String} type The type of setting.
200
+ * @param {Number} value The number.
201
+ * @param {Integer} exp The exponent (the log 10 of the base fit).
202
+ * @returns {Number} The adjusted value.
203
+ * @memberof CommonJS
204
+ */
205
+ const decimalAdjust = (type, value, exp) => {
206
+ if (typeof exp === 'undefined' || +exp === 0) {
207
+ return Math[type](value);
208
+ }
209
+ value = +value;
210
+ exp = +exp;
211
+
212
+ if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
213
+ return NaN;
214
+ }
215
+ // Shift
216
+ value = value.toString().split('e');
217
+ value = Math[type](+(value[0] + 'e' + (value[1] ? +value[1] - exp : -exp)));
218
+ // Shift back
219
+ value = value.toString().split('e');
220
+ return +(value[0] + 'e' + (value[1] ? +value[1] + exp : exp));
221
+
222
+ // https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Math/round
223
+ };
224
+
225
+ const floatRound = (v, d) => parseFloat(parseFloat(v).toFixed(d));
226
+
227
+ // Decimal round
228
+
229
+ const round10 = (value, exp) => {
230
+ return decimalAdjust('round', value, exp);
231
+ };
232
+
233
+ // Decimal floor
234
+
235
+ const floor10 = (value, exp) => {
236
+ return decimalAdjust('floor', value, exp);
237
+ };
238
+
239
+ // Decimal ceil
240
+
241
+ const ceil10 = (value, exp) => {
242
+ return decimalAdjust('ceil', value, exp);
243
+ };
244
+
245
+ // // Round
246
+ // round10(55.55, -1); // 55.6
247
+ // round10(55.549, -1); // 55.5
248
+ // round10(55, 1); // 60
249
+ // round10(54.9, 1); // 50
250
+ // round10(-55.55, -1); // -55.5
251
+ // round10(-55.551, -1); // -55.6
252
+ // round10(-55, 1); // -50
253
+ // round10(-55.1, 1); // -60
254
+ // round10(1.005, -2); // 1.01 -- compare this with round(1.005*100)/100 above
255
+ // // Floor
256
+ // floor10(55.59, -1); // 55.5
257
+ // floor10(59, 1); // 50
258
+ // floor10(-55.51, -1); // -55.6
259
+ // floor10(-51, 1); // -60
260
+ // // Ceil
261
+ // ceil10(55.51, -1); // 55.6
262
+ // ceil10(51, 1); // 60
263
+ // ceil10(-55.59, -1); // -55.5
264
+ // ceil10(-59, 1); // -50
265
+
266
+ function objectEquals(x, y) {
267
+ // TODO:
268
+ // https://www.npmjs.com/package/deep-equal
269
+ // https://www.npmjs.com/package/fast-deep-equal
270
+ const ok = Object.keys,
271
+ tx = typeof x,
272
+ ty = typeof y;
273
+ return x && y && tx === 'object' && tx === ty
274
+ ? ok(x).length === ok(y).length && ok(x).every((key) => objectEquals(x[key], y[key]))
275
+ : x === y;
276
+ }
277
+
278
+ function insertTransitionCoordinates(coordinates, transitionFactor) {
279
+ // Create a new array to store the resulting coordinates
280
+ const coordinatesWithTransition = [];
281
+
282
+ // Iterate over the coordinates array
283
+ for (let i = 0; i < coordinates.length - 1; i++) {
284
+ const [x1, y1] = coordinates[i];
285
+ const [x2, y2] = coordinates[i + 1];
286
+
287
+ // Add the initial integer coordinate to the new array
288
+ coordinatesWithTransition.push([x1, y1]);
289
+
290
+ // Calculate the increments for each coordinate
291
+ const incrementX = (x2 - x1) / transitionFactor;
292
+ const incrementY = (y2 - y1) / transitionFactor;
293
+
294
+ // Add the intermediate coordinates
295
+ for (let j = 1; j <= transitionFactor - 1; j++) {
296
+ const xIntermediate = x1 + incrementX * j;
297
+ const yIntermediate = y1 + incrementY * j;
298
+ coordinatesWithTransition.push([xIntermediate, yIntermediate]);
299
+ }
300
+ }
301
+
302
+ // Add the last integer coordinate to the new array
303
+ coordinatesWithTransition.push(coordinates[coordinates.length - 1]);
304
+
305
+ // Now, coordinatesWithTransition contains the coordinates with transition
306
+ return coordinatesWithTransition;
307
+ }
308
+
309
+ const getIsoDate = (date) => date.toISOString().slice(0, -5).replace('T', ' ');
310
+
311
+ const clearTerminalStringColor = (str) => str.replace(/\x1b\[[0-9;]*m/g, '');
312
+
313
+ function getValueFromJoinString(obj, path, join = '.') {
314
+ // Split the path string into an array of attribute names
315
+ const attributes = path.split(join);
316
+
317
+ // Iterate through the attributes to access the desired value
318
+ let value = obj;
319
+ for (let i = 0; i < attributes.length; i++) {
320
+ value = value[attributes[i]];
321
+
322
+ // Check if the value is null or undefined at each step
323
+ if (value === null || value === undefined) {
324
+ // If the value is null or undefined, stop the iteration
325
+ break;
326
+ }
327
+ }
328
+
329
+ return value;
330
+ }
331
+
332
+ function getDirection(options = { x1: 1, y1: 1, x2: 1, y2: 1, radians: 1 }) {
333
+ const { x1, y1, x2, y2, radians } = options;
334
+ // Calculate the angle in radians
335
+ const angle = radians !== undefined ? radians : Math.atan2(y2 - y1, x2 - x1);
336
+
337
+ // Convert the angle to degrees
338
+ let degrees = angle * (180 / Math.PI);
339
+
340
+ // Adjust the angle to be positive
341
+ if (degrees < 0) {
342
+ degrees += 360;
343
+ }
344
+
345
+ // 45 / 2 = 22.5
346
+ // formula -> 22.5 + (45*n)
347
+
348
+ // Map the angle to one of the eight directions
349
+ let direction;
350
+ if (degrees >= 337.5 || degrees < 22.5) {
351
+ // direction = 'right';
352
+ // direction = 'East';
353
+ direction = 'e';
354
+ } else if (degrees >= 22.5 && degrees < 67.5) {
355
+ // direction = 'up-right';
356
+ // direction = 'South East';
357
+ direction = 'se';
358
+ } else if (degrees >= 67.5 && degrees < 112.5) {
359
+ // direction = 'up';
360
+ // direction = 'South';
361
+ direction = 's';
362
+ } else if (degrees >= 112.5 && degrees < 157.5) {
363
+ // direction = 'up-left';
364
+ // direction = 'South West';
365
+ direction = 'sw';
366
+ } else if (degrees >= 157.5 && degrees < 202.5) {
367
+ // direction = 'left';
368
+ // direction = 'West';
369
+ direction = 'w';
370
+ } else if (degrees >= 202.5 && degrees < 247.5) {
371
+ // direction = 'down-left';
372
+ // direction = 'North West';
373
+ direction = 'nw';
374
+ } else if (degrees >= 247.5 && degrees < 292.5) {
375
+ // direction = 'down';
376
+ // direction = 'North';
377
+ direction = 'n';
378
+ } else if (degrees >= 292.5 && degrees < 337.5) {
379
+ // direction = 'down-right';
380
+ // direction = 'North East';
381
+ direction = 'ne';
382
+ }
383
+
384
+ return direction;
385
+ }
386
+
387
+ // Function to amplify a matrix in horizontal and vertical directions
388
+ const amplifyMatrix = (matrix, factor) => {
389
+ // Get the original dimensions of the matrix
390
+ const rows = matrix.length;
391
+ const cols = matrix[0].length;
392
+
393
+ // Create a new amplified matrix filled with zeros
394
+ const amplifiedMatrix = Array.from({ length: rows * factor }, () => Array(cols * factor).fill(0));
395
+
396
+ // Iterate over the original matrix
397
+ for (let i = 0; i < rows; i++) {
398
+ for (let j = 0; j < cols; j++) {
399
+ // Get the current value in the original matrix
400
+ const originalValue = matrix[i][j];
401
+
402
+ // Amplify in horizontal and vertical directions
403
+ for (let x = 0; x < factor; x++) {
404
+ for (let y = 0; y < factor; y++) {
405
+ // Assign the amplified value to the new matrix
406
+ amplifiedMatrix[i * factor + x][j * factor + y] = originalValue;
407
+ }
408
+ }
409
+ }
410
+ }
411
+
412
+ return amplifiedMatrix;
413
+ };
414
+
415
+ // Function to reduce a matrix by a factor in horizontal and vertical directions
416
+ const reduceMatrix = (matrix, factor) => {
417
+ // Get the original dimensions of the matrix
418
+ const rows = matrix.length;
419
+ const cols = matrix[0].length;
420
+
421
+ // Calculate the dimensions of the reduced matrix
422
+ const reducedRows = Math.ceil(rows / factor);
423
+ const reducedCols = Math.ceil(cols / factor);
424
+
425
+ // Create a new reduced matrix filled with zeros
426
+ const reducedMatrix = Array.from({ length: reducedRows }, () => Array(reducedCols).fill(0));
427
+
428
+ // Iterate over the original matrix
429
+ for (let i = 0; i < reducedRows; i++) {
430
+ for (let j = 0; j < reducedCols; j++) {
431
+ // Calculate the sum of values in the corresponding block of the original matrix
432
+ let sum = 0;
433
+
434
+ for (let x = 0; x < factor; x++) {
435
+ for (let y = 0; y < factor; y++) {
436
+ // Safely access the original matrix considering the boundaries
437
+ const rowIndex = i * factor + x;
438
+ const colIndex = j * factor + y;
439
+
440
+ if (rowIndex < rows && colIndex < cols) {
441
+ sum += matrix[rowIndex][colIndex];
442
+ }
443
+ }
444
+ }
445
+
446
+ // Calculate the average value for the reduced matrix
447
+ reducedMatrix[i][j] = sum / Math.min(factor * factor, rows * cols);
448
+ }
449
+ }
450
+
451
+ return reducedMatrix;
452
+ };
453
+
454
+ const mergeMatrices = (input) => {
455
+ const rows = Object.keys(input).reduce((acc, key) => {
456
+ const rowData = Object.keys(input[key]).reduce((rowAcc, subKey) => {
457
+ const subArray = input[key][subKey];
458
+ const rowIndex = parseInt(key, 10) * subArray.length;
459
+ subArray.forEach((subRow, subRowIndex) => {
460
+ const fullRowIndex = rowIndex + subRowIndex;
461
+ if (!rowAcc[fullRowIndex]) {
462
+ rowAcc[fullRowIndex] = [];
463
+ }
464
+ rowAcc[fullRowIndex] = rowAcc[fullRowIndex].concat(subRow);
465
+ });
466
+ return rowAcc;
467
+ }, []);
468
+ acc = acc.concat(rowData);
469
+ return acc;
470
+ }, []);
471
+
472
+ // Remove empty rows
473
+ const nonEmptyRows = rows.filter((row) => row.some((cell) => cell !== undefined));
474
+
475
+ // Remove empty columns
476
+ const transpose = nonEmptyRows[0].map((col, i) => nonEmptyRows.map((row) => row[i]));
477
+ const nonEmptyColumns = transpose.filter((col) => col.some((cell) => cell !== undefined));
478
+
479
+ // Transpose back to rows
480
+ const result = nonEmptyColumns[0].map((row, i) => nonEmptyColumns.map((col) => col[i]));
481
+
482
+ return result;
483
+ };
484
+
485
+ const titleFormatted = (str) => cap(str.trim().replaceAll('/', '').replaceAll('-', ' '));
486
+
487
+ const getSubpaths = (path) =>
488
+ path
489
+ .split('/')
490
+ .filter(Boolean)
491
+ .map((_, i, segments) => `/${segments.slice(0, i + 1).join('/')}`);
492
+
493
+ function formatBytes(bytes, decimals = 2) {
494
+ if (!+bytes) return '0 Bytes';
495
+
496
+ const k = 1024;
497
+ const dm = decimals < 0 ? 0 : decimals;
498
+ const sizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
499
+
500
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
501
+
502
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
503
+ }
504
+
505
+ function getDirname(path) {
506
+ // Split the path based on the path separator
507
+ const parts = path.split(/[/|\\]/);
508
+
509
+ // Remove the last element (filename)
510
+ parts.pop();
511
+
512
+ // If the path ends with a separator, remove the empty element
513
+ if (parts[parts.length - 1] === '') {
514
+ parts.pop();
515
+ }
516
+
517
+ // Join the remaining parts to get the directory path
518
+ return parts.join('/'); // Adjust separator if needed for Windows ('\')
519
+ }
520
+
521
+ const isValidDate = (day, month, year) => {
522
+ if (!month && !year) return !(new Date(day) == 'Invalid Date');
523
+ // new Date('2025-12-28')
524
+ // Sat Dec 27 2025 19:00:00 GMT-0500 (Eastern Standard Time)
525
+ // new Date('2025/12/28')
526
+ // Sun Dec 28 2025 00:00:00 GMT-0500 (Eastern Standard Time)
527
+ return !(new Date(`${year}/${month}/${day}`) == 'Invalid Date');
528
+ };
529
+
530
+ // console.log(req.body.timeZoneClient, Intl.DateTimeFormat().resolvedOptions().timeZone);
531
+ // DateTime.fromISO("2017-05-15T09:10:23", { zone: "Europe/Paris" });
532
+ const strToDateUTC = (date = '2025-01-30T14:32') => {
533
+ const year = parseInt(date.split('-')[0]);
534
+ const month = parseInt(date.split('-')[1]);
535
+ const day = parseInt(date.split('-')[2].split('T')[0]);
536
+ const hour = parseInt(date.split('T')[1].split(':')[0]);
537
+ const minute = parseInt(date.split('T')[1].split(':')[1]);
538
+ date = new Date(Date.UTC(year, month - 1, day, hour, minute, 0, 0));
539
+ return date;
540
+ };
541
+
542
+ const isValidFormat = (value, format) => {
543
+ try {
544
+ switch (format) {
545
+ case 'ALPHANUMERIC':
546
+ return /^[a-z0-9]+$/i.test(value);
547
+ case 'DDMMYYYY': {
548
+ const day = parseInt(value.substring(0, 2));
549
+ const month = parseInt(value.substring(2, 4));
550
+ const year = parseInt(value.substring(4));
551
+ return isValidDate(day, month, year);
552
+ }
553
+ case 'YYYYDDMM': {
554
+ const day = parseInt(value.substring(4, 6));
555
+ const month = parseInt(value.substring(6, 8));
556
+ const year = parseInt(value.substring(0, 4));
557
+ return isValidDate(day, month, year);
558
+ }
559
+ case 'DD-MM-YYYY': {
560
+ value = value.split('-');
561
+ const day = parseInt(value[0]);
562
+ const month = parseInt(value[1]);
563
+ const year = parseInt(value[2]);
564
+ return isValidDate(day, month, year);
565
+ }
566
+
567
+ default:
568
+ return false;
569
+ }
570
+ } catch (error) {
571
+ console.error(error);
572
+ return false;
573
+ }
574
+ };
575
+
576
+ const getCurrentTrace = () => {
577
+ try {
578
+ _stack;
579
+ } catch (error) {
580
+ return error.stack;
581
+ }
582
+ };
583
+
584
+ /**
585
+ * Returns the time difference between UTC time and local time, in minutes.
586
+ * @memberof CommonJS
587
+ */
588
+ const getTimezoneOffset = () => new Date().getTimezoneOffset();
589
+
590
+ // https://unicode-explorer.com/c/<unicode>
591
+ // example: https://unicode-explorer.com/c/0000
592
+ function cleanString(string) {
593
+ // Define the problematic escape sequences unicode characters to remove with descriptions
594
+ const problematicCharacters = [
595
+ // '\u0000', // Null character (Represents absence of a character) not work
596
+ '\u0008', // Backspace character
597
+ '\u0002', // Start of Text (STX) character
598
+ '\u0009', // Horizontal Tab character
599
+ '\u000B', // Vertical Tab character
600
+ '\u000C', // Form Feed character
601
+ '\u000D', // Carriage Return character
602
+ '\u001D', // Group Separator (GS) character
603
+ '\u001F', // Substitution character
604
+ // '\u0020', // Space character
605
+ '\u200B', // Zero Width Space character
606
+ '\u200C', // Zero Width Non-Joiner character
607
+ '\u200D', // Zero Width Joiner character
608
+ '\u200F', // Right-to-Left Mark character
609
+ '\u2028', // Left-to-Right Mark character
610
+ '\u2060', // Word Spacing character
611
+ '\u2061', // Word Joiner character
612
+ '\u2062', // Invisible Text Character character
613
+ '\u2063', // Inhibit Explicit Word Joining character
614
+ '\u2064', // Invisible Text Processing character
615
+ ];
616
+
617
+ // Replace each problematic character with an empty string
618
+ return problematicCharacters.reduce((cleanString, character) => {
619
+ const charRegex = new RegExp(character, 'g'); // Regular expression for character
620
+ return cleanString.replace(charRegex, ''); // Replace with empty string
621
+ }, string);
622
+ }
623
+
624
+ function splitEveryXChar(originalString, everyXChar = 30, nextCharSplit) {
625
+ let modifiedString = '';
626
+ const arrayString = [];
627
+ let i = -1;
628
+ let charSplit = false;
629
+ for (let char of originalString) {
630
+ i++;
631
+ modifiedString += char;
632
+ if (i !== 0 && i % everyXChar === 0) charSplit = true;
633
+ if (modifiedString.length >= everyXChar && charSplit && (!nextCharSplit || nextCharSplit.includes(char))) {
634
+ arrayString.push(newInstance(modifiedString));
635
+ modifiedString = '';
636
+ charSplit = false;
637
+ }
638
+ }
639
+ if (modifiedString) arrayString.push(modifiedString);
640
+ return arrayString;
641
+ }
642
+
643
+ const getMostFrequentValue = (arr) =>
644
+ arr.sort((a, b) => arr.filter((v) => v === a).length - arr.filter((v) => v === b).length).pop();
645
+
646
+ const getFillMatrix = (maxX, maxY, value = 0) =>
647
+ new Array(maxY).fill().map(() => new Array(maxX).fill().map(() => value));
648
+
649
+ function validatePassword(password) {
650
+ let errors = [];
651
+ if (!/[a-z]/.test(password))
652
+ errors.push({ en: 'must contain at least one lowercase letter', es: 'debe contener al menos una letra minúscula' });
653
+ if (!/[A-Z]/.test(password))
654
+ errors.push({ en: 'must contain at least one uppercase letter', es: 'debe contener al menos una letra mayúscula' });
655
+ if (!/\d/.test(password))
656
+ errors.push({ en: 'must contain at least one number', es: 'debe contener al menos un número' });
657
+ if (!/[@#$-%^&*()_+{}\[\]:;<>,.!?\/\\|`~]/.test(password))
658
+ errors.push({
659
+ en: 'must contain at least one special character',
660
+ es: 'debe contener al menos un carácter especial',
661
+ });
662
+ if (password.length < 8)
663
+ errors.push({ en: 'must be at least 8 characters long', es: 'debe tener al menos 8 caracteres de largo' });
664
+
665
+ return errors;
666
+ }
667
+
668
+ function componentFromStr(numStr, percent) {
669
+ const num = Math.max(0, parseInt(numStr, 10));
670
+ return percent ? Math.floor((255 * Math.min(100, num)) / 100) : Math.min(255, num);
671
+ }
672
+
673
+ const isChileanIdentityDocument = function (rutCompleto) {
674
+ const dv = function (T) {
675
+ let M = 0,
676
+ S = 1;
677
+ for (; T; T = Math.floor(T / 10)) S = (S + (T % 10) * (9 - (M++ % 6))) % 11;
678
+ return S ? S - 1 : 'k';
679
+ };
680
+ rutCompleto = rutCompleto.replace('‐', '-');
681
+ if (!/^[0-9]+[-|‐]{1}[0-9kK]{1}$/.test(rutCompleto)) return false;
682
+ var tmp = rutCompleto.split('-');
683
+ var digv = tmp[1];
684
+ var rut = tmp[0];
685
+ if (digv == 'K') digv = 'k';
686
+ return dv(rut) == digv;
687
+ };
688
+
689
+ function rgbToHex(rgb) {
690
+ const rgbRegex = /^rgb\(\s*(-?\d+)(%?)\s*,\s*(-?\d+)(%?)\s*,\s*(-?\d+)(%?)\s*\)$/;
691
+ let result,
692
+ r,
693
+ g,
694
+ b,
695
+ hex = '';
696
+ if ((result = rgbRegex.exec(rgb))) {
697
+ r = componentFromStr(result[1], result[2]);
698
+ g = componentFromStr(result[3], result[4]);
699
+ b = componentFromStr(result[5], result[6]);
700
+
701
+ hex = '' + (0x1000000 + (r << 16) + (g << 8) + b).toString(16).slice(1);
702
+ }
703
+ return hex;
704
+ }
705
+
706
+ const getCapVariableName = (value = 'default') => cap(value.replaceAll('-', ' ')).replaceAll(' ', '');
707
+
708
+ const hexToNumber = (hex = 0xdc) => Number(hex) || parseFloat(hex, 16);
709
+
710
+ const numberToHex = (number = 0) => number.toString(16);
711
+
712
+ const generateRandomPasswordSelection = (length) => {
713
+ const _random = (arr) => {
714
+ const rand = Math.floor(Math.random() * arr.length);
715
+ return arr[rand];
716
+ };
717
+
718
+ const uppercase = [
719
+ 'A',
720
+ 'B',
721
+ 'C',
722
+ 'D',
723
+ 'E',
724
+ 'F',
725
+ 'G',
726
+ 'H',
727
+ 'I',
728
+ 'J',
729
+ 'K',
730
+ 'L',
731
+ 'M',
732
+ 'N',
733
+ 'O',
734
+ 'P',
735
+ 'Q',
736
+ 'R',
737
+ 'S',
738
+ 'T',
739
+ 'U',
740
+ 'V',
741
+ 'W',
742
+ 'X',
743
+ 'Y',
744
+ 'Z',
745
+ ];
746
+ const lowercase = [
747
+ 'a',
748
+ 'b',
749
+ 'c',
750
+ 'd',
751
+ 'e',
752
+ 'f',
753
+ 'g',
754
+ 'h',
755
+ 'i',
756
+ 'j',
757
+ 'k',
758
+ 'l',
759
+ 'm',
760
+ 'n',
761
+ 'o',
762
+ 'p',
763
+ 'q',
764
+ 'r',
765
+ 's',
766
+ 't',
767
+ 'u',
768
+ 'v',
769
+ 'w',
770
+ 'x',
771
+ 'y',
772
+ 'z',
773
+ ];
774
+ const special = [
775
+ '~',
776
+ '!',
777
+ '@',
778
+ '#',
779
+ '$',
780
+ '%',
781
+ '^',
782
+ '&',
783
+ '*',
784
+ '(',
785
+ ')',
786
+ '_',
787
+ '+',
788
+ '-',
789
+ '=',
790
+ '{',
791
+ '}',
792
+ '[',
793
+ ']',
794
+ ':',
795
+ ';',
796
+ '?',
797
+ ',',
798
+ '.',
799
+ '|',
800
+ '\\',
801
+ ];
802
+ const numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
803
+
804
+ const nonSpecial = [...uppercase, ...lowercase, ...numbers];
805
+
806
+ let password = '';
807
+
808
+ for (let i = 0; i < length; i++) {
809
+ // Previous character is a special character
810
+ if (i !== 0 && special.includes(password[i - 1])) {
811
+ password += _random(nonSpecial);
812
+ } else password += _random([...nonSpecial, ...special]);
813
+ }
814
+
815
+ return password;
816
+ };
817
+
818
+ // 0x = Hexadecimal
819
+ // 0b = Binary
820
+ // 0o = Octal
821
+
822
+ const commitData = {
823
+ feat: {
824
+ description: 'New feature or enhancement (frontend, backend, API, or UX)',
825
+ title: 'Features',
826
+ emoji: '✨',
827
+ },
828
+ fix: {
829
+ description: 'Fix a bug',
830
+ title: 'Bug Fixes',
831
+ emoji: '🐛',
832
+ },
833
+ docs: {
834
+ description: 'Documentation changes',
835
+ title: 'Documentation',
836
+ emoji: '📚',
837
+ },
838
+ style: {
839
+ description: 'Formatting, whitespace, semicolons, code style',
840
+ title: 'Styles',
841
+ emoji: '💎',
842
+ },
843
+ refactor: {
844
+ description: 'Code refactor.',
845
+ title: 'Code Refactoring',
846
+ emoji: '📦',
847
+ },
848
+ perf: {
849
+ description: 'Performance improvements across the stack.',
850
+ title: 'Performance Improvements',
851
+ emoji: '⚡️',
852
+ },
853
+ ci: {
854
+ description: 'CI pipeline changes (GitHub Actions, runners, caching)',
855
+ title: 'Continuous Integration',
856
+ emoji: '⚙️',
857
+ },
858
+ cd: {
859
+ description: 'CD / deployment changes (Remote ssh deployment scripts)',
860
+ title: 'Continuous Delivery',
861
+ emoji: '🚀',
862
+ },
863
+ infra: {
864
+ description: 'Infrastructure changes (MAAS, LXD, cloud infra, networking, provisioning).',
865
+ title: 'Infrastructure',
866
+ emoji: '🏗️',
867
+ },
868
+ build: {
869
+ description: 'Build system or dependency changes (tooling, bundler, build scripts).',
870
+ title: 'Builds',
871
+ emoji: '🛠',
872
+ },
873
+ test: {
874
+ description: 'Unit or integration tests added/updated, test helpers, flake fixes.',
875
+ title: 'Tests',
876
+ emoji: '🚨',
877
+ },
878
+ chore: {
879
+ description: "Other changes that don't modify src or tests (automation, housekeeping).",
880
+ title: 'Chores',
881
+ emoji: '♻️',
882
+ },
883
+ revert: {
884
+ description: 'Revert a previous commit or change.',
885
+ title: 'Reverts',
886
+ emoji: '🗑',
887
+ },
888
+ backup: {
889
+ description: 'Backups, snapshotting, restore scripts, or backup docs.',
890
+ title: 'Backups',
891
+ emoji: '💾',
892
+ },
893
+ };
894
+
895
+ const emotionsData = [
896
+ {
897
+ name: 'like',
898
+ ad_display: {
899
+ es: 'Me gusta',
900
+ en: 'Like',
901
+ },
902
+ emoji: '👍',
903
+ },
904
+ {
905
+ name: 'love',
906
+ ad_display: {
907
+ es: 'Me encanta',
908
+ en: 'Love',
909
+ },
910
+ emoji: '❤️',
911
+ },
912
+ {
913
+ name: 'haha',
914
+ ad_display: {
915
+ es: 'Me divierte',
916
+ en: 'Haha',
917
+ },
918
+ emoji: '😂',
919
+ },
920
+ {
921
+ name: 'wow',
922
+ ad_display: {
923
+ es: 'Me asombra',
924
+ en: 'Wow',
925
+ },
926
+ emoji: '😮',
927
+ },
928
+ {
929
+ name: 'sad',
930
+ ad_display: {
931
+ es: 'Me entristece',
932
+ en: 'Sad',
933
+ },
934
+ emoji: '😢',
935
+ },
936
+ {
937
+ name: 'angry',
938
+ ad_display: {
939
+ es: 'Me enoja',
940
+ en: 'Angry',
941
+ },
942
+ emoji: '😠',
943
+ },
944
+ ];
945
+
946
+ const userRoleEnum = ['admin', 'moderator', 'user', 'guest'];
947
+ const commonAdminGuard = (role) => userRoleEnum.indexOf(role) === userRoleEnum.indexOf('admin');
948
+ const commonModeratorGuard = (role) => userRoleEnum.indexOf(role) <= userRoleEnum.indexOf('moderator');
949
+
950
+ export {
951
+ s4,
952
+ range,
953
+ random,
954
+ newInstance,
955
+ cap,
956
+ uniqueArray,
957
+ orderArrayFromAttrInt,
958
+ getYouTubeID,
959
+ timer,
960
+ getRawCsvFromArray,
961
+ reOrderIntArray,
962
+ capFirst,
963
+ orderAbc,
964
+ getDistance,
965
+ decimalAdjust,
966
+ round10,
967
+ floor10,
968
+ ceil10,
969
+ JSONmatrix,
970
+ getRandomPoint,
971
+ objectEquals,
972
+ floatRound,
973
+ getId,
974
+ insertTransitionCoordinates,
975
+ randomHexColor,
976
+ clearTerminalStringColor,
977
+ getIsoDate,
978
+ getValueFromJoinString,
979
+ getDirection,
980
+ amplifyMatrix,
981
+ reduceMatrix,
982
+ mergeMatrices,
983
+ titleFormatted,
984
+ setPad,
985
+ getSubpaths,
986
+ formatBytes,
987
+ getDirname,
988
+ isValidDate,
989
+ isValidFormat,
990
+ strToDateUTC,
991
+ getTimezoneOffset,
992
+ cleanString,
993
+ splitEveryXChar,
994
+ getMostFrequentValue,
995
+ getFillMatrix,
996
+ validatePassword,
997
+ componentFromStr,
998
+ rgbToHex,
999
+ getCapVariableName,
1000
+ hexToNumber,
1001
+ numberToHex,
1002
+ generateRandomPasswordSelection,
1003
+ commonAdminGuard,
1004
+ commonModeratorGuard,
1005
+ isChileanIdentityDocument,
1006
+ getCurrentTrace,
1007
+ userRoleEnum,
1008
+ commitData,
1009
+ emotionsData,
1010
+ };