@factiii/stack 0.1.2

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 (400) hide show
  1. package/README.md +420 -0
  2. package/bin/factiii +229 -0
  3. package/dist/cli/check-config.d.ts +9 -0
  4. package/dist/cli/check-config.d.ts.map +1 -0
  5. package/dist/cli/check-config.js +19 -0
  6. package/dist/cli/check-config.js.map +1 -0
  7. package/dist/cli/deploy-secrets.d.ts +16 -0
  8. package/dist/cli/deploy-secrets.d.ts.map +1 -0
  9. package/dist/cli/deploy-secrets.js +227 -0
  10. package/dist/cli/deploy-secrets.js.map +1 -0
  11. package/dist/cli/deploy.d.ts +30 -0
  12. package/dist/cli/deploy.d.ts.map +1 -0
  13. package/dist/cli/deploy.js +306 -0
  14. package/dist/cli/deploy.js.map +1 -0
  15. package/dist/cli/deployer.d.ts +13 -0
  16. package/dist/cli/deployer.d.ts.map +1 -0
  17. package/dist/cli/deployer.js +21 -0
  18. package/dist/cli/deployer.js.map +1 -0
  19. package/dist/cli/dev-sync.d.ts +30 -0
  20. package/dist/cli/dev-sync.d.ts.map +1 -0
  21. package/dist/cli/dev-sync.js +500 -0
  22. package/dist/cli/dev-sync.js.map +1 -0
  23. package/dist/cli/execute-plugin-command.d.ts +25 -0
  24. package/dist/cli/execute-plugin-command.d.ts.map +1 -0
  25. package/dist/cli/execute-plugin-command.js +237 -0
  26. package/dist/cli/execute-plugin-command.js.map +1 -0
  27. package/dist/cli/fix.d.ts +22 -0
  28. package/dist/cli/fix.d.ts.map +1 -0
  29. package/dist/cli/fix.js +267 -0
  30. package/dist/cli/fix.js.map +1 -0
  31. package/dist/cli/index.d.ts +17 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +31 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/init.d.ts +9 -0
  36. package/dist/cli/init.d.ts.map +1 -0
  37. package/dist/cli/init.js +190 -0
  38. package/dist/cli/init.js.map +1 -0
  39. package/dist/cli/plugin-commands.d.ts +22 -0
  40. package/dist/cli/plugin-commands.d.ts.map +1 -0
  41. package/dist/cli/plugin-commands.js +121 -0
  42. package/dist/cli/plugin-commands.js.map +1 -0
  43. package/dist/cli/scan.d.ts +66 -0
  44. package/dist/cli/scan.d.ts.map +1 -0
  45. package/dist/cli/scan.js +511 -0
  46. package/dist/cli/scan.js.map +1 -0
  47. package/dist/cli/secrets.d.ts +19 -0
  48. package/dist/cli/secrets.d.ts.map +1 -0
  49. package/dist/cli/secrets.js +318 -0
  50. package/dist/cli/secrets.js.map +1 -0
  51. package/dist/cli/undeploy.d.ts +9 -0
  52. package/dist/cli/undeploy.d.ts.map +1 -0
  53. package/dist/cli/undeploy.js +95 -0
  54. package/dist/cli/undeploy.js.map +1 -0
  55. package/dist/cli/upgrade.d.ts +9 -0
  56. package/dist/cli/upgrade.d.ts.map +1 -0
  57. package/dist/cli/upgrade.js +24 -0
  58. package/dist/cli/upgrade.js.map +1 -0
  59. package/dist/cli/validate.d.ts +9 -0
  60. package/dist/cli/validate.d.ts.map +1 -0
  61. package/dist/cli/validate.js +20 -0
  62. package/dist/cli/validate.js.map +1 -0
  63. package/dist/generators/generate-factiii-auto.d.ts +31 -0
  64. package/dist/generators/generate-factiii-auto.d.ts.map +1 -0
  65. package/dist/generators/generate-factiii-auto.js +251 -0
  66. package/dist/generators/generate-factiii-auto.js.map +1 -0
  67. package/dist/generators/generate-factiii-yml.d.ts +23 -0
  68. package/dist/generators/generate-factiii-yml.d.ts.map +1 -0
  69. package/dist/generators/generate-factiii-yml.js +228 -0
  70. package/dist/generators/generate-factiii-yml.js.map +1 -0
  71. package/dist/generators/index.d.ts +8 -0
  72. package/dist/generators/index.d.ts.map +1 -0
  73. package/dist/generators/index.js +14 -0
  74. package/dist/generators/index.js.map +1 -0
  75. package/dist/index.d.ts +39 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +90 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/plugins/addons/server-mode/index.d.ts +57 -0
  80. package/dist/plugins/addons/server-mode/index.d.ts.map +1 -0
  81. package/dist/plugins/addons/server-mode/index.js +136 -0
  82. package/dist/plugins/addons/server-mode/index.js.map +1 -0
  83. package/dist/plugins/addons/server-mode/scanfix/mac.d.ts +17 -0
  84. package/dist/plugins/addons/server-mode/scanfix/mac.d.ts.map +1 -0
  85. package/dist/plugins/addons/server-mode/scanfix/mac.js +461 -0
  86. package/dist/plugins/addons/server-mode/scanfix/mac.js.map +1 -0
  87. package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts +12 -0
  88. package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts.map +1 -0
  89. package/dist/plugins/addons/server-mode/scanfix/ubuntu.js +246 -0
  90. package/dist/plugins/addons/server-mode/scanfix/ubuntu.js.map +1 -0
  91. package/dist/plugins/addons/server-mode/scanfix/windows.d.ts +14 -0
  92. package/dist/plugins/addons/server-mode/scanfix/windows.d.ts.map +1 -0
  93. package/dist/plugins/addons/server-mode/scanfix/windows.js +113 -0
  94. package/dist/plugins/addons/server-mode/scanfix/windows.js.map +1 -0
  95. package/dist/plugins/approved.json +13 -0
  96. package/dist/plugins/frameworks/prisma-trpc/index.d.ts +65 -0
  97. package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -0
  98. package/dist/plugins/frameworks/prisma-trpc/index.js +668 -0
  99. package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -0
  100. package/dist/plugins/index.d.ts +101 -0
  101. package/dist/plugins/index.d.ts.map +1 -0
  102. package/dist/plugins/index.js +411 -0
  103. package/dist/plugins/index.js.map +1 -0
  104. package/dist/plugins/interfaces/addon.d.ts +43 -0
  105. package/dist/plugins/interfaces/addon.d.ts.map +1 -0
  106. package/dist/plugins/interfaces/addon.js +53 -0
  107. package/dist/plugins/interfaces/addon.js.map +1 -0
  108. package/dist/plugins/interfaces/framework.d.ts +43 -0
  109. package/dist/plugins/interfaces/framework.d.ts.map +1 -0
  110. package/dist/plugins/interfaces/framework.js +53 -0
  111. package/dist/plugins/interfaces/framework.js.map +1 -0
  112. package/dist/plugins/interfaces/index.d.ts +10 -0
  113. package/dist/plugins/interfaces/index.d.ts.map +1 -0
  114. package/dist/plugins/interfaces/index.js +17 -0
  115. package/dist/plugins/interfaces/index.js.map +1 -0
  116. package/dist/plugins/interfaces/pipeline.d.ts +78 -0
  117. package/dist/plugins/interfaces/pipeline.d.ts.map +1 -0
  118. package/dist/plugins/interfaces/pipeline.js +82 -0
  119. package/dist/plugins/interfaces/pipeline.js.map +1 -0
  120. package/dist/plugins/interfaces/server.d.ts +65 -0
  121. package/dist/plugins/interfaces/server.d.ts.map +1 -0
  122. package/dist/plugins/interfaces/server.js +72 -0
  123. package/dist/plugins/interfaces/server.js.map +1 -0
  124. package/dist/plugins/pipelines/aws/configs/ec2.d.ts +9 -0
  125. package/dist/plugins/pipelines/aws/configs/ec2.d.ts.map +1 -0
  126. package/dist/plugins/pipelines/aws/configs/ec2.js +34 -0
  127. package/dist/plugins/pipelines/aws/configs/ec2.js.map +1 -0
  128. package/dist/plugins/pipelines/aws/configs/free-tier.d.ts +13 -0
  129. package/dist/plugins/pipelines/aws/configs/free-tier.d.ts.map +1 -0
  130. package/dist/plugins/pipelines/aws/configs/free-tier.js +86 -0
  131. package/dist/plugins/pipelines/aws/configs/free-tier.js.map +1 -0
  132. package/dist/plugins/pipelines/aws/configs/index.d.ts +14 -0
  133. package/dist/plugins/pipelines/aws/configs/index.d.ts.map +1 -0
  134. package/dist/plugins/pipelines/aws/configs/index.js +21 -0
  135. package/dist/plugins/pipelines/aws/configs/index.js.map +1 -0
  136. package/dist/plugins/pipelines/aws/configs/types.d.ts +36 -0
  137. package/dist/plugins/pipelines/aws/configs/types.d.ts.map +1 -0
  138. package/dist/plugins/pipelines/aws/configs/types.js +9 -0
  139. package/dist/plugins/pipelines/aws/configs/types.js.map +1 -0
  140. package/dist/plugins/pipelines/aws/dev.d.ts +10 -0
  141. package/dist/plugins/pipelines/aws/dev.d.ts.map +1 -0
  142. package/dist/plugins/pipelines/aws/dev.js +70 -0
  143. package/dist/plugins/pipelines/aws/dev.js.map +1 -0
  144. package/dist/plugins/pipelines/aws/index.d.ts +118 -0
  145. package/dist/plugins/pipelines/aws/index.d.ts.map +1 -0
  146. package/dist/plugins/pipelines/aws/index.js +346 -0
  147. package/dist/plugins/pipelines/aws/index.js.map +1 -0
  148. package/dist/plugins/pipelines/aws/prod.d.ts +19 -0
  149. package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -0
  150. package/dist/plugins/pipelines/aws/prod.js +362 -0
  151. package/dist/plugins/pipelines/aws/prod.js.map +1 -0
  152. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +7 -0
  153. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -0
  154. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +31 -0
  155. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -0
  156. package/dist/plugins/pipelines/aws/scanfix/config.d.ts +7 -0
  157. package/dist/plugins/pipelines/aws/scanfix/config.d.ts.map +1 -0
  158. package/dist/plugins/pipelines/aws/scanfix/config.js +134 -0
  159. package/dist/plugins/pipelines/aws/scanfix/config.js.map +1 -0
  160. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +65 -0
  161. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +1 -0
  162. package/dist/plugins/pipelines/factiii/github-secrets-store.js +221 -0
  163. package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +1 -0
  164. package/dist/plugins/pipelines/factiii/index.d.ts +195 -0
  165. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -0
  166. package/dist/plugins/pipelines/factiii/index.js +862 -0
  167. package/dist/plugins/pipelines/factiii/index.js.map +1 -0
  168. package/dist/plugins/pipelines/factiii/prod.d.ts +17 -0
  169. package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -0
  170. package/dist/plugins/pipelines/factiii/prod.js +282 -0
  171. package/dist/plugins/pipelines/factiii/prod.js.map +1 -0
  172. package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +7 -0
  173. package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -0
  174. package/dist/plugins/pipelines/factiii/scanfix/config.js +80 -0
  175. package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -0
  176. package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts +7 -0
  177. package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts.map +1 -0
  178. package/dist/plugins/pipelines/factiii/scanfix/github-cli.js +43 -0
  179. package/dist/plugins/pipelines/factiii/scanfix/github-cli.js.map +1 -0
  180. package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts +7 -0
  181. package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -0
  182. package/dist/plugins/pipelines/factiii/scanfix/secrets.js +237 -0
  183. package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -0
  184. package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts +7 -0
  185. package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -0
  186. package/dist/plugins/pipelines/factiii/scanfix/workflows.js +169 -0
  187. package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -0
  188. package/dist/plugins/pipelines/factiii/staging.d.ts +25 -0
  189. package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -0
  190. package/dist/plugins/pipelines/factiii/staging.js +223 -0
  191. package/dist/plugins/pipelines/factiii/staging.js.map +1 -0
  192. package/dist/plugins/pipelines/factiii/utils/detection.d.ts +36 -0
  193. package/dist/plugins/pipelines/factiii/utils/detection.d.ts.map +1 -0
  194. package/dist/plugins/pipelines/factiii/utils/detection.js +140 -0
  195. package/dist/plugins/pipelines/factiii/utils/detection.js.map +1 -0
  196. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +16 -0
  197. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -0
  198. package/dist/plugins/pipelines/factiii/utils/workflows.js +129 -0
  199. package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -0
  200. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +112 -0
  201. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +112 -0
  202. package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +130 -0
  203. package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +198 -0
  204. package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +179 -0
  205. package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +176 -0
  206. package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +176 -0
  207. package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +95 -0
  208. package/dist/plugins/servers/amazon-linux/index.d.ts +93 -0
  209. package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -0
  210. package/dist/plugins/servers/amazon-linux/index.js +217 -0
  211. package/dist/plugins/servers/amazon-linux/index.js.map +1 -0
  212. package/dist/plugins/servers/mac/dev.d.ts +10 -0
  213. package/dist/plugins/servers/mac/dev.d.ts.map +1 -0
  214. package/dist/plugins/servers/mac/dev.js +71 -0
  215. package/dist/plugins/servers/mac/dev.js.map +1 -0
  216. package/dist/plugins/servers/mac/index.d.ts +101 -0
  217. package/dist/plugins/servers/mac/index.d.ts.map +1 -0
  218. package/dist/plugins/servers/mac/index.js +257 -0
  219. package/dist/plugins/servers/mac/index.js.map +1 -0
  220. package/dist/plugins/servers/mac/scanfix/config.d.ts +7 -0
  221. package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -0
  222. package/dist/plugins/servers/mac/scanfix/config.js +168 -0
  223. package/dist/plugins/servers/mac/scanfix/config.js.map +1 -0
  224. package/dist/plugins/servers/mac/scanfix/containers.d.ts +7 -0
  225. package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -0
  226. package/dist/plugins/servers/mac/scanfix/containers.js +167 -0
  227. package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -0
  228. package/dist/plugins/servers/mac/scanfix/system.d.ts +7 -0
  229. package/dist/plugins/servers/mac/scanfix/system.d.ts.map +1 -0
  230. package/dist/plugins/servers/mac/scanfix/system.js +144 -0
  231. package/dist/plugins/servers/mac/scanfix/system.js.map +1 -0
  232. package/dist/plugins/servers/mac/staging.d.ts +21 -0
  233. package/dist/plugins/servers/mac/staging.d.ts.map +1 -0
  234. package/dist/plugins/servers/mac/staging.js +708 -0
  235. package/dist/plugins/servers/mac/staging.js.map +1 -0
  236. package/dist/plugins/servers/ubuntu/index.d.ts +93 -0
  237. package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -0
  238. package/dist/plugins/servers/ubuntu/index.js +224 -0
  239. package/dist/plugins/servers/ubuntu/index.js.map +1 -0
  240. package/dist/plugins/servers/windows/index.d.ts +90 -0
  241. package/dist/plugins/servers/windows/index.d.ts.map +1 -0
  242. package/dist/plugins/servers/windows/index.js +205 -0
  243. package/dist/plugins/servers/windows/index.js.map +1 -0
  244. package/dist/scanfix/commands/index.d.ts +27 -0
  245. package/dist/scanfix/commands/index.d.ts.map +1 -0
  246. package/dist/scanfix/commands/index.js +97 -0
  247. package/dist/scanfix/commands/index.js.map +1 -0
  248. package/dist/scanfix/commands/mac.d.ts +11 -0
  249. package/dist/scanfix/commands/mac.d.ts.map +1 -0
  250. package/dist/scanfix/commands/mac.js +31 -0
  251. package/dist/scanfix/commands/mac.js.map +1 -0
  252. package/dist/scanfix/commands/ubuntu.d.ts +11 -0
  253. package/dist/scanfix/commands/ubuntu.d.ts.map +1 -0
  254. package/dist/scanfix/commands/ubuntu.js +30 -0
  255. package/dist/scanfix/commands/ubuntu.js.map +1 -0
  256. package/dist/scanfix/fixes/certbot.d.ts +25 -0
  257. package/dist/scanfix/fixes/certbot.d.ts.map +1 -0
  258. package/dist/scanfix/fixes/certbot.js +136 -0
  259. package/dist/scanfix/fixes/certbot.js.map +1 -0
  260. package/dist/scanfix/fixes/docker.d.ts +29 -0
  261. package/dist/scanfix/fixes/docker.d.ts.map +1 -0
  262. package/dist/scanfix/fixes/docker.js +149 -0
  263. package/dist/scanfix/fixes/docker.js.map +1 -0
  264. package/dist/scanfix/fixes/git.d.ts +20 -0
  265. package/dist/scanfix/fixes/git.d.ts.map +1 -0
  266. package/dist/scanfix/fixes/git.js +71 -0
  267. package/dist/scanfix/fixes/git.js.map +1 -0
  268. package/dist/scanfix/fixes/index.d.ts +11 -0
  269. package/dist/scanfix/fixes/index.d.ts.map +1 -0
  270. package/dist/scanfix/fixes/index.js +27 -0
  271. package/dist/scanfix/fixes/index.js.map +1 -0
  272. package/dist/scanfix/fixes/node.d.ts +20 -0
  273. package/dist/scanfix/fixes/node.d.ts.map +1 -0
  274. package/dist/scanfix/fixes/node.js +71 -0
  275. package/dist/scanfix/fixes/node.js.map +1 -0
  276. package/dist/scanfix/fixes/pnpm.d.ts +20 -0
  277. package/dist/scanfix/fixes/pnpm.d.ts.map +1 -0
  278. package/dist/scanfix/fixes/pnpm.js +122 -0
  279. package/dist/scanfix/fixes/pnpm.js.map +1 -0
  280. package/dist/scanfix/index.d.ts +23 -0
  281. package/dist/scanfix/index.d.ts.map +1 -0
  282. package/dist/scanfix/index.js +44 -0
  283. package/dist/scanfix/index.js.map +1 -0
  284. package/dist/scanfix/platform.d.ts +20 -0
  285. package/dist/scanfix/platform.d.ts.map +1 -0
  286. package/dist/scanfix/platform.js +48 -0
  287. package/dist/scanfix/platform.js.map +1 -0
  288. package/dist/scanfix/ssl-cert-helper.d.ts +27 -0
  289. package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -0
  290. package/dist/scanfix/ssl-cert-helper.js +117 -0
  291. package/dist/scanfix/ssl-cert-helper.js.map +1 -0
  292. package/dist/scanfix/types.d.ts +27 -0
  293. package/dist/scanfix/types.d.ts.map +1 -0
  294. package/dist/scanfix/types.js +8 -0
  295. package/dist/scanfix/types.js.map +1 -0
  296. package/dist/scripts/check-existing-secrets.d.ts +6 -0
  297. package/dist/scripts/check-existing-secrets.d.ts.map +1 -0
  298. package/dist/scripts/check-existing-secrets.js +86 -0
  299. package/dist/scripts/check-existing-secrets.js.map +1 -0
  300. package/dist/scripts/generate-all.d.ts +40 -0
  301. package/dist/scripts/generate-all.d.ts.map +1 -0
  302. package/dist/scripts/generate-all.js +373 -0
  303. package/dist/scripts/generate-all.js.map +1 -0
  304. package/dist/scripts/get-repo-name.d.ts +6 -0
  305. package/dist/scripts/get-repo-name.d.ts.map +1 -0
  306. package/dist/scripts/get-repo-name.js +54 -0
  307. package/dist/scripts/get-repo-name.js.map +1 -0
  308. package/dist/scripts/index.d.ts +7 -0
  309. package/dist/scripts/index.d.ts.map +1 -0
  310. package/dist/scripts/index.js +14 -0
  311. package/dist/scripts/index.js.map +1 -0
  312. package/dist/scripts/validate-env-files.d.ts +6 -0
  313. package/dist/scripts/validate-env-files.d.ts.map +1 -0
  314. package/dist/scripts/validate-env-files.js +126 -0
  315. package/dist/scripts/validate-env-files.js.map +1 -0
  316. package/dist/scripts/validate-example-values.d.ts +8 -0
  317. package/dist/scripts/validate-example-values.d.ts.map +1 -0
  318. package/dist/scripts/validate-example-values.js +88 -0
  319. package/dist/scripts/validate-example-values.js.map +1 -0
  320. package/dist/scripts/validate-factiii-yml.d.ts +6 -0
  321. package/dist/scripts/validate-factiii-yml.d.ts.map +1 -0
  322. package/dist/scripts/validate-factiii-yml.js +71 -0
  323. package/dist/scripts/validate-factiii-yml.js.map +1 -0
  324. package/dist/types/cli.d.ts +138 -0
  325. package/dist/types/cli.d.ts.map +1 -0
  326. package/dist/types/cli.js +8 -0
  327. package/dist/types/cli.js.map +1 -0
  328. package/dist/types/config.d.ts +113 -0
  329. package/dist/types/config.d.ts.map +1 -0
  330. package/dist/types/config.js +8 -0
  331. package/dist/types/config.js.map +1 -0
  332. package/dist/types/index.d.ts +9 -0
  333. package/dist/types/index.d.ts.map +1 -0
  334. package/dist/types/index.js +25 -0
  335. package/dist/types/index.js.map +1 -0
  336. package/dist/types/plugin.d.ts +352 -0
  337. package/dist/types/plugin.d.ts.map +1 -0
  338. package/dist/types/plugin.js +8 -0
  339. package/dist/types/plugin.js.map +1 -0
  340. package/dist/utils/ansible-vault-secrets.d.ts +95 -0
  341. package/dist/utils/ansible-vault-secrets.d.ts.map +1 -0
  342. package/dist/utils/ansible-vault-secrets.js +406 -0
  343. package/dist/utils/ansible-vault-secrets.js.map +1 -0
  344. package/dist/utils/config-helpers.d.ts +72 -0
  345. package/dist/utils/config-helpers.d.ts.map +1 -0
  346. package/dist/utils/config-helpers.js +171 -0
  347. package/dist/utils/config-helpers.js.map +1 -0
  348. package/dist/utils/config-schema.d.ts +17 -0
  349. package/dist/utils/config-schema.d.ts.map +1 -0
  350. package/dist/utils/config-schema.js +100 -0
  351. package/dist/utils/config-schema.js.map +1 -0
  352. package/dist/utils/config-validator.d.ts +29 -0
  353. package/dist/utils/config-validator.d.ts.map +1 -0
  354. package/dist/utils/config-validator.js +146 -0
  355. package/dist/utils/config-validator.js.map +1 -0
  356. package/dist/utils/deployment-report.d.ts +100 -0
  357. package/dist/utils/deployment-report.d.ts.map +1 -0
  358. package/dist/utils/deployment-report.js +225 -0
  359. package/dist/utils/deployment-report.js.map +1 -0
  360. package/dist/utils/dns-validator.d.ts +19 -0
  361. package/dist/utils/dns-validator.d.ts.map +1 -0
  362. package/dist/utils/dns-validator.js +94 -0
  363. package/dist/utils/dns-validator.js.map +1 -0
  364. package/dist/utils/env-validator.d.ts +108 -0
  365. package/dist/utils/env-validator.d.ts.map +1 -0
  366. package/dist/utils/env-validator.js +342 -0
  367. package/dist/utils/env-validator.js.map +1 -0
  368. package/dist/utils/github-workflow-monitor.d.ts +49 -0
  369. package/dist/utils/github-workflow-monitor.d.ts.map +1 -0
  370. package/dist/utils/github-workflow-monitor.js +145 -0
  371. package/dist/utils/github-workflow-monitor.js.map +1 -0
  372. package/dist/utils/index.d.ts +18 -0
  373. package/dist/utils/index.d.ts.map +1 -0
  374. package/dist/utils/index.js +48 -0
  375. package/dist/utils/index.js.map +1 -0
  376. package/dist/utils/secret-prompts.d.ts +67 -0
  377. package/dist/utils/secret-prompts.d.ts.map +1 -0
  378. package/dist/utils/secret-prompts.js +369 -0
  379. package/dist/utils/secret-prompts.js.map +1 -0
  380. package/dist/utils/server-check.d.ts +43 -0
  381. package/dist/utils/server-check.d.ts.map +1 -0
  382. package/dist/utils/server-check.js +397 -0
  383. package/dist/utils/server-check.js.map +1 -0
  384. package/dist/utils/ssh-deploy.d.ts +70 -0
  385. package/dist/utils/ssh-deploy.d.ts.map +1 -0
  386. package/dist/utils/ssh-deploy.js +268 -0
  387. package/dist/utils/ssh-deploy.js.map +1 -0
  388. package/dist/utils/ssh-helper.d.ts +40 -0
  389. package/dist/utils/ssh-helper.d.ts.map +1 -0
  390. package/dist/utils/ssh-helper.js +221 -0
  391. package/dist/utils/ssh-helper.js.map +1 -0
  392. package/dist/utils/template-generator.d.ts +42 -0
  393. package/dist/utils/template-generator.d.ts.map +1 -0
  394. package/dist/utils/template-generator.js +223 -0
  395. package/dist/utils/template-generator.js.map +1 -0
  396. package/dist/utils/version-check.d.ts +69 -0
  397. package/dist/utils/version-check.d.ts.map +1 -0
  398. package/dist/utils/version-check.js +211 -0
  399. package/dist/utils/version-check.js.map +1 -0
  400. package/package.json +82 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Config Schema Validator
