@rockcarver/frodo-cli 2.0.0-50 → 2.0.0-52

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 (386) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/esm/app.js +7 -2
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/_template/something-delete.js +1 -4
  5. package/esm/cli/_template/something-delete.js.map +1 -1
  6. package/esm/cli/_template/something-describe.js +1 -4
  7. package/esm/cli/_template/something-describe.js.map +1 -1
  8. package/esm/cli/_template/something-else-delete.js +1 -4
  9. package/esm/cli/_template/something-else-delete.js.map +1 -1
  10. package/esm/cli/_template/something-else-describe.js +1 -4
  11. package/esm/cli/_template/something-else-describe.js.map +1 -1
  12. package/esm/cli/_template/something-else-export.js +1 -4
  13. package/esm/cli/_template/something-else-export.js.map +1 -1
  14. package/esm/cli/_template/something-else-import.js +1 -4
  15. package/esm/cli/_template/something-else-import.js.map +1 -1
  16. package/esm/cli/_template/something-else-list.js +1 -4
  17. package/esm/cli/_template/something-else-list.js.map +1 -1
  18. package/esm/cli/_template/something-export.js +1 -4
  19. package/esm/cli/_template/something-export.js.map +1 -1
  20. package/esm/cli/_template/something-import.js +1 -4
  21. package/esm/cli/_template/something-import.js.map +1 -1
  22. package/esm/cli/_template/something-list.js +1 -4
  23. package/esm/cli/_template/something-list.js.map +1 -1
  24. package/esm/cli/_template/something-other-delete.js +1 -4
  25. package/esm/cli/_template/something-other-delete.js.map +1 -1
  26. package/esm/cli/_template/something-other-describe.js +1 -4
  27. package/esm/cli/_template/something-other-describe.js.map +1 -1
  28. package/esm/cli/_template/something-other-export.js +1 -4
  29. package/esm/cli/_template/something-other-export.js.map +1 -1
  30. package/esm/cli/_template/something-other-import.js +1 -4
  31. package/esm/cli/_template/something-other-import.js.map +1 -1
  32. package/esm/cli/_template/something-other-list.js +1 -4
  33. package/esm/cli/_template/something-other-list.js.map +1 -1
  34. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +4 -9
  35. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  36. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +47 -54
  37. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  38. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +1 -4
  39. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -1
  40. package/esm/cli/admin/admin-federation-export.js +2 -5
  41. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  42. package/esm/cli/admin/admin-federation-import.js +2 -5
  43. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  44. package/esm/cli/admin/admin-federation-list.js +2 -5
  45. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  46. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +2 -4
  47. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -1
  48. package/esm/cli/admin/admin-get-access-token.js +1 -3
  49. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  50. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +5 -9
  51. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  52. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +5 -9
  53. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  54. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +5 -12
  55. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  56. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +5 -12
  57. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-list-static-user-mappings.js +4 -12
  59. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  60. package/esm/cli/admin/admin-remove-static-user-mapping.js +4 -9
  61. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  62. package/esm/cli/admin/admin-repair-org-model.js +5 -9
  63. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  64. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +5 -9
  65. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  66. package/esm/cli/admin/admin-show-generic-extension-attributes.js +5 -9
  67. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  68. package/esm/cli/admin/admin-train-auto-access-model.js +1 -3
  69. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -1
  70. package/esm/cli/agent/agent-delete.js +9 -24
  71. package/esm/cli/agent/agent-delete.js.map +1 -1
  72. package/esm/cli/agent/agent-describe.js +1 -4
  73. package/esm/cli/agent/agent-describe.js.map +1 -1
  74. package/esm/cli/agent/agent-export.js +7 -7
  75. package/esm/cli/agent/agent-export.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-delete.js +8 -23
  77. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-describe.js +1 -4
  79. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  80. package/esm/cli/agent/agent-gateway-export.js +7 -7
  81. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  82. package/esm/cli/agent/agent-gateway-import.js +9 -8
  83. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-list.js +3 -5
  85. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  86. package/esm/cli/agent/agent-import.js +9 -8
  87. package/esm/cli/agent/agent-import.js.map +1 -1
  88. package/esm/cli/agent/agent-java-delete.js +8 -23
  89. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-java-describe.js +1 -4
  91. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-java-export.js +7 -7
  93. package/esm/cli/agent/agent-java-export.js.map +1 -1
  94. package/esm/cli/agent/agent-java-import.js +9 -8
  95. package/esm/cli/agent/agent-java-import.js.map +1 -1
  96. package/esm/cli/agent/agent-java-list.js +3 -5
  97. package/esm/cli/agent/agent-java-list.js.map +1 -1
  98. package/esm/cli/agent/agent-list.js +3 -5
  99. package/esm/cli/agent/agent-list.js.map +1 -1
  100. package/esm/cli/agent/agent-web-delete.js +8 -23
  101. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  102. package/esm/cli/agent/agent-web-describe.js +1 -4
  103. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  104. package/esm/cli/agent/agent-web-export.js +7 -7
  105. package/esm/cli/agent/agent-web-export.js.map +1 -1
  106. package/esm/cli/agent/agent-web-import.js +9 -8
  107. package/esm/cli/agent/agent-web-import.js.map +1 -1
  108. package/esm/cli/agent/agent-web-list.js +3 -5
  109. package/esm/cli/agent/agent-web-list.js.map +1 -1
  110. package/esm/cli/app/app-delete.js +5 -8
  111. package/esm/cli/app/app-delete.js.map +1 -1
  112. package/esm/cli/app/app-describe.js +1 -4
  113. package/esm/cli/app/app-describe.js.map +1 -1
  114. package/esm/cli/app/app-export.js +7 -10
  115. package/esm/cli/app/app-export.js.map +1 -1
  116. package/esm/cli/app/app-import.js +9 -12
  117. package/esm/cli/app/app-import.js.map +1 -1
  118. package/esm/cli/app/app-list.js +3 -5
  119. package/esm/cli/app/app-list.js.map +1 -1
  120. package/esm/cli/authn/authn-describe.js +1 -4
  121. package/esm/cli/authn/authn-describe.js.map +1 -1
  122. package/esm/cli/authn/authn-export.js +1 -4
  123. package/esm/cli/authn/authn-export.js.map +1 -1
  124. package/esm/cli/authn/authn-import.js +1 -4
  125. package/esm/cli/authn/authn-import.js.map +1 -1
  126. package/esm/cli/authz/authz-policy-delete.js +1 -4
  127. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  128. package/esm/cli/authz/authz-policy-describe.js +1 -4
  129. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  130. package/esm/cli/authz/authz-policy-export.js +1 -4
  131. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  132. package/esm/cli/authz/authz-policy-import.js +1 -4
  133. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  134. package/esm/cli/authz/authz-policy-list.js +1 -4
  135. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  136. package/esm/cli/authz/authz-set-delete.js +1 -4
  137. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  138. package/esm/cli/authz/authz-set-describe.js +1 -4
  139. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  140. package/esm/cli/authz/authz-set-export.js +1 -4
  141. package/esm/cli/authz/authz-set-export.js.map +1 -1
  142. package/esm/cli/authz/authz-set-import.js +1 -4
  143. package/esm/cli/authz/authz-set-import.js.map +1 -1
  144. package/esm/cli/authz/authz-set-list.js +1 -4
  145. package/esm/cli/authz/authz-set-list.js.map +1 -1
  146. package/esm/cli/authz/authz-type-delete.js +1 -4
  147. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  148. package/esm/cli/authz/authz-type-describe.js +1 -4
  149. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  150. package/esm/cli/authz/authz-type-export.js +1 -4
  151. package/esm/cli/authz/authz-type-export.js.map +1 -1
  152. package/esm/cli/authz/authz-type-import.js +1 -4
  153. package/esm/cli/authz/authz-type-import.js.map +1 -1
  154. package/esm/cli/authz/authz-type-list.js +1 -4
  155. package/esm/cli/authz/authz-type-list.js.map +1 -1
  156. package/esm/cli/config/config-delete.js +1 -4
  157. package/esm/cli/config/config-delete.js.map +1 -1
  158. package/esm/cli/config/config-describe.js +1 -4
  159. package/esm/cli/config/config-describe.js.map +1 -1
  160. package/esm/cli/config/config-export.js +2 -4
  161. package/esm/cli/config/config-export.js.map +1 -1
  162. package/esm/cli/config/config-import.js +2 -4
  163. package/esm/cli/config/config-import.js.map +1 -1
  164. package/esm/cli/config/config-list.js +1 -4
  165. package/esm/cli/config/config-list.js.map +1 -1
  166. package/esm/cli/conn/conn-delete.js +7 -1
  167. package/esm/cli/conn/conn-delete.js.map +1 -1
  168. package/esm/cli/conn/conn-save.js +10 -12
  169. package/esm/cli/conn/conn-save.js.map +1 -1
  170. package/esm/cli/email/email-template-export.js +8 -7
  171. package/esm/cli/email/email-template-export.js.map +1 -1
  172. package/esm/cli/email/email-template-import.js +9 -8
  173. package/esm/cli/email/email-template-import.js.map +1 -1
  174. package/esm/cli/email/email-template-list.js +3 -5
  175. package/esm/cli/email/email-template-list.js.map +1 -1
  176. package/esm/cli/esv/esv-apply.js +1 -3
  177. package/esm/cli/esv/esv-apply.js.map +1 -1
  178. package/esm/cli/esv/esv-secret-create.js +2 -5
  179. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  180. package/esm/cli/esv/esv-secret-delete.js +2 -5
  181. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  182. package/esm/cli/esv/esv-secret-describe.js +2 -5
  183. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  184. package/esm/cli/esv/esv-secret-export.js +3 -5
  185. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  186. package/esm/cli/esv/esv-secret-import.js +1 -4
  187. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  188. package/esm/cli/esv/esv-secret-list.js +2 -5
  189. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  190. package/esm/cli/esv/esv-secret-set.js +2 -5
  191. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  192. package/esm/cli/esv/esv-secret-version-activate.js +2 -5
  193. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  194. package/esm/cli/esv/esv-secret-version-create.js +2 -5
  195. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  196. package/esm/cli/esv/esv-secret-version-deactivate.js +2 -5
  197. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  198. package/esm/cli/esv/esv-secret-version-delete.js +2 -5
  199. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  200. package/esm/cli/esv/esv-secret-version-list.js +2 -5
  201. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  202. package/esm/cli/esv/esv-variable-create.js +2 -5
  203. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  204. package/esm/cli/esv/esv-variable-delete.js +2 -5
  205. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  206. package/esm/cli/esv/esv-variable-describe.js +2 -5
  207. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  208. package/esm/cli/esv/esv-variable-export.js +3 -5
  209. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  210. package/esm/cli/esv/esv-variable-import.js +1 -4
  211. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  212. package/esm/cli/esv/esv-variable-list.js +2 -5
  213. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  214. package/esm/cli/esv/esv-variable-set.js +2 -5
  215. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  216. package/esm/cli/idm/idm-count.js +3 -5
  217. package/esm/cli/idm/idm-count.js.map +1 -1
  218. package/esm/cli/idm/idm-export.js +8 -7
  219. package/esm/cli/idm/idm-export.js.map +1 -1
  220. package/esm/cli/idm/idm-import.js +10 -8
  221. package/esm/cli/idm/idm-import.js.map +1 -1
  222. package/esm/cli/idm/idm-list.js +3 -5
  223. package/esm/cli/idm/idm-list.js.map +1 -1
  224. package/esm/cli/idp/idp-export.js +8 -7
  225. package/esm/cli/idp/idp-export.js.map +1 -1
  226. package/esm/cli/idp/idp-import.js +10 -8
  227. package/esm/cli/idp/idp-import.js.map +1 -1
  228. package/esm/cli/idp/idp-list.js +4 -5
  229. package/esm/cli/idp/idp-list.js.map +1 -1
  230. package/esm/cli/info/info.js +1 -3
  231. package/esm/cli/info/info.js.map +1 -1
  232. package/esm/cli/journey/journey-delete.js +7 -10
  233. package/esm/cli/journey/journey-delete.js.map +1 -1
  234. package/esm/cli/journey/journey-describe.js +16 -12
  235. package/esm/cli/journey/journey-describe.js.map +1 -1
  236. package/esm/cli/journey/journey-disable.js +1 -4
  237. package/esm/cli/journey/journey-disable.js.map +1 -1
  238. package/esm/cli/journey/journey-enable.js +1 -4
  239. package/esm/cli/journey/journey-enable.js.map +1 -1
  240. package/esm/cli/journey/journey-export.js +7 -7
  241. package/esm/cli/journey/journey-export.js.map +1 -1
  242. package/esm/cli/journey/journey-import.js +9 -8
  243. package/esm/cli/journey/journey-import.js.map +1 -1
  244. package/esm/cli/journey/journey-list.js +4 -5
  245. package/esm/cli/journey/journey-list.js.map +1 -1
  246. package/esm/cli/journey/journey-prune.js +4 -5
  247. package/esm/cli/journey/journey-prune.js.map +1 -1
  248. package/esm/cli/log/log-fetch.js +7 -5
  249. package/esm/cli/log/log-fetch.js.map +1 -1
  250. package/esm/cli/log/log-key-delete.js +1 -4
  251. package/esm/cli/log/log-key-delete.js.map +1 -1
  252. package/esm/cli/log/log-key-describe.js +1 -4
  253. package/esm/cli/log/log-key-describe.js.map +1 -1
  254. package/esm/cli/log/log-key-list.js +1 -4
  255. package/esm/cli/log/log-key-list.js.map +1 -1
  256. package/esm/cli/log/log-list.js +13 -6
  257. package/esm/cli/log/log-list.js.map +1 -1
  258. package/esm/cli/log/log-tail.js +7 -5
  259. package/esm/cli/log/log-tail.js.map +1 -1
  260. package/esm/cli/oauth/oauth-client-delete.js +1 -4
  261. package/esm/cli/oauth/oauth-client-delete.js.map +1 -1
  262. package/esm/cli/oauth/oauth-client-describe.js +1 -4
  263. package/esm/cli/oauth/oauth-client-describe.js.map +1 -1
  264. package/esm/cli/oauth/oauth-client-export.js +7 -10
  265. package/esm/cli/oauth/oauth-client-export.js.map +1 -1
  266. package/esm/cli/oauth/oauth-client-import.js +9 -12
  267. package/esm/cli/oauth/oauth-client-import.js.map +1 -1
  268. package/esm/cli/oauth/oauth-client-list.js +3 -5
  269. package/esm/cli/oauth/oauth-client-list.js.map +1 -1
  270. package/esm/cli/realm/realm-add-custom-domain.js +2 -4
  271. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  272. package/esm/cli/realm/realm-describe.js +1 -3
  273. package/esm/cli/realm/realm-describe.js.map +1 -1
  274. package/esm/cli/realm/realm-list.js +1 -4
  275. package/esm/cli/realm/realm-list.js.map +1 -1
  276. package/esm/cli/realm/realm-remove-custom-domain.js +1 -3
  277. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  278. package/esm/cli/saml/saml-cot-export.js +2 -4
  279. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  280. package/esm/cli/saml/saml-cot-import.js +2 -4
  281. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  282. package/esm/cli/saml/saml-cot-list.js +2 -4
  283. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  284. package/esm/cli/saml/saml-delete.js +1 -3
  285. package/esm/cli/saml/saml-delete.js.map +1 -1
  286. package/esm/cli/saml/saml-describe.js +4 -5
  287. package/esm/cli/saml/saml-describe.js.map +1 -1
  288. package/esm/cli/saml/saml-export.js +8 -7
  289. package/esm/cli/saml/saml-export.js.map +1 -1
  290. package/esm/cli/saml/saml-import.js +10 -8
  291. package/esm/cli/saml/saml-import.js.map +1 -1
  292. package/esm/cli/saml/saml-list.js +4 -5
  293. package/esm/cli/saml/saml-list.js.map +1 -1
  294. package/esm/cli/saml/saml-metadata-export.js +12 -6
  295. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  296. package/esm/cli/script/script-delete.js +12 -8
  297. package/esm/cli/script/script-delete.js.map +1 -1
  298. package/esm/cli/script/script-describe.js +1 -4
  299. package/esm/cli/script/script-describe.js.map +1 -1
  300. package/esm/cli/script/script-export.js +10 -17
  301. package/esm/cli/script/script-export.js.map +1 -1
  302. package/esm/cli/script/script-import.js +21 -18
  303. package/esm/cli/script/script-import.js.map +1 -1
  304. package/esm/cli/script/script-list.js +2 -4
  305. package/esm/cli/script/script-list.js.map +1 -1
  306. package/esm/cli/service/service-delete.js +5 -6
  307. package/esm/cli/service/service-delete.js.map +1 -1
  308. package/esm/cli/service/service-export.js +7 -7
  309. package/esm/cli/service/service-export.js.map +1 -1
  310. package/esm/cli/service/service-import.js +9 -8
  311. package/esm/cli/service/service-import.js.map +1 -1
  312. package/esm/cli/service/service-list.js +3 -5
  313. package/esm/cli/service/service-list.js.map +1 -1
  314. package/esm/cli/shell/shell.js +3 -7
  315. package/esm/cli/shell/shell.js.map +1 -1
  316. package/esm/cli/theme/theme-delete.js +9 -8
  317. package/esm/cli/theme/theme-delete.js.map +1 -1
  318. package/esm/cli/theme/theme-export.js +10 -8
  319. package/esm/cli/theme/theme-export.js.map +1 -1
  320. package/esm/cli/theme/theme-import.js +12 -9
  321. package/esm/cli/theme/theme-import.js.map +1 -1
  322. package/esm/cli/theme/theme-list.js +4 -5
  323. package/esm/cli/theme/theme-list.js.map +1 -1
  324. package/esm/ops/AdminOps.js +790 -3
  325. package/esm/ops/AdminOps.js.map +1 -1
  326. package/esm/ops/AgentOps.js +638 -305
  327. package/esm/ops/AgentOps.js.map +1 -1
  328. package/esm/ops/ApplicationOps.js +91 -79
  329. package/esm/ops/ApplicationOps.js.map +1 -1
  330. package/esm/ops/AuthenticateOps.js +23 -0
  331. package/esm/ops/AuthenticateOps.js.map +1 -0
  332. package/esm/ops/AuthenticationSettingsOps.js +22 -23
  333. package/esm/ops/AuthenticationSettingsOps.js.map +1 -1
  334. package/esm/ops/CirclesOfTrustOps.js +52 -55
  335. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  336. package/esm/ops/ConfigOps.js +100 -84
  337. package/esm/ops/ConfigOps.js.map +1 -1
  338. package/esm/ops/ConnectionProfileOps.js +9 -7
  339. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  340. package/esm/ops/EmailTemplateOps.js +64 -47
  341. package/esm/ops/EmailTemplateOps.js.map +1 -1
  342. package/esm/ops/IdmOps.js +149 -117
  343. package/esm/ops/IdmOps.js.map +1 -1
  344. package/esm/ops/IdpOps.js +76 -46
  345. package/esm/ops/IdpOps.js.map +1 -1
  346. package/esm/ops/JourneyOps.js +333 -238
  347. package/esm/ops/JourneyOps.js.map +1 -1
  348. package/esm/ops/LogOps.js +15 -23
  349. package/esm/ops/LogOps.js.map +1 -1
  350. package/esm/ops/OAuth2ClientOps.js +43 -36
  351. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  352. package/esm/ops/PolicyOps.js +104 -108
  353. package/esm/ops/PolicyOps.js.map +1 -1
  354. package/esm/ops/PolicySetOps.js +72 -78
  355. package/esm/ops/PolicySetOps.js.map +1 -1
  356. package/esm/ops/ResourceTypeOps.js +84 -99
  357. package/esm/ops/ResourceTypeOps.js.map +1 -1
  358. package/esm/ops/Saml2Ops.js +132 -88
  359. package/esm/ops/Saml2Ops.js.map +1 -1
  360. package/esm/ops/ScriptOps.js +90 -80
  361. package/esm/ops/ScriptOps.js.map +1 -1
  362. package/esm/ops/ServiceOps.js +125 -87
  363. package/esm/ops/ServiceOps.js.map +1 -1
  364. package/esm/ops/ThemeOps.js +170 -139
  365. package/esm/ops/ThemeOps.js.map +1 -1
  366. package/esm/ops/{AdminFederationOps.js → cloud/AdminFederationOps.js} +10 -16
  367. package/esm/ops/cloud/AdminFederationOps.js.map +1 -0
  368. package/esm/ops/{SecretsOps.js → cloud/SecretsOps.js} +123 -129
  369. package/esm/ops/cloud/SecretsOps.js.map +1 -0
  370. package/esm/ops/{VariablesOps.js → cloud/VariablesOps.js} +48 -52
  371. package/esm/ops/cloud/VariablesOps.js.map +1 -0
  372. package/esm/ops/templates/OAuth2ClientTemplate.json +270 -0
  373. package/esm/ops/templates/OAuth2TrustedJwtIssuerTemplate.json +38 -0
  374. package/esm/ops/templates/OrgModelUserAttributesTemplate.json +149 -0
  375. package/esm/ops/templates/autoaccess/IPAddresses.json +202 -0
  376. package/esm/ops/templates/autoaccess/UserAgents.json +35 -0
  377. package/esm/ops/templates/autoaccess/Usernames.json +203 -0
  378. package/esm/ops/templates/cloud/GenericExtensionAttributesTemplate.json +392 -0
  379. package/esm/ops/templates/cloud/managed.json +4119 -0
  380. package/esm/ops/utils/OpsUtils.js.map +1 -1
  381. package/esm/utils/Console.js +31 -0
  382. package/esm/utils/Console.js.map +1 -1
  383. package/package.json +11 -6
  384. package/esm/ops/AdminFederationOps.js.map +0 -1
  385. package/esm/ops/SecretsOps.js.map +0 -1
  386. package/esm/ops/VariablesOps.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationOps.js","names":["frodo","state","fs","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","wordwrap","getTypedFilename","titleCase","getFilePath","getWorkingDirectory","saveJsonToFile","utils","readApplications","_readApplications","deleteApplicationByName","_deleteApplicationByName","deleteApplications","_deleteApplications","exportApplication","_exportApplication","exportApplicationByName","_exportApplicationByName","exportApplications","_exportApplications","importApplicationByName","_importApplicationByName","importFirstApplication","_importFirstApplication","importApplications","_importApplications","app","listApplications","long","applications","sort","a","b","name","localeCompare","table","hAlign","content","forEach","push","_id","templateName","templateVersion","authoritative","description","toString","error","deleteApplication","applicationName","deep","outcome","message","deleted","length","exportApplicationToFile","file","includeMeta","options","useStringArrays","deps","fileName","filePath","exportData","exportApplicationsToFile","getRealmName","getRealm","exportApplicationsToFiles","errors","barId","application","fileBarId","importApplicationFromFile","data","readFileSync","fileData","JSON","parse","importFirstApplicationFromFile","importApplicationsFromFile","applicationData","importApplicationsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","map","total","count","Object","keys","managedApplication"],"sources":["../../src/ops/ApplicationOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport type {\n ApplicationExportInterface,\n ApplicationExportOptions,\n ApplicationImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/ApplicationOps';\nimport fs from 'fs';\n\nimport {\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\nconst {\n getTypedFilename,\n titleCase,\n getFilePath,\n getWorkingDirectory,\n saveJsonToFile,\n} = frodo.utils;\nconst {\n readApplications: _readApplications,\n deleteApplicationByName: _deleteApplicationByName,\n deleteApplications: _deleteApplications,\n exportApplication: _exportApplication,\n exportApplicationByName: _exportApplicationByName,\n exportApplications: _exportApplications,\n importApplicationByName: _importApplicationByName,\n importFirstApplication: _importFirstApplication,\n importApplications: _importApplications,\n} = frodo.app;\n\n/**\n * List applications\n */\nexport async function listApplications(long = false) {\n try {\n const applications = await _readApplications();\n applications.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'Id',\n 'Template',\n {\n hAlign: 'right',\n content: 'Version',\n },\n {\n hAlign: 'right',\n content: 'Authoritative',\n },\n 'Description',\n ]);\n applications.forEach((app) => {\n table.push([\n app.name,\n app._id,\n app.templateName,\n {\n hAlign: 'right',\n content: app.templateVersion,\n },\n {\n hAlign: 'right',\n content: app.authoritative,\n },\n wordwrap(app.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n applications.forEach((app) => {\n printMessage(`${app.name}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Delete application\n * @param {string} applicationName application name\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplication(\n applicationName: string,\n deep: boolean\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplication: begin`);\n showSpinner(`Deleting ${applicationName}...`);\n try {\n await _deleteApplicationByName(applicationName, deep);\n outcome = true;\n succeedSpinner(`Deleted ${applicationName}`);\n } catch (error) {\n failSpinner(`Error deleting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplication: end`);\n return outcome;\n}\n\n/**\n * Delete all applications\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplications(deep: boolean): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.deleteApplications: begin`);\n showSpinner(`Deleting all applications...`);\n try {\n const deleted = await _deleteApplications(deep);\n outcome = true;\n succeedSpinner(`Deleted ${deleted.length} applications`);\n } catch (error) {\n failSpinner(`Error deleting applications: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.deleteApplications: end`);\n return outcome;\n}\n\n/**\n * Export application to file\n * @param {string} applicationName application name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationToFile(\n applicationName: string,\n file: string,\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: begin`);\n showSpinner(`Exporting ${applicationName}...`);\n try {\n let fileName = getTypedFilename(applicationName, 'application');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplicationByName(applicationName, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported ${applicationName} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${applicationName}: ${error.message}`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: end`);\n return outcome;\n}\n\n/**\n * Export all applications to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFile(\n file: string,\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: begin`);\n showSpinner(`Exporting all applications...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'application'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplications(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(`Exported all applications to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all applications`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: end [${outcome}]`);\n return outcome;\n}\n\n/**\n * Export all applications to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFiles(\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: begin`);\n const errors = [];\n let barId: string;\n try {\n const applications = await _readApplications();\n barId = createProgressIndicator(\n 'determinate',\n applications.length,\n 'Exporting applications...'\n );\n for (const application of applications) {\n const fileBarId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting application ${application.name}...`\n );\n const file = getFilePath(\n getTypedFilename(application.name, 'application'),\n true\n );\n try {\n updateProgressIndicator(barId, `Exporting ${application.name}.`);\n const exportData = await _exportApplication(application._id, options);\n saveJsonToFile(exportData, file, includeMeta);\n updateProgressIndicator(\n fileBarId,\n `Saving ${application.name} to ${file}.`\n );\n stopProgressIndicator(\n fileBarId,\n `${application.name} saved to ${file}.`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(barId, `Error exporting ${application.name}.`);\n stopProgressIndicator(\n fileBarId,\n `Error saving ${application.name} to ${file}.`\n );\n }\n }\n stopProgressIndicator(barId, `Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(barId, `Error exporting applications(s) to file(s)`);\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import application from file\n * @param {string} applicationName client id\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationFromFile(\n applicationName: string,\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: begin`);\n showSpinner(`Importing ${applicationName}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importApplicationByName(applicationName, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${applicationName}.`);\n } catch (error) {\n failSpinner(`Error importing ${applicationName}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first application from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstApplicationFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await _importFirstApplication(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const applicationData = JSON.parse(data);\n await _importApplications(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import applications from files\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFiles(\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n let barId: string;\n try {\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.application.json'))\n .map((name) => getFilePath(name));\n barId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing applications...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ApplicationExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.managedApplication).length;\n total += count;\n await _importApplications(fileData, options);\n updateProgressIndicator(\n barId,\n `Imported ${count} application(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n barId,\n `Error importing application(s) from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n stopProgressIndicator(\n barId,\n `Finished importing ${total} application(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n barId,\n `Error importing application(s) from file(s).`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAMpD,OAAOC,EAAE,MAAM,IAAI;AAEnB,SACEC,uBAAuB,EACvBC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,qBAAqB,EACrBC,cAAc,EACdC,uBAAuB,QAClB,kBAAkB;AACzB,OAAOC,QAAQ,MAAM,kBAAkB;AAEvC,MAAM;EACJC,gBAAgB;EAChBC,SAAS;EACTC,WAAW;EACXC,mBAAmB;EACnBC;AACF,CAAC,GAAGjB,KAAK,CAACkB,KAAK;AACf,MAAM;EACJC,gBAAgB,EAAEC,iBAAiB;EACnCC,uBAAuB,EAAEC,wBAAwB;EACjDC,kBAAkB,EAAEC,mBAAmB;EACvCC,iBAAiB,EAAEC,kBAAkB;EACrCC,uBAAuB,EAAEC,wBAAwB;EACjDC,kBAAkB,EAAEC,mBAAmB;EACvCC,uBAAuB,EAAEC,wBAAwB;EACjDC,sBAAsB,EAAEC,uBAAuB;EAC/CC,kBAAkB,EAAEC;AACtB,CAAC,GAAGpC,KAAK,CAACqC,GAAG;;AAEb;AACA;AACA;AACA,OAAO,eAAeC,gBAAgBA,CAACC,IAAI,GAAG,KAAK,EAAE;EACnD,IAAI;IACF,MAAMC,YAAY,GAAG,MAAMpB,iBAAiB,CAAC,CAAC;IAC9CoB,YAAY,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,IAAI,CAACC,aAAa,CAACF,CAAC,CAACC,IAAI,CAAC,CAAC;IACzD,IAAIL,IAAI,EAAE;MACR,MAAMO,KAAK,GAAG1C,WAAW,CAAC,CACxB,MAAM,EACN,IAAI,EACJ,UAAU,EACV;QACE2C,MAAM,EAAE,OAAO;QACfC,OAAO,EAAE;MACX,CAAC,EACD;QACED,MAAM,EAAE,OAAO;QACfC,OAAO,EAAE;MACX,CAAC,EACD,aAAa,CACd,CAAC;MACFR,YAAY,CAACS,OAAO,CAAEZ,GAAG,IAAK;QAC5BS,KAAK,CAACI,IAAI,CAAC,CACTb,GAAG,CAACO,IAAI,EACRP,GAAG,CAACc,GAAG,EACPd,GAAG,CAACe,YAAY,EAChB;UACEL,MAAM,EAAE,OAAO;UACfC,OAAO,EAAEX,GAAG,CAACgB;QACf,CAAC,EACD;UACEN,MAAM,EAAE,OAAO;UACfC,OAAO,EAAEX,GAAG,CAACiB;QACf,CAAC,EACD1C,QAAQ,CAACyB,GAAG,CAACkB,WAAW,EAAE,EAAE,CAAC,CAC9B,CAAC;MACJ,CAAC,CAAC;MACFhD,YAAY,CAACuC,KAAK,CAACU,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC,MAAM;MACLhB,YAAY,CAACS,OAAO,CAAEZ,GAAG,IAAK;QAC5B9B,YAAY,CAAE,GAAE8B,GAAG,CAACO,IAAK,EAAC,EAAE,MAAM,CAAC;MACrC,CAAC,CAAC;IACJ;EACF,CAAC,CAAC,OAAOa,KAAK,EAAE;IACdlD,YAAY,CAAE,gCAA+BkD,KAAM,EAAC,EAAE,OAAO,CAAC;EAChE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeC,iBAAiBA,CACrCC,eAAuB,EACvBC,IAAa,EACK;EAClB,IAAIC,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,6CAA4C,CAAC;EAC3DG,WAAW,CAAE,YAAWmD,eAAgB,KAAI,CAAC;EAC7C,IAAI;IACF,MAAMrC,wBAAwB,CAACqC,eAAe,EAAEC,IAAI,CAAC;IACrDC,OAAO,GAAG,IAAI;IACdnD,cAAc,CAAE,WAAUiD,eAAgB,EAAC,CAAC;EAC9C,CAAC,CAAC,OAAOF,KAAK,EAAE;IACdnD,WAAW,CAAE,kBAAiBqD,eAAgB,KAAIF,KAAK,CAACK,OAAQ,EAAC,CAAC;EACpE;EACAzD,YAAY,CAAE,2CAA0C,CAAC;EACzD,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAetC,kBAAkBA,CAACqC,IAAa,EAAoB;EACxE,IAAIC,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,8CAA6C,CAAC;EAC5DG,WAAW,CAAE,8BAA6B,CAAC;EAC3C,IAAI;IACF,MAAMuD,OAAO,GAAG,MAAMvC,mBAAmB,CAACoC,IAAI,CAAC;IAC/CC,OAAO,GAAG,IAAI;IACdnD,cAAc,CAAE,WAAUqD,OAAO,CAACC,MAAO,eAAc,CAAC;EAC1D,CAAC,CAAC,OAAOP,KAAK,EAAE;IACdnD,WAAW,CAAE,gCAA+BmD,KAAK,CAACK,OAAQ,EAAC,CAAC;EAC9D;EACAzD,YAAY,CAAE,4CAA2C,CAAC;EAC1D,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeI,uBAAuBA,CAC3CN,eAAuB,EACvBO,IAAY,EACZC,WAAoB,EACpBC,OAAiC,GAAG;EAAEC,eAAe,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAC,EACzE;EACA,IAAIT,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,mDAAkD,CAAC;EACjEG,WAAW,CAAE,aAAYmD,eAAgB,KAAI,CAAC;EAC9C,IAAI;IACF,IAAIY,QAAQ,GAAG1D,gBAAgB,CAAC8C,eAAe,EAAE,aAAa,CAAC;IAC/D,IAAIO,IAAI,EAAE;MACRK,QAAQ,GAAGL,IAAI;IACjB;IACA,MAAMM,QAAQ,GAAGzD,WAAW,CAACwD,QAAQ,EAAE,IAAI,CAAC;IAC5C,MAAME,UAAU,GAAG,MAAM7C,wBAAwB,CAAC+B,eAAe,EAAES,OAAO,CAAC;IAC3EnD,cAAc,CAACwD,UAAU,EAAED,QAAQ,EAAEL,WAAW,CAAC;IACjDzD,cAAc,CAAE,YAAWiD,eAAgB,OAAMa,QAAS,GAAE,CAAC;IAC7DX,OAAO,GAAG,IAAI;EAChB,CAAC,CAAC,OAAOJ,KAAK,EAAE;IACdnD,WAAW,CAAE,mBAAkBqD,eAAgB,KAAIF,KAAK,CAACK,OAAQ,EAAC,CAAC;EACrE;EACAzD,YAAY,CAAE,iDAAgD,CAAC;EAC/D,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAea,wBAAwBA,CAC5CR,IAAY,EACZC,WAAoB,EACpBC,OAAiC,GAAG;EAAEC,eAAe,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAC,EACvD;EAClB,IAAIT,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,oDAAmD,CAAC;EAClEG,WAAW,CAAE,+BAA8B,CAAC;EAC5C,IAAI;IACF,IAAI+D,QAAQ,GAAG1D,gBAAgB,CAC5B,MAAKC,SAAS,CAACd,KAAK,CAACkB,KAAK,CAACyD,YAAY,CAAC1E,KAAK,CAAC2E,QAAQ,CAAC,CAAC,CAAC,CAAE,cAAa,EACzE,aACF,CAAC;IACD,IAAIV,IAAI,EAAE;MACRK,QAAQ,GAAGL,IAAI;IACjB;IACA,MAAMM,QAAQ,GAAGzD,WAAW,CAACwD,QAAQ,EAAE,IAAI,CAAC;IAC5C,MAAME,UAAU,GAAG,MAAM3C,mBAAmB,CAACsC,OAAO,CAAC;IACrDnD,cAAc,CAACwD,UAAU,EAAED,QAAQ,EAAEL,WAAW,CAAC;IACjDzD,cAAc,CAAE,gCAA+B8D,QAAS,GAAE,CAAC;IAC3DX,OAAO,GAAG,IAAI;EAChB,CAAC,CAAC,OAAOJ,KAAK,EAAE;IACdnD,WAAW,CAAE,kCAAiC,CAAC;IAC/CC,YAAY,CAAE,GAAEkD,KAAK,CAACK,OAAQ,EAAC,EAAE,OAAO,CAAC;EAC3C;EACAzD,YAAY,CAAE,qDAAoDwD,OAAQ,GAAE,CAAC;EAC7E,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAegB,yBAAyBA,CAC7CV,WAAoB,EACpBC,OAAiC,GAAG;EAAEC,eAAe,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAC,EACzE;EACAjE,YAAY,CAAE,qDAAoD,CAAC;EACnE,MAAMyE,MAAM,GAAG,EAAE;EACjB,IAAIC,KAAa;EACjB,IAAI;IACF,MAAMvC,YAAY,GAAG,MAAMpB,iBAAiB,CAAC,CAAC;IAC9C2D,KAAK,GAAG5E,uBAAuB,CAC7B,aAAa,EACbqC,YAAY,CAACwB,MAAM,EACnB,2BACF,CAAC;IACD,KAAK,MAAMgB,WAAW,IAAIxC,YAAY,EAAE;MACtC,MAAMyC,SAAS,GAAG9E,uBAAuB,CACvC,aAAa,EACb,CAAC,EACA,yBAAwB6E,WAAW,CAACpC,IAAK,KAC5C,CAAC;MACD,MAAMsB,IAAI,GAAGnD,WAAW,CACtBF,gBAAgB,CAACmE,WAAW,CAACpC,IAAI,EAAE,aAAa,CAAC,EACjD,IACF,CAAC;MACD,IAAI;QACFjC,uBAAuB,CAACoE,KAAK,EAAG,aAAYC,WAAW,CAACpC,IAAK,GAAE,CAAC;QAChE,MAAM6B,UAAU,GAAG,MAAM/C,kBAAkB,CAACsD,WAAW,CAAC7B,GAAG,EAAEiB,OAAO,CAAC;QACrEnD,cAAc,CAACwD,UAAU,EAAEP,IAAI,EAAEC,WAAW,CAAC;QAC7CxD,uBAAuB,CACrBsE,SAAS,EACR,UAASD,WAAW,CAACpC,IAAK,OAAMsB,IAAK,GACxC,CAAC;QACDzD,qBAAqB,CACnBwE,SAAS,EACR,GAAED,WAAW,CAACpC,IAAK,aAAYsB,IAAK,GACvC,CAAC;MACH,CAAC,CAAC,OAAOT,KAAK,EAAE;QACdqB,MAAM,CAAC5B,IAAI,CAACO,KAAK,CAAC;QAClB9C,uBAAuB,CAACoE,KAAK,EAAG,mBAAkBC,WAAW,CAACpC,IAAK,GAAE,CAAC;QACtEnC,qBAAqB,CACnBwE,SAAS,EACR,gBAAeD,WAAW,CAACpC,IAAK,OAAMsB,IAAK,GAC9C,CAAC;MACH;IACF;IACAzD,qBAAqB,CAACsE,KAAK,EAAG,kBAAiB,CAAC;EAClD,CAAC,CAAC,OAAOtB,KAAK,EAAE;IACdqB,MAAM,CAAC5B,IAAI,CAACO,KAAK,CAAC;IAClBhD,qBAAqB,CAACsE,KAAK,EAAG,4CAA2C,CAAC;EAC5E;EACA1E,YAAY,CAAE,mDAAkD,CAAC;EACjE,OAAO,CAAC,KAAKyE,MAAM,CAACd,MAAM;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAekB,yBAAyBA,CAC7CvB,eAAuB,EACvBO,IAAY,EACZE,OAAiC,GAAG;EAAEE,IAAI,EAAE;AAAK,CAAC,EAChC;EAClB,IAAIT,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,qDAAoD,CAAC;EACnEG,WAAW,CAAE,aAAYmD,eAAgB,KAAI,CAAC;EAC9C,IAAI;IACF,MAAMwB,IAAI,GAAGjF,EAAE,CAACkF,YAAY,CAACrE,WAAW,CAACmD,IAAI,CAAC,EAAE,MAAM,CAAC;IACvD,MAAMmB,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACjC,MAAMnD,wBAAwB,CAAC2B,eAAe,EAAE0B,QAAQ,EAAEjB,OAAO,CAAC;IAClEP,OAAO,GAAG,IAAI;IACdnD,cAAc,CAAE,YAAWiD,eAAgB,GAAE,CAAC;EAChD,CAAC,CAAC,OAAOF,KAAK,EAAE;IACdnD,WAAW,CAAE,mBAAkBqD,eAAgB,GAAE,CAAC;IAClDpD,YAAY,CAACkD,KAAK,EAAE,OAAO,CAAC;EAC9B;EACApD,YAAY,CAAE,mDAAkD,CAAC;EACjE,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe2B,8BAA8BA,CAClDtB,IAAY,EACZE,OAAiC,GAAG;EAAEE,IAAI,EAAE;AAAK,CAAC,EAChC;EAClB,IAAIT,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,0DAAyD,CAAC;EACxE,MAAMmE,QAAQ,GAAGzD,WAAW,CAACmD,IAAI,CAAC;EAClC1D,WAAW,CAAE,aAAYgE,QAAS,KAAI,CAAC;EACvC,IAAI;IACF,MAAMW,IAAI,GAAGjF,EAAE,CAACkF,YAAY,CAACZ,QAAQ,EAAE,MAAM,CAAC;IAC9C,MAAMa,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACjC,MAAMjD,uBAAuB,CAACmD,QAAQ,EAAEjB,OAAO,CAAC;IAChDP,OAAO,GAAG,IAAI;IACdnD,cAAc,CAAE,YAAW8D,QAAS,GAAE,CAAC;EACzC,CAAC,CAAC,OAAOf,KAAK,EAAE;IACdnD,WAAW,CAAE,mBAAkBkE,QAAS,GAAE,CAAC;IAC3CjE,YAAY,CAACkD,KAAK,EAAE,OAAO,CAAC;EAC9B;EACApD,YAAY,CAAE,wDAAuD,CAAC;EACtE,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe4B,0BAA0BA,CAC9CvB,IAAY,EACZE,OAAiC,GAAG;EAAEE,IAAI,EAAE;AAAK,CAAC,EAChC;EAClB,IAAIT,OAAO,GAAG,KAAK;EACnBxD,YAAY,CAAE,sDAAqD,CAAC;EACpE,MAAMmE,QAAQ,GAAGzD,WAAW,CAACmD,IAAI,CAAC;EAClC1D,WAAW,CAAE,aAAYgE,QAAS,KAAI,CAAC;EACvC,IAAI;IACF,MAAMW,IAAI,GAAGjF,EAAE,CAACkF,YAAY,CAACZ,QAAQ,EAAE,MAAM,CAAC;IAC9C,MAAMkB,eAAe,GAAGJ,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACxC,MAAM/C,mBAAmB,CAACsD,eAAe,EAAEtB,OAAO,CAAC;IACnDP,OAAO,GAAG,IAAI;IACdnD,cAAc,CAAE,YAAW8D,QAAS,GAAE,CAAC;EACzC,CAAC,CAAC,OAAOf,KAAK,EAAE;IACdnD,WAAW,CAAE,mBAAkBkE,QAAS,GAAE,CAAC;IAC3CjE,YAAY,CAACkD,KAAK,EAAE,OAAO,CAAC;EAC9B;EACApD,YAAY,CAAE,oDAAmD,CAAC;EAClE,OAAOwD,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe8B,2BAA2BA,CAC/CvB,OAAiC,GAAG;EAAEE,IAAI,EAAE;AAAK,CAAC,EAChC;EAClB,MAAMQ,MAAM,GAAG,EAAE;EACjB,IAAIC,KAAa;EACjB,IAAI;IACF1E,YAAY,CAAE,uDAAsD,CAAC;IACrE,MAAMuF,KAAK,GAAG1F,EAAE,CAAC2F,WAAW,CAAC7E,mBAAmB,CAAC,CAAC,CAAC;IACnD,MAAM8E,KAAK,GAAGF,KAAK,CAChBG,MAAM,CAAEnD,IAAI,IAAKA,IAAI,CAACoD,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAClEC,GAAG,CAAEtD,IAAI,IAAK7B,WAAW,CAAC6B,IAAI,CAAC,CAAC;IACnCmC,KAAK,GAAG5E,uBAAuB,CAC7B,aAAa,EACb2F,KAAK,CAAC9B,MAAM,EACZ,2BACF,CAAC;IACD,IAAImC,KAAK,GAAG,CAAC;IACb,KAAK,MAAMjC,IAAI,IAAI4B,KAAK,EAAE;MACxB,IAAI;QACF,MAAMX,IAAI,GAAGjF,EAAE,CAACkF,YAAY,CAAClB,IAAI,EAAE,MAAM,CAAC;QAC1C,MAAMmB,QAAoC,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;QAC7D,MAAMiB,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACjB,QAAQ,CAACkB,kBAAkB,CAAC,CAACvC,MAAM;QAC7DmC,KAAK,IAAIC,KAAK;QACd,MAAMhE,mBAAmB,CAACiD,QAAQ,EAAEjB,OAAO,CAAC;QAC5CzD,uBAAuB,CACrBoE,KAAK,EACJ,YAAWqB,KAAM,wBAAuBlC,IAAK,EAChD,CAAC;MACH,CAAC,CAAC,OAAOT,KAAK,EAAE;QACdqB,MAAM,CAAC5B,IAAI,CAACO,KAAK,CAAC;QAClB9C,uBAAuB,CACrBoE,KAAK,EACJ,uCAAsCb,IAAK,EAC9C,CAAC;QACD3D,YAAY,CAACkD,KAAK,EAAE,OAAO,CAAC;MAC9B;IACF;IACAhD,qBAAqB,CACnBsE,KAAK,EACJ,sBAAqBoB,KAAM,wBAAuBL,KAAK,CAAC9B,MAAO,WAClE,CAAC;EACH,CAAC,CAAC,OAAOP,KAAK,EAAE;IACdqB,MAAM,CAAC5B,IAAI,CAACO,KAAK,CAAC;IAClBhD,qBAAqB,CACnBsE,KAAK,EACJ,8CACH,CAAC;IACDxE,YAAY,CAACkD,KAAK,EAAE,OAAO,CAAC;EAC9B;EACApD,YAAY,CAAE,qDAAoD,CAAC;EACnE,OAAO,CAAC,KAAKyE,MAAM,CAACd,MAAM;AAC5B"}
1
+ {"version":3,"file":"ApplicationOps.js","names":["frodo","FrodoError","state","fs","createProgressIndicator","createTable","debugMessage","printError","printMessage","stopProgressIndicator","updateProgressIndicator","wordwrap","getTypedFilename","titleCase","getFilePath","getWorkingDirectory","saveJsonToFile","utils","readApplications","_readApplications","deleteApplicationByName","_deleteApplicationByName","deleteApplications","_deleteApplications","exportApplication","_exportApplication","exportApplicationByName","_exportApplicationByName","exportApplications","_exportApplications","importApplicationByName","_importApplicationByName","importFirstApplication","_importFirstApplication","importApplications","_importApplications","app","listApplications","long","applications","sort","a","b","name","localeCompare","table","hAlign","content","forEach","push","_id","templateName","templateVersion","authoritative","description","toString","error","deleteApplication","applicationName","deep","spinnerId","deleted","length","exportApplicationToFile","file","includeMeta","options","useStringArrays","deps","fileName","filePath","exportData","exportApplicationsToFile","getRealmName","getRealm","exportApplicationsToFiles","errors","totalBarId","application","fileBarId","importApplicationFromFile","data","readFileSync","fileData","JSON","parse","importFirstApplicationFromFile","importApplicationsFromFile","applicationData","importApplicationsFromFiles","barId","names","readdirSync","files","filter","toLowerCase","endsWith","map","total","count","Object","keys","managedApplication"],"sources":["../../src/ops/ApplicationOps.ts"],"sourcesContent":["import { frodo, FrodoError, state } from '@rockcarver/frodo-lib';\nimport type {\n ApplicationExportInterface,\n ApplicationExportOptions,\n ApplicationImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/ApplicationOps';\nimport fs from 'fs';\n\nimport {\n createProgressIndicator,\n createTable,\n debugMessage,\n printError,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\n\nconst {\n getTypedFilename,\n titleCase,\n getFilePath,\n getWorkingDirectory,\n saveJsonToFile,\n} = frodo.utils;\nconst {\n readApplications: _readApplications,\n deleteApplicationByName: _deleteApplicationByName,\n deleteApplications: _deleteApplications,\n exportApplication: _exportApplication,\n exportApplicationByName: _exportApplicationByName,\n exportApplications: _exportApplications,\n importApplicationByName: _importApplicationByName,\n importFirstApplication: _importFirstApplication,\n importApplications: _importApplications,\n} = frodo.app;\n\n/**\n * List applications\n */\nexport async function listApplications(long = false): Promise<boolean> {\n try {\n const applications = await _readApplications();\n applications.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable([\n 'Name',\n 'Id',\n 'Template',\n {\n hAlign: 'right',\n content: 'Version',\n },\n {\n hAlign: 'right',\n content: 'Authoritative',\n },\n 'Description',\n ]);\n applications.forEach((app) => {\n table.push([\n app.name,\n app._id,\n app.templateName,\n {\n hAlign: 'right',\n content: app.templateVersion,\n },\n {\n hAlign: 'right',\n content: app.authoritative,\n },\n wordwrap(app.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n applications.forEach((app) => {\n printMessage(`${app.name}`, 'data');\n });\n }\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Delete application\n * @param {string} applicationName application name\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplication(\n applicationName: string,\n deep: boolean\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.deleteApplication: begin`);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting ${applicationName}...`\n );\n await _deleteApplicationByName(applicationName, deep);\n stopProgressIndicator(spinnerId, `Deleted ${applicationName}`, 'success');\n debugMessage(`cli.ApplicationOps.deleteApplication: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error deleting ${applicationName}`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Delete all applications\n * @param {boolean} deep deep delete (include dependencies)\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteApplications(deep: boolean): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.deleteApplications: begin`);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Deleting applications...`\n );\n const deleted = await _deleteApplications(deep);\n stopProgressIndicator(\n spinnerId,\n `Deleted ${deleted.length} applications`,\n 'success'\n );\n debugMessage(`cli.ApplicationOps.deleteApplications: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(spinnerId, `Error deleting applications`, 'fail');\n printError(error);\n }\n return false;\n}\n\n/**\n * Export application to file\n * @param {string} applicationName application name\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationToFile(\n applicationName: string,\n file: string,\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: begin`);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting ${applicationName}...`\n );\n let fileName = getTypedFilename(applicationName, 'application');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplicationByName(applicationName, options);\n saveJsonToFile(exportData, filePath, includeMeta);\n stopProgressIndicator(\n spinnerId,\n `Exported ${applicationName} to ${filePath}.`,\n 'success'\n );\n debugMessage(`cli.ApplicationOps.exportApplicationToFile: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error exporting ${applicationName}`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Export all applications to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFile(\n file: string,\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: begin`);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting applications...`\n );\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'application'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportApplications(options);\n saveJsonToFile(exportData, filePath, includeMeta);\n stopProgressIndicator(\n spinnerId,\n `Exported applications to ${filePath}.`,\n 'success'\n );\n debugMessage(`cli.ApplicationOps.exportApplicationsToFile: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(spinnerId, `Error exporting applications`, 'fail');\n printError(error);\n }\n return false;\n}\n\n/**\n * Export all applications to separate files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportApplicationsToFiles(\n includeMeta: boolean,\n options: ApplicationExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: begin`);\n const errors: Error[] = [];\n let totalBarId: string;\n try {\n const applications = await _readApplications();\n totalBarId = createProgressIndicator(\n 'determinate',\n applications.length,\n 'Exporting applications...'\n );\n for (const application of applications) {\n const fileBarId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting application ${application.name}...`\n );\n const file = getFilePath(\n getTypedFilename(application.name, 'application'),\n true\n );\n try {\n updateProgressIndicator(totalBarId, `Exporting ${application.name}.`);\n const exportData = await _exportApplication(application._id, options);\n saveJsonToFile(exportData, file, includeMeta);\n updateProgressIndicator(\n fileBarId,\n `Saving ${application.name} to ${file}.`\n );\n stopProgressIndicator(\n fileBarId,\n `${application.name} saved to ${file}.`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n totalBarId,\n `Error exporting ${application.name}.`\n );\n stopProgressIndicator(\n fileBarId,\n `Error saving ${application.name} to ${file}.`,\n 'fail'\n );\n }\n }\n stopProgressIndicator(totalBarId, `Export complete.`);\n if (errors.length > 0) {\n throw new FrodoError(\n `Error exporting applications(s) to file(s)`,\n errors\n );\n }\n debugMessage(`cli.ApplicationOps.exportApplicationsToFiles: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n totalBarId,\n `Error exporting applications(s) to file(s)`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import application from file\n * @param {string} applicationName client id\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationFromFile(\n applicationName: string,\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: begin`);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting applications...`\n );\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importApplicationByName(applicationName, fileData, options);\n stopProgressIndicator(spinnerId, `Imported ${applicationName}`, 'success');\n debugMessage(`cli.ApplicationOps.importApplicationFromFile: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing ${applicationName}`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import first application from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstApplicationFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: begin`);\n const filePath = getFilePath(file);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${filePath}...`\n );\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await _importFirstApplication(fileData, options);\n stopProgressIndicator(spinnerId, `Imported ${filePath}`, 'success');\n debugMessage(`cli.ApplicationOps.importFirstApplicationFromFile: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing first application`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import applications from file\n * @param {string} file file name\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFile(\n file: string,\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: begin`);\n const filePath = getFilePath(file);\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${filePath}...`\n );\n const data = fs.readFileSync(filePath, 'utf8');\n const applicationData = JSON.parse(data);\n await _importApplications(applicationData, options);\n stopProgressIndicator(spinnerId, `Imported ${filePath}`, 'success');\n debugMessage(`cli.ApplicationOps.importApplicationsFromFile: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing first application`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import applications from files\n * @param {ApplicationImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importApplicationsFromFiles(\n options: ApplicationImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n let barId: string;\n try {\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.application.json'))\n .map((name) => getFilePath(name));\n barId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing applications...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ApplicationExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.managedApplication).length;\n total += count;\n await _importApplications(fileData, options);\n updateProgressIndicator(\n barId,\n `Imported ${count} application(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n barId,\n `Error importing application(s) from ${file}`\n );\n printMessage(error, 'error');\n }\n }\n if (errors.length > 0) {\n throw new FrodoError(`Error importing applications`, errors);\n }\n stopProgressIndicator(\n barId,\n `Finished importing ${total} application(s) from ${files.length} file(s).`\n );\n debugMessage(`cli.ApplicationOps.importApplicationsFromFiles: end`);\n return true;\n } catch (error) {\n stopProgressIndicator(barId, `Error importing applications`);\n printMessage(error, 'error');\n }\n return false;\n}\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
2
+ import readlineSync from 'readline-sync';
3
+ import { printError, printMessage } from '../utils/Console';
4
+ const {
5
+ getTokens: _getTokens
6
+ } = frodo.login;
7
+ const otpCallbackHandler = callback => {
8
+ if (callback.type != 'NameCallback') throw new Error(`Unsupported callback: ${callback.type}`);
9
+ printMessage(`Multi-factor authentication is enabled and required for this user.`);
10
+ callback.input[0].value = readlineSync.question(`${callback.output[0].value}: `);
11
+ return callback;
12
+ };
13
+ export async function getTokens(forceLoginAsUser, autoRefresh) {
14
+ try {
15
+ const tokens = await _getTokens(forceLoginAsUser, autoRefresh, otpCallbackHandler);
16
+ printMessage(`Connected to ${state.getHost()} [${state.getRealm() ? state.getRealm() : 'root'}] as ${tokens.subject}`, 'info');
17
+ return true;
18
+ } catch (error) {
19
+ printError(error);
20
+ }
21
+ return false;
22
+ }
23
+ //# sourceMappingURL=AuthenticateOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticateOps.js","names":["frodo","state","readlineSync","printError","printMessage","getTokens","_getTokens","login","otpCallbackHandler","callback","type","Error","input","value","question","output","forceLoginAsUser","autoRefresh","tokens","getHost","getRealm","subject","error"],"sources":["../../src/ops/AuthenticateOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n Callback,\n CallbackHandler,\n} from '@rockcarver/frodo-lib/types/ops/CallbackOps';\nimport readlineSync from 'readline-sync';\n\nimport { printError, printMessage } from '../utils/Console';\n\nconst { getTokens: _getTokens } = frodo.login;\n\nconst otpCallbackHandler: CallbackHandler = (callback: Callback) => {\n if (callback.type != 'NameCallback')\n throw new Error(`Unsupported callback: ${callback.type}`);\n printMessage(\n `Multi-factor authentication is enabled and required for this user.`\n );\n callback.input[0].value = readlineSync.question(\n `${callback.output[0].value}: `\n );\n return callback;\n};\n\nexport async function getTokens(\n forceLoginAsUser?: boolean,\n autoRefresh?: boolean\n): Promise<boolean> {\n try {\n const tokens = await _getTokens(\n forceLoginAsUser,\n autoRefresh,\n otpCallbackHandler\n );\n printMessage(\n `Connected to ${state.getHost()} [${\n state.getRealm() ? state.getRealm() : 'root'\n }] as ${tokens.subject}`,\n 'info'\n );\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAKpD,OAAOC,YAAY,MAAM,eAAe;AAExC,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAE3D,MAAM;EAAEC,SAAS,EAAEC;AAAW,CAAC,GAAGN,KAAK,CAACO,KAAK;AAE7C,MAAMC,kBAAmC,GAAIC,QAAkB,IAAK;EAClE,IAAIA,QAAQ,CAACC,IAAI,IAAI,cAAc,EACjC,MAAM,IAAIC,KAAK,CAAE,yBAAwBF,QAAQ,CAACC,IAAK,EAAC,CAAC;EAC3DN,YAAY,CACT,oEACH,CAAC;EACDK,QAAQ,CAACG,KAAK,CAAC,CAAC,CAAC,CAACC,KAAK,GAAGX,YAAY,CAACY,QAAQ,CAC5C,GAAEL,QAAQ,CAACM,MAAM,CAAC,CAAC,CAAC,CAACF,KAAM,IAC9B,CAAC;EACD,OAAOJ,QAAQ;AACjB,CAAC;AAED,OAAO,eAAeJ,SAASA,CAC7BW,gBAA0B,EAC1BC,WAAqB,EACH;EAClB,IAAI;IACF,MAAMC,MAAM,GAAG,MAAMZ,UAAU,CAC7BU,gBAAgB,EAChBC,WAAW,EACXT,kBACF,CAAC;IACDJ,YAAY,CACT,gBAAeH,KAAK,CAACkB,OAAO,CAAC,CAAE,KAC9BlB,KAAK,CAACmB,QAAQ,CAAC,CAAC,GAAGnB,KAAK,CAACmB,QAAQ,CAAC,CAAC,GAAG,MACvC,QAAOF,MAAM,CAACG,OAAQ,EAAC,EACxB,MACF,CAAC;IACD,OAAO,IAAI;EACb,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdnB,UAAU,CAACmB,KAAK,CAAC;EACnB;EACA,OAAO,KAAK;AACd"}
@@ -1,6 +1,6 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { createObjectTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
3
+ import { createObjectTable, createProgressIndicator, debugMessage, printError, printMessage, stopProgressIndicator } from '../utils/Console';
4
4
  const {
5
5
  saveJsonToFile,
6
6
  getTypedFilename,
@@ -19,10 +19,10 @@ const {
19
19
  * @returns {Promise<boolean>} true if successful, false otherwise
20
20
  */
