@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,30 @@
1
+ /**
2
+ * Dev Sync Command
3
+ *
4
+ * DEV/TESTING ONLY - Syncs locally built infrastructure to remote servers
5
+ * for testing beta features of @factiii/stack itself before releasing.
6
+ *
7
+ * SETUP:
8
+ * In repositories you are testing with, add this to package.json:
9
+ * "devDependencies": {
10
+ * "@factiii/stack": "link:../infrastructure"
11
+ * }
12
+ *
13
+ * Then use dev-sync to SSH and copy/paste the current infrastructure folder
14
+ * to staging/prod servers. This simulates pulling from npm without having
15
+ * the package published to npm.
16
+ *
17
+ * PRODUCTION:
18
+ * When @factiii/stack is published to npm, this command will be disabled.
19
+ * Production deployments will use npm to install @factiii/stack normally,
20
+ * so no infrastructure folder will exist on servers - npm handles it.
21
+ *
22
+ * This is NOT for testing app code - only for developing the infrastructure package.
23
+ * Uses direct SCP to transfer infrastructure to servers (no GitHub releases/workflows).
24
+ */
25
+ import type { DevSyncOptions } from '../types/index.js';
26
+ /**
27
+ * Dev sync command - sync locally built infrastructure to servers
28
+ */
29
+ export declare function devSync(options?: DevSyncOptions): Promise<void>;
30
+ //# sourceMappingURL=dev-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-sync.d.ts","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAUH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAybvE;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EzE"}
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ /**
3
+ * Dev Sync Command
4
+ *
5
+ * DEV/TESTING ONLY - Syncs locally built infrastructure to remote servers
6
+ * for testing beta features of @factiii/stack itself before releasing.
7
+ *
8
+ * SETUP:
9
+ * In repositories you are testing with, add this to package.json:
10
+ * "devDependencies": {
11
+ * "@factiii/stack": "link:../infrastructure"
12
+ * }
13
+ *
14
+ * Then use dev-sync to SSH and copy/paste the current infrastructure folder
15
+ * to staging/prod servers. This simulates pulling from npm without having
16
+ * the package published to npm.
17
+ *
18
+ * PRODUCTION:
19
+ * When @factiii/stack is published to npm, this command will be disabled.
20
+ * Production deployments will use npm to install @factiii/stack normally,
21
+ * so no infrastructure folder will exist on servers - npm handles it.
22
+ *
23
+ * This is NOT for testing app code - only for developing the infrastructure package.
24
+ * Uses direct SCP to transfer infrastructure to servers (no GitHub releases/workflows).
25
+ */
26
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
33
+ }) : (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ o[k2] = m[k];
36
+ }));
37
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
38
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
39
+ }) : function(o, v) {
40
+ o["default"] = v;
41
+ });
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ var __importDefault = (this && this.__importDefault) || function (mod) {
60
+ return (mod && mod.__esModule) ? mod : { "default": mod };
61
+ };
62
+ Object.defineProperty(exports, "__esModule", { value: true });
63
+ exports.devSync = devSync;
64
+ const fs = __importStar(require("fs"));
65
+ const path = __importStar(require("path"));
66
+ const os = __importStar(require("os"));
67
+ const readline = __importStar(require("readline"));
68
+ const child_process = __importStar(require("child_process"));
69
+ const util_1 = require("util");
70
+ const js_yaml_1 = __importDefault(require("js-yaml"));
71
+ const config_helpers_js_1 = require("../utils/config-helpers.js");
72
+ const exec = (0, util_1.promisify)(child_process.exec);
73
+ /**
74
+ * Get path to dev-sync config file
75
+ */
76
+ function getDevSyncConfigPath() {
77
+ const homeDir = os.homedir();
78
+ const factiiiDir = path.join(homeDir, '.factiii');
79
+ return path.join(factiiiDir, 'dev-sync.json');
80
+ }
81
+ /**
82
+ * Load dev-sync config from ~/.factiii/dev-sync.json
83
+ */
84
+ function loadDevSyncConfig() {
85
+ const configPath = getDevSyncConfigPath();
86
+ if (!fs.existsSync(configPath)) {
87
+ return { sshKeys: {} };
88
+ }
89
+ try {
90
+ const content = fs.readFileSync(configPath, 'utf8');
91
+ const config = JSON.parse(content);
92
+ return config || { sshKeys: {} };
93
+ }
94
+ catch (error) {
95
+ // If config file is corrupted, return empty config
96
+ console.warn(`[!] Could not read dev-sync config: ${error instanceof Error ? error.message : String(error)}`);
97
+ return { sshKeys: {} };
98
+ }
99
+ }
100
+ /**
101
+ * Save dev-sync config to ~/.factiii/dev-sync.json
102
+ */
103
+ function saveDevSyncConfig(config) {
104
+ const configPath = getDevSyncConfigPath();
105
+ const factiiiDir = path.dirname(configPath);
106
+ // Create ~/.factiii directory if it doesn't exist
107
+ if (!fs.existsSync(factiiiDir)) {
108
+ fs.mkdirSync(factiiiDir, { mode: 0o700 });
109
+ }
110
+ try {
111
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', { mode: 0o600 });
112
+ }
113
+ catch (error) {
114
+ console.warn(`[!] Could not save dev-sync config: ${error instanceof Error ? error.message : String(error)}`);
115
+ }
116
+ }
117
+ /**
118
+ * Load config from factiii.yml
119
+ */
120
+ function loadConfig(rootDir) {
121
+ const configPath = path.join(rootDir, 'factiii.yml');
122
+ if (!fs.existsSync(configPath)) {
123
+ console.error('[ERROR] factiii.yml not found in current directory');
124
+ console.error(' Make sure you are running this from your app repository');
125
+ process.exit(1);
126
+ }
127
+ try {
128
+ return js_yaml_1.default.load(fs.readFileSync(configPath, 'utf8')) ?? {};
129
+ }
130
+ catch (e) {
131
+ const errorMessage = e instanceof Error ? e.message : String(e);
132
+ console.error(`[ERROR] Error parsing factiii.yml: ${errorMessage}`);
133
+ process.exit(1);
134
+ }
135
+ }
136
+ /**
137
+ * Find infrastructure path by looking for link: in package.json
138
+ */
139
+ function findInfrastructurePath(rootDir) {
140
+ const packageJsonPath = path.join(rootDir, 'package.json');
141
+ if (!fs.existsSync(packageJsonPath)) {
142
+ console.error('[ERROR] package.json not found');
143
+ process.exit(1);
144
+ }
145
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
146
+ // Check devDependencies for link: dependency
147
+ const devDeps = packageJson.devDependencies || {};
148
+ const factiiiStack = devDeps['@factiii/stack'];
149
+ if (!factiiiStack || !factiiiStack.startsWith('link:')) {
150
+ console.error('[ERROR] No link: dependency found for @factiii/stack in package.json');
151
+ console.error(' Expected: "@factiii/stack": "link:/path/to/infrastructure"');
152
+ console.error(' This command requires a local link to the infrastructure package');
153
+ process.exit(1);
154
+ }
155
+ // Extract path from link:
156
+ const infraPath = factiiiStack.replace('link:', '');
157
+ const resolvedPath = path.resolve(rootDir, infraPath);
158
+ if (!fs.existsSync(resolvedPath)) {
159
+ console.error(`[ERROR] Infrastructure path not found: ${resolvedPath}`);
160
+ process.exit(1);
161
+ }
162
+ return resolvedPath;
163
+ }
164
+ /**
165
+ * Get target environments based on config and options
166
+ * Supports both v1.x and v2.0.0 config formats
167
+ */
168
+ function getTargetEnvironments(config, options) {
169
+ const environments = [];
170
+ const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
171
+ const envNames = Object.keys(allEnvs);
172
+ if (options.staging) {
173
+ // Look for any staging-type environment
174
+ const stagingEnv = envNames.find(name => name.startsWith('staging') || name.startsWith('stage-'));
175
+ if (stagingEnv) {
176
+ environments.push(stagingEnv);
177
+ }
178
+ else {
179
+ console.warn('[!] Staging environment not configured in factiii.yml');
180
+ }
181
+ }
182
+ if (options.prod) {
183
+ // Look for any prod-type environment
184
+ const prodEnv = envNames.find(name => name.startsWith('prod') || name === 'production');
185
+ if (prodEnv) {
186
+ environments.push(prodEnv);
187
+ }
188
+ else {
189
+ console.warn('[!] Production environment not configured in factiii.yml');
190
+ }
191
+ }
192
+ // If no specific environment specified, sync to all configured
193
+ if (!options.staging && !options.prod) {
194
+ // Add all configured environments
195
+ environments.push(...envNames);
196
+ }
197
+ if (environments.length === 0) {
198
+ console.error('[ERROR] No environments configured in factiii.yml');
199
+ console.error(' Add staging and/or prod environments to factiii.yml');
200
+ process.exit(1);
201
+ }
202
+ return environments;
203
+ }
204
+ /**
205
+ * Auto-increment dev version in package.json
206
+ * Converts 2.0.1 -> 2.0.1-d1, or 2.0.1-d1 -> 2.0.1-d2
207
+ */
208
+ function incrementDevVersion(infraPath) {
209
+ const packageJsonPath = path.join(infraPath, 'package.json');
210
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
211
+ let version = pkg.version;
212
+ // If has -d suffix, increment; otherwise add -d1
213
+ if (version.includes('-d')) {
214
+ const match = version.match(/-d(\d+)$/);
215
+ if (match) {
216
+ const num = parseInt(match[1], 10) + 1;
217
+ version = version.replace(/-d\d+$/, `-d${num}`);
218
+ }
219
+ }
220
+ else {
221
+ version = `${version}-d1`;
222
+ }
223
+ // Update package.json
224
+ pkg.version = version;
225
+ fs.writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n');
226
+ return version;
227
+ }
228
+ /**
229
+ * Build infrastructure locally
230
+ */
231
+ async function buildInfrastructure(infraPath) {
232
+ console.log('Building infrastructure locally...');
233
+ try {
234
+ const { stdout, stderr } = await exec('npm run build', {
235
+ cwd: infraPath,
236
+ env: { ...process.env, NODE_ENV: 'production' }
237
+ });
238
+ if (stderr && !stderr.includes('npm WARN')) {
239
+ console.log(stderr);
240
+ }
241
+ console.log('[OK] Built successfully\n');
242
+ }
243
+ catch (error) {
244
+ console.error('[ERROR] Build failed:');
245
+ if (error instanceof Error && 'stdout' in error) {
246
+ console.error(error.stdout);
247
+ console.error(error.stderr);
248
+ }
249
+ process.exit(1);
250
+ }
251
+ }
252
+ /**
253
+ * Create tarball of infrastructure
254
+ */
255
+ async function createTarball(infraPath) {
256
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'factiii-dev-sync-'));
257
+ const tarPath = path.join(tmpDir, 'infrastructure.tar.gz');
258
+ console.log('Creating artifact...');
259
+ try {
260
+ // Create tar excluding node_modules and .git
261
+ await exec(`tar -czf "${tarPath}" --exclude='node_modules' --exclude='.git' --exclude='*.log' -C "${infraPath}" .`, { maxBuffer: 50 * 1024 * 1024 } // 50MB buffer
262
+ );
263
+ const stats = fs.statSync(tarPath);
264
+ const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
265
+ console.log(`[OK] Artifact created (${sizeMB} MB)\n`);
266
+ return tarPath;
267
+ }
268
+ catch (error) {
269
+ console.error('[ERROR] Failed to create tarball:');
270
+ console.error(error);
271
+ process.exit(1);
272
+ }
273
+ }
274
+ /**
275
+ * Get SSH key from environment, saved config, or prompt user
276
+ */
277
+ async function getOrPromptSSHKey(environment) {
278
+ // Check environment variable first
279
+ const envVar = environment === 'staging' ? 'STAGING_SSH' : 'PROD_SSH';
280
+ const sshKeyFromEnv = process.env[envVar];
281
+ if (sshKeyFromEnv) {
282
+ // Check if it's a file path
283
+ if (fs.existsSync(sshKeyFromEnv)) {
284
+ // It's a file path - use it directly
285
+ return path.resolve(sshKeyFromEnv);
286
+ }
287
+ else {
288
+ // It's the key content - save to temp file
289
+ const tmpDir = os.tmpdir();
290
+ const keyPath = path.join(tmpDir, `factiii-ssh-${environment}-${Date.now()}`);
291
+ fs.writeFileSync(keyPath, sshKeyFromEnv);
292
+ fs.chmodSync(keyPath, 0o600);
293
+ return keyPath;
294
+ }
295
+ }
296
+ // Check saved config file
297
+ const config = loadDevSyncConfig();
298
+ const configKey = environment === 'staging' ? 'stagingPath' : 'prodPath';
299
+ const savedPath = config.sshKeys[configKey];
300
+ if (savedPath && fs.existsSync(savedPath)) {
301
+ const resolvedPath = path.resolve(savedPath);
302
+ console.log(`[OK] Using saved SSH key path: ${resolvedPath}\n`);
303
+ return resolvedPath;
304
+ }
305
+ // If saved path doesn't exist, remove it from config
306
+ if (savedPath && !fs.existsSync(savedPath)) {
307
+ const updatedConfig = { ...config };
308
+ delete updatedConfig.sshKeys[configKey];
309
+ saveDevSyncConfig(updatedConfig);
310
+ }
311
+ // Prompt user for SSH key
312
+ console.log(`\nSSH key not found in ${envVar} environment variable`);
313
+ console.log(' Please provide your SSH private key for this environment');
314
+ console.log(' You can paste the key content or provide a file path');
315
+ console.log(' Note: File paths will be remembered for next time (key content will not be saved)\n');
316
+ const rl = readline.createInterface({
317
+ input: process.stdin,
318
+ output: process.stdout
319
+ });
320
+ return new Promise((resolve, reject) => {
321
+ rl.question('SSH key (paste content or file path): ', async (answer) => {
322
+ rl.close();
323
+ let keyPath;
324
+ const trimmed = answer.trim();
325
+ let isFilePath = false;
326
+ // Check if it's a file path
327
+ if (fs.existsSync(trimmed)) {
328
+ keyPath = path.resolve(trimmed);
329
+ isFilePath = true;
330
+ }
331
+ else {
332
+ // It's the key content - save to temp file
333
+ const tmpDir = os.tmpdir();
334
+ keyPath = path.join(tmpDir, `factiii-ssh-${environment}-${Date.now()}`);
335
+ fs.writeFileSync(keyPath, trimmed);
336
+ fs.chmodSync(keyPath, 0o600);
337
+ isFilePath = false;
338
+ }
339
+ // Verify it's a valid key file
340
+ if (!fs.existsSync(keyPath)) {
341
+ console.error('[ERROR] SSH key file not found');
342
+ process.exit(1);
343
+ }
344
+ // Save file path to config for next time (only if it's a file path, not key content)
345
+ if (isFilePath) {
346
+ const updatedConfig = loadDevSyncConfig();
347
+ updatedConfig.sshKeys[configKey] = keyPath;
348
+ saveDevSyncConfig(updatedConfig);
349
+ console.log('[OK] SSH key path saved for next time\n');
350
+ }
351
+ else {
352
+ console.log('[OK] Using SSH key (not saved - use file path to remember)\n');
353
+ }
354
+ resolve(keyPath);
355
+ });
356
+ });
357
+ }
358
+ /**
359
+ * SCP tarball to server and extract
360
+ */
361
+ async function syncToServer(tarPath, environment, config, sshKeyPath) {
362
+ // Get environment config (supports both v1.x and v2.0.0 formats)
363
+ const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
364
+ const envConfig = allEnvs[environment];
365
+ if (!envConfig?.domain) {
366
+ console.error(`[ERROR] ${environment} domain not configured in factiii.yml`);
367
+ process.exit(1);
368
+ }
369
+ const host = envConfig.domain;
370
+ const user = envConfig.ssh_user || 'ubuntu';
371
+ console.log(`Syncing to ${environment} (${user}@${host})...`);
372
+ try {
373
+ // SCP tarball to server
374
+ console.log(' Uploading tarball...');
375
+ await exec(`scp -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${tarPath}" "${user}@${host}:/tmp/infrastructure.tar.gz"`, { maxBuffer: 50 * 1024 * 1024 });
376
+ // SSH to server and extract
377
+ console.log(' Extracting on server...');
378
+ await exec(`ssh -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${user}@${host}" \
379
+ "mkdir -p ~/.factiii/infrastructure && \
380
+ cd ~/.factiii/infrastructure && \
381
+ tar -xzf /tmp/infrastructure.tar.gz && \
382
+ rm /tmp/infrastructure.tar.gz && \
383
+ echo 'Installing infrastructure dependencies...' && \
384
+ export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
385
+ if [ -f 'pnpm-lock.yaml' ]; then \
386
+ command -v pnpm >/dev/null 2>&1 || npm install -g pnpm && \
387
+ pnpm install; \
388
+ else \
389
+ npm install; \
390
+ fi && \
391
+ echo '[OK] Infrastructure synced successfully'"`);
392
+ console.log(` [OK] Synced to ${environment}\n`);
393
+ }
394
+ catch (error) {
395
+ console.error(`[ERROR] Failed to sync to ${environment}:`);
396
+ if (error instanceof Error) {
397
+ console.error(` ${error.message}`);
398
+ }
399
+ throw error;
400
+ }
401
+ }
402
+ /**
403
+ * Deploy after sync (optional)
404
+ */
405
+ async function deployAfterSync(environment, config, sshKeyPath) {
406
+ // Get environment config (supports both v1.x and v2.0.0 formats)
407
+ const allEnvs = (0, config_helpers_js_1.extractEnvironments)(config);
408
+ const envConfig = allEnvs[environment];
409
+ if (!envConfig?.domain) {
410
+ return;
411
+ }
412
+ const host = envConfig.domain;
413
+ const user = envConfig.ssh_user || 'ubuntu';
414
+ const repoName = config.name || 'app';
415
+ console.log(`Deploying to ${environment}...`);
416
+ try {
417
+ await exec(`ssh -i "${sshKeyPath}" -o StrictHostKeyChecking=no "${user}@${host}" \
418
+ "export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
419
+ cd ~/.factiii/${repoName} && \
420
+ GITHUB_ACTIONS=true node ~/.factiii/infrastructure/bin/factiii deploy --${environment}"`);
421
+ console.log(` [OK] Deployed to ${environment}\n`);
422
+ }
423
+ catch (error) {
424
+ console.error(`[ERROR] Deployment failed for ${environment}:`);
425
+ if (error instanceof Error) {
426
+ console.error(` ${error.message}`);
427
+ }
428
+ throw error;
429
+ }
430
+ }
431
+ /**
432
+ * Dev sync command - sync locally built infrastructure to servers
433
+ */
434
+ async function devSync(options = {}) {
435
+ const rootDir = options.rootDir ?? process.cwd();
436
+ console.log('DEV SYNC - Testing uncommitted infrastructure changes');
437
+ console.log('[!] This is a development command - not for production releases');
438
+ console.log('[!] Only for testing @factiii/stack beta features\n');
439
+ // 1. Load config and validate
440
+ const config = loadConfig(rootDir);
441
+ const infraPath = findInfrastructurePath(rootDir);
442
+ const environments = getTargetEnvironments(config, options);
443
+ console.log(`Infrastructure path: ${infraPath}`);
444
+ console.log(`Target environments: ${environments.join(', ')}\n`);
445
+ // 2. Increment dev version
446
+ const devVersion = incrementDevVersion(infraPath);
447
+ console.log(`Dev version: ${devVersion}\n`);
448
+ // 3. Build infrastructure locally
449
+ await buildInfrastructure(infraPath);
450
+ // 4. Create tarball
451
+ const tarPath = await createTarball(infraPath);
452
+ // 5. Sync to each environment
453
+ const sshKeyPaths = new Map();
454
+ const cleanupPaths = [];
455
+ try {
456
+ for (const env of environments) {
457
+ // Get SSH key for this environment
458
+ let sshKeyPath = sshKeyPaths.get(env);
459
+ if (!sshKeyPath) {
460
+ sshKeyPath = await getOrPromptSSHKey(env);
461
+ sshKeyPaths.set(env, sshKeyPath);
462
+ // Track temp files for cleanup (only if we created them)
463
+ if (sshKeyPath.includes(os.tmpdir())) {
464
+ cleanupPaths.push(sshKeyPath);
465
+ }
466
+ }
467
+ // Sync to server
468
+ await syncToServer(tarPath, env, config, sshKeyPath);
469
+ // Optionally deploy
470
+ if (options.deploy) {
471
+ await deployAfterSync(env, config, sshKeyPath);
472
+ }
473
+ }
474
+ console.log('[OK] Dev sync complete!');
475
+ }
476
+ catch (error) {
477
+ console.error('\n[ERROR] Dev sync failed');
478
+ throw error;
479
+ }
480
+ finally {
481
+ // Cleanup temp files
482
+ try {
483
+ // Remove tarball
484
+ if (fs.existsSync(tarPath)) {
485
+ fs.unlinkSync(tarPath);
486
+ fs.rmdirSync(path.dirname(tarPath));
487
+ }
488
+ // Remove SSH key temp files
489
+ for (const keyPath of cleanupPaths) {
490
+ if (fs.existsSync(keyPath)) {
491
+ fs.unlinkSync(keyPath);
492
+ }
493
+ }
494
+ }
495
+ catch (error) {
496
+ // Ignore cleanup errors
497
+ }
498
+ }
499
+ }
500
+ //# sourceMappingURL=dev-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-sync.js","sourceRoot":"","sources":["../../src/cli/dev-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Execute Plugin Command
3
+ *
4
+ * Executes plugin commands with proper stage routing.
5
+ * Follows the same pattern as deploy:
6
+ * 1. Determine target stage from --staging or --prod
7
+ * 2. Check prodSafety - block destructive ops without --force
8
+ * 3. Ask pipeline plugin canReach(stage)
9
+ * 4. If via: 'workflow' -> trigger workflow
10
+ * 5. If via: 'local' -> execute command directly
11
+ */
12
+ import type { FactiiiConfig, Stage, Reachability, PluginCommand } from '../types/index.js';
13
+ /**
14
+ * Pipeline plugin class interface for commands
15
+ */
16
+ interface PipelinePluginClass {
17
+ id: string;
18
+ canReach(stage: Stage, config: FactiiiConfig): Reachability;
19
+ }
20
+ /**
21
+ * Execute a plugin command with proper stage routing
22
+ */
23
+ export declare function executePluginCommand(command: PluginCommand, options: Record<string, unknown>, pipelinePlugin: PipelinePluginClass): Promise<void>;
24
+ export {};
25
+ //# sourceMappingURL=execute-plugin-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-plugin-command.d.ts","sourceRoot":"","sources":["../../src/cli/execute-plugin-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC;CAC7D;AAsHD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,cAAc,EAAE,mBAAmB,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Ff"}