@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31

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 (466) hide show
  1. package/CHANGELOG.md +275 -4
  2. package/esm/app.js +20 -5
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +28 -6
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +7 -4
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +7 -4
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +7 -4
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +7 -4
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +7 -4
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +7 -4
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +7 -4
  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 +7 -4
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +7 -4
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +7 -4
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +7 -4
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +7 -4
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +7 -4
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +7 -4
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +7 -4
  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 +10 -4
  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 +14 -7
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-federation-export.js +45 -0
  47. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-import.js +49 -0
  49. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-list.js +29 -0
  51. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  52. package/esm/cli/admin/admin-federation.js +13 -0
  53. package/esm/cli/admin/admin-federation.js.map +1 -0
  54. package/esm/cli/admin/admin-get-access-token.js +12 -6
  55. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  56. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
  57. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
  59. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  60. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
  61. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
  63. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  64. package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
  65. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  66. package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
  67. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  68. package/esm/cli/admin/admin-repair-org-model.js +11 -5
  69. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  70. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
  71. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  72. package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
  73. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  74. package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
  75. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  76. package/esm/cli/admin/admin.js +6 -2
  77. package/esm/cli/admin/admin.js.map +1 -1
  78. package/esm/cli/agent/agent-delete.js +13 -6
  79. package/esm/cli/agent/agent-delete.js.map +1 -1
  80. package/esm/cli/agent/agent-describe.js +7 -4
  81. package/esm/cli/agent/agent-describe.js.map +1 -1
  82. package/esm/cli/agent/agent-export.js +8 -5
  83. package/esm/cli/agent/agent-export.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-delete.js +13 -6
  85. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  86. package/esm/cli/agent/agent-gateway-describe.js +7 -4
  87. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-export.js +8 -5
  89. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-import.js +8 -5
  91. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-list.js +7 -4
  93. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway.js +1 -1
  95. package/esm/cli/agent/agent-gateway.js.map +1 -1
  96. package/esm/cli/agent/agent-import.js +8 -5
  97. package/esm/cli/agent/agent-import.js.map +1 -1
  98. package/esm/cli/agent/agent-java-delete.js +13 -6
  99. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  100. package/esm/cli/agent/agent-java-describe.js +7 -4
  101. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  102. package/esm/cli/agent/agent-java-export.js +8 -5
  103. package/esm/cli/agent/agent-java-export.js.map +1 -1
  104. package/esm/cli/agent/agent-java-import.js +8 -5
  105. package/esm/cli/agent/agent-java-import.js.map +1 -1
  106. package/esm/cli/agent/agent-java-list.js +7 -4
  107. package/esm/cli/agent/agent-java-list.js.map +1 -1
  108. package/esm/cli/agent/agent-java.js +1 -1
  109. package/esm/cli/agent/agent-java.js.map +1 -1
  110. package/esm/cli/agent/agent-list.js +7 -4
  111. package/esm/cli/agent/agent-list.js.map +1 -1
  112. package/esm/cli/agent/agent-web-delete.js +13 -6
  113. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  114. package/esm/cli/agent/agent-web-describe.js +7 -4
  115. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  116. package/esm/cli/agent/agent-web-export.js +8 -5
  117. package/esm/cli/agent/agent-web-export.js.map +1 -1
  118. package/esm/cli/agent/agent-web-import.js +8 -5
  119. package/esm/cli/agent/agent-web-import.js.map +1 -1
  120. package/esm/cli/agent/agent-web-list.js +7 -4
  121. package/esm/cli/agent/agent-web-list.js.map +1 -1
  122. package/esm/cli/agent/agent-web.js +3 -3
  123. package/esm/cli/agent/agent-web.js.map +1 -1
  124. package/esm/cli/agent/agent.js +2 -2
  125. package/esm/cli/agent/agent.js.map +1 -1
  126. package/esm/cli/app/app-delete.js +27 -8
  127. package/esm/cli/app/app-delete.js.map +1 -1
  128. package/esm/cli/app/app-describe.js +9 -5
  129. package/esm/cli/app/app-describe.js.map +1 -1
  130. package/esm/cli/app/app-export.js +17 -13
  131. package/esm/cli/app/app-export.js.map +1 -1
  132. package/esm/cli/app/app-import.js +21 -17
  133. package/esm/cli/app/app-import.js.map +1 -1
  134. package/esm/cli/app/app-list.js +12 -8
  135. package/esm/cli/app/app-list.js.map +1 -1
  136. package/esm/cli/app/app.js +8 -12
  137. package/esm/cli/app/app.js.map +1 -1
  138. package/esm/cli/authn/authn-describe.js +30 -0
  139. package/esm/cli/authn/authn-describe.js.map +1 -0
  140. package/esm/cli/authn/authn-export.js +26 -0
  141. package/esm/cli/authn/authn-export.js.map +1 -0
  142. package/esm/cli/authn/authn-import.js +26 -0
  143. package/esm/cli/authn/authn-import.js.map +1 -0
  144. package/esm/cli/authn/authn.js +12 -0
  145. package/esm/cli/authn/authn.js.map +1 -0
  146. package/esm/cli/authz/authz-policy-delete.js +11 -8
  147. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  148. package/esm/cli/authz/authz-policy-describe.js +8 -5
  149. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  150. package/esm/cli/authz/authz-policy-export.js +12 -9
  151. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-import.js +10 -7
  153. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-list.js +9 -6
  155. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  156. package/esm/cli/authz/authz-policy.js +1 -1
  157. package/esm/cli/authz/authz-policy.js.map +1 -1
  158. package/esm/cli/authz/authz-set-delete.js +10 -7
  159. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  160. package/esm/cli/authz/authz-set-describe.js +8 -5
  161. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  162. package/esm/cli/authz/authz-set-export.js +10 -7
  163. package/esm/cli/authz/authz-set-export.js.map +1 -1
  164. package/esm/cli/authz/authz-set-import.js +10 -7
  165. package/esm/cli/authz/authz-set-import.js.map +1 -1
  166. package/esm/cli/authz/authz-set-list.js +7 -4
  167. package/esm/cli/authz/authz-set-list.js.map +1 -1
  168. package/esm/cli/authz/authz-set.js +1 -1
  169. package/esm/cli/authz/authz-set.js.map +1 -1
  170. package/esm/cli/authz/authz-type-delete.js +12 -9
  171. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  172. package/esm/cli/authz/authz-type-describe.js +9 -6
  173. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  174. package/esm/cli/authz/authz-type-export.js +11 -8
  175. package/esm/cli/authz/authz-type-export.js.map +1 -1
  176. package/esm/cli/authz/authz-type-import.js +12 -9
  177. package/esm/cli/authz/authz-type-import.js.map +1 -1
  178. package/esm/cli/authz/authz-type-list.js +8 -5
  179. package/esm/cli/authz/authz-type-list.js.map +1 -1
  180. package/esm/cli/authz/authz-type.js +1 -1
  181. package/esm/cli/authz/authz-type.js.map +1 -1
  182. package/esm/cli/authz/authz.js +2 -2
  183. package/esm/cli/authz/authz.js.map +1 -1
  184. package/esm/cli/conn/conn-delete.js +2 -2
  185. package/esm/cli/conn/conn-delete.js.map +1 -1
  186. package/esm/cli/conn/conn-describe.js +2 -2
  187. package/esm/cli/conn/conn-describe.js.map +1 -1
  188. package/esm/cli/conn/conn-list.js +2 -2
  189. package/esm/cli/conn/conn-list.js.map +1 -1
  190. package/esm/cli/conn/conn-save.js +31 -15
  191. package/esm/cli/conn/conn-save.js.map +1 -1
  192. package/esm/cli/conn/conn.js +2 -2
  193. package/esm/cli/conn/conn.js.map +1 -1
  194. package/esm/cli/email/email-template-export.js +10 -7
  195. package/esm/cli/email/email-template-export.js.map +1 -1
  196. package/esm/cli/email/email-template-import.js +11 -8
  197. package/esm/cli/email/email-template-import.js.map +1 -1
  198. package/esm/cli/email/email-template-list.js +8 -5
  199. package/esm/cli/email/email-template-list.js.map +1 -1
  200. package/esm/cli/email/email-template.js +1 -1
  201. package/esm/cli/email/email-template.js.map +1 -1
  202. package/esm/cli/email/email.js +2 -2
  203. package/esm/cli/email/email.js.map +1 -1
  204. package/esm/cli/esv/esv-apply.js +18 -8
  205. package/esm/cli/esv/esv-apply.js.map +1 -1
  206. package/esm/cli/esv/esv-secret-create.js +8 -5
  207. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  208. package/esm/cli/esv/esv-secret-delete.js +9 -6
  209. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  210. package/esm/cli/esv/esv-secret-describe.js +8 -5
  211. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  212. package/esm/cli/esv/esv-secret-export.js +19 -5
  213. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  214. package/esm/cli/esv/esv-secret-import.js +7 -4
  215. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  216. package/esm/cli/esv/esv-secret-list.js +8 -5
  217. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  218. package/esm/cli/esv/esv-secret-set.js +8 -5
  219. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  220. package/esm/cli/esv/esv-secret-version-activate.js +8 -5
  221. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-version-create.js +9 -6
  223. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
  225. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-version-delete.js +9 -6
  227. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-version-list.js +8 -5
  229. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-version.js +1 -1
  231. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  232. package/esm/cli/esv/esv-secret.js +2 -3
  233. package/esm/cli/esv/esv-secret.js.map +1 -1
  234. package/esm/cli/esv/esv-variable-create.js +10 -6
  235. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  236. package/esm/cli/esv/esv-variable-delete.js +10 -7
  237. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  238. package/esm/cli/esv/esv-variable-describe.js +10 -7
  239. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  240. package/esm/cli/esv/esv-variable-export.js +20 -6
  241. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  242. package/esm/cli/esv/esv-variable-import.js +7 -4
  243. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  244. package/esm/cli/esv/esv-variable-list.js +8 -5
  245. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  246. package/esm/cli/esv/esv-variable-set.js +8 -5
  247. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  248. package/esm/cli/esv/esv-variable.js +2 -3
  249. package/esm/cli/esv/esv-variable.js.map +1 -1
  250. package/esm/cli/esv/esv.js +2 -2
  251. package/esm/cli/esv/esv.js.map +1 -1
  252. package/esm/cli/idm/idm-count.js +9 -6
  253. package/esm/cli/idm/idm-count.js.map +1 -1
  254. package/esm/cli/idm/idm-export.js +21 -12
  255. package/esm/cli/idm/idm-export.js.map +1 -1
  256. package/esm/cli/idm/idm-import.js +22 -13
  257. package/esm/cli/idm/idm-import.js.map +1 -1
  258. package/esm/cli/idm/idm-list.js +7 -4
  259. package/esm/cli/idm/idm-list.js.map +1 -1
  260. package/esm/cli/idm/idm.js +2 -2
  261. package/esm/cli/idm/idm.js.map +1 -1
  262. package/esm/cli/idp/idp-export.js +11 -8
  263. package/esm/cli/idp/idp-export.js.map +1 -1
  264. package/esm/cli/idp/idp-import.js +15 -12
  265. package/esm/cli/idp/idp-import.js.map +1 -1
  266. package/esm/cli/idp/idp-list.js +7 -4
  267. package/esm/cli/idp/idp-list.js.map +1 -1
  268. package/esm/cli/idp/idp.js +2 -2
  269. package/esm/cli/idp/idp.js.map +1 -1
  270. package/esm/cli/info/info.js +16 -10
  271. package/esm/cli/info/info.js.map +1 -1
  272. package/esm/cli/journey/journey-delete.js +8 -5
  273. package/esm/cli/journey/journey-delete.js.map +1 -1
  274. package/esm/cli/journey/journey-describe.js +19 -10
  275. package/esm/cli/journey/journey-describe.js.map +1 -1
  276. package/esm/cli/journey/journey-disable.js +12 -6
  277. package/esm/cli/journey/journey-disable.js.map +1 -1
  278. package/esm/cli/journey/journey-enable.js +12 -6
  279. package/esm/cli/journey/journey-enable.js.map +1 -1
  280. package/esm/cli/journey/journey-export.js +21 -9
  281. package/esm/cli/journey/journey-export.js.map +1 -1
  282. package/esm/cli/journey/journey-import.js +11 -8
  283. package/esm/cli/journey/journey-import.js.map +1 -1
  284. package/esm/cli/journey/journey-list.js +6 -3
  285. package/esm/cli/journey/journey-list.js.map +1 -1
  286. package/esm/cli/journey/journey-prune.js +23 -12
  287. package/esm/cli/journey/journey-prune.js.map +1 -1
  288. package/esm/cli/journey/journey.js +2 -2
  289. package/esm/cli/journey/journey.js.map +1 -1
  290. package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
  291. package/esm/cli/log/log-fetch.js.map +1 -0
  292. package/esm/cli/log/log-key-delete.js +35 -0
  293. package/esm/cli/log/log-key-delete.js.map +1 -0
  294. package/esm/cli/log/log-key-describe.js +22 -0
  295. package/esm/cli/log/log-key-describe.js.map +1 -0
  296. package/esm/cli/log/log-key-list.js +26 -0
  297. package/esm/cli/log/log-key-list.js.map +1 -0
  298. package/esm/cli/log/log-key.js +8 -0
  299. package/esm/cli/log/log-key.js.map +1 -0
  300. package/esm/cli/log/log-list.js +80 -0
  301. package/esm/cli/log/log-list.js.map +1 -0
  302. package/esm/cli/log/log-tail.js +77 -0
  303. package/esm/cli/log/log-tail.js.map +1 -0
  304. package/esm/cli/{logging/logs.js → log/log.js} +6 -3
  305. package/esm/cli/log/log.js.map +1 -0
  306. package/esm/cli/oauth/oauth-client-delete.js +22 -0
  307. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  308. package/esm/cli/oauth/oauth-client-describe.js +22 -0
  309. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  310. package/esm/cli/oauth/oauth-client-export.js +52 -0
  311. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  312. package/esm/cli/oauth/oauth-client-import.js +57 -0
  313. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  314. package/esm/cli/oauth/oauth-client-list.js +25 -0
  315. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  316. package/esm/cli/oauth/oauth-client.js +14 -0
  317. package/esm/cli/oauth/oauth-client.js.map +1 -0
  318. package/esm/cli/oauth/oauth.js +13 -0
  319. package/esm/cli/oauth/oauth.js.map +1 -0
  320. package/esm/cli/realm/realm-add-custom-domain.js +8 -5
  321. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  322. package/esm/cli/realm/realm-describe.js +8 -5
  323. package/esm/cli/realm/realm-describe.js.map +1 -1
  324. package/esm/cli/realm/realm-list.js +8 -5
  325. package/esm/cli/realm/realm-list.js.map +1 -1
  326. package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
  327. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  328. package/esm/cli/realm/realm.js +2 -2
  329. package/esm/cli/realm/realm.js.map +1 -1
  330. package/esm/cli/saml/saml-cot-export.js +10 -7
  331. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  332. package/esm/cli/saml/saml-cot-import.js +15 -12
  333. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  334. package/esm/cli/saml/saml-cot-list.js +8 -5
  335. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  336. package/esm/cli/saml/saml-cot.js +1 -1
  337. package/esm/cli/saml/saml-cot.js.map +1 -1
  338. package/esm/cli/saml/saml-delete.js +14 -7
  339. package/esm/cli/saml/saml-delete.js.map +1 -1
  340. package/esm/cli/saml/saml-describe.js +8 -5
  341. package/esm/cli/saml/saml-describe.js.map +1 -1
  342. package/esm/cli/saml/saml-export.js +10 -7
  343. package/esm/cli/saml/saml-export.js.map +1 -1
  344. package/esm/cli/saml/saml-import.js +11 -8
  345. package/esm/cli/saml/saml-import.js.map +1 -1
  346. package/esm/cli/saml/saml-list.js +8 -5
  347. package/esm/cli/saml/saml-list.js.map +1 -1
  348. package/esm/cli/saml/saml-metadata-export.js +9 -6
  349. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  350. package/esm/cli/saml/saml-metadata.js +1 -1
  351. package/esm/cli/saml/saml-metadata.js.map +1 -1
  352. package/esm/cli/saml/saml.js +2 -2
  353. package/esm/cli/saml/saml.js.map +1 -1
  354. package/esm/cli/script/script-delete.js +7 -4
  355. package/esm/cli/script/script-delete.js.map +1 -1
  356. package/esm/cli/script/script-describe.js +7 -4
  357. package/esm/cli/script/script-describe.js.map +1 -1
  358. package/esm/cli/script/script-export.js +8 -5
  359. package/esm/cli/script/script-export.js.map +1 -1
  360. package/esm/cli/script/script-import.js +9 -6
  361. package/esm/cli/script/script-import.js.map +1 -1
  362. package/esm/cli/script/script-list.js +8 -5
  363. package/esm/cli/script/script-list.js.map +1 -1
  364. package/esm/cli/script/script.js +2 -2
  365. package/esm/cli/script/script.js.map +1 -1
  366. package/esm/cli/service/service-delete.js +8 -5
  367. package/esm/cli/service/service-delete.js.map +1 -1
  368. package/esm/cli/service/service-export.js +9 -6
  369. package/esm/cli/service/service-export.js.map +1 -1
  370. package/esm/cli/service/service-import.js +11 -9
  371. package/esm/cli/service/service-import.js.map +1 -1
  372. package/esm/cli/service/service-list.js +7 -4
  373. package/esm/cli/service/service-list.js.map +1 -1
  374. package/esm/cli/service/service.js +2 -2
  375. package/esm/cli/service/service.js.map +1 -1
  376. package/esm/cli/shell/shell.js +57 -0
  377. package/esm/cli/shell/shell.js.map +1 -0
  378. package/esm/cli/theme/theme-delete.js +10 -7
  379. package/esm/cli/theme/theme-delete.js.map +1 -1
  380. package/esm/cli/theme/theme-export.js +11 -8
  381. package/esm/cli/theme/theme-export.js.map +1 -1
  382. package/esm/cli/theme/theme-import.js +12 -9
  383. package/esm/cli/theme/theme-import.js.map +1 -1
  384. package/esm/cli/theme/theme-list.js +7 -4
  385. package/esm/cli/theme/theme-list.js.map +1 -1
  386. package/esm/cli/theme/theme.js +2 -2
  387. package/esm/cli/theme/theme.js.map +1 -1
  388. package/esm/help/SampleData.js +7 -0
  389. package/esm/help/SampleData.js.map +1 -0
  390. package/esm/launch.js +1 -1
  391. package/esm/launch.js.map +1 -1
  392. package/esm/loader.js +2 -2
  393. package/esm/loader.js.map +1 -1
  394. package/esm/ops/AdminFederationOps.js +225 -0
  395. package/esm/ops/AdminFederationOps.js.map +1 -0
  396. package/esm/ops/AgentOps.js +128 -87
  397. package/esm/ops/AgentOps.js.map +1 -1
  398. package/esm/ops/ApplicationOps.js +315 -0
  399. package/esm/ops/ApplicationOps.js.map +1 -0
  400. package/esm/ops/AuthenticationSettingsOps.js +89 -0
  401. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  402. package/esm/ops/CirclesOfTrustOps.js +72 -59
  403. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  404. package/esm/ops/ConnectionProfileOps.js +13 -6
  405. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  406. package/esm/ops/EmailTemplateOps.js +76 -64
  407. package/esm/ops/EmailTemplateOps.js.map +1 -1
  408. package/esm/ops/IdmOps.js +70 -84
  409. package/esm/ops/IdmOps.js.map +1 -1
  410. package/esm/ops/IdpOps.js +74 -43
  411. package/esm/ops/IdpOps.js.map +1 -1
  412. package/esm/ops/JourneyOps.js +99 -67
  413. package/esm/ops/JourneyOps.js.map +1 -1
  414. package/esm/ops/LogOps.js +92 -30
  415. package/esm/ops/LogOps.js.map +1 -1
  416. package/esm/ops/NodeOps.js +6 -3
  417. package/esm/ops/NodeOps.js.map +1 -1
  418. package/esm/ops/OAuth2ClientOps.js +51 -32
  419. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  420. package/esm/ops/OrganizationOps.js +14 -22
  421. package/esm/ops/OrganizationOps.js.map +1 -1
  422. package/esm/ops/PolicyOps.js +84 -55
  423. package/esm/ops/PolicyOps.js.map +1 -1
  424. package/esm/ops/PolicySetOps.js +67 -43
  425. package/esm/ops/PolicySetOps.js.map +1 -1
  426. package/esm/ops/RealmOps.js +18 -11
  427. package/esm/ops/RealmOps.js.map +1 -1
  428. package/esm/ops/ResourceTypeOps.js +75 -66
  429. package/esm/ops/ResourceTypeOps.js.map +1 -1
  430. package/esm/ops/Saml2Ops.js +76 -54
  431. package/esm/ops/Saml2Ops.js.map +1 -1
  432. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  433. package/esm/ops/ScriptOps.js +92 -31
  434. package/esm/ops/ScriptOps.js.map +1 -1
  435. package/esm/ops/SecretsOps.js +106 -23
  436. package/esm/ops/SecretsOps.js.map +1 -1
  437. package/esm/ops/ServiceOps.js +67 -41
  438. package/esm/ops/ServiceOps.js.map +1 -1
  439. package/esm/ops/ThemeOps.js +62 -36
  440. package/esm/ops/ThemeOps.js.map +1 -1
  441. package/esm/ops/VariablesOps.js +132 -41
  442. package/esm/ops/VariablesOps.js.map +1 -1
  443. package/esm/ops/utils/OpsUtils.js +1 -1
  444. package/esm/ops/utils/OpsUtils.js.map +1 -1
  445. package/esm/ops/utils/Wordwrap.js +1 -1
  446. package/esm/ops/utils/Wordwrap.js.map +1 -1
  447. package/esm/storage/StaticStorage.js +1 -1
  448. package/esm/storage/StaticStorage.js.map +1 -1
  449. package/esm/utils/Config.js +7 -4
  450. package/esm/utils/Config.js.map +1 -1
  451. package/esm/utils/Console.js +9 -5
  452. package/esm/utils/Console.js.map +1 -1
  453. package/esm/utils/ExportImportUtils.js +32 -66
  454. package/esm/utils/ExportImportUtils.js.map +1 -1
  455. package/esm/utils/Version.js +19 -16
  456. package/esm/utils/Version.js.map +1 -1
  457. package/global-jest-setup.js +4 -0
  458. package/package.json +46 -35
  459. package/esm/cli/logging/logs-fetch.js.map +0 -1
  460. package/esm/cli/logging/logs-list.js +0 -49
  461. package/esm/cli/logging/logs-list.js.map +0 -1
  462. package/esm/cli/logging/logs-tail.js +0 -46
  463. package/esm/cli/logging/logs-tail.js.map +0 -1
  464. package/esm/cli/logging/logs.js.map +0 -1
  465. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  466. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScriptOps.js","names":["frodo","state","chokidar","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","spinSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveTextToFile","titleCase","wordwrap","getOneLineDescription","scriptObj","description","_id","context","name","getTableHeaderMd","markdown","getTableRowMd","langMap","JAVASCRIPT","GROOVY","language","split","join","listScripts","long","outcome","scripts","script","getScripts","sort","a","b","localeCompare","table","forEach","push","toString","error","message","exportScriptToFile","scriptId","file","fileName","scriptExport","exportScript","exportScriptByNameToFile","exportScriptByName","exportScriptsToFile","getRealm","exportScripts","exportScriptsToFiles","scriptList","length","exportScriptsToFilesExtract","fileExtension","scriptFileName","scriptSkeleton","getScriptSkeleton","scriptText","Array","isArray","importScriptsFromFile","reUuid","readFile","err","data","importData","JSON","parse","importScripts","importScriptsFromFiles","watch","validateScripts","onChange","path","_stats","handleScriptFileImport","catch","process","exit","watcher","persistent","on","close","scriptFile","getScriptFile","getScriptExportByScriptFile","success","endsWith","replace","getScriptExport","extractFile","getExtractFile","scriptRaw","readFileSync","startsWith","scriptExportRaw","getScriptId","scriptIds","Object","keys","Error"],"sources":["ops/ScriptOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport chokidar from 'chokidar';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n spinSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\nimport type { ScriptSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type { ScriptExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\n/**\n * Get a one-line description of the script object\n * @param {ScriptSkeleton} scriptObj script object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(scriptObj: ScriptSkeleton): string {\n const description = `[${scriptObj._id['brightCyan']}] ${scriptObj.context} - ${scriptObj.name}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Language | Type | Id |\\n';\n markdown += '| ---- | -------- | ---- | ---|';\n return markdown;\n}\n\n/**\n * Get a one-line description of the script object in markdown\n * @param {TypesRaw.ScriptSkeleton} scriptObj script object to describe\n * @returns {string} markdown table row\n */\nexport function getTableRowMd(scriptObj: ScriptSkeleton): string {\n const langMap = { JAVASCRIPT: 'JavaSscript', GROOVY: 'Groovy' };\n const description = `| ${scriptObj.name} | ${\n langMap[scriptObj.language]\n } | ${titleCase(scriptObj.context.split('_').join(' '))} | \\`${\n scriptObj._id\n }\\` |`;\n return description;\n}\n\n/**\n * List scripts\n * @param {boolean} long detail list\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function listScripts(long = false): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.listScripts: start`);\n try {\n const scripts = await frodo.script.getScripts();\n scripts.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'UUID',\n 'Language',\n 'Context',\n 'Description',\n ]);\n const langMap = { JAVASCRIPT: 'JS', GROOVY: 'Groovy' };\n scripts.forEach((script) => {\n table.push([\n wordwrap(script.name, 25, ' '),\n script._id,\n langMap[script.language],\n wordwrap(titleCase(script.context.split('_').join(' ')), 25),\n wordwrap(script.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n scripts.forEach((script) => {\n printMessage(`${script.name}`, 'data');\n });\n }\n } catch (error) {\n outcome = false;\n printMessage(`Error listing scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.listScripts: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export script by id to file\n * @param {string} scriptId script uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptToFile(\n scriptId: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptToFile: start`);\n try {\n showSpinner(`Exporting script '${scriptId}'...`);\n let fileName = getTypedFilename(scriptId, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${scriptId}' to '${fileName}'...`);\n const scriptExport = await frodo.script.exportScript(scriptId);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${scriptId}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${scriptId}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [false]`);\n return false;\n}\n\n/**\n * Export script by name to file\n * @param {string} name script name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptByNameToFile(\n name: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: start`);\n try {\n showSpinner(`Exporting script '${name}'...`);\n let fileName = getTypedFilename(name, 'script');\n if (file) {\n fileName = file;\n }\n spinSpinner(`Exporting script '${name}' to '${fileName}'...`);\n const scriptExport = await frodo.script.exportScriptByName(name);\n saveJsonToFile(scriptExport, fileName);\n succeedSpinner(`Exported script '${name}' to '${fileName}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${name}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to single file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFile(file: string): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: start`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Scripts`,\n 'script'\n );\n if (file) {\n fileName = file;\n }\n const scriptExport = await frodo.script.exportScripts();\n saveJsonToFile(scriptExport, fileName);\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);\n return true;\n } catch (error) {\n printMessage(`Error exporting scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to individual files\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFiles(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);\n const scriptList = await frodo.script.getScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileName = getTypedFilename(script.name, 'script');\n const scriptExport = await frodo.script.exportScriptByName(script.name);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: end [${outcome}]`);\n return outcome;\n}\n\nexport async function exportScriptsToFilesExtract(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);\n const scriptList = await frodo.script.getScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';\n const scriptFileName = getTypedFilename(\n script.name,\n 'script',\n fileExtension\n );\n const fileName = getTypedFilename(script.name, 'script');\n\n const scriptExport = await frodo.script.exportScriptByName(script.name);\n\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const scriptText = Array.isArray(scriptSkeleton.script)\n ? scriptSkeleton.script.join('\\n')\n : scriptSkeleton.script;\n\n scriptSkeleton.script = `file://${scriptFileName}`;\n\n saveTextToFile(scriptText, scriptFileName);\n saveJsonToFile(scriptExport, fileName);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import script(s) from file\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {string} file file name\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScriptsFromFile(\n name: string,\n file: string,\n reUuid = false\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n try {\n if (err) throw err;\n const importData = JSON.parse(data);\n outcome = await frodo.script.importScripts(name, importData, reUuid);\n } catch (error) {\n printMessage(\n `Error exporting script '${name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n });\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import extracted scripts.\n *\n * @param watch whether or not to watch for file changes\n */\nexport async function importScriptsFromFiles(\n watch: boolean,\n reUuid: boolean,\n validateScripts: boolean\n) {\n // If watch is true, it doesn't make sense to reUuid.\n reUuid = watch ? false : reUuid;\n\n /**\n * Run on file change detection, as well as on initial run.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function onChange(path: string, _stats?: fs.Stats): void {\n handleScriptFileImport(path, reUuid, validateScripts).catch((error) => {\n printMessage(`Error importing script: ${error.message}`, 'error');\n debugMessage(error);\n process.exit(1);\n });\n }\n\n // We watch json files and script files.\n const watcher = chokidar.watch(\n [`./**/*.script.json`, `./**/*.script.js`, `./**/*.script.groovy`],\n {\n persistent: watch,\n }\n );\n\n watcher\n .on('add', onChange)\n .on('change', onChange)\n .on('error', (error) => {\n printMessage(`Watcher error: ${error}`, 'error');\n watcher.close();\n })\n .on('ready', () => {\n if (watch) {\n printMessage('Watching for changes...');\n } else {\n watcher.close();\n printMessage('Done.');\n }\n });\n}\n\n/**\n * Handle a script file import.\n *\n * @param file Either a script file or an extract file\n * @param reUuid whether or not to generate a new uuid for each script on import\n */\nasync function handleScriptFileImport(\n file: string,\n reUuid: boolean,\n validateScripts: boolean\n) {\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);\n const scriptFile = getScriptFile(file);\n const script = getScriptExportByScriptFile(scriptFile);\n\n const success = await frodo.script.importScripts(\n '',\n script,\n reUuid,\n validateScripts\n );\n if (success) {\n printMessage(`Imported '${scriptFile}'`);\n }\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: end`);\n}\n\n/**\n * Get a script file from a file.\n *\n * @param file Either a script file or an extract file\n * @returns The script file\n */\nfunction getScriptFile(file: string) {\n if (file.endsWith('.script.json')) {\n return file;\n }\n return file.replace(/\\.script\\.(js|groovy)/, '.script.json');\n}\n\n/**\n * Get a script export from a script file.\n *\n * @param scriptFile The path to the script file\n * @returns The script export\n */\nfunction getScriptExportByScriptFile(\n scriptFile: string\n): ScriptExportInterface {\n const scriptExport = getScriptExport(scriptFile);\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const extractFile = getExtractFile(scriptSkeleton);\n if (!extractFile) {\n return scriptExport;\n }\n\n const scriptRaw = fs.readFileSync(extractFile, 'utf8');\n scriptSkeleton.script = scriptRaw.split('\\n');\n\n return scriptExport;\n}\n\n/**\n * Get an extract file from a script skeleton.\n *\n * @param scriptSkeleton The script skeleton\n * @returns The extract file or null if there is no extract file\n */\nfunction getExtractFile(scriptSkeleton: ScriptSkeleton): string | null {\n const extractFile = scriptSkeleton.script;\n if (Array.isArray(extractFile)) {\n return null;\n }\n if (\n extractFile.startsWith('file://') &&\n (extractFile.endsWith('.js') || extractFile.endsWith('.groovy'))\n ) {\n return extractFile.replace('file://', '');\n }\n return null;\n}\n\n/**\n * Get a script export from a file.\n *\n * @param file The path to a script export file\n * @returns The script export\n */\nfunction getScriptExport(file: string): ScriptExportInterface {\n const scriptExportRaw = fs.readFileSync(file, 'utf8');\n const scriptExport = JSON.parse(scriptExportRaw) as ScriptExportInterface;\n\n return scriptExport;\n}\n\n/**\n * Get the main script skeleton from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script Get the main script skeleton from a script export\n * @returns The main script skeleton\n */\nfunction getScriptSkeleton(script: ScriptExportInterface): ScriptSkeleton {\n const scriptId = getScriptId(script);\n return script.script[scriptId];\n}\n\n/**\n * Get the main script ID from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script The script export\n * @returns The main script ID\n */\nfunction getScriptId(script: ScriptExportInterface): string {\n const scriptIds = Object.keys(script.script);\n if (scriptIds.length !== 1) {\n throw new Error(`Expected 1 script, found ${scriptIds.length}`);\n }\n return scriptIds[0];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ScriptOps.js","names":["frodo","state","chokidar","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","spinSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveTextToFile","titleCase","wordwrap","readScripts","exportScript","exportScriptByName","exportScripts","importScripts","script","isBase64Encoded","getFilePath","getWorkingDirectory","utils","getOneLineDescription","scriptObj","description","_id","context","name","getTableHeaderMd","markdown","getTableRowMd","langMap","JAVASCRIPT","GROOVY","language","split","join","listScripts","long","outcome","scripts","sort","a","b","localeCompare","table","forEach","push","toString","error","message","exportScriptToFile","scriptId","file","fileName","filePath","scriptExport","exportScriptByNameToFile","exportScriptsToFile","getRealm","exportScriptsToFiles","scriptList","length","exportScriptsToFilesExtract","fileExtension","scriptFileName","scriptFilePath","scriptSkeleton","getScriptSkeleton","scriptText","Array","isArray","isValidUrl","urlString","Boolean","URL","isScriptExtracted","importData","extracted","Object","keys","importScriptsFromFile","reUuid","readFile","err","data","JSON","parse","handleScriptFileImport","importScriptsFromFiles","watch","validateScripts","onChange","path","_stats","watcher","persistent","on","close","scriptFile","getScriptFile","getScriptExportByScriptFile","imported","endsWith","replace","getScriptExport","extractFile","getExtractFile","scriptRaw","readFileSync","startsWith","scriptExportRaw","getScriptId","scriptIds","Error"],"sources":["../../src/ops/ScriptOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type ScriptSkeleton } from '@rockcarver/frodo-lib/types/api/ScriptApi';\nimport { type ScriptExportInterface } from '@rockcarver/frodo-lib/types/ops/ScriptOps';\nimport chokidar from 'chokidar';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n spinSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveTextToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst {\n readScripts,\n exportScript,\n exportScriptByName,\n exportScripts,\n importScripts,\n} = frodo.script;\n\nconst { isBase64Encoded, getFilePath, getWorkingDirectory } = frodo.utils;\n\n/**\n * Get a one-line description of the script object\n * @param {ScriptSkeleton} scriptObj script object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(scriptObj: ScriptSkeleton): string {\n const description = `[${scriptObj._id['brightCyan']}] ${scriptObj.context} - ${scriptObj.name}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Language | Type | Id |\\n';\n markdown += '| ---- | -------- | ---- | ---|';\n return markdown;\n}\n\n/**\n * Get a one-line description of the script object in markdown\n * @param {TypesRaw.ScriptSkeleton} scriptObj script object to describe\n * @returns {string} markdown table row\n */\nexport function getTableRowMd(scriptObj: ScriptSkeleton): string {\n const langMap = { JAVASCRIPT: 'JavaSscript', GROOVY: 'Groovy' };\n const description = `| ${scriptObj.name} | ${\n langMap[scriptObj.language]\n } | ${titleCase(scriptObj.context.split('_').join(' '))} | \\`${\n scriptObj._id\n }\\` |`;\n return description;\n}\n\n/**\n * List scripts\n * @param {boolean} long detail list\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function listScripts(long = false): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.listScripts: start`);\n try {\n const scripts = await readScripts();\n scripts.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'UUID',\n 'Language',\n 'Context',\n 'Description',\n ]);\n const langMap = { JAVASCRIPT: 'JS', GROOVY: 'Groovy' };\n scripts.forEach((script) => {\n table.push([\n wordwrap(script.name, 25, ' '),\n script._id,\n langMap[script.language],\n wordwrap(titleCase(script.context.split('_').join(' ')), 25),\n wordwrap(script.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n scripts.forEach((script) => {\n printMessage(`${script.name}`, 'data');\n });\n }\n } catch (error) {\n outcome = false;\n printMessage(`Error listing scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.listScripts: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export script by id to file\n * @param {string} scriptId script uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptToFile(\n scriptId: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptToFile: start`);\n try {\n showSpinner(`Exporting script '${scriptId}'...`);\n let fileName = getTypedFilename(scriptId, 'script');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n spinSpinner(`Exporting script '${scriptId}' to '${filePath}'...`);\n const scriptExport = await exportScript(scriptId);\n saveJsonToFile(scriptExport, filePath);\n succeedSpinner(`Exported script '${scriptId}' to '${filePath}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${scriptId}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptToFile: end [false]`);\n return false;\n}\n\n/**\n * Export script by name to file\n * @param {string} name script name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptByNameToFile(\n name: string,\n file: string\n): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: start`);\n try {\n showSpinner(`Exporting script '${name}'...`);\n let fileName = getTypedFilename(name, 'script');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n spinSpinner(`Exporting script '${name}' to '${filePath}'...`);\n const scriptExport = await exportScriptByName(name);\n saveJsonToFile(scriptExport, filePath);\n succeedSpinner(`Exported script '${name}' to '${filePath}'.`);\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [true]`);\n return true;\n } catch (error) {\n failSpinner(`Error exporting script '${name}': ${error.message}`);\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptByNameToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to single file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFile(file: string): Promise<boolean> {\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: start`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Scripts`,\n 'script'\n );\n if (file) {\n fileName = file;\n }\n const scriptExport = await exportScripts();\n saveJsonToFile(scriptExport, getFilePath(fileName, true));\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [true]`);\n return true;\n } catch (error) {\n printMessage(`Error exporting scripts: ${error.message}`, 'error');\n debugMessage(error);\n }\n debugMessage(`Cli.ScriptOps.exportScriptsToFile: end [false]`);\n return false;\n}\n\n/**\n * Export all scripts to individual files\n * @returns {Promise<boolean>} true if no errors occurred during export, false otherwise\n */\nexport async function exportScriptsToFiles(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: start`);\n const scriptList = await readScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileName = getTypedFilename(script.name, 'script');\n const scriptExport = await exportScriptByName(script.name);\n saveJsonToFile(scriptExport, getFilePath(fileName, true));\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFiles: end [${outcome}]`);\n return outcome;\n}\n\nexport async function exportScriptsToFilesExtract(): Promise<boolean> {\n let outcome = true;\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: start`);\n const scriptList = await readScripts();\n createProgressBar(\n scriptList.length,\n 'Exporting scripts to individual files...'\n );\n for (const script of scriptList) {\n try {\n updateProgressBar(`Reading script ${script.name}`);\n const fileExtension = script.language === 'JAVASCRIPT' ? 'js' : 'groovy';\n const scriptFileName = getTypedFilename(\n script.name,\n 'script',\n fileExtension\n );\n const scriptFilePath = getFilePath(scriptFileName, true);\n const fileName = getTypedFilename(script.name, 'script');\n const filePath = getFilePath(fileName, true);\n\n const scriptExport = await exportScriptByName(script.name);\n\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const scriptText = Array.isArray(scriptSkeleton.script)\n ? scriptSkeleton.script.join('\\n')\n : scriptSkeleton.script;\n\n scriptSkeleton.script = `file://${scriptFilePath}`;\n\n saveTextToFile(scriptText, scriptFilePath);\n saveJsonToFile(scriptExport, filePath);\n } catch (error) {\n outcome = false;\n printMessage(\n `Error exporting script '${script.name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n }\n stopProgressBar(`Exported ${scriptList.length} scripts to individual files.`);\n debugMessage(`Cli.ScriptOps.exportScriptsToFilesExtract: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Check if a string is a valid URL\n * @param {string} urlString input string to be evaluated\n * @returns {boolean} true if a valid URL, false otherwise\n */\nfunction isValidUrl(urlString: string): boolean {\n try {\n return Boolean(new URL(urlString));\n } catch (error) {\n return false;\n }\n}\n\nfunction isScriptExtracted(importData: ScriptExportInterface): boolean {\n debugMessage(`Cli.ScriptOps.isScriptExtracted: start`);\n let extracted = true;\n for (const scriptId of Object.keys(importData.script)) {\n const script = importData.script[scriptId].script;\n if (Array.isArray(script)) {\n debugMessage(`Cli.ScriptOps.isScriptExtracted: script is string array`);\n extracted = false;\n break;\n }\n if (isValidUrl(script as string)) {\n debugMessage(`Cli.ScriptOps.isScriptExtracted: script is extracted`);\n extracted = true;\n break;\n }\n if (isBase64Encoded) {\n debugMessage(`Cli.ScriptOps.isScriptExtracted: script is base64-encoded`);\n extracted = false;\n break;\n }\n break;\n }\n debugMessage(`Cli.ScriptOps.isScriptExtracted: end [extracted=${extracted}]`);\n return extracted;\n}\n\n/**\n * Import script(s) from file\n * @param {string} name Optional name of script. If supplied, only the script of that name is imported\n * @param {string} file file name\n * @param {boolean} reUuid true to generate a new uuid for each script on import, false otherwise\n * @returns {Promise<boolean>} true if no errors occurred during import, false otherwise\n */\nexport async function importScriptsFromFile(\n name: string,\n file: string,\n reUuid = false\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: start`);\n fs.readFile(filePath, 'utf8', async (err, data) => {\n try {\n if (err) throw err;\n const importData: ScriptExportInterface = JSON.parse(data);\n if (isScriptExtracted(importData)) {\n await handleScriptFileImport(filePath, reUuid, false);\n } else {\n await importScripts(name, importData, reUuid);\n }\n outcome = true;\n } catch (error) {\n printMessage(\n `Error exporting script '${name}': ${error.message}`,\n 'error'\n );\n debugMessage(error);\n }\n });\n debugMessage(`Cli.ScriptOps.importScriptsFromFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Import extracted scripts.\n *\n * @param watch whether or not to watch for file changes\n */\nexport async function importScriptsFromFiles(\n watch: boolean,\n reUuid: boolean,\n validateScripts: boolean\n) {\n // If watch is true, it doesn't make sense to reUuid.\n reUuid = watch ? false : reUuid;\n\n /**\n * Run on file change detection, as well as on initial run.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async function onChange(path: string, _stats?: fs.Stats): Promise<void> {\n try {\n await handleScriptFileImport(path, reUuid, validateScripts);\n } catch (error) {\n printMessage(`${path}: ${error.message}`, 'error');\n }\n }\n\n // We watch json files and script files.\n const watcher = chokidar.watch(\n [\n `${getWorkingDirectory()}/**/*.script.json`,\n `${getWorkingDirectory()}/**/*.script.js`,\n `${getWorkingDirectory()}/**/*.script.groovy`,\n ],\n {\n persistent: watch,\n }\n );\n\n watcher\n .on('add', onChange)\n .on('change', onChange)\n .on('error', (error) => {\n printMessage(`Watcher error: ${error}`, 'error');\n watcher.close();\n })\n .on('ready', () => {\n if (watch) {\n printMessage('Watching for changes...');\n } else {\n watcher.close();\n printMessage('Done.');\n }\n });\n}\n\n/**\n * Handle a script file import.\n *\n * @param file Either a script file or an extract file\n * @param reUuid whether or not to generate a new uuid for each script on import\n */\nasync function handleScriptFileImport(\n file: string,\n reUuid: boolean,\n validateScripts: boolean\n) {\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: start`);\n const scriptFile = getScriptFile(file);\n const script = getScriptExportByScriptFile(scriptFile);\n\n const imported = await importScripts('', script, reUuid, validateScripts);\n if (imported) {\n printMessage(`Imported '${scriptFile}'`);\n }\n debugMessage(`Cli.ScriptOps.handleScriptFileImport: end`);\n}\n\n/**\n * Get a script file from a file.\n *\n * @param file Either a script file or an extract file\n * @returns The script file\n */\nfunction getScriptFile(file: string) {\n if (file.endsWith('.script.json')) {\n return file;\n }\n return file.replace(/\\.script\\.(js|groovy)/, '.script.json');\n}\n\n/**\n * Get a script export from a script file.\n *\n * @param scriptFile The path to the script file\n * @returns The script export\n */\nfunction getScriptExportByScriptFile(\n scriptFile: string\n): ScriptExportInterface {\n const scriptExport = getScriptExport(scriptFile);\n const scriptSkeleton = getScriptSkeleton(scriptExport);\n\n const extractFile = getExtractFile(scriptSkeleton);\n if (!extractFile) {\n return scriptExport;\n }\n\n const scriptRaw = fs.readFileSync(extractFile, 'utf8');\n scriptSkeleton.script = scriptRaw.split('\\n');\n\n return scriptExport;\n}\n\n/**\n * Get an extract file from a script skeleton.\n *\n * @param scriptSkeleton The script skeleton\n * @returns The extract file or null if there is no extract file\n */\nfunction getExtractFile(scriptSkeleton: ScriptSkeleton): string | null {\n const extractFile = scriptSkeleton.script;\n if (Array.isArray(extractFile)) {\n return null;\n }\n if (\n extractFile.startsWith('file://') &&\n (extractFile.endsWith('.js') || extractFile.endsWith('.groovy'))\n ) {\n return extractFile.replace('file://', '');\n }\n return null;\n}\n\n/**\n * Get a script export from a file.\n *\n * @param file The path to a script export file\n * @returns The script export\n */\nfunction getScriptExport(file: string): ScriptExportInterface {\n const scriptExportRaw = fs.readFileSync(file, 'utf8');\n const scriptExport = JSON.parse(scriptExportRaw) as ScriptExportInterface;\n\n return scriptExport;\n}\n\n/**\n * Get the main script skeleton from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script Get the main script skeleton from a script export\n * @returns The main script skeleton\n */\nfunction getScriptSkeleton(script: ScriptExportInterface): ScriptSkeleton {\n const scriptId = getScriptId(script);\n return script.script[scriptId];\n}\n\n/**\n * Get the main script ID from a script export. If there is more than one\n * script, an error is thrown.\n *\n * @param script The script export\n * @returns The main script ID\n */\nfunction getScriptId(script: ScriptExportInterface): string {\n const scriptIds = Object.keys(script.script);\n if (scriptIds.length !== 1) {\n throw new Error(`Expected 1 script, found ${scriptIds.length}`);\n }\n return scriptIds[0];\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAGpD,OAAOC,QAAQ,MAAM,UAAU;AAC/B,OAAOC,EAAE,MAAM,IAAI;AAEnB,SACEC,iBAAiB,EACjBC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,iBAAiB,QACZ,kBAAkB;AACzB,SACEC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,SAAS,QACJ,4BAA4B;AACnC,OAAOC,QAAQ,MAAM,kBAAkB;AAEvC,MAAM;EACJC,WAAW;EACXC,YAAY;EACZC,kBAAkB;EAClBC,aAAa;EACbC;AACF,CAAC,GAAGvB,KAAK,CAACwB,MAAM;AAEhB,MAAM;EAAEC,eAAe;EAAEC,WAAW;EAAEC;AAAoB,CAAC,GAAG3B,KAAK,CAAC4B,KAAK;;AAEzE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACC,SAAyB,EAAU;EACvE,MAAMC,WAAW,GAAI,IAAGD,SAAS,CAACE,GAAG,CAAC,YAAY,CAAE,KAAIF,SAAS,CAACG,OAAQ,MAAKH,SAAS,CAACI,IAAK,EAAC;EAC/F,OAAOH,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,gBAAgBA,CAAA,EAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,mCAAmC;EAC/CA,QAAQ,IAAI,iCAAiC;EAC7C,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACP,SAAyB,EAAU;EAC/D,MAAMQ,OAAO,GAAG;IAAEC,UAAU,EAAE,aAAa;IAAEC,MAAM,EAAE;EAAS,CAAC;EAC/D,MAAMT,WAAW,GAAI,KAAID,SAAS,CAACI,IAAK,MACtCI,OAAO,CAACR,SAAS,CAACW,QAAQ,CAC3B,MAAKxB,SAAS,CAACa,SAAS,CAACG,OAAO,CAACS,KAAK,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAE,QACtDb,SAAS,CAACE,GACX,MAAK;EACN,OAAOD,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAea,WAAWA,CAACC,IAAI,GAAG,KAAK,EAAoB;EAChE,IAAIC,OAAO,GAAG,IAAI;EAClBxC,YAAY,CAAE,kCAAiC,CAAC;EAChD,IAAI;IACF,MAAMyC,OAAO,GAAG,MAAM5B,WAAW,CAAC,CAAC;IACnC4B,OAAO,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACf,IAAI,CAACiB,aAAa,CAACD,CAAC,CAAChB,IAAI,CAAC,CAAC;IACpD,IAAIW,IAAI,EAAE;MACR,MAAMO,KAAK,GAAG/C,WAAW,CAAC,CACxB,MAAM,EACN,MAAM,EACN,UAAU,EACV,SAAS,EACT,aAAa,CACd,CAAC;MACF,MAAMiC,OAAO,GAAG;QAAEC,UAAU,EAAE,IAAI;QAAEC,MAAM,EAAE;MAAS,CAAC;MACtDO,OAAO,CAACM,OAAO,CAAE7B,MAAM,IAAK;QAC1B4B,KAAK,CAACE,IAAI,CAAC,CACTpC,QAAQ,CAACM,MAAM,CAACU,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAC/BV,MAAM,CAACQ,GAAG,EACVM,OAAO,CAACd,MAAM,CAACiB,QAAQ,CAAC,EACxBvB,QAAQ,CAACD,SAAS,CAACO,MAAM,CAACS,OAAO,CAACS,KAAK,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAC5DzB,QAAQ,CAACM,MAAM,CAACO,WAAW,EAAE,EAAE,CAAC,CACjC,CAAC;MACJ,CAAC,CAAC;MACFvB,YAAY,CAAC4C,KAAK,CAACG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC,MAAM;MACLR,OAAO,CAACM,OAAO,CAAE7B,MAAM,IAAK;QAC1BhB,YAAY,CAAE,GAAEgB,MAAM,CAACU,IAAK,EAAC,EAAE,MAAM,CAAC;MACxC,CAAC,CAAC;IACJ;EACF,CAAC,CAAC,OAAOsB,KAAK,EAAE;IACdV,OAAO,GAAG,KAAK;IACftC,YAAY,CAAE,0BAAyBgD,KAAK,CAACC,OAAQ,EAAC,EAAE,OAAO,CAAC;IAChEnD,YAAY,CAACkD,KAAK,CAAC;EACrB;EACAlD,YAAY,CAAE,mCAAkCwC,OAAQ,GAAE,CAAC;EAC3D,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeY,kBAAkBA,CACtCC,QAAgB,EAChBC,IAAY,EACM;EAClBtD,YAAY,CAAE,yCAAwC,CAAC;EACvD,IAAI;IACFG,WAAW,CAAE,qBAAoBkD,QAAS,MAAK,CAAC;IAChD,IAAIE,QAAQ,GAAG/C,gBAAgB,CAAC6C,QAAQ,EAAE,QAAQ,CAAC;IACnD,IAAIC,IAAI,EAAE;MACRC,QAAQ,GAAGD,IAAI;IACjB;IACA,MAAME,QAAQ,GAAGpC,WAAW,CAACmC,QAAQ,EAAE,IAAI,CAAC;IAC5CnD,WAAW,CAAE,qBAAoBiD,QAAS,SAAQG,QAAS,MAAK,CAAC;IACjE,MAAMC,YAAY,GAAG,MAAM3C,YAAY,CAACuC,QAAQ,CAAC;IACjD5C,cAAc,CAACgD,YAAY,EAAED,QAAQ,CAAC;IACtClD,cAAc,CAAE,oBAAmB+C,QAAS,SAAQG,QAAS,IAAG,CAAC;IACjExD,YAAY,CAAE,8CAA6C,CAAC;IAC5D,OAAO,IAAI;EACb,CAAC,CAAC,OAAOkD,KAAK,EAAE;IACdjD,WAAW,CAAE,2BAA0BoD,QAAS,MAAKH,KAAK,CAACC,OAAQ,EAAC,CAAC;IACrEnD,YAAY,CAACkD,KAAK,CAAC;EACrB;EACAlD,YAAY,CAAE,+CAA8C,CAAC;EAC7D,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe0D,wBAAwBA,CAC5C9B,IAAY,EACZ0B,IAAY,EACM;EAClBtD,YAAY,CAAE,+CAA8C,CAAC;EAC7D,IAAI;IACFG,WAAW,CAAE,qBAAoByB,IAAK,MAAK,CAAC;IAC5C,IAAI2B,QAAQ,GAAG/C,gBAAgB,CAACoB,IAAI,EAAE,QAAQ,CAAC;IAC/C,IAAI0B,IAAI,EAAE;MACRC,QAAQ,GAAGD,IAAI;IACjB;IACA,MAAME,QAAQ,GAAGpC,WAAW,CAACmC,QAAQ,EAAE,IAAI,CAAC;IAC5CnD,WAAW,CAAE,qBAAoBwB,IAAK,SAAQ4B,QAAS,MAAK,CAAC;IAC7D,MAAMC,YAAY,GAAG,MAAM1C,kBAAkB,CAACa,IAAI,CAAC;IACnDnB,cAAc,CAACgD,YAAY,EAAED,QAAQ,CAAC;IACtClD,cAAc,CAAE,oBAAmBsB,IAAK,SAAQ4B,QAAS,IAAG,CAAC;IAC7DxD,YAAY,CAAE,oDAAmD,CAAC;IAClE,OAAO,IAAI;EACb,CAAC,CAAC,OAAOkD,KAAK,EAAE;IACdjD,WAAW,CAAE,2BAA0B2B,IAAK,MAAKsB,KAAK,CAACC,OAAQ,EAAC,CAAC;IACjEnD,YAAY,CAACkD,KAAK,CAAC;EACrB;EACAlD,YAAY,CAAE,qDAAoD,CAAC;EACnE,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe2D,mBAAmBA,CAACL,IAAY,EAAoB;EACxEtD,YAAY,CAAE,0CAAyC,CAAC;EACxD,IAAI;IACF,IAAIuD,QAAQ,GAAG/C,gBAAgB,CAC5B,MAAKG,SAAS,CAAChB,KAAK,CAACiE,QAAQ,CAAC,CAAC,CAAE,SAAQ,EAC1C,QACF,CAAC;IACD,IAAIN,IAAI,EAAE;MACRC,QAAQ,GAAGD,IAAI;IACjB;IACA,MAAMG,YAAY,GAAG,MAAMzC,aAAa,CAAC,CAAC;IAC1CP,cAAc,CAACgD,YAAY,EAAErC,WAAW,CAACmC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzDvD,YAAY,CAAE,+CAA8C,CAAC;IAC7D,OAAO,IAAI;EACb,CAAC,CAAC,OAAOkD,KAAK,EAAE;IACdhD,YAAY,CAAE,4BAA2BgD,KAAK,CAACC,OAAQ,EAAC,EAAE,OAAO,CAAC;IAClEnD,YAAY,CAACkD,KAAK,CAAC;EACrB;EACAlD,YAAY,CAAE,gDAA+C,CAAC;EAC9D,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe6D,oBAAoBA,CAAA,EAAqB;EAC7D,IAAIrB,OAAO,GAAG,IAAI;EAClBxC,YAAY,CAAE,2CAA0C,CAAC;EACzD,MAAM8D,UAAU,GAAG,MAAMjD,WAAW,CAAC,CAAC;EACtCf,iBAAiB,CACfgE,UAAU,CAACC,MAAM,EACjB,0CACF,CAAC;EACD,KAAK,MAAM7C,MAAM,IAAI4C,UAAU,EAAE;IAC/B,IAAI;MACFvD,iBAAiB,CAAE,kBAAiBW,MAAM,CAACU,IAAK,EAAC,CAAC;MAClD,MAAM2B,QAAQ,GAAG/C,gBAAgB,CAACU,MAAM,CAACU,IAAI,EAAE,QAAQ,CAAC;MACxD,MAAM6B,YAAY,GAAG,MAAM1C,kBAAkB,CAACG,MAAM,CAACU,IAAI,CAAC;MAC1DnB,cAAc,CAACgD,YAAY,EAAErC,WAAW,CAACmC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,OAAOL,KAAK,EAAE;MACdV,OAAO,GAAG,KAAK;MACftC,YAAY,CACT,2BAA0BgB,MAAM,CAACU,IAAK,MAAKsB,KAAK,CAACC,OAAQ,EAAC,EAC3D,OACF,CAAC;MACDnD,YAAY,CAACkD,KAAK,CAAC;IACrB;EACF;EACA7C,eAAe,CAAE,YAAWyD,UAAU,CAACC,MAAO,+BAA8B,CAAC;EAC7E/D,YAAY,CAAE,4CAA2CwC,OAAQ,GAAE,CAAC;EACpE,OAAOA,OAAO;AAChB;AAEA,OAAO,eAAewB,2BAA2BA,CAAA,EAAqB;EACpE,IAAIxB,OAAO,GAAG,IAAI;EAClBxC,YAAY,CAAE,kDAAiD,CAAC;EAChE,MAAM8D,UAAU,GAAG,MAAMjD,WAAW,CAAC,CAAC;EACtCf,iBAAiB,CACfgE,UAAU,CAACC,MAAM,EACjB,0CACF,CAAC;EACD,KAAK,MAAM7C,MAAM,IAAI4C,UAAU,EAAE;IAC/B,IAAI;MACFvD,iBAAiB,CAAE,kBAAiBW,MAAM,CAACU,IAAK,EAAC,CAAC;MAClD,MAAMqC,aAAa,GAAG/C,MAAM,CAACiB,QAAQ,KAAK,YAAY,GAAG,IAAI,GAAG,QAAQ;MACxE,MAAM+B,cAAc,GAAG1D,gBAAgB,CACrCU,MAAM,CAACU,IAAI,EACX,QAAQ,EACRqC,aACF,CAAC;MACD,MAAME,cAAc,GAAG/C,WAAW,CAAC8C,cAAc,EAAE,IAAI,CAAC;MACxD,MAAMX,QAAQ,GAAG/C,gBAAgB,CAACU,MAAM,CAACU,IAAI,EAAE,QAAQ,CAAC;MACxD,MAAM4B,QAAQ,GAAGpC,WAAW,CAACmC,QAAQ,EAAE,IAAI,CAAC;MAE5C,MAAME,YAAY,GAAG,MAAM1C,kBAAkB,CAACG,MAAM,CAACU,IAAI,CAAC;MAE1D,MAAMwC,cAAc,GAAGC,iBAAiB,CAACZ,YAAY,CAAC;MAEtD,MAAMa,UAAU,GAAGC,KAAK,CAACC,OAAO,CAACJ,cAAc,CAAClD,MAAM,CAAC,GACnDkD,cAAc,CAAClD,MAAM,CAACmB,IAAI,CAAC,IAAI,CAAC,GAChC+B,cAAc,CAAClD,MAAM;MAEzBkD,cAAc,CAAClD,MAAM,GAAI,UAASiD,cAAe,EAAC;MAElDzD,cAAc,CAAC4D,UAAU,EAAEH,cAAc,CAAC;MAC1C1D,cAAc,CAACgD,YAAY,EAAED,QAAQ,CAAC;IACxC,CAAC,CAAC,OAAON,KAAK,EAAE;MACdV,OAAO,GAAG,KAAK;MACftC,YAAY,CACT,2BAA0BgB,MAAM,CAACU,IAAK,MAAKsB,KAAK,CAACC,OAAQ,EAAC,EAC3D,OACF,CAAC;MACDnD,YAAY,CAACkD,KAAK,CAAC;IACrB;EACF;EACA7C,eAAe,CAAE,YAAWyD,UAAU,CAACC,MAAO,+BAA8B,CAAC;EAC7E/D,YAAY,CAAE,mDAAkDwC,OAAQ,GAAE,CAAC;EAC3E,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASiC,UAAUA,CAACC,SAAiB,EAAW;EAC9C,IAAI;IACF,OAAOC,OAAO,CAAC,IAAIC,GAAG,CAACF,SAAS,CAAC,CAAC;EACpC,CAAC,CAAC,OAAOxB,KAAK,EAAE;IACd,OAAO,KAAK;EACd;AACF;AAEA,SAAS2B,iBAAiBA,CAACC,UAAiC,EAAW;EACrE9E,YAAY,CAAE,wCAAuC,CAAC;EACtD,IAAI+E,SAAS,GAAG,IAAI;EACpB,KAAK,MAAM1B,QAAQ,IAAI2B,MAAM,CAACC,IAAI,CAACH,UAAU,CAAC5D,MAAM,CAAC,EAAE;IACrD,MAAMA,MAAM,GAAG4D,UAAU,CAAC5D,MAAM,CAACmC,QAAQ,CAAC,CAACnC,MAAM;IACjD,IAAIqD,KAAK,CAACC,OAAO,CAACtD,MAAM,CAAC,EAAE;MACzBlB,YAAY,CAAE,yDAAwD,CAAC;MACvE+E,SAAS,GAAG,KAAK;MACjB;IACF;IACA,IAAIN,UAAU,CAACvD,MAAgB,CAAC,EAAE;MAChClB,YAAY,CAAE,sDAAqD,CAAC;MACpE+E,SAAS,GAAG,IAAI;MAChB;IACF;IACA,IAAI5D,eAAe,EAAE;MACnBnB,YAAY,CAAE,2DAA0D,CAAC;MACzE+E,SAAS,GAAG,KAAK;MACjB;IACF;IACA;EACF;EACA/E,YAAY,CAAE,mDAAkD+E,SAAU,GAAE,CAAC;EAC7E,OAAOA,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeG,qBAAqBA,CACzCtD,IAAY,EACZ0B,IAAY,EACZ6B,MAAM,GAAG,KAAK,EACI;EAClB,IAAI3C,OAAO,GAAG,KAAK;EACnB,MAAMgB,QAAQ,GAAGpC,WAAW,CAACkC,IAAI,CAAC;EAClCtD,YAAY,CAAE,4CAA2C,CAAC;EAC1DH,EAAE,CAACuF,QAAQ,CAAC5B,QAAQ,EAAE,MAAM,EAAE,OAAO6B,GAAG,EAAEC,IAAI,KAAK;IACjD,IAAI;MACF,IAAID,GAAG,EAAE,MAAMA,GAAG;MAClB,MAAMP,UAAiC,GAAGS,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;MAC1D,IAAIT,iBAAiB,CAACC,UAAU,CAAC,EAAE;QACjC,MAAMW,sBAAsB,CAACjC,QAAQ,EAAE2B,MAAM,EAAE,KAAK,CAAC;MACvD,CAAC,MAAM;QACL,MAAMlE,aAAa,CAACW,IAAI,EAAEkD,UAAU,EAAEK,MAAM,CAAC;MAC/C;MACA3C,OAAO,GAAG,IAAI;IAChB,CAAC,CAAC,OAAOU,KAAK,EAAE;MACdhD,YAAY,CACT,2BAA0B0B,IAAK,MAAKsB,KAAK,CAACC,OAAQ,EAAC,EACpD,OACF,CAAC;MACDnD,YAAY,CAACkD,KAAK,CAAC;IACrB;EACF,CAAC,CAAC;EACFlD,YAAY,CAAE,6CAA4CwC,OAAQ,GAAE,CAAC;EACrE,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAekD,sBAAsBA,CAC1CC,KAAc,EACdR,MAAe,EACfS,eAAwB,EACxB;EACA;EACAT,MAAM,GAAGQ,KAAK,GAAG,KAAK,GAAGR,MAAM;;EAE/B;AACF;AACA;EACE;EACA,eAAeU,QAAQA,CAACC,IAAY,EAAEC,MAAiB,EAAiB;IACtE,IAAI;MACF,MAAMN,sBAAsB,CAACK,IAAI,EAAEX,MAAM,EAAES,eAAe,CAAC;IAC7D,CAAC,CAAC,OAAO1C,KAAK,EAAE;MACdhD,YAAY,CAAE,GAAE4F,IAAK,KAAI5C,KAAK,CAACC,OAAQ,EAAC,EAAE,OAAO,CAAC;IACpD;EACF;;EAEA;EACA,MAAM6C,OAAO,GAAGpG,QAAQ,CAAC+F,KAAK,CAC5B,CACG,GAAEtE,mBAAmB,CAAC,CAAE,mBAAkB,EAC1C,GAAEA,mBAAmB,CAAC,CAAE,iBAAgB,EACxC,GAAEA,mBAAmB,CAAC,CAAE,qBAAoB,CAC9C,EACD;IACE4E,UAAU,EAAEN;EACd,CACF,CAAC;EAEDK,OAAO,CACJE,EAAE,CAAC,KAAK,EAAEL,QAAQ,CAAC,CACnBK,EAAE,CAAC,QAAQ,EAAEL,QAAQ,CAAC,CACtBK,EAAE,CAAC,OAAO,EAAGhD,KAAK,IAAK;IACtBhD,YAAY,CAAE,kBAAiBgD,KAAM,EAAC,EAAE,OAAO,CAAC;IAChD8C,OAAO,CAACG,KAAK,CAAC,CAAC;EACjB,CAAC,CAAC,CACDD,EAAE,CAAC,OAAO,EAAE,MAAM;IACjB,IAAIP,KAAK,EAAE;MACTzF,YAAY,CAAC,yBAAyB,CAAC;IACzC,CAAC,MAAM;MACL8F,OAAO,CAACG,KAAK,CAAC,CAAC;MACfjG,YAAY,CAAC,OAAO,CAAC;IACvB;EACF,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeuF,sBAAsBA,CACnCnC,IAAY,EACZ6B,MAAe,EACfS,eAAwB,EACxB;EACA5F,YAAY,CAAE,6CAA4C,CAAC;EAC3D,MAAMoG,UAAU,GAAGC,aAAa,CAAC/C,IAAI,CAAC;EACtC,MAAMpC,MAAM,GAAGoF,2BAA2B,CAACF,UAAU,CAAC;EAEtD,MAAMG,QAAQ,GAAG,MAAMtF,aAAa,CAAC,EAAE,EAAEC,MAAM,EAAEiE,MAAM,EAAES,eAAe,CAAC;EACzE,IAAIW,QAAQ,EAAE;IACZrG,YAAY,CAAE,aAAYkG,UAAW,GAAE,CAAC;EAC1C;EACApG,YAAY,CAAE,2CAA0C,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASqG,aAAaA,CAAC/C,IAAY,EAAE;EACnC,IAAIA,IAAI,CAACkD,QAAQ,CAAC,cAAc,CAAC,EAAE;IACjC,OAAOlD,IAAI;EACb;EACA,OAAOA,IAAI,CAACmD,OAAO,CAAC,uBAAuB,EAAE,cAAc,CAAC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASH,2BAA2BA,CAClCF,UAAkB,EACK;EACvB,MAAM3C,YAAY,GAAGiD,eAAe,CAACN,UAAU,CAAC;EAChD,MAAMhC,cAAc,GAAGC,iBAAiB,CAACZ,YAAY,CAAC;EAEtD,MAAMkD,WAAW,GAAGC,cAAc,CAACxC,cAAc,CAAC;EAClD,IAAI,CAACuC,WAAW,EAAE;IAChB,OAAOlD,YAAY;EACrB;EAEA,MAAMoD,SAAS,GAAGhH,EAAE,CAACiH,YAAY,CAACH,WAAW,EAAE,MAAM,CAAC;EACtDvC,cAAc,CAAClD,MAAM,GAAG2F,SAAS,CAACzE,KAAK,CAAC,IAAI,CAAC;EAE7C,OAAOqB,YAAY;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmD,cAAcA,CAACxC,cAA8B,EAAiB;EACrE,MAAMuC,WAAW,GAAGvC,cAAc,CAAClD,MAAM;EACzC,IAAIqD,KAAK,CAACC,OAAO,CAACmC,WAAW,CAAC,EAAE;IAC9B,OAAO,IAAI;EACb;EACA,IACEA,WAAW,CAACI,UAAU,CAAC,SAAS,CAAC,KAChCJ,WAAW,CAACH,QAAQ,CAAC,KAAK,CAAC,IAAIG,WAAW,CAACH,QAAQ,CAAC,SAAS,CAAC,CAAC,EAChE;IACA,OAAOG,WAAW,CAACF,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EAC3C;EACA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACpD,IAAY,EAAyB;EAC5D,MAAM0D,eAAe,GAAGnH,EAAE,CAACiH,YAAY,CAACxD,IAAI,EAAE,MAAM,CAAC;EACrD,MAAMG,YAAY,GAAG8B,IAAI,CAACC,KAAK,CAACwB,eAAe,CAA0B;EAEzE,OAAOvD,YAAY;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASY,iBAAiBA,CAACnD,MAA6B,EAAkB;EACxE,MAAMmC,QAAQ,GAAG4D,WAAW,CAAC/F,MAAM,CAAC;EACpC,OAAOA,MAAM,CAACA,MAAM,CAACmC,QAAQ,CAAC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4D,WAAWA,CAAC/F,MAA6B,EAAU;EAC1D,MAAMgG,SAAS,GAAGlC,MAAM,CAACC,IAAI,CAAC/D,MAAM,CAACA,MAAM,CAAC;EAC5C,IAAIgG,SAAS,CAACnD,MAAM,KAAK,CAAC,EAAE;IAC1B,MAAM,IAAIoD,KAAK,CAAE,4BAA2BD,SAAS,CAACnD,MAAO,EAAC,CAAC;EACjE;EACA,OAAOmD,SAAS,CAAC,CAAC,CAAC;AACrB"}
@@ -1,6 +1,27 @@
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 { createKeyValueTable, createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
3
+ import { getTypedFilename, saveJsonToFile, saveToFile, titleCase } from '../utils/ExportImportUtils';
3
4
  import wordwrap from './utils/Wordwrap';
5
+ const {
6
+ resolveUserName
7
+ } = frodo.idm.managed;
8
+ const {
9
+ readSecrets,
10
+ createSecret: _createSecret,
11
+ readVersionsOfSecret,
12
+ readSecret,
13
+ exportSecret,
14
+ exportSecrets,
15
+ enableVersionOfSecret,
16
+ disableVersionOfSecret,
17
+ createVersionOfSecret: _createVersionOfSecret,
18
+ updateSecretDescription,
19
+ deleteSecret: _deleteSecret,
20
+ deleteVersionOfSecret: _deleteVersionOfSecret
21
+ } = frodo.cloud.secret;
22
+ const {
23
+ getFilePath
24
+ } = frodo.utils;
4
25
 
5
26
  /**
6
27
  * List secrets
@@ -9,7 +30,7 @@ import wordwrap from './utils/Wordwrap';
9
30
  export async function listSecrets(long) {
10
31
  let secrets = [];
11
32
  try {
12
- secrets = (await frodo.cloud.secret.getSecrets()).result;
33
+ secrets = await readSecrets();
13
34
  secrets.sort((a, b) => a._id.localeCompare(b._id));
14
35
  } catch (error) {
15
36
  printMessage(`${error.message}`, 'error');
@@ -22,7 +43,7 @@ export async function listSecrets(long) {
22
43
  }, {
23
44
  hAlign: 'right',
24
45
  content: 'Loaded\nVersion'['brightCyan']
25
- }, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified'['brightCyan']]);
46
+ }, 'Status'['brightCyan'], 'Description'['brightCyan'], 'Modifier'['brightCyan'], 'Modified (UTC)'['brightCyan']]);
26
47
  for (const secret of secrets) {
27
48
  table.push([secret._id, {
28
49
  hAlign: 'right',
@@ -30,7 +51,7 @@ export async function listSecrets(long) {
30
51
  }, {
31
52
  hAlign: 'right',
32
53
  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()]);
54
+ }, secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], wordwrap(secret.description, 40), state.getUseBearerTokenForAmApis() ? secret.lastChangedBy : await resolveUserName('teammember', secret.lastChangedBy), new Date(secret.lastChangeDate).toUTCString()]);
34
55
  }
35
56
  printMessage(table.toString(), 'data');
36
57
  } else {
@@ -51,10 +72,10 @@ export async function listSecrets(long) {
51
72
  export async function createSecret(id, value, description, encoding, useInPlaceholders) {
52
73
  showSpinner(`Creating secret ${id}...`);
53
74
  try {
54
- await frodo.cloud.secret.putSecret(id, value, description, encoding, useInPlaceholders);
75
+ await _createSecret(id, value, description, encoding, useInPlaceholders);
55
76
  succeedSpinner(`Created secret ${id}`);
56
77
  } catch (error) {
57
- failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
78
+ failSpinner(error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error);
58
79
  }
59
80
  }
60
81
 
@@ -66,7 +87,7 @@ export async function createSecret(id, value, description, encoding, useInPlaceh
66
87
  export async function setSecretDescription(secretId, description) {
67
88
  showSpinner(`Setting description of secret ${secretId}...`);
68
89
  try {
69
- await frodo.cloud.secret.setSecretDescription(secretId, description);
90
+ await updateSecretDescription(secretId, description);
70
91
  succeedSpinner(`Set description of secret ${secretId}`);
71
92
  } catch (error) {
72
93
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -80,7 +101,7 @@ export async function setSecretDescription(secretId, description) {
80
101
  export async function deleteSecret(secretId) {
81
102
  showSpinner(`Deleting secret ${secretId}...`);
82
103
  try {
83
- await frodo.cloud.secret.deleteSecret(secretId);
104
+ await _deleteSecret(secretId);
84
105
  succeedSpinner(`Deleted secret ${secretId}`);
85
106
  } catch (error) {
86
107
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -92,11 +113,11 @@ export async function deleteSecret(secretId) {
92
113
  */
93
114
  export async function deleteSecrets() {
94
115
  try {
95
- const secrets = (await frodo.cloud.secret.getSecrets()).result;
116
+ const secrets = await readSecrets();
96
117
  createProgressBar(secrets.length, `Deleting secrets...`);
97
118
  for (const secret of secrets) {
98
119
  try {
99
- await frodo.cloud.secret.deleteSecret(secret._id);
120
+ await _deleteSecret(secret._id);
100
121
  updateProgressBar(`Deleted secret ${secret._id}`);
101
122
  } catch (error) {
102
123
  printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
@@ -115,7 +136,7 @@ export async function deleteSecrets() {
115
136
  export async function listSecretVersions(secretId) {
116
137
  let versions = [];
117
138
  try {
118
- versions = await frodo.cloud.secret.getSecretVersions(secretId);
139
+ versions = await readVersionsOfSecret(secretId);
119
140
  } catch (error) {
120
141
  printMessage(`${error.message}`, 'error');
121
142
  printMessage(error.response.data, 'error');
@@ -136,7 +157,7 @@ export async function listSecretVersions(secretId) {
136
157
  content: version.version
137
158
  }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
138
159
  }
139
- printMessage(table.toString());
160
+ printMessage(table.toString(), 'data');
140
161
  }
141
162
 
142
163
  /**
@@ -144,7 +165,7 @@ export async function listSecretVersions(secretId) {
144
165
  * @param {String} secretId Secret id
145
166
  */
146
167
  export async function describeSecret(secretId) {
147
- const secret = await frodo.cloud.secret.getSecret(secretId);
168
+ const secret = await readSecret(secretId);
148
169
  const table = createKeyValueTable();
149
170
  table.push(['Name'['brightCyan'], secret._id]);
150
171
  table.push(['Active Version'['brightCyan'], secret.activeVersion]);
@@ -152,24 +173,86 @@ export async function describeSecret(secretId) {
152
173
  table.push(['Status'['brightCyan'], secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed']]);
153
174
  table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);
154
175
  table.push(['Modified'['brightCyan'], new Date(secret.lastChangeDate).toLocaleString()]);
155
- table.push(['Modifier'['brightCyan'], await frodo.idm.managed.resolveUserName('teammember', secret.lastChangedBy)]);
176
+ table.push(['Modifier'['brightCyan'], await resolveUserName('teammember', secret.lastChangedBy)]);
156
177
  table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);
157
178
  table.push(['Encoding'['brightCyan'], secret.encoding]);
158
179
  table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);
159
- printMessage(table.toString());
160
- printMessage('\nSecret Versions:');
180
+ printMessage(table.toString(), 'data');
181
+ printMessage('\nSecret Versions:', 'data');
161
182
  await listSecretVersions(secretId);
162
183
  }
163
184
 
185
+ /**
186
+ * Export a single secret to file
187
+ * @param {String} secretId Secret id
188
+ * @param {String} file Optional filename
189
+ */
190
+ export async function exportSecretToFile(secretId, file) {
191
+ debugMessage(`Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`);
192
+ let fileName = file;
193
+ if (!fileName) {
194
+ fileName = getTypedFilename(secretId, 'secret');
195
+ }
196
+ const filePath = getFilePath(fileName, true);
197
+ try {
198
+ createProgressBar(1, `Exporting secret ${secretId}`);
199
+ const fileData = await exportSecret(secretId);
200
+ saveJsonToFile(fileData, filePath);
201
+ updateProgressBar(`Exported secret ${secretId}`);
202
+ stopProgressBar(
203
+ // @ts-expect-error - brightCyan colors the string, even though it is not a property of string
204
+ `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`);
205
+ } catch (err) {
206
+ stopProgressBar(`${err}`);
207
+ printMessage(err, 'error');
208
+ }
209
+ debugMessage(`Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`);
210
+ }
211
+
212
+ /**
213
+ * Export all secrets to single file
214
+ * @param {string} file Optional filename
215
+ */
216
+ export async function exportSecretsToFile(file) {
217
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);
218
+ let fileName = file;
219
+ if (!fileName) {
220
+ fileName = getTypedFilename(`all${titleCase(state.getRealm())}Secrets`, 'secret');
221
+ }
222
+ try {
223
+ const secretsExport = await exportSecrets();
224
+ saveJsonToFile(secretsExport, getFilePath(fileName, true));
225
+ } catch (error) {
226
+ var _error$response;
227
+ printMessage(error.message, 'error');
228
+ printMessage(`exportSecretsToFile: ${(_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status}`, 'error');
229
+ }
230
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);
231
+ }
232
+
233
+ /**
234
+ * Export all secrets to individual files
235
+ */
236
+ export async function exportSecretsToFiles() {
237
+ const allSecretsData = await readSecrets();
238
+ createProgressBar(allSecretsData.length, 'Exporting secrets');
239
+ for (const secret of allSecretsData) {
240
+ updateProgressBar(`Writing secret ${secret._id}`);
241
+ const fileName = getTypedFilename(secret._id, 'secret');
242
+ saveToFile('secret', secret, '_id', getFilePath(fileName, true));
243
+ }
244
+ stopProgressBar(`${allSecretsData.length} secrets exported.`);
245
+ }
246
+
164
247
  /**
165
248
  * Create new version of secret
166
249
  * @param {String} secretId secret id
167
250
  * @param {String} value secret value
168
251
  */
169
- export async function createNewVersionOfSecret(secretId, value) {
252
+ export async function createVersionOfSecret(secretId, value) {
170
253
  showSpinner(`Creating new version of secret ${secretId}...`);
171
254
  try {
172
- const version = await frodo.cloud.secret.createNewVersionOfSecret(secretId, value);
255
+ const version = await _createVersionOfSecret(secretId, value);
173
256
  succeedSpinner(`Created version ${version.version} of secret ${secretId}`);
174
257
  } catch (error) {
175
258
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -184,7 +267,7 @@ export async function createNewVersionOfSecret(secretId, value) {
184
267
  export async function activateVersionOfSecret(secretId, version) {
185
268
  showSpinner(`Activating version ${version} of secret ${secretId}...`);
186
269
  try {
187
- await frodo.cloud.secret.setStatusOfVersionOfSecret(secretId, version, 'ENABLED');
270
+ await enableVersionOfSecret(secretId, version);
188
271
  succeedSpinner(`Activated version ${version} of secret ${secretId}`);
189
272
  } catch (error) {
190
273
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -199,7 +282,7 @@ export async function activateVersionOfSecret(secretId, version) {
199
282
  export async function deactivateVersionOfSecret(secretId, version) {
200
283
  showSpinner(`Deactivating version ${version} of secret ${secretId}...`);
201
284
  try {
202
- await frodo.cloud.secret.setStatusOfVersionOfSecret(secretId, version, 'DISABLED');
285
+ await disableVersionOfSecret(secretId, version);
203
286
  succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);
204
287
  } catch (error) {
205
288
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
@@ -214,10 +297,10 @@ export async function deactivateVersionOfSecret(secretId, version) {
214
297
  export async function deleteVersionOfSecret(secretId, version) {
215
298
  showSpinner(`Deleting version ${version} of secret ${secretId}...`);
216
299
  try {
217
- await frodo.cloud.secret.deleteVersionOfSecret(secretId, version);
300
+ await _deleteVersionOfSecret(secretId, version);
218
301
  succeedSpinner(`Deleted version ${version} of secret ${secretId}`);
219
302
  } catch (error) {
220
303
  failSpinner(`Error: ${error.response.data.code} - ${error.response.data.message}`);
221
304
  }
222
305
  }
223
- //# sourceMappingURL=SecretsOps.js.map
306
+ //# sourceMappingURL=SecretsOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsOps.js","names":["frodo","createKeyValueTable","createProgressBar","createTable","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","wordwrap","listSecrets","long","secrets","cloud","secret","getSecrets","result","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","idm","managed","resolveUserName","lastChangedBy","Date","lastChangeDate","toLocaleString","toString","forEach","createSecret","id","value","encoding","useInPlaceholders","putSecret","code","setSecretDescription","secretId","deleteSecret","deleteSecrets","length","listSecretVersions","versions","getSecretVersions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","describeSecret","getSecret","createNewVersionOfSecret","activateVersionOfSecret","setStatusOfVersionOfSecret","deactivateVersionOfSecret","deleteVersionOfSecret"],"sources":["ops/SecretsOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = (await frodo.cloud.secret.getSecrets()).result;\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n await frodo.idm.managed.resolveUserName(\n 'teammember',\n secret.lastChangedBy\n ),\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await frodo.cloud.secret.putSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n );\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await frodo.cloud.secret.deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = (await frodo.cloud.secret.getSecrets()).result;\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await frodo.cloud.secret.deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await frodo.cloud.secret.getSecretVersions(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString());\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await frodo.cloud.secret.getSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await frodo.idm.managed.resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString());\n printMessage('\\nSecret Versions:');\n await listSecretVersions(secretId);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createNewVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await frodo.cloud.secret.createNewVersionOfSecret(\n secretId,\n value\n );\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setStatusOfVersionOfSecret(\n secretId,\n version,\n 'ENABLED'\n );\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.setStatusOfVersionOfSecret(\n secretId,\n version,\n 'DISABLED'\n );\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await frodo.cloud.secret.deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SecretsOps.js","names":["frodo","state","createKeyValueTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","saveToFile","titleCase","wordwrap","resolveUserName","idm","managed","readSecrets","createSecret","_createSecret","readVersionsOfSecret","readSecret","exportSecret","exportSecrets","enableVersionOfSecret","disableVersionOfSecret","createVersionOfSecret","_createVersionOfSecret","updateSecretDescription","deleteSecret","_deleteSecret","deleteVersionOfSecret","_deleteVersionOfSecret","cloud","secret","getFilePath","utils","listSecrets","long","secrets","sort","a","b","_id","localeCompare","error","message","response","data","table","hAlign","content","push","activeVersion","loadedVersion","loaded","description","getUseBearerTokenForAmApis","lastChangedBy","Date","lastChangeDate","toUTCString","toString","forEach","id","value","encoding","useInPlaceholders","code","setSecretDescription","secretId","deleteSecrets","length","listSecretVersions","versions","statusMap","ENABLED","DISABLED","DESTROYED","version","status","createDate","toLocaleString","describeSecret","exportSecretToFile","file","fileName","filePath","fileData","brightCyan","err","exportSecretsToFile","getRealm","secretsExport","_error$response","exportSecretsToFiles","allSecretsData","activateVersionOfSecret","deactivateVersionOfSecret"],"sources":["../../src/ops/SecretsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\n\nimport {\n createKeyValueTable,\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n saveToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { resolveUserName } = frodo.idm.managed;\nconst {\n readSecrets,\n createSecret: _createSecret,\n readVersionsOfSecret,\n readSecret,\n exportSecret,\n exportSecrets,\n enableVersionOfSecret,\n disableVersionOfSecret,\n createVersionOfSecret: _createVersionOfSecret,\n updateSecretDescription,\n deleteSecret: _deleteSecret,\n deleteVersionOfSecret: _deleteVersionOfSecret,\n} = frodo.cloud.secret;\n\nconst { getFilePath } = frodo.utils;\n\n/**\n * List secrets\n * @param {boolean} long Long version, all the fields\n */\nexport async function listSecrets(long) {\n let secrets = [];\n try {\n secrets = await readSecrets();\n secrets.sort((a, b) => a._id.localeCompare(b._id));\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n if (long) {\n const table = createTable([\n 'Id'['brightCyan'],\n { hAlign: 'right', content: 'Active\\nVersion'['brightCyan'] },\n { hAlign: 'right', content: 'Loaded\\nVersion'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Description'['brightCyan'],\n 'Modifier'['brightCyan'],\n 'Modified (UTC)'['brightCyan'],\n ]);\n for (const secret of secrets) {\n table.push([\n secret._id,\n { hAlign: 'right', content: secret.activeVersion },\n { hAlign: 'right', content: secret.loadedVersion },\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n wordwrap(secret.description, 40),\n state.getUseBearerTokenForAmApis()\n ? secret.lastChangedBy\n : await resolveUserName('teammember', secret.lastChangedBy),\n new Date(secret.lastChangeDate).toUTCString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n secrets.forEach((secret) => {\n printMessage(secret._id, 'data');\n });\n }\n}\n\n/**\n * Create secret\n * @param {String} id secret id\n * @param {String} value secret value\n * @param {String} description secret description\n * @param {String} encoding secret encoding\n * @param {boolean} useInPlaceholders use secret in placeholders\n */\nexport async function createSecret(\n id,\n value,\n description,\n encoding,\n useInPlaceholders\n) {\n showSpinner(`Creating secret ${id}...`);\n try {\n await _createSecret(id, value, description, encoding, useInPlaceholders);\n succeedSpinner(`Created secret ${id}`);\n } catch (error) {\n failSpinner(\n error.response\n ? `Error: ${error.response.data.code} - ${error.response.data.message}`\n : error\n );\n }\n}\n\n/**\n * Set description of secret\n * @param {String} secretId secret id\n * @param {String} description secret description\n */\nexport async function setSecretDescription(secretId, description) {\n showSpinner(`Setting description of secret ${secretId}...`);\n try {\n await updateSecretDescription(secretId, description);\n succeedSpinner(`Set description of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete a secret\n * @param {String} secretId secret id\n */\nexport async function deleteSecret(secretId) {\n showSpinner(`Deleting secret ${secretId}...`);\n try {\n await _deleteSecret(secretId);\n succeedSpinner(`Deleted secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete all secrets\n */\nexport async function deleteSecrets() {\n try {\n const secrets = await readSecrets();\n createProgressBar(secrets.length, `Deleting secrets...`);\n for (const secret of secrets) {\n try {\n await _deleteSecret(secret._id);\n updateProgressBar(`Deleted secret ${secret._id}`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n }\n stopProgressBar(`Secrets deleted.`);\n } catch (error) {\n printMessage(\n `Error: ${error.response.data.code} - ${error.response.data.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all the versions of the secret\n * @param {String} secretId secret id\n */\nexport async function listSecretVersions(secretId) {\n let versions = [];\n try {\n versions = await readVersionsOfSecret(secretId);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.data, 'error');\n }\n const table = createTable([\n { hAlign: 'right', content: 'Version'['brightCyan'] },\n 'Status'['brightCyan'],\n 'Loaded'['brightCyan'],\n 'Created'['brightCyan'],\n ]);\n // versions.sort((a, b) => a._id.localeCompare(b._id));\n const statusMap = {\n ENABLED: 'active'['brightGreen'],\n DISABLED: 'inactive'['brightRed'],\n DESTROYED: 'deleted'['brightRed'],\n };\n for (const version of versions) {\n table.push([\n { hAlign: 'right', content: version.version },\n statusMap[version.status],\n version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n new Date(version.createDate).toLocaleString(),\n ]);\n }\n printMessage(table.toString(), 'data');\n}\n\n/**\n * Describe a secret\n * @param {String} secretId Secret id\n */\nexport async function describeSecret(secretId) {\n const secret = await readSecret(secretId);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], secret._id]);\n table.push(['Active Version'['brightCyan'], secret.activeVersion]);\n table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);\n table.push([\n 'Status'['brightCyan'],\n secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'],\n ]);\n table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);\n table.push([\n 'Modified'['brightCyan'],\n new Date(secret.lastChangeDate).toLocaleString(),\n ]);\n table.push([\n 'Modifier'['brightCyan'],\n await resolveUserName('teammember', secret.lastChangedBy),\n ]);\n table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);\n table.push(['Encoding'['brightCyan'], secret.encoding]);\n table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);\n printMessage(table.toString(), 'data');\n printMessage('\\nSecret Versions:', 'data');\n await listSecretVersions(secretId);\n}\n\n/**\n * Export a single secret to file\n * @param {String} secretId Secret id\n * @param {String} file Optional filename\n */\nexport async function exportSecretToFile(\n secretId: string,\n file: string | null\n) {\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`\n );\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(secretId, 'secret');\n }\n const filePath = getFilePath(fileName, true);\n try {\n createProgressBar(1, `Exporting secret ${secretId}`);\n const fileData = await exportSecret(secretId);\n saveJsonToFile(fileData, filePath);\n updateProgressBar(`Exported secret ${secretId}`);\n stopProgressBar(\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${secretId.brightCyan} to ${filePath.brightCyan}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n }\n debugMessage(\n `Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`\n );\n}\n\n/**\n * Export all secrets to single file\n * @param {string} file Optional filename\n */\nexport async function exportSecretsToFile(file: string) {\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${titleCase(state.getRealm())}Secrets`,\n 'secret'\n );\n }\n try {\n const secretsExport = await exportSecrets();\n saveJsonToFile(secretsExport, getFilePath(fileName, true));\n } catch (error) {\n printMessage(error.message, 'error');\n printMessage(`exportSecretsToFile: ${error.response?.status}`, 'error');\n }\n debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);\n}\n\n/**\n * Export all secrets to individual files\n */\nexport async function exportSecretsToFiles() {\n const allSecretsData = await readSecrets();\n createProgressBar(allSecretsData.length, 'Exporting secrets');\n for (const secret of allSecretsData) {\n updateProgressBar(`Writing secret ${secret._id}`);\n const fileName = getTypedFilename(secret._id, 'secret');\n saveToFile('secret', secret, '_id', getFilePath(fileName, true));\n }\n stopProgressBar(`${allSecretsData.length} secrets exported.`);\n}\n\n/**\n * Create new version of secret\n * @param {String} secretId secret id\n * @param {String} value secret value\n */\nexport async function createVersionOfSecret(secretId, value) {\n showSpinner(`Creating new version of secret ${secretId}...`);\n try {\n const version = await _createVersionOfSecret(secretId, value);\n succeedSpinner(`Created version ${version.version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Activate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function activateVersionOfSecret(secretId, version) {\n showSpinner(`Activating version ${version} of secret ${secretId}...`);\n try {\n await enableVersionOfSecret(secretId, version);\n succeedSpinner(`Activated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Deactivate a version of a secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deactivateVersionOfSecret(secretId, version) {\n showSpinner(`Deactivating version ${version} of secret ${secretId}...`);\n try {\n await disableVersionOfSecret(secretId, version);\n succeedSpinner(`Deactivated version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n\n/**\n * Delete version of secret\n * @param {String} secretId secret id\n * @param {Number} version version of secret\n */\nexport async function deleteVersionOfSecret(secretId, version) {\n showSpinner(`Deleting version ${version} of secret ${secretId}...`);\n try {\n await _deleteVersionOfSecret(secretId, version);\n succeedSpinner(`Deleted version ${version} of secret ${secretId}`);\n } catch (error) {\n failSpinner(\n `Error: ${error.response.data.code} - ${error.response.data.message}`\n );\n }\n}\n"],"mappings":"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"}