@mtndev/cli 1.1.0 → 2.0.1

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 (260) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/cjs/__chunks/VH7oDXx4.cjs +28 -0
  3. package/cjs/commands/aws/ec2/allow-ip/handler.cjs +261 -0
  4. package/cjs/commands/aws/ec2/allow-ip/handler.d.ts +6 -0
  5. package/cjs/commands/aws/ec2/allow-ip/index.cjs +25 -0
  6. package/cjs/commands/aws/ec2/allow-ip/index.d.ts +3 -0
  7. package/cjs/commands/aws/ec2/allow-ip/schema.cjs +33 -0
  8. package/cjs/commands/aws/ec2/allow-ip/schema.d.ts +33 -0
  9. package/cjs/commands/aws/ec2/allow-ip/utils.cjs +379 -0
  10. package/cjs/commands/aws/ec2/allow-ip/utils.d.ts +189 -0
  11. package/cjs/commands/aws/iam/admin-group.cjs +111 -0
  12. package/cjs/commands/aws/iam/admin-group.d.ts +55 -0
  13. package/cjs/commands/aws/iam/break-glass/handler.cjs +127 -0
  14. package/cjs/commands/aws/iam/break-glass/handler.d.ts +7 -0
  15. package/cjs/commands/aws/iam/break-glass/index.cjs +7 -0
  16. package/cjs/commands/aws/iam/break-glass/index.d.ts +2 -0
  17. package/cjs/commands/aws/iam/break-glass/schema.cjs +21 -0
  18. package/cjs/commands/aws/iam/break-glass/schema.d.ts +25 -0
  19. package/cjs/commands/aws/iam/check-admin/handler.cjs +89 -0
  20. package/cjs/commands/aws/iam/check-admin/handler.d.ts +5 -0
  21. package/cjs/commands/aws/iam/check-admin/index.cjs +7 -0
  22. package/cjs/commands/aws/iam/check-admin/index.d.ts +2 -0
  23. package/cjs/commands/aws/iam/check-admin/schema.cjs +19 -0
  24. package/cjs/commands/aws/iam/check-admin/schema.d.ts +19 -0
  25. package/cjs/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.json +20 -0
  26. package/cjs/commands/aws/iam/policies/sts-federation.json +11 -0
  27. package/cjs/commands/aws/iam/policies/user-admins-deny-list.json +175 -0
  28. package/cjs/commands/aws/iam/policies/user-admins-deny-regions-list.json +41 -0
  29. package/cjs/commands/aws/iam/policies/user-admins-self-service-iam.json +56 -0
  30. package/cjs/commands/aws/iam/policies/user-admins-write-list.json +117 -0
  31. package/cjs/commands/aws/iam/remove-admin/handler.cjs +120 -0
  32. package/cjs/commands/aws/iam/remove-admin/handler.d.ts +6 -0
  33. package/cjs/commands/aws/iam/remove-admin/index.cjs +7 -0
  34. package/cjs/commands/aws/iam/remove-admin/index.d.ts +2 -0
  35. package/cjs/commands/aws/iam/remove-admin/schema.cjs +22 -0
  36. package/cjs/commands/aws/iam/remove-admin/schema.d.ts +28 -0
  37. package/cjs/commands/aws/iam/setup-acl/handler.cjs +227 -0
  38. package/cjs/commands/aws/iam/setup-acl/handler.d.ts +6 -0
  39. package/cjs/commands/aws/iam/setup-acl/index.cjs +13 -0
  40. package/cjs/commands/aws/iam/setup-acl/index.d.ts +3 -0
  41. package/cjs/commands/aws/iam/setup-acl/schema.cjs +19 -0
  42. package/cjs/commands/aws/iam/setup-acl/schema.d.ts +24 -0
  43. package/cjs/commands/aws/iam/setup-acl/utils.cjs +305 -0
  44. package/cjs/commands/aws/iam/setup-acl/utils.d.ts +61 -0
  45. package/cjs/commands/aws/iam/users/handler.cjs +59 -0
  46. package/cjs/commands/aws/iam/users/handler.d.ts +5 -0
  47. package/cjs/commands/aws/iam/users/index.cjs +18 -0
  48. package/cjs/commands/aws/iam/users/index.d.ts +3 -0
  49. package/cjs/commands/aws/iam/users/schema.cjs +17 -0
  50. package/cjs/commands/aws/iam/users/schema.d.ts +18 -0
  51. package/cjs/commands/aws/iam/users/utils.cjs +454 -0
  52. package/cjs/commands/aws/iam/users/utils.d.ts +119 -0
  53. package/cjs/commands/aws/index.cjs +223 -0
  54. package/cjs/commands/aws/index.d.ts +14 -0
  55. package/cjs/commands/aws/route53/add-record/handler.cjs +264 -0
  56. package/cjs/commands/aws/route53/add-record/handler.d.ts +36 -0
  57. package/cjs/commands/aws/route53/add-record/index.cjs +26 -0
  58. package/cjs/commands/aws/route53/add-record/index.d.ts +3 -0
  59. package/cjs/commands/aws/route53/add-record/schema.cjs +43 -0
  60. package/cjs/commands/aws/route53/add-record/schema.d.ts +45 -0
  61. package/cjs/commands/aws/route53/add-record/utils.cjs +404 -0
  62. package/cjs/commands/aws/route53/add-record/utils.d.ts +216 -0
  63. package/cjs/commands/aws/route53/remove-record/handler.cjs +114 -0
  64. package/cjs/commands/aws/route53/remove-record/handler.d.ts +6 -0
  65. package/cjs/commands/aws/route53/remove-record/index.cjs +5 -0
  66. package/cjs/commands/aws/route53/remove-record/index.d.ts +2 -0
  67. package/cjs/commands/aws/route53/remove-record/schema.cjs +22 -0
  68. package/cjs/commands/aws/route53/remove-record/schema.d.ts +30 -0
  69. package/cjs/commands/aws/schema.cjs +19 -0
  70. package/cjs/commands/aws/schema.d.ts +13 -0
  71. package/cjs/commands/aws/ses/send-email/handler.cjs +73 -0
  72. package/cjs/commands/aws/ses/send-email/handler.d.ts +5 -0
  73. package/cjs/commands/aws/ses/send-email/index.cjs +9 -0
  74. package/cjs/commands/aws/ses/send-email/index.d.ts +3 -0
  75. package/cjs/commands/aws/ses/send-email/schema.cjs +24 -0
  76. package/cjs/commands/aws/ses/send-email/schema.d.ts +39 -0
  77. package/cjs/commands/aws/ses/send-email/utils.cjs +87 -0
  78. package/cjs/commands/aws/ses/send-email/utils.d.ts +47 -0
  79. package/cjs/commands/aws/ses/smtp-password.cjs +72 -0
  80. package/cjs/commands/aws/ses/smtp-password.d.ts +21 -0
  81. package/cjs/commands/aws/utils/exec-aws.cjs +145 -0
  82. package/cjs/commands/aws/utils/exec-aws.d.ts +79 -0
  83. package/cjs/commands/aws/utils/resolve-policy-path.cjs +15 -0
  84. package/cjs/commands/aws/utils/resolve-policy-path.d.ts +8 -0
  85. package/cjs/commands/aws/utils/resolve-profile.cjs +93 -0
  86. package/cjs/commands/aws/utils/resolve-profile.d.ts +28 -0
  87. package/cjs/commands/aws/utils/tty.cjs +54 -0
  88. package/cjs/commands/aws/utils/tty.d.ts +24 -0
  89. package/cjs/commands/db/create-readonly-user/handler.cjs +254 -0
  90. package/cjs/commands/db/create-readonly-user/handler.d.ts +5 -0
  91. package/cjs/commands/db/create-readonly-user/index.cjs +18 -0
  92. package/cjs/commands/db/create-readonly-user/index.d.ts +3 -0
  93. package/cjs/commands/db/create-readonly-user/mysql.cjs +102 -0
  94. package/cjs/commands/db/create-readonly-user/mysql.d.ts +33 -0
  95. package/cjs/commands/db/create-readonly-user/postgres.cjs +209 -0
  96. package/cjs/commands/db/create-readonly-user/postgres.d.ts +31 -0
  97. package/cjs/commands/db/create-readonly-user/schema.cjs +39 -0
  98. package/cjs/commands/db/create-readonly-user/schema.d.ts +55 -0
  99. package/cjs/commands/db/create-readonly-user/utils.cjs +160 -0
  100. package/cjs/commands/db/create-readonly-user/utils.d.ts +112 -0
  101. package/cjs/commands/db/index.cjs +46 -0
  102. package/cjs/commands/db/index.d.ts +6 -0
  103. package/cjs/commands/doppler/handler.cjs +95 -9
  104. package/cjs/commands/doppler/index.cjs +33 -41
  105. package/cjs/commands/doppler/index.d.ts +1 -0
  106. package/cjs/commands/doppler/schema.cjs +130 -6
  107. package/cjs/commands/doppler/schema.d.ts +233 -17
  108. package/cjs/commands/doppler/set-secret.cjs +378 -0
  109. package/cjs/commands/doppler/set-secret.d.ts +113 -0
  110. package/cjs/commands/doppler/utils/exec.cjs +106 -12
  111. package/cjs/commands/doppler/utils.cjs +412 -30
  112. package/cjs/commands/doppler/utils.d.ts +32 -8
  113. package/cjs/commands/icons/handler.cjs +82 -8
  114. package/cjs/commands/icons/index.cjs +15 -31
  115. package/cjs/commands/icons/schema.cjs +101 -13
  116. package/cjs/commands/icons/schema.d.ts +1 -1
  117. package/cjs/commands/icons/utils.cjs +131 -13
  118. package/cjs/commands/index.cjs +54 -82
  119. package/cjs/commands/schema.cjs +25 -8
  120. package/cjs/index.cjs +3 -4
  121. package/esm/commands/aws/ec2/allow-ip/handler.d.ts +6 -0
  122. package/esm/commands/aws/ec2/allow-ip/handler.js +258 -0
  123. package/esm/commands/aws/ec2/allow-ip/index.d.ts +3 -0
  124. package/esm/commands/aws/ec2/allow-ip/index.js +4 -0
  125. package/esm/commands/aws/ec2/allow-ip/schema.d.ts +33 -0
  126. package/esm/commands/aws/ec2/allow-ip/schema.js +29 -0
  127. package/esm/commands/aws/ec2/allow-ip/utils.d.ts +189 -0
  128. package/esm/commands/aws/ec2/allow-ip/utils.js +363 -0
  129. package/esm/commands/aws/iam/admin-group.d.ts +55 -0
  130. package/esm/commands/aws/iam/admin-group.js +104 -0
  131. package/esm/commands/aws/iam/break-glass/handler.d.ts +7 -0
  132. package/esm/commands/aws/iam/break-glass/handler.js +124 -0
  133. package/esm/commands/aws/iam/break-glass/index.d.ts +2 -0
  134. package/esm/commands/aws/iam/break-glass/index.js +4 -0
  135. package/esm/commands/aws/iam/break-glass/schema.d.ts +25 -0
  136. package/esm/commands/aws/iam/break-glass/schema.js +19 -0
  137. package/esm/commands/aws/iam/check-admin/handler.d.ts +5 -0
  138. package/esm/commands/aws/iam/check-admin/handler.js +86 -0
  139. package/esm/commands/aws/iam/check-admin/index.d.ts +2 -0
  140. package/esm/commands/aws/iam/check-admin/index.js +4 -0
  141. package/esm/commands/aws/iam/check-admin/schema.d.ts +19 -0
  142. package/esm/commands/aws/iam/check-admin/schema.js +17 -0
  143. package/esm/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.json +20 -0
  144. package/esm/commands/aws/iam/policies/sts-federation.json +11 -0
  145. package/esm/commands/aws/iam/policies/user-admins-deny-list.json +175 -0
  146. package/esm/commands/aws/iam/policies/user-admins-deny-regions-list.json +41 -0
  147. package/esm/commands/aws/iam/policies/user-admins-self-service-iam.json +56 -0
  148. package/esm/commands/aws/iam/policies/user-admins-write-list.json +117 -0
  149. package/esm/commands/aws/iam/remove-admin/handler.d.ts +6 -0
  150. package/esm/commands/aws/iam/remove-admin/handler.js +117 -0
  151. package/esm/commands/aws/iam/remove-admin/index.d.ts +2 -0
  152. package/esm/commands/aws/iam/remove-admin/index.js +4 -0
  153. package/esm/commands/aws/iam/remove-admin/schema.d.ts +28 -0
  154. package/esm/commands/aws/iam/remove-admin/schema.js +20 -0
  155. package/esm/commands/aws/iam/setup-acl/handler.d.ts +6 -0
  156. package/esm/commands/aws/iam/setup-acl/handler.js +224 -0
  157. package/esm/commands/aws/iam/setup-acl/index.d.ts +3 -0
  158. package/esm/commands/aws/iam/setup-acl/index.js +4 -0
  159. package/esm/commands/aws/iam/setup-acl/schema.d.ts +24 -0
  160. package/esm/commands/aws/iam/setup-acl/schema.js +18 -0
  161. package/esm/commands/aws/iam/setup-acl/utils.d.ts +61 -0
  162. package/esm/commands/aws/iam/setup-acl/utils.js +298 -0
  163. package/esm/commands/aws/iam/users/handler.d.ts +5 -0
  164. package/esm/commands/aws/iam/users/handler.js +56 -0
  165. package/esm/commands/aws/iam/users/index.d.ts +3 -0
  166. package/esm/commands/aws/iam/users/index.js +4 -0
  167. package/esm/commands/aws/iam/users/schema.d.ts +18 -0
  168. package/esm/commands/aws/iam/users/schema.js +16 -0
  169. package/esm/commands/aws/iam/users/utils.d.ts +119 -0
  170. package/esm/commands/aws/iam/users/utils.js +440 -0
  171. package/esm/commands/aws/index.d.ts +14 -0
  172. package/esm/commands/aws/index.js +142 -0
  173. package/esm/commands/aws/route53/add-record/handler.d.ts +36 -0
  174. package/esm/commands/aws/route53/add-record/handler.js +258 -0
  175. package/esm/commands/aws/route53/add-record/index.d.ts +3 -0
  176. package/esm/commands/aws/route53/add-record/index.js +4 -0
  177. package/esm/commands/aws/route53/add-record/schema.d.ts +45 -0
  178. package/esm/commands/aws/route53/add-record/schema.js +40 -0
  179. package/esm/commands/aws/route53/add-record/utils.d.ts +216 -0
  180. package/esm/commands/aws/route53/add-record/utils.js +389 -0
  181. package/esm/commands/aws/route53/remove-record/handler.d.ts +6 -0
  182. package/esm/commands/aws/route53/remove-record/handler.js +111 -0
  183. package/esm/commands/aws/route53/remove-record/index.d.ts +2 -0
  184. package/esm/commands/aws/route53/remove-record/index.js +3 -0
  185. package/esm/commands/aws/route53/remove-record/schema.d.ts +30 -0
  186. package/esm/commands/aws/route53/remove-record/schema.js +21 -0
  187. package/esm/commands/aws/schema.d.ts +13 -0
  188. package/esm/commands/aws/schema.js +16 -0
  189. package/esm/commands/aws/ses/send-email/handler.d.ts +5 -0
  190. package/esm/commands/aws/ses/send-email/handler.js +70 -0
  191. package/esm/commands/aws/ses/send-email/index.d.ts +3 -0
  192. package/esm/commands/aws/ses/send-email/index.js +4 -0
  193. package/esm/commands/aws/ses/send-email/schema.d.ts +39 -0
  194. package/esm/commands/aws/ses/send-email/schema.js +23 -0
  195. package/esm/commands/aws/ses/send-email/utils.d.ts +47 -0
  196. package/esm/commands/aws/ses/send-email/utils.js +84 -0
  197. package/esm/commands/aws/ses/smtp-password.d.ts +21 -0
  198. package/esm/commands/aws/ses/smtp-password.js +69 -0
  199. package/esm/commands/aws/utils/exec-aws.d.ts +79 -0
  200. package/esm/commands/aws/utils/exec-aws.js +137 -0
  201. package/esm/commands/aws/utils/resolve-policy-path.d.ts +8 -0
  202. package/esm/commands/aws/utils/resolve-policy-path.js +14 -0
  203. package/esm/commands/aws/utils/resolve-profile.d.ts +28 -0
  204. package/esm/commands/aws/utils/resolve-profile.js +88 -0
  205. package/esm/commands/aws/utils/tty.d.ts +24 -0
  206. package/esm/commands/aws/utils/tty.js +51 -0
  207. package/esm/commands/db/create-readonly-user/handler.d.ts +5 -0
  208. package/esm/commands/db/create-readonly-user/handler.js +251 -0
  209. package/esm/commands/db/create-readonly-user/index.d.ts +3 -0
  210. package/esm/commands/db/create-readonly-user/index.js +4 -0
  211. package/esm/commands/db/create-readonly-user/mysql.d.ts +33 -0
  212. package/esm/commands/db/create-readonly-user/mysql.js +98 -0
  213. package/esm/commands/db/create-readonly-user/postgres.d.ts +31 -0
  214. package/esm/commands/db/create-readonly-user/postgres.js +205 -0
  215. package/esm/commands/db/create-readonly-user/schema.d.ts +55 -0
  216. package/esm/commands/db/create-readonly-user/schema.js +35 -0
  217. package/esm/commands/db/create-readonly-user/utils.d.ts +112 -0
  218. package/esm/commands/db/create-readonly-user/utils.js +151 -0
  219. package/esm/commands/db/index.d.ts +6 -0
  220. package/esm/commands/db/index.js +31 -0
  221. package/esm/commands/doppler/handler.js +92 -9
  222. package/esm/commands/doppler/index.d.ts +1 -0
  223. package/esm/commands/doppler/index.js +6 -41
  224. package/esm/commands/doppler/schema.d.ts +233 -17
  225. package/esm/commands/doppler/schema.js +125 -7
  226. package/esm/commands/doppler/set-secret.d.ts +113 -0
  227. package/esm/commands/doppler/set-secret.js +370 -0
  228. package/esm/commands/doppler/utils/exec.js +100 -12
  229. package/esm/commands/doppler/utils.d.ts +32 -8
  230. package/esm/commands/doppler/utils.js +396 -30
  231. package/esm/commands/icons/handler.js +79 -8
  232. package/esm/commands/icons/index.js +4 -31
  233. package/esm/commands/icons/schema.d.ts +1 -1
  234. package/esm/commands/icons/schema.js +97 -15
  235. package/esm/commands/icons/utils.js +125 -13
  236. package/esm/commands/index.js +49 -78
  237. package/esm/commands/schema.js +22 -7
  238. package/esm/index.js +3 -4
  239. package/package.json +12 -2
  240. package/vitest.config.ts +11 -0
  241. package/cjs/__chunks/4GFJUCSP.cjs +0 -52
  242. package/cjs/__chunks/4SFWHCB3.cjs +0 -133
  243. package/cjs/__chunks/B2KFW7T7.cjs +0 -1
  244. package/cjs/__chunks/EMMC33QA.cjs +0 -401
  245. package/cjs/__chunks/INFOPAHN.cjs +0 -117
  246. package/cjs/__chunks/J36P6UNE.cjs +0 -75
  247. package/cjs/__chunks/NIMXXHJQ.cjs +0 -92
  248. package/cjs/__chunks/NSRFG4DF.cjs +0 -100
  249. package/cjs/__chunks/WNJ3ZYLI.cjs +0 -1
  250. package/cjs/__chunks/ZMDIOZPT.cjs +0 -22
  251. package/esm/__chunks/46HGXFME.js +0 -0
  252. package/esm/__chunks/6G4PXXKF.js +0 -75
  253. package/esm/__chunks/6L5RNR7G.js +0 -100
  254. package/esm/__chunks/FL7AILGH.js +0 -133
  255. package/esm/__chunks/HJSXC6HP.js +0 -117
  256. package/esm/__chunks/O262GK4B.js +0 -401
  257. package/esm/__chunks/O3CCA76Q.js +0 -22
  258. package/esm/__chunks/SJXQJ7RS.js +0 -92
  259. package/esm/__chunks/SNCKIAOR.js +0 -0
  260. package/esm/__chunks/X3R5PSWH.js +0 -52
