@rockcarver/frodo-cli 2.0.0-5 → 2.0.0-51

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 (482) hide show
  1. package/CHANGELOG.md +365 -6
  2. package/esm/app.js +20 -3
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +33 -7
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +4 -5
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +4 -5
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +4 -5
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +4 -5
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +5 -6
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +4 -5
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +4 -5
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +1 -1
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +5 -6
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +4 -5
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +4 -5
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +4 -5
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +4 -5
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +5 -6
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +4 -5
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +4 -5
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +2 -2
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -5
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +12 -8
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +38 -0
  47. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-export.js +41 -0
  49. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-import.js +45 -0
  51. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  52. package/esm/cli/admin/admin-federation-list.js +25 -0
  53. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  54. package/esm/cli/admin/admin-federation.js +13 -0
  55. package/esm/cli/admin/admin-federation.js.map +1 -0
  56. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +41 -0
  57. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -0
  58. package/esm/cli/admin/admin-get-access-token.js +10 -7
  59. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  60. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +11 -8
  61. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +9 -6
  63. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  64. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +9 -6
  65. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  66. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +9 -6
  67. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  68. package/esm/cli/admin/admin-list-static-user-mappings.js +10 -7
  69. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  70. package/esm/cli/admin/admin-remove-static-user-mapping.js +10 -6
  71. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  72. package/esm/cli/admin/admin-repair-org-model.js +9 -6
  73. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  74. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +10 -7
  75. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  76. package/esm/cli/admin/admin-show-generic-extension-attributes.js +9 -6
  77. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  78. package/esm/cli/admin/admin-train-auto-access-model.js +30 -0
  79. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  80. package/esm/cli/admin/admin.js +8 -2
  81. package/esm/cli/admin/admin.js.map +1 -1
  82. package/esm/cli/agent/agent-delete.js +11 -7
  83. package/esm/cli/agent/agent-delete.js.map +1 -1
  84. package/esm/cli/agent/agent-describe.js +4 -5
  85. package/esm/cli/agent/agent-describe.js.map +1 -1
  86. package/esm/cli/agent/agent-export.js +9 -10
  87. package/esm/cli/agent/agent-export.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-delete.js +11 -7
  89. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-describe.js +4 -5
  91. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-export.js +9 -10
  93. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway-import.js +5 -6
  95. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  96. package/esm/cli/agent/agent-gateway-list.js +4 -5
  97. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  98. package/esm/cli/agent/agent-gateway.js +1 -1
  99. package/esm/cli/agent/agent-gateway.js.map +1 -1
  100. package/esm/cli/agent/agent-import.js +5 -6
  101. package/esm/cli/agent/agent-import.js.map +1 -1
  102. package/esm/cli/agent/agent-java-delete.js +11 -7
  103. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  104. package/esm/cli/agent/agent-java-describe.js +4 -5
  105. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  106. package/esm/cli/agent/agent-java-export.js +9 -10
  107. package/esm/cli/agent/agent-java-export.js.map +1 -1
  108. package/esm/cli/agent/agent-java-import.js +5 -6
  109. package/esm/cli/agent/agent-java-import.js.map +1 -1
  110. package/esm/cli/agent/agent-java-list.js +4 -5
  111. package/esm/cli/agent/agent-java-list.js.map +1 -1
  112. package/esm/cli/agent/agent-java.js +1 -1
  113. package/esm/cli/agent/agent-java.js.map +1 -1
  114. package/esm/cli/agent/agent-list.js +4 -5
  115. package/esm/cli/agent/agent-list.js.map +1 -1
  116. package/esm/cli/agent/agent-web-delete.js +11 -7
  117. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  118. package/esm/cli/agent/agent-web-describe.js +4 -5
  119. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  120. package/esm/cli/agent/agent-web-export.js +9 -10
  121. package/esm/cli/agent/agent-web-export.js.map +1 -1
  122. package/esm/cli/agent/agent-web-import.js +5 -6
  123. package/esm/cli/agent/agent-web-import.js.map +1 -1
  124. package/esm/cli/agent/agent-web-list.js +4 -5
  125. package/esm/cli/agent/agent-web-list.js.map +1 -1
  126. package/esm/cli/agent/agent-web.js +3 -3
  127. package/esm/cli/agent/agent-web.js.map +1 -1
  128. package/esm/cli/agent/agent.js +2 -2
  129. package/esm/cli/agent/agent.js.map +1 -1
  130. package/esm/cli/app/app-delete.js +24 -9
  131. package/esm/cli/app/app-delete.js.map +1 -1
  132. package/esm/cli/app/app-describe.js +6 -6
  133. package/esm/cli/app/app-describe.js.map +1 -1
  134. package/esm/cli/app/app-export.js +14 -14
  135. package/esm/cli/app/app-export.js.map +1 -1
  136. package/esm/cli/app/app-import.js +18 -18
  137. package/esm/cli/app/app-import.js.map +1 -1
  138. package/esm/cli/app/app-list.js +9 -9
  139. package/esm/cli/app/app-list.js.map +1 -1
  140. package/esm/cli/app/app.js +8 -12
  141. package/esm/cli/app/app.js.map +1 -1
  142. package/esm/cli/authn/authn-describe.js +26 -0
  143. package/esm/cli/authn/authn-describe.js.map +1 -0
  144. package/esm/cli/authn/authn-export.js +22 -0
  145. package/esm/cli/authn/authn-export.js.map +1 -0
  146. package/esm/cli/authn/authn-import.js +22 -0
  147. package/esm/cli/authn/authn-import.js.map +1 -0
  148. package/esm/cli/authn/authn.js +12 -0
  149. package/esm/cli/authn/authn.js.map +1 -0
  150. package/esm/cli/authz/authz-policy-delete.js +8 -9
  151. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-describe.js +5 -6
  153. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-export.js +15 -16
  155. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  156. package/esm/cli/authz/authz-policy-import.js +8 -9
  157. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  158. package/esm/cli/authz/authz-policy-list.js +8 -9
  159. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  160. package/esm/cli/authz/authz-policy.js +1 -1
  161. package/esm/cli/authz/authz-policy.js.map +1 -1
  162. package/esm/cli/authz/authz-set-delete.js +8 -9
  163. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  164. package/esm/cli/authz/authz-set-describe.js +5 -6
  165. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  166. package/esm/cli/authz/authz-set-export.js +11 -12
  167. package/esm/cli/authz/authz-set-export.js.map +1 -1
  168. package/esm/cli/authz/authz-set-import.js +8 -9
  169. package/esm/cli/authz/authz-set-import.js.map +1 -1
  170. package/esm/cli/authz/authz-set-list.js +6 -7
  171. package/esm/cli/authz/authz-set-list.js.map +1 -1
  172. package/esm/cli/authz/authz-set.js +1 -1
  173. package/esm/cli/authz/authz-set.js.map +1 -1
  174. package/esm/cli/authz/authz-type-delete.js +10 -11
  175. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  176. package/esm/cli/authz/authz-type-describe.js +6 -7
  177. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  178. package/esm/cli/authz/authz-type-export.js +13 -14
  179. package/esm/cli/authz/authz-type-export.js.map +1 -1
  180. package/esm/cli/authz/authz-type-import.js +11 -12
  181. package/esm/cli/authz/authz-type-import.js.map +1 -1
  182. package/esm/cli/authz/authz-type-list.js +6 -7
  183. package/esm/cli/authz/authz-type-list.js.map +1 -1
  184. package/esm/cli/authz/authz-type.js +1 -1
  185. package/esm/cli/authz/authz-type.js.map +1 -1
  186. package/esm/cli/authz/authz.js +2 -2
  187. package/esm/cli/authz/authz.js.map +1 -1
  188. package/esm/cli/config/config-delete.js +18 -0
  189. package/esm/cli/config/config-delete.js.map +1 -0
  190. package/esm/cli/config/config-describe.js +18 -0
  191. package/esm/cli/config/config-describe.js.map +1 -0
  192. package/esm/cli/config/config-export.js +45 -0
  193. package/esm/cli/config/config-export.js.map +1 -0
  194. package/esm/cli/config/config-import.js +54 -0
  195. package/esm/cli/config/config-import.js.map +1 -0
  196. package/esm/cli/config/config-list.js +18 -0
  197. package/esm/cli/config/config-list.js.map +1 -0
  198. package/esm/cli/config/config.js +19 -0
  199. package/esm/cli/config/config.js.map +1 -0
  200. package/esm/cli/conn/conn-delete.js +2 -3
  201. package/esm/cli/conn/conn-delete.js.map +1 -1
  202. package/esm/cli/conn/conn-describe.js +2 -3
  203. package/esm/cli/conn/conn-describe.js.map +1 -1
  204. package/esm/cli/conn/conn-list.js +2 -3
  205. package/esm/cli/conn/conn-list.js.map +1 -1
  206. package/esm/cli/conn/conn-save.js +25 -15
  207. package/esm/cli/conn/conn-save.js.map +1 -1
  208. package/esm/cli/conn/conn.js +2 -2
  209. package/esm/cli/conn/conn.js.map +1 -1
  210. package/esm/cli/email/email-template-export.js +12 -12
  211. package/esm/cli/email/email-template-export.js.map +1 -1
  212. package/esm/cli/email/email-template-import.js +12 -13
  213. package/esm/cli/email/email-template-import.js.map +1 -1
  214. package/esm/cli/email/email-template-list.js +6 -7
  215. package/esm/cli/email/email-template-list.js.map +1 -1
  216. package/esm/cli/email/email-template.js +1 -1
  217. package/esm/cli/email/email-template.js.map +1 -1
  218. package/esm/cli/email/email.js +2 -2
  219. package/esm/cli/email/email.js.map +1 -1
  220. package/esm/cli/esv/esv-apply.js +16 -9
  221. package/esm/cli/esv/esv-apply.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-create.js +13 -8
  223. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-delete.js +10 -10
  225. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-describe.js +7 -7
  227. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-export.js +20 -7
  229. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-import.js +4 -5
  231. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  232. package/esm/cli/esv/esv-secret-list.js +8 -8
  233. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  234. package/esm/cli/esv/esv-secret-set.js +7 -7
  235. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  236. package/esm/cli/esv/esv-secret-version-activate.js +7 -8
  237. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  238. package/esm/cli/esv/esv-secret-version-create.js +13 -8
  239. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  240. package/esm/cli/esv/esv-secret-version-deactivate.js +7 -8
  241. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  242. package/esm/cli/esv/esv-secret-version-delete.js +10 -10
  243. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  244. package/esm/cli/esv/esv-secret-version-list.js +7 -7
  245. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  246. package/esm/cli/esv/esv-secret-version.js +1 -1
  247. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  248. package/esm/cli/esv/esv-secret.js +2 -3
  249. package/esm/cli/esv/esv-secret.js.map +1 -1
  250. package/esm/cli/esv/esv-variable-create.js +9 -8
  251. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  252. package/esm/cli/esv/esv-variable-delete.js +10 -9
  253. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  254. package/esm/cli/esv/esv-variable-describe.js +8 -8
  255. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  256. package/esm/cli/esv/esv-variable-export.js +21 -7
  257. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  258. package/esm/cli/esv/esv-variable-import.js +4 -5
  259. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  260. package/esm/cli/esv/esv-variable-list.js +8 -8
  261. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  262. package/esm/cli/esv/esv-variable-set.js +10 -9
  263. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  264. package/esm/cli/esv/esv-variable.js +2 -3
  265. package/esm/cli/esv/esv-variable.js.map +1 -1
  266. package/esm/cli/esv/esv.js +2 -2
  267. package/esm/cli/esv/esv.js.map +1 -1
  268. package/esm/cli/idm/idm-count.js +7 -8
  269. package/esm/cli/idm/idm-count.js.map +1 -1
  270. package/esm/cli/idm/idm-export.js +22 -16
  271. package/esm/cli/idm/idm-export.js.map +1 -1
  272. package/esm/cli/idm/idm-import.js +20 -14
  273. package/esm/cli/idm/idm-import.js.map +1 -1
  274. package/esm/cli/idm/idm-list.js +7 -8
  275. package/esm/cli/idm/idm-list.js.map +1 -1
  276. package/esm/cli/idm/idm.js +2 -2
  277. package/esm/cli/idm/idm.js.map +1 -1
  278. package/esm/cli/idp/idp-export.js +10 -10
  279. package/esm/cli/idp/idp-export.js.map +1 -1
  280. package/esm/cli/idp/idp-import.js +22 -14
  281. package/esm/cli/idp/idp-import.js.map +1 -1
  282. package/esm/cli/idp/idp-list.js +7 -7
  283. package/esm/cli/idp/idp-list.js.map +1 -1
  284. package/esm/cli/idp/idp.js +2 -2
  285. package/esm/cli/idp/idp.js.map +1 -1
  286. package/esm/cli/info/info.js +11 -7
  287. package/esm/cli/info/info.js.map +1 -1
  288. package/esm/cli/journey/journey-delete.js +12 -8
  289. package/esm/cli/journey/journey-delete.js.map +1 -1
  290. package/esm/cli/journey/journey-describe.js +20 -12
  291. package/esm/cli/journey/journey-describe.js.map +1 -1
  292. package/esm/cli/journey/journey-disable.js +8 -12
  293. package/esm/cli/journey/journey-disable.js.map +1 -1
  294. package/esm/cli/journey/journey-enable.js +8 -12
  295. package/esm/cli/journey/journey-enable.js.map +1 -1
  296. package/esm/cli/journey/journey-export.js +27 -16
  297. package/esm/cli/journey/journey-export.js.map +1 -1
  298. package/esm/cli/journey/journey-import.js +12 -13
  299. package/esm/cli/journey/journey-import.js.map +1 -1
  300. package/esm/cli/journey/journey-list.js +6 -6
  301. package/esm/cli/journey/journey-list.js.map +1 -1
  302. package/esm/cli/journey/journey-prune.js +21 -13
  303. package/esm/cli/journey/journey-prune.js.map +1 -1
  304. package/esm/cli/journey/journey.js +2 -2
  305. package/esm/cli/journey/journey.js.map +1 -1
  306. package/esm/cli/log/log-fetch.js +65 -35
  307. package/esm/cli/log/log-fetch.js.map +1 -1
  308. package/esm/cli/log/log-key-delete.js +6 -7
  309. package/esm/cli/log/log-key-delete.js.map +1 -1
  310. package/esm/cli/log/log-key-describe.js +4 -5
  311. package/esm/cli/log/log-key-describe.js.map +1 -1
  312. package/esm/cli/log/log-key-list.js +4 -5
  313. package/esm/cli/log/log-key-list.js.map +1 -1
  314. package/esm/cli/log/log-key.js +1 -1
  315. package/esm/cli/log/log-key.js.map +1 -1
  316. package/esm/cli/log/log-list.js +62 -33
  317. package/esm/cli/log/log-list.js.map +1 -1
  318. package/esm/cli/log/log-tail.js +63 -34
  319. package/esm/cli/log/log-tail.js.map +1 -1
  320. package/esm/cli/log/log.js +2 -2
  321. package/esm/cli/log/log.js.map +1 -1
  322. package/esm/cli/oauth/oauth-client-delete.js +18 -0
  323. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  324. package/esm/cli/oauth/oauth-client-describe.js +18 -0
  325. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  326. package/esm/cli/oauth/oauth-client-export.js +48 -0
  327. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  328. package/esm/cli/oauth/oauth-client-import.js +53 -0
  329. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  330. package/esm/cli/oauth/oauth-client-list.js +21 -0
  331. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  332. package/esm/cli/oauth/oauth-client.js +14 -0
  333. package/esm/cli/oauth/oauth-client.js.map +1 -0
  334. package/esm/cli/oauth/oauth.js +13 -0
  335. package/esm/cli/oauth/oauth.js.map +1 -0
  336. package/esm/cli/realm/realm-add-custom-domain.js +6 -6
  337. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  338. package/esm/cli/realm/realm-describe.js +6 -6
  339. package/esm/cli/realm/realm-describe.js.map +1 -1
  340. package/esm/cli/realm/realm-list.js +5 -6
  341. package/esm/cli/realm/realm-list.js.map +1 -1
  342. package/esm/cli/realm/realm-remove-custom-domain.js +9 -6
  343. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  344. package/esm/cli/realm/realm.js +2 -2
  345. package/esm/cli/realm/realm.js.map +1 -1
  346. package/esm/cli/saml/saml-cot-export.js +12 -12
  347. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  348. package/esm/cli/saml/saml-cot-import.js +13 -13
  349. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  350. package/esm/cli/saml/saml-cot-list.js +7 -7
  351. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  352. package/esm/cli/saml/saml-cot.js +1 -1
  353. package/esm/cli/saml/saml-cot.js.map +1 -1
  354. package/esm/cli/saml/saml-delete.js +12 -8
  355. package/esm/cli/saml/saml-delete.js.map +1 -1
  356. package/esm/cli/saml/saml-describe.js +7 -7
  357. package/esm/cli/saml/saml-describe.js.map +1 -1
  358. package/esm/cli/saml/saml-export.js +18 -12
  359. package/esm/cli/saml/saml-export.js.map +1 -1
  360. package/esm/cli/saml/saml-import.js +22 -14
  361. package/esm/cli/saml/saml-import.js.map +1 -1
  362. package/esm/cli/saml/saml-list.js +7 -7
  363. package/esm/cli/saml/saml-list.js.map +1 -1
  364. package/esm/cli/saml/saml-metadata-export.js +8 -8
  365. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  366. package/esm/cli/saml/saml-metadata.js +1 -1
  367. package/esm/cli/saml/saml-metadata.js.map +1 -1
  368. package/esm/cli/saml/saml.js +2 -2
  369. package/esm/cli/saml/saml.js.map +1 -1
  370. package/esm/cli/script/script-delete.js +19 -8
  371. package/esm/cli/script/script-delete.js.map +1 -1
  372. package/esm/cli/script/script-describe.js +4 -5
  373. package/esm/cli/script/script-describe.js.map +1 -1
  374. package/esm/cli/script/script-export.js +10 -15
  375. package/esm/cli/script/script-export.js.map +1 -1
  376. package/esm/cli/script/script-import.js +16 -10
  377. package/esm/cli/script/script-import.js.map +1 -1
  378. package/esm/cli/script/script-list.js +8 -8
  379. package/esm/cli/script/script-list.js.map +1 -1
  380. package/esm/cli/script/script.js +3 -5
  381. package/esm/cli/script/script.js.map +1 -1
  382. package/esm/cli/service/service-delete.js +5 -5
  383. package/esm/cli/service/service-delete.js.map +1 -1
  384. package/esm/cli/service/service-export.js +10 -11
  385. package/esm/cli/service/service-export.js.map +1 -1
  386. package/esm/cli/service/service-import.js +29 -14
  387. package/esm/cli/service/service-import.js.map +1 -1
  388. package/esm/cli/service/service-list.js +4 -4
  389. package/esm/cli/service/service-list.js.map +1 -1
  390. package/esm/cli/service/service.js +2 -2
  391. package/esm/cli/service/service.js.map +1 -1
  392. package/esm/cli/shell/shell.js +55 -0
  393. package/esm/cli/shell/shell.js.map +1 -0
  394. package/esm/cli/theme/theme-delete.js +11 -11
  395. package/esm/cli/theme/theme-delete.js.map +1 -1
  396. package/esm/cli/theme/theme-export.js +14 -14
  397. package/esm/cli/theme/theme-export.js.map +1 -1
  398. package/esm/cli/theme/theme-import.js +14 -14
  399. package/esm/cli/theme/theme-import.js.map +1 -1
  400. package/esm/cli/theme/theme-list.js +6 -6
  401. package/esm/cli/theme/theme-list.js.map +1 -1
  402. package/esm/cli/theme/theme.js +2 -2
  403. package/esm/cli/theme/theme.js.map +1 -1
  404. package/esm/help/SampleData.js +1 -1
  405. package/esm/help/SampleData.js.map +1 -1
  406. package/esm/launch.js +1 -1
  407. package/esm/launch.js.map +1 -1
  408. package/esm/loader.js +2 -2
  409. package/esm/loader.js.map +1 -1
  410. package/esm/ops/AdminFederationOps.js +231 -0
  411. package/esm/ops/AdminFederationOps.js.map +1 -0
  412. package/esm/ops/AdminOps.js +151 -0
  413. package/esm/ops/AdminOps.js.map +1 -0
  414. package/esm/ops/AgentOps.js +213 -150
  415. package/esm/ops/AgentOps.js.map +1 -1
  416. package/esm/ops/ApplicationOps.js +324 -0
  417. package/esm/ops/ApplicationOps.js.map +1 -0
  418. package/esm/ops/AuthenticateOps.js +28 -0
  419. package/esm/ops/AuthenticateOps.js.map +1 -0
  420. package/esm/ops/AuthenticationSettingsOps.js +90 -0
  421. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  422. package/esm/ops/CirclesOfTrustOps.js +98 -78
  423. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  424. package/esm/ops/ConfigOps.js +168 -0
  425. package/esm/ops/ConfigOps.js.map +1 -0
  426. package/esm/ops/ConnectionProfileOps.js +13 -6
  427. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  428. package/esm/ops/EmailTemplateOps.js +122 -127
  429. package/esm/ops/EmailTemplateOps.js.map +1 -1
  430. package/esm/ops/IdmOps.js +101 -182
  431. package/esm/ops/IdmOps.js.map +1 -1
  432. package/esm/ops/IdpOps.js +108 -75
  433. package/esm/ops/IdpOps.js.map +1 -1
  434. package/esm/ops/JourneyOps.js +182 -116
  435. package/esm/ops/JourneyOps.js.map +1 -1
  436. package/esm/ops/LogOps.js +22 -12
  437. package/esm/ops/LogOps.js.map +1 -1
  438. package/esm/ops/NodeOps.js +14 -3
  439. package/esm/ops/NodeOps.js.map +1 -1
  440. package/esm/ops/OAuth2ClientOps.js +71 -49
  441. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  442. package/esm/ops/OrganizationOps.js +14 -22
  443. package/esm/ops/OrganizationOps.js.map +1 -1
  444. package/esm/ops/PolicyOps.js +127 -86
  445. package/esm/ops/PolicyOps.js.map +1 -1
  446. package/esm/ops/PolicySetOps.js +108 -76
  447. package/esm/ops/PolicySetOps.js.map +1 -1
  448. package/esm/ops/RealmOps.js +15 -10
  449. package/esm/ops/RealmOps.js.map +1 -1
  450. package/esm/ops/ResourceTypeOps.js +105 -87
  451. package/esm/ops/ResourceTypeOps.js.map +1 -1
  452. package/esm/ops/Saml2Ops.js +138 -91
  453. package/esm/ops/Saml2Ops.js.map +1 -1
  454. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  455. package/esm/ops/ScriptOps.js +222 -90
  456. package/esm/ops/ScriptOps.js.map +1 -1
  457. package/esm/ops/SecretsOps.js +333 -79
  458. package/esm/ops/SecretsOps.js.map +1 -1
  459. package/esm/ops/ServiceOps.js +97 -54
  460. package/esm/ops/ServiceOps.js.map +1 -1
  461. package/esm/ops/ThemeOps.js +164 -158
  462. package/esm/ops/ThemeOps.js.map +1 -1
  463. package/esm/ops/VariablesOps.js +252 -65
  464. package/esm/ops/VariablesOps.js.map +1 -1
  465. package/esm/ops/utils/OpsUtils.js +1 -1
  466. package/esm/ops/utils/OpsUtils.js.map +1 -1
  467. package/esm/ops/utils/Wordwrap.js +1 -1
  468. package/esm/ops/utils/Wordwrap.js.map +1 -1
  469. package/esm/storage/StaticStorage.js +1 -1
  470. package/esm/storage/StaticStorage.js.map +1 -1
  471. package/esm/utils/Config.js +164 -4
  472. package/esm/utils/Config.js.map +1 -1
  473. package/esm/utils/Console.js +78 -35
  474. package/esm/utils/Console.js.map +1 -1
  475. package/esm/utils/Version.js +20 -17
  476. package/esm/utils/Version.js.map +1 -1
  477. package/global-jest-setup.js +5 -0
  478. package/package.json +56 -37
  479. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  480. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
  481. package/esm/utils/ExportImportUtils.js +0 -90
  482. package/esm/utils/ExportImportUtils.js.map +0 -1
