@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,223 @@
1
+ "use strict";
2
+ /**
3
+ * Staging Build Utilities
4
+ *
5
+ * Functions for building Docker images for staging environment:
6
+ * - Builds linux/arm64 images on staging server (no ECR push)
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.getDockerfilePath = getDockerfilePath;
46
+ exports.ensureDockerRunning = ensureDockerRunning;
47
+ exports.buildStagingImage = buildStagingImage;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const child_process_1 = require("child_process");
51
+ const js_yaml_1 = __importDefault(require("js-yaml"));
52
+ const ssh_helper_js_1 = require("../../../utils/ssh-helper.js");
53
+ /**
54
+ * Get dockerfile path from factiiiAuto.yml or use default
55
+ */
56
+ function getDockerfilePath(repoDir) {
57
+ const autoConfigPath = path.join(repoDir, 'factiiiAuto.yml');
58
+ if (fs.existsSync(autoConfigPath)) {
59
+ try {
60
+ const autoConfig = js_yaml_1.default.load(fs.readFileSync(autoConfigPath, 'utf8'));
61
+ if (autoConfig?.dockerfile) {
62
+ // Remove OVERRIDE if present
63
+ return autoConfig.dockerfile.split(' ')[0] ?? 'apps/server/Dockerfile';
64
+ }
65
+ }
66
+ catch {
67
+ // Ignore errors
68
+ }
69
+ }
70
+ return 'apps/server/Dockerfile';
71
+ }
72
+ /**
73
+ * Ensure Docker is running before deployment
74
+ * Starts Docker Desktop if not running and waits for it to be ready
75
+ */
76
+ async function ensureDockerRunning(envConfig, isOnServer) {
77
+ const checkCmd = 'export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && docker info > /dev/null 2>&1 && echo "running" || echo "stopped"';
78
+ // Start Docker and wait up to 60 seconds for it to be ready
79
+ const startCmd = `
80
+ export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
81
+ if ! docker info > /dev/null 2>&1; then
82
+ echo "Starting Docker Desktop..." && \
83
+ open -a Docker && \
84
+ for i in {1..60}; do
85
+ sleep 1
86
+ if docker info > /dev/null 2>&1; then
87
+ echo "Docker is ready"
88
+ exit 0
89
+ fi
90
+ done
91
+ echo "Docker failed to start within 60 seconds"
92
+ exit 1
93
+ else
94
+ echo "Docker is already running"
95
+ fi
96
+ `;
97
+ if (isOnServer) {
98
+ // We're on the server - run commands directly
99
+ try {
100
+ const result = (0, child_process_1.execSync)(checkCmd, {
101
+ encoding: 'utf8',
102
+ shell: '/bin/bash',
103
+ env: {
104
+ ...process.env,
105
+ PATH: `/opt/homebrew/bin:/usr/local/bin:${process.env.PATH}`,
106
+ },
107
+ });
108
+ if (result.includes('stopped')) {
109
+ console.log(' 🐳 Starting Docker Desktop...');
110
+ (0, child_process_1.execSync)(startCmd, {
111
+ stdio: 'inherit',
112
+ shell: '/bin/bash',
113
+ env: {
114
+ ...process.env,
115
+ PATH: `/opt/homebrew/bin:/usr/local/bin:${process.env.PATH}`,
116
+ },
117
+ });
118
+ console.log(' ✅ Docker Desktop started');
119
+ }
120
+ else {
121
+ console.log(' ✅ Docker is already running');
122
+ }
123
+ }
124
+ catch (error) {
125
+ // Docker not running, try to start it
126
+ console.log(' 🐳 Starting Docker Desktop...');
127
+ try {
128
+ (0, child_process_1.execSync)(startCmd, {
129
+ stdio: 'inherit',
130
+ shell: '/bin/bash',
131
+ env: {
132
+ ...process.env,
133
+ PATH: `/opt/homebrew/bin:/usr/local/bin:${process.env.PATH}`,
134
+ },
135
+ });
136
+ console.log(' ✅ Docker Desktop started');
137
+ }
138
+ catch (startError) {
139
+ throw new Error('Failed to start Docker Desktop. Please start it manually.');
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ // We're remote - run via SSH
145
+ try {
146
+ const result = await (0, ssh_helper_js_1.sshExec)(envConfig, checkCmd);
147
+ if (result.includes('stopped')) {
148
+ console.log(' 🐳 Starting Docker Desktop on staging server...');
149
+ await (0, ssh_helper_js_1.sshExec)(envConfig, startCmd);
150
+ console.log(' ✅ Docker Desktop started');
151
+ }
152
+ else {
153
+ console.log(' ✅ Docker is already running');
154
+ }
155
+ }
156
+ catch {
157
+ console.log(' 🐳 Starting Docker Desktop on staging server...');
158
+ try {
159
+ await (0, ssh_helper_js_1.sshExec)(envConfig, startCmd);
160
+ console.log(' ✅ Docker Desktop started');
161
+ }
162
+ catch (startError) {
163
+ throw new Error('Failed to start Docker Desktop on staging server. Please start it manually.');
164
+ }
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * Build staging Docker image (linux/arm64) on staging server
170
+ * No ECR push - builds locally and uses image tag
171
+ *
172
+ * CRITICAL: This function MUST always build on the staging server, never locally.
173
+ * When running from a local machine, it SSHs to staging and builds there.
174
+ */
175
+ async function buildStagingImage(config, envConfig) {
176
+ const repoName = config.name ?? 'app';
177
+ const repoDir = `~/.factiii/${repoName}`;
178
+ const isOnServer = process.env.GITHUB_ACTIONS === 'true';
179
+ try {
180
+ // Ensure Docker is running
181
+ console.log(' 🐳 Checking Docker status...');
182
+ await ensureDockerRunning(envConfig, isOnServer);
183
+ if (isOnServer) {
184
+ // We're on the server - run commands directly
185
+ const expandedRepoDir = repoDir.replace('~', process.env.HOME ?? '');
186
+ const dockerfile = getDockerfilePath(expandedRepoDir);
187
+ const imageTag = `${repoName}:staging`;
188
+ // Build Docker image explicitly with arm64 platform
189
+ console.log(` 🔨 Building Docker image (arm64): ${imageTag}...`);
190
+ (0, child_process_1.execSync)(`cd ${expandedRepoDir} && docker build --platform linux/arm64 -t ${imageTag} -f ${dockerfile} .`, {
191
+ stdio: 'inherit',
192
+ shell: '/bin/bash',
193
+ env: {
194
+ ...process.env,
195
+ PATH: `/opt/homebrew/bin:/usr/local/bin:${process.env.PATH}`,
196
+ },
197
+ });
198
+ }
199
+ else {
200
+ // We're remote - SSH to the server and build there
201
+ // CRITICAL: Build must happen on staging server, never locally
202
+ const dockerfile = getDockerfilePath(path.join(process.env.HOME ?? '/Users/jon', '.factiii', repoName));
203
+ const imageTag = `${repoName}:staging`;
204
+ // Build Docker image explicitly with arm64 platform on remote staging server
205
+ console.log(` 🔨 Building Docker image (arm64) on staging server: ${imageTag}...`);
206
+ console.log(` 📍 Building on: ${envConfig.domain}`);
207
+ await (0, ssh_helper_js_1.sshExec)(envConfig, `export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
208
+ cd ${repoDir} && \
209
+ docker build --platform linux/arm64 -t ${imageTag} -f ${dockerfile} .`);
210
+ console.log(` ✅ Image built successfully on staging server: ${imageTag}`);
211
+ }
212
+ return { success: true, message: 'Staging image built successfully' };
213
+ }
214
+ catch (error) {
215
+ const errorMessage = error instanceof Error ? error.message : String(error);
216
+ console.error(` ❌ Failed to build staging image: ${errorMessage}`);
217
+ return {
218
+ success: false,
219
+ error: `Failed to build staging image: ${errorMessage}`,
220
+ };
221
+ }
222
+ }
223
+ //# sourceMappingURL=staging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staging.js","sourceRoot":"","sources":["../../../../src/plugins/pipelines/factiii/staging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Configuration Detection Utilities
3
+ *
4
+ * Static methods for detecting project configuration:
5
+ * - Package manager (pnpm, yarn, npm)
6
+ * - Node.js version
7
+ * - pnpm version
8
+ * - Dockerfile location
9
+ */
10
+ export interface DetectedConfig {
11
+ package_manager: string;
12
+ node_version: string | null;
13
+ pnpm_version: string | null;
14
+ dockerfile: string | null;
15
+ }
16
+ /**
17
+ * Auto-detect pipeline configuration
18
+ */
19
+ export declare function detectConfig(rootDir: string): DetectedConfig;
20
+ /**
21
+ * Detect package manager
22
+ */
23
+ export declare function detectPackageManager(rootDir: string): string;
24
+ /**
25
+ * Detect Node.js version from package.json
26
+ */
27
+ export declare function detectNodeVersion(rootDir: string): string | null;
28
+ /**
29
+ * Detect pnpm version from package.json
30
+ */
31
+ export declare function detectPnpmVersion(rootDir: string): string | null;
32
+ /**
33
+ * Find Dockerfile
34
+ */
35
+ export declare function findDockerfile(rootDir: string): string | null;
36
+ //# sourceMappingURL=detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAO5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuBhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB7D"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration Detection Utilities
4
+ *
5
+ * Static methods for detecting project configuration:
6
+ * - Package manager (pnpm, yarn, npm)
7
+ * - Node.js version
8
+ * - pnpm version
9
+ * - Dockerfile location
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.detectConfig = detectConfig;
46
+ exports.detectPackageManager = detectPackageManager;
47
+ exports.detectNodeVersion = detectNodeVersion;
48
+ exports.detectPnpmVersion = detectPnpmVersion;
49
+ exports.findDockerfile = findDockerfile;
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ /**
53
+ * Auto-detect pipeline configuration
54
+ */
55
+ function detectConfig(rootDir) {
56
+ return {
57
+ package_manager: detectPackageManager(rootDir),
58
+ node_version: detectNodeVersion(rootDir),
59
+ pnpm_version: detectPnpmVersion(rootDir),
60
+ dockerfile: findDockerfile(rootDir),
61
+ };
62
+ }
63
+ /**
64
+ * Detect package manager
65
+ */
66
+ function detectPackageManager(rootDir) {
67
+ if (fs.existsSync(path.join(rootDir, 'pnpm-lock.yaml'))) {
68
+ return 'pnpm';
69
+ }
70
+ if (fs.existsSync(path.join(rootDir, 'yarn.lock'))) {
71
+ return 'yarn';
72
+ }
73
+ if (fs.existsSync(path.join(rootDir, 'package-lock.json'))) {
74
+ return 'npm';
75
+ }
76
+ return 'npm';
77
+ }
78
+ /**
79
+ * Detect Node.js version from package.json
80
+ */
81
+ function detectNodeVersion(rootDir) {
82
+ const packageJsonPath = path.join(rootDir, 'package.json');
83
+ if (!fs.existsSync(packageJsonPath)) {
84
+ return null;
85
+ }
86
+ try {
87
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
88
+ if (pkg?.engines?.node) {
89
+ const cleaned = pkg.engines.node.replace(/[^0-9.]/g, '');
90
+ return cleaned || null;
91
+ }
92
+ }
93
+ catch {
94
+ // Ignore errors
95
+ }
96
+ return null;
97
+ }
98
+ /**
99
+ * Detect pnpm version from package.json
100
+ */
101
+ function detectPnpmVersion(rootDir) {
102
+ const packageJsonPath = path.join(rootDir, 'package.json');
103
+ if (!fs.existsSync(packageJsonPath)) {
104
+ return null;
105
+ }
106
+ try {
107
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
108
+ if (pkg?.packageManager?.startsWith('pnpm@')) {
109
+ const version = pkg.packageManager.split('@')[1];
110
+ return version?.split('.')[0] ?? null;
111
+ }
112
+ if (pkg?.engines?.pnpm) {
113
+ const cleaned = pkg.engines.pnpm.replace(/[^0-9.]/g, '');
114
+ return cleaned.split('.')[0] ?? null;
115
+ }
116
+ }
117
+ catch {
118
+ // Ignore errors
119
+ }
120
+ return null;
121
+ }
122
+ /**
123
+ * Find Dockerfile
124
+ */
125
+ function findDockerfile(rootDir) {
126
+ const commonPaths = [
127
+ 'Dockerfile',
128
+ 'apps/server/Dockerfile',
129
+ 'packages/server/Dockerfile',
130
+ 'backend/Dockerfile',
131
+ 'server/Dockerfile',
132
+ ];
133
+ for (const relativePath of commonPaths) {
134
+ if (fs.existsSync(path.join(rootDir, relativePath))) {
135
+ return relativePath;
136
+ }
137
+ }
138
+ return null;
139
+ }
140
+ //# sourceMappingURL=detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detection.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Workflow Generation and Triggering Utilities
3
+ *
4
+ * Static methods for managing GitHub Actions workflows:
5
+ * - Generate workflow files from templates
6
+ * - Trigger workflows via GitHub API
7
+ */
8
+ /**
9
+ * Generate GitHub workflow files in the target repository
10
+ */
11
+ export declare function generateWorkflows(rootDir: string): Promise<void>;
12
+ /**
13
+ * Trigger a GitHub Actions workflow
14
+ */
15
+ export declare function triggerWorkflow(workflowName: string, inputs?: Record<string, string>): Promise<void>;
16
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow Generation and Triggering Utilities
4
+ *
5
+ * Static methods for managing GitHub Actions workflows:
6
+ * - Generate workflow files from templates
7
+ * - Trigger workflows via GitHub API
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.generateWorkflows = generateWorkflows;
44
+ exports.triggerWorkflow = triggerWorkflow;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const child_process_1 = require("child_process");
48
+ const rest_1 = require("@octokit/rest");
49
+ const github_secrets_store_js_1 = require("../github-secrets-store.js");
50
+ const version_check_js_1 = require("../../../../utils/version-check.js");
51
+ /**
52
+ * Generate GitHub workflow files in the target repository
53
+ */
54
+ async function generateWorkflows(rootDir) {
55
+ const workflowsDir = path.join(rootDir, '.github', 'workflows');
56
+ const sourceDir = path.join(__dirname, '../workflows');
57
+ // Get package version
58
+ const version = (0, version_check_js_1.getFactiiiVersion)();
59
+ // Create .github/workflows if it doesn't exist
60
+ if (!fs.existsSync(workflowsDir)) {
61
+ fs.mkdirSync(workflowsDir, { recursive: true });
62
+ }
63
+ // Copy workflow files and inject version
64
+ // Infrastructure management (manual dispatch):
65
+ // - factiii-deploy.yml: Manual deploy with --staging or --prod
66
+ // - factiii-fix.yml: Manual fix with matrix for all configured envs
67
+ // - factiii-scan.yml: Manual scan with matrix for all configured envs
68
+ // - factiii-undeploy.yml: Manual cleanup
69
+ // CI/CD (auto on push):
70
+ // - factiii-cicd-staging.yml: Auto-deploy on push to main
71
+ // - factiii-cicd-prod.yml: Auto-deploy on push to prod
72
+ const workflows = [
73
+ 'factiii-deploy.yml',
74
+ 'factiii-fix.yml',
75
+ 'factiii-scan.yml',
76
+ 'factiii-undeploy.yml',
77
+ 'factiii-cicd-staging.yml',
78
+ 'factiii-cicd-prod.yml',
79
+ 'factiii-command.yml',
80
+ ];
81
+ // Only add dev-sync workflow in dev mode
82
+ if (process.env.DEV_MODE === 'true') {
83
+ workflows.push('factiii-dev-sync.yml');
84
+ }
85
+ for (const workflow of workflows) {
86
+ const sourcePath = path.join(sourceDir, workflow);
87
+ const destPath = path.join(workflowsDir, workflow);
88
+ if (fs.existsSync(sourcePath)) {
89
+ let content = fs.readFileSync(sourcePath, 'utf8');
90
+ // Replace version placeholder with actual version
91
+ content = content.replace(/v\{VERSION\}/g, `v${version}`);
92
+ fs.writeFileSync(destPath, content);
93
+ console.log(` ✅ Generated ${workflow}`);
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * Trigger a GitHub Actions workflow
99
+ */
100
+ async function triggerWorkflow(workflowName, inputs = {}) {
101
+ const repoInfo = github_secrets_store_js_1.GitHubSecretsStore.getRepoInfo();
102
+ if (!repoInfo) {
103
+ throw new Error('Could not determine GitHub repository');
104
+ }
105
+ const token = process.env.GITHUB_TOKEN;
106
+ if (!token) {
107
+ throw new Error('GITHUB_TOKEN required to trigger workflows');
108
+ }
109
+ // Get current branch
110
+ let ref = 'main';
111
+ try {
112
+ ref = (0, child_process_1.execSync)('git rev-parse --abbrev-ref HEAD', {
113
+ encoding: 'utf8',
114
+ stdio: ['pipe', 'pipe', 'ignore'],
115
+ }).trim();
116
+ }
117
+ catch {
118
+ // Fall back to main if we can't detect the branch
119
+ }
120
+ const octokit = new rest_1.Octokit({ auth: token });
121
+ await octokit.rest.actions.createWorkflowDispatch({
122
+ owner: repoInfo.owner,
123
+ repo: repoInfo.repo,
124
+ workflow_id: workflowName,
125
+ ref,
126
+ inputs,
127
+ });
128
+ }
129
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"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"}