@flui-cloud/cli 0.0.1

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 (873) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +124 -0
  3. package/bin/run +17 -0
  4. package/lib/cli/src/background/cluster-worker.d.ts +11 -0
  5. package/lib/cli/src/background/cluster-worker.js +90 -0
  6. package/lib/cli/src/cli-providers.module.d.ts +2 -0
  7. package/lib/cli/src/cli-providers.module.js +118 -0
  8. package/lib/cli/src/cli.module.d.ts +13 -0
  9. package/lib/cli/src/cli.module.js +80 -0
  10. package/lib/cli/src/commands/_diag-oidc.d.ts +6 -0
  11. package/lib/cli/src/commands/_diag-oidc.js +132 -0
  12. package/lib/cli/src/commands/app/backup/create.d.ts +20 -0
  13. package/lib/cli/src/commands/app/backup/create.js +128 -0
  14. package/lib/cli/src/commands/app/backup/delete.d.ts +19 -0
  15. package/lib/cli/src/commands/app/backup/delete.js +95 -0
  16. package/lib/cli/src/commands/app/build.d.ts +17 -0
  17. package/lib/cli/src/commands/app/build.js +133 -0
  18. package/lib/cli/src/commands/app/builds.d.ts +14 -0
  19. package/lib/cli/src/commands/app/builds.js +82 -0
  20. package/lib/cli/src/commands/app/crash.d.ts +16 -0
  21. package/lib/cli/src/commands/app/crash.js +106 -0
  22. package/lib/cli/src/commands/app/crashes.d.ts +15 -0
  23. package/lib/cli/src/commands/app/crashes.js +99 -0
  24. package/lib/cli/src/commands/app/delete.d.ts +16 -0
  25. package/lib/cli/src/commands/app/delete.js +149 -0
  26. package/lib/cli/src/commands/app/image/delete.d.ts +18 -0
  27. package/lib/cli/src/commands/app/image/delete.js +72 -0
  28. package/lib/cli/src/commands/app/init.d.ts +40 -0
  29. package/lib/cli/src/commands/app/init.js +436 -0
  30. package/lib/cli/src/commands/app/list.d.ts +11 -0
  31. package/lib/cli/src/commands/app/list.js +84 -0
  32. package/lib/cli/src/commands/app/logs.d.ts +18 -0
  33. package/lib/cli/src/commands/app/logs.js +121 -0
  34. package/lib/cli/src/commands/app/metrics.d.ts +17 -0
  35. package/lib/cli/src/commands/app/metrics.js +100 -0
  36. package/lib/cli/src/commands/app/redeploy.d.ts +14 -0
  37. package/lib/cli/src/commands/app/redeploy.js +60 -0
  38. package/lib/cli/src/commands/app/releases.d.ts +15 -0
  39. package/lib/cli/src/commands/app/releases.js +117 -0
  40. package/lib/cli/src/commands/app/restart.d.ts +12 -0
  41. package/lib/cli/src/commands/app/restart.js +44 -0
  42. package/lib/cli/src/commands/app/scale.d.ts +13 -0
  43. package/lib/cli/src/commands/app/scale.js +58 -0
  44. package/lib/cli/src/commands/app/snapshot/create.d.ts +14 -0
  45. package/lib/cli/src/commands/app/snapshot/create.js +85 -0
  46. package/lib/cli/src/commands/app/snapshot/delete.d.ts +14 -0
  47. package/lib/cli/src/commands/app/snapshot/delete.js +63 -0
  48. package/lib/cli/src/commands/app/snapshot/list.d.ts +11 -0
  49. package/lib/cli/src/commands/app/snapshot/list.js +82 -0
  50. package/lib/cli/src/commands/app/snapshot/restore.d.ts +15 -0
  51. package/lib/cli/src/commands/app/snapshot/restore.js +74 -0
  52. package/lib/cli/src/commands/app/snapshot/swap.d.ts +15 -0
  53. package/lib/cli/src/commands/app/snapshot/swap.js +68 -0
  54. package/lib/cli/src/commands/app/start.d.ts +12 -0
  55. package/lib/cli/src/commands/app/start.js +45 -0
  56. package/lib/cli/src/commands/app/status.d.ts +15 -0
  57. package/lib/cli/src/commands/app/status.js +108 -0
  58. package/lib/cli/src/commands/app/stop.d.ts +12 -0
  59. package/lib/cli/src/commands/app/stop.js +45 -0
  60. package/lib/cli/src/commands/app/versions.d.ts +14 -0
  61. package/lib/cli/src/commands/app/versions.js +80 -0
  62. package/lib/cli/src/commands/auth/generate-api-key.d.ts +12 -0
  63. package/lib/cli/src/commands/auth/generate-api-key.js +90 -0
  64. package/lib/cli/src/commands/auth/login.d.ts +11 -0
  65. package/lib/cli/src/commands/auth/login.js +296 -0
  66. package/lib/cli/src/commands/auth/reset-password.d.ts +15 -0
  67. package/lib/cli/src/commands/auth/reset-password.js +253 -0
  68. package/lib/cli/src/commands/backup/destination/create.d.ts +22 -0
  69. package/lib/cli/src/commands/backup/destination/create.js +102 -0
  70. package/lib/cli/src/commands/backup/destination/delete.d.ts +11 -0
  71. package/lib/cli/src/commands/backup/destination/delete.js +46 -0
  72. package/lib/cli/src/commands/backup/destination/list.d.ts +9 -0
  73. package/lib/cli/src/commands/backup/destination/list.js +42 -0
  74. package/lib/cli/src/commands/backup/destination/show.d.ts +11 -0
  75. package/lib/cli/src/commands/backup/destination/show.js +45 -0
  76. package/lib/cli/src/commands/backup/destination/test.d.ts +8 -0
  77. package/lib/cli/src/commands/backup/destination/test.js +39 -0
  78. package/lib/cli/src/commands/backup/job/list.d.ts +9 -0
  79. package/lib/cli/src/commands/backup/job/list.js +38 -0
  80. package/lib/cli/src/commands/backup/job/run.d.ts +8 -0
  81. package/lib/cli/src/commands/backup/job/run.js +32 -0
  82. package/lib/cli/src/commands/backup/job/show.d.ts +11 -0
  83. package/lib/cli/src/commands/backup/job/show.js +38 -0
  84. package/lib/cli/src/commands/backup/policy/create.d.ts +21 -0
  85. package/lib/cli/src/commands/backup/policy/create.js +97 -0
  86. package/lib/cli/src/commands/backup/policy/delete.d.ts +11 -0
  87. package/lib/cli/src/commands/backup/policy/delete.js +42 -0
  88. package/lib/cli/src/commands/backup/policy/list.d.ts +9 -0
  89. package/lib/cli/src/commands/backup/policy/list.js +40 -0
  90. package/lib/cli/src/commands/backup/policy/show.d.ts +11 -0
  91. package/lib/cli/src/commands/backup/policy/show.js +45 -0
  92. package/lib/cli/src/commands/backup/restore/create.d.ts +14 -0
  93. package/lib/cli/src/commands/backup/restore/create.js +68 -0
  94. package/lib/cli/src/commands/backup/restore/list.d.ts +8 -0
  95. package/lib/cli/src/commands/backup/restore/list.js +33 -0
  96. package/lib/cli/src/commands/backup/restore/preview.d.ts +9 -0
  97. package/lib/cli/src/commands/backup/restore/preview.js +29 -0
  98. package/lib/cli/src/commands/backup/restore/show.d.ts +11 -0
  99. package/lib/cli/src/commands/backup/restore/show.js +40 -0
  100. package/lib/cli/src/commands/catalog/validate.d.ts +14 -0
  101. package/lib/cli/src/commands/catalog/validate.js +155 -0
  102. package/lib/cli/src/commands/cluster/destroy.d.ts +15 -0
  103. package/lib/cli/src/commands/cluster/destroy.js +137 -0
  104. package/lib/cli/src/commands/config/get.d.ts +9 -0
  105. package/lib/cli/src/commands/config/get.js +47 -0
  106. package/lib/cli/src/commands/config/list.d.ts +15 -0
  107. package/lib/cli/src/commands/config/list.js +109 -0
  108. package/lib/cli/src/commands/config/remove.d.ts +12 -0
  109. package/lib/cli/src/commands/config/remove.js +92 -0
  110. package/lib/cli/src/commands/config/set.d.ts +15 -0
  111. package/lib/cli/src/commands/config/set.js +152 -0
  112. package/lib/cli/src/commands/config/show.d.ts +6 -0
  113. package/lib/cli/src/commands/config/show.js +15 -0
  114. package/lib/cli/src/commands/context/create.d.ts +12 -0
  115. package/lib/cli/src/commands/context/create.js +46 -0
  116. package/lib/cli/src/commands/context/delete.d.ts +12 -0
  117. package/lib/cli/src/commands/context/delete.js +53 -0
  118. package/lib/cli/src/commands/context/list.d.ts +6 -0
  119. package/lib/cli/src/commands/context/list.js +29 -0
  120. package/lib/cli/src/commands/context/show.d.ts +6 -0
  121. package/lib/cli/src/commands/context/show.js +12 -0
  122. package/lib/cli/src/commands/context/use.d.ts +9 -0
  123. package/lib/cli/src/commands/context/use.js +30 -0
  124. package/lib/cli/src/commands/deploy.d.ts +49 -0
  125. package/lib/cli/src/commands/deploy.js +542 -0
  126. package/lib/cli/src/commands/dev/creds.d.ts +19 -0
  127. package/lib/cli/src/commands/dev/creds.js +290 -0
  128. package/lib/cli/src/commands/dev/tunnel.d.ts +15 -0
  129. package/lib/cli/src/commands/dev/tunnel.js +268 -0
  130. package/lib/cli/src/commands/dns/cleanup.d.ts +11 -0
  131. package/lib/cli/src/commands/dns/cleanup.js +93 -0
  132. package/lib/cli/src/commands/env/capacity.d.ts +12 -0
  133. package/lib/cli/src/commands/env/capacity.js +177 -0
  134. package/lib/cli/src/commands/env/create.d.ts +21 -0
  135. package/lib/cli/src/commands/env/create.js +721 -0
  136. package/lib/cli/src/commands/env/credentials.d.ts +21 -0
  137. package/lib/cli/src/commands/env/credentials.js +435 -0
  138. package/lib/cli/src/commands/env/destroy.d.ts +9 -0
  139. package/lib/cli/src/commands/env/destroy.js +145 -0
  140. package/lib/cli/src/commands/env/diag-ca.d.ts +14 -0
  141. package/lib/cli/src/commands/env/diag-ca.js +192 -0
  142. package/lib/cli/src/commands/env/export-config.d.ts +39 -0
  143. package/lib/cli/src/commands/env/export-config.js +386 -0
  144. package/lib/cli/src/commands/env/force-ready.d.ts +10 -0
  145. package/lib/cli/src/commands/env/force-ready.js +222 -0
  146. package/lib/cli/src/commands/env/inspect.d.ts +12 -0
  147. package/lib/cli/src/commands/env/inspect.js +192 -0
  148. package/lib/cli/src/commands/env/kubectl.d.ts +9 -0
  149. package/lib/cli/src/commands/env/kubectl.js +33 -0
  150. package/lib/cli/src/commands/env/logs.d.ts +12 -0
  151. package/lib/cli/src/commands/env/logs.js +136 -0
  152. package/lib/cli/src/commands/env/orphan-volumes.d.ts +11 -0
  153. package/lib/cli/src/commands/env/orphan-volumes.js +153 -0
  154. package/lib/cli/src/commands/env/refresh-kubeconfig.d.ts +6 -0
  155. package/lib/cli/src/commands/env/refresh-kubeconfig.js +66 -0
  156. package/lib/cli/src/commands/env/repair-ssh-ca.d.ts +11 -0
  157. package/lib/cli/src/commands/env/repair-ssh-ca.js +137 -0
  158. package/lib/cli/src/commands/env/restart.d.ts +10 -0
  159. package/lib/cli/src/commands/env/restart.js +187 -0
  160. package/lib/cli/src/commands/env/scale-master.d.ts +11 -0
  161. package/lib/cli/src/commands/env/scale-master.js +160 -0
  162. package/lib/cli/src/commands/env/scale-node.d.ts +14 -0
  163. package/lib/cli/src/commands/env/scale-node.js +139 -0
  164. package/lib/cli/src/commands/env/status.d.ts +10 -0
  165. package/lib/cli/src/commands/env/status.js +182 -0
  166. package/lib/cli/src/commands/env/stop.d.ts +6 -0
  167. package/lib/cli/src/commands/env/stop.js +147 -0
  168. package/lib/cli/src/commands/env/storage-expand.d.ts +10 -0
  169. package/lib/cli/src/commands/env/storage-expand.js +124 -0
  170. package/lib/cli/src/commands/env/storage.d.ts +8 -0
  171. package/lib/cli/src/commands/env/storage.js +92 -0
  172. package/lib/cli/src/commands/env/sync.d.ts +17 -0
  173. package/lib/cli/src/commands/env/sync.js +225 -0
  174. package/lib/cli/src/commands/env/uncordon.d.ts +9 -0
  175. package/lib/cli/src/commands/env/uncordon.js +73 -0
  176. package/lib/cli/src/commands/env/update-firewall.d.ts +9 -0
  177. package/lib/cli/src/commands/env/update-firewall.js +185 -0
  178. package/lib/cli/src/commands/integration/connect.d.ts +13 -0
  179. package/lib/cli/src/commands/integration/connect.js +161 -0
  180. package/lib/cli/src/commands/integration/ghcr-pat/revoke.d.ts +9 -0
  181. package/lib/cli/src/commands/integration/ghcr-pat/revoke.js +61 -0
  182. package/lib/cli/src/commands/integration/ghcr-pat/set.d.ts +12 -0
  183. package/lib/cli/src/commands/integration/ghcr-pat/set.js +141 -0
  184. package/lib/cli/src/commands/integration/ghcr-pat/status.d.ts +6 -0
  185. package/lib/cli/src/commands/integration/ghcr-pat/status.js +69 -0
  186. package/lib/cli/src/commands/integration/installations.d.ts +6 -0
  187. package/lib/cli/src/commands/integration/installations.js +45 -0
  188. package/lib/cli/src/commands/integration/list.d.ts +8 -0
  189. package/lib/cli/src/commands/integration/list.js +67 -0
  190. package/lib/cli/src/commands/integration/remove-installation.d.ts +12 -0
  191. package/lib/cli/src/commands/integration/remove-installation.js +71 -0
  192. package/lib/cli/src/commands/integration/setup-github-app.d.ts +10 -0
  193. package/lib/cli/src/commands/integration/setup-github-app.js +162 -0
  194. package/lib/cli/src/commands/node/add.d.ts +11 -0
  195. package/lib/cli/src/commands/node/add.js +103 -0
  196. package/lib/cli/src/commands/node/list.d.ts +11 -0
  197. package/lib/cli/src/commands/node/list.js +83 -0
  198. package/lib/cli/src/commands/node/remove.d.ts +16 -0
  199. package/lib/cli/src/commands/node/remove.js +161 -0
  200. package/lib/cli/src/commands/reconcile.d.ts +19 -0
  201. package/lib/cli/src/commands/reconcile.js +171 -0
  202. package/lib/cli/src/commands/repo/connect.d.ts +12 -0
  203. package/lib/cli/src/commands/repo/connect.js +133 -0
  204. package/lib/cli/src/commands/repo/disconnect.d.ts +12 -0
  205. package/lib/cli/src/commands/repo/disconnect.js +73 -0
  206. package/lib/cli/src/commands/repo/list.d.ts +9 -0
  207. package/lib/cli/src/commands/repo/list.js +66 -0
  208. package/lib/cli/src/commands/server-types/list.d.ts +12 -0
  209. package/lib/cli/src/commands/server-types/list.js +205 -0
  210. package/lib/cli/src/commands/ssh.d.ts +9 -0
  211. package/lib/cli/src/commands/ssh.js +94 -0
  212. package/lib/cli/src/commands/standalone/install.d.ts +27 -0
  213. package/lib/cli/src/commands/standalone/install.js +330 -0
  214. package/lib/cli/src/commands/template/use.d.ts +16 -0
  215. package/lib/cli/src/commands/template/use.js +111 -0
  216. package/lib/cli/src/commands/update.d.ts +6 -0
  217. package/lib/cli/src/commands/update.js +87 -0
  218. package/lib/cli/src/config/bootstrap.config.d.ts +37 -0
  219. package/lib/cli/src/config/bootstrap.config.js +33 -0
  220. package/lib/cli/src/config/defaults.d.ts +46 -0
  221. package/lib/cli/src/config/defaults.js +79 -0
  222. package/lib/cli/src/config/key-router.d.ts +22 -0
  223. package/lib/cli/src/config/key-router.js +45 -0
  224. package/lib/cli/src/config/preferences-echo.d.ts +9 -0
  225. package/lib/cli/src/config/preferences-echo.js +61 -0
  226. package/lib/cli/src/config/preferences-resolver.d.ts +43 -0
  227. package/lib/cli/src/config/preferences-resolver.js +100 -0
  228. package/lib/cli/src/config/preferences-schema.d.ts +32 -0
  229. package/lib/cli/src/config/preferences-schema.js +53 -0
  230. package/lib/cli/src/hooks/command_not_found.d.ts +3 -0
  231. package/lib/cli/src/hooks/command_not_found.js +44 -0
  232. package/lib/cli/src/lib/api-client.d.ts +58 -0
  233. package/lib/cli/src/lib/api-client.js +162 -0
  234. package/lib/cli/src/lib/backup-client.d.ts +131 -0
  235. package/lib/cli/src/lib/backup-client.js +78 -0
  236. package/lib/cli/src/lib/browser-callback.d.ts +3 -0
  237. package/lib/cli/src/lib/browser-callback.js +83 -0
  238. package/lib/cli/src/lib/byos-precheck.d.ts +29 -0
  239. package/lib/cli/src/lib/byos-precheck.js +162 -0
  240. package/lib/cli/src/lib/ca-utils.d.ts +13 -0
  241. package/lib/cli/src/lib/ca-utils.js +72 -0
  242. package/lib/cli/src/lib/cli-credential-provider.service.d.ts +31 -0
  243. package/lib/cli/src/lib/cli-credential-provider.service.js +86 -0
  244. package/lib/cli/src/lib/config-storage.d.ts +128 -0
  245. package/lib/cli/src/lib/config-storage.js +349 -0
  246. package/lib/cli/src/lib/config.d.ts +23 -0
  247. package/lib/cli/src/lib/config.js +113 -0
  248. package/lib/cli/src/lib/context-banner.d.ts +12 -0
  249. package/lib/cli/src/lib/context-banner.js +25 -0
  250. package/lib/cli/src/lib/format-bytes.d.ts +1 -0
  251. package/lib/cli/src/lib/format-bytes.js +18 -0
  252. package/lib/cli/src/lib/framework-detector.d.ts +12 -0
  253. package/lib/cli/src/lib/framework-detector.js +216 -0
  254. package/lib/cli/src/lib/framework-postchecks.d.ts +11 -0
  255. package/lib/cli/src/lib/framework-postchecks.js +152 -0
  256. package/lib/cli/src/lib/nest-app.d.ts +17 -0
  257. package/lib/cli/src/lib/nest-app.js +69 -0
  258. package/lib/cli/src/lib/nip-base-domain.util.d.ts +8 -0
  259. package/lib/cli/src/lib/nip-base-domain.util.js +17 -0
  260. package/lib/cli/src/lib/profile-manager.d.ts +56 -0
  261. package/lib/cli/src/lib/profile-manager.js +207 -0
  262. package/lib/cli/src/lib/prompts.d.ts +67 -0
  263. package/lib/cli/src/lib/prompts.js +475 -0
  264. package/lib/cli/src/lib/provider-credential-schemas.d.ts +29 -0
  265. package/lib/cli/src/lib/provider-credential-schemas.js +48 -0
  266. package/lib/cli/src/lib/repositories/cli-cluster.repository.d.ts +56 -0
  267. package/lib/cli/src/lib/repositories/cli-cluster.repository.js +216 -0
  268. package/lib/cli/src/lib/repositories/cli-firewall.repository.d.ts +13 -0
  269. package/lib/cli/src/lib/repositories/cli-firewall.repository.js +147 -0
  270. package/lib/cli/src/lib/repositories/cli-node.repository.d.ts +26 -0
  271. package/lib/cli/src/lib/repositories/cli-node.repository.js +164 -0
  272. package/lib/cli/src/lib/repositories/cli-operation.repository.d.ts +57 -0
  273. package/lib/cli/src/lib/repositories/cli-operation.repository.js +226 -0
  274. package/lib/cli/src/lib/repositories/cli-vnet.repository.d.ts +22 -0
  275. package/lib/cli/src/lib/repositories/cli-vnet.repository.js +175 -0
  276. package/lib/cli/src/lib/repositories/index.d.ts +5 -0
  277. package/lib/cli/src/lib/repositories/index.js +21 -0
  278. package/lib/cli/src/lib/resolve-cluster.d.ts +16 -0
  279. package/lib/cli/src/lib/resolve-cluster.js +34 -0
  280. package/lib/cli/src/lib/scaleway-validator.d.ts +5 -0
  281. package/lib/cli/src/lib/scaleway-validator.js +87 -0
  282. package/lib/cli/src/lib/server-utils.d.ts +8 -0
  283. package/lib/cli/src/lib/server-utils.js +19 -0
  284. package/lib/cli/src/lib/services/cli-app.service.d.ts +294 -0
  285. package/lib/cli/src/lib/services/cli-app.service.js +162 -0
  286. package/lib/cli/src/lib/services/cli-node.service.d.ts +43 -0
  287. package/lib/cli/src/lib/services/cli-node.service.js +34 -0
  288. package/lib/cli/src/lib/services/provider-sync.service.d.ts +90 -0
  289. package/lib/cli/src/lib/services/provider-sync.service.js +178 -0
  290. package/lib/cli/src/lib/services/reconciliation.service.d.ts +40 -0
  291. package/lib/cli/src/lib/services/reconciliation.service.js +119 -0
  292. package/lib/cli/src/lib/services/vnet-provisioning.service.d.ts +37 -0
  293. package/lib/cli/src/lib/services/vnet-provisioning.service.js +164 -0
  294. package/lib/cli/src/lib/ssh-key.d.ts +23 -0
  295. package/lib/cli/src/lib/ssh-key.js +126 -0
  296. package/lib/cli/src/lib/template-fetcher.d.ts +25 -0
  297. package/lib/cli/src/lib/template-fetcher.js +48 -0
  298. package/lib/cli/src/lib/templates/firewall-rules.d.ts +8 -0
  299. package/lib/cli/src/lib/templates/firewall-rules.js +17 -0
  300. package/lib/cli/src/lib/typeorm-shim.d.ts +12 -0
  301. package/lib/cli/src/lib/typeorm-shim.js +17 -0
  302. package/lib/cli/src/lib/utils/env-file.d.ts +2 -0
  303. package/lib/cli/src/lib/utils/env-file.js +40 -0
  304. package/lib/cli/src/lib/utils/ip-detection.d.ts +27 -0
  305. package/lib/cli/src/lib/utils/ip-detection.js +144 -0
  306. package/lib/cli/src/modules/cli-infrastructure.module.d.ts +14 -0
  307. package/lib/cli/src/modules/cli-infrastructure.module.js +249 -0
  308. package/lib/cli/src/services/cli-ca.service.d.ts +62 -0
  309. package/lib/cli/src/services/cli-ca.service.js +281 -0
  310. package/lib/cli/src/services/cli-cluster-creator.service.d.ts +78 -0
  311. package/lib/cli/src/services/cli-cluster-creator.service.js +655 -0
  312. package/lib/cli/src/services/cli-clusters.service.d.ts +74 -0
  313. package/lib/cli/src/services/cli-clusters.service.js +762 -0
  314. package/lib/cli/src/services/cli-endpoint-resolver.service.d.ts +33 -0
  315. package/lib/cli/src/services/cli-endpoint-resolver.service.js +195 -0
  316. package/lib/cli/src/services/cli-k3s-script.service.d.ts +114 -0
  317. package/lib/cli/src/services/cli-k3s-script.service.js +288 -0
  318. package/lib/cli/src/services/cli-logger.service.d.ts +56 -0
  319. package/lib/cli/src/services/cli-logger.service.js +188 -0
  320. package/lib/cli/src/services/cli-observability-cluster.service.d.ts +128 -0
  321. package/lib/cli/src/services/cli-observability-cluster.service.js +525 -0
  322. package/lib/cli/src/services/cli-ssh.service.d.ts +90 -0
  323. package/lib/cli/src/services/cli-ssh.service.js +457 -0
  324. package/lib/cli/src/services/server-type-cache.service.d.ts +34 -0
  325. package/lib/cli/src/services/server-type-cache.service.js +156 -0
  326. package/lib/cli/src/services/server-type-validator.service.d.ts +80 -0
  327. package/lib/cli/src/services/server-type-validator.service.js +366 -0
  328. package/lib/cli/src/types/index.d.ts +41 -0
  329. package/lib/cli/src/types/index.js +2 -0
  330. package/lib/src/common/utils/project-root.util.d.ts +22 -0
  331. package/lib/src/common/utils/project-root.util.js +78 -0
  332. package/lib/src/modules/access/access.controller.d.ts +30 -0
  333. package/lib/src/modules/access/access.controller.js +336 -0
  334. package/lib/src/modules/access/access.module.d.ts +2 -0
  335. package/lib/src/modules/access/access.module.js +92 -0
  336. package/lib/src/modules/access/controllers/ca.controller.d.ts +22 -0
  337. package/lib/src/modules/access/controllers/ca.controller.js +242 -0
  338. package/lib/src/modules/access/dto/api-token.dto.d.ts +11 -0
  339. package/lib/src/modules/access/dto/api-token.dto.js +74 -0
  340. package/lib/src/modules/access/dto/bearer-token.dto.d.ts +7 -0
  341. package/lib/src/modules/access/dto/bearer-token.dto.js +36 -0
  342. package/lib/src/modules/access/dto/ca-public-key.dto.d.ts +7 -0
  343. package/lib/src/modules/access/dto/ca-public-key.dto.js +52 -0
  344. package/lib/src/modules/access/dto/create-api-token.dto.d.ts +7 -0
  345. package/lib/src/modules/access/dto/create-api-token.dto.js +64 -0
  346. package/lib/src/modules/access/dto/create-bearer-token.dto.d.ts +9 -0
  347. package/lib/src/modules/access/dto/create-bearer-token.dto.js +58 -0
  348. package/lib/src/modules/access/dto/create-ssh-key.dto.d.ts +7 -0
  349. package/lib/src/modules/access/dto/create-ssh-key.dto.js +61 -0
  350. package/lib/src/modules/access/dto/refresh-token.dto.d.ts +7 -0
  351. package/lib/src/modules/access/dto/refresh-token.dto.js +46 -0
  352. package/lib/src/modules/access/dto/register-ca.dto.d.ts +16 -0
  353. package/lib/src/modules/access/dto/register-ca.dto.js +111 -0
  354. package/lib/src/modules/access/dto/ssh-key.dto.d.ts +20 -0
  355. package/lib/src/modules/access/dto/ssh-key.dto.js +124 -0
  356. package/lib/src/modules/access/dto/update-ssh-key.dto.d.ts +7 -0
  357. package/lib/src/modules/access/dto/update-ssh-key.dto.js +73 -0
  358. package/lib/src/modules/access/entities/api-token.entity.d.ts +30 -0
  359. package/lib/src/modules/access/entities/api-token.entity.js +87 -0
  360. package/lib/src/modules/access/entities/ca-keypair.entity.d.ts +13 -0
  361. package/lib/src/modules/access/entities/ca-keypair.entity.js +63 -0
  362. package/lib/src/modules/access/entities/credentials.entity.d.ts +18 -0
  363. package/lib/src/modules/access/entities/credentials.entity.js +87 -0
  364. package/lib/src/modules/access/entities/ssh-key.entity.d.ts +15 -0
  365. package/lib/src/modules/access/entities/ssh-key.entity.js +81 -0
  366. package/lib/src/modules/access/enums/credential-purpose.enum.d.ts +4 -0
  367. package/lib/src/modules/access/enums/credential-purpose.enum.js +8 -0
  368. package/lib/src/modules/access/interfaces/access.repository.d.ts +11 -0
  369. package/lib/src/modules/access/interfaces/access.repository.js +2 -0
  370. package/lib/src/modules/access/interfaces/ssh-key.interface.d.ts +26 -0
  371. package/lib/src/modules/access/interfaces/ssh-key.interface.js +2 -0
  372. package/lib/src/modules/access/mapper/api-token.mapper.d.ts +6 -0
  373. package/lib/src/modules/access/mapper/api-token.mapper.js +21 -0
  374. package/lib/src/modules/access/mapper/ssh-key.mapper.d.ts +6 -0
  375. package/lib/src/modules/access/mapper/ssh-key.mapper.js +25 -0
  376. package/lib/src/modules/access/providers/contabo-ssh-provider.service.d.ts +13 -0
  377. package/lib/src/modules/access/providers/contabo-ssh-provider.service.js +40 -0
  378. package/lib/src/modules/access/providers/hetzner-ssh-provider.service.d.ts +17 -0
  379. package/lib/src/modules/access/providers/hetzner-ssh-provider.service.js +95 -0
  380. package/lib/src/modules/access/providers/interfaces/ssh-provider.interface.d.ts +8 -0
  381. package/lib/src/modules/access/providers/interfaces/ssh-provider.interface.js +3 -0
  382. package/lib/src/modules/access/providers/ssh-provider.factory.d.ts +13 -0
  383. package/lib/src/modules/access/providers/ssh-provider.factory.js +44 -0
  384. package/lib/src/modules/access/repositories/api-token.repository.d.ts +24 -0
  385. package/lib/src/modules/access/repositories/api-token.repository.js +99 -0
  386. package/lib/src/modules/access/repositories/default-access.repository.d.ts +16 -0
  387. package/lib/src/modules/access/repositories/default-access.repository.js +121 -0
  388. package/lib/src/modules/access/repositories/provider-credentials.repository.d.ts +17 -0
  389. package/lib/src/modules/access/repositories/provider-credentials.repository.js +106 -0
  390. package/lib/src/modules/access/services/access.service.d.ts +180 -0
  391. package/lib/src/modules/access/services/access.service.js +732 -0
  392. package/lib/src/modules/access/services/bearerToken.service.d.ts +15 -0
  393. package/lib/src/modules/access/services/bearerToken.service.js +107 -0
  394. package/lib/src/modules/access/services/ca-manager.service.d.ts +48 -0
  395. package/lib/src/modules/access/services/ca-manager.service.js +293 -0
  396. package/lib/src/modules/access/services/certificate-signer.service.d.ts +36 -0
  397. package/lib/src/modules/access/services/certificate-signer.service.js +155 -0
  398. package/lib/src/modules/access/services/key-storage.service.d.ts +17 -0
  399. package/lib/src/modules/access/services/key-storage.service.js +133 -0
  400. package/lib/src/modules/access/services/ssh-key-generator.service.d.ts +6 -0
  401. package/lib/src/modules/access/services/ssh-key-generator.service.js +51 -0
  402. package/lib/src/modules/app-builds/entities/app-build.entity.d.ts +38 -0
  403. package/lib/src/modules/app-builds/entities/app-build.entity.js +168 -0
  404. package/lib/src/modules/app-builds/enums/app-build-status.enum.d.ts +10 -0
  405. package/lib/src/modules/app-builds/enums/app-build-status.enum.js +14 -0
  406. package/lib/src/modules/app-builds/enums/build-provider.enum.d.ts +6 -0
  407. package/lib/src/modules/app-builds/enums/build-provider.enum.js +10 -0
  408. package/lib/src/modules/app-builds/services/build-job.service.d.ts +178 -0
  409. package/lib/src/modules/app-builds/services/build-job.service.js +1057 -0
  410. package/lib/src/modules/applications/entities/app-resource.entity.d.ts +24 -0
  411. package/lib/src/modules/applications/entities/app-resource.entity.js +117 -0
  412. package/lib/src/modules/applications/entities/app-revision.entity.d.ts +29 -0
  413. package/lib/src/modules/applications/entities/app-revision.entity.js +133 -0
  414. package/lib/src/modules/applications/entities/application.entity.d.ts +121 -0
  415. package/lib/src/modules/applications/entities/application.entity.js +279 -0
  416. package/lib/src/modules/applications/enums/app-event-type.enum.d.ts +24 -0
  417. package/lib/src/modules/applications/enums/app-event-type.enum.js +28 -0
  418. package/lib/src/modules/applications/enums/application-category.enum.d.ts +4 -0
  419. package/lib/src/modules/applications/enums/application-category.enum.js +8 -0
  420. package/lib/src/modules/applications/enums/application-exposure.enum.d.ts +4 -0
  421. package/lib/src/modules/applications/enums/application-exposure.enum.js +8 -0
  422. package/lib/src/modules/applications/enums/application-kind.enum.d.ts +6 -0
  423. package/lib/src/modules/applications/enums/application-kind.enum.js +10 -0
  424. package/lib/src/modules/applications/enums/application-resource-kind.enum.d.ts +17 -0
  425. package/lib/src/modules/applications/enums/application-resource-kind.enum.js +21 -0
  426. package/lib/src/modules/applications/enums/application-resource-status.enum.d.ts +8 -0
  427. package/lib/src/modules/applications/enums/application-resource-status.enum.js +12 -0
  428. package/lib/src/modules/applications/enums/application-source-type.enum.d.ts +6 -0
  429. package/lib/src/modules/applications/enums/application-source-type.enum.js +10 -0
  430. package/lib/src/modules/applications/enums/application-status.enum.d.ts +20 -0
  431. package/lib/src/modules/applications/enums/application-status.enum.js +24 -0
  432. package/lib/src/modules/applications/interfaces/source-config.interface.d.ts +132 -0
  433. package/lib/src/modules/applications/interfaces/source-config.interface.js +2 -0
  434. package/lib/src/modules/auth/decorators/admin.decorator.d.ts +2 -0
  435. package/lib/src/modules/auth/decorators/admin.decorator.js +7 -0
  436. package/lib/src/modules/auth/entities/user.entity.d.ts +19 -0
  437. package/lib/src/modules/auth/entities/user.entity.js +78 -0
  438. package/lib/src/modules/auth/guards/admin.guard.d.ts +7 -0
  439. package/lib/src/modules/auth/guards/admin.guard.js +50 -0
  440. package/lib/src/modules/auth/interfaces/authenticated-user.interface.d.ts +12 -0
  441. package/lib/src/modules/auth/interfaces/authenticated-user.interface.js +2 -0
  442. package/lib/src/modules/common/cache/cache.service.d.ts +77 -0
  443. package/lib/src/modules/common/cache/cache.service.js +232 -0
  444. package/lib/src/modules/common/cache/cache.tokens.d.ts +1 -0
  445. package/lib/src/modules/common/cache/cache.tokens.js +4 -0
  446. package/lib/src/modules/common/cache/enums/cache-category.enum.d.ts +33 -0
  447. package/lib/src/modules/common/cache/enums/cache-category.enum.js +42 -0
  448. package/lib/src/modules/common/common.module.d.ts +2 -0
  449. package/lib/src/modules/common/common.module.js +20 -0
  450. package/lib/src/modules/common/dto/async-operation-response.dto.d.ts +19 -0
  451. package/lib/src/modules/common/dto/async-operation-response.dto.js +65 -0
  452. package/lib/src/modules/common/dto/index.d.ts +1 -0
  453. package/lib/src/modules/common/dto/index.js +17 -0
  454. package/lib/src/modules/common/services/label.service.d.ts +70 -0
  455. package/lib/src/modules/common/services/label.service.js +128 -0
  456. package/lib/src/modules/dns/entities/app-endpoint.entity.d.ts +57 -0
  457. package/lib/src/modules/dns/entities/app-endpoint.entity.js +205 -0
  458. package/lib/src/modules/dns/entities/cluster-dns-zone.entity.d.ts +21 -0
  459. package/lib/src/modules/dns/entities/cluster-dns-zone.entity.js +88 -0
  460. package/lib/src/modules/dns/entities/dns-zone.entity.d.ts +12 -0
  461. package/lib/src/modules/dns/entities/dns-zone.entity.js +53 -0
  462. package/lib/src/modules/dns/entities/san-certificate.entity.d.ts +29 -0
  463. package/lib/src/modules/dns/entities/san-certificate.entity.js +132 -0
  464. package/lib/src/modules/dns/entities/wildcard-certificate.entity.d.ts +26 -0
  465. package/lib/src/modules/dns/entities/wildcard-certificate.entity.js +111 -0
  466. package/lib/src/modules/dns/enums/cert-challenge.enum.d.ts +4 -0
  467. package/lib/src/modules/dns/enums/cert-challenge.enum.js +8 -0
  468. package/lib/src/modules/dns/enums/endpoint-type.enum.d.ts +4 -0
  469. package/lib/src/modules/dns/enums/endpoint-type.enum.js +8 -0
  470. package/lib/src/modules/dns/enums/hostname-mode.enum.d.ts +4 -0
  471. package/lib/src/modules/dns/enums/hostname-mode.enum.js +8 -0
  472. package/lib/src/modules/dns/services/cluster-dns-cleanup.service.d.ts +12 -0
  473. package/lib/src/modules/dns/services/cluster-dns-cleanup.service.js +79 -0
  474. package/lib/src/modules/dns/utils/nip-hostname.util.d.ts +12 -0
  475. package/lib/src/modules/dns/utils/nip-hostname.util.js +27 -0
  476. package/lib/src/modules/dns/utils/nip-token.util.d.ts +2 -0
  477. package/lib/src/modules/dns/utils/nip-token.util.js +94 -0
  478. package/lib/src/modules/frameworks/framework-core/enums/build-stage.enum.d.ts +21 -0
  479. package/lib/src/modules/frameworks/framework-core/enums/build-stage.enum.js +29 -0
  480. package/lib/src/modules/frameworks/framework-core/enums/deploy-strategy.enum.d.ts +22 -0
  481. package/lib/src/modules/frameworks/framework-core/enums/deploy-strategy.enum.js +26 -0
  482. package/lib/src/modules/frameworks/framework-core/enums/framework-type.enum.d.ts +32 -0
  483. package/lib/src/modules/frameworks/framework-core/enums/framework-type.enum.js +47 -0
  484. package/lib/src/modules/grafana/services/grafana-config.service.d.ts +43 -0
  485. package/lib/src/modules/grafana/services/grafana-config.service.js +177 -0
  486. package/lib/src/modules/grafana/services/grafana-datasource.service.d.ts +70 -0
  487. package/lib/src/modules/grafana/services/grafana-datasource.service.js +333 -0
  488. package/lib/src/modules/infrastructure/clusters/clusters.service.d.ts +126 -0
  489. package/lib/src/modules/infrastructure/clusters/clusters.service.js +265 -0
  490. package/lib/src/modules/infrastructure/clusters/constants/storage-conventions.d.ts +60 -0
  491. package/lib/src/modules/infrastructure/clusters/constants/storage-conventions.js +64 -0
  492. package/lib/src/modules/infrastructure/clusters/dto/build-resources.dto.d.ts +19 -0
  493. package/lib/src/modules/infrastructure/clusters/dto/build-resources.dto.js +69 -0
  494. package/lib/src/modules/infrastructure/clusters/dto/cluster-capacity-plan.dto.d.ts +36 -0
  495. package/lib/src/modules/infrastructure/clusters/dto/cluster-capacity-plan.dto.js +149 -0
  496. package/lib/src/modules/infrastructure/clusters/dto/cluster-power-management.dto.d.ts +51 -0
  497. package/lib/src/modules/infrastructure/clusters/dto/cluster-power-management.dto.js +222 -0
  498. package/lib/src/modules/infrastructure/clusters/dto/cluster-response.dto.d.ts +42 -0
  499. package/lib/src/modules/infrastructure/clusters/dto/cluster-response.dto.js +238 -0
  500. package/lib/src/modules/infrastructure/clusters/dto/cluster-storage.dto.d.ts +35 -0
  501. package/lib/src/modules/infrastructure/clusters/dto/cluster-storage.dto.js +122 -0
  502. package/lib/src/modules/infrastructure/clusters/dto/create-cluster.dto.d.ts +43 -0
  503. package/lib/src/modules/infrastructure/clusters/dto/create-cluster.dto.js +334 -0
  504. package/lib/src/modules/infrastructure/clusters/dto/register-cluster.dto.d.ts +30 -0
  505. package/lib/src/modules/infrastructure/clusters/dto/register-cluster.dto.js +190 -0
  506. package/lib/src/modules/infrastructure/clusters/dto/resource-availability.dto.d.ts +15 -0
  507. package/lib/src/modules/infrastructure/clusters/dto/resource-availability.dto.js +91 -0
  508. package/lib/src/modules/infrastructure/clusters/entities/cluster-node.entity.d.ts +28 -0
  509. package/lib/src/modules/infrastructure/clusters/entities/cluster-node.entity.js +104 -0
  510. package/lib/src/modules/infrastructure/clusters/entities/cluster.entity.d.ts +64 -0
  511. package/lib/src/modules/infrastructure/clusters/entities/cluster.entity.js +199 -0
  512. package/lib/src/modules/infrastructure/clusters/entities/node-billable-interval.entity.d.ts +17 -0
  513. package/lib/src/modules/infrastructure/clusters/entities/node-billable-interval.entity.js +86 -0
  514. package/lib/src/modules/infrastructure/clusters/entities/volume-billable-interval.entity.d.ts +18 -0
  515. package/lib/src/modules/infrastructure/clusters/entities/volume-billable-interval.entity.js +79 -0
  516. package/lib/src/modules/infrastructure/clusters/services/billing-intervals.service.d.ts +48 -0
  517. package/lib/src/modules/infrastructure/clusters/services/billing-intervals.service.js +159 -0
  518. package/lib/src/modules/infrastructure/clusters/services/cluster-capacity.service.d.ts +23 -0
  519. package/lib/src/modules/infrastructure/clusters/services/cluster-capacity.service.js +198 -0
  520. package/lib/src/modules/infrastructure/clusters/services/cluster-creation.service.d.ts +25 -0
  521. package/lib/src/modules/infrastructure/clusters/services/cluster-creation.service.js +192 -0
  522. package/lib/src/modules/infrastructure/clusters/services/cluster-deletion.service.d.ts +36 -0
  523. package/lib/src/modules/infrastructure/clusters/services/cluster-deletion.service.js +159 -0
  524. package/lib/src/modules/infrastructure/clusters/services/cluster-firewall-integration.service.d.ts +25 -0
  525. package/lib/src/modules/infrastructure/clusters/services/cluster-firewall-integration.service.js +90 -0
  526. package/lib/src/modules/infrastructure/clusters/services/cluster-mapper.service.d.ts +15 -0
  527. package/lib/src/modules/infrastructure/clusters/services/cluster-mapper.service.js +63 -0
  528. package/lib/src/modules/infrastructure/clusters/services/cluster-node-scaling.service.d.ts +78 -0
  529. package/lib/src/modules/infrastructure/clusters/services/cluster-node-scaling.service.js +644 -0
  530. package/lib/src/modules/infrastructure/clusters/services/cluster-operations.service.d.ts +37 -0
  531. package/lib/src/modules/infrastructure/clusters/services/cluster-operations.service.js +244 -0
  532. package/lib/src/modules/infrastructure/clusters/services/cluster-power-management.service.d.ts +68 -0
  533. package/lib/src/modules/infrastructure/clusters/services/cluster-power-management.service.js +716 -0
  534. package/lib/src/modules/infrastructure/clusters/services/cluster-storage.service.d.ts +15 -0
  535. package/lib/src/modules/infrastructure/clusters/services/cluster-storage.service.js +179 -0
  536. package/lib/src/modules/infrastructure/clusters/services/cluster-validation.service.d.ts +29 -0
  537. package/lib/src/modules/infrastructure/clusters/services/cluster-validation.service.js +100 -0
  538. package/lib/src/modules/infrastructure/firewalls/dto/cluster-firewall.dto.d.ts +62 -0
  539. package/lib/src/modules/infrastructure/firewalls/dto/cluster-firewall.dto.js +252 -0
  540. package/lib/src/modules/infrastructure/firewalls/entities/cluster-firewall.entity.d.ts +20 -0
  541. package/lib/src/modules/infrastructure/firewalls/entities/cluster-firewall.entity.js +83 -0
  542. package/lib/src/modules/infrastructure/firewalls/services/firewall-desired-state.service.d.ts +73 -0
  543. package/lib/src/modules/infrastructure/firewalls/services/firewall-desired-state.service.js +329 -0
  544. package/lib/src/modules/infrastructure/firewalls/services/firewall-reconciliation.service.d.ts +43 -0
  545. package/lib/src/modules/infrastructure/firewalls/services/firewall-reconciliation.service.js +212 -0
  546. package/lib/src/modules/infrastructure/firewalls/templates/firewall-rules.template.d.ts +54 -0
  547. package/lib/src/modules/infrastructure/firewalls/templates/firewall-rules.template.js +167 -0
  548. package/lib/src/modules/infrastructure/operations/helpers/operation-steps.helper.d.ts +34 -0
  549. package/lib/src/modules/infrastructure/operations/helpers/operation-steps.helper.js +401 -0
  550. package/lib/src/modules/infrastructure/servers/dto/create-server.dto.d.ts +40 -0
  551. package/lib/src/modules/infrastructure/servers/dto/create-server.dto.js +157 -0
  552. package/lib/src/modules/infrastructure/servers/dto/delete-server.dto.d.ts +17 -0
  553. package/lib/src/modules/infrastructure/servers/dto/delete-server.dto.js +85 -0
  554. package/lib/src/modules/infrastructure/servers/dto/server-response.dto.d.ts +29 -0
  555. package/lib/src/modules/infrastructure/servers/dto/server-response.dto.js +147 -0
  556. package/lib/src/modules/infrastructure/servers/entities/infrastructure-operations.entity.d.ts +266 -0
  557. package/lib/src/modules/infrastructure/servers/entities/infrastructure-operations.entity.js +348 -0
  558. package/lib/src/modules/infrastructure/shared/enums/reconciliation-status.enum.d.ts +7 -0
  559. package/lib/src/modules/infrastructure/shared/enums/reconciliation-status.enum.js +11 -0
  560. package/lib/src/modules/infrastructure/shared/services/kubernetes.service.d.ts +304 -0
  561. package/lib/src/modules/infrastructure/shared/services/kubernetes.service.js +1164 -0
  562. package/lib/src/modules/infrastructure/shared/services/label.service.d.ts +97 -0
  563. package/lib/src/modules/infrastructure/shared/services/label.service.js +189 -0
  564. package/lib/src/modules/infrastructure/shared/shared-infrastructure.module.d.ts +2 -0
  565. package/lib/src/modules/infrastructure/shared/shared-infrastructure.module.js +24 -0
  566. package/lib/src/modules/infrastructure/vnets/entities/vnet-route.entity.d.ts +10 -0
  567. package/lib/src/modules/infrastructure/vnets/entities/vnet-route.entity.js +51 -0
  568. package/lib/src/modules/infrastructure/vnets/entities/vnet-subnet.entity.d.ts +20 -0
  569. package/lib/src/modules/infrastructure/vnets/entities/vnet-subnet.entity.js +77 -0
  570. package/lib/src/modules/infrastructure/vnets/entities/vnet.entity.d.ts +28 -0
  571. package/lib/src/modules/infrastructure/vnets/entities/vnet.entity.js +88 -0
  572. package/lib/src/modules/instances/entities/instance-status.enum.d.ts +12 -0
  573. package/lib/src/modules/instances/entities/instance-status.enum.js +16 -0
  574. package/lib/src/modules/instances/entities/instance-type.enum.d.ts +6 -0
  575. package/lib/src/modules/instances/entities/instance-type.enum.js +10 -0
  576. package/lib/src/modules/instances/entities/instance.entity.d.ts +41 -0
  577. package/lib/src/modules/instances/entities/instance.entity.js +126 -0
  578. package/lib/src/modules/management/dto/configure-provider.dto.d.ts +8 -0
  579. package/lib/src/modules/management/dto/configure-provider.dto.js +51 -0
  580. package/lib/src/modules/management/dto/credentials.dto.d.ts +15 -0
  581. package/lib/src/modules/management/dto/credentials.dto.js +114 -0
  582. package/lib/src/modules/management/dto/health-status.dto.d.ts +12 -0
  583. package/lib/src/modules/management/dto/health-status.dto.js +40 -0
  584. package/lib/src/modules/management/dto/node-size-option.dto.d.ts +37 -0
  585. package/lib/src/modules/management/dto/node-size-option.dto.js +178 -0
  586. package/lib/src/modules/management/dto/pricing-query.dto.d.ts +5 -0
  587. package/lib/src/modules/management/dto/pricing-query.dto.js +36 -0
  588. package/lib/src/modules/management/dto/pricing-response.dto.d.ts +21 -0
  589. package/lib/src/modules/management/dto/pricing-response.dto.js +80 -0
  590. package/lib/src/modules/management/dto/provider-configuration.dto.d.ts +23 -0
  591. package/lib/src/modules/management/dto/provider-configuration.dto.js +72 -0
  592. package/lib/src/modules/management/dto/provider-filters.dto.d.ts +7 -0
  593. package/lib/src/modules/management/dto/provider-filters.dto.js +45 -0
  594. package/lib/src/modules/management/dto/validation-result.dto.d.ts +16 -0
  595. package/lib/src/modules/management/dto/validation-result.dto.js +35 -0
  596. package/lib/src/modules/management/entities/credentials.entity.d.ts +21 -0
  597. package/lib/src/modules/management/entities/credentials.entity.js +10 -0
  598. package/lib/src/modules/management/entities/provider-capabilities.entity.d.ts +85 -0
  599. package/lib/src/modules/management/entities/provider-capabilities.entity.js +2 -0
  600. package/lib/src/modules/management/entities/provider-configuration.entity.d.ts +14 -0
  601. package/lib/src/modules/management/entities/provider-configuration.entity.js +65 -0
  602. package/lib/src/modules/management/entities/provider-definition.entity.d.ts +19 -0
  603. package/lib/src/modules/management/entities/provider-definition.entity.js +2 -0
  604. package/lib/src/modules/management/entities/provider-region.entity.d.ts +11 -0
  605. package/lib/src/modules/management/entities/provider-region.entity.js +2 -0
  606. package/lib/src/modules/management/entities/provider-status.enum.d.ts +8 -0
  607. package/lib/src/modules/management/entities/provider-status.enum.js +12 -0
  608. package/lib/src/modules/management/interfaces/provider-configuration.repository.interface.d.ts +17 -0
  609. package/lib/src/modules/management/interfaces/provider-configuration.repository.interface.js +2 -0
  610. package/lib/src/modules/management/repositories/provider-configuration.repository.d.ts +21 -0
  611. package/lib/src/modules/management/repositories/provider-configuration.repository.js +89 -0
  612. package/lib/src/modules/management/services/configuration-mode.service.d.ts +20 -0
  613. package/lib/src/modules/management/services/configuration-mode.service.js +54 -0
  614. package/lib/src/modules/management/services/management.service.d.ts +72 -0
  615. package/lib/src/modules/management/services/management.service.js +546 -0
  616. package/lib/src/modules/management/services/provider-definitions.service.d.ts +26 -0
  617. package/lib/src/modules/management/services/provider-definitions.service.js +133 -0
  618. package/lib/src/modules/providers/controllers/provider-firewalls.controller.d.ts +28 -0
  619. package/lib/src/modules/providers/controllers/provider-firewalls.controller.js +277 -0
  620. package/lib/src/modules/providers/core/factories/capabilities-provider.factory.d.ts +10 -0
  621. package/lib/src/modules/providers/core/factories/capabilities-provider.factory.js +39 -0
  622. package/lib/src/modules/providers/core/factories/certificate-provider.factory.d.ts +11 -0
  623. package/lib/src/modules/providers/core/factories/certificate-provider.factory.js +58 -0
  624. package/lib/src/modules/providers/core/factories/dns-provider.factory.d.ts +12 -0
  625. package/lib/src/modules/providers/core/factories/dns-provider.factory.js +65 -0
  626. package/lib/src/modules/providers/core/factories/firewall-provider.factory.d.ts +12 -0
  627. package/lib/src/modules/providers/core/factories/firewall-provider.factory.js +61 -0
  628. package/lib/src/modules/providers/core/factories/provider.factory.d.ts +9 -0
  629. package/lib/src/modules/providers/core/factories/provider.factory.js +47 -0
  630. package/lib/src/modules/providers/core/factories/vm-backup-provider.factory.d.ts +12 -0
  631. package/lib/src/modules/providers/core/factories/vm-backup-provider.factory.js +56 -0
  632. package/lib/src/modules/providers/core/factories/volume-export.factory.d.ts +12 -0
  633. package/lib/src/modules/providers/core/factories/volume-export.factory.js +56 -0
  634. package/lib/src/modules/providers/core/interfaces/certificate-provider.interface.d.ts +1 -0
  635. package/lib/src/modules/providers/core/interfaces/certificate-provider.interface.js +17 -0
  636. package/lib/src/modules/providers/core/interfaces/cloud-provider.interface.d.ts +1 -0
  637. package/lib/src/modules/providers/core/interfaces/cloud-provider.interface.js +17 -0
  638. package/lib/src/modules/providers/core/interfaces/dns-provider.interface.d.ts +1 -0
  639. package/lib/src/modules/providers/core/interfaces/dns-provider.interface.js +17 -0
  640. package/lib/src/modules/providers/core/interfaces/firewall-provider.interface.d.ts +1 -0
  641. package/lib/src/modules/providers/core/interfaces/firewall-provider.interface.js +17 -0
  642. package/lib/src/modules/providers/core/interfaces/provider-bootstrap-seeder.interface.d.ts +54 -0
  643. package/lib/src/modules/providers/core/interfaces/provider-bootstrap-seeder.interface.js +2 -0
  644. package/lib/src/modules/providers/core/tokens.d.ts +59 -0
  645. package/lib/src/modules/providers/core/tokens.js +19 -0
  646. package/lib/src/modules/providers/data/region-coordinates.d.ts +6 -0
  647. package/lib/src/modules/providers/data/region-coordinates.js +25 -0
  648. package/lib/src/modules/providers/dto/firewall.dto.d.ts +30 -0
  649. package/lib/src/modules/providers/dto/firewall.dto.js +105 -0
  650. package/lib/src/modules/providers/dto/node-size.dto.d.ts +46 -0
  651. package/lib/src/modules/providers/dto/node-size.dto.js +22 -0
  652. package/lib/src/modules/providers/dto/pricing.dto.d.ts +24 -0
  653. package/lib/src/modules/providers/dto/pricing.dto.js +19 -0
  654. package/lib/src/modules/providers/dto/provider-firewall-response.dto.d.ts +28 -0
  655. package/lib/src/modules/providers/dto/provider-firewall-response.dto.js +134 -0
  656. package/lib/src/modules/providers/enums/certificate-provider.enum.d.ts +4 -0
  657. package/lib/src/modules/providers/enums/certificate-provider.enum.js +8 -0
  658. package/lib/src/modules/providers/enums/cloud-provider.enum.d.ts +5 -0
  659. package/lib/src/modules/providers/enums/cloud-provider.enum.js +9 -0
  660. package/lib/src/modules/providers/enums/dns-provider.enum.d.ts +5 -0
  661. package/lib/src/modules/providers/enums/dns-provider.enum.js +9 -0
  662. package/lib/src/modules/providers/implementations/contabo/contabo-capabilities.service.d.ts +19 -0
  663. package/lib/src/modules/providers/implementations/contabo/contabo-capabilities.service.js +254 -0
  664. package/lib/src/modules/providers/implementations/contabo/contabo-provider.module.d.ts +10 -0
  665. package/lib/src/modules/providers/implementations/contabo/contabo-provider.module.js +72 -0
  666. package/lib/src/modules/providers/implementations/contabo/generated/api.d.ts +13374 -0
  667. package/lib/src/modules/providers/implementations/contabo/generated/api.js +11341 -0
  668. package/lib/src/modules/providers/implementations/contabo/generated/base.d.ts +66 -0
  669. package/lib/src/modules/providers/implementations/contabo/generated/base.js +66 -0
  670. package/lib/src/modules/providers/implementations/contabo/generated/common.d.ts +65 -0
  671. package/lib/src/modules/providers/implementations/contabo/generated/common.js +152 -0
  672. package/lib/src/modules/providers/implementations/contabo/generated/configuration.d.ts +91 -0
  673. package/lib/src/modules/providers/implementations/contabo/generated/configuration.js +50 -0
  674. package/lib/src/modules/providers/implementations/contabo/generated/index.d.ts +13 -0
  675. package/lib/src/modules/providers/implementations/contabo/generated/index.js +31 -0
  676. package/lib/src/modules/providers/implementations/hetzner/generated/api.d.ts +18419 -0
  677. package/lib/src/modules/providers/implementations/hetzner/generated/api.js +19133 -0
  678. package/lib/src/modules/providers/implementations/hetzner/generated/base.d.ts +66 -0
  679. package/lib/src/modules/providers/implementations/hetzner/generated/base.js +66 -0
  680. package/lib/src/modules/providers/implementations/hetzner/generated/common.d.ts +65 -0
  681. package/lib/src/modules/providers/implementations/hetzner/generated/common.js +152 -0
  682. package/lib/src/modules/providers/implementations/hetzner/generated/configuration.d.ts +91 -0
  683. package/lib/src/modules/providers/implementations/hetzner/generated/configuration.js +50 -0
  684. package/lib/src/modules/providers/implementations/hetzner/generated/index.d.ts +13 -0
  685. package/lib/src/modules/providers/implementations/hetzner/generated/index.js +31 -0
  686. package/lib/src/modules/providers/implementations/hetzner/hetzner-bootstrap-seeder.service.d.ts +19 -0
  687. package/lib/src/modules/providers/implementations/hetzner/hetzner-bootstrap-seeder.service.js +68 -0
  688. package/lib/src/modules/providers/implementations/hetzner/hetzner-capabilities.service.d.ts +29 -0
  689. package/lib/src/modules/providers/implementations/hetzner/hetzner-capabilities.service.js +392 -0
  690. package/lib/src/modules/providers/implementations/hetzner/hetzner-provider.module.d.ts +2 -0
  691. package/lib/src/modules/providers/implementations/hetzner/hetzner-provider.module.js +81 -0
  692. package/lib/src/modules/providers/implementations/hetzner/hetzner-volume-operations.service.d.ts +31 -0
  693. package/lib/src/modules/providers/implementations/hetzner/hetzner-volume-operations.service.js +312 -0
  694. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage-connection.controller.d.ts +18 -0
  695. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage-connection.controller.js +67 -0
  696. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage-connection.service.d.ts +24 -0
  697. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage-connection.service.js +107 -0
  698. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.backend.d.ts +7 -0
  699. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.backend.js +35 -0
  700. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.module.d.ts +8 -0
  701. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.module.js +60 -0
  702. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.provisioner.d.ts +22 -0
  703. package/lib/src/modules/providers/implementations/hetzner/object-storage/hetzner-object-storage.provisioner.js +100 -0
  704. package/lib/src/modules/providers/implementations/hetzner/vm-backup/hetzner-vm-backup.service.d.ts +20 -0
  705. package/lib/src/modules/providers/implementations/hetzner/vm-backup/hetzner-vm-backup.service.js +118 -0
  706. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/api.d.ts +4227 -0
  707. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/api.js +3362 -0
  708. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/base.d.ts +66 -0
  709. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/base.js +66 -0
  710. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/common.d.ts +65 -0
  711. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/common.js +152 -0
  712. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/configuration.d.ts +91 -0
  713. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/configuration.js +50 -0
  714. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/index.d.ts +13 -0
  715. package/lib/src/modules/providers/implementations/scaleway/generated/baremetal/index.js +31 -0
  716. package/lib/src/modules/providers/implementations/scaleway/generated/domain/api.d.ts +2486 -0
  717. package/lib/src/modules/providers/implementations/scaleway/generated/domain/api.js +2424 -0
  718. package/lib/src/modules/providers/implementations/scaleway/generated/domain/base.d.ts +66 -0
  719. package/lib/src/modules/providers/implementations/scaleway/generated/domain/base.js +66 -0
  720. package/lib/src/modules/providers/implementations/scaleway/generated/domain/common.d.ts +65 -0
  721. package/lib/src/modules/providers/implementations/scaleway/generated/domain/common.js +152 -0
  722. package/lib/src/modules/providers/implementations/scaleway/generated/domain/configuration.d.ts +91 -0
  723. package/lib/src/modules/providers/implementations/scaleway/generated/domain/configuration.js +50 -0
  724. package/lib/src/modules/providers/implementations/scaleway/generated/domain/index.d.ts +13 -0
  725. package/lib/src/modules/providers/implementations/scaleway/generated/domain/index.js +31 -0
  726. package/lib/src/modules/providers/implementations/scaleway/generated/iam/api.d.ts +6425 -0
  727. package/lib/src/modules/providers/implementations/scaleway/generated/iam/api.js +6925 -0
  728. package/lib/src/modules/providers/implementations/scaleway/generated/iam/base.d.ts +66 -0
  729. package/lib/src/modules/providers/implementations/scaleway/generated/iam/base.js +66 -0
  730. package/lib/src/modules/providers/implementations/scaleway/generated/iam/common.d.ts +65 -0
  731. package/lib/src/modules/providers/implementations/scaleway/generated/iam/common.js +152 -0
  732. package/lib/src/modules/providers/implementations/scaleway/generated/iam/configuration.d.ts +91 -0
  733. package/lib/src/modules/providers/implementations/scaleway/generated/iam/configuration.js +50 -0
  734. package/lib/src/modules/providers/implementations/scaleway/generated/iam/index.d.ts +13 -0
  735. package/lib/src/modules/providers/implementations/scaleway/generated/iam/index.js +31 -0
  736. package/lib/src/modules/providers/implementations/scaleway/generated/instances/api.d.ts +11187 -0
  737. package/lib/src/modules/providers/implementations/scaleway/generated/instances/api.js +9264 -0
  738. package/lib/src/modules/providers/implementations/scaleway/generated/instances/base.d.ts +66 -0
  739. package/lib/src/modules/providers/implementations/scaleway/generated/instances/base.js +66 -0
  740. package/lib/src/modules/providers/implementations/scaleway/generated/instances/common.d.ts +65 -0
  741. package/lib/src/modules/providers/implementations/scaleway/generated/instances/common.js +152 -0
  742. package/lib/src/modules/providers/implementations/scaleway/generated/instances/configuration.d.ts +91 -0
  743. package/lib/src/modules/providers/implementations/scaleway/generated/instances/configuration.js +50 -0
  744. package/lib/src/modules/providers/implementations/scaleway/generated/instances/index.d.ts +13 -0
  745. package/lib/src/modules/providers/implementations/scaleway/generated/instances/index.js +31 -0
  746. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/api.d.ts +492 -0
  747. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/api.js +531 -0
  748. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/base.d.ts +66 -0
  749. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/base.js +66 -0
  750. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/common.d.ts +65 -0
  751. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/common.js +152 -0
  752. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/configuration.d.ts +91 -0
  753. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/configuration.js +50 -0
  754. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/index.d.ts +13 -0
  755. package/lib/src/modules/providers/implementations/scaleway/generated/private-network/index.js +31 -0
  756. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/api.d.ts +2305 -0
  757. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/api.js +2443 -0
  758. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/base.d.ts +66 -0
  759. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/base.js +66 -0
  760. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/common.d.ts +65 -0
  761. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/common.js +152 -0
  762. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/configuration.d.ts +91 -0
  763. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/configuration.js +50 -0
  764. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/index.d.ts +13 -0
  765. package/lib/src/modules/providers/implementations/scaleway/generated/vpc/index.js +31 -0
  766. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.backend.d.ts +8 -0
  767. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.backend.js +49 -0
  768. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.module.d.ts +9 -0
  769. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.module.js +56 -0
  770. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.provisioner.d.ts +27 -0
  771. package/lib/src/modules/providers/implementations/scaleway/object-storage/scaleway-object-storage.provisioner.js +120 -0
  772. package/lib/src/modules/providers/implementations/scaleway/scaleway-baremetal.adapter.d.ts +22 -0
  773. package/lib/src/modules/providers/implementations/scaleway/scaleway-baremetal.adapter.js +140 -0
  774. package/lib/src/modules/providers/implementations/scaleway/scaleway-bootstrap-seeder.service.d.ts +12 -0
  775. package/lib/src/modules/providers/implementations/scaleway/scaleway-bootstrap-seeder.service.js +65 -0
  776. package/lib/src/modules/providers/implementations/scaleway/scaleway-capabilities.service.d.ts +23 -0
  777. package/lib/src/modules/providers/implementations/scaleway/scaleway-capabilities.service.js +319 -0
  778. package/lib/src/modules/providers/implementations/scaleway/scaleway-dns.service.d.ts +24 -0
  779. package/lib/src/modules/providers/implementations/scaleway/scaleway-dns.service.js +189 -0
  780. package/lib/src/modules/providers/implementations/scaleway/scaleway-firewall.service.d.ts +43 -0
  781. package/lib/src/modules/providers/implementations/scaleway/scaleway-firewall.service.js +455 -0
  782. package/lib/src/modules/providers/implementations/scaleway/scaleway-iam.adapter.d.ts +32 -0
  783. package/lib/src/modules/providers/implementations/scaleway/scaleway-iam.adapter.js +108 -0
  784. package/lib/src/modules/providers/implementations/scaleway/scaleway-instances.adapter.d.ts +66 -0
  785. package/lib/src/modules/providers/implementations/scaleway/scaleway-instances.adapter.js +289 -0
  786. package/lib/src/modules/providers/implementations/scaleway/scaleway-provider.module.d.ts +17 -0
  787. package/lib/src/modules/providers/implementations/scaleway/scaleway-provider.module.js +122 -0
  788. package/lib/src/modules/providers/implementations/scaleway/scaleway-provider.service.d.ts +100 -0
  789. package/lib/src/modules/providers/implementations/scaleway/scaleway-provider.service.js +1395 -0
  790. package/lib/src/modules/providers/implementations/scaleway/scaleway-volume-operations.service.d.ts +24 -0
  791. package/lib/src/modules/providers/implementations/scaleway/scaleway-volume-operations.service.js +199 -0
  792. package/lib/src/modules/providers/implementations/scaleway/scaleway-vpc.adapter.d.ts +30 -0
  793. package/lib/src/modules/providers/implementations/scaleway/scaleway-vpc.adapter.js +180 -0
  794. package/lib/src/modules/providers/index.d.ts +17 -0
  795. package/lib/src/modules/providers/index.js +39 -0
  796. package/lib/src/modules/providers/interfaces/certificate-provider.interface.d.ts +38 -0
  797. package/lib/src/modules/providers/interfaces/certificate-provider.interface.js +11 -0
  798. package/lib/src/modules/providers/interfaces/cloud-provider.interface.d.ts +215 -0
  799. package/lib/src/modules/providers/interfaces/cloud-provider.interface.js +2 -0
  800. package/lib/src/modules/providers/interfaces/credential-provider.interface.d.ts +23 -0
  801. package/lib/src/modules/providers/interfaces/credential-provider.interface.js +2 -0
  802. package/lib/src/modules/providers/interfaces/dns-provider.interface.d.ts +55 -0
  803. package/lib/src/modules/providers/interfaces/dns-provider.interface.js +12 -0
  804. package/lib/src/modules/providers/interfaces/firewall-provider.interface.d.ts +47 -0
  805. package/lib/src/modules/providers/interfaces/firewall-provider.interface.js +2 -0
  806. package/lib/src/modules/providers/interfaces/network-provider.interface.d.ts +124 -0
  807. package/lib/src/modules/providers/interfaces/network-provider.interface.js +2 -0
  808. package/lib/src/modules/providers/interfaces/provider-capabilities.interface.d.ts +87 -0
  809. package/lib/src/modules/providers/interfaces/provider-capabilities.interface.js +2 -0
  810. package/lib/src/modules/providers/interfaces/vm-backup-provider.interface.d.ts +39 -0
  811. package/lib/src/modules/providers/interfaces/vm-backup-provider.interface.js +8 -0
  812. package/lib/src/modules/providers/interfaces/volume-export.interface.d.ts +162 -0
  813. package/lib/src/modules/providers/interfaces/volume-export.interface.js +21 -0
  814. package/lib/src/modules/providers/interfaces/volume-operations.interface.d.ts +149 -0
  815. package/lib/src/modules/providers/interfaces/volume-operations.interface.js +17 -0
  816. package/lib/src/modules/providers/mappers/node-size.mapper.d.ts +20 -0
  817. package/lib/src/modules/providers/mappers/node-size.mapper.js +75 -0
  818. package/lib/src/modules/providers/mappers/pricing.mapper.d.ts +14 -0
  819. package/lib/src/modules/providers/mappers/pricing.mapper.js +60 -0
  820. package/lib/src/modules/providers/provider-core.module.d.ts +13 -0
  821. package/lib/src/modules/providers/provider-core.module.js +59 -0
  822. package/lib/src/modules/providers/providers.module.d.ts +2 -0
  823. package/lib/src/modules/providers/providers.module.js +188 -0
  824. package/lib/src/modules/providers/services/acme-certificate.service.d.ts +38 -0
  825. package/lib/src/modules/providers/services/acme-certificate.service.js +144 -0
  826. package/lib/src/modules/providers/services/contabo-firewall.service.d.ts +11 -0
  827. package/lib/src/modules/providers/services/contabo-firewall.service.js +40 -0
  828. package/lib/src/modules/providers/services/contabo-provider.service.d.ts +48 -0
  829. package/lib/src/modules/providers/services/contabo-provider.service.js +194 -0
  830. package/lib/src/modules/providers/services/credential-provider.service.d.ts +17 -0
  831. package/lib/src/modules/providers/services/credential-provider.service.js +78 -0
  832. package/lib/src/modules/providers/services/dns-provider.factory.d.ts +5 -0
  833. package/lib/src/modules/providers/services/dns-provider.factory.js +9 -0
  834. package/lib/src/modules/providers/services/firewall-provider.factory.d.ts +5 -0
  835. package/lib/src/modules/providers/services/firewall-provider.factory.js +9 -0
  836. package/lib/src/modules/providers/services/hetzner-dns.service.d.ts +71 -0
  837. package/lib/src/modules/providers/services/hetzner-dns.service.js +565 -0
  838. package/lib/src/modules/providers/services/hetzner-firewall.service.d.ts +48 -0
  839. package/lib/src/modules/providers/services/hetzner-firewall.service.js +472 -0
  840. package/lib/src/modules/providers/services/hetzner-network.service.d.ts +84 -0
  841. package/lib/src/modules/providers/services/hetzner-network.service.js +408 -0
  842. package/lib/src/modules/providers/services/hetzner-provider.service.d.ts +213 -0
  843. package/lib/src/modules/providers/services/hetzner-provider.service.js +1159 -0
  844. package/lib/src/modules/providers/services/provider.factory.d.ts +5 -0
  845. package/lib/src/modules/providers/services/provider.factory.js +9 -0
  846. package/lib/src/modules/providers/services/volume-export.service.d.ts +50 -0
  847. package/lib/src/modules/providers/services/volume-export.service.js +650 -0
  848. package/lib/src/modules/shared/encryption/encryption.module.d.ts +2 -0
  849. package/lib/src/modules/shared/encryption/encryption.module.js +22 -0
  850. package/lib/src/modules/shared/encryption/services/encryption.service.d.ts +47 -0
  851. package/lib/src/modules/shared/encryption/services/encryption.service.js +199 -0
  852. package/lib/src/modules/storage/enums/storage-backend-provider.enum.d.ts +19 -0
  853. package/lib/src/modules/storage/enums/storage-backend-provider.enum.js +23 -0
  854. package/lib/src/modules/storage/factories/object-storage-provisioner.factory.d.ts +11 -0
  855. package/lib/src/modules/storage/factories/object-storage-provisioner.factory.js +48 -0
  856. package/lib/src/modules/storage/factories/storage-backend.factory.d.ts +12 -0
  857. package/lib/src/modules/storage/factories/storage-backend.factory.js +51 -0
  858. package/lib/src/modules/storage/implementations/generic-s3.backend.d.ts +23 -0
  859. package/lib/src/modules/storage/implementations/generic-s3.backend.js +172 -0
  860. package/lib/src/modules/storage/interfaces/backup-storage-backend.interface.d.ts +48 -0
  861. package/lib/src/modules/storage/interfaces/backup-storage-backend.interface.js +2 -0
  862. package/lib/src/modules/storage/interfaces/object-storage-provisioner.interface.d.ts +55 -0
  863. package/lib/src/modules/storage/interfaces/object-storage-provisioner.interface.js +9 -0
  864. package/lib/src/modules/storage/storage.module.d.ts +2 -0
  865. package/lib/src/modules/storage/storage.module.js +21 -0
  866. package/lib/src/modules/storage/tokens/object-storage-provisioner-registry.token.d.ts +12 -0
  867. package/lib/src/modules/storage/tokens/object-storage-provisioner-registry.token.js +8 -0
  868. package/lib/src/modules/storage/tokens/storage-backend-registry.token.d.ts +12 -0
  869. package/lib/src/modules/storage/tokens/storage-backend-registry.token.js +8 -0
  870. package/lib/src/modules/terminal/services/native-ssh-connection.service.d.ts +48 -0
  871. package/lib/src/modules/terminal/services/native-ssh-connection.service.js +282 -0
  872. package/oclif.manifest.json +5243 -0
  873. package/package.json +125 -0
