@underpostnet/cyberia 3.3.0 → 3.3.73

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 (471) hide show
  1. package/.dockerignore +1 -0
  2. package/.github/workflows/coverall.cyberia.ci.yml +34 -14
  3. package/.github/workflows/cyberia-client.cd.yml +5 -0
  4. package/.github/workflows/cyberia-server.cd.yml +5 -0
  5. package/.github/workflows/docker-image.cyberia-client.ci.yml +8 -5
  6. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +8 -3
  7. package/.github/workflows/docker-image.cyberia-server.ci.yml +8 -5
  8. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +8 -5
  9. package/.github/workflows/docker-image.engine-cyberia.ci.yml +15 -1
  10. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +15 -1
  11. package/.github/workflows/engine-cyberia.cd.yml +3 -0
  12. package/.github/workflows/engine-cyberia.ci.yml +4 -5
  13. package/.github/workflows/ghpkg.ci.yml +35 -20
  14. package/.github/workflows/hardhat.ci.yml +12 -11
  15. package/.github/workflows/npmpkg.ci.yml +17 -15
  16. package/.github/workflows/pwa-microservices-template-test.ci.yml +2 -2
  17. package/.github/workflows/release.cd.yml +1 -0
  18. package/.prettierignore +1 -0
  19. package/AGENTS.md +47 -0
  20. package/CHANGELOG.md +565 -2510
  21. package/CLI-HELP.md +306 -147
  22. package/Dockerfile +25 -9
  23. package/Dockerfile.dev +25 -9
  24. package/Dockerfile.test +4 -4
  25. package/README.md +21 -1
  26. package/bin/build.js +66 -41
  27. package/bin/build.template.js +8 -3
  28. package/bin/cyberia.js +308 -91
  29. package/bin/deploy.js +18 -104
  30. package/bin/index.js +308 -91
  31. package/conf.js +91 -4
  32. package/deploy/cyberia-client/deploy.sh +47 -0
  33. package/deploy/cyberia-client/package.sh +18 -0
  34. package/deploy/cyberia-client/state.sh +14 -0
  35. package/deploy/cyberia-server/deploy.sh +47 -0
  36. package/deploy/cyberia-server/package.sh +18 -0
  37. package/deploy/cyberia-server/state.sh +14 -0
  38. package/deploy/dd-cyberia/deploy.sh +6 -26
  39. package/deploy/dd-cyberia/init.sh +35 -43
  40. package/deploy/dd-cyberia/package.sh +17 -0
  41. package/deploy/dd-cyberia/state.sh +14 -0
  42. package/deploy/dd-cyberia/sync-deploy.sh +92 -170
  43. package/deploy/lib/github-actions-logging.sh +594 -0
  44. package/deploy/lib/host.sh +185 -0
  45. package/deploy/lib/state.sh +62 -0
  46. package/deploy/pwa-microservices-template/deploy.sh +12 -39
  47. package/deploy/release/deploy.sh +9 -39
  48. package/deployment.yaml +7 -2
  49. package/docker-compose.yml +7 -7
  50. package/examples/static-page/README.md +19 -19
  51. package/examples/static-page/ssr-components/CustomPage.js +2 -2
  52. package/hardhat/hardhat.config.js +1 -6
  53. package/hardhat/package-lock.json +101 -40
  54. package/hardhat/package.json +2 -2
  55. package/manifests/alertmanager/deployment.yaml +81 -0
  56. package/manifests/blackbox-exporter/deployment.yaml +75 -0
  57. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +32 -7
  58. package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +32 -7
  59. package/manifests/deployment/dd-cyberia-development/deployment.yaml +7 -2
  60. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  61. package/manifests/grafana/deployment.yaml +26 -7
  62. package/manifests/grafana/kustomization.yaml +1 -0
  63. package/manifests/grafana/service.yaml +6 -1
  64. package/manifests/mariadb/pv.yaml +1 -0
  65. package/manifests/mongodb/statefulset.yaml +9 -2
  66. package/manifests/mysql/pv-pvc.yaml +14 -1
  67. package/manifests/postgresql/pv.yaml +12 -1
  68. package/manifests/postgresql/pvc.yaml +1 -0
  69. package/manifests/prometheus/deployment.yaml +18 -22
  70. package/package.json +83 -10
  71. package/scripts/event-monitor.sh +56 -0
  72. package/scripts/k3s-node-setup.sh +27 -14
  73. package/scripts/kubeadm-node-setup.sh +31 -11
  74. package/scripts/maas-setup.sh +8 -8
  75. package/scripts/selinux-normalize.sh +907 -0
  76. package/scripts/shutdown-machine.sh +843 -0
  77. package/scripts/test-monitor.sh +3 -3
  78. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +1 -1
  79. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +2 -2
  80. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +2 -2
  81. package/src/api/core/core.controller.js +1 -1
  82. package/src/api/core/core.router.js +2 -2
  83. package/src/api/core/core.service.js +2 -2
  84. package/src/api/crypto/crypto.controller.js +1 -1
  85. package/src/api/crypto/crypto.service.js +1 -1
  86. package/src/api/cyberia-action/cyberia-action.controller.js +1 -1
  87. package/src/api/cyberia-action/cyberia-action.router.js +1 -1
  88. package/src/api/cyberia-action/cyberia-action.service.js +2 -2
  89. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +1 -1
  90. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +1 -1
  91. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +2 -2
  92. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +1 -1
  93. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +1 -1
  94. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +2 -2
  95. package/src/api/cyberia-entity/cyberia-entity.controller.js +1 -1
  96. package/src/api/cyberia-entity/cyberia-entity.router.js +1 -1
  97. package/src/api/cyberia-entity/cyberia-entity.service.js +2 -2
  98. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +1 -1
  99. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +1 -1
  100. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +2 -2
  101. package/src/api/cyberia-instance/cyberia-fallback-capture.js +466 -0
  102. package/src/api/cyberia-instance/cyberia-fallback-world.js +8 -0
  103. package/src/api/cyberia-instance/cyberia-instance-map.service.js +1 -1
  104. package/src/api/cyberia-instance/cyberia-instance.controller.js +1 -1
  105. package/src/api/cyberia-instance/cyberia-instance.router.js +2 -2
  106. package/src/api/cyberia-instance/cyberia-instance.service.js +2 -2
  107. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +1 -1
  108. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +1 -1
  109. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +2 -2
  110. package/src/api/cyberia-map/cyberia-map.controller.js +1 -1
  111. package/src/api/cyberia-map/cyberia-map.router.js +1 -1
  112. package/src/api/cyberia-map/cyberia-map.service.js +2 -2
  113. package/src/api/cyberia-quest/cyberia-quest.controller.js +1 -1
  114. package/src/api/cyberia-quest/cyberia-quest.router.js +1 -1
  115. package/src/api/cyberia-quest/cyberia-quest.service.js +2 -2
  116. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +1 -1
  117. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +1 -1
  118. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +2 -2
  119. package/src/api/cyberia-saga/cyberia-saga.controller.js +1 -1
  120. package/src/api/cyberia-saga/cyberia-saga.router.js +1 -1
  121. package/src/api/cyberia-saga/cyberia-saga.service.js +2 -2
  122. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +0 -26
  123. package/src/api/cyberia-skill/cyberia-skill.controller.js +1 -1
  124. package/src/api/cyberia-skill/cyberia-skill.router.js +1 -1
  125. package/src/api/cyberia-skill/cyberia-skill.service.js +2 -2
  126. package/src/api/default/default.controller.js +1 -1
  127. package/src/api/default/default.router.js +1 -1
  128. package/src/api/default/default.service.js +2 -2
  129. package/src/api/document/document.controller.js +1 -1
  130. package/src/api/document/document.router.js +1 -1
  131. package/src/api/document/document.service.js +2 -2
  132. package/src/api/file/file.controller.js +1 -1
  133. package/src/api/file/file.router.js +1 -1
  134. package/src/api/file/file.service.js +2 -2
  135. package/src/api/instance/instance.controller.js +1 -1
  136. package/src/api/instance/instance.router.js +1 -1
  137. package/src/api/instance/instance.service.js +2 -2
  138. package/src/api/ipfs/ipfs.controller.js +1 -1
  139. package/src/api/ipfs/ipfs.router.js +2 -2
  140. package/src/api/ipfs/ipfs.service.js +2 -2
  141. package/src/api/object-layer/object-layer.controller.js +1 -1
  142. package/src/api/object-layer/object-layer.router.js +2 -2
  143. package/src/api/object-layer/object-layer.service.js +3 -3
  144. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +1 -1
  145. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +1 -1
  146. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +2 -2
  147. package/src/api/test/test.controller.js +1 -1
  148. package/src/api/test/test.service.js +1 -1
  149. package/src/api/user/guest.service.js +3 -3
  150. package/src/api/user/user.controller.js +1 -1
  151. package/src/api/user/user.router.js +2 -2
  152. package/src/api/user/user.service.js +4 -4
  153. package/src/api.js +5 -9
  154. package/src/cli/app.js +391 -0
  155. package/src/cli/baremetal.js +30 -35
  156. package/src/cli/client.js +306 -0
  157. package/src/cli/cloud-init.js +3 -3
  158. package/src/cli/cluster.js +184 -82
  159. package/src/cli/db.js +120 -68
  160. package/src/cli/deploy.js +153 -71
  161. package/src/cli/docker-compose.js +5 -5
  162. package/src/cli/domains.js +184 -0
  163. package/src/cli/dotenv-store.js +143 -0
  164. package/src/cli/event.js +2281 -0
  165. package/src/cli/fs.js +3 -3
  166. package/src/cli/host.js +672 -0
  167. package/src/cli/image.js +4 -6
  168. package/src/cli/index.js +322 -142
  169. package/src/cli/ipfs.js +34 -30
  170. package/src/cli/kickstart.js +1 -1
  171. package/src/cli/kubectl.js +218 -41
  172. package/src/cli/lxd.js +3 -3
  173. package/src/cli/monitor.js +1359 -26
  174. package/src/cli/package.js +90 -0
  175. package/src/cli/release.js +16 -12
  176. package/src/cli/repository.js +558 -363
  177. package/src/cli/run.js +331 -650
  178. package/src/cli/secrets.js +2158 -964
  179. package/src/cli/ssh.js +478 -279
  180. package/src/cli/state.js +394 -0
  181. package/src/cli/static.js +2 -2
  182. package/src/cli/system.js +1 -1
  183. package/src/cli/test.js +199 -125
  184. package/src/cli/vultr.js +61 -21
  185. package/src/cli/wireguard.js +1111 -306
  186. package/src/client/components/core/CalendarCore.js +53 -96
  187. package/src/client/components/core/Docs.js +258 -211
  188. package/src/client/components/core/FileExplorer.js +0 -21
  189. package/src/client/components/core/PanelForm.js +4 -4
  190. package/src/client/components/core/Repository.js +56 -0
  191. package/src/client/components/core/Translate.js +7 -0
  192. package/src/client/components/core/{FullScreen.js → ViewModeController.js} +42 -39
  193. package/src/client/components/core/Wallet.js +0 -11
  194. package/src/client/components/core/Worker.js +7 -1
  195. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +2 -2
  196. package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +2 -1
  197. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +2 -2
  198. package/src/client/components/default/AppShellDefault.js +1 -1
  199. package/src/client/components/default/SettingsDefault.js +2 -2
  200. package/src/client/components/itemledger/SettingsItemledger.js +2 -2
  201. package/src/client/components/underpost/AppShellUnderpost.js +3 -2
  202. package/src/client/components/underpost/SettingsUnderpost.js +2 -2
  203. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +32 -5
  204. package/src/client/public/cyberia-docs/CYBERIA.md +21 -1
  205. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +23 -6
  206. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  207. package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
  208. package/src/client/public/default/android-chrome-144x144.png +0 -0
  209. package/src/client/public/default/android-chrome-192x192.png +0 -0
  210. package/src/client/public/default/android-chrome-256x256.png +0 -0
  211. package/src/client/public/default/android-chrome-36x36.png +0 -0
  212. package/src/client/public/default/android-chrome-384x384.png +0 -0
  213. package/src/client/public/default/android-chrome-48x48.png +0 -0
  214. package/src/client/public/default/android-chrome-512x512.png +0 -0
  215. package/src/client/public/default/android-chrome-72x72.png +0 -0
  216. package/src/client/public/default/android-chrome-96x96.png +0 -0
  217. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  218. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  219. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  220. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  221. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  222. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  223. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  224. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  225. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  226. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  227. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  228. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  229. package/src/client/public/default/apple-touch-icon.png +0 -0
  230. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  231. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  232. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  233. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  234. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  235. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  236. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  237. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  238. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  239. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  240. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  241. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  242. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  243. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  244. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  245. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  246. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  247. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  248. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  249. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  250. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  251. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  252. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  253. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  254. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  255. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  256. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  257. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  258. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  259. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  260. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  261. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  262. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  263. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  264. package/src/client/public/default/assets/background/white.jpg +0 -0
  265. package/src/client/public/default/browserconfig.xml +1 -1
  266. package/src/client/public/default/favicon-16x16.png +0 -0
  267. package/src/client/public/default/favicon-32x32.png +0 -0
  268. package/src/client/public/default/favicon-48x48.png +0 -0
  269. package/src/client/public/default/favicon.ico +0 -0
  270. package/src/client/public/default/manifest.webmanifest +5 -5
  271. package/src/client/public/default/mstile-144x144.png +0 -0
  272. package/src/client/public/default/mstile-150x150.png +0 -0
  273. package/src/client/public/default/mstile-310x150.png +0 -0
  274. package/src/client/public/default/mstile-310x310.png +0 -0
  275. package/src/client/public/default/mstile-70x70.png +0 -0
  276. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  277. package/src/client/public/default/yandex-browser-manifest.json +1 -1
  278. package/src/client/ssr/RootDocument.js +1 -1
  279. package/src/client/ssr/body/404.js +1 -1
  280. package/src/client/ssr/body/500.js +1 -1
  281. package/src/client/ssr/body/CacheControl.js +1 -1
  282. package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +1 -1
  283. package/src/client/ssr/body/DefaultSplashScreen.js +1 -1
  284. package/src/client/ssr/body/SwaggerDarkMode.js +1 -1
  285. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +1 -1
  286. package/src/client/ssr/head/CryptokoynScripts.js +1 -1
  287. package/src/client/ssr/head/Css.js +1 -1
  288. package/src/client/ssr/head/CyberiaPortalScripts.js +1 -1
  289. package/src/client/ssr/head/DefaultScripts.js +1 -1
  290. package/src/client/ssr/head/ItemledgerScripts.js +1 -1
  291. package/src/client/ssr/head/Microdata.js +1 -1
  292. package/src/client/ssr/head/Production.js +1 -1
  293. package/src/client/ssr/head/Pwa.js +1 -1
  294. package/src/client/ssr/head/PwaItemledger.js +1 -1
  295. package/src/client/ssr/head/Seo.js +1 -1
  296. package/src/client/ssr/head/UnderpostScripts.js +1 -1
  297. package/src/client/ssr/mailer/DefaultRecoverEmail.js +1 -1
  298. package/src/client/ssr/mailer/DefaultVerifyEmail.js +1 -1
  299. package/src/client/ssr/views/Cyberia404.js +7 -5
  300. package/src/client/ssr/views/CyberiaServerMetrics.js +1 -1
  301. package/src/client/ssr/views/Maintenance.js +1 -1
  302. package/src/client/ssr/views/NoNetworkConnection.js +1 -1
  303. package/src/client/ssr/views/Test.js +1 -1
  304. package/src/client/sw/core.sw.js +20 -14
  305. package/src/client-builder/client-build-docs.js +61 -46
  306. package/src/client-builder/client-build-live.js +2 -2
  307. package/src/client-builder/client-build.js +38 -30
  308. package/src/client-builder/client-dev-server.js +3 -3
  309. package/src/client-builder/client-icons.js +2 -2
  310. package/src/client-builder/ssr.js +3 -3
  311. package/src/client.build.js +3 -6
  312. package/src/client.dev.js +3 -6
  313. package/src/db/DataBaseProvider.js +186 -3
  314. package/src/db/mariadb/MariaDB.js +3 -2
  315. package/src/db/mongo/MongoBootstrap.js +273 -101
  316. package/src/db/mongo/MongooseDB.js +7 -8
  317. package/src/{server/valkey.js → db/valkey/Valkey.js} +5 -4
  318. package/src/grpc/cyberia/grpc-server.js +1 -1
  319. package/src/index.js +79 -23
  320. package/src/mailer/EmailRender.js +2 -2
  321. package/src/mailer/MailerInterceptor.js +87 -0
  322. package/src/mailer/MailerProvider.js +50 -6
  323. package/src/projects/cyberia/atlas-sprite-sheet-generator.js +1 -1
  324. package/src/projects/cyberia/besu-genesis-generator.js +3 -3
  325. package/src/projects/cyberia/catalog-cyberia.js +53 -10
  326. package/src/projects/cyberia/gemini-client.js +1 -1
  327. package/src/projects/cyberia/generate-saga.js +1 -1
  328. package/src/projects/cyberia/hot-reload-trigger.js +1 -1
  329. package/src/projects/cyberia/instance-data.js +1 -1
  330. package/src/projects/cyberia/ipfs-client.js +4 -4
  331. package/src/projects/cyberia/map-preview-generator.js +1 -1
  332. package/src/projects/cyberia/object-layer.js +1 -1
  333. package/src/projects/cyberia/semantic-layer-generator.js +1 -1
  334. package/src/projects/underpost/catalog-underpost.js +9 -1
  335. package/src/proxy.js +4 -7
  336. package/src/runtime/cyberia-client/Dockerfile +9 -4
  337. package/src/runtime/cyberia-client/Dockerfile.dev +8 -2
  338. package/src/runtime/cyberia-server/Dockerfile +9 -4
  339. package/src/runtime/cyberia-server/Dockerfile.dev +8 -2
  340. package/src/runtime/engine-cyberia/Dockerfile +25 -9
  341. package/src/runtime/engine-cyberia/Dockerfile.dev +25 -9
  342. package/src/runtime/engine-cyberia/Dockerfile.test +4 -4
  343. package/src/runtime/engine-cyberia/docker-compose.yml +7 -7
  344. package/src/runtime/express/Express.js +32 -27
  345. package/src/runtime/lampp/Lampp.js +22 -70
  346. package/src/runtime/nginx/Nginx.js +1 -1
  347. package/src/runtime/wp/Wp.js +16 -48
  348. package/src/server/{catalog.js → build/catalog.js} +15 -5
  349. package/src/server/build/coverage.js +117 -0
  350. package/src/server/build/execution.js +402 -0
  351. package/src/server/build/package.js +465 -0
  352. package/src/server/build/testing.js +528 -0
  353. package/src/server/{dns.js → network/dns.js} +144 -11
  354. package/src/server/{forward-proxy.js → network/forward-proxy.js} +10 -18
  355. package/src/server/{middlewares.js → network/middlewares.js} +3 -3
  356. package/src/server/network/node-capability.js +98 -0
  357. package/src/server/{peer.js → network/peer.js} +3 -3
  358. package/src/server/{proxy.js → network/proxy.js} +7 -13
  359. package/src/server/network/router.js +356 -0
  360. package/src/server/{tls.js → network/tls.js} +2 -2
  361. package/src/server/{underpost-compression.js → network/underpost-compression.js} +1 -1
  362. package/src/server/{underpost-gateway.js → network/underpost-gateway.js} +7 -7
  363. package/src/server/{underpost-ingress.js → network/underpost-ingress.js} +2 -2
  364. package/src/server/{cri.js → ops/cri.js} +2 -2
  365. package/src/server/{cron.js → ops/cron.js} +349 -74
  366. package/src/server/ops/event-notification.js +284 -0
  367. package/src/server/{logger.js → ops/logger.js} +108 -23
  368. package/src/server/ops/monitoring.js +1724 -0
  369. package/src/server/{systemd.js → ops/systemd.js} +55 -1
  370. package/src/server/{conf.js → runtime/conf.js} +513 -422
  371. package/src/server/runtime/config-scope.js +215 -0
  372. package/src/server/runtime/environment.js +149 -0
  373. package/src/server/{process.js → runtime/process.js} +153 -12
  374. package/src/server/{runtime-status.js → runtime/runtime-status.js} +155 -16
  375. package/src/server/{runtime.js → runtime/runtime.js} +12 -8
  376. package/src/server/{start.js → runtime/start.js} +128 -39
  377. package/src/server/{auth.js → security/auth.js} +7 -8
  378. package/src/server/security/container-storage.js +382 -0
  379. package/src/server/{crypto.js → security/crypto.js} +1 -1
  380. package/src/server/{selinux.js → security/selinux.js} +1 -1
  381. package/src/server/{backup.js → storage/backup.js} +17 -8
  382. package/src/server/{data-query.js → storage/data-query.js} +1 -1
  383. package/src/server/{downloader.js → storage/downloader.js} +2 -2
  384. package/src/server/storage/repository.js +68 -0
  385. package/src/server.js +4 -7
  386. package/src/ws/IoInterface.js +1 -1
  387. package/src/ws/IoServer.js +1 -1
  388. package/src/ws/core/core.ws.connection.js +1 -1
  389. package/src/ws/core/core.ws.emit.js +1 -1
  390. package/src/ws/core/core.ws.server.js +1 -1
  391. package/src/ws/default/default.ws.connection.js +1 -1
  392. package/src/ws/default/default.ws.emit.js +1 -1
  393. package/src/ws/default/default.ws.server.js +1 -1
  394. package/test/e2e/event-e2e-public-ingress-down.js +45 -0
  395. package/test/e2e/event-e2e-wireguard-server-down.js +38 -0
  396. package/test/e2e/event-e2e-wireguard-spoke-down.js +40 -0
  397. package/test/{api.test.js → integration/app/api.test.js} +33 -14
  398. package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +30 -0
  399. package/test/{cyberia-instance-conf-defaults.test.js → integration/app/cyberia/cyberia-instance-conf-defaults.test.js} +1 -1
  400. package/test/integration/app/cyberia/cyberia-load.test.js +467 -0
  401. package/test/integration/app/cyberia/fallback-world-capture.test.js +253 -0
  402. package/test/integration/app/cyberia/object-layer-item-id.test.js +327 -0
  403. package/test/{shape-generator.test.js → integration/app/cyberia/shape-generator.test.js} +1 -1
  404. package/test/integration/infra/1-security/config-scope.test.js +305 -0
  405. package/test/integration/infra/1-security/container-storage.test.js +356 -0
  406. package/test/integration/infra/1-security/in-pod-cli-surface.test.js +86 -0
  407. package/test/integration/infra/1-security/secret-onboarding.test.js +930 -0
  408. package/test/{selinux.test.js → integration/infra/1-security/selinux.test.js} +2 -4
  409. package/test/{sops-secret-store.test.js → integration/infra/1-security/sops-secret-store.test.js} +415 -61
  410. package/test/integration/infra/1-security/systemd-service.test.js +70 -0
  411. package/test/integration/infra/1-security/underpost-config-secret.test.js +367 -0
  412. package/test/integration/infra/2-network/dns-firewall.test.js +566 -0
  413. package/test/integration/infra/2-network/node-capability.test.js +182 -0
  414. package/test/integration/infra/2-network/wireguard-cli.test.js +1163 -0
  415. package/test/{wireguard-edge.test.js → integration/infra/2-network/wireguard-edge.test.js} +609 -55
  416. package/test/{cluster-instances.test.js → integration/infra/3-cluster/cluster-instances.test.js} +11 -15
  417. package/test/{deploy-node-placement.test.js → integration/infra/3-cluster/deploy-node-placement.test.js} +3 -3
  418. package/test/integration/infra/3-cluster/docker-compose-stack.test.js +313 -0
  419. package/test/integration/infra/4-ingress/deploy-routes.test.js +379 -0
  420. package/test/integration/infra/4-ingress/gateway-static-assets.test.js +453 -0
  421. package/test/{instance-traffic-plan.test.js → integration/infra/4-ingress/instance-traffic-plan.test.js} +10 -6
  422. package/test/{underpost-gateway.test.js → integration/infra/4-ingress/underpost-gateway.test.js} +6 -6
  423. package/test/{underpost-ingress.test.js → integration/infra/4-ingress/underpost-ingress.test.js} +4 -4
  424. package/test/integration/infra/5-observability/cron-jobs.test.js +652 -0
  425. package/test/{deploy-monitor.test.js → integration/infra/5-observability/deploy-monitor.test.js} +29 -31
  426. package/test/integration/infra/5-observability/event-notification.test.js +197 -0
  427. package/test/integration/infra/5-observability/event-remediation.test.js +502 -0
  428. package/test/integration/infra/5-observability/event-targets.test.js +1174 -0
  429. package/test/integration/infra/5-observability/monitoring-stack.test.js +902 -0
  430. package/test/support/shell-harness.js +73 -0
  431. package/test/unit/build-template.test.js +97 -0
  432. package/test/unit/build-workflow-offline.test.js +132 -0
  433. package/test/unit/catalog.test.js +71 -0
  434. package/test/unit/client-build-docs.test.js +334 -0
  435. package/test/unit/conf-loading.test.js +303 -0
  436. package/test/unit/conf-resolution.test.js +979 -0
  437. package/test/unit/coverage-artifact.test.js +130 -0
  438. package/test/{crypto.test.js → unit/crypto.test.js} +1 -1
  439. package/test/unit/deploy-env-resolution.test.js +38 -0
  440. package/test/unit/deploy-log-table.test.js +447 -0
  441. package/test/unit/execution-profiles.test.js +219 -0
  442. package/test/unit/fleet-sync-source.test.js +149 -0
  443. package/test/unit/logger-redaction.test.js +112 -0
  444. package/test/unit/package.test.js +403 -0
  445. package/test/unit/prepare-host.test.js +299 -0
  446. package/test/unit/process-environment.test.js +18 -0
  447. package/test/unit/propagation-message.test.js +78 -0
  448. package/test/unit/redeploy-plan.test.js +24 -0
  449. package/test/unit/release-bump.test.js +474 -0
  450. package/test/unit/ssh-output-redaction.test.js +28 -0
  451. package/test/unit/start-options.test.js +46 -0
  452. package/test/unit/test-tiers.test.js +193 -0
  453. package/vitest.config.js +58 -0
  454. package/.nycrc +0 -9
  455. package/deploy/lib/logging.sh +0 -96
  456. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +0 -48
  457. package/manifests/mongodb/pv-pvc.yaml +0 -59
  458. package/scripts/coverall-test-cyberia.sh +0 -24
  459. package/scripts/coverall-test.sh +0 -24
  460. package/scripts/link-local-underpost-cli.sh +0 -6
  461. package/src/api/user/user.build.js +0 -16
  462. package/src/cli/env.js +0 -177
  463. package/src/client/components/core/Blockchain.js +0 -41
  464. package/src/client/components/core/Blog.js +0 -9
  465. package/src/client/components/core/KeyboardAvoidance.js +0 -145
  466. package/src/client/public/default/assets/background/dark.jpg +0 -0
  467. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  468. package/src/client/public/default/assets/background/white0.jpg +0 -0
  469. package/src/client/public/doc/favicon.ico +0 -0
  470. package/src/client/public/doc/sitemap +0 -148
  471. package/src/server/environment.js +0 -98
