@mtndev/cli 0.0.0-dev-20260626045346 → 0.0.0-dev-20260914234436

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 (331) hide show
  1. package/CHANGELOG.md +86 -1
  2. package/cjs/__chunks/2FSYDFUV.cjs +146 -0
  3. package/cjs/__chunks/3A5ZYU5M.cjs +105 -0
  4. package/cjs/__chunks/3NOHGUCF.cjs +9 -0
  5. package/cjs/__chunks/3T2LXW7J.cjs +387 -0
  6. package/cjs/__chunks/4XT5JEAS.cjs +1 -0
  7. package/cjs/__chunks/AZEB4H4I.cjs +208 -0
  8. package/cjs/__chunks/B5ENMOCD.cjs +288 -0
  9. package/cjs/__chunks/B6XM5KSF.cjs +338 -0
  10. package/cjs/__chunks/BDU2UCE5.cjs +1 -0
  11. package/cjs/__chunks/BLMSMR5E.cjs +46 -0
  12. package/cjs/__chunks/CMUD7LLN.cjs +47 -0
  13. package/cjs/__chunks/DTQ2LB3I.cjs +49 -0
  14. package/cjs/__chunks/FM5MVRQF.cjs +23 -0
  15. package/cjs/__chunks/FRHST54J.cjs +135 -0
  16. package/cjs/__chunks/FU4VP2LN.cjs +1 -0
  17. package/cjs/__chunks/G5K4PVIL.cjs +26 -0
  18. package/cjs/__chunks/{NSRFG4DF.cjs → GU3R54MK.cjs} +45 -18
  19. package/cjs/__chunks/GUL36IFZ.cjs +61 -0
  20. package/cjs/__chunks/GZMTNK5N.cjs +1 -0
  21. package/cjs/__chunks/H74JSDBU.cjs +30 -0
  22. package/cjs/__chunks/{EMMC33QA.cjs → JB7T7PKQ.cjs} +170 -33
  23. package/cjs/__chunks/JSL2JDMW.cjs +1 -0
  24. package/cjs/__chunks/K4QNHRTP.cjs +163 -0
  25. package/cjs/__chunks/KU76LC42.cjs +192 -0
  26. package/cjs/__chunks/LFDSHANP.cjs +34 -0
  27. package/cjs/__chunks/LHE24ECK.cjs +192 -0
  28. package/cjs/__chunks/LIKQ3SI4.cjs +1 -0
  29. package/cjs/__chunks/LXDF5QVZ.cjs +313 -0
  30. package/cjs/__chunks/LXOOJR2R.cjs +74 -0
  31. package/cjs/__chunks/N5MXFOQZ.cjs +167 -0
  32. package/cjs/__chunks/N7D56LPP.cjs +25 -0
  33. package/cjs/__chunks/NFXQNOQH.cjs +393 -0
  34. package/cjs/__chunks/NLKJIUEX.cjs +126 -0
  35. package/cjs/__chunks/NT2XXAI6.cjs +89 -0
  36. package/cjs/__chunks/NWZGFHKH.cjs +121 -0
  37. package/cjs/__chunks/R3GUC7O7.cjs +110 -0
  38. package/cjs/__chunks/RPVAXPJ4.cjs +1 -0
  39. package/cjs/__chunks/S3LVCWPN.cjs +23 -0
  40. package/cjs/__chunks/SBBNW2BF.cjs +249 -0
  41. package/cjs/__chunks/T2A7TN4F.cjs +81 -0
  42. package/cjs/__chunks/TKNNDDIB.cjs +97 -0
  43. package/cjs/__chunks/TNSRDJPR.cjs +1 -0
  44. package/cjs/__chunks/UWHPE2GI.cjs +20 -0
  45. package/cjs/__chunks/W6K7BV74.cjs +1 -0
  46. package/cjs/__chunks/WBOQ6AUN.cjs +320 -0
  47. package/cjs/__chunks/WHGN5PZI.cjs +299 -0
  48. package/cjs/__chunks/WOYF2L6T.cjs +11 -0
  49. package/cjs/__chunks/X26XY2N6.cjs +18 -0
  50. package/cjs/__chunks/XMKOKRXZ.cjs +16 -0
  51. package/cjs/__chunks/XTJPQ3EX.cjs +1 -0
  52. package/cjs/__chunks/YRHFKTW2.cjs +63 -0
  53. package/cjs/commands/aws/ec2/allow-ip/handler.cjs +12 -0
  54. package/cjs/commands/aws/ec2/allow-ip/handler.d.ts +6 -0
  55. package/cjs/commands/aws/ec2/allow-ip/index.cjs +55 -0
  56. package/cjs/commands/aws/ec2/allow-ip/index.d.ts +3 -0
  57. package/cjs/commands/aws/ec2/allow-ip/schema.cjs +13 -0
  58. package/cjs/commands/aws/ec2/allow-ip/schema.d.ts +33 -0
  59. package/cjs/commands/aws/ec2/allow-ip/utils.cjs +39 -0
  60. package/cjs/commands/aws/ec2/allow-ip/utils.d.ts +189 -0
  61. package/cjs/commands/aws/iam/admin-group.cjs +15 -0
  62. package/cjs/commands/aws/iam/admin-group.d.ts +55 -0
  63. package/cjs/commands/aws/iam/break-glass/handler.cjs +12 -0
  64. package/cjs/commands/aws/iam/break-glass/handler.d.ts +7 -0
  65. package/cjs/commands/aws/iam/break-glass/index.cjs +19 -0
  66. package/cjs/commands/aws/iam/break-glass/index.d.ts +2 -0
  67. package/cjs/commands/aws/iam/break-glass/schema.cjs +12 -0
  68. package/cjs/commands/aws/iam/break-glass/schema.d.ts +25 -0
  69. package/cjs/commands/aws/iam/check-admin/handler.cjs +10 -0
  70. package/cjs/commands/aws/iam/check-admin/handler.d.ts +5 -0
  71. package/cjs/commands/aws/iam/check-admin/index.cjs +17 -0
  72. package/cjs/commands/aws/iam/check-admin/index.d.ts +2 -0
  73. package/cjs/commands/aws/iam/check-admin/schema.cjs +12 -0
  74. package/cjs/commands/aws/iam/check-admin/schema.d.ts +19 -0
  75. package/cjs/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.cjs +28 -0
  76. package/cjs/commands/aws/iam/policies/sts-federation.cjs +19 -0
  77. package/cjs/commands/aws/iam/policies/user-admins-deny-list.cjs +183 -0
  78. package/cjs/commands/aws/iam/policies/user-admins-deny-regions-list.cjs +49 -0
  79. package/cjs/commands/aws/iam/policies/user-admins-self-service-iam.cjs +64 -0
  80. package/cjs/commands/aws/iam/policies/user-admins-write-list.cjs +125 -0
  81. package/cjs/commands/aws/iam/remove-admin/handler.cjs +11 -0
  82. package/cjs/commands/aws/iam/remove-admin/handler.d.ts +6 -0
  83. package/cjs/commands/aws/iam/remove-admin/index.cjs +18 -0
  84. package/cjs/commands/aws/iam/remove-admin/index.d.ts +2 -0
  85. package/cjs/commands/aws/iam/remove-admin/schema.cjs +12 -0
  86. package/cjs/commands/aws/iam/remove-admin/schema.d.ts +28 -0
  87. package/cjs/commands/aws/iam/setup-acl/handler.cjs +14 -0
  88. package/cjs/commands/aws/iam/setup-acl/handler.d.ts +6 -0
  89. package/cjs/commands/aws/iam/setup-acl/index.cjs +33 -0
  90. package/cjs/commands/aws/iam/setup-acl/index.d.ts +3 -0
  91. package/cjs/commands/aws/iam/setup-acl/schema.cjs +7 -0
  92. package/cjs/commands/aws/iam/setup-acl/schema.d.ts +24 -0
  93. package/cjs/commands/aws/iam/setup-acl/utils.cjs +20 -0
  94. package/cjs/commands/aws/iam/setup-acl/utils.d.ts +61 -0
  95. package/cjs/commands/aws/iam/users/handler.cjs +12 -0
  96. package/cjs/commands/aws/iam/users/handler.d.ts +5 -0
  97. package/cjs/commands/aws/iam/users/index.cjs +41 -0
  98. package/cjs/commands/aws/iam/users/index.d.ts +3 -0
  99. package/cjs/commands/aws/iam/users/schema.cjs +7 -0
  100. package/cjs/commands/aws/iam/users/schema.d.ts +18 -0
  101. package/cjs/commands/aws/iam/users/utils.cjs +30 -0
  102. package/cjs/commands/aws/iam/users/utils.d.ts +119 -0
  103. package/cjs/commands/aws/index.cjs +229 -0
  104. package/cjs/commands/aws/index.d.ts +14 -0
  105. package/cjs/commands/aws/route53/add-record/handler.cjs +18 -0
  106. package/cjs/commands/aws/route53/add-record/handler.d.ts +36 -0
  107. package/cjs/commands/aws/route53/add-record/index.cjs +57 -0
  108. package/cjs/commands/aws/route53/add-record/index.d.ts +3 -0
  109. package/cjs/commands/aws/route53/add-record/schema.cjs +11 -0
  110. package/cjs/commands/aws/route53/add-record/schema.d.ts +45 -0
  111. package/cjs/commands/aws/route53/add-record/utils.cjs +37 -0
  112. package/cjs/commands/aws/route53/add-record/utils.d.ts +216 -0
  113. package/cjs/commands/aws/route53/remove-record/handler.cjs +14 -0
  114. package/cjs/commands/aws/route53/remove-record/handler.d.ts +6 -0
  115. package/cjs/commands/aws/route53/remove-record/index.cjs +18 -0
  116. package/cjs/commands/aws/route53/remove-record/index.d.ts +2 -0
  117. package/cjs/commands/aws/route53/remove-record/schema.cjs +8 -0
  118. package/cjs/commands/aws/route53/remove-record/schema.d.ts +30 -0
  119. package/cjs/commands/aws/schema.cjs +10 -0
  120. package/cjs/commands/aws/schema.d.ts +13 -0
  121. package/cjs/commands/aws/ses/send-email/handler.cjs +12 -0
  122. package/cjs/commands/aws/ses/send-email/handler.d.ts +5 -0
  123. package/cjs/commands/aws/ses/send-email/index.cjs +23 -0
  124. package/cjs/commands/aws/ses/send-email/index.d.ts +3 -0
  125. package/cjs/commands/aws/ses/send-email/schema.cjs +7 -0
  126. package/cjs/commands/aws/ses/send-email/schema.d.ts +39 -0
  127. package/cjs/commands/aws/ses/send-email/utils.cjs +11 -0
  128. package/cjs/commands/aws/ses/send-email/utils.d.ts +47 -0
  129. package/cjs/commands/aws/ses/smtp-password.cjs +10 -0
  130. package/cjs/commands/aws/ses/smtp-password.d.ts +21 -0
  131. package/cjs/commands/aws/utils/exec-aws.cjs +16 -0
  132. package/cjs/commands/aws/utils/exec-aws.d.ts +79 -0
  133. package/cjs/commands/aws/utils/resolve-policy-path.cjs +6 -0
  134. package/cjs/commands/aws/utils/resolve-policy-path.d.ts +8 -0
  135. package/cjs/commands/aws/utils/resolve-profile.cjs +11 -0
  136. package/cjs/commands/aws/utils/resolve-profile.d.ts +28 -0
  137. package/cjs/commands/aws/utils/tty.cjs +10 -0
  138. package/cjs/commands/aws/utils/tty.d.ts +24 -0
  139. package/cjs/commands/db/create-readonly-user/handler.cjs +11 -0
  140. package/cjs/commands/db/create-readonly-user/handler.d.ts +5 -0
  141. package/cjs/commands/db/create-readonly-user/index.cjs +40 -0
  142. package/cjs/commands/db/create-readonly-user/index.d.ts +3 -0
  143. package/cjs/commands/db/create-readonly-user/mysql.cjs +9 -0
  144. package/cjs/commands/db/create-readonly-user/mysql.d.ts +33 -0
  145. package/cjs/commands/db/create-readonly-user/postgres.cjs +9 -0
  146. package/cjs/commands/db/create-readonly-user/postgres.d.ts +31 -0
  147. package/cjs/commands/db/create-readonly-user/schema.cjs +12 -0
  148. package/cjs/commands/db/create-readonly-user/schema.d.ts +55 -0
  149. package/cjs/commands/db/create-readonly-user/utils.cjs +22 -0
  150. package/cjs/commands/db/create-readonly-user/utils.d.ts +112 -0
  151. package/cjs/commands/db/index.cjs +44 -0
  152. package/cjs/commands/db/index.d.ts +6 -0
  153. package/cjs/commands/doppler/handler.cjs +6 -4
  154. package/cjs/commands/doppler/index.cjs +32 -5
  155. package/cjs/commands/doppler/index.d.ts +1 -0
  156. package/cjs/commands/doppler/schema.cjs +10 -2
  157. package/cjs/commands/doppler/schema.d.ts +233 -17
  158. package/cjs/commands/doppler/set-secret.cjs +19 -0
  159. package/cjs/commands/doppler/set-secret.d.ts +113 -0
  160. package/cjs/commands/doppler/utils.cjs +6 -2
  161. package/cjs/commands/doppler/utils.d.ts +32 -8
  162. package/cjs/commands/icons/schema.d.ts +1 -1
  163. package/cjs/commands/index.cjs +91 -12
  164. package/esm/__chunks/2FTTEFEK.js +97 -0
  165. package/esm/__chunks/33UYMUQD.js +338 -0
  166. package/esm/__chunks/3BKWTHLJ.js +25 -0
  167. package/esm/__chunks/3HE4BEJX.js +105 -0
  168. package/esm/__chunks/3QLI5BDL.js +387 -0
  169. package/esm/__chunks/5GIUAFXL.js +89 -0
  170. package/esm/__chunks/73BJG53F.js +11 -0
  171. package/esm/__chunks/7VF4Q43Q.js +0 -0
  172. package/esm/__chunks/AEDEAYF5.js +0 -0
  173. package/esm/__chunks/AZCP3SFJ.js +0 -0
  174. package/esm/__chunks/B2DVQ2UL.js +61 -0
  175. package/esm/__chunks/CVQVHLW5.js +0 -0
  176. package/esm/__chunks/D62SPZXC.js +0 -0
  177. package/esm/__chunks/DLEJ25GZ.js +121 -0
  178. package/esm/__chunks/DMYFNF54.js +192 -0
  179. package/esm/__chunks/DNFTUMGD.js +23 -0
  180. package/esm/__chunks/DVKD6YSR.js +49 -0
  181. package/esm/__chunks/EMSH4P76.js +20 -0
  182. package/esm/__chunks/FFKFVMIE.js +167 -0
  183. package/esm/__chunks/FNXUONAV.js +110 -0
  184. package/esm/__chunks/G4NJHFFU.js +320 -0
  185. package/esm/__chunks/IEOGAQYI.js +46 -0
  186. package/esm/__chunks/IZFGBYGE.js +34 -0
  187. package/esm/__chunks/J34UVKLA.js +26 -0
  188. package/esm/__chunks/JZPBBBIG.js +74 -0
  189. package/esm/__chunks/KWUJP5MG.js +135 -0
  190. package/esm/__chunks/M35URMT4.js +313 -0
  191. package/esm/__chunks/NF3M2L6C.js +81 -0
  192. package/esm/__chunks/PNPPDYKC.js +299 -0
  193. package/esm/__chunks/QFXN4EHM.js +393 -0
  194. package/esm/__chunks/QKDDLIWD.js +146 -0
  195. package/esm/__chunks/QSE66AKY.js +208 -0
  196. package/esm/__chunks/QUF7PS4R.js +18 -0
  197. package/esm/__chunks/S7IJPJ4R.js +126 -0
  198. package/esm/__chunks/SD3E3EPH.js +163 -0
  199. package/esm/__chunks/T3TTUHTW.js +30 -0
  200. package/esm/__chunks/TIOVE6HR.js +0 -0
  201. package/esm/__chunks/TXKMEIDQ.js +0 -0
  202. package/esm/__chunks/U7HAE2RF.js +288 -0
  203. package/esm/__chunks/UXWY7BYE.js +63 -0
  204. package/esm/__chunks/VKAKISRG.js +192 -0
  205. package/esm/__chunks/WD2YR6I7.js +0 -0
  206. package/esm/__chunks/WOZFZKFY.js +0 -0
  207. package/esm/__chunks/XI7GZDE2.js +0 -0
  208. package/esm/__chunks/XOUWDB3T.js +249 -0
  209. package/esm/__chunks/XQN2TA4S.js +23 -0
  210. package/esm/__chunks/XXK32TIM.js +16 -0
  211. package/esm/__chunks/{O262GK4B.js → YGWTVPZE.js} +164 -27
  212. package/esm/__chunks/{6L5RNR7G.js → YRG7PT33.js} +44 -17
  213. package/esm/__chunks/ZHKVJO2U.js +47 -0
  214. package/esm/__chunks/ZO55YUSY.js +9 -0
  215. package/esm/commands/aws/ec2/allow-ip/handler.d.ts +6 -0
  216. package/esm/commands/aws/ec2/allow-ip/handler.js +12 -0
  217. package/esm/commands/aws/ec2/allow-ip/index.d.ts +3 -0
  218. package/esm/commands/aws/ec2/allow-ip/index.js +55 -0
  219. package/esm/commands/aws/ec2/allow-ip/schema.d.ts +33 -0
  220. package/esm/commands/aws/ec2/allow-ip/schema.js +13 -0
  221. package/esm/commands/aws/ec2/allow-ip/utils.d.ts +189 -0
  222. package/esm/commands/aws/ec2/allow-ip/utils.js +39 -0
  223. package/esm/commands/aws/iam/admin-group.d.ts +55 -0
  224. package/esm/commands/aws/iam/admin-group.js +15 -0
  225. package/esm/commands/aws/iam/break-glass/handler.d.ts +7 -0
  226. package/esm/commands/aws/iam/break-glass/handler.js +12 -0
  227. package/esm/commands/aws/iam/break-glass/index.d.ts +2 -0
  228. package/esm/commands/aws/iam/break-glass/index.js +19 -0
  229. package/esm/commands/aws/iam/break-glass/schema.d.ts +25 -0
  230. package/esm/commands/aws/iam/break-glass/schema.js +12 -0
  231. package/esm/commands/aws/iam/check-admin/handler.d.ts +5 -0
  232. package/esm/commands/aws/iam/check-admin/handler.js +10 -0
  233. package/esm/commands/aws/iam/check-admin/index.d.ts +2 -0
  234. package/esm/commands/aws/iam/check-admin/index.js +17 -0
  235. package/esm/commands/aws/iam/check-admin/schema.d.ts +19 -0
  236. package/esm/commands/aws/iam/check-admin/schema.js +12 -0
  237. package/esm/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.js +28 -0
  238. package/esm/commands/aws/iam/policies/sts-federation.js +19 -0
  239. package/esm/commands/aws/iam/policies/user-admins-deny-list.js +183 -0
  240. package/esm/commands/aws/iam/policies/user-admins-deny-regions-list.js +49 -0
  241. package/esm/commands/aws/iam/policies/user-admins-self-service-iam.js +64 -0
  242. package/esm/commands/aws/iam/policies/user-admins-write-list.js +125 -0
  243. package/esm/commands/aws/iam/remove-admin/handler.d.ts +6 -0
  244. package/esm/commands/aws/iam/remove-admin/handler.js +11 -0
  245. package/esm/commands/aws/iam/remove-admin/index.d.ts +2 -0
  246. package/esm/commands/aws/iam/remove-admin/index.js +18 -0
  247. package/esm/commands/aws/iam/remove-admin/schema.d.ts +28 -0
  248. package/esm/commands/aws/iam/remove-admin/schema.js +12 -0
  249. package/esm/commands/aws/iam/setup-acl/handler.d.ts +6 -0
  250. package/esm/commands/aws/iam/setup-acl/handler.js +14 -0
  251. package/esm/commands/aws/iam/setup-acl/index.d.ts +3 -0
  252. package/esm/commands/aws/iam/setup-acl/index.js +33 -0
  253. package/esm/commands/aws/iam/setup-acl/schema.d.ts +24 -0
  254. package/esm/commands/aws/iam/setup-acl/schema.js +7 -0
  255. package/esm/commands/aws/iam/setup-acl/utils.d.ts +61 -0
  256. package/esm/commands/aws/iam/setup-acl/utils.js +20 -0
  257. package/esm/commands/aws/iam/users/handler.d.ts +5 -0
  258. package/esm/commands/aws/iam/users/handler.js +12 -0
  259. package/esm/commands/aws/iam/users/index.d.ts +3 -0
  260. package/esm/commands/aws/iam/users/index.js +41 -0
  261. package/esm/commands/aws/iam/users/schema.d.ts +18 -0
  262. package/esm/commands/aws/iam/users/schema.js +7 -0
  263. package/esm/commands/aws/iam/users/utils.d.ts +119 -0
  264. package/esm/commands/aws/iam/users/utils.js +30 -0
  265. package/esm/commands/aws/index.d.ts +14 -0
  266. package/esm/commands/aws/index.js +229 -0
  267. package/esm/commands/aws/route53/add-record/handler.d.ts +36 -0
  268. package/esm/commands/aws/route53/add-record/handler.js +18 -0
  269. package/esm/commands/aws/route53/add-record/index.d.ts +3 -0
  270. package/esm/commands/aws/route53/add-record/index.js +57 -0
  271. package/esm/commands/aws/route53/add-record/schema.d.ts +45 -0
  272. package/esm/commands/aws/route53/add-record/schema.js +11 -0
  273. package/esm/commands/aws/route53/add-record/utils.d.ts +216 -0
  274. package/esm/commands/aws/route53/add-record/utils.js +37 -0
  275. package/esm/commands/aws/route53/remove-record/handler.d.ts +6 -0
  276. package/esm/commands/aws/route53/remove-record/handler.js +14 -0
  277. package/esm/commands/aws/route53/remove-record/index.d.ts +2 -0
  278. package/esm/commands/aws/route53/remove-record/index.js +18 -0
  279. package/esm/commands/aws/route53/remove-record/schema.d.ts +30 -0
  280. package/esm/commands/aws/route53/remove-record/schema.js +8 -0
  281. package/esm/commands/aws/schema.d.ts +13 -0
  282. package/esm/commands/aws/schema.js +10 -0
  283. package/esm/commands/aws/ses/send-email/handler.d.ts +5 -0
  284. package/esm/commands/aws/ses/send-email/handler.js +12 -0
  285. package/esm/commands/aws/ses/send-email/index.d.ts +3 -0
  286. package/esm/commands/aws/ses/send-email/index.js +23 -0
  287. package/esm/commands/aws/ses/send-email/schema.d.ts +39 -0
  288. package/esm/commands/aws/ses/send-email/schema.js +7 -0
  289. package/esm/commands/aws/ses/send-email/utils.d.ts +47 -0
  290. package/esm/commands/aws/ses/send-email/utils.js +11 -0
  291. package/esm/commands/aws/ses/smtp-password.d.ts +21 -0
  292. package/esm/commands/aws/ses/smtp-password.js +10 -0
  293. package/esm/commands/aws/utils/exec-aws.d.ts +79 -0
  294. package/esm/commands/aws/utils/exec-aws.js +16 -0
  295. package/esm/commands/aws/utils/resolve-policy-path.d.ts +8 -0
  296. package/esm/commands/aws/utils/resolve-policy-path.js +6 -0
  297. package/esm/commands/aws/utils/resolve-profile.d.ts +28 -0
  298. package/esm/commands/aws/utils/resolve-profile.js +11 -0
  299. package/esm/commands/aws/utils/tty.d.ts +24 -0
  300. package/esm/commands/aws/utils/tty.js +10 -0
  301. package/esm/commands/db/create-readonly-user/handler.d.ts +5 -0
  302. package/esm/commands/db/create-readonly-user/handler.js +11 -0
  303. package/esm/commands/db/create-readonly-user/index.d.ts +3 -0
  304. package/esm/commands/db/create-readonly-user/index.js +40 -0
  305. package/esm/commands/db/create-readonly-user/mysql.d.ts +33 -0
  306. package/esm/commands/db/create-readonly-user/mysql.js +9 -0
  307. package/esm/commands/db/create-readonly-user/postgres.d.ts +31 -0
  308. package/esm/commands/db/create-readonly-user/postgres.js +9 -0
  309. package/esm/commands/db/create-readonly-user/schema.d.ts +55 -0
  310. package/esm/commands/db/create-readonly-user/schema.js +12 -0
  311. package/esm/commands/db/create-readonly-user/utils.d.ts +112 -0
  312. package/esm/commands/db/create-readonly-user/utils.js +22 -0
  313. package/esm/commands/db/index.d.ts +6 -0
  314. package/esm/commands/db/index.js +44 -0
  315. package/esm/commands/doppler/handler.js +5 -3
  316. package/esm/commands/doppler/index.d.ts +1 -0
  317. package/esm/commands/doppler/index.js +32 -5
  318. package/esm/commands/doppler/schema.d.ts +233 -17
  319. package/esm/commands/doppler/schema.js +11 -3
  320. package/esm/commands/doppler/set-secret.d.ts +113 -0
  321. package/esm/commands/doppler/set-secret.js +19 -0
  322. package/esm/commands/doppler/utils.d.ts +32 -8
  323. package/esm/commands/doppler/utils.js +5 -1
  324. package/esm/commands/icons/schema.d.ts +1 -1
  325. package/esm/commands/index.js +86 -7
  326. package/package.json +12 -2
  327. package/vitest.config.ts +11 -0
  328. package/cjs/__chunks/4GFJUCSP.cjs +0 -52
  329. package/esm/__chunks/X3R5PSWH.js +0 -52
  330. /package/cjs/__chunks/{WNJ3ZYLI.cjs → 3BY5Y4W7.cjs} +0 -0
  331. /package/esm/__chunks/{46HGXFME.js → 5ZBVGSOK.js} +0 -0
