@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
package/esm/ops/LogOps.js CHANGED
@@ -1,33 +1,41 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
- import { printMessage, verboseMessage } from '../utils/Console';
3
- export async function tailLogs(source, levels, txid, cookie, nf) {
2
+ import { createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner, verboseMessage } from '../utils/Console';
3
+ const {
4
+ getLogApiKeys,
5
+ createLogApiKey,
6
+ fetch,
7
+ tail,
8
+ getDefaultNoiseFilter,
9
+ resolvePayloadLevel,
10
+ deleteLogApiKey: _deleteLogApiKey,
11
+ deleteLogApiKeys: _deleteLogApiKeys
12
+ } = frodo.cloud.log;
13
+ export async function listLogApiKeys(long = false) {
14
+ let outcome = false;
4
15
  try {
5
- const logsObject = await frodo.cloud.log.tail(source, cookie);
6
- let filteredLogs = [];
7
- const noiseFilter = nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;
8
- if (Array.isArray(logsObject.result)) {
9
- filteredLogs = logsObject.result.filter(el => {
10
- var _transactionId;
11
- return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(frodo.cloud.log.resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_transactionId = el.payload.transactionId) === null || _transactionId === void 0 ? void 0 : _transactionId.includes(txid)));
12
- });
16
+ const keys = await getLogApiKeys();
17
+ if (long) {
18
+ const table = createTable(['Key Id', 'Name', 'Created at']);
19
+ for (const key of keys) {
20
+ table.push([key.api_key_id, key.name, key.created_at]);
21
+ }
22
+ printMessage(table.toString(), 'data');
23
+ } else {
24
+ for (const key of keys) {
25
+ printMessage(`${key.api_key_id}`, 'data');
26
+ }
13
27
  }
14
- filteredLogs.forEach(e => {
15
- printMessage(JSON.stringify(e), 'data');
16
- });
17
- setTimeout(() => {
18
- tailLogs(source, levels, txid, logsObject.pagedResultsCookie, nf);
19
- }, 5000);
20
- return null;
21
- } catch (e) {
22
- printMessage(`tail ERROR: tail data error - ${e}`, 'error');
23
- return `tail ERROR: tail data error - ${e}`;
28
+ outcome = true;
29
+ } catch (error) {
30
+ printMessage(`Error listing log API keys: ${error}`, 'error');
24
31
  }
32
+ return outcome;
25
33
  }