@@ -0,0 +1,193 @@
1
+ 'use strict';
2
+
3
+ import { expect } from 'chai';
4
+ import fs from 'node:fs';
5
+ import {
6
+ TEST_TIERS,
7
+ UNDERPOST_TESTING,
8
+ coverageIncludeFactory,
9
+ coverageThresholdFactory,
10
+ resolveTestSelection,
11
+ testProjectsFactory,
12
+ testSuiteNames,
13
+ } from '../../src/server/build/testing.js';
14
+
15
+ // The table declares every tier the platform ships. A product build slices the
16
+ // tree, so whether a tier's directory is present here is a catalog question,
17
+ // asserted in catalog.test.js — these are about the table itself.
18
+ describe('test tiers', () => {
19
+ it('names every tier uniquely', () => {
20
+ const names = TEST_TIERS.map(({ name }) => name);
21
+ expect(new Set(names).size).to.equal(names.length);
22
+ });
23
+
24
+ it('never leaves a tier on group order 0', () => {
25
+ // Vitest routes a single-worker project on the default 0 into a bucket it
26
+ // appends after every ordered group, which would run that tier last.
27
+ for (const { name, groupOrder } of TEST_TIERS) expect(groupOrder, name).to.be.greaterThan(0);
28
+ });
29
+
30
+ it('declares tiers in the order they run', () => {
31
+ const orders = TEST_TIERS.map(({ groupOrder }) => groupOrder);
32
+ expect(orders).to.deep.equal([...orders].sort((a, b) => a - b));
33
+ });
34
+
35
+ it('keeps delegated tiers in the last group', () => {
36
+ // They run after the Vitest pass, so an earlier group order would describe
37
+ // an execution order that does not happen.
38
+ const lastGroup = Math.max(...TEST_TIERS.map(({ groupOrder }) => groupOrder));
39
+ for (const { name, groupOrder, delegate } of TEST_TIERS) if (delegate) expect(groupOrder, name).to.equal(lastGroup);
40
+ });
41
+
42
+ it('exposes only non-delegated tiers as Vitest projects', () => {
43
+ const projects = testProjectsFactory().map(({ test }) => test.name);
44
+ expect(projects).to.deep.equal(TEST_TIERS.filter(({ delegate }) => !delegate).map(({ name }) => name));
45
+ });
46
+ });
47
+
48
+ describe('test tier selection', () => {
49
+ it('runs every tier when nothing is selected', () => {
50
+ for (const selector of ['', 'all']) {
51
+ const { projects, runVitest, delegated } = resolveTestSelection(selector);
52
+ // No explicit project list: Vitest runs them all, and a product build
53
+ // that strips one must not fail on a name it no longer ships.
54
+ expect(projects, selector).to.be.empty;
55
+ expect(runVitest, selector).to.equal(true);
56
+ expect(
57
+ delegated.map(({ name }) => name),
58
+ selector,
59
+ ).to.deep.equal(TEST_TIERS.filter(({ delegate }) => delegate).map(({ name }) => name));
60
+ }
61
+ });
62
+
63
+ it('expands a suite into its tiers', () => {
64
+ expect(resolveTestSelection('infra').projects).to.deep.equal(
65
+ TEST_TIERS.filter(({ name }) => name.startsWith('infra:')).map(({ name }) => name),
66
+ );
67
+ });
68
+
69
+ it('skips the Vitest pass when only delegated tiers are selected', () => {
70
+ const { runVitest, delegated } = resolveTestSelection('contracts');
71
+ expect(runVitest).to.equal(false);
72
+ expect(delegated.map(({ name }) => name)).to.deep.equal(['contracts']);
73
+ });
74
+
75
+ it('rejects an unknown selector instead of reporting an empty green run', () => {
76
+ expect(() => resolveTestSelection('not-a-suite')).to.throw(/unknown suite/);
77
+ });
78
+
79
+ it('offers every suite prefix as a selector', () => {
80
+ for (const suite of testSuiteNames()) expect(() => resolveTestSelection(suite), suite).to.not.throw();
81
+ });
82
+ });
83
+
84
+ describe('delegated tier commands', () => {
85
+ const delegated = TEST_TIERS.filter(({ delegate }) => delegate);
86
+
87
+ it('ships at least one delegated tier to assert against', () => {
88
+ expect(delegated).to.not.be.empty;
89
+ });
90
+
91
+ it('writes results only when a destination is given', () => {
92
+ for (const { name, delegate } of delegated) {
93
+ expect(delegate({}), name).to.not.include('--test-reporter-destination=/');
94
+ expect(delegate({ resultsPath: '/results/TEST-x.xml' }), name).to.include('/results/TEST-x.xml');
95
+ }
96
+ });
97
+
98
+ it('passes a name filter through to its runner', () => {
99
+ for (const { name, delegate } of delegated) expect(delegate({ grep: 'Burning' }), name).to.include('Burning');
100
+ });
101
+
102
+ // Under an outer `npm`, npx resolves the root project as the local prefix and
103
+ // pulls its own copy of a nested tool from the registry, which Hardhat then
104
+ // refuses to run as a non-local installation.
105
+ it('runs nested tooling from the nested install rather than through npx', () => {
106
+ for (const { name, delegate } of delegated) {
107
+ expect(delegate({}), name).to.not.match(/\bnpx\b/);
108
+ expect(delegate({}), name).to.include('./node_modules/.bin/');
109
+ }
110
+ });
111
+
112
+ // A directory left behind by an interrupted install passes a `-d` probe while
113
+ // holding none of the binaries the tier runs.
114
+ it('probes the installed binary before skipping the install', () => {
115
+ for (const { name, delegate } of delegated)
116
+ expect(delegate({}), name).to.match(/\[ -x node_modules\/\.bin\/[\w.-]+ \] \|\| npm ci/);
117
+ });
118
+ });
119
+
120
+ describe('coverage threshold', () => {
121
+ it('reports without gating until a run opts in', () => {
122
+ // A tier selection measures a slice of the tree, so the whole-suite number is
123
+ // not the bar it should be held to.
124
+ expect(coverageThresholdFactory({})).to.equal(null);
125
+ expect(coverageThresholdFactory({ COVERAGE_ENFORCE: '0' })).to.equal(null);
126
+ });
127
+
128
+ it('gates an opted-in run on the shipped threshold', () => {
129
+ for (const COVERAGE_ENFORCE of ['1', 'true'])
130
+ expect(coverageThresholdFactory({ COVERAGE_ENFORCE }), COVERAGE_ENFORCE).to.equal(
131
+ UNDERPOST_TESTING.coverageThreshold,
132
+ );
133
+ });
134
+
135
+ it('lets a repository ratchet its own bar', () => {
136
+ expect(coverageThresholdFactory({ COVERAGE_MIN: '25' })).to.equal(25);
137
+ // An unset repository variable arrives as an empty string, not as absent.
138
+ expect(coverageThresholdFactory({ COVERAGE_ENFORCE: '1', COVERAGE_MIN: '' })).to.equal(
139
+ UNDERPOST_TESTING.coverageThreshold,
140
+ );
141
+ });
142
+
143
+ it('refuses a bar that is not a percentage', () => {
144
+ for (const COVERAGE_MIN of ['eighty', '-1', '101'])
145
+ expect(() => coverageThresholdFactory({ COVERAGE_MIN }), COVERAGE_MIN).to.throw('COVERAGE_MIN');
146
+ });
147
+ });
148
+
149
+ describe('coverage scope', () => {
150
+ const vitestTiers = TEST_TIERS.filter(({ delegate }) => !delegate);
151
+
152
+ it('makes every Vitest tier accountable for the sources it drives', () => {
153
+ for (const { name, sources } of vitestTiers) expect(sources, name).to.not.be.empty;
154
+ });
155
+
156
+ it('leaves a delegated tier out of the Vitest report', () => {
157
+ // Its runner measures its own coverage, and this table only feeds Vitest.
158
+ for (const { name, sources, delegate } of TEST_TIERS) if (delegate) expect(sources, name).to.equal(undefined);
159
+ });
160
+
161
+ it('points every glob at something this tree ships', () => {
162
+ // A source that moved leaves the tier silently measuring nothing, which
163
+ // reads as coverage rather than as the missing measurement it is. A product
164
+ // build slices the tree, so only tiers it kept are asserted.
165
+ for (const { name, directory, sources } of vitestTiers) {
166
+ if (!fs.existsSync(directory)) continue;
167
+ for (const glob of sources) expect(fs.globSync(glob), `${name}: ${glob}`).to.not.be.empty;
168
+ }
169
+ });
170
+
171
+ it('measures every tier when the run selects none', () => {
172
+ const everySource = new Set(vitestTiers.flatMap(({ sources }) => sources));
173
+ expect(coverageIncludeFactory([])).to.have.members([...everySource]);
174
+ });
175
+
176
+ it('measures only the selected tiers', () => {
177
+ const unit = TEST_TIERS.find(({ name }) => name === 'unit').sources;
178
+ for (const argv of [['--project', 'unit'], ['--project=unit']])
179
+ expect(coverageIncludeFactory(['npx', 'vitest', 'run', ...argv, '--coverage']), argv.join(' ')).to.deep.equal(
180
+ unit,
181
+ );
182
+ });
183
+
184
+ it('counts a source two tiers drive once', () => {
185
+ const include = coverageIncludeFactory(['--project', 'infra:3-cluster', '--project', 'infra:4-ingress']);
186
+ expect(new Set(include).size).to.equal(include.length);
187
+ expect(include).to.include('src/server/runtime/conf.js');
188
+ });
189
+
190
+ it('rejects a selection that matches no tier', () => {
191
+ expect(() => coverageIncludeFactory(['--project', 'not-a-tier'])).to.throw(/unknown suite/);
192
+ });
193
+ });
@@ -0,0 +1,58 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import {
3
+ UNDERPOST_TESTING,
4
+ coverageIncludeFactory,
5
+ coverageThresholdFactory,
6
+ testProjectsFactory,
7
+ } from './src/server/build/testing.js';
8
+
9
+ const allureResultsDirectory = process.env[UNDERPOST_TESTING.allureResultsEnvKey];
10
+ const coverageThreshold = coverageThresholdFactory(process.env);
11
+ const coverageInclude = coverageIncludeFactory(process.argv);
12
+
13
+ // Spread into every tier: a Vitest project inherits nothing from the root
14
+ // `test` block, and only `coverage` and `reporters` are read from it.
15
+ const projectDefaults = {
16
+ // Mocha's `describe`/`it` and the hooks stay global, so the suites read the
17
+ // same either side of the migration and carry no runner import.
18
+ globals: true,
19
+ environment: 'node',
20
+ // A tier is only meaningful if its failures are attributable to it, and a
21
+ // suite that reads `dd.routes` or binds a fixed port cannot share a worker
22
+ // with another doing the same.
23
+ fileParallelism: false,
24
+ ...(allureResultsDirectory ? { setupFiles: ['allure-vitest/setup'] } : {}),
25
+ };
26
+
27
+ export default defineConfig({
28
+ test: {
29
+ reporters: [
30
+ 'default',
31
+ ...(allureResultsDirectory ? [['allure-vitest/reporter', { resultsDir: allureResultsDirectory }]] : []),
32
+ ],
33
+ coverage: {
34
+ provider: 'v8',
35
+ reportsDirectory: UNDERPOST_TESTING.coverageDirectory,
36
+ // `lcov` is what Coveralls ingests, `json` is what a merged multi-job
37
+ // report is assembled from, `text` is what a local run reads.
38
+ reporter: ['text', 'lcov', 'json'],
39
+ // Written even when the run fails: the coverage workflows upload the report
40
+ // from a job the threshold step is meant to fail, and without it the badge
41
+ // freezes at the last passing build instead of moving with the tree.
42
+ reportOnFailure: true,
43
+ // The tiers in the selection decide what is measured, so a partial run
44
+ // reports the slice it drives and the whole run reports the whole of it —
45
+ // rather than every module the CLI barrel drags into a worker on import.
46
+ include: coverageInclude,
47
+ // Only the suites themselves: an `include` whitelist already keeps
48
+ // dependencies, bundles and generated assets out, and a directory pattern
49
+ // here is not anchored to the root — `test/**` also excluded the API
50
+ // surfaces named `test`, so the tier covering them reported nothing.
51
+ exclude: ['**/*.{test,spec}.js'],
52
+ // Absent unless the run opted in, so a single-tier run reports its slice
53
+ // instead of failing against a number it never measured.
54
+ ...(coverageThreshold === null ? {} : { thresholds: { lines: coverageThreshold } }),
55
+ },
56
+ projects: testProjectsFactory(projectDefaults),
57
+ },
58
+ });
package/.nycrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "exclude": [],
3
- "include": ["test"],
4
- "output": "reports",
5
- "reporter": ["html", "text", "lcov", "text-lcov", "cobertura"],
6
- "sourceMap": true,
7
- "instrument": true,
8
- "all": true
9
- }
@@ -1,96 +0,0 @@
1
- # Shared logging helpers for deploy/<deploy-id>/*.sh. Sourced, never executed directly.
2
- #
3
- # Deploy script contract:
4
- # - one run_quiet call per remote command, with its own label
5
- # - the body lives in main(), invoked on the last line: the first remote command
6
- # pulls this repository, rewriting the running script while bash reads it
7
- #
8
- # run_quiet hides normal output, prints only `patterns` matches plus the next
9
- # `lines_after` lines, and returns the command's exit status so `set -e` stops
10
- # the deployment. On failure it keeps two temp files and prints their paths in
11
- # red instead of their contents: the command's own stderr (native error message
12
- # and stack trace) and the full unfiltered log up to the error.
13
-
14
- RUN_QUIET_RED=$'\033[0;31m'
15
- RUN_QUIET_RESET=$'\033[0m'
16
-
17
- RUN_QUIET_NODE_NAME=$(hostname 2>/dev/null | tr '[:upper:]' '[:lower:]')
18
- RUN_QUIET_NODE_TAG=${RUN_QUIET_NODE_NAME:+ [$RUN_QUIET_NODE_NAME]}
19
-
20
- run_quiet() {
21
- local label="$1"
22
- local patterns="$2"
23
- local lines_after="$3"
24
- shift 3
25
-
26
- local debug_log
27
- local error_log
28
- local fifo_dir
29
- local filter_pid
30
- local stderr_pid
31
- local status=0
32
-
33
- echo "$(date -Is) $RUN_QUIET_NODE_TAG ▶ $label"
34
-
35
- debug_log=$(mktemp --suffix=.debug.log)
36
- error_log=$(mktemp --suffix=.error.log)
37
- fifo_dir=$(mktemp -d)
38
- mkfifo "$fifo_dir/merged" "$fifo_dir/stderr"
39
-
40
- # The filter reads the live stream rather than the finished log: a deployment
41
- # monitor prints its matches for minutes before exiting, so a pass over the
42
- # completed file would show nothing until then. fflush defeats awk's block
43
- # buffering, which otherwise withholds matches whenever stdout is a pipe.
44
- # awk writes the debug log itself rather than piping through tee, so the
45
- # reader stays a single process that a kill can always release.
46
- awk \
47
- -v pattern="$patterns" \
48
- -v lines_after="$lines_after" \
49
- -v debug_log="$debug_log" '
50
- {
51
- print > debug_log
52
- }
53
- $0 ~ pattern {
54
- remaining = lines_after + 1
55
- }
56
- remaining > 0 {
57
- print
58
- fflush()
59
- remaining--
60
- }
61
- ' <"$fifo_dir/merged" &
62
- filter_pid=$!
63
-
64
- # stderr is duplicated: on its own for the native error and stack trace, and
65
- # into the merged stream so both the debug log and the filter see it in
66
- # chronological order with stdout.
67
- tee -a "$error_log" <"$fifo_dir/stderr" >"$fifo_dir/merged" &
68
- stderr_pid=$!
69
-
70
- "$@" >"$fifo_dir/merged" 2>"$fifo_dir/stderr" || status=$?
71
-
72
- # Drain both readers before the paths are printed, or the trace can still be
73
- # in flight. Bounded: a command that leaks a child holding a stream open must
74
- # not hang the deployment, and by then everything read has been written.
75
- run_quiet_drain "$stderr_pid"
76
- run_quiet_drain "$filter_pid"
77
- rm -rf "$fifo_dir"
78
-
79
- if [ "$status" -ne 0 ]; then
80
- printf '%s✖ %s failed (exit %s)\n error trace: %s\n debug log: %s%s\n' \
81
- "$RUN_QUIET_RED" "$label" "$status" "$error_log" "$debug_log" "$RUN_QUIET_RESET" >&2
82
- return "$status"
83
- fi
84
-
85
- rm -f "$debug_log" "$error_log"
86
-
87
- return "$status"
88
- }
89
-
90
- run_quiet_drain() {
91
- local pid="$1"
92
-
93
- timeout 10 tail --pid="$pid" -f /dev/null 2>/dev/null || true
94
- kill "$pid" 2>/dev/null || true
95
- wait "$pid" 2>/dev/null || true
96
- }
@@ -1,48 +0,0 @@
1
- apiVersion: batch/v1
2
- kind: CronJob
3
- metadata:
4
- name: dd-cron-dns
5
- namespace: default
6
- labels:
7
- app: dd-cron-dns
8
- managed-by: underpost
9
- spec:
10
- schedule: "* * * * *"
11
- concurrencyPolicy: Forbid
12
- startingDeadlineSeconds: 200
13
- successfulJobsHistoryLimit: 3
14
- failedJobsHistoryLimit: 1
15
- suspend: false
16
- jobTemplate:
17
- spec:
18
- template:
19
- metadata:
20
- labels:
21
- app: dd-cron-dns
22
- managed-by: underpost
23
- spec:
24
- containers:
25
- - name: dd-cron-dns
26
- image: underpost/underpost-engine:v3.3.0
27
- command:
28
- - /bin/sh
29
- - -c
30
- - >
31
- cd /home/dd/engine &&
32
- node bin env dd-cron production &&
33
- node bin cron dd-cron dns --git --kubeadm
34
- volumeMounts:
35
- - mountPath: /home/dd/engine
36
- name: underpost-cron-container-volume
37
- - mountPath: /usr/lib/node_modules/underpost
38
- name: underpost-share-env
39
- volumes:
40
- - hostPath:
41
- path: /home/dd/engine
42
- type: Directory
43
- name: underpost-cron-container-volume
44
- - hostPath:
45
- path: /root/.nvm/versions/node/v24.15.0/lib/node_modules/underpost
46
- type: DirectoryOrCreate
47
- name: underpost-share-env
48
- restartPolicy: OnFailure
@@ -1,59 +0,0 @@
1
- apiVersion: v1
2
- kind: PersistentVolume
3
- metadata:
4
- name: mongodb-pv-0
5
- labels:
6
- app: mongodb
7
- spec:
8
- capacity:
9
- storage: 5Gi
10
- accessModes:
11
- - ReadWriteOnce
12
- persistentVolumeReclaimPolicy: Retain
13
- storageClassName: mongodb-storage-class
14
- claimRef:
15
- namespace: default
16
- name: mongodb-storage-mongodb-0
17
- hostPath:
18
- path: /data/mongodb/v0
19
- type: DirectoryOrCreate
20
- ---
21
- apiVersion: v1
22
- kind: PersistentVolume
23
- metadata:
24
- name: mongodb-pv-1
25
- labels:
26
- app: mongodb
27
- spec:
28
- capacity:
29
- storage: 5Gi
30
- accessModes:
31
- - ReadWriteOnce
32
- persistentVolumeReclaimPolicy: Retain
33
- storageClassName: mongodb-storage-class
34
- claimRef:
35
- namespace: default
36
- name: mongodb-storage-mongodb-1
37
- hostPath:
38
- path: /data/mongodb/v1
39
- type: DirectoryOrCreate
40
- ---
41
- apiVersion: v1
42
- kind: PersistentVolume
43
- metadata:
44
- name: mongodb-pv-2
45
- labels:
46
- app: mongodb
47
- spec:
48
- capacity:
49
- storage: 5Gi
50
- accessModes:
51
- - ReadWriteOnce
52
- persistentVolumeReclaimPolicy: Retain
53
- storageClassName: mongodb-storage-class
54
- claimRef:
55
- namespace: default
56
- name: mongodb-storage-mongodb-2
57
- hostPath:
58
- path: /data/mongodb/v2
59
- type: DirectoryOrCreate
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -u -o pipefail
3
-
4
- EXCLUDES=(
5
- --exclude="test/cluster-instances.test.js"
6
- --exclude="test/deploy-monitor.test.js"
7
- --exclude="test/deploy-node-placement.test.js"
8
- --exclude="test/instance-traffic-plan.test.js"
9
- --exclude="test/sops-secret-store.test.js"
10
- --exclude="test/underpost-gateway.test.js"
11
- --exclude="test/underpost-ingress.test.js"
12
- --exclude="test/wireguard-edge.test.js"
13
- )
14
-
15
- TESTS=(
16
- test/cyberia-instance-conf-defaults.test.js
17
- test/cyberia-load.test.js
18
- test/object-layer-item-id.test.js
19
- test/api.test.js
20
- test/crypto.test.js
21
- test/shape-generator.test.js
22
- )
23
-
24
- c8 "${EXCLUDES[@]}" mocha "${TESTS[@]}"
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -u -o pipefail
3
-
4
- EXCLUDES=(
5
- --exclude="test/cyberia-instance-conf-defaults.test.js"
6
- --exclude="test/cyberia-load.test.js"
7
- --exclude="test/object-layer-item-id.test.js"
8
- --exclude="test/api.test.js"
9
- --exclude="test/crypto.test.js"
10
- --exclude="test/shape-generator.test.js"
11
- )
12
-
13
- TESTS=(
14
- test/cluster-instances.test.js
15
- test/deploy-monitor.test.js
16
- test/deploy-node-placement.test.js
17
- test/instance-traffic-plan.test.js
18
- test/sops-secret-store.test.js
19
- test/underpost-gateway.test.js
20
- test/underpost-ingress.test.js
21
- test/wireguard-edge.test.js
22
- )
23
-
24
- c8 "${EXCLUDES[@]}" mocha "${TESTS[@]}"
@@ -1,6 +0,0 @@
1
-
2
- #!/usr/bin/env bash
3
- set -euo pipefail
4
-
5
- cd /home/dd && underpost clone underpostnet/pwa-microservices-template
6
- cd /home/dd/pwa-microservices-template && npm install && npm link
@@ -1,16 +0,0 @@
1
- import fs from 'fs-extra';
2
- import { faBase64Png, getBufferPngText } from '../../server/client-icons.js';
3
-
4
- process.exit(0);
5
-
6
- fs.writeFileSync(
7
- './tmp/api-user-invalid-token.png',
8
- await getBufferPngText({ text: 'Invalid token', textColor: '#ff0000' }),
9
- 'utf8',
10
- );
11
- fs.writeFileSync(
12
- './tmp/api-user-recover.png',
13
- Buffer.from(faBase64Png('rotate-left', 50, 50, '#ffffff'), 'base64'),
14
- 'utf8',
15
- );
16
- fs.writeFileSync('./tmp/api-user-check.png', Buffer.from(faBase64Png('check', 50, 50), 'base64'), 'utf8');