@@ -1,130 +1,243 @@
1
- import { frodo } from '@rockcarver/frodo-lib';
2
- import { createKeyValueTable, createProgressBar, createTable, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
2
+ import fs from 'fs';
3
+ import { getFullExportConfig, isIdUsed } from '../utils/Config';
4
+ import { createKeyValueTable, createProgressIndicator, createTable, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
3
5
  import wordwrap from './utils/Wordwrap';
6
+ const {
7
+ resolveUserName
8
+ } = frodo.idm.managed;
9
+ const {
10
+ readSecrets,
11
+ createSecret: _createSecret,
12
+ readVersionsOfSecret,
13
+ readSecret,
14
+ exportSecret,
15
+ exportSecrets,
16
+ enableVersionOfSecret,
17
+ disableVersionOfSecret,
18
+ createVersionOfSecret: _createVersionOfSecret,
19
+ updateSecretDescription,
20
+ deleteSecret: _deleteSecret,
21
+ deleteVersionOfSecret: _deleteVersionOfSecret
22
+ } = frodo.cloud.secret;
23
+ const {
24
+ getFilePath,
25
+ getTypedFilename,
26
+ saveJsonToFile,
27
+ saveToFile,
28
+ titleCase
29
+ } = frodo.utils;
4
30
 
5
31
  /**
6
32
  * List secrets
7
- * @param {boolean} long Long version, all the fields
33
+ * @param {boolean} long Long version, all the fields besides usage
34
+ * @param {boolean} usage Display usage field
35
+ * @param {String | null} file Optional filename to determine usage
36
+ * @returns {Promise<boolean>} true if successful, false otherwise
8
37
  */
9
- export async function listSecrets(long) {
38
+ export async function listSecrets(long = false, usage = false, file = null) {
39
+ let spinnerId;
10
40
  let secrets = [];
11
41
  try {
12
- secrets = (await frodo.cloud.secret.getSecrets()).result;
42
+ spinnerId = createProgressIndicator('indeterminate', 0, `Reading secrets...`);
43
+ secrets = await readSecrets();
13
44
  secrets.sort((a, b) => a._id.localeCompare(b._id));
45
+ stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
14
46
  } catch (error) {
15
- printMessage(`${error.message}`, 'error');
16
- printMessage(error.response.data, 'error');
47
+ var _error$response;
48
+ stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error.message}`, 'fail');
49
+ return false;
17
50
  }
18
- if (long) {
19
- const table = createTable(['Id'['brightCyan'], {
51
+ if (!long && !usage) {
52
+ secrets.forEach(variable => {
53
+ printMessage(variable._id, 'data');
54
+ });
55
+ return true;
56
+ }
57
+ let fullExport = null;
58
+ const headers = long ? ['Id'['brightCyan'], {
59
+ hAlign: 'right',
60
+ content: 'Active\nVersion'['brightCyan']
61
+ }, {
62
+ hAlign: 'right',
63
+ content: 'Loaded\nVersion'['brightCyan']
64
+ }, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified (UTC)'['brightCyan']] : ['Id'['brightCyan']];
65
+ if (usage) {
66
+ try {
67
+ fullExport = await getFullExportConfig(file);
68
+ } catch (error) {
69
+ var _error$response2;
70
+ printMessage(`Error getting full export: ${((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error.message}`, 'error');
71
+ return false;
72
+ }
73
+ //Delete secrets from full export so they aren't mistakenly used for determining usage
74
+ delete fullExport.secrets;
75
+ headers.push('Used'['brightCyan']);
76
+ }
77
+ const table = createTable(headers);
78
+ for (const secret of secrets) {
79
+ let lastChangedBy = secret.lastChangedBy;
80
+ if (long) {
81
+ try {
82
+ lastChangedBy = state.getUseBearerTokenForAmApis() ? secret.lastChangedBy : await resolveUserName('teammember', secret.lastChangedBy);
83
+ } catch (error) {
84
+ // ignore
85
+ }
86
+ }
87
+ const values = long ? [secret._id, {
20
88
  hAlign: 'right',
21
- content: 'Active\nVersion'['brightCyan']
89
+ content: secret.activeVersion
22
90
  }, {
23
91
  hAlign: 'right',
24
- content: 'Loaded\nVersion'['brightCyan']
25
- }, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified'['brightCyan']]);
26
- for (const secret of secrets) {
27
- table.push([secret._id, {
28
- hAlign: 'right',
29
- content: secret.activeVersion
30
- }, {
31
- hAlign: 'right',
32
- content: secret.loadedVersion
33
- }, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40), await frodo.idm.managed.resolveUserName('teammember', secret.lastChangedBy), new Date(secret.lastChangeDate).toLocaleString()]);
92
+ content: secret.loadedVersion
93
+ }, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40), lastChangedBy, new Date(secret.lastChangeDate).toUTCString()] : [secret._id];
94
+ if (usage) {
95
+ const isEsvUsed = isIdUsed(fullExport, secret._id, true);
96
+ values.push(isEsvUsed.used ? `${'yes'['brightGreen']} (at ${isEsvUsed.location})` : 'no'['brightRed']);
34
97
  }
35
- printMessage(table.toString(), 'data');
36
- } else {
37
- secrets.forEach(secret => {
38
- printMessage(secret._id, 'data');
39
- });
98
+ table.push(values);
40
99
  }
100
+ printMessage(table.toString(), 'data');
101
+ return true;
41
102
  }
42
103
 
43
104
  /**
44
105
  * Create secret
45
- * @param {String} id secret id
46
- * @param {String} value secret value
47
- * @param {String} description secret description
48
- * @param {String} encoding secret encoding
106
+ * @param {string} id secret id
107
+ * @param {string} value secret value
108
+ * @param {string} description secret description
109
+ * @param {SecretEncodingType} encoding secret encoding
49
110
  * @param {boolean} useInPlaceholders use secret in placeholders
111
+ * @returns {Promise<boolean>} true if successful, false otherwise
50
112
  */
51
113
  export async function createSecret(id, value, description, encoding, useInPlaceholders) {
52
- showSpinner(`Creating secret ${id}...`);
114
+ let outcome = false;
115
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Creating secret ${id}...`);
53
116
  try {
54
- await frodo.cloud.secret.putSecret(id, value, description, encoding, useInPlaceholders);
55
- succeedSpinner(`Created secret ${id}`);
117
+ await _createSecret(id, value, description, encoding, useInPlaceholders);
118
+ stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');
119
+ outcome = true;
56
120
  } catch (error) {
57
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
121
+ stopProgressIndicator(spinnerId, error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error, 'fail');
58
122
  }
123
+ return outcome;
124
+ }
125
+
126
+ /**
127
+ * Create secret from file (pem / base64hmac)
128
+ * @param {string} id secret id
129
+ * @param {string} file certificate file name
130
+ * @param {string} description secret description
131
+ * @param {SecretEncodingType} encoding secret encoding
132
+ * @param {boolean} useInPlaceholders use secret in placeholders
133
+ * @returns {Promise<boolean>} true if successful, false otherwise
134
+ */
135
+ export async function createSecretFromFile(id, file, description, encoding, useInPlaceholders) {
136
+ let outcome = false;
137
+ const value = fs.readFileSync(getFilePath(file), 'utf8');
138
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Creating secret ${id}...`);
139
+ try {
140
+ await _createSecret(id, value, description, encoding, useInPlaceholders);
141
+ stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');
142
+ outcome = true;
143
+ } catch (error) {
144
+ stopProgressIndicator(spinnerId, error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error, 'fail');
145
+ }
146
+ return outcome;
59
147
  }
60
148
 
61
149
  /**
62
150
  * Set description of secret
63
- * @param {String} secretId secret id
64
- * @param {String} description secret description
151
+ * @param {string} secretId secret id
152
+ * @param {string} description secret description
153
+ * @returns {Promise<boolean>} true if successful, false otherwise
65
154
  */
66
155
  export async function setSecretDescription(secretId, description) {
67
- showSpinner(`Setting description of secret ${secretId}...`);
156
+ let outcome = false;
157
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Setting description of secret ${secretId}...`);
68
158
  try {
69
- await frodo.cloud.secret.setSecretDescription(secretId, description);
70
- succeedSpinner(`Set description of secret ${secretId}`);
159
+ await updateSecretDescription(secretId, description);
160
+ stopProgressIndicator(spinnerId, `Set description of secret ${secretId}`, 'success');
161
+ outcome = true;
71
162
  } catch (error) {
72
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
163
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
73
164
  }
165
+ return outcome;
74
166
  }
75
167
 
76
168
  /**
77
169
  * Delete a secret
78
- * @param {String} secretId secret id
170
+ * @param {string} secretId secret id
171
+ * @returns {Promise<boolean>} true if successful, false otherwise
79
172
  */
80
173
  export async function deleteSecret(secretId) {
81
- showSpinner(`Deleting secret ${secretId}...`);
174
+ let outcome = false;
175
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Deleting secret ${secretId}...`);
82
176
  try {
83
- await frodo.cloud.secret.deleteSecret(secretId);
84
- succeedSpinner(`Deleted secret ${secretId}`);
177
+ await _deleteSecret(secretId);
178
+ stopProgressIndicator(spinnerId, `Deleted secret ${secretId}`, 'success');
179
+ outcome = true;
85
180
  } catch (error) {
86
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
181
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
87
182
  }
183
+ return outcome;
88
184
  }
89
185
 
90
186
  /**
91
187
  * Delete all secrets
188
+ * @returns {Promise<boolean>} true if successful, false otherwise
92
189
  */
93
190
  export async function deleteSecrets() {
191
+ let outcome = false;
192
+ let secrets = [];
193
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Reading secrets...`);
194
+ try {
195
+ secrets = await readSecrets();
196
+ secrets.sort((a, b) => a._id.localeCompare(b._id));
197
+ stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
198
+ } catch (error) {
199
+ var _error$response3;
200
+ stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error.message}`, 'fail');
201
+ }
202
+ const indicatorId = createProgressIndicator('determinate', secrets.length, `Deleting secrets...`);
94
203
  try {
95
- const secrets = (await frodo.cloud.secret.getSecrets()).result;
96
- createProgressBar(secrets.length, `Deleting secrets...`);
97
204
  for (const secret of secrets) {
98
205
  try {
99
- await frodo.cloud.secret.deleteSecret(secret._id);
100
- updateProgressBar(`Deleted secret ${secret._id}`);
206
+ await _deleteSecret(secret._id);
207
+ updateProgressIndicator(indicatorId, `Deleted secret ${secret._id}`);
101
208
  } catch (error) {
102
209
  printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
103
210
  }
104
211
  }
105
- stopProgressBar(`Secrets deleted.`);
212
+ stopProgressIndicator(indicatorId, `Secrets deleted.`);
213
+ outcome = true;
106
214
  } catch (error) {
107
215
  printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
108
216
  }
217
+ return outcome;
109
218
  }
110
219
 
111
220
  /**
112
221
  * List all the versions of the secret
113
222
  * @param {String} secretId secret id
223
+ * @returns {Promise<boolean>} true if successful, false otherwise
114
224
  */
115
225
  export async function listSecretVersions(secretId) {
226
+ let outcome = false;
227
+ let spinnerId;
116
228
  let versions = [];
117
229
  try {
118
- versions = await frodo.cloud.secret.getSecretVersions(secretId);
230
+ spinnerId = createProgressIndicator('indeterminate', 0, `Reading secret versions...`);
231
+ versions = await readVersionsOfSecret(secretId);
232
+ stopProgressIndicator(spinnerId, `Successfully read ${versions.length} secret versions.`, 'success');
119
233
  } catch (error) {
120
- printMessage(`${error.message}`, 'error');
121
- printMessage(error.response.data, 'error');
234
+ var _error$response4;
235
+ stopProgressIndicator(spinnerId, `Error reading secret versions: ${((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.data) || error.message}`, 'fail');
122
236
  }
123
237
  const table = createTable([{
124
238
  hAlign: 'right',
125
239
  content: 'Version'['brightCyan']
126
240
  }, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
127
- // versions.sort((a, b) => a._id.localeCompare(b._id));
128
241
  const statusMap = {
129
242
  ENABLED: 'active'['brightGreen'],
130
243
  DISABLED: 'inactive'['brightRed'],
@@ -136,15 +249,28 @@ export async function listSecretVersions(secretId) {
136
249
  content: version.version
137
250
  }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
138
251
  }
139
- printMessage(table.toString());
252
+ printMessage(table.toString(), 'data');
253
+ outcome = true;
254
+ return outcome;
140
255
  }
141
256
 
142
257
  /**
143
258
  * Describe a secret
144
- * @param {String} secretId Secret id
259
+ * @param {string} secretId Secret id
260
+ * @returns {Promise<boolean>} true if successful, false otherwise
145
261
  */
146
262
  export async function describeSecret(secretId) {
147
- const secret = await frodo.cloud.secret.getSecret(secretId);
263
+ let outcome = false;
264
+ let spinnerId;
265
+ let secret = null;
266
+ try {
267
+ spinnerId = createProgressIndicator('indeterminate', 0, `Reading secret ${secretId}...`);
268
+ secret = await readSecret(secretId);
269
+ stopProgressIndicator(spinnerId, `Successfully read secret ${secretId}.`, 'success');
270
+ } catch (error) {
271
+ var _error$response5;
272
+ stopProgressIndicator(spinnerId, `Error reading secret ${secretId}: ${((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.data) || error.message}`, 'fail');
273
+ }
148
274
  const table = createKeyValueTable();
149
275
  table.push(['Name'['brightCyan'], secret._id]);
150
276
  table.push(['Active Version'['brightCyan'], secret.activeVersion]);
@@ -152,72 +278,200 @@ export async function describeSecret(secretId) {
152
278
  table.push(['Status'['brightCyan'], secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed']]);
153
279
  table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);
154
280
  table.push(['Modified'['brightCyan'], new Date(secret.lastChangeDate).toLocaleString()]);
155
- table.push(['Modifier'['brightCyan'], await frodo.idm.managed.resolveUserName('teammember', secret.lastChangedBy)]);
281
+ let lastChangedBy = secret.lastChangedBy;
282
+ try {
283
+ lastChangedBy = state.getUseBearerTokenForAmApis() ? secret.lastChangedBy : await resolveUserName('teammember', secret.lastChangedBy);
284
+ } catch (error) {
285
+ // ignore
286
+ }
287
+ table.push(['Modifier'['brightCyan'], lastChangedBy]);
156
288
  table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);
157
289
  table.push(['Encoding'['brightCyan'], secret.encoding]);
158
290
  table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);
159
- printMessage(table.toString());
160
- printMessage('\nSecret Versions:');
291
+ printMessage(table.toString(), 'data');
292
+ printMessage('\nSecret Versions:', 'data');
161
293
  await listSecretVersions(secretId);
294
+ outcome = true;
295
+ return outcome;
296
+ }
297
+
298
+ /**
299
+ * Export a single secret to file
300
+ * @param {String} secretId Secret id
301
+ * @param {String} file Optional filename
302
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
303
+ * @returns {Promise<boolean>} true if successful, false otherwise
304
+ */
305
+ export async function exportSecretToFile(secretId, file, includeMeta) {
306
+ debugMessage(`Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`);
307
+ let outcome = false;
308
+ let fileName = file;
309
+ if (!fileName) {
310
+ fileName = getTypedFilename(secretId, 'secret');
311
+ }
312
+ const filePath = getFilePath(fileName, true);
313
+ let spinnerId;
314
+ try {
315
+ spinnerId = createProgressIndicator('indeterminate', 0, `Exporting secret ${secretId}`);
316
+ const fileData = await exportSecret(secretId);
317
+ saveJsonToFile(fileData, filePath, includeMeta);
318
+ stopProgressIndicator(spinnerId, `Exported ${secretId['brightCyan']} to ${filePath['brightCyan']}.`, 'success');
319
+ outcome = true;
320
+ } catch (error) {
321
+ var _error$response6;
322
+ stopProgressIndicator(spinnerId, `Error exporting secret: ${((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : _error$response6.data) || error.message}`, 'fail');
323
+ }
324
+ debugMessage(`Cli.SecretsOps.exportSecretToFile: end [outcome=${outcome}, secretId=${secretId}, file=${file}]`);
325
+ return outcome;
326
+ }
327
+
328
+ /**
329
+ * Export all secrets to single file
330
+ * @param {string} file Optional filename
331
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
332
+ * @returns {Promise<boolean>} true if successful, false otherwise
333
+ */
334
+ export async function exportSecretsToFile(file, includeMeta) {
335
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);
336
+ let outcome = false;
337
+ let fileName = file;
338
+ if (!fileName) {
339
+ fileName = getTypedFilename(`all${titleCase(state.getRealm())}Secrets`, 'secret');
340
+ }
341
+ try {
342
+ const secretsExport = await exportSecrets();
343
+ saveJsonToFile(secretsExport, getFilePath(fileName, true), includeMeta);
344
+ outcome = true;
345
+ } catch (error) {
346
+ var _error$response7;
347
+ printMessage(error.message, 'error');
348
+ printMessage(`exportSecretsToFile: ${(_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : _error$response7.status}`, 'error');
349
+ }
350
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);
351
+ return outcome;
352
+ }
353
+
354
+ /**
355
+ * Export all secrets to individual files
356
+ * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
357
+ * @returns {Promise<boolean>} true if successful, false otherwise
358
+ */
359
+ export async function exportSecretsToFiles(includeMeta) {
360
+ let outcome = false;
361
+ let secrets = [];
362
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Reading secrets...`);
363
+ try {
364
+ secrets = await readSecrets();
365
+ secrets.sort((a, b) => a._id.localeCompare(b._id));
366
+ stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
367
+ } catch (error) {
368
+ var _error$response8;
369
+ stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response8 = error.response) === null || _error$response8 === void 0 ? void 0 : _error$response8.data) || error.message}`, 'fail');
370
+ }
371
+ const indicatorId = createProgressIndicator('determinate', secrets.length, 'Exporting secrets');
372
+ for (const secret of secrets) {
373
+ updateProgressIndicator(indicatorId, `Writing secret ${secret._id}`);
374
+ const fileName = getTypedFilename(secret._id, 'secret');
375
+ saveToFile('secret', secret, '_id', getFilePath(fileName, true), includeMeta);
376
+ }
377
+ stopProgressIndicator(indicatorId, `${secrets.length} secrets exported.`);
378
+ outcome = true;
379
+ return outcome;
162
380
  }
163
381
 
164
382
  /**
165
383
  * Create new version of secret
166
- * @param {String} secretId secret id
167
- * @param {String} value secret value
384
+ * @param {string} secretId secret id
385
+ * @param {string} value secret value
386
+ * @returns {Promise<boolean>} true if successful, false otherwise
387
+ */
388
+ export async function createVersionOfSecret(secretId, value) {
389
+ let outcome = false;
390
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Creating new version of secret ${secretId}...`);
391
+ try {
392
+ const version = await _createVersionOfSecret(secretId, value);
393
+ stopProgressIndicator(spinnerId, `Created version ${version.version} of secret ${secretId}`, 'success');
394
+ outcome = true;
395
+ } catch (error) {
396
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
397
+ }
398
+ return outcome;
399
+ }
400
+
401
+ /**
402
+ * Create new version of secret from file
403
+ * @param {string} secretId secret id
404
+ * @param {string} file filename
405
+ * @returns {Promise<boolean>} true if successful, false otherwise
168
406
  */
169
- export async function createNewVersionOfSecret(secretId, value) {
170
- showSpinner(`Creating new version of secret ${secretId}...`);
407
+ export async function createVersionOfSecretFromFile(secretId, file) {
408
+ let outcome = false;
409
+ const value = fs.readFileSync(getFilePath(file), 'utf8');
410
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Creating new version of secret ${secretId}...`);
171
411
  try {
172
- const version = await frodo.cloud.secret.createNewVersionOfSecret(secretId, value);
173
- succeedSpinner(`Created version ${version.version} of secret ${secretId}`);
412
+ const version = await _createVersionOfSecret(secretId, value);
413
+ stopProgressIndicator(spinnerId, `Created version ${version.version} of secret ${secretId}`, 'success');
414
+ outcome = true;
174
415
  } catch (error) {
175
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
416
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
176
417
  }
418
+ return outcome;
177
419
  }
178
420
 
179
421
  /**
180
422
  * Activate a version of a secret
181
423
  * @param {String} secretId secret id
182
424
  * @param {Number} version version of secret
425
+ * @returns {Promise<boolean>} true if successful, false otherwise
183
426
  */
184
427
  export async function activateVersionOfSecret(secretId, version) {
185
- showSpinner(`Activating version ${version} of secret ${secretId}...`);
428
+ let outcome = false;
429
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Activating version ${version} of secret ${secretId}...`);
186
430
  try {
187
- await frodo.cloud.secret.setStatusOfVersionOfSecret(secretId, version, 'ENABLED');
188
- succeedSpinner(`Activated version ${version} of secret ${secretId}`);
431
+ await enableVersionOfSecret(secretId, version);
432
+ stopProgressIndicator(spinnerId, `Activated version ${version} of secret ${secretId}`, 'success');
433
+ outcome = true;
189
434
  } catch (error) {
190
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
435
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
191
436
  }
437
+ return outcome;
192
438
  }
193
439
 
194
440
  /**
195
441
  * Deactivate a version of a secret
196
442
  * @param {String} secretId secret id
197
443
  * @param {Number} version version of secret
444
+ * @returns {Promise<boolean>} true if successful, false otherwise
198
445
  */
199
446
  export async function deactivateVersionOfSecret(secretId, version) {
200
- showSpinner(`Deactivating version ${version} of secret ${secretId}...`);
447
+ let outcome = false;
448
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Deactivating version ${version} of secret ${secretId}...`);
201
449
  try {
202
- await frodo.cloud.secret.setStatusOfVersionOfSecret(secretId, version, 'DISABLED');
203
- succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);
450
+ await disableVersionOfSecret(secretId, version);
451
+ stopProgressIndicator(spinnerId, `Deactivated version ${version} of secret ${secretId}`, 'success');
452
+ outcome = true;
204
453
  } catch (error) {
205
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
454
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
206
455
  }
456
+ return outcome;
207
457
  }
208
458
 
209
459
  /**
210
460
  * Delete version of secret
211
461
  * @param {String} secretId secret id
212
462
  * @param {Number} version version of secret
463
+ * @returns {Promise<boolean>} true if successful, false otherwise
213
464
  */
214
465
  export async function deleteVersionOfSecret(secretId, version) {
215
- showSpinner(`Deleting version ${version} of secret ${secretId}...`);
466
+ let outcome = false;
467
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Deleting version ${version} of secret ${secretId}...`);
216
468
  try {
217
- await frodo.cloud.secret.deleteVersionOfSecret(secretId, version);
218
- succeedSpinner(`Deleted version ${version} of secret ${secretId}`);
469
+ await _deleteVersionOfSecret(secretId, version);
470
+ stopProgressIndicator(spinnerId, `Deleted version ${version} of secret ${secretId}`, 'success');
471
+ outcome = true;
219
472
  } catch (error) {
220
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
473
+ stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
221
474
  }
475
+ return outcome;
222
476
  }
223
- //# sourceMappingURL=SecretsOps.js.map
477
+ //# sourceMappingURL=SecretsOps.js.map