26
34
  export async function provisionCreds() {
27
35
  try {
28
36
  let keyName = `frodo-${state.getUsername()}`;
29
37
  try {
30
- const keys = await frodo.cloud.log.getLogApiKeys();
38
+ const keys = await getLogApiKeys();
31
39
  for (const key of keys) {
32
40
  if (key.name === keyName) {
33
41
  // append current timestamp to name if the named key already exists
@@ -35,11 +43,14 @@ export async function provisionCreds() {
35
43
  }
36
44
  }
37
45
  try {
38
- const resp = await frodo.cloud.log.createLogApiKeyAndSecret(keyName);
39
- if (resp.name !== keyName) {
40
- printMessage(`create keys ERROR: could not create log API key ${keyName}`, 'error');
41
- return null;
42
- }
46
+ const resp = await createLogApiKey(keyName);
47
+ // if (resp.name !== keyName) {
48
+ // printMessage(
49
+ // `create keys ERROR: could not create log API key ${keyName} [new key name: ${resp.name}]`,
50
+ // 'error'
51
+ // );
52
+ // return null;
53
+ // }
43
54
  verboseMessage(`Created a new log API key [${keyName}] in ${state.getHost()}`);
44
55
  return resp;
45
56
  } catch (error) {
@@ -54,15 +65,66 @@ export async function provisionCreds() {
54
65
  return null;
55
66
  }
56
67
  }
68
+ export async function deleteLogApiKey(keyId) {
69
+ let outcome = false;
70
+ debugMessage(`cli.LogOps.deleteKey: start`);
71
+ showSpinner(`Deleting ${keyId}...`);
72
+ try {
73
+ await _deleteLogApiKey(keyId);
74
+ succeedSpinner(`Deleted ${keyId}.`);
75
+ outcome = true;
76
+ } catch (error) {
77
+ failSpinner(`Error deleting ${keyId}: ${error.message}`);
78
+ }
79
+ debugMessage(`cli.LogOps.deleteKey: end [${outcome}]`);
80
+ return outcome;
81
+ }
82
+ export async function deleteLogApiKeys() {
83
+ let outcome = false;
84
+ debugMessage(`cli.LogOps.deleteKeys: start`);
85
+ showSpinner(`Deleting all keys...`);
86
+ try {
87
+ const response = await _deleteLogApiKeys();
88
+ succeedSpinner(`Deleted ${response.length} keys.`);
89
+ outcome = true;
90
+ } catch (error) {
91
+ failSpinner(`Error deleting keys: ${error.message}`);
92
+ }
93
+ debugMessage(`cli.LogOps.deleteKeys: end [${outcome}]`);
94
+ return outcome;
95
+ }
96
+ export async function tailLogs(source, levels, txid, cookie, nf) {
97
+ try {
98
+ const logsObject = await tail(source, cookie);
99
+ let filteredLogs = [];
100
+ const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;
101
+ if (Array.isArray(logsObject.result)) {
102
+ filteredLogs = logsObject.result.filter(el => {
103
+ var _transactionId;
104
+ return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_transactionId = el.payload.transactionId) === null || _transactionId === void 0 ? void 0 : _transactionId.includes(txid)));
105
+ });
106
+ }
107
+ filteredLogs.forEach(e => {
108
+ printMessage(JSON.stringify(e), 'data');
109
+ });
110
+ setTimeout(() => {
111
+ tailLogs(source, levels, txid, logsObject.pagedResultsCookie, nf);
112
+ }, 5000);
113
+ return null;
114
+ } catch (e) {
115
+ printMessage(`tail ERROR: tail data error - ${e}`, 'error');
116
+ return `tail ERROR: tail data error - ${e}`;
117
+ }
118
+ }
57
119
  export async function fetchLogs(source, startTs, endTs, levels, txid, ffString, cookie, nf) {
58
120
  try {
59
- const logsObject = await frodo.cloud.log.fetch(source, startTs, endTs, cookie);
121
+ const logsObject = await fetch(source, startTs, endTs, cookie);
60
122
  let filteredLogs = [];
61
- const noiseFilter = nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;
123
+ const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;
62
124
  if (Array.isArray(logsObject.result)) {
63
125
  filteredLogs = logsObject.result.filter(el => {
64
126
  var _transactionId2;
65
- return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(frodo.cloud.log.resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_transactionId2 = el.payload.transactionId) === null || _transactionId2 === void 0 ? void 0 : _transactionId2.includes(txid)));
127
+ return !noiseFilter.includes(el.payload.logger) && !noiseFilter.includes(el.type) && (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) && (typeof txid === 'undefined' || txid === null || ((_transactionId2 = el.payload.transactionId) === null || _transactionId2 === void 0 ? void 0 : _transactionId2.includes(txid)));
66
128
  });
67
129
  }
68
130
  filteredLogs.forEach(e => {
@@ -84,4 +146,4 @@ export async function fetchLogs(source, startTs, endTs, levels, txid, ffString,
84
146
  return `fetch ERROR: fetch data error - ${e}`;
85
147
  }
86
148
  }
87
- //# sourceMappingURL=LogOps.js.map
149
+ //# sourceMappingURL=LogOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogOps.js","names":["frodo","state","printMessage","verboseMessage","tailLogs","source","levels","txid","cookie","nf","logsObject","cloud","log","tail","filteredLogs","noiseFilter","getDefaultNoiseFilter","Array","isArray","result","filter","el","_transactionId","includes","payload","logger","type","resolvePayloadLevel","transactionId","forEach","e","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","getUsername","keys","getLogApiKeys","key","name","Date","toISOString","resp","createLogApiKeyAndSecret","getHost","error","fetchLogs","startTs","endTs","ffString","fetch","_transactionId2"],"sources":["ops/LogOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport type { LogEventPayloadSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { printMessage, verboseMessage } from '../utils/Console';\n\nexport async function tailLogs(\n source: string,\n levels: string[],\n txid: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await frodo.cloud.log.tail(source, cookie);\n let filteredLogs = [];\n const noiseFilter =\n nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(\n (el.payload as LogEventPayloadSkeleton).logger\n ) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' ||\n levels.includes(frodo.cloud.log.resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n (el.payload as LogEventPayloadSkeleton).transactionId?.includes(\n txid\n ))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${state.getUsername()}`;\n try {\n const keys = await frodo.cloud.log.getLogApiKeys();\n for (const key of keys) {\n if (key.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${new Date().toISOString()}`;\n }\n }\n try {\n const resp = await frodo.cloud.log.createLogApiKeyAndSecret(keyName);\n if (resp.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n verboseMessage(\n `Created a new log API key [${keyName}] in ${state.getHost()}`\n );\n return resp;\n } catch (error) {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n }\n } catch (error) {\n printMessage(`get keys ERROR: get keys call returned ${error}`, 'error');\n }\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source: string,\n startTs: string,\n endTs: string,\n levels: string[],\n txid: string,\n ffString: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await frodo.cloud.log.fetch(\n source,\n startTs,\n endTs,\n cookie\n );\n let filteredLogs = [];\n const noiseFilter =\n nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(\n (el.payload as LogEventPayloadSkeleton).logger\n ) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' ||\n levels.includes(frodo.cloud.log.resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n (el.payload as LogEventPayloadSkeleton).transactionId?.includes(\n txid\n ))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"LogOps.js","names":["frodo","state","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","verboseMessage","getLogApiKeys","createLogApiKey","fetch","tail","getDefaultNoiseFilter","resolvePayloadLevel","deleteLogApiKey","_deleteLogApiKey","deleteLogApiKeys","_deleteLogApiKeys","cloud","log","listLogApiKeys","long","outcome","keys","table","key","push","api_key_id","name","created_at","toString","error","provisionCreds","keyName","getUsername","Date","toISOString","resp","getHost","e","keyId","message","response","length","tailLogs","source","levels","txid","cookie","nf","logsObject","filteredLogs","noiseFilter","Array","isArray","result","filter","el","_transactionId","includes","payload","logger","type","transactionId","forEach","JSON","stringify","setTimeout","pagedResultsCookie","fetchLogs","startTs","endTs","ffString","_transactionId2"],"sources":["../../src/ops/LogOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type LogEventPayloadSkeleton } from '@rockcarver/frodo-lib/types/api/cloud/LogApi';\n\nimport {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n verboseMessage,\n} from '../utils/Console';\n\nconst {\n getLogApiKeys,\n createLogApiKey,\n fetch,\n tail,\n getDefaultNoiseFilter,\n resolvePayloadLevel,\n deleteLogApiKey: _deleteLogApiKey,\n deleteLogApiKeys: _deleteLogApiKeys,\n} = frodo.cloud.log;\n\nexport async function listLogApiKeys(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const keys = await getLogApiKeys();\n if (long) {\n const table = createTable(['Key Id', 'Name', 'Created at']);\n for (const key of keys) {\n table.push([key.api_key_id, key.name, key.created_at]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const key of keys) {\n printMessage(`${key.api_key_id}`, 'data');\n }\n }\n outcome = true;\n } catch (error) {\n printMessage(`Error listing log API keys: ${error}`, 'error');\n }\n return outcome;\n}\n\nexport async function provisionCreds() {\n try {\n let keyName = `frodo-${state.getUsername()}`;\n try {\n const keys = await getLogApiKeys();\n for (const key of keys) {\n if (key.name === keyName) {\n // append current timestamp to name if the named key already exists\n keyName = `${keyName}-${new Date().toISOString()}`;\n }\n }\n try {\n const resp = await createLogApiKey(keyName);\n // if (resp.name !== keyName) {\n // printMessage(\n // `create keys ERROR: could not create log API key ${keyName} [new key name: ${resp.name}]`,\n // 'error'\n // );\n // return null;\n // }\n verboseMessage(\n `Created a new log API key [${keyName}] in ${state.getHost()}`\n );\n return resp;\n } catch (error) {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n }\n } catch (error) {\n printMessage(`get keys ERROR: get keys call returned ${error}`, 'error');\n }\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function deleteLogApiKey(keyId) {\n let outcome = false;\n debugMessage(`cli.LogOps.deleteKey: start`);\n showSpinner(`Deleting ${keyId}...`);\n try {\n await _deleteLogApiKey(keyId);\n succeedSpinner(`Deleted ${keyId}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error deleting ${keyId}: ${error.message}`);\n }\n debugMessage(`cli.LogOps.deleteKey: end [${outcome}]`);\n return outcome;\n}\n\nexport async function deleteLogApiKeys() {\n let outcome = false;\n debugMessage(`cli.LogOps.deleteKeys: start`);\n showSpinner(`Deleting all keys...`);\n try {\n const response = await _deleteLogApiKeys();\n succeedSpinner(`Deleted ${response.length} keys.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error deleting keys: ${error.message}`);\n }\n debugMessage(`cli.LogOps.deleteKeys: end [${outcome}]`);\n return outcome;\n}\n\nexport async function tailLogs(\n source: string,\n levels: string[],\n txid: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await tail(source, cookie);\n let filteredLogs = [];\n const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(\n (el.payload as LogEventPayloadSkeleton).logger\n ) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n (el.payload as LogEventPayloadSkeleton).transactionId?.includes(\n txid\n ))\n );\n }\n\n filteredLogs.forEach((e) => {\n printMessage(JSON.stringify(e), 'data');\n });\n\n setTimeout(() => {\n tailLogs(source, levels, txid, logsObject.pagedResultsCookie, nf);\n }, 5000);\n return null;\n } catch (e) {\n printMessage(`tail ERROR: tail data error - ${e}`, 'error');\n return `tail ERROR: tail data error - ${e}`;\n }\n}\n\nexport async function fetchLogs(\n source: string,\n startTs: string,\n endTs: string,\n levels: string[],\n txid: string,\n ffString: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await fetch(source, startTs, endTs, cookie);\n let filteredLogs = [];\n const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;\n if (Array.isArray(logsObject.result)) {\n filteredLogs = logsObject.result.filter(\n (el) =>\n !noiseFilter.includes(\n (el.payload as LogEventPayloadSkeleton).logger\n ) &&\n !noiseFilter.includes(el.type) &&\n (levels[0] === 'ALL' || levels.includes(resolvePayloadLevel(el))) &&\n (typeof txid === 'undefined' ||\n txid === null ||\n (el.payload as LogEventPayloadSkeleton).transactionId?.includes(\n txid\n ))\n );\n }\n\n filteredLogs.forEach((e) => {\n const log = JSON.stringify(e, null, 2);\n if (ffString) {\n if (log.includes(ffString)) {\n printMessage(log, 'data');\n }\n } else {\n printMessage(log, 'data');\n }\n });\n if (logsObject.pagedResultsCookie != null) {\n await fetchLogs(\n source,\n startTs,\n endTs,\n levels,\n txid,\n ffString,\n logsObject.pagedResultsCookie,\n nf\n );\n }\n return null;\n } catch (e) {\n printMessage(`fetch ERROR: fetch data error - ${e}`, 'error');\n return `fetch ERROR: fetch data error - ${e}`;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
+ const {
3
+ getNodeClassification: _getNodeClassification
4
+ } = frodo.authn.node;
2
5
 
3
6
  /**
4
7
  * Get node classification
@@ -6,7 +9,7 @@ import { frodo } from '@rockcarver/frodo-lib';
6
9
  * @returns {stringp[]} Colored string array of classifications
7
10
  */
8
11
  export function getNodeClassification(nodeType) {
9
- return frodo.authn.node.getNodeClassification(nodeType).map(it => {
12
+ return _getNodeClassification(nodeType).map(it => {
10
13
  switch (it) {
11
14
  case 'standard':
12
15
  return it.toString()['brightGreen'];
@@ -26,7 +29,7 @@ export function getNodeClassification(nodeType) {
26
29
  * @returns {stringp[]} Colored string array of classifications
27
30
  */
28
31
  export function getNodeClassificationMd(nodeType) {
29
- return frodo.authn.node.getNodeClassification(nodeType).map(it => {
32
+ return _getNodeClassification(nodeType).map(it => {
30
33
  switch (it) {
31
34
  case 'standard':
32
35
  return `:green_circle: \`${it.toString()}\``;
@@ -83,4 +86,4 @@ export function getTableRowMd(nodeObj, nodeRef) {
83
86
  const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${nodeObj._type._id} | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \`${nodeObj._id}\` |`;
84
87
  return row;
85
88
  }
86
- //# sourceMappingURL=NodeOps.js.map
89
+ //# sourceMappingURL=NodeOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeOps.js","names":["frodo","getNodeClassification","nodeType","authn","node","map","it","toString","getNodeClassificationMd","getOneLineDescription","nodeObj","nodeRef","description","_id","_type","join","displayName","getOneLineDescriptionMd","getTableHeaderMd","markdown","getTableRowMd","row"],"sources":["ops/NodeOps.ts"],"sourcesContent":["import type {\n InnerNodeRefSkeletonInterface,\n NodeRefSkeletonInterface,\n NodeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { frodo } from '@rockcarver/frodo-lib';\n\n/**\n * Get node classification\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassification(nodeType: string): string[] {\n return frodo.authn.node.getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return it.toString()['brightGreen'];\n\n case 'cloud':\n return it.toString()['brightMagenta'];\n\n case 'custom':\n return it.toString()['brightRed'];\n\n case 'premium':\n return it.toString()['brightYellow'];\n }\n });\n}\n\n/**\n * Get node classification in markdown\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassificationMd(nodeType: string): string[] {\n return frodo.authn.node.getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return `:green_circle: \\`${it.toString()}\\``;\n\n case 'cloud':\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case 'custom':\n return `:red_circle: \\`${it.toString()}\\``;\n\n case 'premium':\n return `:yellow_circle: \\`${it.toString()}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the node\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `[${nodeObj._id['brightCyan']}] (${getNodeClassification(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\n return description;\n}\n\n/**\n * Get a one-line description of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description in markdown\n */\nexport function getOneLineDescriptionMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `${nodeObj._id} (${getNodeClassificationMd(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\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 += '| Display Name | Type | Classification | Id |\\n';\n markdown += '| ------------ | ---- | -------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a table-row of the node in markdown\n */\nexport function getTableRowMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${\n nodeObj._type._id\n } | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \\`${\n nodeObj._id\n }\\` |`;\n return row;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"NodeOps.js","names":["frodo","getNodeClassification","_getNodeClassification","authn","node","nodeType","map","it","toString","getNodeClassificationMd","getOneLineDescription","nodeObj","nodeRef","description","_id","_type","join","displayName","getOneLineDescriptionMd","getTableHeaderMd","markdown","getTableRowMd","row"],"sources":["../../src/ops/NodeOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n type InnerNodeRefSkeletonInterface,\n type NodeRefSkeletonInterface,\n type NodeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/NodeApi';\n\nconst { getNodeClassification: _getNodeClassification } = frodo.authn.node;\n\n/**\n * Get node classification\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassification(nodeType: string): string[] {\n return _getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return it.toString()['brightGreen'];\n\n case 'cloud':\n return it.toString()['brightMagenta'];\n\n case 'custom':\n return it.toString()['brightRed'];\n\n case 'premium':\n return it.toString()['brightYellow'];\n }\n });\n}\n\n/**\n * Get node classification in markdown\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassificationMd(nodeType: string): string[] {\n return _getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return `:green_circle: \\`${it.toString()}\\``;\n\n case 'cloud':\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case 'custom':\n return `:red_circle: \\`${it.toString()}\\``;\n\n case 'premium':\n return `:yellow_circle: \\`${it.toString()}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the node\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `[${nodeObj._id['brightCyan']}] (${getNodeClassification(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\n return description;\n}\n\n/**\n * Get a one-line description of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description in markdown\n */\nexport function getOneLineDescriptionMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `${nodeObj._id} (${getNodeClassificationMd(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\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 += '| Display Name | Type | Classification | Id |\\n';\n markdown += '| ------------ | ---- | -------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a table-row of the node in markdown\n */\nexport function getTableRowMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${\n nodeObj._type._id\n } | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \\`${\n nodeObj._id\n }\\` |`;\n return row;\n}\n"],"mappings":"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"}
@@ -2,12 +2,27 @@ import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
3
  import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
4
  import { saveJsonToFile } from '../utils/ExportImportUtils';
5
+ const {
6
+ getTypedFilename,
7
+ titleCase,
8
+ getFilePath,
9
+ getWorkingDirectory
10
+ } = frodo.utils;
11
+ const {
12
+ readOAuth2Clients,
13
+ exportOAuth2Client,
14
+ exportOAuth2Clients,
15
+ importOAuth2Client,
16
+ importFirstOAuth2Client,
17
+ importOAuth2Clients
18
+ } = frodo.oauth2oidc.client;
19
+
5
20
  /**
6
21
  * List OAuth2 clients
7
22
  */
8
23
  export async function listOAuth2Clients(long = false) {
9
24
  try {
10
- const clients = await frodo.oauth2oidc.client.getOAuth2Clients();
25
+ const clients = await readOAuth2Clients();
11
26
  clients.sort((a, b) => a._id.localeCompare(b._id));
12
27
  if (long) {
13
28
  const table = createTable(['Client Id', 'Status', 'Client Type', 'Grant Types', 'Scopes', 'Redirect URIs'
@@ -28,7 +43,7 @@ export async function listOAuth2Clients(long = false) {
28
43
  'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer'
29
44
  };
30
45
  clients.forEach(client => {
31
- table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status.brightRed, client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
46
+ table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status['brightRed'], client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
32
47
  // wordwrap(client.description, 30),
33
48
  ]);
34
49
  });
@@ -40,7 +55,7 @@ export async function listOAuth2Clients(long = false) {
40
55
  });
41
56
  }
42
57
  } catch (error) {
43
- printMessage(`Error listing applications - ${error}`, 'error');
58
+ printMessage(`Error listing oauth2 clients - ${error}`, 'error');
44
59
  }
45
60
  }
46
61
 
@@ -59,13 +74,14 @@ export async function exportOAuth2ClientToFile(clientId, file, options = {
59
74
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);
60
75
  showSpinner(`Exporting ${clientId}...`);
61
76
  try {
62
- let fileName = frodo.utils.impex.getTypedFilename(clientId, 'oauth2.app');
77
+ let fileName = getTypedFilename(clientId, 'oauth2.app');
63
78
  if (file) {
64
79
  fileName = file;
65
80
  }
66
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(clientId, options);
67
- saveJsonToFile(exportData, fileName);
68
- succeedSpinner(`Exported ${clientId} to ${fileName}.`);
81
+ const filePath = getFilePath(fileName, true);
82
+ const exportData = await exportOAuth2Client(clientId, options);
83
+ saveJsonToFile(exportData, filePath);
84
+ succeedSpinner(`Exported ${clientId} to ${filePath}.`);
69
85
  outcome = true;
70
86
  } catch (error) {
71
87
  failSpinner(`Error exporting ${clientId}: ${error.message}`);
@@ -88,13 +104,14 @@ export async function exportOAuth2ClientsToFile(file, options = {
88
104
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
89
105
  showSpinner(`Exporting all clients...`);
90
106
  try {
91
- let fileName = frodo.utils.impex.getTypedFilename(`all${frodo.utils.impex.titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
107
+ let fileName = getTypedFilename(`all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
92
108
  if (file) {
93
109
  fileName = file;
94
110
  }
95
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Clients(options);
96
- saveJsonToFile(exportData, fileName);
97
- succeedSpinner(`Exported all clients to ${fileName}.`);
111
+ const filePath = getFilePath(fileName, true);
112
+ const exportData = await exportOAuth2Clients(options);
113
+ saveJsonToFile(exportData, filePath);
114
+ succeedSpinner(`Exported all clients to ${filePath}.`);
98
115
  outcome = true;
99
116
  } catch (error) {
100
117
  failSpinner(`Error exporting all clients`);
@@ -116,13 +133,13 @@ export async function exportOAuth2ClientsToFiles(options = {
116
133
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);
117
134
  const errors = [];
118
135
  try {
119
- const clients = await frodo.oauth2oidc.client.getOAuth2Clients();
136
+ const clients = await readOAuth2Clients();
120
137
  createProgressBar(clients.length, 'Exporting clients...');
121
138
  for (const client of clients) {
122
- const file = frodo.utils.impex.getTypedFilename(client._id, 'oauth2.app');
139
+ const file = getTypedFilename(client._id, 'oauth2.app');
123
140
  try {
124
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(client._id, options);
125
- saveJsonToFile(exportData, file);
141
+ const exportData = await exportOAuth2Client(client._id, options);
142
+ saveJsonToFile(exportData, getFilePath(file, true));
126
143
  updateProgressBar(`Exported ${client._id}.`);
127
144
  } catch (error) {
128
145
  errors.push(error);
@@ -152,9 +169,9 @@ export async function importOAuth2ClientFromFile(clientId, file, options = {
152
169
  debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);
153
170
  showSpinner(`Importing ${clientId}...`);
154
171
  try {
155
- const data = fs.readFileSync(file, 'utf8');
172
+ const data = fs.readFileSync(getFilePath(file), 'utf8');
156
173
  const fileData = JSON.parse(data);
157
- await frodo.oauth2oidc.client.importOAuth2Client(clientId, fileData, options);
174
+ await importOAuth2Client(clientId, fileData, options);
158
175
  outcome = true;
159
176
  succeedSpinner(`Imported ${clientId}.`);
160
177
  } catch (error) {
@@ -176,15 +193,16 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
176
193
  }) {
177
194
  let outcome = false;
178
195
  debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);
179
- showSpinner(`Importing ${file}...`);
196
+ const filePath = getFilePath(file);
197
+ showSpinner(`Importing ${filePath}...`);
180
198
  try {
181
- const data = fs.readFileSync(file, 'utf8');
199
+ const data = fs.readFileSync(filePath, 'utf8');
182
200
  const fileData = JSON.parse(data);
183
- await frodo.oauth2oidc.client.importFirstOAuth2Client(fileData, options);
201
+ await importFirstOAuth2Client(fileData, options);
184
202
  outcome = true;
185
- succeedSpinner(`Imported ${file}.`);
203
+ succeedSpinner(`Imported ${filePath}.`);
186
204
  } catch (error) {
187
- failSpinner(`Error importing ${file}.`);
205
+ failSpinner(`Error importing ${filePath}.`);
188
206
  printMessage(error, 'error');
189
207
  }
190
208
  debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);
@@ -202,15 +220,16 @@ export async function importOAuth2ClientsFromFile(file, options = {
202
220
  }) {
203
221
  let outcome = false;
204
222
  debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);
205
- showSpinner(`Importing ${file}...`);
223
+ const filePath = getFilePath(file);
224
+ showSpinner(`Importing ${filePath}...`);
206
225
  try {
207
- const data = fs.readFileSync(file, 'utf8');
208
- const applicationData = JSON.parse(data);
209
- await frodo.oauth2oidc.client.importOAuth2Clients(applicationData, options);
226
+ const data = fs.readFileSync(filePath, 'utf8');
227
+ const clientData = JSON.parse(data);
228
+ await importOAuth2Clients(clientData, options);
210
229
  outcome = true;
211
- succeedSpinner(`Imported ${file}.`);
230
+ succeedSpinner(`Imported ${filePath}.`);
212
231
  } catch (error) {
213
- failSpinner(`Error importing ${file}.`);
232
+ failSpinner(`Error importing ${filePath}.`);
214
233
  printMessage(error, 'error');
215
234
  }
216
235
  debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);
@@ -228,8 +247,8 @@ export async function importOAuth2ClientsFromFiles(options = {
228
247
  const errors = [];
229
248
  try {
230
249
  debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);
231
- const names = fs.readdirSync('.');
232
- const files = names.filter(name => name.toLowerCase().endsWith('.oauth2.app.json'));
250
+ const names = fs.readdirSync(getWorkingDirectory());
251
+ const files = names.filter(name => name.toLowerCase().endsWith('.oauth2.app.json')).map(name => getFilePath(name));
233
252
  createProgressBar(files.length, 'Importing clients...');
234
253
  let total = 0;
235
254
  for (const file of files) {
@@ -238,7 +257,7 @@ export async function importOAuth2ClientsFromFiles(options = {
238
257
  const fileData = JSON.parse(data);
239
258
  const count = Object.keys(fileData.application).length;
240
259
  total += count;
241
- await frodo.oauth2oidc.client.importOAuth2Clients(fileData, options);
260
+ await importOAuth2Clients(fileData, options);
242
261
  updateProgressBar(`Imported ${count} client(s) from ${file}`);
243
262
  } catch (error) {
244
263
  errors.push(error);
@@ -255,4 +274,4 @@ export async function importOAuth2ClientsFromFiles(options = {
255
274
  debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);
256
275
  return 0 === errors.length;
257
276
  }
258
- //# sourceMappingURL=OAuth2ClientOps.js.map
277
+ //# sourceMappingURL=OAuth2ClientOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","listOAuth2Clients","long","clients","oauth2oidc","client","getOAuth2Clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","brightRed","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","utils","impex","getTypedFilename","exportData","exportOAuth2Client","message","exportOAuth2ClientsToFile","titleCase","helper","getRealmName","getRealm","exportOAuth2Clients","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importOAuth2Client","importFirstOAuth2ClientFromFile","importFirstOAuth2Client","importOAuth2ClientsFromFile","applicationData","importOAuth2Clients","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : client.coreOAuth2ClientConfig.status.brightRed,\n client.coreOAuth2ClientConfig.clientType,\n client.advancedOAuth2ClientConfig.grantTypes\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n client.coreOAuth2ClientConfig.scopes.join('\\n'),\n client.coreOAuth2ClientConfig.redirectionUris.join('\\n'),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(\n clientId,\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await frodo.oauth2oidc.client.exportOAuth2Clients(\n options\n );\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await frodo.oauth2oidc.client.getOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = frodo.utils.impex.getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await frodo.oauth2oidc.client.exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Client(\n clientId,\n fileData,\n options\n );\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await frodo.oauth2oidc.client.importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await frodo.oauth2oidc.client.importOAuth2Clients(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await frodo.oauth2oidc.client.importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","getTypedFilename","titleCase","getFilePath","getWorkingDirectory","utils","readOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","filePath","exportData","message","exportOAuth2ClientsToFile","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","clientData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Readable } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport fs from 'fs';\n\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\n\nconst { getTypedFilename, titleCase, getFilePath, getWorkingDirectory } =\n frodo.utils;\nconst {\n readOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await readOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as Readable<string[]>)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as Readable<string[]>).join(\n '\\n'\n ),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing oauth2 clients - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported ${clientId} to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(frodo.utils.getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const filePath = getFilePath(fileName, true);\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, filePath);\n succeedSpinner(`Exported all clients to ${filePath}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await readOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, getFilePath(file, true));\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: 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 importFirstOAuth2Client(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.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n const filePath = getFilePath(file);\n showSpinner(`Importing ${filePath}...`);\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const clientData = JSON.parse(data);\n await importOAuth2Clients(clientData, options);\n outcome = true;\n succeedSpinner(`Imported ${filePath}.`);\n } catch (error) {\n failSpinner(`Error importing ${filePath}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.oauth2.app.json'))\n .map((name) => getFilePath(name));\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,28 +1,20 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import { printMessage } from '../utils/Console';
3
+ const {
4
+ queryManagedObjects
5
+ } = frodo.idm.managed;
6
+ const {
7
+ getRealmManagedOrganization
8
+ } = frodo.idm.organization;
3
9
 
4
10
  // unfinished work
5
11
  export async function listOrganizationsTopDown() {
6
- const orgs = [];
7
- let result = {
8
- result: [],
9
- resultCount: 0,
10
- pagedResultsCookie: null,
11
- totalPagedResultsPolicy: 'NONE',
12
- totalPagedResults: -1,
13
- remainingPagedResults: -1
14
- };
15
- do {
16
- try {
17
- // eslint-disable-next-line no-await-in-loop
18
- result = await frodo.idm.config.queryAllManagedObjectsByType(frodo.idm.organization.getRealmManagedOrganization(), ['name', 'parent/*/name', 'children/*/name'], result.pagedResultsCookie);
19
- } catch (queryAllManagedObjectsByTypeError) {
20
- printMessage(queryAllManagedObjectsByTypeError, 'error');
21
- printMessage(`Error querying ${frodo.idm.organization.getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
22
- }
23
- orgs.concat(result.result);
24
- printMessage('.', 'text', false);
25
- } while (result.pagedResultsCookie);
26
- return orgs;
12
+ try {
13
+ const orgs = await queryManagedObjects(getRealmManagedOrganization(), 'true', ['name', 'parent/*/name', 'children/*/name']);
14
+ return orgs;
15
+ } catch (queryAllManagedObjectsByTypeError) {
16
+ printMessage(queryAllManagedObjectsByTypeError, 'error');
17
+ printMessage(`Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
18
+ }
27
19
  }
28
- //# sourceMappingURL=OrganizationOps.js.map
20
+ //# sourceMappingURL=OrganizationOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","listOrganizationsTopDown","orgs","result","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","idm","config","queryAllManagedObjectsByType","organization","getRealmManagedOrganization","queryAllManagedObjectsByTypeError","concat"],"sources":["ops/OrganizationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../utils/Console';\n\n// unfinished work\nexport async function listOrganizationsTopDown() {\n const orgs = [];\n let result = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'NONE',\n totalPagedResults: -1,\n remainingPagedResults: -1,\n };\n do {\n try {\n // eslint-disable-next-line no-await-in-loop\n result = await frodo.idm.config.queryAllManagedObjectsByType(\n frodo.idm.organization.getRealmManagedOrganization(),\n ['name', 'parent/*/name', 'children/*/name'],\n result.pagedResultsCookie\n );\n } catch (queryAllManagedObjectsByTypeError) {\n printMessage(queryAllManagedObjectsByTypeError, 'error');\n printMessage(\n `Error querying ${frodo.idm.organization.getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`,\n 'error'\n );\n }\n orgs.concat(result.result);\n printMessage('.', 'text', false);\n } while (result.pagedResultsCookie);\n return orgs;\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,YAAY,QAAQ,kBAAkB;;AAE/C;AACA,OAAO,eAAeC,wBAAwBA,CAAA,EAAG;EAC/C,MAAMC,IAAI,GAAG,EAAE;EACf,IAAIC,MAAM,GAAG;IACXA,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,kBAAkB,EAAE,IAAI;IACxBC,uBAAuB,EAAE,MAAM;IAC/BC,iBAAiB,EAAE,CAAC,CAAC;IACrBC,qBAAqB,EAAE,CAAC;EAC1B,CAAC;EACD,GAAG;IACD,IAAI;MACF;MACAL,MAAM,GAAG,MAAMJ,KAAK,CAACU,GAAG,CAACC,MAAM,CAACC,4BAA4B,CAC1DZ,KAAK,CAACU,GAAG,CAACG,YAAY,CAACC,2BAA2B,CAAC,CAAC,EACpD,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAC5CV,MAAM,CAACE,kBACT,CAAC;IACH,CAAC,CAAC,OAAOS,iCAAiC,EAAE;MAC1Cd,YAAY,CAACc,iCAAiC,EAAE,OAAO,CAAC;MACxDd,YAAY,CACT,kBAAiBD,KAAK,CAACU,GAAG,CAACG,YAAY,CAACC,2BAA2B,CAAC,CAAE,aAAYC,iCAAkC,EAAC,EACtH,OACF,CAAC;IACH;IACAZ,IAAI,CAACa,MAAM,CAACZ,MAAM,CAACA,MAAM,CAAC;IAC1BH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC;EAClC,CAAC,QAAQG,MAAM,CAACE,kBAAkB;EAClC,OAAOH,IAAI;AACb"}
1
+ {"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","queryManagedObjects","idm","managed","getRealmManagedOrganization","organization","listOrganizationsTopDown","orgs","queryAllManagedObjectsByTypeError"],"sources":["../../src/ops/OrganizationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\n\nimport { printMessage } from '../utils/Console';\n\nconst { queryManagedObjects } = frodo.idm.managed;\nconst { getRealmManagedOrganization } = frodo.idm.organization;\n\n// unfinished work\nexport async function listOrganizationsTopDown() {\n try {\n const orgs = await queryManagedObjects(\n getRealmManagedOrganization(),\n 'true',\n ['name', 'parent/*/name', 'children/*/name']\n );\n return orgs;\n } catch (queryAllManagedObjectsByTypeError) {\n printMessage(queryAllManagedObjectsByTypeError, 'error');\n printMessage(\n `Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`,\n 'error'\n );\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,MAAM;EAAEC;AAAoB,CAAC,GAAGF,KAAK,CAACG,GAAG,CAACC,OAAO;AACjD,MAAM;EAAEC;AAA4B,CAAC,GAAGL,KAAK,CAACG,GAAG,CAACG,YAAY;;AAE9D;AACA,OAAO,eAAeC,wBAAwBA,CAAA,EAAG;EAC/C,IAAI;IACF,MAAMC,IAAI,GAAG,MAAMN,mBAAmB,CACpCG,2BAA2B,CAAC,CAAC,EAC7B,MAAM,EACN,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAC7C,CAAC;IACD,OAAOG,IAAI;EACb,CAAC,CAAC,OAAOC,iCAAiC,EAAE;IAC1CR,YAAY,CAACQ,iCAAiC,EAAE,OAAO,CAAC;IACxDR,YAAY,CACT,kBAAiBI,2BAA2B,CAAC,CAAE,aAAYI,iCAAkC,EAAC,EAC/F,OACF,CAAC;EACH;AACF"}