21
21
  export async function exportAuthenticationSettingsToFile(file, includeMeta = true) {
22
- let outcome = false;
23
- debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`);
24
- showSpinner(`Exporting ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings...`);
22
+ let spinnerId;
25
23
  try {
24
+ debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`);
25
+ spinnerId = createProgressIndicator('indeterminate', 0, `Exporting authentication settings...`);
26
26
  let fileName = getTypedFilename(`${frodo.utils.getRealmName(state.getRealm())}Realm`, 'authentication.settings');
27
27
  if (file) {
28
28
  fileName = file;
@@ -30,13 +30,14 @@ export async function exportAuthenticationSettingsToFile(file, includeMeta = tru
30
30
  const filePath = getFilePath(fileName, true);
31
31
  const exportData = await _exportAuthenticationSettings();
32
32
  saveJsonToFile(exportData, filePath, includeMeta);
33
- succeedSpinner(`Exported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings to ${filePath}.`);
34
- outcome = true;
33
+ stopProgressIndicator(spinnerId, `Exported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings to ${filePath}.`, 'success');
34
+ debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`);
35
+ return true;
35
36
  } catch (error) {
36
- failSpinner(`Error exporting ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings: ${error.message}`);
37
+ stopProgressIndicator(spinnerId, `Error exporting authentication settings`, 'fail');
38
+ printError(error);
37
39
  }
38
- debugMessage(`cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`);
39
- return outcome;
40
+ return false;
40
41
  }
41
42
 
42
43
  /**
@@ -45,21 +46,21 @@ export async function exportAuthenticationSettingsToFile(file, includeMeta = tru
45
46
  * @returns {Promise<boolean>} true if successful, false otherwise
46
47
  */
47
48
  export async function importAuthenticationSettingsFromFile(file) {
48
- let outcome = false;
49
- debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`);
50
- showSpinner(`Importing ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings...`);
49
+ let spinnerId;
51
50
  try {
51
+ debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`);
52
+ spinnerId = createProgressIndicator('indeterminate', 0, `Importing authentication settings...`);
52
53
  const data = fs.readFileSync(getFilePath(file), 'utf8');
53
54
  const fileData = JSON.parse(data);
54
55
  await _importAuthenticationSettings(fileData);
55
- outcome = true;
56
- succeedSpinner(`Imported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings.`);
56
+ stopProgressIndicator(spinnerId, `Imported ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings.`, 'success');
57
+ debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`);
58
+ return true;
57
59
  } catch (error) {
58
- failSpinner(`Error importing ${frodo.utils.getRealmName(state.getRealm())} realm authentication settings.`);
59
- printMessage(error, 'error');
60
+ stopProgressIndicator(spinnerId, `Error importing authentication settings`, 'fail');
61
+ printError(error);
60
62
  }