3
+ *
4
+ * Validates factiii.yml against schema definitions for each version.
5
+ * Detects missing required fields, deprecated fields, and new optional fields.
6
+ */
7
+ import type { FactiiiConfig, ConfigVersionSchema, SchemaValidationResult } from '../types/index.js';
8
+ export declare const CURRENT_VERSION = "0.1.0";
9
+ export declare const SCHEMAS: Record<string, ConfigVersionSchema>;
10
+ /**
11
+ * Validate config against schema
12
+ * @param config - Parsed factiii.yml config
13
+ * @param targetVersion - Target schema version (defaults to current)
14
+ * @returns Validation result
15
+ */
16
+ export declare function validateConfigSchema(config: FactiiiConfig, targetVersion?: string): SchemaValidationResult;
17
+ //# sourceMappingURL=config-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/utils/config-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,eAAe,UAAU,CAAC;AAGvC,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA+BvD,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,aAAa,GAAE,MAAwB,GACtC,sBAAsB,CA6CxB"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * Config Schema Validator
4
+ *
5
+ * Validates factiii.yml against schema definitions for each version.
6
+ * Detects missing required fields, deprecated fields, and new optional fields.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SCHEMAS = exports.CURRENT_VERSION = void 0;
10
+ exports.validateConfigSchema = validateConfigSchema;
11
+ const config_helpers_js_1 = require("./config-helpers.js");
12
+ exports.CURRENT_VERSION = '0.1.0';
13
+ // Schema definition for config version 0.1.0
14
+ exports.SCHEMAS = {
15
+ '0.1.0': {
16
+ // Environments are top-level keys, not nested
17
+ required: ['name', 'config_version'],
18
+ optional: [
19
+ 'github_repo',
20
+ 'ssl_email',
21
+ 'pipeline', // Single pipeline name
22
+ 'prisma_schema',
23
+ 'prisma_version',
24
+ 'container_exclusions',
25
+ 'trusted_plugins',
26
+ ],
27
+ awsFields: {
28
+ // AWS fields are per-environment, not global
29
+ required: [],
30
+ optional: [],
31
+ },
32
+ environmentFields: {
33
+ // Environment fields
34
+ required: ['server', 'domain'],
35
+ optional: [
36
+ 'env_file',
37
+ 'ssh_user',
38
+ 'config', // AWS config type
39
+ 'access_key_id', // AWS credentials
40
+ 'region', // AWS region
41
+ 'plugins', // Plugin configs
42
+ ],
43
+ },
44
+ },
45
+ };
46
+ // Field descriptions for user-friendly messages
47
+ const FIELD_DESCRIPTIONS = {
48
+ config_version: 'Config schema version',
49
+ pipeline: 'Pipeline plugin to use for deployments (e.g., factiii for GitHub Actions)',
50
+ 'environment.*.plugins': 'Plugin-specific configuration for this environment',
51
+ 'environment.*.ssh_user': 'SSH user for connecting to this environment',
52
+ };
53
+ /**
54
+ * Validate config against schema
55
+ * @param config - Parsed factiii.yml config
56
+ * @param targetVersion - Target schema version (defaults to current)
57
+ * @returns Validation result
58
+ */
59
+ function validateConfigSchema(config, targetVersion = exports.CURRENT_VERSION) {
60
+ const result = {
61
+ valid: true,
62
+ missing: [],
63
+ deprecated: [],
64
+ newOptional: [],
65
+ needsMigration: false,
66
+ configVersion: config.config_version ?? exports.CURRENT_VERSION,
67
+ targetVersion,
68
+ };
69
+ // Get appropriate schema
70
+ const schema = exports.SCHEMAS[targetVersion];
71
+ if (!schema) {
72
+ result.valid = false,
73
+ result.error = `Unknown schema version: ${targetVersion}`;
74
+ return result;
75
+ }
76
+ // Validate required top-level fields
77
+ schema.required.forEach((field) => {
78
+ if (!(field in config)) {
79
+ result.valid = false;
80
+ result.missing.push(field);
81
+ }
82
+ });
83
+ // Validate environment fields
84
+ // Environments are top-level keys
85
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
86
+ // Validate each environment
87
+ Object.keys(environments).forEach((envName) => {
88
+ const env = environments[envName];
89
+ if (env && typeof env === 'object') {
90
+ schema.environmentFields.required.forEach((field) => {
91
+ if (!(field in env)) {
92
+ result.valid = false;
93
+ result.missing.push(`${envName}.${field}`);
94
+ }
95
+ });
96
+ }
97
+ });
98
+ return result;
99
+ }
100
+ //# sourceMappingURL=config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/utils/config-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Config Validator
3
+ *
4
+ * Validates factiii.yml configuration and workflow sync.
5
+ */
6
+ import type { EnvironmentConfig } from '../types/index.js';
7
+ interface WorkflowConfig {
8
+ environments: Record<string, Partial<EnvironmentConfig>>;
9
+ repoName: string | null;
10
+ }
11
+ interface ValidationResult {
12
+ valid: boolean;
13
+ error?: string;
14
+ drift?: boolean;
15
+ message?: string;
16
+ needsGeneration?: boolean;
17
+ needsRegeneration?: boolean;
18
+ mismatches?: string[];
19
+ }
20
+ /**
21
+ * Extract config values from workflow file
22
+ */
23
+ export declare function extractWorkflowConfig(workflowPath: string): WorkflowConfig | null;
24
+ /**
25
+ * Compare factiii.yml with generated workflows
26
+ */
27
+ export declare function validateConfigSync(rootDir: string): ValidationResult;
28
+ export {};
29
+ //# sourceMappingURL=config-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-validator.d.ts","sourceRoot":"","sources":["../../src/utils/config-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,UAAU,cAAc;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAgBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAyCjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CA8DpE"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ /**
3
+ * Config Validator
4
+ *
5
+ * Validates factiii.yml configuration and workflow sync.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.extractWorkflowConfig = extractWorkflowConfig;
45
+ exports.validateConfigSync = validateConfigSync;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const js_yaml_1 = __importDefault(require("js-yaml"));
49
+ /**
50
+ * Extract config values from workflow file
51
+ */
52
+ function extractWorkflowConfig(workflowPath) {
53
+ if (!fs.existsSync(workflowPath)) {
54
+ return null;
55
+ }
56
+ try {
57
+ const content = fs.readFileSync(workflowPath, 'utf8');
58
+ const workflow = js_yaml_1.default.load(content);
59
+ // Extract relevant config from workflow
60
+ // Look for yq commands that read from factiii.yml
61
+ const config = {
62
+ environments: {},
63
+ repoName: null,
64
+ };
65
+ // Parse the workflow to find config reads
66
+ // This is a simplified version - you may need to adjust based on actual workflow structure
67
+ const jobSteps = workflow?.jobs?.deploy?.steps ?? [];
68
+ for (const step of jobSteps) {
69
+ if (step.run && step.run.includes('yq eval')) {
70
+ // Extract what config values the workflow expects
71
+ // e.g., "yq eval '.staging.host'"
72
+ const hostMatch = step.run.match(/\.(\w+)\.host/);
73
+ if (hostMatch && hostMatch[1]) {
74
+ const envName = hostMatch[1];
75
+ // Skip reserved config keys
76
+ if (!['name', 'config_version', 'github_repo', 'ssl_email', 'pipeline', 'prisma_schema', 'prisma_version', 'container_exclusions', 'trusted_plugins'].includes(envName)) {
77
+ if (!config.environments[envName]) {
78
+ config.environments[envName] = {};
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }
84
+ return config;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ /**
91
+ * Compare factiii.yml with generated workflows
92
+ */
93
+ function validateConfigSync(rootDir) {
94
+ const configPath = path.join(rootDir, 'factiii.yml');
95
+ const workflowPath = path.join(rootDir, '.github/workflows/factiii-deploy.yml');
96
+ if (!fs.existsSync(configPath)) {
97
+ return { valid: false, error: 'factiii.yml not found' };
98
+ }
99
+ if (!fs.existsSync(workflowPath)) {
100
+ return { valid: false, error: 'Workflows not generated', needsGeneration: true };
101
+ }
102
+ try {
103
+ const config = js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8'));
104
+ // Check if workflow file is older than config file
105
+ const configStat = fs.statSync(configPath);
106
+ const workflowStat = fs.statSync(workflowPath);
107
+ const configNewer = configStat.mtimeMs > workflowStat.mtimeMs;
108
+ if (configNewer) {
109
+ return {
110
+ valid: false,
111
+ drift: true,
112
+ message: 'factiii.yml modified after workflows were generated',
113
+ needsRegeneration: true,
114
+ };
115
+ }
116
+ // Additional validation: check if workflow references match config
117
+ const workflowContent = fs.readFileSync(workflowPath, 'utf8');
118
+ const mismatches = [];
119
+ // Extract environments from config (top-level keys)
120
+ const { extractEnvironments } = require('./config-helpers.js');
121
+ const environments = extractEnvironments(config);
122
+ // Check if all environments in config have corresponding workflow logic
123
+ for (const envName of Object.keys(environments)) {
124
+ // Check if workflow mentions this environment
125
+ if (!workflowContent.includes(`environment == '${envName}'`)) {
126
+ mismatches.push(`Environment '${envName}' not found in workflow`);
127
+ }
128
+ }
129
+ if (mismatches.length > 0) {
130
+ return {
131
+ valid: false,
132
+ drift: true,
133
+ mismatches,
134
+ needsRegeneration: true,
135
+ };
136
+ }
137
+ return { valid: true };
138
+ }
139
+ catch (error) {
140
+ return {
141
+ valid: false,
142
+ error: error instanceof Error ? error.message : String(error),
143
+ };
144
+ }
145
+ }
146
+ //# sourceMappingURL=config-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../src/utils/config-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Deployment Report Generator
3
+ *
4
+ * Generates formatted deployment readiness reports.
5
+ */
6
+ interface RepoConfig {
7
+ environments?: Record<string, {
8
+ domain?: string;
9
+ port?: number | string;
10
+ }>;
11
+ }
12
+ interface CurrentRepoInfo {
13
+ deployed: boolean;
14
+ config?: RepoConfig;
15
+ comparison?: {
16
+ hasChanges: boolean;
17
+ changes: Array<{
18
+ field: string;
19
+ old: string;
20
+ new: string;
21
+ }>;
22
+ };
23
+ }
24
+ interface DeployedRepo {
25
+ name: string;
26
+ domain: string;
27
+ port?: number | string;
28
+ }
29
+ interface ServerCheck {
30
+ environment: string;
31
+ user?: string;
32
+ host?: string;
33
+ error?: string;
34
+ connected?: boolean;
35
+ infrastructureExists?: boolean;
36
+ allDeployedRepos?: DeployedRepo[];
37
+ currentRepo?: CurrentRepoInfo;
38
+ }
39
+ interface LocalChecks {
40
+ coreYml?: boolean;
41
+ dockerfile?: boolean;
42
+ git?: boolean;
43
+ branch?: string;
44
+ workflows?: boolean;
45
+ scripts?: boolean;
46
+ }
47
+ interface SecretsCheck {
48
+ error?: string;
49
+ present?: string[];
50
+ missing?: string[];
51
+ }
52
+ interface Summary {
53
+ ready: boolean;
54
+ warnings: number;
55
+ errors: number;
56
+ nextSteps: string[];
57
+ }
58
+ interface ReportData {
59
+ repoName: string;
60
+ localChecks?: LocalChecks;
61
+ secretsCheck?: SecretsCheck;
62
+ serverChecks?: ServerCheck[];
63
+ summary?: Summary;
64
+ }
65
+ interface AuditResults {
66
+ coreYml: {
67
+ exists: boolean;
68
+ parseError?: boolean;
69
+ needsCustomization?: boolean;
70
+ };
71
+ workflows: {
72
+ allExist: boolean;
73
+ };
74
+ branches: {
75
+ hasGit: boolean;
76
+ currentBranch?: string;
77
+ };
78
+ repoScripts: {
79
+ hasPackageJson: boolean;
80
+ requiredScripts: Record<string, boolean>;
81
+ };
82
+ }
83
+ /**
84
+ * Format deployment readiness report
85
+ */
86
+ export declare function formatDeploymentReport(data: ReportData): string;
87
+ /**
88
+ * Format report for GitHub workflow summary (supports markdown)
89
+ */
90
+ export declare function formatWorkflowSummary(data: ReportData): string;
91
+ /**
92
+ * Generate summary statistics from check results
93
+ */
94
+ export declare function generateSummary(_localChecks: LocalChecks | undefined, secretsCheck: SecretsCheck | undefined, serverChecks: ServerCheck[] | undefined): Summary;
95
+ /**
96
+ * Format local check results
97
+ */
98
+ export declare function formatLocalChecks(auditResults: AuditResults): LocalChecks;
99
+ export {};
100
+ //# sourceMappingURL=deployment-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-report.d.ts","sourceRoot":"","sources":["../../src/utils/deployment-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /**
3
+ * Deployment Report Generator
4
+ *
5
+ * Generates formatted deployment readiness reports.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.formatDeploymentReport = formatDeploymentReport;
9
+ exports.formatWorkflowSummary = formatWorkflowSummary;
10
+ exports.generateSummary = generateSummary;
11
+ exports.formatLocalChecks = formatLocalChecks;
12
+ /**
13
+ * Format deployment readiness report
14
+ */
15
+ function formatDeploymentReport(data) {
16
+ const { repoName, localChecks, secretsCheck, serverChecks, summary } = data;
17
+ const lines = [];
18
+ const separator = '━'.repeat(60);
19
+ // Header
20
+ lines.push(`DEPLOYMENT READINESS REPORT - ${repoName}`);
21
+ lines.push(separator);
22
+ lines.push('');
23
+ // Local Configuration
24
+ if (localChecks) {
25
+ lines.push('LOCAL CONFIGURATION');
26
+ if (localChecks.coreYml) {
27
+ lines.push(` [OK] factiii.yml valid (${repoName})`);
28
+ }
29
+ if (localChecks.dockerfile) {
30
+ lines.push(' [OK] Dockerfile found');
31
+ }
32
+ if (localChecks.git) {
33
+ lines.push(` [OK] Git configured${localChecks.branch ? ` (${localChecks.branch} branch)` : ''}`);
34
+ }
35
+ if (localChecks.workflows) {
36
+ lines.push(' [OK] Workflows exist (factiii-deploy.yml, factiii-undeploy.yml)');
37
+ }
38
+ if (localChecks.scripts) {
39
+ lines.push(' [OK] Required scripts present');
40
+ }
41
+ lines.push('');
42
+ }
43
+ // GitHub Secrets
44
+ if (secretsCheck) {
45
+ lines.push('GITHUB SECRETS');
46
+ if (secretsCheck.error) {
47
+ lines.push(` [ERROR] ${secretsCheck.error}`);
48
+ lines.push(' Cannot verify secrets via API');
49
+ }
50
+ else {
51
+ // Show present secrets
52
+ if (secretsCheck.present && secretsCheck.present.length > 0) {
53
+ for (const secret of secretsCheck.present) {
54
+ lines.push(` [OK] ${secret} exists`);
55
+ }
56
+ }
57
+ // Show missing secrets
58
+ if (secretsCheck.missing && secretsCheck.missing.length > 0) {
59
+ for (const secret of secretsCheck.missing) {
60
+ lines.push(` [!] ${secret} not found`);
61
+ }
62
+ }
63
+ }
64
+ lines.push('');
65
+ }
66
+ // Server Checks
67
+ if (serverChecks && serverChecks.length > 0) {
68
+ for (const server of serverChecks) {
69
+ const envLabel = server.environment === 'staging' ? 'STAGING' : 'PRODUCTION';
70
+ const envName = server.environment.toUpperCase();
71
+ lines.push(`${envLabel} SERVER (${server.user}@${server.host})`);
72
+ if (server.error) {
73
+ lines.push(` [ERROR] ${server.error}`);
74
+ }
75
+ else if (!server.connected) {
76
+ lines.push(' [ERROR] SSH connection failed');
77
+ }
78
+ else {
79
+ lines.push(' [OK] SSH connection successful');
80
+ if (server.infrastructureExists) {
81
+ lines.push(' [OK] Infrastructure directory exists');
82
+ }
83
+ else {
84
+ lines.push(' [!] Infrastructure directory not found');
85
+ }
86
+ // Show currently deployed repos
87
+ if (server.allDeployedRepos && server.allDeployedRepos.length > 0) {
88
+ lines.push('');
89
+ lines.push(` Currently Deployed Repos (${server.allDeployedRepos.length}):`);
90
+ for (const repo of server.allDeployedRepos) {
91
+ const portInfo = repo.port ? `:${repo.port}` : '';
92
+ lines.push(` - ${repo.name} (${repo.domain}${portInfo}) - running`);
93
+ }
94
+ }
95
+ // Show current repo status
96
+ lines.push('');
97
+ lines.push(` THIS REPO (${repoName}):`);
98
+ if (server.currentRepo && server.currentRepo.deployed) {
99
+ const env = server.currentRepo.config?.environments?.[server.environment];
100
+ if (env) {
101
+ const currentPort = env.port ?? 'auto';
102
+ lines.push(` Current: ${env.domain}:${currentPort}`);
103
+ // Show changes if any
104
+ if (server.currentRepo.comparison &&
105
+ server.currentRepo.comparison.hasChanges) {
106
+ lines.push(` Changes detected:`);
107
+ for (const change of server.currentRepo.comparison.changes) {
108
+ lines.push(` -> ${change.field}: ${change.old} -> ${change.new}`);
109
+ }
110
+ }
111
+ else {
112
+ lines.push(` Status: No changes detected`);
113
+ }
114
+ }
115
+ }
116
+ else {
117
+ lines.push(' Status: NOT DEPLOYED');
118
+ lines.push(' After: NEW deployment');
119
+ }
120
+ lines.push('');
121
+ lines.push(' Note: Deploy will regenerate configs and restart ALL services');
122
+ }
123
+ lines.push('');
124
+ }
125
+ }
126
+ // Summary
127
+ lines.push(separator);
128
+ if (summary) {
129
+ const { ready, warnings, errors } = summary;
130
+ if (ready && warnings === 0 && errors === 0) {
131
+ lines.push('[OK] READY TO DEPLOY');
132
+ }
133
+ else if (errors > 0) {
134
+ lines.push(`[ERROR] NOT READY (${errors} error${errors > 1 ? 's' : ''}, ${warnings} warning${warnings > 1 ? 's' : ''})`);
135
+ }
136
+ else if (warnings > 0) {
137
+ lines.push(`[!] READY TO DEPLOY (${warnings} warning${warnings > 1 ? 's' : ''})`);
138
+ }
139
+ }
140
+ lines.push('');
141
+ // Next Steps
142
+ if (summary && summary.nextSteps && summary.nextSteps.length > 0) {
143
+ lines.push('Next Steps:');
144
+ for (let i = 0; i < summary.nextSteps.length; i++) {
145
+ lines.push(` ${i + 1}. ${summary.nextSteps[i]}`);
146
+ }
147
+ lines.push('');
148
+ }
149
+ return lines.join('\n');
150
+ }
151
+ /**
152
+ * Format report for GitHub workflow summary (supports markdown)
153
+ */
154
+ function formatWorkflowSummary(data) {
155
+ const report = formatDeploymentReport(data);
156
+ // Workflow summaries support markdown, so we can enhance it
157
+ return `\`\`\`
158
+ ${report}
159
+ \`\`\``;
160
+ }
161
+ /**
162
+ * Generate summary statistics from check results
163
+ */
164
+ function generateSummary(_localChecks, secretsCheck, serverChecks) {
165
+ const summary = {
166
+ ready: true,
167
+ warnings: 0,
168
+ errors: 0,
169
+ nextSteps: [],
170
+ };
171
+ // Check for missing secrets
172
+ if (secretsCheck) {
173
+ if (secretsCheck.error) {
174
+ summary.errors++;
175
+ summary.ready = false;
176
+ summary.nextSteps.push('Fix GitHub token permissions to verify secrets');
177
+ }
178
+ else if (secretsCheck.missing && secretsCheck.missing.length > 0) {
179
+ summary.warnings += secretsCheck.missing.length;
180
+ for (const secret of secretsCheck.missing) {
181
+ summary.nextSteps.push(`Add missing GitHub secret: ${secret}`);
182
+ }
183
+ }
184
+ }
185
+ // Check server connection issues
186
+ if (serverChecks) {
187
+ for (const server of serverChecks) {
188
+ if (server.error || !server.connected) {
189
+ summary.errors++;
190
+ summary.ready = false;
191
+ summary.nextSteps.push(`Fix SSH connection to ${server.environment} server`);
192
+ }
193
+ }
194
+ }
195
+ // If ready, add deployment instructions
196
+ if (summary.ready && summary.warnings === 0) {
197
+ summary.nextSteps.push('Run: npx factiii deploy --environment staging');
198
+ summary.nextSteps.push('Or push to main branch to trigger automatic deployment');
199
+ }
200
+ else if (summary.ready && summary.warnings > 0) {
201
+ summary.nextSteps.push('Review warnings above');
202
+ summary.nextSteps.push('Run: npx factiii deploy (deployment will proceed with warnings)');
203
+ }
204
+ else {
205
+ summary.nextSteps.push('Fix errors above');
206
+ summary.nextSteps.push('Run: npx factiii (to verify fixes)');
207
+ }
208
+ return summary;
209
+ }
210
+ /**
211
+ * Format local check results
212
+ */
213
+ function formatLocalChecks(auditResults) {
214
+ const { coreYml, workflows, branches, repoScripts } = auditResults;
215
+ return {
216
+ coreYml: coreYml.exists && !coreYml.parseError && !coreYml.needsCustomization,
217
+ dockerfile: true, // Checked separately in scan
218
+ git: branches.hasGit,
219
+ branch: branches.currentBranch,
220
+ workflows: workflows.allExist,
221
+ scripts: repoScripts.hasPackageJson &&
222
+ Object.values(repoScripts.requiredScripts).every((v) => v),
223
+ };
224
+ }
225
+ //# sourceMappingURL=deployment-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-report.js","sourceRoot":"","sources":["../../src/utils/deployment-report.ts"],"names":[],"mappings":"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"}