@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,257 @@
1
+ "use strict";
2
+ /**
3
+ * Mac Server Plugin
4
+ *
5
+ * Handles macOS-specific package management and commands.
6
+ * Used for deploying to Mac servers or local Mac development.
7
+ *
8
+ * ============================================================
9
+ * PLUGIN STRUCTURE STANDARD
10
+ * ============================================================
11
+ *
12
+ * This plugin follows a standardized structure for clarity and maintainability:
13
+ *
14
+ * **scanfix/** - Scan/fix operations organized by concern
15
+ * - Each file exports an array of Fix[] objects
16
+ * - Files group related fixes together (docker, node, git, containers, config)
17
+ * - All fixes are combined in the main plugin class
18
+ *
19
+ * **Environment-specific files** - Operations for each environment
20
+ * - dev.ts - Dev environment operations (deployDev)
21
+ * - staging.ts - Staging operations (deployStaging, ensureServerReady)
22
+ * - Only create files if they have content (no blank files)
23
+ *
24
+ * **index.ts** - Main plugin class
25
+ * - Static metadata (id, name, category, version, os, packageManager, serviceManager)
26
+ * - shouldLoad() - Determines if plugin should load
27
+ * - Imports and combines all scanfix arrays
28
+ * - Imports and uses environment-specific methods
29
+ * - Maintains public API compatibility
30
+ *
31
+ * **When each environment file is used:**
32
+ * - dev.ts: When deploying to local dev environment
33
+ * - staging.ts: When deploying to staging server or preparing staging server
34
+ *
35
+ * **How scanfix files are organized:**
36
+ * - docker.ts: Docker installation, running status, autostart (dev + staging)
37
+ * - node.ts: Node.js and pnpm installation (staging)
38
+ * - git.ts: Git installation (staging)
39
+ * - containers.ts: Container management and cleanup (staging)
40
+ * - config.ts: Configuration checks and file validation (dev + staging)
41
+ * ============================================================
42
+ */
43
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
44
+ if (k2 === undefined) k2 = k;
45
+ var desc = Object.getOwnPropertyDescriptor(m, k);
46
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
47
+ desc = { enumerable: true, get: function() { return m[k]; } };
48
+ }
49
+ Object.defineProperty(o, k2, desc);
50
+ }) : (function(o, m, k, k2) {
51
+ if (k2 === undefined) k2 = k;
52
+ o[k2] = m[k];
53
+ }));
54
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
55
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
56
+ }) : function(o, v) {
57
+ o["default"] = v;
58
+ });
59
+ var __importStar = (this && this.__importStar) || (function () {
60
+ var ownKeys = function(o) {
61
+ ownKeys = Object.getOwnPropertyNames || function (o) {
62
+ var ar = [];
63
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
64
+ return ar;
65
+ };
66
+ return ownKeys(o);
67
+ };
68
+ return function (mod) {
69
+ if (mod && mod.__esModule) return mod;
70
+ var result = {};
71
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
72
+ __setModuleDefault(result, mod);
73
+ return result;
74
+ };
75
+ })();
76
+ Object.defineProperty(exports, "__esModule", { value: true });
77
+ const child_process_1 = require("child_process");
78
+ // Import shared scanfix factories
79
+ const index_js_1 = require("../../../scanfix/index.js");
80
+ // Import plugin-specific scanfix arrays
81
+ const containers_js_1 = require("./scanfix/containers.js");
82
+ const config_js_1 = require("./scanfix/config.js");
83
+ const system_js_1 = require("./scanfix/system.js");
84
+ // Import environment-specific operations
85
+ const dev_js_1 = require("./dev.js");
86
+ const staging_js_1 = require("./staging.js");
87
+ // Import SSH helper
88
+ const ssh_helper_js_1 = require("../../../utils/ssh-helper.js");
89
+ class MacPlugin {
90
+ // ============================================================
91
+ // STATIC METADATA
92
+ // ============================================================
93
+ static id = 'mac';
94
+ static name = 'Mac Server';
95
+ static category = 'server';
96
+ static version = '1.0.0';
97
+ /** The OS this server plugin handles */
98
+ static os = 'mac';
99
+ /** Package manager for macOS */
100
+ static packageManager = 'brew';
101
+ /** Service manager for macOS */
102
+ static serviceManager = 'launchctl';
103
+ // Env vars this plugin requires
104
+ static requiredEnvVars = [];
105
+ // Schema for factiii.yml (user-editable)
106
+ static configSchema = {
107
+ // No user config needed - uses staging.host
108
+ container_exclusions: 'array of container names to exclude from cleanup',
109
+ };
110
+ // Schema for factiiiAuto.yml (auto-detected)
111
+ static autoConfigSchema = {
112
+ ssh_user: 'string',
113
+ };
114
+ /**
115
+ * Determine if this plugin should be loaded for this project
116
+ * Loads if config has environment with server: 'mac'
117
+ */
118
+ static async shouldLoad(_rootDir, config) {
119
+ // Dynamic import to avoid circular dependencies
120
+ const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
121
+ const environments = extractEnvironments(config);
122
+ for (const [name, env] of Object.entries(environments)) {
123
+ // Load if environment explicitly uses 'mac'
124
+ if (env.server === 'mac' || env.server === 'mac-mini') {
125
+ return true;
126
+ }
127
+ // Load if staging environment has local/private IP or staging domain
128
+ if (name.startsWith('staging') && env.domain && !env.domain.startsWith('EXAMPLE-')) {
129
+ const isLocal = /^192\.168\./.test(env.domain) ||
130
+ /^10\./.test(env.domain) ||
131
+ /^100\./.test(env.domain) || // Tailscale
132
+ env.domain.includes('staging');
133
+ if (isLocal)
134
+ return true;
135
+ }
136
+ }
137
+ // On init (no config or EXAMPLE values), load as default staging option
138
+ return Object.keys(config).length === 0;
139
+ }
140
+ static helpText = {
141
+ SSH: `
142
+ SSH private key for accessing the server.
143
+
144
+ Step 1: Generate a new SSH key pair (if needed):
145
+ ssh-keygen -t ed25519 -C "deploy-key" -f ~/.ssh/deploy_key
146
+
147
+ Step 2: Add PUBLIC key to server:
148
+ ssh-copy-id -i ~/.ssh/deploy_key.pub ubuntu@YOUR_HOST
149
+
150
+ Step 3: Paste the PRIVATE key below (multi-line, end with blank line):
151
+ cat ~/.ssh/deploy_key`,
152
+ };
153
+ // ============================================================
154
+ // FIXES - All issues this plugin can detect and resolve
155
+ // ============================================================
156
+ // Combined from scanfix/ folder files
157
+ // All fixes are OS-specific to Mac
158
+ // ============================================================
159
+ static fixes = [
160
+ // Dev stage - shared fixes (with OS filter)
161
+ ...(0, index_js_1.getDockerFixes)('dev').map(fix => ({ ...fix, os: 'mac' })),
162
+ // Staging stage - shared fixes (with OS filter)
163
+ ...(0, index_js_1.getDockerFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
164
+ ...(0, index_js_1.getNodeFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
165
+ ...(0, index_js_1.getGitFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
166
+ ...(0, index_js_1.getPnpmFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
167
+ { ...(0, index_js_1.createCertbotFix)('staging', 'staging'), os: 'mac' },
168
+ // Plugin-specific fixes (with OS filter)
169
+ ...containers_js_1.containerFixes.map(fix => ({ ...fix, os: 'mac' })),
170
+ ...config_js_1.configFixes.map(fix => ({ ...fix, os: 'mac' })),
171
+ ...system_js_1.systemFixes.map(fix => ({ ...fix, os: 'mac' })),
172
+ ];
173
+ // ============================================================
174
+ // STATIC HELPER METHODS
175
+ // ============================================================
176
+ /**
177
+ * Auto-detect macOS configuration
178
+ */
179
+ static async detectConfig(_rootDir) {
180
+ return {
181
+ ssh_user: 'ubuntu', // Default SSH user
182
+ };
183
+ }
184
+ /**
185
+ * Execute a command on a remote server via SSH
186
+ */
187
+ static async sshExec(envConfig, command) {
188
+ return await (0, ssh_helper_js_1.sshExec)(envConfig, command);
189
+ }
190
+ // ============================================================
191
+ // INSTANCE METHODS
192
+ // ============================================================
193
+ _config;
194
+ constructor(config) {
195
+ this._config = config;
196
+ }
197
+ /**
198
+ * Ensure server is ready for deployment
199
+ * Installs Node.js, git, pnpm, clones repo, checks out commit
200
+ */
201
+ async ensureServerReady(config, environment, options = {}) {
202
+ return (0, staging_js_1.ensureServerReady)(config, environment, options);
203
+ }
204
+ /**
205
+ * Deploy to an environment
206
+ */
207
+ async deploy(config, environment) {
208
+ if (environment === 'dev') {
209
+ return (0, dev_js_1.deployDev)();
210
+ }
211
+ else if (environment === 'staging') {
212
+ return (0, staging_js_1.deployStaging)(config);
213
+ }
214
+ return { success: false, error: `Unsupported environment: ${environment}` };
215
+ }
216
+ /**
217
+ * Undeploy from an environment
218
+ */
219
+ async undeploy(config, environment) {
220
+ if (environment === 'dev') {
221
+ try {
222
+ (0, child_process_1.execSync)('docker compose down', { stdio: 'inherit' });
223
+ return { success: true, message: 'Local containers stopped' };
224
+ }
225
+ catch (error) {
226
+ return {
227
+ success: false,
228
+ error: error instanceof Error ? error.message : String(error),
229
+ };
230
+ }
231
+ }
232
+ else if (environment === 'staging') {
233
+ const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
234
+ const environments = extractEnvironments(config);
235
+ const envConfig = environments.staging;
236
+ if (!envConfig?.domain) {
237
+ return { success: false, error: 'Staging domain not configured' };
238
+ }
239
+ try {
240
+ const repoName = config.name ?? 'app';
241
+ await MacPlugin.sshExec(envConfig, `
242
+ cd ~/.factiii && docker compose stop ${repoName}-staging
243
+ `);
244
+ return { success: true, message: 'Staging containers stopped' };
245
+ }
246
+ catch (error) {
247
+ return {
248
+ success: false,
249
+ error: error instanceof Error ? error.message : String(error),
250
+ };
251
+ }
252
+ }
253
+ return { success: false, error: `Unsupported environment: ${environment}` };
254
+ }
255
+ }
256
+ exports.default = MacPlugin;
257
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/servers/mac/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Configuration-related fixes for macOS plugin
3
+ * Handles configuration checks and file validation
4
+ */
5
+ import type { Fix } from '../../../../types/index.js';
6
+ export declare const configFixes: Fix[];
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,GAAG,EA+H5B,CAAC"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration-related fixes for macOS plugin
4
+ * Handles configuration checks and file validation
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.configFixes = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const child_process_1 = require("child_process");
44
+ exports.configFixes = [
45
+ // DEV STAGE FIXES
46
+ {
47
+ id: 'missing-dockerfile-dev',
48
+ stage: 'dev',
49
+ severity: 'warning',
50
+ description: 'Dockerfile not found',
51
+ scan: async (_config, rootDir) => {
52
+ const commonPaths = [
53
+ 'Dockerfile',
54
+ 'apps/server/Dockerfile',
55
+ 'packages/server/Dockerfile',
56
+ ];
57
+ for (const p of commonPaths) {
58
+ if (fs.existsSync(path.join(rootDir, p)))
59
+ return false;
60
+ }
61
+ return true;
62
+ },
63
+ fix: null,
64
+ manualFix: 'Create a Dockerfile in your project root. Minimal example:\n' +
65
+ ' FROM node:18-alpine\n' +
66
+ ' WORKDIR /app\n' +
67
+ ' COPY package*.json ./\n' +
68
+ ' RUN npm install --production\n' +
69
+ ' COPY . .\n' +
70
+ ' CMD ["node", "dist/index.js"]',
71
+ },
72
+ {
73
+ id: 'missing-docker-compose-dev',
74
+ stage: 'dev',
75
+ severity: 'info',
76
+ description: 'docker-compose.yml not found (optional for dev)',
77
+ scan: async (_config, rootDir) => {
78
+ return (!fs.existsSync(path.join(rootDir, 'docker-compose.yml')) &&
79
+ !fs.existsSync(path.join(rootDir, 'compose.yml')));
80
+ },
81
+ fix: null,
82
+ manualFix: 'Create docker-compose.yml for local development (optional). Example:\n' +
83
+ ' services:\n' +
84
+ ' app:\n' +
85
+ ' build: .\n' +
86
+ ' ports:\n' +
87
+ ' - "3000:3000"\n' +
88
+ ' volumes:\n' +
89
+ ' - .:/app',
90
+ },
91
+ // STAGING STAGE FIXES
92
+ {
93
+ id: 'staging-domain-missing',
94
+ stage: 'staging',
95
+ severity: 'critical',
96
+ description: 'Staging domain not configured in factiii.yml',
97
+ scan: async (config, _rootDir) => {
98
+ const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
99
+ const environments = extractEnvironments(config);
100
+ // Only check if staging environment is defined in config
101
+ const hasStagingEnv = environments.staging;
102
+ if (!hasStagingEnv)
103
+ return false; // Skip check if staging not configured
104
+ return !environments.staging?.domain;
105
+ },
106
+ fix: null,
107
+ manualFix: 'Add staging.domain to factiii.yml. Example:\n' +
108
+ ' staging:\n' +
109
+ ' server: mac\n' +
110
+ ' domain: staging.yourdomain.com\n' +
111
+ ' env_file: .env.staging',
112
+ },
113
+ {
114
+ id: 'staging-unreachable',
115
+ stage: 'staging',
116
+ severity: 'critical',
117
+ description: 'Cannot reach staging server',
118
+ scan: async (config, _rootDir) => {
119
+ const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
120
+ const environments = extractEnvironments(config);
121
+ // Only check if staging environment is defined in config
122
+ const hasStagingEnv = environments.staging;
123
+ if (!hasStagingEnv)
124
+ return false; // Skip check if staging not configured
125
+ const domain = environments.staging?.domain;
126
+ if (!domain)
127
+ return false; // Will be caught by staging-domain-missing
128
+ try {
129
+ // Try to ping the domain
130
+ (0, child_process_1.execSync)(`ping -c 1 -W 3 ${domain}`, { stdio: 'pipe' });
131
+ return false;
132
+ }
133
+ catch {
134
+ return true;
135
+ }
136
+ },
137
+ fix: null,
138
+ manualFix: 'Check network connectivity to staging server',
139
+ },
140
+ {
141
+ id: 'staging-repo-not-cloned',
142
+ stage: 'staging',
143
+ severity: 'warning',
144
+ description: 'Repository not cloned on staging server',
145
+ scan: async (config, _rootDir) => {
146
+ const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
147
+ const environments = extractEnvironments(config);
148
+ const hasStagingEnv = environments.staging;
149
+ if (!hasStagingEnv)
150
+ return false;
151
+ const domain = environments.staging?.domain;
152
+ if (!domain)
153
+ return false;
154
+ const repoName = config.name ?? 'app';
155
+ // Executed locally - SSH handled by CLI wrapper
156
+ try {
157
+ const repoPath = path.join(process.env.HOME ?? '/Users/jon', '.factiii', repoName, '.git');
158
+ return !fs.existsSync(repoPath);
159
+ }
160
+ catch {
161
+ return true;
162
+ }
163
+ },
164
+ fix: null, // Will be handled by ensureServerReady()
165
+ manualFix: 'Repository will be cloned automatically on first deployment',
166
+ },
167
+ ];
168
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Container management fixes for macOS plugin
3
+ * Handles unmanaged container detection and cleanup
4
+ */
5
+ import type { Fix } from '../../../../types/index.js';
6
+ export declare const containerFixes: Fix[];
7
+ //# sourceMappingURL=containers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/containers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,cAAc,EAAE,GAAG,EAiJ/B,CAAC"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * Container management fixes for macOS plugin
4
+ * Handles unmanaged container detection and cleanup
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.containerFixes = void 0;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const child_process_1 = require("child_process");
47
+ const js_yaml_1 = __importDefault(require("js-yaml"));
48
+ exports.containerFixes = [
49
+ {
50
+ id: 'staging-old-containers',
51
+ stage: 'staging',
52
+ severity: 'warning',
53
+ description: 'Unmanaged Docker containers found (not in docker-compose.yml)',
54
+ scan: async (config, rootDir) => {
55
+ const hasStagingEnv = config?.environments?.staging;
56
+ if (!hasStagingEnv)
57
+ return false;
58
+ try {
59
+ // 1. Generate configs first to know what SHOULD be running
60
+ const factiiiDir = path.join(process.env.HOME ?? '/Users/jon', '.factiii');
61
+ const infraDir = path.join(factiiiDir, 'infrastructure');
62
+ const generateScript = path.join(infraDir, 'dist', 'scripts', 'generate-all.js');
63
+ if (fs.existsSync(generateScript)) {
64
+ (0, child_process_1.execSync)(`node "${generateScript}"`, { stdio: 'pipe', cwd: factiiiDir });
65
+ }
66
+ // 2. Get list of managed containers from generated docker-compose.yml
67
+ const composeFile = path.join(factiiiDir, 'docker-compose.yml');
68
+ if (!fs.existsSync(composeFile)) {
69
+ return false; // No compose file, nothing to check
70
+ }
71
+ const composeContent = fs.readFileSync(composeFile, 'utf8');
72
+ const compose = js_yaml_1.default.load(composeContent);
73
+ // Extract managed container names: service names + container_name values
74
+ const managedContainers = new Set();
75
+ if (compose.services) {
76
+ for (const [serviceName, service] of Object.entries(compose.services)) {
77
+ // Add service name (default container name if container_name not specified)
78
+ managedContainers.add(serviceName);
79
+ // Add explicit container_name if specified
80
+ if (service.container_name) {
81
+ managedContainers.add(service.container_name);
82
+ }
83
+ }
84
+ }
85
+ // 3. Get running containers
86
+ const running = (0, child_process_1.execSync)('docker ps --format "{{.Names}}"', { encoding: 'utf8' })
87
+ .split('\n')
88
+ .filter(Boolean);
89
+ // 4. Find unmanaged containers (only exclude those in docker-compose.yml or container_exclusions)
90
+ const exclusions = config.container_exclusions ?? [];
91
+ const unmanaged = running.filter((name) => !managedContainers.has(name) &&
92
+ !exclusions.includes(name));
93
+ if (unmanaged.length > 0) {
94
+ // Log detailed message with container names
95
+ console.log(`\n⚠️ Found ${unmanaged.length} unmanaged container${unmanaged.length > 1 ? 's' : ''}:`);
96
+ for (const container of unmanaged) {
97
+ console.log(` - ${container}`);
98
+ }
99
+ // Generate YAML snippet
100
+ const yamlSnippet = `container_exclusions:\n - ${unmanaged.join('\n - ')}`;
101
+ console.log('\n💡 To keep these containers running, add to factiii.yml:\n');
102
+ console.log(yamlSnippet);
103
+ }
104
+ return unmanaged.length > 0;
105
+ }
106
+ catch {
107
+ return false; // If we can't check, assume no problem
108
+ }
109
+ },
110
+ fix: async (config, rootDir) => {
111
+ try {
112
+ // Same logic as scan to find unmanaged containers
113
+ const factiiiDir = path.join(process.env.HOME ?? '/Users/jon', '.factiii');
114
+ const infraDir = path.join(factiiiDir, 'infrastructure');
115
+ const generateScript = path.join(infraDir, 'dist', 'scripts', 'generate-all.js');
116
+ if (fs.existsSync(generateScript)) {
117
+ console.log(' 🔨 Generating configs to determine managed containers...');
118
+ (0, child_process_1.execSync)(`node "${generateScript}"`, { stdio: 'inherit', cwd: factiiiDir });
119
+ }
120
+ const composeFile = path.join(factiiiDir, 'docker-compose.yml');
121
+ if (!fs.existsSync(composeFile)) {
122
+ console.log(' ⚠️ No docker-compose.yml found, skipping cleanup');
123
+ return false;
124
+ }
125
+ const composeContent = fs.readFileSync(composeFile, 'utf8');
126
+ const compose = js_yaml_1.default.load(composeContent);
127
+ // Extract managed container names: service names + container_name values
128
+ const managedContainers = new Set();
129
+ if (compose.services) {
130
+ for (const [serviceName, service] of Object.entries(compose.services)) {
131
+ // Add service name (default container name if container_name not specified)
132
+ managedContainers.add(serviceName);
133
+ // Add explicit container_name if specified
134
+ if (service.container_name) {
135
+ managedContainers.add(service.container_name);
136
+ }
137
+ }
138
+ }
139
+ const running = (0, child_process_1.execSync)('docker ps --format "{{.Names}}"', { encoding: 'utf8' })
140
+ .split('\n')
141
+ .filter(Boolean);
142
+ // Find unmanaged containers (only exclude those in docker-compose.yml or container_exclusions)
143
+ const exclusions = config.container_exclusions ?? [];
144
+ const unmanaged = running.filter((name) => !managedContainers.has(name) &&
145
+ !exclusions.includes(name));
146
+ if (unmanaged.length === 0) {
147
+ console.log(' ✅ No unmanaged containers found');
148
+ return true;
149
+ }
150
+ console.log(` 🧹 Stopping ${unmanaged.length} unmanaged container(s):`);
151
+ for (const container of unmanaged) {
152
+ console.log(` - ${container}`);
153
+ (0, child_process_1.execSync)(`docker stop "${container}"`, { stdio: 'inherit' });
154
+ }
155
+ console.log(' ✅ Cleanup complete');
156
+ return true;
157
+ }
158
+ catch (e) {
159
+ const errorMessage = e instanceof Error ? e.message : String(e);
160
+ console.log(` Failed to clean up containers: ${errorMessage}`);
161
+ return false;
162
+ }
163
+ },
164
+ manualFix: 'Run: npx factiii fix --staging (will stop unmanaged containers). To keep specific containers running, add them to container_exclusions in factiii.yml',
165
+ },
166
+ ];
167
+ //# sourceMappingURL=containers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/containers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * System-level scanfixes for fresh Mac setup
3
+ * Checks for essential system requirements on a Mac server
4
+ */
5
+ import type { Fix } from '../../../../types/index.js';
6
+ export declare const systemFixes: Fix[];
7
+ //# sourceMappingURL=system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEtD,eAAO,MAAM,WAAW,EAAE,GAAG,EAgI5B,CAAC"}