61
- debugMessage(`cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`);
62
- return outcome;
63
+ return false;
63
64
  }
64
65
 
65
66
  /**
@@ -68,7 +69,6 @@ export async function importAuthenticationSettingsFromFile(file) {
68
69
  * @returns {Promise<boolean>} true if successful, false otherwise
69
70
  */
70
71
  export async function describeAuthenticationSettings(json = false) {
71
- let outcome = false;
72
72
  try {
73
73
  const settings = await _readAuthenticationSettings();
74
74
  delete settings._id;
@@ -76,15 +76,14 @@ export async function describeAuthenticationSettings(json = false) {
76
76
  delete settings._type;
77
77
  if (json) {
78
78
  printMessage(settings, 'data');
79
- outcome = true;
80
79
  } else {
81
80
  const table = createObjectTable(settings);
82
81
  printMessage(table.toString(), 'data');
83
- outcome = true;
84
82
  }
83
+ return true;
85
84
  } catch (error) {
86
- printMessage(error.message, 'error');
85
+ printError(error);
87
86
  }
88
- return outcome;
87
+ return false;
89
88
  }
90
89
  //# sourceMappingURL=AuthenticationSettingsOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticationSettingsOps.js","names":["frodo","state","fs","createObjectTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","saveJsonToFile","getTypedFilename","getFilePath","utils","exportAuthenticationSettings","_exportAuthenticationSettings","importAuthenticationSettings","_importAuthenticationSettings","readAuthenticationSettings","_readAuthenticationSettings","authn","settings","exportAuthenticationSettingsToFile","file","includeMeta","outcome","getRealmName","getRealm","fileName","filePath","exportData","error","message","importAuthenticationSettingsFromFile","data","readFileSync","fileData","JSON","parse","describeAuthenticationSettings","json","_id","_rev","_type","table","toString"],"sources":["../../src/ops/AuthenticationSettingsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\nconst { saveJsonToFile, getTypedFilename, getFilePath } = frodo.utils;\nconst {\n exportAuthenticationSettings: _exportAuthenticationSettings,\n importAuthenticationSettings: _importAuthenticationSettings,\n readAuthenticationSettings: _readAuthenticationSettings,\n} = frodo.authn.settings;\n\n/**\n * Export authentication settings to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAuthenticationSettingsToFile(\n file: string,\n includeMeta = true\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`\n );\n showSpinner(\n `Exporting ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings...`\n );\n try {\n let fileName = getTypedFilename(\n `${frodo.utils.getRealmName(state.getRealm())}Realm`,\n 'authentication.settings'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportAuthenticationSettings();\n saveJsonToFile(exportData, filePath, includeMeta);\n succeedSpinner(\n `Exported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings to ${filePath}.`\n );\n outcome = true;\n } catch (error) {\n failSpinner(\n `Error exporting ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings: ${error.message}`\n );\n }\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`\n );\n return outcome;\n}\n\n/**\n * Import authentication settings from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAuthenticationSettingsFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`\n );\n showSpinner(\n `Importing ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings...`\n );\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importAuthenticationSettings(fileData);\n outcome = true;\n succeedSpinner(\n `Imported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings.`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings.`\n );\n printMessage(error, 'error');\n }\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Describe authentication settings\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeAuthenticationSettings(\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const settings = await _readAuthenticationSettings();\n delete settings._id;\n delete settings._rev;\n delete settings._type;\n if (json) {\n printMessage(settings, 'data');\n outcome = true;\n } else {\n const table = createObjectTable(settings);\n printMessage(table.toString(), 'data');\n outcome = true;\n }\n } catch (error) {\n printMessage(error.message, 'error');\n }\n return outcome;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AuthenticationSettingsOps.js","names":["frodo","state","fs","createObjectTable","createProgressIndicator","debugMessage","printError","printMessage","stopProgressIndicator","saveJsonToFile","getTypedFilename","getFilePath","utils","exportAuthenticationSettings","_exportAuthenticationSettings","importAuthenticationSettings","_importAuthenticationSettings","readAuthenticationSettings","_readAuthenticationSettings","authn","settings","exportAuthenticationSettingsToFile","file","includeMeta","spinnerId","fileName","getRealmName","getRealm","filePath","exportData","error","importAuthenticationSettingsFromFile","data","readFileSync","fileData","JSON","parse","describeAuthenticationSettings","json","_id","_rev","_type","table","toString"],"sources":["../../src/ops/AuthenticationSettingsOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n debugMessage,\n printError,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\n\nconst { saveJsonToFile, getTypedFilename, getFilePath } = frodo.utils;\nconst {\n exportAuthenticationSettings: _exportAuthenticationSettings,\n importAuthenticationSettings: _importAuthenticationSettings,\n readAuthenticationSettings: _readAuthenticationSettings,\n} = frodo.authn.settings;\n\n/**\n * Export authentication settings to file\n * @param {string} file file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAuthenticationSettingsToFile(\n file: string,\n includeMeta = true\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: begin`\n );\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting authentication settings...`\n );\n let fileName = getTypedFilename(\n `${frodo.utils.getRealmName(state.getRealm())}Realm`,\n 'authentication.settings'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await _exportAuthenticationSettings();\n saveJsonToFile(exportData, filePath, includeMeta);\n stopProgressIndicator(\n spinnerId,\n `Exported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings to ${filePath}.`,\n 'success'\n );\n debugMessage(\n `cli.AuthenticationSettingsOps.exportAuthenticationSettingsToFile: end`\n );\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error exporting authentication settings`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import authentication settings from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAuthenticationSettingsFromFile(\n file: string\n): Promise<boolean> {\n let spinnerId: string;\n try {\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: begin`\n );\n spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing authentication settings...`\n );\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await _importAuthenticationSettings(fileData);\n stopProgressIndicator(\n spinnerId,\n `Imported ${frodo.utils.getRealmName(\n state.getRealm()\n )} realm authentication settings.`,\n 'success'\n );\n debugMessage(\n `cli.AuthenticationSettingsOps.importAuthenticationSettingsFromFile: end`\n );\n return true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing authentication settings`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Describe authentication settings\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeAuthenticationSettings(\n json = false\n): Promise<boolean> {\n try {\n const settings = await _readAuthenticationSettings();\n delete settings._id;\n delete settings._rev;\n delete settings._type;\n if (json) {\n printMessage(settings, 'data');\n } else {\n const table = createObjectTable(settings);\n printMessage(table.toString(), 'data');\n }\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { frodo, state } from '@rockcarver/frodo-lib';
1
+ import { frodo, FrodoError, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { createProgressIndicator, createTable, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
3
+ import { createProgressIndicator, createTable, debugMessage, printError, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
4
4
  const {
5
5
  getRealmName,
6
6
  getTypedFilename,
@@ -54,29 +54,27 @@ export function getTableRowMd(cotObj) {
54
54
  * @param {String} long Long list format with details
55
55
  */
56
56
  export async function listCirclesOfTrust(long = false) {
57
- let outcome = false;
58
57
  let cotList = [];
59
58
  try {
60
59
  cotList = await readCirclesOfTrust();
60
+ cotList.sort((a, b) => a._id.localeCompare(b._id));
61
+ if (!long) {
62
+ cotList.forEach(cot => {
63
+ printMessage(`${cot._id}`, 'data');
64
+ });
65
+ return true;
66
+ } else {
67
+ const table = createTable(['Name'['brightCyan'], 'Description'['brightCyan'], 'Status'['brightCyan'], 'Trusted Providers'['brightCyan']]);
68
+ cotList.forEach(cot => {
69
+ table.push([cot._id, cot.description, cot.status, cot.trustedProviders.map(provider => provider.split('|')[0]).join('\n')]);
70
+ });
71
+ printMessage(table.toString(), 'data');
72
+ return true;
73
+ }
61
74
  } catch (error) {
62
- printMessage(`readCirclesOfTrust ERROR: ${error}`, 'error');
63
- printMessage(error, 'data');
64
- }
65
- cotList.sort((a, b) => a._id.localeCompare(b._id));
66
- if (!long) {
67
- cotList.forEach(cot => {
68
- printMessage(`${cot._id}`, 'data');
69
- });
70
- outcome = true;
71
- } else {
72
- const table = createTable(['Name'['brightCyan'], 'Description'['brightCyan'], 'Status'['brightCyan'], 'Trusted Providers'['brightCyan']]);
73
- cotList.forEach(cot => {
74
- table.push([cot._id, cot.description, cot.status, cot.trustedProviders.map(provider => provider.split('|')[0]).join('\n')]);
75
- });
76
- printMessage(table.toString(), 'data');
77
- outcome = true;
75
+ printError(error);
78
76
  }
79
- return outcome;
77
+ return false;
80
78
  }
81
79
 
82
80
  /**
@@ -86,7 +84,6 @@ export async function listCirclesOfTrust(long = false) {
86
84
  * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
87
85
  */
88
86
  export async function exportCircleOfTrustToFile(cotId, file = null, includeMeta = true) {
89
- let outcome = false;
90
87
  debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: begin`);
91
88
  const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting ${cotId}...`);
92
89
  try {
@@ -98,12 +95,13 @@ export async function exportCircleOfTrustToFile(cotId, file = null, includeMeta
98
95
  const exportData = await exportCircleOfTrust(cotId);
99
96
  saveJsonToFile(exportData, filePath, includeMeta);
100
97
  stopProgressIndicator(indicatorId, `Exported ${cotId} to ${filePath}.`, 'success');
101
- outcome = true;
98
+ return true;
102
99
  } catch (error) {
103
- stopProgressIndicator(indicatorId, `Error exporting ${cotId}: ${error.message}`, 'fail');
100
+ stopProgressIndicator(indicatorId, `Error exporting ${cotId}`, 'fail');
101
+ printError(error);
104
102
  }
105
103
  debugMessage(`cli.CirclesOfTrustOps.exportCircleOfTrustToFile: end`);
106
- return outcome;
104
+ return false;
107
105
  }
108
106
 
109
107
  /**
@@ -112,7 +110,6 @@ export async function exportCircleOfTrustToFile(cotId, file = null, includeMeta
112
110
  * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
113
111
  */
114
112
  export async function exportCirclesOfTrustToFile(file = null, includeMeta = true) {
115
- let outcome = false;
116
113
  debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: begin`);
117
114
  const indicatorId = createProgressIndicator('indeterminate', 0, `Exporting all circles of trust...`);
118
115
  try {
@@ -124,12 +121,13 @@ export async function exportCirclesOfTrustToFile(file = null, includeMeta = true
124
121
  const exportData = await exportCirclesOfTrust();
125
122
  saveJsonToFile(exportData, filePath, includeMeta);
126
123
  stopProgressIndicator(indicatorId, `Exported all circles of trust to ${filePath}.`, 'success');
127
- outcome = true;
124
+ return true;
128
125
  } catch (error) {
129
- stopProgressIndicator(indicatorId, `Error exporting circles of trust: ${error.message}`, 'fail');
126
+ stopProgressIndicator(indicatorId, `Error exporting circles of trust`, 'fail');
127
+ printError(error);
130
128
  }
131
129
  debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFile: end`);
132
- return outcome;
130
+ return false;
133
131
  }
134
132
 
135
133
  /**
@@ -154,13 +152,17 @@ export async function exportCirclesOfTrustToFiles(includeMeta = true) {
154
152
  updateProgressIndicator(indicatorId, `Error exporting ${cot.name}.`);
155
153
  }
156
154
  }
155
+ if (errors.length > 0) {
156
+ throw new FrodoError(`Error exporting circles of trust`, errors);
157
+ }
157
158
  stopProgressIndicator(indicatorId, `Export complete.`);
159
+ return true;
158
160
  } catch (error) {
159
- errors.push(error);
160
- stopProgressIndicator(indicatorId, `Error exporting circles of trust to files`);
161
+ stopProgressIndicator(indicatorId, `Error exporting circles of trust`, 'fail');
162
+ printError(error);
161
163
  }
162
164
  debugMessage(`cli.CirclesOfTrustOps.exportCirclesOfTrustToFiles: end`);
163
- return 0 === errors.length;
165
+ return false;
164
166
  }
165
167
 
166
168
  /**
@@ -169,21 +171,19 @@ export async function exportCirclesOfTrustToFiles(includeMeta = true) {
169
171
  * @param {String} file Import file name
170
172
  */
171
173
  export async function importCircleOfTrustFromFile(cotId, file) {
172
- let outcome = false;
173
174
  const filePath = getFilePath(file);
174
175
  const indicatorId = createProgressIndicator('indeterminate', 0, `Importing circle of trust ${cotId} from ${filePath}...`);
175
176
  try {
176
177
  const data = fs.readFileSync(filePath, 'utf8');
177
178
  const fileData = JSON.parse(data);
178
179
  await importCircleOfTrust(cotId, fileData);
179
- outcome = true;
180
- stopProgressIndicator(indicatorId, `Imported circle of trust ${cotId} from ${filePath}.`, 'success');
180
+ stopProgressIndicator(indicatorId, `Imported circle of trust ${cotId}`, 'success');
181
+ return true;
181
182
  } catch (error) {
182
- var _error$response;
183
- stopProgressIndicator(indicatorId, `Error importing circle of trust ${cotId} from ${filePath}.`, 'fail');
184
- printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
183
+ stopProgressIndicator(indicatorId, `Error importing circle of trust ${cotId}`, 'fail');
184
+ printError(error);
185
185
  }
186
- return outcome;
186
+ return false;
187
187
  }
188
188
 
189
189
  /**
@@ -191,21 +191,19 @@ export async function importCircleOfTrustFromFile(cotId, file) {
191
191
  * @param {String} file Import file name
192
192
  */
193
193
  export async function importFirstCircleOfTrustFromFile(file) {
194
- let outcome = false;
195
194
  const filePath = getFilePath(file);
196
195
  const indicatorId = createProgressIndicator('indeterminate', 0, `Importing first circle of trust from ${filePath}...`);
197
196
  try {
198
197
  const data = fs.readFileSync(filePath, 'utf8');
199
198
  const fileData = JSON.parse(data);
200
199
  await importFirstCircleOfTrust(fileData);
201
- outcome = true;
202
- stopProgressIndicator(indicatorId, `Imported first circle of trust from ${filePath}.`, 'success');
200
+ stopProgressIndicator(indicatorId, `Imported first circle of trust`, 'success');
201
+ return true;
203
202
  } catch (error) {
204
- var _error$response2;
205
- stopProgressIndicator(indicatorId, `Error importing first circle of trust from ${filePath}.`, 'fail');
206
- printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
203
+ stopProgressIndicator(indicatorId, `Error importing first circle of trust`, 'fail');
204
+ printError(error);
207
205
  }
208
- return outcome;
206
+ return false;
209
207
  }
210
208
 
211
209
  /**
@@ -213,21 +211,19 @@ export async function importFirstCircleOfTrustFromFile(file) {
213
211
  * @param {String} file Import file name
214
212
  */
215
213
  export async function importCirclesOfTrustFromFile(file) {
216
- let outcome = false;
217
214
  const filePath = getFilePath(file);
218
215
  const indicatorId = createProgressIndicator('indeterminate', 0, `Importing circles of trust from ${filePath}...`);
219
216
  try {
220
217
  const data = fs.readFileSync(filePath, 'utf8');
221
218
  const fileData = JSON.parse(data);
222
219
  await importCirclesOfTrust(fileData);
223
- outcome = true;
224
- stopProgressIndicator(indicatorId, `Imported circles of trust from ${filePath}.`, 'success');
220
+ stopProgressIndicator(indicatorId, `Imported circles of trust`, 'success');
221
+ return true;
225
222
  } catch (error) {
226
- var _error$response3;
227
- stopProgressIndicator(indicatorId, `Error importing circles of trust from ${filePath}.`, 'fail');
228
- printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
223
+ stopProgressIndicator(indicatorId, `Error importing circles of trust`, 'fail');
224
+ printError(error);
229
225
  }
230
- return outcome;
226
+ return false;
231
227
  }
232
228
 
233
229
  /**
@@ -253,16 +249,17 @@ export async function importCirclesOfTrustFromFiles() {
253
249
  } catch (error) {
254
250
  errors.push(error);
255
251
  updateProgressIndicator(indicatorId, `Error importing circles of trust from ${file}`);
256
- printMessage(error, 'error');
252
+ printError(error);
257
253
  }
258
254
  }
259
255
  stopProgressIndicator(indicatorId, `Imported ${total} circles of trust from ${files.length} files.`);
256
+ return true;
260
257
  } catch (error) {
261
258
  errors.push(error);
262
259
  stopProgressIndicator(indicatorId, `Error importing circles of trust from files.`);
263
- printMessage(error, 'error');
260
+ printError(error);
264
261
  }
265
262
  debugMessage(`cli.CirclesOfTrustOps.importCirclesOfTrustFromFiles: end`);
266
- return 0 === errors.length;
263
+ return false;
267
264
  }
268
265
  //# sourceMappingURL=CirclesOfTrustOps.js.map