@@ -0,0 +1,208 @@
1
+ import {
2
+ allowIpCommand
3
+ } from "./PNPPDYKC.js";
4
+ import {
5
+ checkAdminCommand
6
+ } from "./S7IJPJ4R.js";
7
+ import {
8
+ breakGlassCommand
9
+ } from "./VKAKISRG.js";
10
+ import {
11
+ removeAdminCommand
12
+ } from "./FFKFVMIE.js";
13
+ import {
14
+ usersCommand
15
+ } from "./JZPBBBIG.js";
16
+ import {
17
+ setupAclCommand
18
+ } from "./DMYFNF54.js";
19
+ import {
20
+ removeRecordCommand
21
+ } from "./QKDDLIWD.js";
22
+ import {
23
+ addRecordCommand
24
+ } from "./G4NJHFFU.js";
25
+ import {
26
+ sendEmailCommand
27
+ } from "./2FTTEFEK.js";
28
+
29
+ // src/commands/aws/index.js
30
+ function collect(value, previous) {
31
+ return [...previous, value];
32
+ }
33
+ function registerAwsCommands(program) {
34
+ const aws = program.command("aws").summary("AWS operational commands (IAM, EC2, SES, Route53)").description("AWS operational commands for IAM, EC2, SES, and Route53");
35
+ const iam = aws.command("iam").summary("IAM ACL group and user management").description("IAM ACL group and user management");
36
+ iam.command("setup-acl").summary("Create ACL groups, policies, and (optionally) users").description(
37
+ "Idempotently create the ACL groups and managed policies, attach them per group, and optionally create IAM users."
38
+ ).option(
39
+ "--restrict-regions <yes|no>",
40
+ "Attach the region restriction to acl-power-users (skips the prompt)"
41
+ ).option(
42
+ "--no-create-users",
43
+ "Skip IAM user creation after configuring groups"
44
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option("-r, --region <region>", "AWS region").option("-v, --verbose", "Enable verbose logging").action(async (options) => {
45
+ await setupAclCommand({
46
+ restrictRegions: options.restrictRegions,
47
+ createUsers: options.createUsers,
48
+ profile: options.profile,
49
+ region: options.region,
50
+ verbose: options.verbose ?? false
51
+ });
52
+ });
53
+ iam.command("users").summary("Interactively create IAM users and assign ACL groups").description(
54
+ "Interactively create md-{identifier}-{account}-{role} IAM users, assign ACL groups, and print CLI setup commands."
55
+ ).option(
56
+ "--account-name <slug>",
57
+ "AWS account slug used in md-{identifier}-{account}-{role}"
58
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option("-v, --verbose", "Enable verbose logging").action(async (options) => {
59
+ await usersCommand({
60
+ accountName: options.accountName,
61
+ profile: options.profile,
62
+ verbose: options.verbose ?? false
63
+ });
64
+ });
65
+ iam.command("check-admin").summary("Alert if anyone is in acl-admin-do-not-use").description(
66
+ "Scan one profile (--profile or AWS_PROFILE) or all aws-vault profiles (--all) for members of the break-glass acl-admin-do-not-use group."
67
+ ).option(
68
+ "-p, --profile <profile>",
69
+ "Operate on this profile (defaults to AWS_PROFILE)"
70
+ ).option(
71
+ "--all",
72
+ "Scan every aws-vault profile (default when no profile is set)"
73
+ ).option("-v, --verbose", "Show skipped profiles and detailed errors").action(async (options) => {
74
+ await checkAdminCommand({
75
+ profile: options.profile,
76
+ all: options.all ?? false,
77
+ verbose: options.verbose ?? false
78
+ });
79
+ });
80
+ iam.command("remove-admin").summary("Remove users from the acl-admin-do-not-use group").description(
81
+ "Remove break-glass admin access by removing users from acl-admin-do-not-use, for one profile (--profile or AWS_PROFILE) or every aws-vault profile (--all)."
82
+ ).option(
83
+ "-p, --profile <profile>",
84
+ "Operate on this profile (defaults to AWS_PROFILE)"
85
+ ).option(
86
+ "--all",
87
+ "Scan every aws-vault profile (default when no profile is set)"
88
+ ).option(
89
+ "--user <name>",
90
+ "Only remove this user (repeatable); default removes all",
91
+ collect,
92
+ []
93
+ ).option("-y, --yes", "Skip the per-profile confirmation prompt").option("--dry-run", "Preview removals without changing anything").option("-v, --verbose", "Show skipped profiles and detailed errors").action(async (options) => {
94
+ await removeAdminCommand({
95
+ profile: options.profile,
96
+ all: options.all ?? false,
97
+ user: options.user ?? [],
98
+ yes: options.yes ?? false,
99
+ dryRun: options.dryRun ?? false,
100
+ verbose: options.verbose ?? false
101
+ });
102
+ });
103
+ iam.command("break-glass").summary("Grant break-glass admin access (acl-admin-do-not-use)").description(
104
+ "Grant break-glass AdministratorAccess by adding a user to acl-admin-do-not-use for one profile. Defaults to your own IAM user."
105
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option(
106
+ "--user <name>",
107
+ "Grant to this user (repeatable); default is your own IAM user",
108
+ collect,
109
+ []
110
+ ).option("-y, --yes", "Skip the confirmation prompt").option("--dry-run", "Preview the grant without changing anything").option("-v, --verbose", "Show detailed errors").action(async (options) => {
111
+ await breakGlassCommand({
112
+ profile: options.profile,
113
+ user: options.user ?? [],
114
+ yes: options.yes ?? false,
115
+ dryRun: options.dryRun ?? false,
116
+ verbose: options.verbose ?? false
117
+ });
118
+ });
119
+ const ec2 = aws.command("ec2").summary("EC2 operational commands").description("EC2 operational commands");
120
+ ec2.command("allow-ip").summary("Allow your current public IP for SSH on an EC2 security group").description(
121
+ "Update or create a named roaming SSH rule (port 22) for your current public IP on a chosen EC2 instance security group."
122
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option("-r, --region <region>", "AWS region").option(
123
+ "--rule-name <name>",
124
+ 'SSH rule description (default: "{FirstName} Roaming")'
125
+ ).option("-v, --verbose", "Enable verbose logging").action(async (options) => {
126
+ await allowIpCommand({
127
+ profile: options.profile,
128
+ region: options.region,
129
+ ruleName: options.ruleName,
130
+ verbose: options.verbose ?? false
131
+ });
132
+ });
133
+ const route53 = aws.command("route53").summary("Route53 DNS commands").description("Route53 DNS commands");
134
+ route53.command("add-record").summary("Interactively add or update a DNS record").description(
135
+ "Add or update a Route53 resource record set. Prompts for hosted zone, type, name, and value when not passed as flags. Shows whether the change creates, overwrites, or appends to an existing record."
136
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option(
137
+ "-z, --zone <name-or-id>",
138
+ "Hosted zone name or ID (e.g. mountaindev.com)"
139
+ ).option(
140
+ "-t, --type <type>",
141
+ "Record type (A, AAAA, CNAME, TXT, MX, NS, SRV, CAA)"
142
+ ).option(
143
+ "-n, --name <name>",
144
+ 'Record name relative to the zone (e.g. "redline") or FQDN'
145
+ ).option("--value <value>", "Record value (e.g. CNAME target)").option(
146
+ "--ttl <seconds>",
147
+ "TTL in seconds (default: 300)",
148
+ (value) => Number.parseInt(value, 10)
149
+ ).option("-y, --yes", "Skip the confirmation prompt").option("--dry-run", "Preview the change without calling Route53").option("-v, --verbose", "Enable verbose logging").action(async (options) => {
150
+ await addRecordCommand({
151
+ profile: options.profile,
152
+ zone: options.zone,
153
+ type: options.type,
154
+ name: options.name,
155
+ value: options.value,
156
+ ttl: options.ttl,
157
+ yes: options.yes ?? false,
158
+ dryRun: options.dryRun ?? false,
159
+ verbose: options.verbose ?? false
160
+ });
161
+ });
162
+ route53.command("remove-record").summary("Interactively delete a DNS record").description(
163
+ "Delete a Route53 resource record set. Prompts for hosted zone, type, and name when not passed as flags, shows the record it found, and confirms before deleting."
164
+ ).option("-p, --profile <profile>", "AWS profile (defaults to AWS_PROFILE)").option(
165
+ "-z, --zone <name-or-id>",
166
+ "Hosted zone name or ID (e.g. mountaindev.com)"
167
+ ).option(
168
+ "-t, --type <type>",
169
+ "Record type (A, AAAA, CNAME, TXT, MX, NS, SRV, CAA)"
170
+ ).option(
171
+ "-n, --name <name>",
172
+ 'Record name relative to the zone (e.g. "redline") or FQDN'
173
+ ).option("-y, --yes", "Skip the confirmation prompt").option("--dry-run", "Preview the deletion without calling Route53").option("-v, --verbose", "Enable verbose logging").action(async (options) => {
174
+ await removeRecordCommand({
175
+ profile: options.profile,
176
+ zone: options.zone,
177
+ type: options.type,
178
+ name: options.name,
179
+ yes: options.yes ?? false,
180
+ dryRun: options.dryRun ?? false,
181
+ verbose: options.verbose ?? false
182
+ });
183
+ });
184
+ const ses = aws.command("ses").summary("SES operational commands").description("SES operational commands");
185
+ ses.command("send-email").summary("Send a test email via SES (API or SMTP)").description(
186
+ "Send a single test email through the SES API (default) or the SES SMTP endpoint."
187
+ ).requiredOption("--to <address>", "Recipient email address").requiredOption("--from <address>", "Verified SES sender email address").option("--subject <subject>", "Email subject line").option("--body <body>", "Email body (defaults to a timestamp and token)").option("--transport <api|smtp>", "Send via SES API or SES SMTP", "api").option("-r, --region <region>", "AWS region for SES", "us-east-1").option("-p, --profile <profile>", "AWS profile for api transport").option(
188
+ "--access-key-id <id>",
189
+ "IAM access key ID used as the SMTP username (smtp transport)"
190
+ ).option("--dry-run", "Print the email payload without sending").option("-v, --verbose", "Enable verbose logging").action(async (options) => {
191
+ await sendEmailCommand({
192
+ to: options.to,
193
+ from: options.from,
194
+ subject: options.subject,
195
+ body: options.body,
196
+ transport: options.transport,
197
+ region: options.region,
198
+ profile: options.profile,
199
+ accessKeyId: options.accessKeyId,
200
+ dryRun: options.dryRun ?? false,
201
+ verbose: options.verbose ?? false
202
+ });
203
+ });
204
+ }
205
+
206
+ export {
207
+ registerAwsCommands
208
+ };
@@ -0,0 +1,18 @@
1
+ import {
2
+ profileField,
3
+ verboseField
4
+ } from "./73BJG53F.js";
5
+
6
+ // src/commands/aws/iam/check-admin/schema.js
7
+ import { z } from "zod";
8
+ var checkAdminOptionsSchema = z.object({
9
+ profile: profileField,
10
+ all: z.boolean().optional().default(false).describe(
11
+ "Scan every aws-vault profile (default only when --profile and AWS_PROFILE are unset)"
12
+ ),
13
+ verbose: verboseField
14
+ });
15
+
16
+ export {
17
+ checkAdminOptionsSchema
18
+ };
@@ -0,0 +1,126 @@
1
+ import {
2
+ checkAdminOptionsSchema
3
+ } from "./QUF7PS4R.js";
4
+ import {
5
+ ADMIN_GROUP_NAME,
6
+ resolveAdminScanProfiles,
7
+ resolveProfileScan
8
+ } from "./NF3M2L6C.js";
9
+ import {
10
+ requireCommands
11
+ } from "./FNXUONAV.js";
12
+
13
+ // src/commands/aws/iam/check-admin/handler.js
14
+ import chalk from "chalk";
15
+ import { ZodError } from "zod";
16
+ async function checkAdminCommand(options) {
17
+ try {
18
+ const { profile, all, verbose } = checkAdminOptionsSchema.parse(options);
19
+ requireCommands(["aws"]);
20
+ const needsVault = all || !(profile ?? process.env.AWS_PROFILE);
21
+ if (needsVault) {
22
+ requireCommands(["aws-vault"]);
23
+ }
24
+ let profiles;
25
+ try {
26
+ profiles = resolveAdminScanProfiles({ profile, all });
27
+ } catch (resolveError) {
28
+ if (resolveError instanceof Error && resolveError.message === "No aws-vault profiles with credentials found.") {
29
+ console.error(chalk.red(resolveError.message));
30
+ process.exit(1);
31
+ }
32
+ throw resolveError;
33
+ }
34
+ console.log(
35
+ chalk.blue(
36
+ `
37
+ ==> Checking ${profiles.length} profile(s) for ${ADMIN_GROUP_NAME}
38
+ `
39
+ )
40
+ );
41
+ let ok = 0;
42
+ let alert = 0;
43
+ let skip = 0;
44
+ for (const candidate of profiles) {
45
+ const scan = resolveProfileScan({ profile: candidate, verbose });
46
+ if (!scan) {
47
+ skip += 1;
48
+ continue;
49
+ }
50
+ if (scan.users.length === 0) {
51
+ console.log(
52
+ chalk.green(
53
+ `OK ${candidate} (${scan.accountId}) \u2014 ${ADMIN_GROUP_NAME}: 0 users`
54
+ )
55
+ );
56
+ ok += 1;
57
+ } else {
58
+ console.log(
59
+ chalk.red(
60
+ `ALERT ${candidate} (${scan.accountId}) \u2014 ${ADMIN_GROUP_NAME}: ${scan.users.length} user(s): ${scan.users.join(", ")}`
61
+ )
62
+ );
63
+ alert += 1;
64
+ }
65
+ }
66
+ console.log(chalk.blue("\n==> Summary"));
67
+ console.log(` Profiles scanned: ${profiles.length}`);
68
+ console.log(` OK (empty group): ${ok}`);
69
+ console.log(` ALERT (has users): ${alert}`);
70
+ console.log(` Skipped (silent): ${skip}`);
71
+ if (alert > 0) {
72
+ console.log(
73
+ chalk.red(
74
+ `
75
+ Remove users from ${ADMIN_GROUP_NAME} when break-glass access is no longer needed.`
76
+ )
77
+ );
78
+ process.exit(1);
79
+ }
80
+ if (ok === 0) {
81
+ console.log(
82
+ chalk.yellow(
83
+ `
84
+ No profiles returned IAM access for ${ADMIN_GROUP_NAME}.`
85
+ )
86
+ );
87
+ console.log(
88
+ chalk.yellow(
89
+ " Use a profile with iam:GetGroup (e.g. md-*-iam-admin) or run with --verbose."
90
+ )
91
+ );
92
+ }
93
+ } catch (error) {
94
+ if (error instanceof ZodError) {
95
+ console.error(chalk.red("\n\u274C Invalid command options:"));
96
+ error.errors.forEach((err) => {
97
+ console.error(chalk.red(` ${err.path.join(".")}: ${err.message}`));
98
+ });
99
+ process.exit(1);
100
+ }
101
+ const verbose = (
102
+ /** @type {any} */
103
+ options?.verbose || false
104
+ );
105
+ console.error(chalk.red("\n\u274C check-admin failed:"));
106
+ if (error instanceof Error) {
107
+ console.error(chalk.red(` ${error.message}`));
108
+ if (verbose && error.stack) {
109
+ console.error(chalk.gray("\nStack trace:"));
110
+ console.error(chalk.gray(error.stack));
111
+ }
112
+ } else {
113
+ console.error(chalk.red(` ${String(error)}`));
114
+ }
115
+ console.error(
116
+ chalk.yellow(
117
+ "\n\u{1F4A1} Requires the AWS CLI, and aws-vault when scanning multiple profiles.\n"
118
+ )
119
+ );
120
+ process.exit(1);
121
+ }
122
+ }
123
+
124
+ export {
125
+ checkAdminCommand
126
+ };
@@ -0,0 +1,163 @@
1
+ import {
2
+ isSystemDatabase,
3
+ quoteIdent,
4
+ quoteLiteral
5
+ } from "./DLEJ25GZ.js";
6
+
7
+ // src/commands/db/create-readonly-user/postgres.js
8
+ import pg from "pg";
9
+ var { Client } = pg;
10
+ function createClient(config, database) {
11
+ return new Client({
12
+ host: config.host,
13
+ port: config.port,
14
+ user: config.user,
15
+ password: config.password,
16
+ database: database ?? (config.database || "postgres"),
17
+ ssl: config.ssl
18
+ });
19
+ }
20
+ async function query(client, sql, params) {
21
+ return client.query(sql, params);
22
+ }
23
+ async function listPostgresDatabases(config) {
24
+ const client = createClient(config, config.database || "postgres");
25
+ await client.connect();
26
+ try {
27
+ const result = await query(
28
+ client,
29
+ `SELECT datname
30
+ FROM pg_database
31
+ WHERE datistemplate = false
32
+ ORDER BY datname`
33
+ );
34
+ return result.rows.map((row) => row.datname).filter((name) => !isSystemDatabase({ engine: "postgres", name }));
35
+ } finally {
36
+ await client.end();
37
+ }
38
+ }
39
+ async function ensureRole(client, params) {
40
+ const { username, password } = params;
41
+ const ident = quoteIdent({ engine: "postgres", name: username });
42
+ const passwordLiteral = quoteLiteral(password);
43
+ const existing = await query(
44
+ client,
45
+ "SELECT 1 FROM pg_roles WHERE rolname = $1",
46
+ [username]
47
+ );
48
+ const statements = [];
49
+ if (existing.rowCount && existing.rowCount > 0) {
50
+ const sql2 = `ALTER ROLE ${ident} WITH LOGIN PASSWORD ${passwordLiteral}`;
51
+ statements.push(sql2);
52
+ await query(client, sql2);
53
+ return { created: false, statements };
54
+ }
55
+ const sql = `CREATE ROLE ${ident} WITH LOGIN PASSWORD ${passwordLiteral}`;
56
+ statements.push(sql);
57
+ await query(client, sql);
58
+ return { created: true, statements };
59
+ }
60
+ async function grantReadonlyInDatabase(client, params) {
61
+ const { username } = params;
62
+ const ident = quoteIdent({ engine: "postgres", name: username });
63
+ const statements = [];
64
+ const schemasResult = await query(
65
+ client,
66
+ `SELECT nspname
67
+ FROM pg_namespace
68
+ WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
69
+ AND nspname NOT LIKE 'pg_temp_%'
70
+ AND nspname NOT LIKE 'pg_toast_temp_%'
71
+ ORDER BY nspname`
72
+ );
73
+ const schemas = schemasResult.rows.map(
74
+ (row) => row.nspname
75
+ );
76
+ if (schemas.length === 0) {
77
+ schemas.push("public");
78
+ }
79
+ for (const schema of schemas) {
80
+ const schemaIdent = quoteIdent({ engine: "postgres", name: schema });
81
+ const grants = [
82
+ `GRANT USAGE ON SCHEMA ${schemaIdent} TO ${ident}`,
83
+ `GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaIdent} TO ${ident}`,
84
+ `GRANT SELECT ON ALL SEQUENCES IN SCHEMA ${schemaIdent} TO ${ident}`,
85
+ `ALTER DEFAULT PRIVILEGES IN SCHEMA ${schemaIdent} GRANT SELECT ON TABLES TO ${ident}`,
86
+ `ALTER DEFAULT PRIVILEGES IN SCHEMA ${schemaIdent} GRANT SELECT ON SEQUENCES TO ${ident}`
87
+ ];
88
+ for (const sql of grants) {
89
+ statements.push(sql);
90
+ await query(client, sql);
91
+ }
92
+ }
93
+ return statements;
94
+ }
95
+ async function applyPostgresReadonly(params) {
96
+ const {
97
+ config,
98
+ username,
99
+ password,
100
+ databases,
101
+ dryRun = false,
102
+ verbose = false
103
+ } = params;
104
+ const statements = [];
105
+ let created = false;
106
+ if (dryRun) {
107
+ const ident = quoteIdent({ engine: "postgres", name: username });
108
+ statements.push(
109
+ `-- Would CREATE/ALTER ROLE ${ident} WITH LOGIN PASSWORD ***`
110
+ );
111
+ for (const database of databases) {
112
+ const dbIdent = quoteIdent({ engine: "postgres", name: database });
113
+ statements.push(`GRANT CONNECT ON DATABASE ${dbIdent} TO ${ident}`);
114
+ statements.push(
115
+ `-- In database ${database}: GRANT USAGE/SELECT on all user schemas + ALTER DEFAULT PRIVILEGES`
116
+ );
117
+ }
118
+ return { created: true, statements, databases };
119
+ }
120
+ const adminDb = config.database || "postgres";
121
+ const adminClient = createClient(config, adminDb);
122
+ await adminClient.connect();
123
+ try {
124
+ if (verbose) {
125
+ console.log(
126
+ ` Connected to Postgres as ${config.user}@${config.host}/${adminDb}`
127
+ );
128
+ }
129
+ const roleResult = await ensureRole(adminClient, { username, password });
130
+ created = roleResult.created;
131
+ statements.push(...roleResult.statements);
132
+ const ident = quoteIdent({ engine: "postgres", name: username });
133
+ for (const database of databases) {
134
+ const dbIdent = quoteIdent({ engine: "postgres", name: database });
135
+ const connectSql = `GRANT CONNECT ON DATABASE ${dbIdent} TO ${ident}`;
136
+ statements.push(connectSql);
137
+ await query(adminClient, connectSql);
138
+ }
139
+ } finally {
140
+ await adminClient.end();
141
+ }
142
+ for (const database of databases) {
143
+ const dbClient = createClient(config, database);
144
+ await dbClient.connect();
145
+ try {
146
+ if (verbose) {
147
+ console.log(` Granting read-only in database ${database}`);
148
+ }
149
+ const dbStatements = await grantReadonlyInDatabase(dbClient, {
150
+ username
151
+ });
152
+ statements.push(...dbStatements);
153
+ } finally {
154
+ await dbClient.end();
155
+ }
156
+ }
157
+ return { created, statements, databases };
158
+ }
159
+
160
+ export {
161
+ listPostgresDatabases,
162
+ applyPostgresReadonly
163
+ };
@@ -0,0 +1,30 @@
1
+ // src/commands/db/create-readonly-user/schema.js
2
+ import { z } from "zod";
3
+ var ENGINES = ["postgres", "mysql"];
4
+ var createReadonlyUserOptionsSchema = z.object({
5
+ engine: z.enum(["postgres", "mysql"]).optional().describe(
6
+ "Database engine (postgres or mysql); inferred from --url when omitted"
7
+ ),
8
+ url: z.string().optional().describe(
9
+ "Admin connection URL (postgres://\u2026 or mysql://\u2026). Defaults to DATABASE_URL / MYSQL_URL / POSTGRES_URL."
10
+ ),
11
+ database: z.string().optional().describe('Target database name, or "all" for every non-system database'),
12
+ username: z.string().optional().describe("Read-only username to create (default: readonly)"),
13
+ password: z.string().optional().describe("Password for the new user (generated when omitted)"),
14
+ hostPattern: z.string().optional().describe("MySQL user host pattern (default: %)"),
15
+ ssl: z.boolean().optional().describe(
16
+ "Force SSL on/off. Default: off for localhost, on (loose) for remote hosts."
17
+ ),
18
+ yes: z.boolean().optional().default(false).describe("Skip the confirmation prompt"),
19
+ dryRun: z.boolean().optional().default(false).describe("Print the SQL plan without applying it"),
20
+ verbose: z.boolean().optional().default(false).describe("Enable verbose logging")
21
+ });
22
+ var DEFAULT_READONLY_USERNAME = "readonly";
23
+ var DEFAULT_MYSQL_HOST_PATTERN = "%";
24
+
25
+ export {
26
+ ENGINES,
27
+ createReadonlyUserOptionsSchema,
28
+ DEFAULT_READONLY_USERNAME,
29
+ DEFAULT_MYSQL_HOST_PATTERN
30
+ };
File without changes
File without changes