@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,373 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Server-side script: generate-all.js
5
+ *
6
+ * Scans all repos in ~/.factiii/* and regenerates:
7
+ * - docker-compose.yml (unified services from all repos)
8
+ * - nginx.conf (routes for all domains)
9
+ *
10
+ * Run on server after git pull to sync deployed configs with source
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.scanRepos = scanRepos;
50
+ exports.loadConfigs = loadConfigs;
51
+ exports.generateDockerCompose = generateDockerCompose;
52
+ exports.generateNginx = generateNginx;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const js_yaml_1 = __importDefault(require("js-yaml"));
56
+ const config_helpers_js_1 = require("../utils/config-helpers.js");
57
+ /**
58
+ * Get the factiii directory path
59
+ * Uses FACTIII_DIR env var if set, otherwise ~/.factiii
60
+ */
61
+ function getFactiiiDir() {
62
+ return process.env.FACTIII_DIR ?? path.join(process.env.HOME ?? '/home/ubuntu', '.factiii');
63
+ }
64
+ /**
65
+ * Scan ~/.factiii for repo directories
66
+ */
67
+ function scanRepos() {
68
+ const factiiiDir = getFactiiiDir();
69
+ if (!fs.existsSync(factiiiDir)) {
70
+ if (require.main === module) {
71
+ console.error('[ERROR] ~/.factiii directory not found');
72
+ process.exit(1);
73
+ }
74
+ return [];
75
+ }
76
+ const entries = fs.readdirSync(factiiiDir);
77
+ const repos = [];
78
+ for (const entry of entries) {
79
+ const fullPath = path.join(factiiiDir, entry);
80
+ const stat = fs.statSync(fullPath);
81
+ // Skip non-directories and special directories
82
+ if (!stat.isDirectory())
83
+ continue;
84
+ if (entry === 'scripts' || entry === 'node_modules' || entry.startsWith('.'))
85
+ continue;
86
+ // Skip the CLI tool directory (not a deployable app)
87
+ if (entry === 'infrastructure' || entry === 'core')
88
+ continue;
89
+ // Check if factiii.yml exists
90
+ const configPath = path.join(fullPath, 'factiii.yml');
91
+ if (fs.existsSync(configPath)) {
92
+ repos.push({
93
+ name: entry,
94
+ path: fullPath,
95
+ configPath,
96
+ });
97
+ }
98
+ }
99
+ return repos;
100
+ }
101
+ /**
102
+ * Load configs from all repos
103
+ */
104
+ function loadConfigs(repos) {
105
+ const configs = {};
106
+ for (const repo of repos) {
107
+ try {
108
+ const content = fs.readFileSync(repo.configPath, 'utf8');
109
+ const config = js_yaml_1.default.load(content);
110
+ if (config) {
111
+ configs[repo.name] = config;
112
+ }
113
+ }
114
+ catch (error) {
115
+ const errorMessage = error instanceof Error ? error.message : String(error);
116
+ console.error(`[!] Failed to load ${repo.name}/factiii.yml: ${errorMessage}`);
117
+ }
118
+ }
119
+ return configs;
120
+ }
121
+ /**
122
+ * Generate docker-compose.yml from all repos' configs
123
+ */
124
+ function generateDockerCompose(allConfigs) {
125
+ const factiiiDir = getFactiiiDir();
126
+ const compose = {
127
+ version: '3.8',
128
+ services: {},
129
+ networks: {
130
+ factiii: {
131
+ driver: 'bridge',
132
+ },
133
+ },
134
+ };
135
+ // Add nginx reverse proxy
136
+ // ============================================================
137
+ // CRITICAL: SSL Certificate Volume Mounts
138
+ // ============================================================
139
+ // Why this exists: Nginx needs access to Let's Encrypt certificates
140
+ // What breaks if changed: HTTPS will fail if certificates not accessible
141
+ // /etc/letsencrypt - SSL certificates from certbot
142
+ // /var/www/certbot - ACME challenge files for certificate validation
143
+ // Must be read-only (:ro) for security
144
+ // ============================================================
145
+ compose.services.nginx = {
146
+ image: 'nginx:alpine',
147
+ container_name: 'factiii_nginx',
148
+ ports: ['80:80', '443:443'],
149
+ volumes: [
150
+ './nginx.conf:/etc/nginx/nginx.conf:ro',
151
+ '/etc/letsencrypt:/etc/letsencrypt:ro',
152
+ '/var/www/certbot:/var/www/certbot:ro',
153
+ ],
154
+ networks: ['factiii'],
155
+ restart: 'unless-stopped',
156
+ };
157
+ // For each repo and each environment, create a service
158
+ for (const [repoName, config] of Object.entries(allConfigs)) {
159
+ // Extract environments
160
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
161
+ if (Object.keys(environments).length === 0)
162
+ continue;
163
+ for (const [envName, envConfig] of Object.entries(environments)) {
164
+ const serviceName = `${repoName}-${envName}`;
165
+ const repoPath = path.join(factiiiDir, repoName);
166
+ // Always use build context - this script is generic and only generates from factiii.yml
167
+ // Server plugins will modify docker-compose.yml after generation if needed (e.g., ECR images for prod)
168
+ let dockerfile = 'Dockerfile';
169
+ const autoConfigPath = path.join(repoPath, 'factiiiAuto.yml');
170
+ if (fs.existsSync(autoConfigPath)) {
171
+ try {
172
+ const autoConfig = js_yaml_1.default.load(fs.readFileSync(autoConfigPath, 'utf8'));
173
+ if (autoConfig?.dockerfile) {
174
+ dockerfile = autoConfig.dockerfile.split(' ')[0] ?? 'Dockerfile'; // Remove OVERRIDE if present
175
+ }
176
+ }
177
+ catch {
178
+ // Ignore errors
179
+ }
180
+ }
181
+ compose.services[serviceName] = {
182
+ build: {
183
+ context: repoPath,
184
+ dockerfile,
185
+ },
186
+ image: `${repoName}:${envName}`,
187
+ container_name: serviceName,
188
+ restart: 'unless-stopped',
189
+ networks: ['factiii'],
190
+ environment: {},
191
+ env_file: [],
192
+ };
193
+ // Add env file if exists
194
+ // Use relative path from factiiiDir (where docker-compose runs from)
195
+ const envFile = path.join(repoPath, `.env.${envName === 'production' ? 'prod' : envName}`);
196
+ if (fs.existsSync(envFile)) {
197
+ // Docker compose runs from ~/.factiii/, so use relative path
198
+ const relativeEnvFile = path.relative(factiiiDir, envFile);
199
+ compose.services[serviceName].env_file.push(relativeEnvFile);
200
+ }
201
+ // Add ports if configured
202
+ const typedEnvConfig = envConfig;
203
+ if (typedEnvConfig.port) {
204
+ compose.services[serviceName].ports = [
205
+ `${typedEnvConfig.port}:${typedEnvConfig.port}`,
206
+ ];
207
+ }
208
+ else {
209
+ // Expose port 3000 by default (internal only, nginx proxies)
210
+ compose.services[serviceName].expose = ['3000'];
211
+ }
212
+ }
213
+ }
214
+ // Write docker-compose.yml
215
+ const outputPath = path.join(getFactiiiDir(), 'docker-compose.yml');
216
+ fs.writeFileSync(outputPath, js_yaml_1.default.dump(compose, { lineWidth: -1 }));
217
+ return Object.keys(compose.services).length - 1; // Exclude nginx from count
218
+ }
219
+ /**
220
+ * Generate nginx.conf from all repos' configs
221
+ *
222
+ * ACME-Compatible: If SSL certificates don't exist for a domain, nginx
223
+ * is configured with HTTP-only proxy (no HTTPS redirect). This allows:
224
+ * 1. Nginx to start without SSL certificates
225
+ * 2. Certbot to complete ACME challenge on port 80
226
+ * 3. After certs are obtained, re-run deploy to enable HTTPS
227
+ */
228
+ function generateNginx(allConfigs) {
229
+ const routes = [];
230
+ // Collect all domains from all repos
231
+ for (const [repoName, config] of Object.entries(allConfigs)) {
232
+ // Extract environments
233
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
234
+ if (Object.keys(environments).length === 0)
235
+ continue;
236
+ for (const [envName, envConfig] of Object.entries(environments)) {
237
+ const typedEnvConfig = envConfig;
238
+ if (typedEnvConfig.domain) {
239
+ routes.push({
240
+ domain: typedEnvConfig.domain,
241
+ service: `${repoName}-${envName}`,
242
+ port: typedEnvConfig.port ?? 3000,
243
+ });
244
+ }
245
+ }
246
+ }
247
+ if (routes.length === 0) {
248
+ console.log(' [!] No domains configured, skipping nginx.conf generation');
249
+ return 0;
250
+ }
251
+ // Generate nginx config
252
+ let nginxConf = `# Auto-generated nginx configuration
253
+ # Generated by: factiii generate-all.js
254
+ # Do not edit directly - modify factiii.yml files and run: npx factiii deploy
255
+
256
+ events {
257
+ worker_connections 1024;
258
+ }
259
+
260
+ http {
261
+ include /etc/nginx/mime.types;
262
+ default_type application/octet-stream;
263
+
264
+ sendfile on;
265
+ keepalive_timeout 65;
266
+ client_max_body_size 100M;
267
+
268
+ # Logging
269
+ access_log /var/log/nginx/access.log;
270
+ error_log /var/log/nginx/error.log;
271
+
272
+ # Gzip
273
+ gzip on;
274
+ gzip_vary on;
275
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
276
+
277
+ `;
278
+ // ============================================================
279
+ // CRITICAL: HTTPS Certificate Paths
280
+ // ============================================================
281
+ // Why this exists: SSL certificates are obtained by certbot during deployment
282
+ // What breaks if changed: HTTPS will fail if certificate paths are wrong
283
+ // Certificate paths: /etc/letsencrypt/live/{domain}/fullchain.pem and privkey.pem
284
+ // Volume mounts: Must mount /etc/letsencrypt:ro in nginx container
285
+ // ============================================================
286
+ for (const { domain, service, port } of routes) {
287
+ // Always generate HTTPS-capable config
288
+ // Certificates must exist before nginx can start (obtained via: npx factiii fix --staging/--prod)
289
+ nginxConf += `
290
+ # ${service} - ${domain}
291
+
292
+ # HTTP - ACME challenge + redirect to HTTPS
293
+ server {
294
+ listen 80;
295
+ server_name ${domain};
296
+
297
+ # Allow certbot ACME challenge (for renewals)
298
+ location /.well-known/acme-challenge/ {
299
+ root /var/www/certbot;
300
+ }
301
+
302
+ # Redirect all other traffic to HTTPS
303
+ location / {
304
+ return 301 https://$server_name$request_uri;
305
+ }
306
+ }
307
+
308
+ # HTTPS - main server block
309
+ server {
310
+ listen 443 ssl;
311
+ http2 on;
312
+ server_name ${domain};
313
+
314
+ # SSL certificate paths (Let's Encrypt)
315
+ ssl_certificate /etc/letsencrypt/live/${domain}/fullchain.pem;
316
+ ssl_certificate_key /etc/letsencrypt/live/${domain}/privkey.pem;
317
+
318
+ # SSL security settings
319
+ ssl_protocols TLSv1.2 TLSv1.3;
320
+ ssl_prefer_server_ciphers on;
321
+ ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
322
+ ssl_session_cache shared:SSL:10m;
323
+ ssl_session_timeout 10m;
324
+
325
+ location / {
326
+ proxy_pass http://${service}:${port};
327
+ proxy_http_version 1.1;
328
+ proxy_set_header Upgrade $http_upgrade;
329
+ proxy_set_header Connection 'upgrade';
330
+ proxy_set_header Host $host;
331
+ proxy_cache_bypass $http_upgrade;
332
+ proxy_set_header X-Real-IP $remote_addr;
333
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
334
+ proxy_set_header X-Forwarded-Proto $scheme;
335
+ }
336
+ }
337
+ `;
338
+ }
339
+ nginxConf += `}\n`;
340
+ // Write nginx.conf
341
+ const outputPath = path.join(getFactiiiDir(), 'nginx.conf');
342
+ fs.writeFileSync(outputPath, nginxConf);
343
+ return routes.length;
344
+ }
345
+ /**
346
+ * Main execution
347
+ */
348
+ function main() {
349
+ console.log('Scanning ~/.factiii for repos...');
350
+ const repos = scanRepos();
351
+ console.log(` Found ${repos.length} repo(s)`);
352
+ if (repos.length === 0) {
353
+ console.log('[!] No repos found in ~/.factiii');
354
+ process.exit(0);
355
+ }
356
+ console.log('\nLoading configs...');
357
+ const allConfigs = loadConfigs(repos);
358
+ console.log(` Loaded ${Object.keys(allConfigs).length} config(s)`);
359
+ console.log('\nGenerating docker-compose.yml...');
360
+ const serviceCount = generateDockerCompose(allConfigs);
361
+ console.log(` [OK] Generated ${serviceCount} service(s)`);
362
+ console.log('\nGenerating nginx.conf...');
363
+ const domainCount = generateNginx(allConfigs);
364
+ console.log(` [OK] Generated ${domainCount} route(s)`);
365
+ console.log('\n[OK] Configuration generation complete!');
366
+ console.log(` docker-compose.yml: ~/.factiii/docker-compose.yml`);
367
+ console.log(` nginx.conf: ~/.factiii/nginx.conf`);
368
+ }
369
+ // Run if called directly
370
+ if (require.main === module) {
371
+ main();
372
+ }
373
+ //# sourceMappingURL=generate-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/scripts/generate-all.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Gets the repo name from factiii.yml
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=get-repo-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-repo-name.d.ts","sourceRoot":"","sources":["../../src/scripts/get-repo-name.ts"],"names":[],"mappings":";AAEA;;GAEG"}
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Gets the repo name from factiii.yml
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
+ const fs = __importStar(require("fs"));
44
+ const js_yaml_1 = __importDefault(require("js-yaml"));
45
+ try {
46
+ const config = js_yaml_1.default.load(fs.readFileSync('factiii.yml', 'utf8'));
47
+ console.log(config?.name ?? '');
48
+ }
49
+ catch (e) {
50
+ const errorMessage = e instanceof Error ? e.message : String(e);
51
+ console.error('Error reading factiii.yml:', errorMessage);
52
+ process.exit(1);
53
+ }
54
+ //# sourceMappingURL=get-repo-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-repo-name.js","sourceRoot":"","sources":["../../src/scripts/get-repo-name.ts"],"names":[],"mappings":";;AAEA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,sDAA2B;AAM3B,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAyB,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Scripts Index
3
+ *
4
+ * Re-exports all script modules.
5
+ */
6
+ export { scanRepos, loadConfigs, generateDockerCompose, generateNginx } from './generate-all.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Scripts Index
4
+ *
5
+ * Re-exports all script modules.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateNginx = exports.generateDockerCompose = exports.loadConfigs = exports.scanRepos = void 0;
9
+ var generate_all_js_1 = require("./generate-all.js");
10
+ Object.defineProperty(exports, "scanRepos", { enumerable: true, get: function () { return generate_all_js_1.scanRepos; } });
11
+ Object.defineProperty(exports, "loadConfigs", { enumerable: true, get: function () { return generate_all_js_1.loadConfigs; } });
12
+ Object.defineProperty(exports, "generateDockerCompose", { enumerable: true, get: function () { return generate_all_js_1.generateDockerCompose; } });
13
+ Object.defineProperty(exports, "generateNginx", { enumerable: true, get: function () { return generate_all_js_1.generateNginx; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAiG;AAAxF,4GAAA,SAAS,OAAA;AAAE,8GAAA,WAAW,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAAE,gHAAA,aAAa,OAAA"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Validates environment files match template
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=validate-env-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-env-files.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-env-files.ts"],"names":[],"mappings":";AAEA;;GAEG"}
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Validates environment files match template
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
+ const fs = __importStar(require("fs"));
44
+ const js_yaml_1 = __importDefault(require("js-yaml"));
45
+ // Load config
46
+ const config = js_yaml_1.default.load(fs.readFileSync('factiii.yml', 'utf8'));
47
+ const isStagingSecret = config?.auto?.isStagingSecret !== false; // default true
48
+ // Parse env files
49
+ function parseEnvFile(filepath) {
50
+ if (!fs.existsSync(filepath))
51
+ return null;
52
+ const content = fs.readFileSync(filepath, 'utf8');
53
+ const env = {};
54
+ content.split('\n').forEach((line) => {
55
+ const trimmed = line.trim();
56
+ if (!trimmed || trimmed.startsWith('#'))
57
+ return;
58
+ const match = trimmed.match(/^([^=]+)=(.*)$/);
59
+ if (match && match[1] && match[2] !== undefined) {
60
+ env[match[1].trim()] = match[2].trim();
61
+ }
62
+ });
63
+ return env;
64
+ }
65
+ const devEnv = parseEnvFile('.env.example');
66
+ const stagingEnv = parseEnvFile('.env.staging');
67
+ const prodEnv = parseEnvFile('.env.prod');
68
+ let hasErrors = false;
69
+ // Validate .env.example exists
70
+ if (!devEnv) {
71
+ console.log('❌ .env.example not found (required as template)');
72
+ hasErrors = true;
73
+ }
74
+ else {
75
+ console.log('✅ .env.example exists (' + Object.keys(devEnv).length + ' keys)');
76
+ }
77
+ // Validate .env.staging
78
+ if (!stagingEnv) {
79
+ console.log('❌ .env.staging not found (required)');
80
+ hasErrors = true;
81
+ }
82
+ else {
83
+ console.log('✅ .env.staging exists (' + Object.keys(stagingEnv).length + ' keys)');
84
+ // Check keys match dev
85
+ const devKeys = Object.keys(devEnv ?? {});
86
+ const stagingKeys = Object.keys(stagingEnv);
87
+ const missing = devKeys.filter((k) => !stagingKeys.includes(k));
88
+ if (missing.length > 0) {
89
+ console.log('⚠️ .env.staging missing keys: ' + missing.join(', '));
90
+ hasErrors = true;
91
+ }
92
+ }
93
+ // Validate .env.prod (optional locally)
94
+ if (!prodEnv) {
95
+ console.log('⚠️ .env.prod not found locally (OK if in GitHub Secrets)');
96
+ }
97
+ else {
98
+ console.log('✅ .env.prod exists locally (' + Object.keys(prodEnv).length + ' keys)');
99
+ // Check keys match dev
100
+ const devKeys = Object.keys(devEnv ?? {});
101
+ const prodKeys = Object.keys(prodEnv);
102
+ const missing = devKeys.filter((k) => !prodKeys.includes(k));
103
+ if (missing.length > 0) {
104
+ console.log('⚠️ .env.prod missing keys: ' + missing.join(', '));
105
+ hasErrors = true;
106
+ }
107
+ }
108
+ if (hasErrors) {
109
+ console.log('');
110
+ console.log('❌ Environment file validation failed');
111
+ process.exit(1);
112
+ }
113
+ // Write outputs
114
+ const githubOutput = process.env.GITHUB_OUTPUT;
115
+ if (githubOutput) {
116
+ fs.appendFileSync(githubOutput, 'staging-exists=' +
117
+ (!!stagingEnv) +
118
+ '\n' +
119
+ 'prod-exists=' +
120
+ (!!prodEnv) +
121
+ '\n' +
122
+ 'is-staging-secret=' +
123
+ isStagingSecret +
124
+ '\n');
125
+ }
126
+ //# sourceMappingURL=validate-env-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-env-files.js","sourceRoot":"","sources":["../../src/scripts/validate-env-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Validates that factiii.yml doesn't contain EXAMPLE- placeholder values
4
+ * This script properly parses YAML and ignores comments
5
+ * Use this in workflows instead of grep to avoid false positives from documentation
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=validate-example-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-example-values.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-example-values.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}