@@ -0,0 +1,762 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ var CliClustersService_1;
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.CliClustersService = void 0;
50
+ const common_1 = require("@nestjs/common");
51
+ const node_crypto_1 = require("node:crypto");
52
+ const uuid_1 = require("uuid");
53
+ const config_storage_1 = require("../lib/config-storage");
54
+ const cluster_entity_1 = require("../../../src/modules/infrastructure/clusters/entities/cluster.entity");
55
+ const hostname_mode_enum_1 = require("../../../src/modules/dns/enums/hostname-mode.enum");
56
+ const nip_token_util_1 = require("../../../src/modules/dns/utils/nip-token.util");
57
+ const infrastructure_operations_entity_1 = require("../../../src/modules/infrastructure/servers/entities/infrastructure-operations.entity");
58
+ const cli_cluster_repository_1 = require("../lib/repositories/cli-cluster.repository");
59
+ const cli_operation_repository_1 = require("../lib/repositories/cli-operation.repository");
60
+ const cli_node_repository_1 = require("../lib/repositories/cli-node.repository");
61
+ const cli_firewall_repository_1 = require("../lib/repositories/cli-firewall.repository");
62
+ const encryption_service_1 = require("../../../src/modules/shared/encryption/services/encryption.service");
63
+ const cli_ssh_service_1 = require("./cli-ssh.service");
64
+ const cli_ca_service_1 = require("./cli-ca.service");
65
+ const provider_factory_1 = require("../../../src/modules/providers/services/provider.factory");
66
+ const hetzner_firewall_service_1 = require("../../../src/modules/providers/services/hetzner-firewall.service");
67
+ const fs = __importStar(require("node:fs"));
68
+ const path = __importStar(require("node:path"));
69
+ const os = __importStar(require("node:os"));
70
+ /**
71
+ * CLI Clusters Service
72
+ *
73
+ * Simplified version of ClustersService for CLI usage.
74
+ * Uses file-based repositories and Bull queue mock.
75
+ * Integrates SSH and CA management for secure server access.
76
+ */
77
+ let CliClustersService = CliClustersService_1 = class CliClustersService {
78
+ constructor(clusterRepository, operationRepository, nodeRepository, firewallRepository, encryptionService, sshService, caService, providerFactory, firewallService, infrastructureQueue) {
79
+ this.clusterRepository = clusterRepository;
80
+ this.operationRepository = operationRepository;
81
+ this.nodeRepository = nodeRepository;
82
+ this.firewallRepository = firewallRepository;
83
+ this.encryptionService = encryptionService;
84
+ this.sshService = sshService;
85
+ this.caService = caService;
86
+ this.providerFactory = providerFactory;
87
+ this.firewallService = firewallService;
88
+ this.infrastructureQueue = infrastructureQueue;
89
+ this.logger = new common_1.Logger(CliClustersService_1.name);
90
+ }
91
+ /**
92
+ * Create a new cluster
93
+ */
94
+ async create(createClusterDto) {
95
+ this.logger.log(`Creating cluster: ${createClusterDto.name}`);
96
+ // Get or create SSH key pair
97
+ const { publicKey: sshPublicKey } = await this.sshService.getOrCreateSshKey();
98
+ this.logger.log('SSH key ready for cluster provisioning');
99
+ // Get or create CA certificate
100
+ const caPublicKey = await this.caService.getCaPublicKey();
101
+ this.logger.log('CA certificate ready for cluster provisioning');
102
+ // Generate and encrypt K3s token
103
+ const k3sToken = this.generateK3sToken();
104
+ const k3sTokenEncrypted = this.encryptionService.encrypt(k3sToken);
105
+ // Generate and encrypt observability stack passwords
106
+ const postgresPassword = this.generateSecurePassword(64);
107
+ const redisPassword = this.generateSecurePassword(64);
108
+ const grafanaPassword = this.generateSecurePassword(64);
109
+ // Generate CLI API key (pre-seeded into flui-secrets for BootstrapSeeder)
110
+ const fluiApiKey = `flui_${(0, uuid_1.v4)().replaceAll('-', '')}`;
111
+ // Read provider credentials for bootstrap injection.
112
+ // Hetzner uses a single API token; Scaleway uses an Access Key ID + Secret Key pair.
113
+ // Both shapes are propagated to the cluster pod so BootstrapSeeder can re-create
114
+ // the right credential rows server-side without an extra HTTP roundtrip.
115
+ const configStorage = new config_storage_1.ConfigStorage();
116
+ let providerToken = '';
117
+ let providerScalewayAccessKey = '';
118
+ let providerScalewaySecretKey = '';
119
+ let providerRegions = '';
120
+ if (createClusterDto.provider === 'scaleway') {
121
+ const creds = configStorage.getCredentials('scaleway');
122
+ providerScalewayAccessKey = creds?.accessKey || '';
123
+ providerScalewaySecretKey = creds?.secretKey || '';
124
+ // Scaleway authenticates HTTP calls with the Secret Key (X-Auth-Token);
125
+ // keep providerToken populated so legacy code paths still work.
126
+ providerToken = providerScalewaySecretKey;
127
+ providerRegions = 'fr-par,nl-ams,pl-waw';
128
+ }
129
+ else {
130
+ providerToken = configStorage.getToken(createClusterDto.provider) || '';
131
+ providerRegions = 'nbg1,fsn1,hel1,ash,hil';
132
+ }
133
+ // Generate JWT secret and admin credentials for local auth mode
134
+ const jwtSecret = this.generateSecurePassword(64);
135
+ const adminEmail = createClusterDto.metadata?.adminEmail || '';
136
+ const adminPassword = this.generateSecurePassword(24);
137
+ // Generate Zitadel secrets (only used by OBSERVABILITY clusters)
138
+ const zitadelMasterkey = this.generateSecurePassword(32);
139
+ const zitadelDbAdminPassword = this.generateSecurePassword(32);
140
+ const zitadelDbUserPassword = this.generateSecurePassword(32);
141
+ const zitadelAdminTempPassword = this.generateSecurePassword(24);
142
+ // Get worker count from DTO
143
+ const workerCount = createClusterDto.workerCount;
144
+ // Determine cluster type from metadata (same logic as API)
145
+ const metadata = createClusterDto.metadata || {};
146
+ const clusterType = metadata.isObservabilityCluster
147
+ ? cluster_entity_1.ClusterType.OBSERVABILITY
148
+ : cluster_entity_1.ClusterType.WORKLOAD;
149
+ const hostnameMode = createClusterDto.endpointHostnameMode ?? hostname_mode_enum_1.HostnameMode.IP;
150
+ let nipHostnameToken = null;
151
+ if (hostnameMode === hostname_mode_enum_1.HostnameMode.IP) {
152
+ if (createClusterDto.nipHostnameToken) {
153
+ if (!(0, nip_token_util_1.isValidNipHostnameToken)(createClusterDto.nipHostnameToken)) {
154
+ throw new Error('nipHostnameToken must match [a-z0-9-], 1-30 chars, no leading/trailing dash.');
155
+ }
156
+ nipHostnameToken = createClusterDto.nipHostnameToken;
157
+ }
158
+ else {
159
+ nipHostnameToken = (0, nip_token_util_1.generateNipHostnameToken)();
160
+ }
161
+ this.logger.log(`Cluster ${createClusterDto.name} nip.io hostname token: ${nipHostnameToken}`);
162
+ }
163
+ // Create cluster entity with SSH and CA info
164
+ const cluster = this.clusterRepository.create({
165
+ name: createClusterDto.name,
166
+ provider: createClusterDto.provider,
167
+ region: createClusterDto.region,
168
+ nodeSize: createClusterDto.nodeSize,
169
+ image: createClusterDto.image || 'ubuntu-24.04',
170
+ nodeCount: 0, // Will be updated during creation
171
+ status: cluster_entity_1.ClusterStatus.CREATING,
172
+ clusterType,
173
+ k3sTokenEncrypted,
174
+ k3sVersion: createClusterDto.k3sVersion || 'v1.35.4+k3s1',
175
+ endpointHostnameMode: hostnameMode,
176
+ nipHostnameToken,
177
+ sharedStorageEnabled: createClusterDto.sharedStorageEnabled,
178
+ sharedStorageVolumeSizeGb: createClusterDto.sharedStorageVolumeSizeGb,
179
+ metadata: {
180
+ ...createClusterDto.metadata,
181
+ sshPublicKey,
182
+ caPublicKey,
183
+ // Store encrypted passwords for observability stack
184
+ postgresPasswordEncrypted: this.encryptionService.encrypt(postgresPassword),
185
+ redisPasswordEncrypted: this.encryptionService.encrypt(redisPassword),
186
+ grafanaPasswordEncrypted: this.encryptionService.encrypt(grafanaPassword),
187
+ // Auth mode — used by env:credentials to know which sections to show
188
+ authMode: metadata.authMode || 'local',
189
+ // Store encrypted JWT secret and admin credentials for local auth
190
+ jwtSecretEncrypted: this.encryptionService.encrypt(jwtSecret),
191
+ adminEmail,
192
+ adminPasswordEncrypted: this.encryptionService.encrypt(adminPassword),
193
+ // Store encrypted Zitadel secrets
194
+ zitadelMasterkeyEncrypted: this.encryptionService.encrypt(zitadelMasterkey),
195
+ zitadelDbAdminPasswordEncrypted: this.encryptionService.encrypt(zitadelDbAdminPassword),
196
+ zitadelDbUserPasswordEncrypted: this.encryptionService.encrypt(zitadelDbUserPassword),
197
+ zitadelAdminTempPasswordEncrypted: this.encryptionService.encrypt(zitadelAdminTempPassword),
198
+ // Bootstrap seeder vars — injected into flui-secrets, read by BootstrapSeeder at API startup
199
+ fluiApiKey, // plain text — written into K8s secret, not stored encrypted here
200
+ providerTokenEncrypted: this.encryptionService.encrypt(providerToken),
201
+ providerScalewayAccessKeyEncrypted: providerScalewayAccessKey
202
+ ? this.encryptionService.encrypt(providerScalewayAccessKey)
203
+ : '',
204
+ providerScalewaySecretKeyEncrypted: providerScalewaySecretKey
205
+ ? this.encryptionService.encrypt(providerScalewaySecretKey)
206
+ : '',
207
+ providerRegions,
208
+ },
209
+ sshKeyIds: createClusterDto.sshKeys || [],
210
+ });
211
+ await this.clusterRepository.save(cluster);
212
+ // Create operation
213
+ const operation = this.operationRepository.create({
214
+ operationType: infrastructure_operations_entity_1.OperationType.CREATE_CLUSTER,
215
+ status: infrastructure_operations_entity_1.OperationStatus.PENDING,
216
+ resourceId: cluster.id,
217
+ resourceType: 'cluster',
218
+ resourceName: cluster.name,
219
+ provider: cluster.provider,
220
+ totalSteps: 5 + workerCount,
221
+ currentStepIndex: 0,
222
+ metadata: {
223
+ clusterId: cluster.id,
224
+ clusterConfig: createClusterDto,
225
+ estimatedDurationInSeconds: 80,
226
+ targetNodeCount: workerCount + 1,
227
+ workerCount,
228
+ sshPublicKey,
229
+ caPublicKey,
230
+ firewallId: createClusterDto.metadata?.firewallId,
231
+ sourceCidrs: createClusterDto.metadata?.sourceCidrs,
232
+ },
233
+ });
234
+ await this.operationRepository.save(operation);
235
+ // Add job to queue (our mock queue will execute synchronously)
236
+ await this.infrastructureQueue.add('create-cluster', {
237
+ clusterId: cluster.id,
238
+ operationId: operation.id,
239
+ });
240
+ return { cluster, operation };
241
+ }
242
+ /**
243
+ * Get cluster by ID
244
+ */
245
+ async findOne(id) {
246
+ return this.clusterRepository.findOne({
247
+ where: { id },
248
+ relations: ['nodes'],
249
+ });
250
+ }
251
+ /**
252
+ * Get kubeconfig for cluster
253
+ */
254
+ async getKubeconfig(clusterId) {
255
+ const cluster = await this.findOne(clusterId);
256
+ if (!cluster?.kubeconfigEncrypted) {
257
+ return null;
258
+ }
259
+ return this.encryptionService.decrypt(cluster.kubeconfigEncrypted);
260
+ }
261
+ /**
262
+ * Delete cluster with orphaned VPS cleanup
263
+ */
264
+ async remove(id) {
265
+ const cluster = await this.findOne(id);
266
+ if (!cluster) {
267
+ throw new Error(`Cluster ${id} not found`);
268
+ }
269
+ this.logger.log(`Deleting observability cluster ${id} (${cluster.name})`);
270
+ this.logger.log(`Cluster details: ${JSON.stringify({
271
+ id: cluster.id,
272
+ name: cluster.name,
273
+ provider: cluster.provider,
274
+ region: cluster.region,
275
+ status: cluster.status,
276
+ nodeCount: cluster.nodeCount,
277
+ })}`);
278
+ // Update status to DELETING
279
+ cluster.status = cluster_entity_1.ClusterStatus.DELETING;
280
+ await this.clusterRepository.save(cluster);
281
+ try {
282
+ // Get provider instance
283
+ const provider = this.providerFactory.getProvider(cluster.provider);
284
+ this.logger.log(`Using provider: ${cluster.provider}`);
285
+ // PHASE 1: Delete nodes tracked in local storage
286
+ const localNodes = await this.nodeRepository.find({
287
+ where: { clusterId: cluster.id },
288
+ });
289
+ this.logger.log(`Phase 1: Found ${localNodes.length} nodes in local storage`);
290
+ if (localNodes.length > 0) {
291
+ this.logger.log(`Local nodes details: ${JSON.stringify(localNodes.map((n) => ({
292
+ id: n.id,
293
+ serverName: n.serverName,
294
+ providerResourceId: n.providerResourceId,
295
+ nodeType: n.nodeType,
296
+ ipAddress: n.ipAddress,
297
+ })))}`);
298
+ }
299
+ const deletedServerIds = new Set();
300
+ const deletionActions = [];
301
+ // STEP 1: Initiate deletion for all tracked servers
302
+ for (const node of localNodes) {
303
+ if (node.providerResourceId) {
304
+ this.logger.log(`Initiating deletion for tracked server ${node.serverName} (${node.providerResourceId})`);
305
+ try {
306
+ const result = await provider.deleteServer({
307
+ server_id: node.providerResourceId,
308
+ provider: cluster.provider,
309
+ force: true, // Force delete even if server is running
310
+ });
311
+ if (result.actionId) {
312
+ deletionActions.push({
313
+ serverId: node.providerResourceId,
314
+ actionId: result.actionId,
315
+ serverName: node.serverName,
316
+ });
317
+ this.logger.log(`✓ Deletion initiated for ${node.serverName} (Action ID: ${result.actionId})`);
318
+ }
319
+ else {
320
+ // If no actionId, mark as deleted immediately (might be already deleted)
321
+ deletedServerIds.add(node.providerResourceId);
322
+ this.logger.log(`✓ Server ${node.serverName} deleted (no action tracking needed)`);
323
+ }
324
+ }
325
+ catch (error) {
326
+ // Log error but continue with other nodes
327
+ this.logger.error(`✗ Failed to delete tracked server ${node.serverName}:`, error.message);
328
+ }
329
+ // Remove node from file storage
330
+ await this.nodeRepository.remove(node);
331
+ }
332
+ }
333
+ // STEP 2: Wait for all deletion actions to complete
334
+ if (deletionActions.length > 0) {
335
+ this.logger.log(`Waiting for ${deletionActions.length} server deletion(s) to complete...`);
336
+ // Check if provider supports waitForActionCompletion (Hetzner does)
337
+ if (typeof provider.waitForActionCompletion === 'function') {
338
+ for (const action of deletionActions) {
339
+ try {
340
+ this.logger.log(`Waiting for server ${action.serverName} deletion to complete (Action ID: ${action.actionId})...`);
341
+ await provider.waitForActionCompletion(action.actionId);
342
+ deletedServerIds.add(action.serverId);
343
+ this.logger.log(`✓ Server ${action.serverName} fully deleted`);
344
+ }
345
+ catch (error) {
346
+ this.logger.error(`✗ Failed to wait for server ${action.serverName} deletion:`, error.message);
347
+ // Even if waiting fails, mark as deleted to continue cleanup
348
+ deletedServerIds.add(action.serverId);
349
+ }
350
+ }
351
+ }
352
+ else {
353
+ this.logger.warn('Provider does not support action tracking. Proceeding without waiting.');
354
+ // Mark all as deleted if provider doesn't support action tracking
355
+ deletionActions.forEach((action) => deletedServerIds.add(action.serverId));
356
+ }
357
+ this.logger.log(`✓ All tracked server deletions completed (${deletedServerIds.size} servers deleted)`);
358
+ }
359
+ // PHASE 2: Scan provider for orphaned VPS with matching observability-id
360
+ this.logger.log(`Phase 2: Scanning ${cluster.provider} for orphaned VPS...`);
361
+ const allServers = await provider.listServersAsDto();
362
+ this.logger.log(`Found ${allServers.length} total servers on provider`);
363
+ if (allServers.length > 0) {
364
+ this.logger.log(`All servers summary: ${JSON.stringify(allServers.map((s) => ({
365
+ id: s.provider_resource_id,
366
+ name: s.name,
367
+ labels: s.labels?.map((l) => `${l.key}=${l.value}`),
368
+ })))}`);
369
+ }
370
+ // Filter servers that belong to this observability cluster
371
+ const orphanedServers = allServers.filter((server) => {
372
+ // Check if already deleted in Phase 1
373
+ if (deletedServerIds.has(server.provider_resource_id)) {
374
+ this.logger.log(`Skipping server ${server.name} - already deleted in Phase 1`);
375
+ return false;
376
+ }
377
+ // Check if server belongs to this observability cluster
378
+ const hasObservabilityId = server.labels?.some((label) => label.key === 'flui-cluster-id' && label.value === cluster.id);
379
+ // Check if server is managed by flui
380
+ const isFluiManaged = server.labels?.some((label) => label.key === 'managed-by' && label.value === 'flui-cloud');
381
+ const isMatch = hasObservabilityId && isFluiManaged;
382
+ this.logger.log(`Server ${server.name}: isFluiManaged=${isFluiManaged}, hasObservabilityId=${hasObservabilityId}, isMatch=${isMatch}`);
383
+ return isMatch;
384
+ });
385
+ this.logger.log(`Found ${orphanedServers.length} orphaned VPS to clean up`);
386
+ // Delete orphaned VPS with safety checks
387
+ const orphanedDeletionActions = [];
388
+ for (const server of orphanedServers) {
389
+ if (this.verifySafeDeletion(server, cluster.id)) {
390
+ try {
391
+ this.logger.log(`Initiating deletion for orphaned VPS ${server.name} (${server.provider_resource_id})`);
392
+ const result = await provider.deleteServer({
393
+ server_id: server.provider_resource_id,
394
+ provider: cluster.provider,
395
+ force: true, // Force delete even if server is running
396
+ });
397
+ if (result.actionId) {
398
+ orphanedDeletionActions.push({
399
+ serverId: server.provider_resource_id,
400
+ actionId: result.actionId,
401
+ serverName: server.name,
402
+ });
403
+ this.logger.log(`✓ Deletion initiated for ${server.name} (Action ID: ${result.actionId})`);
404
+ }
405
+ else {
406
+ this.logger.log(`✓ Orphaned VPS ${server.name} deleted (no action tracking needed)`);
407
+ }
408
+ }
409
+ catch (error) {
410
+ this.logger.error(`✗ Failed to delete orphaned VPS ${server.name}:`, error.message);
411
+ }
412
+ }
413
+ else {
414
+ this.logger.warn(`⚠ Skipped VPS ${server.name} - safety check failed`);
415
+ }
416
+ }
417
+ // Wait for all orphaned server deletions to complete
418
+ if (orphanedDeletionActions.length > 0) {
419
+ this.logger.log(`Waiting for ${orphanedDeletionActions.length} orphaned VPS deletion(s) to complete...`);
420
+ if (typeof provider.waitForActionCompletion === 'function') {
421
+ for (const action of orphanedDeletionActions) {
422
+ try {
423
+ this.logger.log(`Waiting for orphaned VPS ${action.serverName} deletion to complete (Action ID: ${action.actionId})...`);
424
+ await provider.waitForActionCompletion(action.actionId);
425
+ this.logger.log(`✓ Orphaned VPS ${action.serverName} fully deleted`);
426
+ }
427
+ catch (error) {
428
+ this.logger.error(`✗ Failed to wait for orphaned VPS ${action.serverName} deletion:`, error.message);
429
+ }
430
+ }
431
+ }
432
+ this.logger.log(`✓ All orphaned VPS deletions completed (${orphanedDeletionActions.length} servers deleted)`);
433
+ }
434
+ // PHASE 2.5: Delete cluster firewalls (GUARANTEED CLEANUP)
435
+ this.logger.log(`Phase 2.5: Deleting cluster firewalls from ${cluster.provider}...`);
436
+ try {
437
+ // STEP 1: Find ALL firewalls for this cluster
438
+ this.logger.log(`Searching for firewalls with label flui-cluster-id=${cluster.id}`);
439
+ const clusterFirewalls = await this.firewallService.listFirewalls({
440
+ clusterId: cluster.id,
441
+ });
442
+ this.logger.log(`Found ${clusterFirewalls.length} firewall(s) for cluster ${cluster.id}`);
443
+ // STEP 1b: FALLBACK - Search by name pattern if no firewalls found by label
444
+ let allFirewalls = [...clusterFirewalls];
445
+ if (clusterFirewalls.length === 0) {
446
+ this.logger.log(`No firewalls found by label. Searching by name pattern...`);
447
+ // Search for firewalls with observability pattern:
448
+ // - Old pattern: flui-observability-{clusterId}
449
+ // - New pattern: flui-observability-firewall-{timestamp}
450
+ const allProviderFirewalls = await this.firewallService.listFirewalls({});
451
+ const nameMatchedFirewalls = allProviderFirewalls.filter((fw) => fw.name === `flui-observability-${cluster.id}` ||
452
+ fw.name.startsWith('flui-observability-firewall-') ||
453
+ fw.name.startsWith('flui-firewall-temp-'));
454
+ if (nameMatchedFirewalls.length > 0) {
455
+ this.logger.log(`Found ${nameMatchedFirewalls.length} firewall(s) by name pattern:`);
456
+ nameMatchedFirewalls.forEach((fw) => {
457
+ this.logger.log(` - ${fw.name} (${fw.id})`);
458
+ });
459
+ allFirewalls.push(...nameMatchedFirewalls);
460
+ }
461
+ else {
462
+ this.logger.log(`No firewalls found with observability name patterns`);
463
+ }
464
+ }
465
+ if (allFirewalls.length === 0) {
466
+ this.logger.log('✓ No firewalls to delete for this cluster');
467
+ }
468
+ else {
469
+ // STEP 2: Delete each firewall with retry logic for "resource_in_use" errors
470
+ const deletePromises = allFirewalls.map(async (fw) => {
471
+ const maxRetries = 5;
472
+ const retryDelay = 5000; // 5 seconds
473
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
474
+ try {
475
+ this.logger.log(`Deleting firewall ${fw.name} (${fw.id}) - Attempt ${attempt}/${maxRetries}`);
476
+ await this.firewallService.deleteFirewall(fw.id);
477
+ this.logger.log(`✓ Deleted firewall ${fw.name}`);
478
+ return { success: true, id: fw.id, name: fw.name };
479
+ }
480
+ catch (error) {
481
+ const isResourceInUse = error.message?.includes('resource_in_use') ||
482
+ error.message?.includes('still in use');
483
+ if (isResourceInUse && attempt < maxRetries) {
484
+ this.logger.warn(`Firewall ${fw.name} is still in use. Waiting ${retryDelay}ms before retry ${attempt + 1}/${maxRetries}...`);
485
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
486
+ continue; // Retry
487
+ }
488
+ this.logger.error(`✗ Failed to delete firewall ${fw.name} after ${attempt} attempts: ${error.message}`);
489
+ return { success: false, id: fw.id, name: fw.name, error };
490
+ }
491
+ }
492
+ return {
493
+ success: false,
494
+ id: fw.id,
495
+ name: fw.name,
496
+ error: new Error('Max retries exceeded'),
497
+ };
498
+ });
499
+ const results = await Promise.all(deletePromises);
500
+ const failedCount = results.filter((r) => !r.success).length;
501
+ // STEP 3: VERIFICATION - Re-scan to ensure all deleted
502
+ this.logger.log('Verifying all firewalls deleted...');
503
+ const remainingFirewalls = await this.firewallService.listFirewalls({
504
+ clusterId: cluster.id,
505
+ });
506
+ if (remainingFirewalls.length > 0) {
507
+ this.logger.warn(`⚠️ WARNING: ${remainingFirewalls.length} firewall(s) still exist for cluster after deletion!`);
508
+ // RETRY deletion for remaining firewalls
509
+ for (const fw of remainingFirewalls) {
510
+ try {
511
+ this.logger.log(`RETRY: Deleting firewall ${fw.name} (${fw.id})`);
512
+ await this.firewallService.deleteFirewall(fw.id);
513
+ this.logger.log(`✓ RETRY SUCCESS: Deleted firewall ${fw.name}`);
514
+ }
515
+ catch (error) {
516
+ this.logger.error(`✗ RETRY FAILED: Could not delete firewall ${fw.name}: ${error.message}`);
517
+ }
518
+ }
519
+ // Final verification
520
+ const finalCheck = await this.firewallService.listFirewalls({
521
+ clusterId: cluster.id,
522
+ });
523
+ if (finalCheck.length > 0) {
524
+ this.logger.error(`❌ CRITICAL: ${finalCheck.length} firewall(s) could not be deleted. Manual cleanup required:`);
525
+ finalCheck.forEach((fw) => {
526
+ this.logger.error(` - Firewall ID: ${fw.id}, Name: ${fw.name}`);
527
+ });
528
+ }
529
+ else {
530
+ this.logger.log('✓ All firewalls successfully deleted after retry');
531
+ }
532
+ }
533
+ else {
534
+ this.logger.log(`✓ Successfully deleted all ${allFirewalls.length} firewall(s)`);
535
+ }
536
+ if (failedCount > 0) {
537
+ this.logger.warn(`${failedCount} firewall deletion(s) failed on first attempt`);
538
+ }
539
+ // STEP 4: Clean up firewall from local storage
540
+ this.logger.log('Cleaning up firewall from local storage...');
541
+ for (const fw of allFirewalls) {
542
+ try {
543
+ await this.firewallRepository.delete(fw.id);
544
+ this.logger.log(`✓ Removed firewall ${fw.id} from local storage`);
545
+ }
546
+ catch (error) {
547
+ this.logger.warn(`Failed to remove firewall ${fw.id} from local storage: ${error.message}`);
548
+ }
549
+ }
550
+ }
551
+ }
552
+ catch (error) {
553
+ this.logger.error(`Phase 2.5 failed: ${error.message}. Continuing with cluster deletion...`);
554
+ this.logger.error(`Error stack: ${error.stack}`);
555
+ }
556
+ this.logger.log('Phase 2.5 completed: Firewall cleanup finished');
557
+ // PHASE 3: Clean up bootstrap SSH keys
558
+ this.logger.log(`Phase 3: Scanning ${cluster.provider} for bootstrap SSH keys...`);
559
+ if (provider.listSSHKeys && provider.deleteSSHKey) {
560
+ const allKeys = await provider.listSSHKeys();
561
+ this.logger.log(`Found ${allKeys.length} total SSH keys on provider`);
562
+ // Filter bootstrap keys for this observability cluster
563
+ const bootstrapKeys = allKeys.filter((key) => {
564
+ const tags = key.tags || {};
565
+ const isFluiManaged = tags['managed-by'] === 'flui-cloud';
566
+ const hasMatchingObsId = tags['flui-cluster-id'] === cluster.id;
567
+ const isBootstrapKey = tags['flui-resource-type'] === 'ssh-key';
568
+ return isFluiManaged && hasMatchingObsId && isBootstrapKey;
569
+ });
570
+ this.logger.log(`Found ${bootstrapKeys.length} bootstrap SSH keys to clean up`);
571
+ // Delete bootstrap keys
572
+ for (const key of bootstrapKeys) {
573
+ try {
574
+ this.logger.log(`Deleting bootstrap SSH key ${key.name} (${key.id})`);
575
+ await provider.deleteSSHKey(key.id.toString());
576
+ this.logger.log(`✓ Deleted bootstrap SSH key ${key.name}`);
577
+ }
578
+ catch (error) {
579
+ this.logger.error(`✗ Failed to delete bootstrap SSH key ${key.name}:`, error.message);
580
+ }
581
+ }
582
+ // Clean up local bootstrap key files
583
+ const bootstrapDir = path.join(os.homedir(), '.flui', 'bootstrap-keys', cluster.id);
584
+ if (fs.existsSync(bootstrapDir)) {
585
+ try {
586
+ fs.rmSync(bootstrapDir, { recursive: true, force: true });
587
+ this.logger.log(`✓ Cleaned up local bootstrap keys: ${bootstrapDir}`);
588
+ }
589
+ catch (error) {
590
+ this.logger.warn(`Failed to cleanup local bootstrap keys: ${error.message}`);
591
+ }
592
+ }
593
+ }
594
+ else {
595
+ this.logger.warn(`Provider ${cluster.provider} does not support SSH key management, skipping Phase 3`);
596
+ }
597
+ // Detach + delete the Flui-managed shared storage Volume (if any).
598
+ // We do this AFTER servers are deleted so the volume is already detached
599
+ // at the provider; the explicit detachVolume call is a belt-and-braces
600
+ // safety net for cases where the provider doesn't auto-detach.
601
+ if (cluster.sharedStorageVolumeId) {
602
+ const volumeRef = this.formatVolumeRef(cluster.sharedStorageVolumeId, cluster.provider, cluster.region);
603
+ this.logger.log(`[volume-cleanup] Starting detach+delete for ${volumeRef}`);
604
+ if (provider.detachVolume) {
605
+ try {
606
+ await provider.detachVolume(volumeRef);
607
+ }
608
+ catch (detachErr) {
609
+ this.logger.warn(`[volume-cleanup] Detach failed for ${volumeRef}: ${detachErr.message} — will retry delete anyway`);
610
+ }
611
+ }
612
+ if (provider.deleteVolume) {
613
+ // Scaleway can take a few seconds to release the volume reference
614
+ // after the server is gone. Retry with backoff before giving up.
615
+ const maxAttempts = 6;
616
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
617
+ try {
618
+ await provider.deleteVolume(volumeRef);
619
+ this.logger.log(`[volume-cleanup] ✓ Deleted shared storage volume ${volumeRef}`);
620
+ break;
621
+ }
622
+ catch (volErr) {
623
+ const msg = volErr.message;
624
+ const lastAttempt = attempt === maxAttempts;
625
+ if (lastAttempt) {
626
+ this.logger.warn(`[volume-cleanup] FAILED after ${attempt} attempts: ${msg}. ` +
627
+ `Run "flui env orphan-volumes --cleanup" to recover.`);
628
+ }
629
+ else {
630
+ this.logger.warn(`[volume-cleanup] attempt ${attempt}/${maxAttempts} failed (${msg}); retrying in 5s...`);
631
+ await new Promise((r) => setTimeout(r, 5000));
632
+ }
633
+ }
634
+ }
635
+ }
636
+ else {
637
+ this.logger.warn(`[volume-cleanup] Provider ${cluster.provider} has no deleteVolume — leaving ${volumeRef} at provider`);
638
+ }
639
+ }
640
+ // Remove cluster from file storage
641
+ await this.clusterRepository.remove(cluster);
642
+ this.logger.log(`✓ Successfully deleted cluster ${cluster.name}`);
643
+ this.logger.log(`Total: ${localNodes.length} tracked + ${orphanedServers.length} orphaned VPS cleaned up`);
644
+ }
645
+ catch (error) {
646
+ // If deletion fails, revert status to ERROR
647
+ cluster.status = cluster_entity_1.ClusterStatus.ERROR;
648
+ await this.clusterRepository.save(cluster);
649
+ this.logger.error(`Failed to delete cluster ${id}:`, error);
650
+ throw error;
651
+ }
652
+ }
653
+ /**
654
+ * Verify that a server is safe to delete
655
+ * Checks for all required flui labels
656
+ */
657
+ formatVolumeRef(volumeId, provider, region) {
658
+ if (provider !== 'scaleway')
659
+ return volumeId;
660
+ if (volumeId.includes(':'))
661
+ return volumeId;
662
+ const zone = /^[a-z]{2}-[a-z]{3}$/.test(region) ? `${region}-1` : region;
663
+ return `${zone}:${volumeId}`;
664
+ }
665
+ verifySafeDeletion(server, expectedObservabilityId) {
666
+ const labels = server.labels || [];
667
+ // MUST have managed-by = flui-cloud
668
+ const isFluiManaged = labels.some((label) => label.key === 'managed-by' && label.value === 'flui-cloud');
669
+ // MUST have matching cluster-id
670
+ const hasMatchingObsId = labels.some((label) => label.key === 'flui-cluster-id' &&
671
+ label.value === expectedObservabilityId);
672
+ // MUST have node-type (master or worker)
673
+ const hasNodeType = labels.some((label) => label.key === 'flui-node-type' &&
674
+ (label.value === 'master' || label.value === 'worker'));
675
+ // MUST have resource-type = cluster-node
676
+ const isClusterNode = labels.some((label) => label.key === 'flui-resource-type' && label.value === 'cluster-node');
677
+ const isSafe = isFluiManaged && hasMatchingObsId && hasNodeType && isClusterNode;
678
+ if (!isSafe) {
679
+ this.logger.warn(`Safety check FAILED for server ${server.name}:`, {
680
+ isFluiManaged,
681
+ hasMatchingObsId,
682
+ hasNodeType,
683
+ isClusterNode,
684
+ labels: labels.map((l) => `${l.key}=${l.value}`),
685
+ });
686
+ }
687
+ return isSafe;
688
+ }
689
+ /**
690
+ * Get or create encryption key from ~/.flui/encryption.key
691
+ * Same pattern as CA: generate once, reuse forever.
692
+ * This key is shared between CLI and API (local dev) and deployed
693
+ * to K8s clusters as ENCRYPTION_KEY in the flui-secrets Secret.
694
+ */
695
+ getOrCreateEncryptionKey() {
696
+ const keyDir = path.join(os.homedir(), '.flui');
697
+ const keyFilePath = path.join(keyDir, 'encryption.key');
698
+ // Reuse existing key
699
+ if (fs.existsSync(keyFilePath)) {
700
+ const existingKey = fs.readFileSync(keyFilePath, 'utf-8').trim();
701
+ if (existingKey.length === 64) {
702
+ this.logger.log('Reusing encryption key from ~/.flui/encryption.key');
703
+ return existingKey;
704
+ }
705
+ this.logger.warn('Invalid encryption key in ~/.flui/encryption.key, regenerating');
706
+ }
707
+ // Generate new key
708
+ const newKey = (0, node_crypto_1.randomBytes)(32).toString('hex');
709
+ if (!fs.existsSync(keyDir)) {
710
+ fs.mkdirSync(keyDir, { recursive: true });
711
+ }
712
+ fs.writeFileSync(keyFilePath, newKey, { encoding: 'utf-8', mode: 0o600 });
713
+ this.logger.log('Generated new encryption key at ~/.flui/encryption.key');
714
+ return newKey;
715
+ }
716
+ /**
717
+ * Generate random K3s token
718
+ */
719
+ generateK3sToken() {
720
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
721
+ let token = '';
722
+ for (let i = 0; i < 64; i++) {
723
+ token += chars.charAt((0, node_crypto_1.randomInt)(chars.length));
724
+ }
725
+ return token;
726
+ }
727
+ /**
728
+ * Generate secure password for observability stack components
729
+ * Uses safe characters for bash variables: a-zA-Z0-9-_@.+:=
730
+ */
731
+ generateSecurePassword(length = 64) {
732
+ const lower = 'abcdefghijklmnopqrstuvwxyz';
733
+ const upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
734
+ const digits = '0123456789';
735
+ const symbols = '-_@.+:=';
736
+ const charset = lower + upper + digits + symbols;
737
+ const chars = [];
738
+ chars.push(lower.charAt((0, node_crypto_1.randomInt)(lower.length)), upper.charAt((0, node_crypto_1.randomInt)(upper.length)), digits.charAt((0, node_crypto_1.randomInt)(digits.length)), symbols.charAt((0, node_crypto_1.randomInt)(symbols.length)));
739
+ for (let i = 4; i < length; i++) {
740
+ chars.push(charset.charAt((0, node_crypto_1.randomInt)(charset.length)));
741
+ }
742
+ for (let i = chars.length - 1; i > 0; i--) {
743
+ const j = (0, node_crypto_1.randomInt)(i + 1);
744
+ [chars[i], chars[j]] = [chars[j], chars[i]];
745
+ }
746
+ return chars.join('');
747
+ }
748
+ };
749
+ exports.CliClustersService = CliClustersService;
750
+ exports.CliClustersService = CliClustersService = CliClustersService_1 = __decorate([
751
+ (0, common_1.Injectable)(),
752
+ __param(9, (0, common_1.Inject)('BullQueue_infrastructure')),
753
+ __metadata("design:paramtypes", [cli_cluster_repository_1.CliClusterRepository,
754
+ cli_operation_repository_1.CliOperationRepository,
755
+ cli_node_repository_1.CliNodeRepository,
756
+ cli_firewall_repository_1.CliFirewallRepository,
757
+ encryption_service_1.EncryptionService,
758
+ cli_ssh_service_1.CliSshService,
759
+ cli_ca_service_1.CliCaService,
760
+ provider_factory_1.ProviderFactory,
761
+ hetzner_firewall_service_1.HetznerFirewallService, Object])
762
+ ], CliClustersService);