@factiii/stack 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +420 -0
  2. package/bin/factiii +229 -0
  3. package/dist/cli/check-config.d.ts +9 -0
  4. package/dist/cli/check-config.d.ts.map +1 -0
  5. package/dist/cli/check-config.js +19 -0
  6. package/dist/cli/check-config.js.map +1 -0
  7. package/dist/cli/deploy-secrets.d.ts +16 -0
  8. package/dist/cli/deploy-secrets.d.ts.map +1 -0
  9. package/dist/cli/deploy-secrets.js +227 -0
  10. package/dist/cli/deploy-secrets.js.map +1 -0
  11. package/dist/cli/deploy.d.ts +30 -0
  12. package/dist/cli/deploy.d.ts.map +1 -0
  13. package/dist/cli/deploy.js +306 -0
  14. package/dist/cli/deploy.js.map +1 -0
  15. package/dist/cli/deployer.d.ts +13 -0
  16. package/dist/cli/deployer.d.ts.map +1 -0
  17. package/dist/cli/deployer.js +21 -0
  18. package/dist/cli/deployer.js.map +1 -0
  19. package/dist/cli/dev-sync.d.ts +30 -0
  20. package/dist/cli/dev-sync.d.ts.map +1 -0
  21. package/dist/cli/dev-sync.js +500 -0
  22. package/dist/cli/dev-sync.js.map +1 -0
  23. package/dist/cli/execute-plugin-command.d.ts +25 -0
  24. package/dist/cli/execute-plugin-command.d.ts.map +1 -0
  25. package/dist/cli/execute-plugin-command.js +237 -0
  26. package/dist/cli/execute-plugin-command.js.map +1 -0
  27. package/dist/cli/fix.d.ts +22 -0
  28. package/dist/cli/fix.d.ts.map +1 -0
  29. package/dist/cli/fix.js +267 -0
  30. package/dist/cli/fix.js.map +1 -0
  31. package/dist/cli/index.d.ts +17 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +31 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/init.d.ts +9 -0
  36. package/dist/cli/init.d.ts.map +1 -0
  37. package/dist/cli/init.js +190 -0
  38. package/dist/cli/init.js.map +1 -0
  39. package/dist/cli/plugin-commands.d.ts +22 -0
  40. package/dist/cli/plugin-commands.d.ts.map +1 -0
  41. package/dist/cli/plugin-commands.js +121 -0
  42. package/dist/cli/plugin-commands.js.map +1 -0
  43. package/dist/cli/scan.d.ts +66 -0
  44. package/dist/cli/scan.d.ts.map +1 -0
  45. package/dist/cli/scan.js +511 -0
  46. package/dist/cli/scan.js.map +1 -0
  47. package/dist/cli/secrets.d.ts +19 -0
  48. package/dist/cli/secrets.d.ts.map +1 -0
  49. package/dist/cli/secrets.js +318 -0
  50. package/dist/cli/secrets.js.map +1 -0
  51. package/dist/cli/undeploy.d.ts +9 -0
  52. package/dist/cli/undeploy.d.ts.map +1 -0
  53. package/dist/cli/undeploy.js +95 -0
  54. package/dist/cli/undeploy.js.map +1 -0
  55. package/dist/cli/upgrade.d.ts +9 -0
  56. package/dist/cli/upgrade.d.ts.map +1 -0
  57. package/dist/cli/upgrade.js +24 -0
  58. package/dist/cli/upgrade.js.map +1 -0
  59. package/dist/cli/validate.d.ts +9 -0
  60. package/dist/cli/validate.d.ts.map +1 -0
  61. package/dist/cli/validate.js +20 -0
  62. package/dist/cli/validate.js.map +1 -0
  63. package/dist/generators/generate-factiii-auto.d.ts +31 -0
  64. package/dist/generators/generate-factiii-auto.d.ts.map +1 -0
  65. package/dist/generators/generate-factiii-auto.js +251 -0
  66. package/dist/generators/generate-factiii-auto.js.map +1 -0
  67. package/dist/generators/generate-factiii-yml.d.ts +23 -0
  68. package/dist/generators/generate-factiii-yml.d.ts.map +1 -0
  69. package/dist/generators/generate-factiii-yml.js +228 -0
  70. package/dist/generators/generate-factiii-yml.js.map +1 -0
  71. package/dist/generators/index.d.ts +8 -0
  72. package/dist/generators/index.d.ts.map +1 -0
  73. package/dist/generators/index.js +14 -0
  74. package/dist/generators/index.js.map +1 -0
  75. package/dist/index.d.ts +39 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +90 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/plugins/addons/server-mode/index.d.ts +57 -0
  80. package/dist/plugins/addons/server-mode/index.d.ts.map +1 -0
  81. package/dist/plugins/addons/server-mode/index.js +136 -0
  82. package/dist/plugins/addons/server-mode/index.js.map +1 -0
  83. package/dist/plugins/addons/server-mode/scanfix/mac.d.ts +17 -0
  84. package/dist/plugins/addons/server-mode/scanfix/mac.d.ts.map +1 -0
  85. package/dist/plugins/addons/server-mode/scanfix/mac.js +461 -0
  86. package/dist/plugins/addons/server-mode/scanfix/mac.js.map +1 -0
  87. package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts +12 -0
  88. package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts.map +1 -0
  89. package/dist/plugins/addons/server-mode/scanfix/ubuntu.js +246 -0
  90. package/dist/plugins/addons/server-mode/scanfix/ubuntu.js.map +1 -0
  91. package/dist/plugins/addons/server-mode/scanfix/windows.d.ts +14 -0
  92. package/dist/plugins/addons/server-mode/scanfix/windows.d.ts.map +1 -0
  93. package/dist/plugins/addons/server-mode/scanfix/windows.js +113 -0
  94. package/dist/plugins/addons/server-mode/scanfix/windows.js.map +1 -0
  95. package/dist/plugins/approved.json +13 -0
  96. package/dist/plugins/frameworks/prisma-trpc/index.d.ts +65 -0
  97. package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -0
  98. package/dist/plugins/frameworks/prisma-trpc/index.js +668 -0
  99. package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -0
  100. package/dist/plugins/index.d.ts +101 -0
  101. package/dist/plugins/index.d.ts.map +1 -0
  102. package/dist/plugins/index.js +411 -0
  103. package/dist/plugins/index.js.map +1 -0
  104. package/dist/plugins/interfaces/addon.d.ts +43 -0
  105. package/dist/plugins/interfaces/addon.d.ts.map +1 -0
  106. package/dist/plugins/interfaces/addon.js +53 -0
  107. package/dist/plugins/interfaces/addon.js.map +1 -0
  108. package/dist/plugins/interfaces/framework.d.ts +43 -0
  109. package/dist/plugins/interfaces/framework.d.ts.map +1 -0
  110. package/dist/plugins/interfaces/framework.js +53 -0
  111. package/dist/plugins/interfaces/framework.js.map +1 -0
  112. package/dist/plugins/interfaces/index.d.ts +10 -0
  113. package/dist/plugins/interfaces/index.d.ts.map +1 -0
  114. package/dist/plugins/interfaces/index.js +17 -0
  115. package/dist/plugins/interfaces/index.js.map +1 -0
  116. package/dist/plugins/interfaces/pipeline.d.ts +78 -0
  117. package/dist/plugins/interfaces/pipeline.d.ts.map +1 -0
  118. package/dist/plugins/interfaces/pipeline.js +82 -0
  119. package/dist/plugins/interfaces/pipeline.js.map +1 -0
  120. package/dist/plugins/interfaces/server.d.ts +65 -0
  121. package/dist/plugins/interfaces/server.d.ts.map +1 -0
  122. package/dist/plugins/interfaces/server.js +72 -0
  123. package/dist/plugins/interfaces/server.js.map +1 -0
  124. package/dist/plugins/pipelines/aws/configs/ec2.d.ts +9 -0
  125. package/dist/plugins/pipelines/aws/configs/ec2.d.ts.map +1 -0
  126. package/dist/plugins/pipelines/aws/configs/ec2.js +34 -0
  127. package/dist/plugins/pipelines/aws/configs/ec2.js.map +1 -0
  128. package/dist/plugins/pipelines/aws/configs/free-tier.d.ts +13 -0
  129. package/dist/plugins/pipelines/aws/configs/free-tier.d.ts.map +1 -0
  130. package/dist/plugins/pipelines/aws/configs/free-tier.js +86 -0
  131. package/dist/plugins/pipelines/aws/configs/free-tier.js.map +1 -0
  132. package/dist/plugins/pipelines/aws/configs/index.d.ts +14 -0
  133. package/dist/plugins/pipelines/aws/configs/index.d.ts.map +1 -0
  134. package/dist/plugins/pipelines/aws/configs/index.js +21 -0
  135. package/dist/plugins/pipelines/aws/configs/index.js.map +1 -0
  136. package/dist/plugins/pipelines/aws/configs/types.d.ts +36 -0
  137. package/dist/plugins/pipelines/aws/configs/types.d.ts.map +1 -0
  138. package/dist/plugins/pipelines/aws/configs/types.js +9 -0
  139. package/dist/plugins/pipelines/aws/configs/types.js.map +1 -0
  140. package/dist/plugins/pipelines/aws/dev.d.ts +10 -0
  141. package/dist/plugins/pipelines/aws/dev.d.ts.map +1 -0
  142. package/dist/plugins/pipelines/aws/dev.js +70 -0
  143. package/dist/plugins/pipelines/aws/dev.js.map +1 -0
  144. package/dist/plugins/pipelines/aws/index.d.ts +118 -0
  145. package/dist/plugins/pipelines/aws/index.d.ts.map +1 -0
  146. package/dist/plugins/pipelines/aws/index.js +346 -0
  147. package/dist/plugins/pipelines/aws/index.js.map +1 -0
  148. package/dist/plugins/pipelines/aws/prod.d.ts +19 -0
  149. package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -0
  150. package/dist/plugins/pipelines/aws/prod.js +362 -0
  151. package/dist/plugins/pipelines/aws/prod.js.map +1 -0
  152. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +7 -0
  153. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -0
  154. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +31 -0
  155. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -0
  156. package/dist/plugins/pipelines/aws/scanfix/config.d.ts +7 -0
  157. package/dist/plugins/pipelines/aws/scanfix/config.d.ts.map +1 -0
  158. package/dist/plugins/pipelines/aws/scanfix/config.js +134 -0
  159. package/dist/plugins/pipelines/aws/scanfix/config.js.map +1 -0
  160. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +65 -0
  161. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +1 -0
  162. package/dist/plugins/pipelines/factiii/github-secrets-store.js +221 -0
  163. package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +1 -0
  164. package/dist/plugins/pipelines/factiii/index.d.ts +195 -0
  165. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -0
  166. package/dist/plugins/pipelines/factiii/index.js +862 -0
  167. package/dist/plugins/pipelines/factiii/index.js.map +1 -0
  168. package/dist/plugins/pipelines/factiii/prod.d.ts +17 -0
  169. package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -0
  170. package/dist/plugins/pipelines/factiii/prod.js +282 -0
  171. package/dist/plugins/pipelines/factiii/prod.js.map +1 -0
  172. package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +7 -0
  173. package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -0
  174. package/dist/plugins/pipelines/factiii/scanfix/config.js +80 -0
  175. package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -0
  176. package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts +7 -0
  177. package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts.map +1 -0
  178. package/dist/plugins/pipelines/factiii/scanfix/github-cli.js +43 -0
  179. package/dist/plugins/pipelines/factiii/scanfix/github-cli.js.map +1 -0
  180. package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts +7 -0
  181. package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -0
  182. package/dist/plugins/pipelines/factiii/scanfix/secrets.js +237 -0
  183. package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -0
  184. package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts +7 -0
  185. package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -0
  186. package/dist/plugins/pipelines/factiii/scanfix/workflows.js +169 -0
  187. package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -0
  188. package/dist/plugins/pipelines/factiii/staging.d.ts +25 -0
  189. package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -0
  190. package/dist/plugins/pipelines/factiii/staging.js +223 -0
  191. package/dist/plugins/pipelines/factiii/staging.js.map +1 -0
  192. package/dist/plugins/pipelines/factiii/utils/detection.d.ts +36 -0
  193. package/dist/plugins/pipelines/factiii/utils/detection.d.ts.map +1 -0
  194. package/dist/plugins/pipelines/factiii/utils/detection.js +140 -0
  195. package/dist/plugins/pipelines/factiii/utils/detection.js.map +1 -0
  196. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +16 -0
  197. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -0
  198. package/dist/plugins/pipelines/factiii/utils/workflows.js +129 -0
  199. package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -0
  200. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +112 -0
  201. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +112 -0
  202. package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +130 -0
  203. package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +198 -0
  204. package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +179 -0
  205. package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +176 -0
  206. package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +176 -0
  207. package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +95 -0
  208. package/dist/plugins/servers/amazon-linux/index.d.ts +93 -0
  209. package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -0
  210. package/dist/plugins/servers/amazon-linux/index.js +217 -0
  211. package/dist/plugins/servers/amazon-linux/index.js.map +1 -0
  212. package/dist/plugins/servers/mac/dev.d.ts +10 -0
  213. package/dist/plugins/servers/mac/dev.d.ts.map +1 -0
  214. package/dist/plugins/servers/mac/dev.js +71 -0
  215. package/dist/plugins/servers/mac/dev.js.map +1 -0
  216. package/dist/plugins/servers/mac/index.d.ts +101 -0
  217. package/dist/plugins/servers/mac/index.d.ts.map +1 -0
  218. package/dist/plugins/servers/mac/index.js +257 -0
  219. package/dist/plugins/servers/mac/index.js.map +1 -0
  220. package/dist/plugins/servers/mac/scanfix/config.d.ts +7 -0
  221. package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -0
  222. package/dist/plugins/servers/mac/scanfix/config.js +168 -0
  223. package/dist/plugins/servers/mac/scanfix/config.js.map +1 -0
  224. package/dist/plugins/servers/mac/scanfix/containers.d.ts +7 -0
  225. package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -0
  226. package/dist/plugins/servers/mac/scanfix/containers.js +167 -0
  227. package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -0
  228. package/dist/plugins/servers/mac/scanfix/system.d.ts +7 -0
  229. package/dist/plugins/servers/mac/scanfix/system.d.ts.map +1 -0
  230. package/dist/plugins/servers/mac/scanfix/system.js +144 -0
  231. package/dist/plugins/servers/mac/scanfix/system.js.map +1 -0
  232. package/dist/plugins/servers/mac/staging.d.ts +21 -0
  233. package/dist/plugins/servers/mac/staging.d.ts.map +1 -0
  234. package/dist/plugins/servers/mac/staging.js +708 -0
  235. package/dist/plugins/servers/mac/staging.js.map +1 -0
  236. package/dist/plugins/servers/ubuntu/index.d.ts +93 -0
  237. package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -0
  238. package/dist/plugins/servers/ubuntu/index.js +224 -0
  239. package/dist/plugins/servers/ubuntu/index.js.map +1 -0
  240. package/dist/plugins/servers/windows/index.d.ts +90 -0
  241. package/dist/plugins/servers/windows/index.d.ts.map +1 -0
  242. package/dist/plugins/servers/windows/index.js +205 -0
  243. package/dist/plugins/servers/windows/index.js.map +1 -0
  244. package/dist/scanfix/commands/index.d.ts +27 -0
  245. package/dist/scanfix/commands/index.d.ts.map +1 -0
  246. package/dist/scanfix/commands/index.js +97 -0
  247. package/dist/scanfix/commands/index.js.map +1 -0
  248. package/dist/scanfix/commands/mac.d.ts +11 -0
  249. package/dist/scanfix/commands/mac.d.ts.map +1 -0
  250. package/dist/scanfix/commands/mac.js +31 -0
  251. package/dist/scanfix/commands/mac.js.map +1 -0
  252. package/dist/scanfix/commands/ubuntu.d.ts +11 -0
  253. package/dist/scanfix/commands/ubuntu.d.ts.map +1 -0
  254. package/dist/scanfix/commands/ubuntu.js +30 -0
  255. package/dist/scanfix/commands/ubuntu.js.map +1 -0
  256. package/dist/scanfix/fixes/certbot.d.ts +25 -0
  257. package/dist/scanfix/fixes/certbot.d.ts.map +1 -0
  258. package/dist/scanfix/fixes/certbot.js +136 -0
  259. package/dist/scanfix/fixes/certbot.js.map +1 -0
  260. package/dist/scanfix/fixes/docker.d.ts +29 -0
  261. package/dist/scanfix/fixes/docker.d.ts.map +1 -0
  262. package/dist/scanfix/fixes/docker.js +149 -0
  263. package/dist/scanfix/fixes/docker.js.map +1 -0
  264. package/dist/scanfix/fixes/git.d.ts +20 -0
  265. package/dist/scanfix/fixes/git.d.ts.map +1 -0
  266. package/dist/scanfix/fixes/git.js +71 -0
  267. package/dist/scanfix/fixes/git.js.map +1 -0
  268. package/dist/scanfix/fixes/index.d.ts +11 -0
  269. package/dist/scanfix/fixes/index.d.ts.map +1 -0
  270. package/dist/scanfix/fixes/index.js +27 -0
  271. package/dist/scanfix/fixes/index.js.map +1 -0
  272. package/dist/scanfix/fixes/node.d.ts +20 -0
  273. package/dist/scanfix/fixes/node.d.ts.map +1 -0
  274. package/dist/scanfix/fixes/node.js +71 -0
  275. package/dist/scanfix/fixes/node.js.map +1 -0
  276. package/dist/scanfix/fixes/pnpm.d.ts +20 -0
  277. package/dist/scanfix/fixes/pnpm.d.ts.map +1 -0
  278. package/dist/scanfix/fixes/pnpm.js +122 -0
  279. package/dist/scanfix/fixes/pnpm.js.map +1 -0
  280. package/dist/scanfix/index.d.ts +23 -0
  281. package/dist/scanfix/index.d.ts.map +1 -0
  282. package/dist/scanfix/index.js +44 -0
  283. package/dist/scanfix/index.js.map +1 -0
  284. package/dist/scanfix/platform.d.ts +20 -0
  285. package/dist/scanfix/platform.d.ts.map +1 -0
  286. package/dist/scanfix/platform.js +48 -0
  287. package/dist/scanfix/platform.js.map +1 -0
  288. package/dist/scanfix/ssl-cert-helper.d.ts +27 -0
  289. package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -0
  290. package/dist/scanfix/ssl-cert-helper.js +117 -0
  291. package/dist/scanfix/ssl-cert-helper.js.map +1 -0
  292. package/dist/scanfix/types.d.ts +27 -0
  293. package/dist/scanfix/types.d.ts.map +1 -0
  294. package/dist/scanfix/types.js +8 -0
  295. package/dist/scanfix/types.js.map +1 -0
  296. package/dist/scripts/check-existing-secrets.d.ts +6 -0
  297. package/dist/scripts/check-existing-secrets.d.ts.map +1 -0
  298. package/dist/scripts/check-existing-secrets.js +86 -0
  299. package/dist/scripts/check-existing-secrets.js.map +1 -0
  300. package/dist/scripts/generate-all.d.ts +40 -0
  301. package/dist/scripts/generate-all.d.ts.map +1 -0
  302. package/dist/scripts/generate-all.js +373 -0
  303. package/dist/scripts/generate-all.js.map +1 -0
  304. package/dist/scripts/get-repo-name.d.ts +6 -0
  305. package/dist/scripts/get-repo-name.d.ts.map +1 -0
  306. package/dist/scripts/get-repo-name.js +54 -0
  307. package/dist/scripts/get-repo-name.js.map +1 -0
  308. package/dist/scripts/index.d.ts +7 -0
  309. package/dist/scripts/index.d.ts.map +1 -0
  310. package/dist/scripts/index.js +14 -0
  311. package/dist/scripts/index.js.map +1 -0
  312. package/dist/scripts/validate-env-files.d.ts +6 -0
  313. package/dist/scripts/validate-env-files.d.ts.map +1 -0
  314. package/dist/scripts/validate-env-files.js +126 -0
  315. package/dist/scripts/validate-env-files.js.map +1 -0
  316. package/dist/scripts/validate-example-values.d.ts +8 -0
  317. package/dist/scripts/validate-example-values.d.ts.map +1 -0
  318. package/dist/scripts/validate-example-values.js +88 -0
  319. package/dist/scripts/validate-example-values.js.map +1 -0
  320. package/dist/scripts/validate-factiii-yml.d.ts +6 -0
  321. package/dist/scripts/validate-factiii-yml.d.ts.map +1 -0
  322. package/dist/scripts/validate-factiii-yml.js +71 -0
  323. package/dist/scripts/validate-factiii-yml.js.map +1 -0
  324. package/dist/types/cli.d.ts +138 -0
  325. package/dist/types/cli.d.ts.map +1 -0
  326. package/dist/types/cli.js +8 -0
  327. package/dist/types/cli.js.map +1 -0
  328. package/dist/types/config.d.ts +113 -0
  329. package/dist/types/config.d.ts.map +1 -0
  330. package/dist/types/config.js +8 -0
  331. package/dist/types/config.js.map +1 -0
  332. package/dist/types/index.d.ts +9 -0
  333. package/dist/types/index.d.ts.map +1 -0
  334. package/dist/types/index.js +25 -0
  335. package/dist/types/index.js.map +1 -0
  336. package/dist/types/plugin.d.ts +352 -0
  337. package/dist/types/plugin.d.ts.map +1 -0
  338. package/dist/types/plugin.js +8 -0
  339. package/dist/types/plugin.js.map +1 -0
  340. package/dist/utils/ansible-vault-secrets.d.ts +95 -0
  341. package/dist/utils/ansible-vault-secrets.d.ts.map +1 -0
  342. package/dist/utils/ansible-vault-secrets.js +406 -0
  343. package/dist/utils/ansible-vault-secrets.js.map +1 -0
  344. package/dist/utils/config-helpers.d.ts +72 -0
  345. package/dist/utils/config-helpers.d.ts.map +1 -0
  346. package/dist/utils/config-helpers.js +171 -0
  347. package/dist/utils/config-helpers.js.map +1 -0
  348. package/dist/utils/config-schema.d.ts +17 -0
  349. package/dist/utils/config-schema.d.ts.map +1 -0
  350. package/dist/utils/config-schema.js +100 -0
  351. package/dist/utils/config-schema.js.map +1 -0
  352. package/dist/utils/config-validator.d.ts +29 -0
  353. package/dist/utils/config-validator.d.ts.map +1 -0
  354. package/dist/utils/config-validator.js +146 -0
  355. package/dist/utils/config-validator.js.map +1 -0
  356. package/dist/utils/deployment-report.d.ts +100 -0
  357. package/dist/utils/deployment-report.d.ts.map +1 -0
  358. package/dist/utils/deployment-report.js +225 -0
  359. package/dist/utils/deployment-report.js.map +1 -0
  360. package/dist/utils/dns-validator.d.ts +19 -0
  361. package/dist/utils/dns-validator.d.ts.map +1 -0
  362. package/dist/utils/dns-validator.js +94 -0
  363. package/dist/utils/dns-validator.js.map +1 -0
  364. package/dist/utils/env-validator.d.ts +108 -0
  365. package/dist/utils/env-validator.d.ts.map +1 -0
  366. package/dist/utils/env-validator.js +342 -0
  367. package/dist/utils/env-validator.js.map +1 -0
  368. package/dist/utils/github-workflow-monitor.d.ts +49 -0
  369. package/dist/utils/github-workflow-monitor.d.ts.map +1 -0
  370. package/dist/utils/github-workflow-monitor.js +145 -0
  371. package/dist/utils/github-workflow-monitor.js.map +1 -0
  372. package/dist/utils/index.d.ts +18 -0
  373. package/dist/utils/index.d.ts.map +1 -0
  374. package/dist/utils/index.js +48 -0
  375. package/dist/utils/index.js.map +1 -0
  376. package/dist/utils/secret-prompts.d.ts +67 -0
  377. package/dist/utils/secret-prompts.d.ts.map +1 -0
  378. package/dist/utils/secret-prompts.js +369 -0
  379. package/dist/utils/secret-prompts.js.map +1 -0
  380. package/dist/utils/server-check.d.ts +43 -0
  381. package/dist/utils/server-check.d.ts.map +1 -0
  382. package/dist/utils/server-check.js +397 -0
  383. package/dist/utils/server-check.js.map +1 -0
  384. package/dist/utils/ssh-deploy.d.ts +70 -0
  385. package/dist/utils/ssh-deploy.d.ts.map +1 -0
  386. package/dist/utils/ssh-deploy.js +268 -0
  387. package/dist/utils/ssh-deploy.js.map +1 -0
  388. package/dist/utils/ssh-helper.d.ts +40 -0
  389. package/dist/utils/ssh-helper.d.ts.map +1 -0
  390. package/dist/utils/ssh-helper.js +221 -0
  391. package/dist/utils/ssh-helper.js.map +1 -0
  392. package/dist/utils/template-generator.d.ts +42 -0
  393. package/dist/utils/template-generator.d.ts.map +1 -0
  394. package/dist/utils/template-generator.js +223 -0
  395. package/dist/utils/template-generator.js.map +1 -0
  396. package/dist/utils/version-check.d.ts +69 -0
  397. package/dist/utils/version-check.d.ts.map +1 -0
  398. package/dist/utils/version-check.js +211 -0
  399. package/dist/utils/version-check.js.map +1 -0
  400. package/package.json +82 -0
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ /**
3
+ * Template Generator
4
+ *
5
+ * Generates template files for environment configuration.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.generateEnvExampleTemplate = generateEnvExampleTemplate;
42
+ exports.generateEnvTemplate = generateEnvTemplate;
43
+ exports.createEnvTemplates = createEnvTemplates;
44
+ exports.generateSecretsChecklist = generateSecretsChecklist;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const env_validator_js_1 = require("./env-validator.js");
48
+ /**
49
+ * Generate .env.example template file content
50
+ * @param config - Parsed factiii.yml configuration
51
+ */
52
+ function generateEnvExampleTemplate(config) {
53
+ const repoName = config.name ?? 'myapp';
54
+ const template = `# .env.example - Environment variable template
55
+ # This file defines all required environment variables across environments.
56
+ # Values are descriptive examples - replace with real values in .env.staging and .env.prod
57
+ # This file is committed to git as a template.
58
+
59
+ # === Application Settings ===
60
+ NODE_ENV=development
61
+ PORT=3000
62
+
63
+ # === Database ===
64
+ # PostgreSQL connection string format
65
+ DATABASE_URL=postgresql://EXAMPLE-user:EXAMPLE-password@localhost:5432/EXAMPLE-${repoName}-dev
66
+
67
+ # === Authentication ===
68
+ # 256-bit secret key for JWT signing
69
+ JWT_SECRET=EXAMPLE-your-256-bit-secret-key-here
70
+ JWT_EXPIRES_IN=7d
71
+
72
+ # === External APIs (if needed) ===
73
+ # OPENAI_API_KEY=EXAMPLE-sk-proj-abc123xyz789
74
+ # STRIPE_SECRET_KEY=EXAMPLE-sk_test_51ABC123xyz
75
+ # STRIPE_PUBLISHABLE_KEY=EXAMPLE-pk_test_51ABC123xyz
76
+
77
+ # === AWS Configuration (if using S3, SES, etc) ===
78
+ # AWS_ACCESS_KEY_ID=EXAMPLE-AKIAIOSFODNN7EXAMPLE
79
+ # AWS_SECRET_ACCESS_KEY=EXAMPLE-wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
80
+ # AWS_REGION=EXAMPLE-us-east-1
81
+ # AWS_BUCKET_NAME=EXAMPLE-${repoName}-assets
82
+
83
+ # === Email Configuration (if using SMTP) ===
84
+ # SMTP_HOST=EXAMPLE-smtp.gmail.com
85
+ # SMTP_PORT=587
86
+ # SMTP_USER=EXAMPLE-noreply@yourdomain.com
87
+ # SMTP_PASSWORD=EXAMPLE-your-app-password
88
+
89
+ # === Application URLs ===
90
+ # FRONTEND_URL=EXAMPLE-http://localhost:3000
91
+ # API_URL=EXAMPLE-http://localhost:3001
92
+
93
+ # === Application-specific settings ===
94
+ # Add your custom environment variables below
95
+ `;
96
+ return template;
97
+ }
98
+ /**
99
+ * Generate .env template file content for staging/prod
100
+ * Copies structure from .env.example with placeholder values
101
+ * @param environment - 'staging' or 'prod'
102
+ * @param devEnv - Parsed .env.example key-value pairs
103
+ */
104
+ function generateEnvTemplate(environment, devEnv) {
105
+ const envUpper = environment.toUpperCase();
106
+ let template = `# .env.${environment} - ${envUpper} environment variables
107
+ # Fill in all values below. Keys must match .env.example
108
+ # This file should ${environment === 'prod' ? 'ALWAYS' : 'optionally'} be in .gitignore
109
+
110
+ `;
111
+ // Copy keys from .env.example with placeholder values
112
+ for (const key of Object.keys(devEnv)) {
113
+ const devValue = devEnv[key];
114
+ // If dev value is not an example, use it as a guide
115
+ if (devValue && !devValue.includes('EXAMPLE')) {
116
+ template += `${key}=${devValue}\n`;
117
+ }
118
+ else {
119
+ // Use placeholder
120
+ template += `${key}=<FILL_IN>\n`;
121
+ }
122
+ }
123
+ template += `
124
+ # Instructions:
125
+ # 1. Replace all <FILL_IN> values with real ${environment} values
126
+ # 2. Ensure all keys match .env.example
127
+ # 3. Run: npx factiii (to validate)
128
+ `;
129
+ return template;
130
+ }
131
+ /**
132
+ * Create .env template files if they don't exist
133
+ * @param rootDir - Repository root directory
134
+ * @param config - Parsed factiii.yml configuration
135
+ */
136
+ function createEnvTemplates(rootDir, config) {
137
+ const result = {
138
+ created: [],
139
+ skipped: [],
140
+ errors: [],
141
+ };
142
+ // Create .env.example first (template)
143
+ const devPath = path.join(rootDir, '.env.example');
144
+ try {
145
+ if (fs.existsSync(devPath)) {
146
+ result.skipped.push('.env.example');
147
+ }
148
+ else {
149
+ const devTemplate = generateEnvExampleTemplate(config);
150
+ fs.writeFileSync(devPath, devTemplate, 'utf8');
151
+ result.created.push('.env.example');
152
+ }
153
+ }
154
+ catch (error) {
155
+ result.errors.push({
156
+ file: '.env.example',
157
+ error: error instanceof Error ? error.message : String(error),
158
+ });
159
+ // Can't create staging/prod without example template
160
+ return result;
161
+ }
162
+ // Parse .env.example to use as template for staging/prod
163
+ const devEnv = (0, env_validator_js_1.parseEnvFile)(devPath);
164
+ if (!devEnv) {
165
+ result.errors.push({
166
+ file: 'staging/prod',
167
+ error: 'Could not parse .env.example to generate templates',
168
+ });
169
+ return result;
170
+ }
171
+ // Create staging and prod templates based on example
172
+ const environments = ['staging', 'prod'];
173
+ for (const env of environments) {
174
+ const filename = `.env.${env}`;
175
+ const filepath = path.join(rootDir, filename);
176
+ try {
177
+ // Check if file already exists
178
+ if (fs.existsSync(filepath)) {
179
+ result.skipped.push(filename);
180
+ continue;
181
+ }
182
+ // Generate and write template based on .env.example
183
+ const template = generateEnvTemplate(env, devEnv);
184
+ fs.writeFileSync(filepath, template, 'utf8');
185
+ result.created.push(filename);
186
+ }
187
+ catch (error) {
188
+ result.errors.push({
189
+ file: filename,
190
+ error: error instanceof Error ? error.message : String(error),
191
+ });
192
+ }
193
+ }
194
+ return result;
195
+ }
196
+ /**
197
+ * Generate secrets checklist for display
198
+ */
199
+ function generateSecretsChecklist() {
200
+ return `
201
+ REQUIRED GitHub Secrets (minimal):
202
+ ───────────────────────────────────────────────────────
203
+ □ STAGING_SSH - SSH private key for staging
204
+ □ PROD_SSH - SSH private key for production
205
+ □ AWS_SECRET_ACCESS_KEY - AWS secret key (only secret AWS value)
206
+
207
+ OPTIONAL GitHub Secrets:
208
+ ───────────────────────────────────────────────────────
209
+ □ STAGING_ENVS - Environment vars from .env.staging
210
+ □ PROD_ENVS - Environment vars from .env.prod
211
+
212
+ NOT SECRETS (in factiii.yml):
213
+ ───────────────────────────────────────────────────────
214
+ ✓ environments.{env}.host - Server IP/hostname
215
+ ✓ aws.access_key_id - AWS access key ID
216
+ ✓ aws.region - AWS region (e.g., us-east-1)
217
+
218
+ NOT SECRETS (in factiiiAuto.yml):
219
+ ───────────────────────────────────────────────────────
220
+ ✓ ssh_user - Defaults to ubuntu
221
+ `.trim();
222
+ }
223
+ //# sourceMappingURL=template-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-generator.js","sourceRoot":"","sources":["../../src/utils/template-generator.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BH,gEA+CC;AAQD,kDA8BC;AAOD,gDAmEC;AAKD,4DAuBC;AApND,uCAAyB;AACzB,2CAA6B;AAE7B,yDAAkD;AAkBlD;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,MAAqB;IAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC;IAExC,MAAM,QAAQ,GAAG;;;;;;;;;;;iFAW8D,QAAQ;;;;;;;;;;;;;;;;4BAgB7D,QAAQ;;;;;;;;;;;;;;CAcnC,CAAC;IAEA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,WAAmB,EAAE,MAAe;IACtE,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAE3C,IAAI,QAAQ,GAAG,UAAU,WAAW,MAAM,QAAQ;;qBAE/B,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;;CAEpE,CAAC;IAEA,sDAAsD;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7B,oDAAoD;QACpD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,QAAQ,IAAI,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,QAAQ,IAAI,GAAG,GAAG,cAAc,CAAC;QACnC,CAAC;IACH,CAAC;IAED,QAAQ,IAAI;;8CAEgC,WAAW;;;CAGxD,CAAC;IAEA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAChC,OAAe,EACf,MAAqB;IAErB,MAAM,MAAM,GAA2B;QACrC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACvD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;QACH,qDAAqD;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAG,IAAA,+BAAY,EAAC,OAAO,CAAC,CAAC;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,oDAAoD;SAC5D,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,+BAA+B;YAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,oDAAoD;YACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAClD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Version Check Utilities
3
+ *
4
+ * Utilities for checking and comparing package versions.
5
+ */
6
+ interface ParsedVersion {
7
+ major: number;
8
+ minor: number;
9
+ patch: number;
10
+ }
11
+ interface FactiiiAutoVersion {
12
+ factiii_version: string | null;
13
+ factiii_min_version: string | null;
14
+ }
15
+ interface VersionCompatibility {
16
+ compatible: boolean;
17
+ currentVersion: string;
18
+ configVersion: string | null;
19
+ minVersion: string | null;
20
+ needsUpgrade: boolean;
21
+ isBreaking: boolean;
22
+ message: string;
23
+ }
24
+ /**
25
+ * Get current Factiii package version
26
+ */
27
+ export declare function getFactiiiVersion(): string;
28
+ /**
29
+ * Parse semantic version string
30
+ * @param version - Version string (e.g., "1.2.3")
31
+ */
32
+ export declare function parseVersion(version: string): ParsedVersion | null;
33
+ /**
34
+ * Compare two versions
35
+ * @param a - First version
36
+ * @param b - Second version
37
+ * @returns Negative if a < b, 0 if equal, positive if a > b
38
+ */
39
+ export declare function compareVersions(a: string, b: string): number;
40
+ /**
41
+ * Check if version a is compatible with minimum version b
42
+ * @param current - Current version
43
+ * @param minimum - Minimum required version
44
+ */
45
+ export declare function isCompatible(current: string, minimum: string): boolean;
46
+ /**
47
+ * Check if upgrade from a to b is a breaking change (major version bump)
48
+ * @param from - Original version
49
+ * @param to - Target version
50
+ */
51
+ export declare function isBreakingUpgrade(from: string, to: string): boolean;
52
+ /**
53
+ * Read version info from factiiiAuto.yml
54
+ * @param rootDir - Project root directory
55
+ */
56
+ export declare function readFactiiiAutoVersion(rootDir: string): FactiiiAutoVersion;
57
+ /**
58
+ * Check version compatibility and return status
59
+ * @param rootDir - Project root directory
60
+ */
61
+ export declare function checkVersionCompatibility(rootDir: string): VersionCompatibility;
62
+ /**
63
+ * Display version warning if needed
64
+ * @param rootDir - Project root directory
65
+ * @returns True if warning was displayed
66
+ */
67
+ export declare function displayVersionWarning(rootDir: string): boolean;
68
+ export {};
69
+ //# sourceMappingURL=version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAkB;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAWlE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAMnE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAoB1E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA2C/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuB9D"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * Version Check Utilities
4
+ *
5
+ * Utilities for checking and comparing package versions.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.getFactiiiVersion = getFactiiiVersion;
45
+ exports.parseVersion = parseVersion;
46
+ exports.compareVersions = compareVersions;
47
+ exports.isCompatible = isCompatible;
48
+ exports.isBreakingUpgrade = isBreakingUpgrade;
49
+ exports.readFactiiiAutoVersion = readFactiiiAutoVersion;
50
+ exports.checkVersionCompatibility = checkVersionCompatibility;
51
+ exports.displayVersionWarning = displayVersionWarning;
52
+ const fs = __importStar(require("fs"));
53
+ const path = __importStar(require("path"));
54
+ const js_yaml_1 = __importDefault(require("js-yaml"));
55
+ /**
56
+ * Get current Factiii package version
57
+ */
58
+ function getFactiiiVersion() {
59
+ try {
60
+ const packageJsonPath = path.join(__dirname, '../../package.json');
61
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
62
+ return pkg.version ?? '1.0.0';
63
+ }
64
+ catch {
65
+ return '1.0.0';
66
+ }
67
+ }
68
+ /**
69
+ * Parse semantic version string
70
+ * @param version - Version string (e.g., "1.2.3")
71
+ */
72
+ function parseVersion(version) {
73
+ if (!version)
74
+ return null;
75
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)/);
76
+ if (!match)
77
+ return null;
78
+ return {
79
+ major: parseInt(match[1] ?? '0', 10),
80
+ minor: parseInt(match[2] ?? '0', 10),
81
+ patch: parseInt(match[3] ?? '0', 10),
82
+ };
83
+ }
84
+ /**
85
+ * Compare two versions
86
+ * @param a - First version
87
+ * @param b - Second version
88
+ * @returns Negative if a < b, 0 if equal, positive if a > b
89
+ */
90
+ function compareVersions(a, b) {
91
+ const vA = parseVersion(a);
92
+ const vB = parseVersion(b);
93
+ if (!vA || !vB)
94
+ return 0;
95
+ if (vA.major !== vB.major)
96
+ return vA.major - vB.major;
97
+ if (vA.minor !== vB.minor)
98
+ return vA.minor - vB.minor;
99
+ return vA.patch - vB.patch;
100
+ }
101
+ /**
102
+ * Check if version a is compatible with minimum version b
103
+ * @param current - Current version
104
+ * @param minimum - Minimum required version
105
+ */
106
+ function isCompatible(current, minimum) {
107
+ return compareVersions(current, minimum) >= 0;
108
+ }
109
+ /**
110
+ * Check if upgrade from a to b is a breaking change (major version bump)
111
+ * @param from - Original version
112
+ * @param to - Target version
113
+ */
114
+ function isBreakingUpgrade(from, to) {
115
+ const vFrom = parseVersion(from);
116
+ const vTo = parseVersion(to);
117
+ if (!vFrom || !vTo)
118
+ return false;
119
+ return vTo.major > vFrom.major;
120
+ }
121
+ /**
122
+ * Read version info from factiiiAuto.yml
123
+ * @param rootDir - Project root directory
124
+ */
125
+ function readFactiiiAutoVersion(rootDir) {
126
+ const factiiiAutoPath = path.join(rootDir, 'factiiiAuto.yml');
127
+ if (!fs.existsSync(factiiiAutoPath)) {
128
+ return { factiii_version: null, factiii_min_version: null };
129
+ }
130
+ try {
131
+ const content = fs.readFileSync(factiiiAutoPath, 'utf8');
132
+ const config = js_yaml_1.default.load(content);
133
+ return {
134
+ factiii_version: config?.factiii_version ?? null,
135
+ factiii_min_version: config?.factiii_min_version ?? null,
136
+ };
137
+ }
138
+ catch {
139
+ return { factiii_version: null, factiii_min_version: null };
140
+ }
141
+ }
142
+ /**
143
+ * Check version compatibility and return status
144
+ * @param rootDir - Project root directory
145
+ */
146
+ function checkVersionCompatibility(rootDir) {
147
+ const currentVersion = getFactiiiVersion();
148
+ const { factiii_version, factiii_min_version } = readFactiiiAutoVersion(rootDir);
149
+ const result = {
150
+ compatible: true,
151
+ currentVersion,
152
+ configVersion: factiii_version,
153
+ minVersion: factiii_min_version,
154
+ needsUpgrade: false,
155
+ isBreaking: false,
156
+ message: '',
157
+ };
158
+ // No version info in factiiiAuto.yml (legacy or first run)
159
+ if (!factiii_version) {
160
+ result.needsUpgrade = true;
161
+ result.message = 'No version info in factiiiAuto.yml. Run: npx factiii upgrade';
162
+ return result;
163
+ }
164
+ // Check if current version meets minimum requirement
165
+ if (factiii_min_version && !isCompatible(currentVersion, factiii_min_version)) {
166
+ result.compatible = false;
167
+ result.message = `Factiii version ${currentVersion} is below minimum required ${factiii_min_version}`;
168
+ return result;
169
+ }
170
+ // Check if versions match
171
+ if (compareVersions(currentVersion, factiii_version) !== 0) {
172
+ result.needsUpgrade = true;
173
+ result.isBreaking = isBreakingUpgrade(factiii_version, currentVersion);
174
+ if (result.isBreaking) {
175
+ result.message = `Major version change: ${factiii_version} → ${currentVersion}. Run: npx factiii upgrade`;
176
+ }
177
+ else {
178
+ result.message = `Version mismatch: config=${factiii_version}, installed=${currentVersion}. Run: npx factiii upgrade`;
179
+ }
180
+ return result;
181
+ }
182
+ result.message = 'Version compatible';
183
+ return result;
184
+ }
185
+ /**
186
+ * Display version warning if needed
187
+ * @param rootDir - Project root directory
188
+ * @returns True if warning was displayed
189
+ */
190
+ function displayVersionWarning(rootDir) {
191
+ const status = checkVersionCompatibility(rootDir);
192
+ if (!status.compatible) {
193
+ console.log('');
194
+ console.log('[!] VERSION INCOMPATIBILITY');
195
+ console.log(` ${status.message}`);
196
+ console.log('');
197
+ return true;
198
+ }
199
+ if (status.needsUpgrade) {
200
+ console.log('');
201
+ console.log('Version Update Available');
202
+ console.log(` ${status.message}`);
203
+ if (status.isBreaking) {
204
+ console.log(' [!] This is a major version change - check CHANGELOG.md');
205
+ }
206
+ console.log('');
207
+ return true;
208
+ }
209
+ return false;
210
+ }
211
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@factiii/stack",
3
+ "version": "0.1.2",
4
+ "description": "Infrastructure management package for deploying services to servers",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "factiii": "./bin/factiii"
9
+ },
10
+ "files": [
11
+ "bin/",
12
+ "dist/"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsc && npm run copy-assets",
16
+ "build:watch": "tsc --watch",
17
+ "clean": "node -e \"const fs=require('fs');if(fs.existsSync('dist'))fs.rmSync('dist',{recursive:true,force:true})\"",
18
+ "copy-assets": "node -e \"const fs=require('fs'),p=require('path');fs.cpSync('src/plugins/approved.json','dist/plugins/approved.json');const d='dist/plugins/pipelines/factiii/workflows';fs.mkdirSync(d,{recursive:true});for(const f of fs.readdirSync('src/plugins/pipelines/factiii/workflows').filter(f=>f.endsWith('.yml')))fs.cpSync(p.join('src/plugins/pipelines/factiii/workflows',f),p.join(d,f))\"",
19
+ "prebuild": "npm run clean",
20
+ "prepublish-check": "node -e \"const v=require('./package.json').version; if(v.includes('-d')){console.error('❌ Cannot publish dev version:',v); process.exit(1)}\"",
21
+ "prepublishOnly": "npm run prepublish-check && npm run build",
22
+ "test": "jest",
23
+ "test:watch": "jest --watch",
24
+ "test:coverage": "jest --coverage",
25
+ "typecheck": "tsc --noEmit"
26
+ },
27
+ "keywords": [
28
+ "infrastructure",
29
+ "deployment",
30
+ "docker",
31
+ "nginx"
32
+ ],
33
+ "author": "",
34
+ "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "https://github.com/factiii/core.git"
38
+ },
39
+ "publishConfig": {
40
+ "registry": "https://npm.pkg.github.com"
41
+ },
42
+ "dependencies": {
43
+ "@octokit/rest": "^20.0.2",
44
+ "commander": "^11.1.0",
45
+ "js-yaml": "^4.1.1",
46
+ "libsodium-wrappers": "^0.7.11"
47
+ },
48
+ "devDependencies": {
49
+ "@types/jest": "^30.0.0",
50
+ "@types/js-yaml": "^4.0.9",
51
+ "@types/node": "^25.0.3",
52
+ "jest": "^29.7.0",
53
+ "ts-jest": "^29.4.6",
54
+ "ts-node": "^10.9.2",
55
+ "typescript": "^5.9.3"
56
+ },
57
+ "jest": {
58
+ "preset": "ts-jest",
59
+ "testEnvironment": "node",
60
+ "testMatch": [
61
+ "**/test/**/*.test.ts"
62
+ ],
63
+ "moduleNameMapper": {
64
+ "^(\\.{1,2}/.*)\\.js$": "$1"
65
+ },
66
+ "collectCoverageFrom": [
67
+ "src/**/*.ts",
68
+ "!**/node_modules/**"
69
+ ],
70
+ "coverageThreshold": {
71
+ "global": {
72
+ "branches": 70,
73
+ "functions": 70,
74
+ "lines": 70,
75
+ "statements": 70
76
+ }
77
+ }
78
+ },
79
+ "engines": {
80
+ "node": ">=18.0.0"
81
+ }
82
+ }