@@ -0,0 +1,56 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "ViewAccountInfo",
6
+ "Effect": "Allow",
7
+ "Action": ["iam:GetAccountPasswordPolicy", "iam:ListVirtualMFADevices"],
8
+ "Resource": "*"
9
+ },
10
+ {
11
+ "Sid": "ManageOwnPassword",
12
+ "Effect": "Allow",
13
+ "Action": ["iam:ChangePassword", "iam:GetUser"],
14
+ "Resource": "arn:aws:iam::*:user/${aws:username}"
15
+ },
16
+ {
17
+ "Sid": "ManageOwnAccessKeys",
18
+ "Effect": "Allow",
19
+ "Action": [
20
+ "iam:CreateAccessKey",
21
+ "iam:DeleteAccessKey",
22
+ "iam:ListAccessKeys",
23
+ "iam:UpdateAccessKey",
24
+ "iam:GetAccessKeyLastUsed"
25
+ ],
26
+ "Resource": "arn:aws:iam::*:user/${aws:username}"
27
+ },
28
+ {
29
+ "Sid": "ManageOwnMFA",
30
+ "Effect": "Allow",
31
+ "Action": [
32
+ "iam:CreateVirtualMFADevice",
33
+ "iam:DeleteVirtualMFADevice",
34
+ "iam:EnableMFADevice",
35
+ "iam:ListMFADevices",
36
+ "iam:ResyncMFADevice",
37
+ "iam:DeactivateMFADevice"
38
+ ],
39
+ "Resource": [
40
+ "arn:aws:iam::*:mfa/${aws:username}",
41
+ "arn:aws:iam::*:user/${aws:username}"
42
+ ]
43
+ },
44
+ {
45
+ "Sid": "ValidateIAMPolicies",
46
+ "Effect": "Allow",
47
+ "Action": [
48
+ "access-analyzer:ValidatePolicy",
49
+ "access-analyzer:CheckAccessNotGranted",
50
+ "access-analyzer:CheckNoNewAccess",
51
+ "access-analyzer:CheckNoPublicAccess"
52
+ ],
53
+ "Resource": "*"
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "WriteComputeAndNetwork",
6
+ "Effect": "Allow",
7
+ "Action": [
8
+ "ec2:*",
9
+ "elasticloadbalancing:*",
10
+ "autoscaling:*",
11
+ "application-autoscaling:*",
12
+ "lambda:*",
13
+ "ecs:*",
14
+ "ecr:*",
15
+ "elasticfilesystem:*",
16
+ "route53:*",
17
+ "route53domains:*",
18
+ "cloudfront:*",
19
+ "apigateway:*",
20
+ "servicediscovery:*"
21
+ ],
22
+ "Resource": "*"
23
+ },
24
+ {
25
+ "Sid": "WriteDataAndStorage",
26
+ "Effect": "Allow",
27
+ "Action": ["s3:*", "rds:*", "pi:*", "dynamodb:*", "backup:*"],
28
+ "Resource": "*"
29
+ },
30
+ {
31
+ "Sid": "WriteDeploymentAndOps",
32
+ "Effect": "Allow",
33
+ "Action": [
34
+ "cloudformation:*",
35
+ "cloudwatch:*",
36
+ "logs:*",
37
+ "events:*",
38
+ "scheduler:*",
39
+ "ssm:*",
40
+ "cloudtrail:*",
41
+ "xray:*",
42
+ "states:*",
43
+ "cloudshell:*"
44
+ ],
45
+ "Resource": "*"
46
+ },
47
+ {
48
+ "Sid": "WriteSecurityAndMessaging",
49
+ "Effect": "Allow",
50
+ "Action": [
51
+ "acm:*",
52
+ "secretsmanager:*",
53
+ "kms:*",
54
+ "sns:*",
55
+ "sqs:*",
56
+ "ses:*"
57
+ ],
58
+ "Resource": "*"
59
+ },
60
+ {
61
+ "Sid": "WriteResourceOrganization",
62
+ "Effect": "Allow",
63
+ "Action": ["resource-groups:*", "tag:*", "ram:*"],
64
+ "Resource": "*"
65
+ },
66
+ {
67
+ "Sid": "SupportAndHealth",
68
+ "Effect": "Allow",
69
+ "Action": [
70
+ "support:*",
71
+ "supportplans:Get*",
72
+ "supportplans:List*",
73
+ "health:*",
74
+ "trustedadvisor:*"
75
+ ],
76
+ "Resource": "*"
77
+ },
78
+ {
79
+ "Sid": "Sts",
80
+ "Effect": "Allow",
81
+ "Action": [
82
+ "sts:GetCallerIdentity",
83
+ "sts:GetFederationToken",
84
+ "sts:GetSessionToken"
85
+ ],
86
+ "Resource": "*"
87
+ },
88
+ {
89
+ "Sid": "IamPassRoleForServices",
90
+ "Effect": "Allow",
91
+ "Action": "iam:PassRole",
92
+ "Resource": "arn:aws:iam::*:role/*",
93
+ "Condition": {
94
+ "StringEquals": {
95
+ "iam:PassedToService": [
96
+ "ec2.amazonaws.com",
97
+ "lambda.amazonaws.com",
98
+ "ecs.amazonaws.com",
99
+ "ecs-tasks.amazonaws.com",
100
+ "elasticloadbalancing.amazonaws.com",
101
+ "events.amazonaws.com",
102
+ "apigateway.amazonaws.com",
103
+ "rds.amazonaws.com",
104
+ "backup.amazonaws.com",
105
+ "cloudformation.amazonaws.com"
106
+ ]
107
+ }
108
+ }
109
+ },
110
+ {
111
+ "Sid": "ServiceLinkedRoles",
112
+ "Effect": "Allow",
113
+ "Action": ["iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole"],
114
+ "Resource": "*"
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,120 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("../../../../__chunks/VH7oDXx4.cjs");
3
+ const require_commands_aws_utils_tty = require("../../utils/tty.cjs");
4
+ const require_commands_aws_utils_exec_aws = require("../../utils/exec-aws.cjs");
5
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
6
+ const require_commands_aws_iam_remove_admin_schema = require("./schema.cjs");
7
+ let chalk = require("chalk");
8
+ chalk = require_rolldown_runtime.__toESM(chalk, 1);
9
+ let zod = require("zod");
10
+ //#region src/commands/aws/iam/remove-admin/handler.js
11
+ /**
12
+ * `aws iam remove-admin` handler: remove users from the break-glass
13
+ * acl-admin-do-not-use group, either for one profile or every aws-vault profile.
14
+ * @param {unknown} options
15
+ */
16
+ async function removeAdminCommand(options) {
17
+ try {
18
+ const { profile, all, user, yes, dryRun, verbose } = require_commands_aws_iam_remove_admin_schema.removeAdminOptionsSchema.parse(options);
19
+ require_commands_aws_utils_exec_aws.requireCommands(["aws"]);
20
+ const userFilter = new Set(user);
21
+ if (all || !(profile ?? process.env.AWS_PROFILE)) require_commands_aws_utils_exec_aws.requireCommands(["aws-vault"]);
22
+ /** @type {string[]} */
23
+ let profiles;
24
+ try {
25
+ profiles = require_commands_aws_iam_admin_group.resolveAdminScanProfiles({
26
+ profile,
27
+ all
28
+ });
29
+ } catch (resolveError) {
30
+ if (resolveError instanceof Error && resolveError.message === "No aws-vault profiles with credentials found.") {
31
+ console.error(chalk.default.red(resolveError.message));
32
+ process.exit(1);
33
+ }
34
+ throw resolveError;
35
+ }
36
+ console.log(chalk.default.blue(`\n==> Removing break-glass access (${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}) across ${profiles.length} profile(s)\n`));
37
+ if (dryRun) console.log(chalk.default.yellow("[dry-run] No changes will be made.\n"));
38
+ let removed = 0;
39
+ let cleaned = 0;
40
+ let skipped = 0;
41
+ for (const candidate of profiles) {
42
+ const scan = require_commands_aws_iam_admin_group.resolveProfileScan({
43
+ profile: candidate,
44
+ verbose
45
+ });
46
+ if (!scan) {
47
+ skipped += 1;
48
+ continue;
49
+ }
50
+ if (scan.users.length === 0) {
51
+ if (verbose) console.log(chalk.default.green(`OK ${candidate} (${scan.accountId}) — 0 users`));
52
+ cleaned += 1;
53
+ continue;
54
+ }
55
+ const targets = userFilter.size > 0 ? scan.users.filter((name) => userFilter.has(name)) : scan.users;
56
+ if (targets.length === 0) {
57
+ console.log(chalk.default.dim(`-- ${candidate} (${scan.accountId}) — has users but none match --user`));
58
+ skipped += 1;
59
+ continue;
60
+ }
61
+ console.log(chalk.default.red(`FOUND ${candidate} (${scan.accountId}) — ${targets.length} user(s): ${targets.join(", ")}`));
62
+ if (dryRun) {
63
+ for (const name of targets) console.log(chalk.default.yellow(` [dry-run] would remove ${name} from ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}`));
64
+ continue;
65
+ }
66
+ let confirmed = yes;
67
+ if (!confirmed) confirmed = await require_commands_aws_utils_tty.promptYesNo({
68
+ message: ` Remove ${targets.length} user(s) from ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME} in ${candidate}?`,
69
+ defaultYes: false
70
+ });
71
+ if (!confirmed) {
72
+ console.log(chalk.default.dim(" skipped (not confirmed)"));
73
+ skipped += 1;
74
+ continue;
75
+ }
76
+ for (const name of targets) try {
77
+ scan.run([
78
+ "iam",
79
+ "remove-user-from-group",
80
+ "--group-name",
81
+ require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME,
82
+ "--user-name",
83
+ name
84
+ ], { expectJson: false });
85
+ console.log(chalk.default.green(` removed ${name}`));
86
+ removed += 1;
87
+ } catch (removeError) {
88
+ const reason = removeError instanceof Error ? removeError.message.split("\n")[0] ?? "" : String(removeError);
89
+ console.log(chalk.default.red(` failed to remove ${name}: ${reason}`));
90
+ }
91
+ }
92
+ console.log(chalk.default.blue("\n==> Summary"));
93
+ console.log(` Profiles scanned: ${profiles.length}`);
94
+ console.log(` Users removed: ${removed}`);
95
+ console.log(` Already clean: ${cleaned}`);
96
+ console.log(` Skipped: ${skipped}`);
97
+ if (dryRun) console.log(chalk.default.yellow("\n[dry-run] Re-run without --dry-run to apply changes."));
98
+ } catch (error) {
99
+ if (error instanceof zod.ZodError) {
100
+ console.error(chalk.default.red("\n❌ Invalid command options:"));
101
+ error.errors.forEach((err) => {
102
+ console.error(chalk.default.red(` ${err.path.join(".")}: ${err.message}`));
103
+ });
104
+ process.exit(1);
105
+ }
106
+ const verbose = options?.verbose || false;
107
+ console.error(chalk.default.red("\n❌ remove-admin failed:"));
108
+ if (error instanceof Error) {
109
+ console.error(chalk.default.red(` ${error.message}`));
110
+ if (verbose && error.stack) {
111
+ console.error(chalk.default.gray("\nStack trace:"));
112
+ console.error(chalk.default.gray(error.stack));
113
+ }
114
+ } else console.error(chalk.default.red(` ${String(error)}`));
115
+ console.error(chalk.default.yellow("\n💡 Requires the AWS CLI (and aws-vault when scanning multiple profiles) and iam:RemoveUserFromGroup.\n"));
116
+ process.exit(1);
117
+ }
118
+ }
119
+ //#endregion
120
+ exports.removeAdminCommand = removeAdminCommand;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `aws iam remove-admin` handler: remove users from the break-glass
3
+ * acl-admin-do-not-use group, either for one profile or every aws-vault profile.
4
+ * @param {unknown} options
5
+ */
6
+ export function removeAdminCommand(options: unknown): Promise<void>;
@@ -0,0 +1,7 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
3
+ const require_commands_aws_iam_remove_admin_schema = require("./schema.cjs");
4
+ const require_commands_aws_iam_remove_admin_handler = require("./handler.cjs");
5
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
6
+ exports.removeAdminCommand = require_commands_aws_iam_remove_admin_handler.removeAdminCommand;
7
+ exports.removeAdminOptionsSchema = require_commands_aws_iam_remove_admin_schema.removeAdminOptionsSchema;
@@ -0,0 +1,2 @@
1
+ export * from "./handler.js";
2
+ export * from "./schema.js";
@@ -0,0 +1,22 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_schema = require("../../schema.cjs");
3
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
4
+ let zod = require("zod");
5
+ //#region src/commands/aws/iam/remove-admin/schema.js
6
+ /**
7
+ * Zod schema for `aws iam remove-admin` options.
8
+ */
9
+ const removeAdminOptionsSchema = zod.z.object({
10
+ profile: require_commands_aws_schema.profileField,
11
+ all: zod.z.boolean().optional().default(false).describe("Scan every aws-vault profile (default only when --profile and AWS_PROFILE are unset)"),
12
+ user: zod.z.array(zod.z.string()).optional().default([]).describe("Only remove these user(s); repeatable. Default: every user in the group"),
13
+ yes: zod.z.boolean().optional().default(false).describe("Skip the per-profile confirmation prompt"),
14
+ dryRun: zod.z.boolean().optional().default(false).describe("Preview removals without changing anything"),
15
+ verbose: require_commands_aws_schema.verboseField
16
+ });
17
+ /**
18
+ * @typedef {z.infer<typeof removeAdminOptionsSchema>} RemoveAdminOptions
19
+ */
20
+ //#endregion
21
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
22
+ exports.removeAdminOptionsSchema = removeAdminOptionsSchema;
@@ -0,0 +1,28 @@
1
+ export { ADMIN_GROUP_NAME } from "../admin-group.js";
2
+ /**
3
+ * Zod schema for `aws iam remove-admin` options.
4
+ */
5
+ export const removeAdminOptionsSchema: z.ZodObject<{
6
+ profile: z.ZodOptional<z.ZodString>;
7
+ all: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
+ user: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
9
+ yes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
11
+ verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ verbose: boolean;
14
+ yes: boolean;
15
+ all: boolean;
16
+ user: string[];
17
+ dryRun: boolean;
18
+ profile?: string | undefined;
19
+ }, {
20
+ profile?: string | undefined;
21
+ verbose?: boolean | undefined;
22
+ yes?: boolean | undefined;
23
+ all?: boolean | undefined;
24
+ user?: string[] | undefined;
25
+ dryRun?: boolean | undefined;
26
+ }>;
27
+ export type RemoveAdminOptions = z.infer<typeof removeAdminOptionsSchema>;
28
+ import { z } from "zod";
@@ -0,0 +1,227 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("../../../../__chunks/VH7oDXx4.cjs");
3
+ const require_commands_aws_utils_tty = require("../../utils/tty.cjs");
4
+ const require_commands_aws_utils_exec_aws = require("../../utils/exec-aws.cjs");
5
+ const require_commands_aws_utils_resolve_profile = require("../../utils/resolve-profile.cjs");
6
+ const require_commands_aws_iam_users_utils = require("../users/utils.cjs");
7
+ const require_commands_aws_iam_setup_acl_schema = require("./schema.cjs");
8
+ const require_commands_aws_iam_setup_acl_utils = require("./utils.cjs");
9
+ let chalk = require("chalk");
10
+ chalk = require_rolldown_runtime.__toESM(chalk, 1);
11
+ let zod = require("zod");
12
+ //#region src/commands/aws/iam/setup-acl/handler.js
13
+ /**
14
+ * Decide whether to attach the region restriction policy.
15
+ * @param {{ restrictRegions?: "yes" | "no" }} params
16
+ * @returns {Promise<boolean>}
17
+ */
18
+ async function resolveRestrictRegions(params) {
19
+ const { restrictRegions } = params;
20
+ if (restrictRegions) {
21
+ console.log(`Region restriction: ${restrictRegions}`);
22
+ return restrictRegions === "yes";
23
+ }
24
+ console.log("Region restriction");
25
+ console.log(" The policy UserAdminsDenyRegionsList limits acl-power-users to a hard-coded");
26
+ console.log(" region allowlist. Most accounts should leave this OFF unless you have a strong reason.");
27
+ const restrict = await require_commands_aws_utils_tty.promptYesNo({
28
+ message: " Attach region restriction to acl-power-users?",
29
+ defaultYes: false
30
+ });
31
+ console.log(` → ${restrict ? "yes" : "no"}`);
32
+ console.log("");
33
+ return restrict;
34
+ }
35
+ /**
36
+ * `aws iam setup-acl` handler: idempotently create ACL groups, publish policies,
37
+ * attach/detach them per group, and optionally create IAM users.
38
+ * @param {unknown} options
39
+ */
40
+ async function setupAclCommand(options) {
41
+ try {
42
+ const { restrictRegions, createUsers, profile: profileOption, region, verbose } = require_commands_aws_iam_setup_acl_schema.setupAclOptionsSchema.parse(options);
43
+ require_commands_aws_utils_exec_aws.requireCommands(["aws"]);
44
+ const profile = await require_commands_aws_utils_resolve_profile.resolveProfile({ profile: profileOption });
45
+ const identity = require_commands_aws_utils_exec_aws.getCallerIdentity({
46
+ profile,
47
+ region,
48
+ verbose
49
+ });
50
+ const accountId = identity.Account;
51
+ console.log("Caller:");
52
+ console.log(` Account: ${accountId}`);
53
+ console.log(` Arn: ${identity.Arn}`);
54
+ console.log("");
55
+ const restrict = await resolveRestrictRegions({ restrictRegions });
56
+ console.log("1. Ensure groups exist...");
57
+ for (const group of require_commands_aws_iam_setup_acl_utils.ACL_GROUPS) require_commands_aws_iam_setup_acl_utils.ensureGroup({
58
+ name: group,
59
+ profile,
60
+ verbose
61
+ });
62
+ console.log("");
63
+ console.log("2. Publish custom policies...");
64
+ for (const policy of require_commands_aws_iam_setup_acl_utils.CUSTOM_POLICIES) require_commands_aws_iam_setup_acl_utils.publishPolicy({
65
+ name: policy.name,
66
+ fileName: policy.fileName,
67
+ accountId,
68
+ profile,
69
+ verbose
70
+ });
71
+ console.log("");
72
+ const ADMIN = "arn:aws:iam::aws:policy/AdministratorAccess";
73
+ const IAM_FULL = "arn:aws:iam::aws:policy/IAMFullAccess";
74
+ const READ_ONLY = "arn:aws:iam::aws:policy/ReadOnlyAccess";
75
+ const WRITE_LIST = `arn:aws:iam::${accountId}:policy/UserAdminsWriteList`;
76
+ const DENY_LIST = `arn:aws:iam::${accountId}:policy/UserAdminsDenyList`;
77
+ const SELF_SERVICE = `arn:aws:iam::${accountId}:policy/UserAdminsSelfServiceIAM`;
78
+ const DENY_REGIONS = `arn:aws:iam::${accountId}:policy/UserAdminsDenyRegionsList`;
79
+ const STS_FEDERATION = `arn:aws:iam::${accountId}:policy/sts-federation`;
80
+ const S3_RESTRICTIONS = `arn:aws:iam::${accountId}:policy/S3RestrictionsDenyNonS3Services`;
81
+ console.log("3. Attach policies to groups...");
82
+ require_commands_aws_iam_setup_acl_utils.attach({
83
+ group: "acl-admin-do-not-use",
84
+ arn: ADMIN,
85
+ profile,
86
+ verbose
87
+ });
88
+ require_commands_aws_iam_setup_acl_utils.attach({
89
+ group: "acl-iam-full-access",
90
+ arn: IAM_FULL,
91
+ profile,
92
+ verbose
93
+ });
94
+ require_commands_aws_iam_setup_acl_utils.attach({
95
+ group: "acl-iam-full-access",
96
+ arn: READ_ONLY,
97
+ profile,
98
+ verbose
99
+ });
100
+ require_commands_aws_iam_setup_acl_utils.attach({
101
+ group: "acl-iam-full-access",
102
+ arn: SELF_SERVICE,
103
+ profile,
104
+ verbose
105
+ });
106
+ require_commands_aws_iam_setup_acl_utils.attach({
107
+ group: "acl-iam-full-access",
108
+ arn: STS_FEDERATION,
109
+ profile,
110
+ verbose
111
+ });
112
+ require_commands_aws_iam_setup_acl_utils.detach({
113
+ group: "acl-iam-full-access",
114
+ arn: DENY_LIST,
115
+ profile,
116
+ verbose
117
+ });
118
+ require_commands_aws_iam_setup_acl_utils.attach({
119
+ group: "acl-power-users",
120
+ arn: READ_ONLY,
121
+ profile,
122
+ verbose
123
+ });
124
+ require_commands_aws_iam_setup_acl_utils.attach({
125
+ group: "acl-power-users",
126
+ arn: WRITE_LIST,
127
+ profile,
128
+ verbose
129
+ });
130
+ require_commands_aws_iam_setup_acl_utils.attach({
131
+ group: "acl-power-users",
132
+ arn: DENY_LIST,
133
+ profile,
134
+ verbose
135
+ });
136
+ require_commands_aws_iam_setup_acl_utils.attach({
137
+ group: "acl-power-users",
138
+ arn: SELF_SERVICE,
139
+ profile,
140
+ verbose
141
+ });
142
+ require_commands_aws_iam_setup_acl_utils.attach({
143
+ group: "acl-read-only",
144
+ arn: READ_ONLY,
145
+ profile,
146
+ verbose
147
+ });
148
+ require_commands_aws_iam_setup_acl_utils.attach({
149
+ group: "acl-read-only",
150
+ arn: STS_FEDERATION,
151
+ profile,
152
+ verbose
153
+ });
154
+ require_commands_aws_iam_setup_acl_utils.attach({
155
+ group: "acl-s3-restrictions",
156
+ arn: S3_RESTRICTIONS,
157
+ profile,
158
+ verbose
159
+ });
160
+ console.log("");
161
+ console.log("4. Apply region restriction to acl-power-users...");
162
+ if (restrict) require_commands_aws_iam_setup_acl_utils.attach({
163
+ group: "acl-power-users",
164
+ arn: DENY_REGIONS,
165
+ profile,
166
+ verbose
167
+ });
168
+ else require_commands_aws_iam_setup_acl_utils.detach({
169
+ group: "acl-power-users",
170
+ arn: DENY_REGIONS,
171
+ profile,
172
+ verbose
173
+ });
174
+ console.log("");
175
+ console.log("5. Detach legacy policies (if present)...");
176
+ const legacyArns = [
177
+ "arn:aws:iam::aws:policy/PowerUserAccess",
178
+ "arn:aws:iam::aws:policy/IAMReadOnlyAccess",
179
+ `arn:aws:iam::${accountId}:policy/UserAdminsAllowList`,
180
+ `arn:aws:iam::${accountId}:policy/UserAdminsDenyListServices`,
181
+ `arn:aws:iam::${accountId}:policy/UserAdminsDenyListGpu`
182
+ ];
183
+ for (const group of require_commands_aws_iam_setup_acl_utils.ACL_GROUPS) for (const arn of legacyArns) require_commands_aws_iam_setup_acl_utils.detach({
184
+ group,
185
+ arn,
186
+ profile,
187
+ verbose
188
+ });
189
+ console.log("");
190
+ console.log("6. Final state:");
191
+ require_commands_aws_iam_setup_acl_utils.printFinalState({
192
+ profile,
193
+ verbose
194
+ });
195
+ console.log("");
196
+ if (createUsers) {
197
+ console.log("7. Create IAM users (optional)");
198
+ console.log("");
199
+ await require_commands_aws_iam_users_utils.createUsersInteractive({
200
+ profile,
201
+ verbose
202
+ });
203
+ }
204
+ console.log(chalk.default.green("\n✅ ACL setup complete."));
205
+ } catch (error) {
206
+ if (error instanceof zod.ZodError) {
207
+ console.error(chalk.default.red("\n❌ Invalid command options:"));
208
+ error.errors.forEach((err) => {
209
+ console.error(chalk.default.red(` ${err.path.join(".")}: ${err.message}`));
210
+ });
211
+ process.exit(1);
212
+ }
213
+ const verbose = options?.verbose || false;
214
+ console.error(chalk.default.red("\n❌ iam setup-acl failed:"));
215
+ if (error instanceof Error) {
216
+ console.error(chalk.default.red(` ${error.message}`));
217
+ if (verbose && error.stack) {
218
+ console.error(chalk.default.gray("\nStack trace:"));
219
+ console.error(chalk.default.gray(error.stack));
220
+ }
221
+ } else console.error(chalk.default.red(` ${String(error)}`));
222
+ console.error(chalk.default.yellow("\n💡 Run with a profile that has IAMFullAccess (e.g. md-*-iam-admin).\n"));
223
+ process.exit(1);
224
+ }
225
+ }
226
+ //#endregion
227
+ exports.setupAclCommand = setupAclCommand;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `aws iam setup-acl` handler: idempotently create ACL groups, publish policies,
3
+ * attach/detach them per group, and optionally create IAM users.
4
+ * @param {unknown} options
5
+ */
6
+ export function setupAclCommand(options: unknown): Promise<void>;
@@ -0,0 +1,13 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_iam_setup_acl_schema = require("./schema.cjs");
3
+ const require_commands_aws_iam_setup_acl_utils = require("./utils.cjs");
4
+ const require_commands_aws_iam_setup_acl_handler = require("./handler.cjs");
5
+ exports.ACL_GROUPS = require_commands_aws_iam_setup_acl_utils.ACL_GROUPS;
6
+ exports.CUSTOM_POLICIES = require_commands_aws_iam_setup_acl_utils.CUSTOM_POLICIES;
7
+ exports.attach = require_commands_aws_iam_setup_acl_utils.attach;
8
+ exports.detach = require_commands_aws_iam_setup_acl_utils.detach;
9
+ exports.ensureGroup = require_commands_aws_iam_setup_acl_utils.ensureGroup;
10
+ exports.printFinalState = require_commands_aws_iam_setup_acl_utils.printFinalState;
11
+ exports.publishPolicy = require_commands_aws_iam_setup_acl_utils.publishPolicy;
12
+ exports.setupAclCommand = require_commands_aws_iam_setup_acl_handler.setupAclCommand;
13
+ exports.setupAclOptionsSchema = require_commands_aws_iam_setup_acl_schema.setupAclOptionsSchema;
@@ -0,0 +1,3 @@
1
+ export * from "./handler.js";
2
+ export * from "./schema.js";
3
+ export * from "./utils.js";
@@ -0,0 +1,19 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_schema = require("../../schema.cjs");
3
+ let zod = require("zod");
4
+ //#region src/commands/aws/iam/setup-acl/schema.js
5
+ /**
6
+ * Zod schema for `aws iam setup-acl` options.
7
+ */
8
+ const setupAclOptionsSchema = zod.z.object({
9
+ restrictRegions: zod.z.enum(["yes", "no"]).optional().describe("Attach the region restriction to acl-power-users (skips the interactive prompt)"),
10
+ createUsers: zod.z.boolean().optional().default(true).describe("Create IAM users after configuring groups (use --no-create-users to skip)"),
11
+ profile: require_commands_aws_schema.profileField,
12
+ region: require_commands_aws_schema.regionField,
13
+ verbose: require_commands_aws_schema.verboseField
14
+ });
15
+ /**
16
+ * @typedef {z.infer<typeof setupAclOptionsSchema>} SetupAclOptions
17
+ */
18
+ //#endregion
19
+ exports.setupAclOptionsSchema = setupAclOptionsSchema;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Zod schema for `aws iam setup-acl` options.
3
+ */
4
+ export const setupAclOptionsSchema: z.ZodObject<{
5
+ restrictRegions: z.ZodOptional<z.ZodEnum<["yes", "no"]>>;
6
+ createUsers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ profile: z.ZodOptional<z.ZodString>;
8
+ region: z.ZodOptional<z.ZodString>;
9
+ verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ verbose: boolean;
12
+ createUsers: boolean;
13
+ profile?: string | undefined;
14
+ region?: string | undefined;
15
+ restrictRegions?: "yes" | "no" | undefined;
16
+ }, {
17
+ profile?: string | undefined;
18
+ region?: string | undefined;
19
+ verbose?: boolean | undefined;
20
+ restrictRegions?: "yes" | "no" | undefined;
21
+ createUsers?: boolean | undefined;
22
+ }>;
23
+ export type SetupAclOptions = z.infer<typeof setupAclOptionsSchema>;
24
+ import { z } from "zod";